@bento-core/facet-filter 1.0.1-ccdihub.25 → 1.0.1-ccdihub.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/FacetFilterView.js +21 -9
  2. package/dist/components/facet/FacetModal.js +101 -0
  3. package/dist/components/facet/FacetStyle.js +31 -2
  4. package/dist/components/facet/FacetView.js +16 -2
  5. package/dist/components/facet/ModalStyle.js +121 -0
  6. package/dist/components/facet/ReduxFacetModal.js +31 -0
  7. package/dist/components/facet/ReduxSearchFacetView.js +37 -0
  8. package/dist/components/facet/SearchFacetView.js +139 -0
  9. package/dist/components/facet/assets/Search_Icon.svg +3 -0
  10. package/dist/components/inputs/FilterItemStyle.js +42 -0
  11. package/dist/components/inputs/FilterItems.js +5 -2
  12. package/dist/components/inputs/ModalFilterItems.js +156 -0
  13. package/dist/components/inputs/ModalFilterStyle.js +117 -0
  14. package/dist/components/inputs/SearchFilterItems.js +96 -0
  15. package/dist/components/inputs/checkbox/CheckboxView.js +28 -1
  16. package/dist/components/inputs/checkbox/ModalCheckboxStyle.js +43 -0
  17. package/dist/components/inputs/checkbox/ModalCheckboxView.js +141 -0
  18. package/dist/components/inputs/checkbox/ReduxModalCheckbox.js +17 -0
  19. package/dist/components/inputs/checkbox/ReduxSearchCheckbox.js +17 -0
  20. package/dist/components/inputs/checkbox/SearchCheckboxView.js +147 -0
  21. package/dist/components/inputs/slider/SliderView.js +10 -1
  22. package/dist/index.js +6 -0
  23. package/dist/store/actions/ActionTypes.js +4 -1
  24. package/dist/store/actions/Actions.js +23 -2
  25. package/dist/store/reducers/SideBarReducer.js +41 -2
  26. package/package.json +4 -2
  27. package/src/FacetFilterView.js +24 -10
  28. package/src/components/facet/FacetModal.js +106 -0
  29. package/src/components/facet/FacetStyle.js +30 -1
  30. package/src/components/facet/FacetView.js +15 -0
  31. package/src/components/facet/ModalStyle.js +115 -0
  32. package/src/components/facet/ReduxFacetModal.js +28 -0
  33. package/src/components/facet/ReduxSearchFacetView.js +30 -0
  34. package/src/components/facet/SearchFacetView.js +185 -0
  35. package/src/components/facet/assets/Search_Icon.svg +3 -0
  36. package/src/components/inputs/FilterItemStyle.js +42 -0
  37. package/src/components/inputs/FilterItems.js +6 -3
  38. package/src/components/inputs/ModalFilterItems.js +150 -0
  39. package/src/components/inputs/ModalFilterStyle.js +110 -0
  40. package/src/components/inputs/SearchFilterItems.js +90 -0
  41. package/src/components/inputs/checkbox/CheckboxView.js +30 -0
  42. package/src/components/inputs/checkbox/ModalCheckboxStyle.js +36 -0
  43. package/src/components/inputs/checkbox/ModalCheckboxView.js +172 -0
  44. package/src/components/inputs/checkbox/ReduxModalCheckbox.js +12 -0
  45. package/src/components/inputs/checkbox/ReduxSearchCheckbox.js +12 -0
  46. package/src/components/inputs/checkbox/SearchCheckboxView.js +179 -0
  47. package/src/components/inputs/slider/SliderView.js +12 -0
  48. package/src/index.js +1 -0
  49. package/src/store/actions/ActionTypes.js +3 -0
  50. package/src/store/actions/Actions.js +21 -0
  51. package/src/store/reducers/SideBarReducer.js +41 -1
@@ -10,6 +10,7 @@ var _FacetFilterStyle = _interopRequireDefault(require("./FacetFilterStyle"));
10
10
  var _FacetSectionView = _interopRequireDefault(require("./components/section/FacetSectionView"));
11
11
  var _ReduxFacetView = _interopRequireDefault(require("./components/facet/ReduxFacetView"));
12
12
  var _FilterItems = _interopRequireDefault(require("./components/inputs/FilterItems"));
13
+ var _ReduxSearchFacetView = _interopRequireDefault(require("./components/facet/ReduxSearchFacetView"));
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15
  /* eslint-disable arrow-body-style */
15
16
  /* eslint-disable padded-blocks */
@@ -18,7 +19,8 @@ const BentoFacetFilter = _ref => {
18
19
  let {
19
20
  sideBarSections,
20
21
  CustomFacetSection,
21
- CustomFacetView
22
+ CustomFacetView,
23
+ queryParams
22
24
  } = _ref;
23
25
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, sideBarSections.map((section, index) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Divider, {
24
26
  variant: "middle",
@@ -26,14 +28,24 @@ const BentoFacetFilter = _ref => {
26
28
  }), /*#__PURE__*/_react.default.createElement(_FacetSectionView.default, {
27
29
  section: section,
28
30
  CustomSection: CustomFacetSection
29
- }, section.items.map(facet => /*#__PURE__*/_react.default.createElement(_ReduxFacetView.default, {
30
- facet: facet,
31
- CustomView: CustomFacetView
32
- }, /*#__PURE__*/_react.default.createElement(_core.List, {
33
- className: "List_".concat(facet.label)
34
- }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
35
- facet: facet
36
- }))))))));
31
+ }, section.items.map(facet => {
32
+ if (facet.search) {
33
+ return /*#__PURE__*/_react.default.createElement(_ReduxSearchFacetView.default, {
34
+ facet: facet,
35
+ queryParams: queryParams,
36
+ CustomView: CustomFacetView
37
+ });
38
+ }
39
+ return /*#__PURE__*/_react.default.createElement(_ReduxFacetView.default, {
40
+ facet: facet,
41
+ queryParams: queryParams,
42
+ CustomView: CustomFacetView
43
+ }, /*#__PURE__*/_react.default.createElement(_core.List, {
44
+ className: "List_".concat(facet.label)
45
+ }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
46
+ facet: facet
47
+ })));
48
+ })))));
37
49
  };
38
50
  var _default = (0, _core.withStyles)(_FacetFilterStyle.default)(BentoFacetFilter);
39
51
  exports.default = _default;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _util = require("@bento-core/util");
10
+ var _core = require("@material-ui/core");
11
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
12
+ var _styles = require("@material-ui/core/styles");
13
+ var _ModalStyle = _interopRequireDefault(require("./ModalStyle"));
14
+ var _ModalFilterItems = _interopRequireDefault(require("../inputs/ModalFilterItems"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ const resetIcon = {
17
+ src: 'https://raw.githubusercontent.com/CBIIT/datacommons-assets/main/bento/images/icons/svgs/Clear-icon.svg',
18
+ alt: 'Reset icon',
19
+ size: '12 px'
20
+ };
21
+ const ModalView = _ref => {
22
+ let {
23
+ classes,
24
+ facet,
25
+ sortBy,
26
+ searchText,
27
+ open,
28
+ onClose,
29
+ onClearFacetSection,
30
+ onSearchTextChange,
31
+ onSortChange,
32
+ queryParams
33
+ } = _ref;
34
+ const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
35
+ const navigate = (0, _reactRouterDom.useNavigate)();
36
+ const onClearSection = () => {
37
+ const field = facet.datafield;
38
+ const paramValue = {};
39
+ paramValue[field] = '';
40
+ const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
41
+ navigate("/explore".concat(queryStr), {
42
+ replace: true
43
+ });
44
+ onSortChange(null);
45
+ onClearFacetSection(facet);
46
+ };
47
+ return /*#__PURE__*/_react.default.createElement(_core.Modal, {
48
+ open: open,
49
+ onClose: onClose,
50
+ "aria-labelledby": "".concat(facet.datafield, "-search-modal")
51
+ }, /*#__PURE__*/_react.default.createElement(_core.Box, {
52
+ className: classes.modalBody
53
+ }, /*#__PURE__*/_react.default.createElement("div", {
54
+ className: classes.header
55
+ }, /*#__PURE__*/_react.default.createElement(_core.Typography, {
56
+ id: "modal-modal-title",
57
+ className: classes.modalTitle
58
+ }, "".concat(facet.label, " Facet Search")), /*#__PURE__*/_react.default.createElement(_core.IconButton, {
59
+ "aria-label": "close",
60
+ onClick: onClose,
61
+ className: classes.closeButton,
62
+ sx: theme => ({
63
+ position: 'absolute',
64
+ right: 8,
65
+ top: 8,
66
+ color: theme.palette.grey[500]
67
+ })
68
+ }, /*#__PURE__*/_react.default.createElement(_Close.default, {
69
+ fontSize: "small"
70
+ }))), /*#__PURE__*/_react.default.createElement("div", {
71
+ className: classes.searchContainer
72
+ }, /*#__PURE__*/_react.default.createElement("div", {
73
+ className: classes.searchInputbox
74
+ }, "Search ".concat(facet.label)), /*#__PURE__*/_react.default.createElement("input", {
75
+ className: classes.searchBox,
76
+ value: searchText,
77
+ type: "text",
78
+ placeholder: "e.g. A1CF, CREB3L1, PIK3CA",
79
+ onChange: e => onSearchTextChange(facet.datafield, e.target.value)
80
+ }), /*#__PURE__*/_react.default.createElement(_core.Button, {
81
+ variant: "outlined",
82
+ onClick: () => onSearchTextChange(facet.datafield, ''),
83
+ className: classes.resetIcon
84
+ }, /*#__PURE__*/_react.default.createElement("img", {
85
+ src: resetIcon.src,
86
+ height: resetIcon.size,
87
+ width: resetIcon.size,
88
+ alt: resetIcon.alt
89
+ }))), /*#__PURE__*/_react.default.createElement("div", {
90
+ className: classes.itemContainer
91
+ }, /*#__PURE__*/_react.default.createElement(_ModalFilterItems.default, {
92
+ searchText: searchText,
93
+ facet: facet,
94
+ sortBy: sortBy,
95
+ onClearSection: onClearSection,
96
+ onSortChange: onSortChange,
97
+ queryParams: queryParams
98
+ }))));
99
+ };
100
+ var _default = (0, _styles.withStyles)(_ModalStyle.default)(ModalView);
101
+ exports.default = _default;
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _Search_Icon = _interopRequireDefault(require("./assets/Search_Icon.svg"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
9
  var _default = () => ({
8
10
  expansionPanelDetailsRoot: {
9
11
  display: 'block'
@@ -32,9 +34,9 @@ var _default = () => ({
32
34
  sortGroup: {
33
35
  paddingTop: '10px',
34
36
  marginBottom: '5px',
35
- borderTop: '1px solid #B1B1B1',
36
37
  textAlign: 'left',
37
- marginLeft: '-5px'
38
+ marginLeft: '-5px',
39
+ borderTop: 'none'
38
40
  },
39
41
  sortGroupIcon: {
40
42
  cursor: 'pointer',
@@ -77,6 +79,33 @@ var _default = () => ({
77
79
  cursor: 'pointer',
78
80
  fontSize: '10px',
79
81
  width: '100%'
82
+ },
83
+ searchContainer: {
84
+ display: 'flex',
85
+ justifyContent: 'center'
86
+ },
87
+ searchBox: {
88
+ fontSize: '11px',
89
+ fontFamily: 'Nunito',
90
+ width: '245px',
91
+ height: '24px',
92
+ marginTop: '12px',
93
+ marginBottom: '5px',
94
+ borderRadius: '8px',
95
+ background: "url(".concat(_Search_Icon.default, ") right 5px center no-repeat"),
96
+ marginLeft: '6px',
97
+ border: '1px solid',
98
+ padding: '5px'
99
+ },
100
+ expandedDisplayButton: {
101
+ background: '#4D889E',
102
+ color: 'white',
103
+ width: '222px',
104
+ height: '30px',
105
+ marginTop: '5px',
106
+ marginBottom: '5px',
107
+ borderRadius: '8px',
108
+ fontSize: '11px'
80
109
  }
81
110
  });
82
111
  exports.default = _default;
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _util = require("@bento-core/util");
8
10
  var _core = require("@material-ui/core");
9
11
  var _clsx = _interopRequireDefault(require("clsx"));
10
12
  var _AccordionSummaryView = _interopRequireDefault(require("../summary/AccordionSummaryView"));
@@ -27,10 +29,13 @@ const FacetView = _ref => {
27
29
  facet,
28
30
  onClearFacetSection,
29
31
  onClearSliderSection,
30
- CustomView
32
+ CustomView,
33
+ queryParams
31
34
  } = _ref;
32
35
  const [expand, setExpand] = (0, _react.useState)(false);
33
36
  const onExpandFacet = () => setExpand(!expand);
37
+ const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
38
+ const navigate = (0, _reactRouterDom.useNavigate)();
34
39
 
35
40
  /**
36
41
  * expand section incase of active local search
@@ -47,6 +52,13 @@ const FacetView = _ref => {
47
52
  setSortBy(type);
48
53
  };
49
54
  const onClearSection = () => {
55
+ const field = facet.datafield;
56
+ const paramValue = {};
57
+ paramValue[field] = '';
58
+ const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
59
+ navigate("/explore".concat(queryStr), {
60
+ replace: true
61
+ });
50
62
  setSortBy(null);
51
63
  if (facet.type === _Types.InputTypes.SLIDER) {
52
64
  onClearSliderSection(facet);
@@ -116,11 +128,13 @@ const FacetView = _ref => {
116
128
  }
117
129
  }, "Sort by count"))), /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
118
130
  facet: facet,
131
+ queryParams: queryParams,
119
132
  sortBy: sortBy
120
133
  })), !expand && type === _Types.InputTypes.CHECKBOX && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
121
134
  id: "filter_Items"
122
135
  }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
123
- facet: displayFacet
136
+ facet: displayFacet,
137
+ queryParams: queryParams
124
138
  }))), !expand && selectedItems.length > limitCheckBoxCount && /*#__PURE__*/_react.default.createElement("div", {
125
139
  className: classes.showMore,
126
140
  onClick: onExpandFacet
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _Search_Icon = _interopRequireDefault(require("./assets/Search_Icon.svg"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var _default = () => ({
10
+ header: {
11
+ display: 'flex',
12
+ justifyContent: 'center',
13
+ alignItems: 'center',
14
+ height: '55px'
15
+ },
16
+ closeButton: {
17
+ marginLeft: '769px',
18
+ position: 'absolute'
19
+ },
20
+ resetIcon: {
21
+ marginLeft: '10px',
22
+ minWidth: '5px',
23
+ width: '5px',
24
+ borderRadius: '9px',
25
+ height: '30px'
26
+ },
27
+ modalTitle: {
28
+ fontFamily: 'Poppins',
29
+ fontSize: '19px',
30
+ fontWeight: '400',
31
+ lineHeight: '21px',
32
+ letterSpacing: '0.02em',
33
+ textAlign: 'center',
34
+ color: '#000000'
35
+ },
36
+ modalBody: {
37
+ position: 'absolute',
38
+ top: '5%',
39
+ left: '25%',
40
+ width: '836px',
41
+ height: '671px',
42
+ background: '#FFFFFF',
43
+ border: '1px solid #505050',
44
+ borderRadius: '40px',
45
+ overflow: 'hidden'
46
+ },
47
+ searchContainer: {
48
+ display: 'flex',
49
+ justifyContent: 'center',
50
+ alignItems: 'center',
51
+ borderTop: '3px solid #939393',
52
+ borderBottom: '3px solid #939393',
53
+ height: '51px'
54
+ },
55
+ searchInputbox: {
56
+ marginRight: '10px',
57
+ fontFamily: 'Poppins',
58
+ fontSize: '18px',
59
+ fontWeight: '600',
60
+ lineHeight: '27px',
61
+ letterSpacing: '-0.02em',
62
+ textAlign: 'left',
63
+ color: '#7A437A'
64
+ },
65
+ searchBox: {
66
+ fontSize: '12px',
67
+ fontWeight: '400',
68
+ fontFamily: 'Nunito',
69
+ width: '437px',
70
+ height: '28px',
71
+ marginTop: '5px',
72
+ marginBottom: '5px',
73
+ borderRadius: '8px',
74
+ background: "url(".concat(_Search_Icon.default, ") right 5px center no-repeat"),
75
+ border: '1.5px solid #646464'
76
+ },
77
+ highlight: {
78
+ color: '#b2c6d6'
79
+ },
80
+ sortGroup: {
81
+ paddingTop: '10px',
82
+ marginBottom: '5px',
83
+ borderTop: '1px solid #B1B1B1',
84
+ textAlign: 'left',
85
+ marginLeft: '-5px'
86
+ },
87
+ sortGroupIcon: {
88
+ cursor: 'pointer',
89
+ fontFamily: 'Nunito',
90
+ fontSize: '10px',
91
+ marginRight: '12px',
92
+ marginLeft: '24px'
93
+ },
94
+ sortGroupItem: {
95
+ cursor: 'pointer',
96
+ fontFamily: 'Nunito',
97
+ fontSize: '10px',
98
+ marginRight: '32px'
99
+ },
100
+ NonSortGroup: {
101
+ marginBottom: '5px',
102
+ borderTop: '1px solid #B1B1B1',
103
+ textAlign: 'left',
104
+ paddingLeft: '10px'
105
+ },
106
+ NonSortGroupItem: {
107
+ fontFamily: 'Nunito',
108
+ fontSize: '10px',
109
+ marginRight: '32px'
110
+ },
111
+ sortGroupItemCounts: {
112
+ cursor: 'pointer',
113
+ fontFamily: 'Nunito',
114
+ fontSize: '10px',
115
+ float: 'right',
116
+ marginRight: '10px',
117
+ marginTop: '5px'
118
+ },
119
+ itemContainer: {}
120
+ });
121
+ exports.default = _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactRedux = require("react-redux");
9
+ var _Actions = require("../../store/actions/Actions");
10
+ var _FacetModal = _interopRequireDefault(require("./FacetModal"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ // import FacetView from './FacetView';
13
+
14
+ const ReduxFacetModal = props => /*#__PURE__*/_react.default.createElement(_FacetModal.default, props);
15
+ const mapStateToProps = (state, ownProps) => ({
16
+ searchText: state.statusReducer.searchState[ownProps.facet.datafield] || '',
17
+ sortBy: state.statusReducer.sortState[ownProps.facet.datafield] || null
18
+ });
19
+ const mapDispatchToProps = dispatch => ({
20
+ onClearFacetSection: facet => {
21
+ dispatch((0, _Actions.clearFacetSection)(facet));
22
+ },
23
+ onSearchTextChange: (datafield, searchText) => {
24
+ dispatch((0, _Actions.searchTextChange)(datafield, searchText));
25
+ },
26
+ onSortChange: (datafield, sortBy) => {
27
+ dispatch((0, _Actions.sortChange)(datafield, sortBy));
28
+ }
29
+ });
30
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ReduxFacetModal);
31
+ exports.default = _default;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactRedux = require("react-redux");
9
+ var _Actions = require("../../store/actions/Actions");
10
+ var _SearchFacetView = _interopRequireDefault(require("./SearchFacetView"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ // import FacetView from './FacetView';
13
+
14
+ const ReduxSearchFacetView = props => /*#__PURE__*/_react.default.createElement(_SearchFacetView.default, props);
15
+ const mapStateToProps = (state, ownProps) => {
16
+ var _state$statusReducer;
17
+ return {
18
+ searchText: ((_state$statusReducer = state.statusReducer) === null || _state$statusReducer === void 0 ? void 0 : _state$statusReducer.searchState[ownProps.facet.datafield]) || '',
19
+ sortBy: state.statusReducer.sortState[ownProps.facet.datafield] || null
20
+ };
21
+ };
22
+ const mapDispatchToProps = dispatch => ({
23
+ onClearFacetSection: facet => {
24
+ dispatch((0, _Actions.clearFacetSection)(facet));
25
+ },
26
+ onClearSliderSection: facet => {
27
+ dispatch((0, _Actions.clearSliderSection)(facet));
28
+ },
29
+ onSearchTextChange: (datafield, searchText) => {
30
+ dispatch((0, _Actions.searchTextChange)(datafield, searchText));
31
+ },
32
+ onSortChange: (datafield, sortBy) => {
33
+ dispatch((0, _Actions.sortChange)(datafield, sortBy));
34
+ }
35
+ });
36
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ReduxSearchFacetView);
37
+ exports.default = _default;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _util = require("@bento-core/util");
10
+ var _core = require("@material-ui/core");
11
+ var _clsx = _interopRequireDefault(require("clsx"));
12
+ var _AccordionSummaryView = _interopRequireDefault(require("../summary/AccordionSummaryView"));
13
+ var _Types = require("../inputs/Types");
14
+ var _FacetStyle = _interopRequireDefault(require("./FacetStyle"));
15
+ var _FilterItems = _interopRequireDefault(require("../inputs/FilterItems"));
16
+ var _SearchFilterItems = _interopRequireDefault(require("../inputs/SearchFilterItems"));
17
+ var _Sort = require("../../utils/Sort");
18
+ var _clearIcon = _interopRequireDefault(require("./assets/clearIcon.svg"));
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
26
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
27
+ const SearchFacetView = _ref => {
28
+ let {
29
+ classes,
30
+ facet,
31
+ searchText,
32
+ sortBy,
33
+ onClearFacetSection,
34
+ onSearchTextChange,
35
+ onSortChange,
36
+ CustomView,
37
+ queryParams
38
+ } = _ref;
39
+ const [expand, setExpand] = (0, _react.useState)(false);
40
+ const onExpandFacet = () => setExpand(!expand);
41
+ const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
42
+ const navigate = (0, _reactRouterDom.useNavigate)();
43
+ const onClearSection = () => {
44
+ const field = facet.datafield;
45
+ const paramValue = {};
46
+ paramValue[field] = '';
47
+ const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
48
+ navigate("/explore".concat(queryStr), {
49
+ replace: true
50
+ });
51
+ onSortChange(facet.datafield, null);
52
+ onClearFacetSection(facet);
53
+ };
54
+
55
+ /**
56
+ * display checked items on facet collapse
57
+ */
58
+ const {
59
+ type,
60
+ facetValues
61
+ } = facet;
62
+ const selectedItems = facetValues && facetValues.filter(item => item.isChecked);
63
+ const displayFacet = _objectSpread({}, facet);
64
+ displayFacet.facetValues = selectedItems;
65
+ const isActiveFacet = [...selectedItems].length > 0;
66
+ const limitCheckBoxCount = (facet === null || facet === void 0 ? void 0 : facet.showCheckboxCount) || 5;
67
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Accordion, {
68
+ square: true,
69
+ expanded: expand,
70
+ onChange: onExpandFacet,
71
+ classes: {
72
+ root: classes.expansionPanelsideBarItem
73
+ },
74
+ id: facet.section
75
+ }, CustomView ? /*#__PURE__*/_react.default.createElement(CustomView, {
76
+ facet: facet,
77
+ facetClasses: isActiveFacet ? "activeFacet".concat(facet.section) : "inactiveFacet".concat(facet.section)
78
+ }) : /*#__PURE__*/_react.default.createElement(_AccordionSummaryView.default, null, /*#__PURE__*/_react.default.createElement("div", {
79
+ id: "filterGroup_ ".concat(facet.datafield, "\n ").concat(facet.label),
80
+ className: (0, _clsx.default)(classes.subSectionSummaryText, {
81
+ ["activeFacet".concat(facet.section)]: isActiveFacet
82
+ })
83
+ }, facet.label)), facetValues.length === 0 && /*#__PURE__*/_react.default.createElement("div", {
84
+ className: classes.NonSortGroup
85
+ }, /*#__PURE__*/_react.default.createElement("span", {
86
+ className: classes.NonSortGroupItem
87
+ }, "No data for this field")), /*#__PURE__*/_react.default.createElement("div", {
88
+ className: classes.searchContainer
89
+ }, /*#__PURE__*/_react.default.createElement("input", {
90
+ className: classes.searchBox,
91
+ value: searchText,
92
+ type: "text",
93
+ placeholder: "e.g. Sarcoma, Neoplasm",
94
+ onChange: e => onSearchTextChange(facet.datafield, e.target.value)
95
+ })), /*#__PURE__*/_react.default.createElement("div", {
96
+ className: classes.sortGroup
97
+ }, /*#__PURE__*/_react.default.createElement("span", {
98
+ className: classes.sortGroupIcon
99
+ }, /*#__PURE__*/_react.default.createElement(_core.Icon, {
100
+ style: {
101
+ fontSize: 10
102
+ },
103
+ onClick: onClearSection
104
+ }, /*#__PURE__*/_react.default.createElement("img", {
105
+ src: _clearIcon.default,
106
+ height: 12,
107
+ width: 12,
108
+ alt: "clear-icon"
109
+ }))), facet.type === _Types.InputTypes.CHECKBOX && facetValues.length > 0 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
110
+ className: (0, _clsx.default)(classes.sortGroupItem, {
111
+ [classes.highlight]: sortBy === _Sort.sortType.ALPHABET
112
+ }),
113
+ onClick: () => {
114
+ onSortChange(_Sort.sortType.ALPHABET);
115
+ }
116
+ }, "Sort alphabetically"), /*#__PURE__*/_react.default.createElement("span", {
117
+ className: (0, _clsx.default)(classes.sortGroupItemCounts, {
118
+ [classes.highlight]: sortBy === _Sort.sortType.NUMERIC
119
+ }),
120
+ onClick: () => {
121
+ onSortChange(_Sort.sortType.NUMERIC);
122
+ }
123
+ }, "Sort by count"))), /*#__PURE__*/_react.default.createElement(_SearchFilterItems.default, {
124
+ searchText: searchText,
125
+ facet: facet,
126
+ queryParams: queryParams,
127
+ sortBy: sortBy
128
+ })), !expand && type === _Types.InputTypes.CHECKBOX && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
129
+ id: "filter_Items"
130
+ }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
131
+ facet: displayFacet,
132
+ queryParams: queryParams
133
+ }))), !expand && selectedItems.length > limitCheckBoxCount && /*#__PURE__*/_react.default.createElement("div", {
134
+ className: classes.showMore,
135
+ onClick: onExpandFacet
136
+ }, "...expand to see all selections"));
137
+ };
138
+ var _default = (0, _core.withStyles)(_FacetStyle.default)(SearchFacetView);
139
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6.4134 1C3.43007 1 1 3.43007 1 6.4134C1 9.39672 3.43007 11.8268 6.4134 11.8268C7.71072 11.8268 8.90214 11.3661 9.83589 10.6014L13.0681 13.8336C13.118 13.8855 13.1777 13.927 13.2438 13.9556C13.3099 13.9841 13.3811 13.9992 13.4531 14C13.5251 14.0007 13.5966 13.9871 13.6632 13.9598C13.7299 13.9326 13.7905 13.8924 13.8414 13.8414C13.8924 13.7905 13.9326 13.7299 13.9598 13.6632C13.9871 13.5966 14.0007 13.5251 14 13.4531C13.9992 13.3811 13.9841 13.3099 13.9556 13.2438C13.927 13.1777 13.8855 13.118 13.8336 13.0681L10.6014 9.83589C11.3661 8.90214 11.8268 7.71072 11.8268 6.4134C11.8268 3.43007 9.39672 1 6.4134 1ZM6.4134 2.08268C8.8116 2.08268 10.7441 4.0152 10.7441 6.4134C10.7441 8.8116 8.8116 10.7441 6.4134 10.7441C4.0152 10.7441 2.08268 8.8116 2.08268 6.4134C2.08268 4.0152 4.0152 2.08268 6.4134 2.08268Z" fill="#4D889E" stroke="#4D889E"/>
3
+ </svg>
@@ -32,6 +32,48 @@ var _default = () => ({
32
32
  float: 'right',
33
33
  marginRight: '10px',
34
34
  marginTop: '5px'
35
+ },
36
+ itemsContainer: {
37
+ maxHeight: '400px',
38
+ overflowY: 'auto',
39
+ overflowX: 'hidden',
40
+ borderTop: '2px solid #AEAEAE',
41
+ borderBottom: '2px solid #AEAEAE',
42
+ marginRight: '-1px',
43
+ '&::-webkit-scrollbar': {
44
+ width: '12px',
45
+ backgroundColor: '#E9F0F4',
46
+ borderLeft: '0.5px solid #B1B1B1',
47
+ borderRight: '0.5px solid #B1B1B1'
48
+ },
49
+ '&::-webkit-scrollbar-track': {
50
+ backgroundColor: '#CECECE',
51
+ border: '3px solid transparent',
52
+ borderRadius: '20px',
53
+ backgroundClip: 'content-box'
54
+ },
55
+ '&::-webkit-scrollbar-thumb': {
56
+ backgroundColor: '#477C90',
57
+ border: '3px solid transparent',
58
+ borderRadius: '20px',
59
+ backgroundClip: 'content-box'
60
+ }
61
+ },
62
+ searchContainer: {
63
+ display: 'flex',
64
+ justifyContent: 'center',
65
+ height: '54px'
66
+ },
67
+ expandedDisplayButton: {
68
+ backgroundColor: '#4D889E !important',
69
+ color: 'white',
70
+ width: '222px',
71
+ height: '24px',
72
+ marginTop: '5px',
73
+ marginBottom: '5px',
74
+ borderRadius: '8px',
75
+ fontSize: '11px',
76
+ top: '10px'
35
77
  }
36
78
  });
37
79
  exports.default = _default;
@@ -18,6 +18,7 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
18
18
  const FilterItems = _ref => {
19
19
  let {
20
20
  facet,
21
+ queryParams,
21
22
  sortBy
22
23
  } = _ref;
23
24
  const {
@@ -37,11 +38,13 @@ const FilterItems = _ref => {
37
38
  section
38
39
  }),
39
40
  datafield: datafield,
40
- facet: facet
41
+ facet: facet,
42
+ queryParams: queryParams
41
43
  }));
42
44
  case _Types.InputTypes.SLIDER:
43
45
  return /*#__PURE__*/_react.default.createElement(_ReduxSlider.default, {
44
- facet: facet
46
+ facet: facet,
47
+ queryParams: queryParams
45
48
  });
46
49
  default:
47
50
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);