diff --git a/client/package-lock.json b/client/package-lock.json
index 37ae71c6..0fc7b466 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -10746,6 +10746,14 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
},
+ "react-flip-toolkit": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/react-flip-toolkit/-/react-flip-toolkit-7.0.6.tgz",
+ "integrity": "sha512-zZpwNfAGS8/WRrHKOA224NP2aVG4ryVx9vkTkxFsU7tkGUpM5AvjsICYmOVDJhEl5wmR36SjMSmWFicloJVibA==",
+ "requires": {
+ "rematrix": "0.2.2"
+ }
+ },
"react-helmet": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.1.tgz",
@@ -11059,6 +11067,11 @@
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true
},
+ "rematrix": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/rematrix/-/rematrix-0.2.2.tgz",
+ "integrity": "sha512-agFFS3RzrLXJl5LY5xg/xYyXvUuVAnkhgKO7RaO9J1Ssth6yvbO+PIiV67V59MB5NCdAK2flvGvNT4mdKVniFA=="
+ },
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
diff --git a/client/package.json b/client/package.json
index aec7d6a5..94213959 100644
--- a/client/package.json
+++ b/client/package.json
@@ -48,6 +48,7 @@
"react": "^16.9.0",
"react-autocomplete": "^1.7.2",
"react-dom": "^16.9.0",
+ "react-flip-toolkit": "7.0.6",
"react-helmet": "^5.2.1",
"react-icons": "^3.7.0",
"react-redux": "^7.1.1",
diff --git a/client/src/components/categorical/category.js b/client/src/components/categorical/category.js
index 2232b4e7..2e103b43 100644
--- a/client/src/components/categorical/category.js
+++ b/client/src/components/categorical/category.js
@@ -2,6 +2,7 @@ import React from "react";
import _ from "lodash";
import { connect } from "react-redux";
import { FaChevronRight, FaChevronDown } from "react-icons/fa";
+import { Flipper, Flipped, Spring } from "react-flip-toolkit";
import {
Button,
Tooltip,
@@ -172,21 +173,26 @@ class Category extends React.Component {
}
}
- renderCategoryItems() {
- const { categoricalSelection, metadataField, isUserAnno } = this.props;
+ renderCategoryItems(optTuples) {
+ const { metadataField, isUserAnno } = this.props;
- const cat = categoricalSelection[metadataField];
- const optTuples = sortedCategoryValues([...cat.categoryValueIndices]);
- return _.map(optTuples, (tuple, i) => (
-