@bento-core/facet-filter 1.0.1-ccdihub.9 → 1.0.1-ccdiintegrated.2

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 (87) hide show
  1. package/dist/FacetFilterController.js +34 -7
  2. package/dist/FacetFilterView.js +21 -9
  3. package/dist/NewFacetFilterController.js +192 -0
  4. package/dist/NewFacetFilterView.js +50 -0
  5. package/dist/components/facet/FacetModal.js +101 -0
  6. package/dist/components/facet/FacetStyle.js +52 -3
  7. package/dist/components/facet/FacetView.js +49 -11
  8. package/dist/components/facet/ModalStyle.js +121 -0
  9. package/dist/components/facet/NewFacetStyle.js +218 -0
  10. package/dist/components/facet/NewFacetView.js +227 -0
  11. package/dist/components/facet/NewSearchFacetView.js +242 -0
  12. package/dist/components/facet/ReduxFacetModal.js +31 -0
  13. package/dist/components/facet/ReduxFacetView.js +5 -4
  14. package/dist/components/facet/ReduxNewFacetView.js +39 -0
  15. package/dist/components/facet/ReduxNewSearchFacetView.js +45 -0
  16. package/dist/components/facet/ReduxSearchFacetView.js +41 -0
  17. package/dist/components/facet/SearchFacetView.js +218 -0
  18. package/dist/components/facet/assets/Search_Icon.svg +3 -0
  19. package/dist/components/inputs/FilterItemStyle.js +32 -1
  20. package/dist/components/inputs/FilterItems.js +11 -3
  21. package/dist/components/inputs/ModalFilterItems.js +170 -0
  22. package/dist/components/inputs/ModalFilterStyle.js +117 -0
  23. package/dist/components/inputs/SearchFilterItems.js +100 -0
  24. package/dist/components/inputs/checkbox/CheckboxStyle.js +5 -4
  25. package/dist/components/inputs/checkbox/CheckboxView.js +42 -15
  26. package/dist/components/inputs/checkbox/ModalCheckboxStyle.js +43 -0
  27. package/dist/components/inputs/checkbox/ModalCheckboxView.js +141 -0
  28. package/dist/components/inputs/checkbox/ReduxCheckbox.js +1 -4
  29. package/dist/components/inputs/checkbox/ReduxModalCheckbox.js +17 -0
  30. package/dist/components/inputs/checkbox/ReduxSearchCheckbox.js +17 -0
  31. package/dist/components/inputs/checkbox/SearchCheckboxView.js +147 -0
  32. package/dist/components/inputs/checkbox/assets/checkedbox.svg +1 -1
  33. package/dist/components/inputs/slider/InputMinMaxStyle.js +36 -1
  34. package/dist/components/inputs/slider/InputMinMaxView.js +5 -2
  35. package/dist/components/inputs/slider/ReduxSlider.js +9 -4
  36. package/dist/components/inputs/slider/SliderStyle.js +23 -0
  37. package/dist/components/inputs/slider/SliderView.js +317 -27
  38. package/dist/components/section/FacetSectionView.js +2 -1
  39. package/dist/index.js +25 -0
  40. package/dist/store/actions/ActionTypes.js +7 -1
  41. package/dist/store/actions/Actions.js +47 -2
  42. package/dist/store/reducers/SideBarReducer.js +105 -4
  43. package/dist/utils/filter.js +21 -7
  44. package/package.json +20 -15
  45. package/src/FacetFilterController.js +34 -7
  46. package/src/FacetFilterView.js +24 -10
  47. package/src/NewFacetFilterController.js +182 -0
  48. package/src/NewFacetFilterView.js +57 -0
  49. package/src/components/facet/FacetModal.js +106 -0
  50. package/src/components/facet/FacetStyle.js +51 -2
  51. package/src/components/facet/FacetView.js +54 -11
  52. package/src/components/facet/ModalStyle.js +115 -0
  53. package/src/components/facet/NewFacetStyle.js +217 -0
  54. package/src/components/facet/NewFacetView.js +303 -0
  55. package/src/components/facet/NewSearchFacetView.js +318 -0
  56. package/src/components/facet/ReduxFacetModal.js +28 -0
  57. package/src/components/facet/ReduxFacetView.js +5 -4
  58. package/src/components/facet/ReduxNewFacetView.js +32 -0
  59. package/src/components/facet/ReduxNewSearchFacetView.js +40 -0
  60. package/src/components/facet/ReduxSearchFacetView.js +35 -0
  61. package/src/components/facet/SearchFacetView.js +291 -0
  62. package/src/components/facet/assets/Search_Icon.svg +3 -0
  63. package/src/components/inputs/FilterItemStyle.js +32 -1
  64. package/src/components/inputs/FilterItems.js +14 -3
  65. package/src/components/inputs/ModalFilterItems.js +167 -0
  66. package/src/components/inputs/ModalFilterStyle.js +110 -0
  67. package/src/components/inputs/SearchFilterItems.js +94 -0
  68. package/src/components/inputs/checkbox/CheckboxStyle.js +5 -4
  69. package/src/components/inputs/checkbox/CheckboxView.js +37 -3
  70. package/src/components/inputs/checkbox/ModalCheckboxStyle.js +36 -0
  71. package/src/components/inputs/checkbox/ModalCheckboxView.js +172 -0
  72. package/src/components/inputs/checkbox/ReduxCheckbox.js +1 -5
  73. package/src/components/inputs/checkbox/ReduxModalCheckbox.js +12 -0
  74. package/src/components/inputs/checkbox/ReduxSearchCheckbox.js +12 -0
  75. package/src/components/inputs/checkbox/SearchCheckboxView.js +179 -0
  76. package/src/components/inputs/checkbox/assets/checkedbox.svg +1 -1
  77. package/src/components/inputs/slider/InputMinMaxStyle.js +34 -0
  78. package/src/components/inputs/slider/InputMinMaxView.js +3 -0
  79. package/src/components/inputs/slider/ReduxSlider.js +5 -1
  80. package/src/components/inputs/slider/SliderStyle.js +23 -0
  81. package/src/components/inputs/slider/SliderView.js +358 -36
  82. package/src/components/section/FacetSectionView.js +1 -1
  83. package/src/index.js +4 -1
  84. package/src/store/actions/ActionTypes.js +6 -0
  85. package/src/store/actions/Actions.js +45 -0
  86. package/src/store/reducers/SideBarReducer.js +100 -1
  87. package/src/utils/filter.js +18 -0
@@ -26,11 +26,19 @@ const FacetFilterController = props => {
26
26
  * 2. subject state
27
27
  */
28
28
  const {
29
- filterState,
29
+ activeFilters,
30
30
  data,
31
31
  facetsConfig,
32
- facetSectionConfig
32
+ facetSectionConfig,
33
+ unknownAgesState
33
34
  } = props;
35
+ const filterState = {};
36
+ // console.log(activeFilters);
37
+ for (const [key, value] of Object.entries(activeFilters)) {
38
+ if (key !== 'participant_ids') {
39
+ filterState[key] = value;
40
+ }
41
+ }
34
42
  const updateFacetState = filterSections => {
35
43
  const updateSections = [...filterSections];
36
44
  if (!_lodash.default.isEmpty(filterState)) {
@@ -38,7 +46,8 @@ const FacetFilterController = props => {
38
46
  updateSections.forEach(sideBar => {
39
47
  if (sideBar.type === _Types.InputTypes.CHECKBOX && sideBar.datafield === key) {
40
48
  sideBar.facetValues.forEach(item => {
41
- item.isChecked = value[item.name] ? value[item.name] : false;
49
+ // item.isChecked = value[item.name] ? value[item.name] : false;
50
+ item.isChecked = value.indexOf(item.name) > -1;
42
51
  });
43
52
  }
44
53
  if (sideBar.type === _Types.InputTypes.SLIDER && sideBar.datafield === key) {
@@ -112,11 +121,30 @@ const FacetFilterController = props => {
112
121
  } = updateFacet;
113
122
  if (data[apiForFiltering]) {
114
123
  if (Array.isArray(data[apiForFiltering])) {
124
+ const validValues = [];
115
125
  const updateField = data[apiForFiltering].map(item => {
116
126
  const addField = _objectSpread({}, item);
117
127
  addField.name = item[field];
128
+ validValues.push(addField.name);
118
129
  return addField;
119
130
  });
131
+ /**
132
+ * Check if there are orphen filter values and add them to the facet values
133
+ */
134
+ if (filterState !== undefined) {
135
+ const facetFilter = filterState[facet.datafield];
136
+ if (facetFilter) {
137
+ facetFilter.forEach(item => {
138
+ if (validValues.indexOf(item) === -1) {
139
+ const tmp = {};
140
+ tmp.group = item;
141
+ tmp.name = item;
142
+ tmp.subjects = 0;
143
+ updateField.push(tmp);
144
+ }
145
+ });
146
+ }
147
+ }
120
148
  updateFacet.facetValues = updateField;
121
149
  }
122
150
  /**
@@ -125,8 +153,10 @@ const FacetFilterController = props => {
125
153
  if (facet.type === _Types.InputTypes.SLIDER) {
126
154
  const lowerBound = data[apiForFiltering][ApiLowerBoundName];
127
155
  const upperBound = data[apiForFiltering][ApiUpperBoundName];
156
+ const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
128
157
  updateFacet.minLowerBound = lowerBound;
129
158
  updateFacet.maxUpperBound = upperBound;
159
+ updateFacet.unknownAges = unknownAges;
130
160
  updateFacet.facetValues = [lowerBound, upperBound];
131
161
  updateFacet.style = facet.style;
132
162
  }
@@ -150,8 +180,5 @@ const FacetFilterController = props => {
150
180
  sideBarSections: facetSections
151
181
  })));
152
182
  };
153
- const mapStateToProps = state => ({
154
- filterState: state.statusReducer.filterState
155
- });
156
- var _default = (0, _reactRedux.connect)(mapStateToProps, null)(FacetFilterController);
183
+ var _default = (0, _reactRedux.connect)(null, null)(FacetFilterController);
157
184
  exports.default = _default;
@@ -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,192 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactRedux = require("react-redux");
10
+ var _Types = require("./components/inputs/Types");
11
+ var _NewFacetFilterView = _interopRequireDefault(require("./NewFacetFilterView"));
12
+ const _excluded = ["section"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
19
+ 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); }
20
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
+ const NewFacetFilterController = props => {
23
+ /**
24
+ * update checkbox state
25
+ * 1. checkbox state
26
+ * 2. subject state
27
+ */
28
+ const {
29
+ activeFilters,
30
+ data,
31
+ facetsConfig,
32
+ facetSectionConfig,
33
+ selectedSection,
34
+ unknownAgesState
35
+ } = props;
36
+ const filterState = {};
37
+ // console.log(activeFilters);
38
+ for (const [key, value] of Object.entries(activeFilters)) {
39
+ if (key !== 'participant_ids') {
40
+ filterState[key] = value;
41
+ }
42
+ }
43
+ const updateFacetState = filterSections => {
44
+ const updateSections = [...filterSections];
45
+ if (!_lodash.default.isEmpty(filterState)) {
46
+ for (const [key, value] of Object.entries(filterState)) {
47
+ updateSections.forEach(sideBar => {
48
+ if (sideBar.type === _Types.InputTypes.CHECKBOX && sideBar.datafield === key) {
49
+ sideBar.facetValues.forEach(item => {
50
+ // item.isChecked = value[item.name] ? value[item.name] : false;
51
+ item.isChecked = value.indexOf(item.name) > -1;
52
+ });
53
+ }
54
+ if (sideBar.type === _Types.InputTypes.SLIDER && sideBar.datafield === key) {
55
+ sideBar.facetValues = value;
56
+ }
57
+ });
58
+ }
59
+ } else {
60
+ updateSections.forEach(sideBar => {
61
+ if (sideBar.type === _Types.InputTypes.CHECKBOX) {
62
+ sideBar.facetValues.forEach(item => {
63
+ item.isChecked = false;
64
+ });
65
+ }
66
+ /**
67
+ * set default value for slider - on clear all filter
68
+ */
69
+ if (sideBar.type === _Types.InputTypes.SLIDER) {
70
+ const {
71
+ minLowerBound,
72
+ maxUpperBound
73
+ } = sideBar;
74
+ sideBar.facetValues = [minLowerBound, maxUpperBound];
75
+ }
76
+ });
77
+ }
78
+ return updateSections;
79
+ };
80
+ const arrangeBySections = arr => {
81
+ const sideBar = {};
82
+ arr.forEach(_ref => {
83
+ let {
84
+ section
85
+ } = _ref,
86
+ item = _objectWithoutProperties(_ref, _excluded);
87
+ const {
88
+ isExpanded
89
+ } = facetSectionConfig[section];
90
+ if (!sideBar[section]) {
91
+ sideBar[section] = {
92
+ name: section,
93
+ sectionName: section,
94
+ expandSection: isExpanded !== undefined && typeof isExpanded === 'boolean' ? isExpanded : true,
95
+ items: []
96
+ };
97
+ }
98
+ sideBar[section].items.push(_objectSpread({
99
+ section
100
+ }, item));
101
+ });
102
+ return Object.values(sideBar);
103
+ };
104
+
105
+ /**
106
+ * Construct filter object
107
+ * 1. add facet values to facets
108
+ * 2. add 'name' key to each facet value
109
+ */
110
+ const addFacetValues = facets => {
111
+ const updateFacets = [];
112
+ if (facets) {
113
+ facets.forEach(facet => {
114
+ const updateFacet = _objectSpread(_objectSpread({}, facet), {}, {
115
+ facetValues: []
116
+ });
117
+ const {
118
+ field,
119
+ ApiLowerBoundName,
120
+ ApiUpperBoundName,
121
+ apiForFiltering
122
+ } = updateFacet;
123
+ if (data[apiForFiltering]) {
124
+ if (Array.isArray(data[apiForFiltering])) {
125
+ const validValues = [];
126
+ const updateField = data[apiForFiltering].map(item => {
127
+ const addField = _objectSpread({}, item);
128
+ addField.name = item[field];
129
+ validValues.push(addField.name);
130
+ return addField;
131
+ });
132
+ /**
133
+ * Check if there are orphen filter values and add them to the facet values
134
+ */
135
+ if (filterState !== undefined) {
136
+ const facetFilter = filterState[facet.datafield];
137
+ if (facetFilter) {
138
+ facetFilter.forEach(item => {
139
+ if (validValues.indexOf(item) === -1) {
140
+ const tmp = {};
141
+ tmp.group = item;
142
+ tmp.name = item;
143
+ tmp.subjects = 0;
144
+ updateField.push(tmp);
145
+ }
146
+ });
147
+ }
148
+ }
149
+ updateFacet.facetValues = updateField;
150
+ }
151
+ /**
152
+ * add object to facet values
153
+ */
154
+ if (facet.type === _Types.InputTypes.SLIDER) {
155
+ const lowerBound = data[apiForFiltering][ApiLowerBoundName];
156
+ const upperBound = data[apiForFiltering][ApiUpperBoundName];
157
+ const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
158
+ updateFacet.minLowerBound = lowerBound;
159
+ updateFacet.maxUpperBound = upperBound;
160
+ updateFacet.unknownAges = unknownAges;
161
+ updateFacet.facetValues = [lowerBound, upperBound];
162
+ updateFacet.style = facet.style;
163
+ }
164
+ }
165
+ updateFacets.push(updateFacet);
166
+ });
167
+ }
168
+ return updateFacets;
169
+ };
170
+
171
+ /**
172
+ * Generate facet sections state
173
+ *
174
+ */
175
+ // const displayFacets = facetsConfig.filter((facet) => facet.show).slice(0, 16);
176
+ const displayFacets = facetsConfig.filter(facet => facet.show);
177
+ const facetStates = addFacetValues(displayFacets);
178
+ const updateState = updateFacetState(facetStates);
179
+ const facetSections = arrangeBySections(updateState);
180
+ const facetSection = facetSections[selectedSection];
181
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_NewFacetFilterView.default, _extends({}, props, {
182
+ facetSection: facetSection
183
+ })));
184
+ };
185
+ const mapStateToProps = state => {
186
+ var _state$statusReducer;
187
+ return {
188
+ unknownAgesState: (state === null || state === void 0 ? void 0 : (_state$statusReducer = state.statusReducer) === null || _state$statusReducer === void 0 ? void 0 : _state$statusReducer.unknownAgesState) || {}
189
+ };
190
+ };
191
+ var _default = (0, _reactRedux.connect)(mapStateToProps, null)(NewFacetFilterController);
192
+ exports.default = _default;
@@ -0,0 +1,50 @@
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 _core = require("@material-ui/core");
9
+ var _FacetFilterStyle = _interopRequireDefault(require("./FacetFilterStyle"));
10
+ var _ReduxNewFacetView = _interopRequireDefault(require("./components/facet/ReduxNewFacetView"));
11
+ var _FilterItems = _interopRequireDefault(require("./components/inputs/FilterItems"));
12
+ var _ReduxNewSearchFacetView = _interopRequireDefault(require("./components/facet/ReduxNewSearchFacetView"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ /* eslint-disable arrow-body-style */
15
+ /* eslint-disable padded-blocks */
16
+
17
+ const BentoFacetFilter = _ref => {
18
+ let {
19
+ facetSection,
20
+ CustomFacetSection,
21
+ CustomFacetView,
22
+ queryParams,
23
+ basePath
24
+ } = _ref;
25
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, CustomFacetSection && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(CustomFacetSection, {
26
+ section: facetSection,
27
+ expanded: true
28
+ })), facetSection.items.map(facet => {
29
+ if (facet.search) {
30
+ return /*#__PURE__*/_react.default.createElement(_ReduxNewSearchFacetView.default, {
31
+ facet: facet,
32
+ queryParams: queryParams,
33
+ CustomView: CustomFacetView,
34
+ basePath: basePath
35
+ });
36
+ }
37
+ return /*#__PURE__*/_react.default.createElement(_ReduxNewFacetView.default, {
38
+ facet: facet,
39
+ queryParams: queryParams,
40
+ CustomView: CustomFacetView,
41
+ basePath: basePath
42
+ }, /*#__PURE__*/_react.default.createElement(_core.List, {
43
+ className: "List_".concat(facet.label)
44
+ }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
45
+ facet: facet
46
+ })));
47
+ }));
48
+ };
49
+ var _default = (0, _core.withStyles)(_FacetFilterStyle.default)(BentoFacetFilter);
50
+ 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("/exploreParticipants".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,16 +34,16 @@ 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',
41
43
  fontFamily: 'Nunito',
42
44
  fontSize: '10px',
43
45
  marginRight: '12px',
44
- marginLeft: '16px'
46
+ marginLeft: '24px'
45
47
  },
46
48
  sortGroupItem: {
47
49
  cursor: 'pointer',
@@ -77,6 +79,53 @@ var _default = () => ({
77
79
  cursor: 'pointer',
78
80
  fontSize: '10px',
79
81
  width: '100%'
82
+ },
83
+ searchContainer: {
84
+ display: 'flex',
85
+ justifyContent: 'center',
86
+ position: 'relative'
87
+ },
88
+ searchBox: {
89
+ fontSize: '11px',
90
+ fontFamily: 'Nunito',
91
+ width: 'calc(100% - 26px)',
92
+ height: '30px',
93
+ marginTop: '12px',
94
+ borderRadius: '5px',
95
+ background: "url(".concat(_Search_Icon.default, ") right 5px center no-repeat"),
96
+ marginLeft: '6px',
97
+ border: '1px solid',
98
+ padding: '5px'
99
+ },
100
+ searchBoxWithText: {
101
+ fontSize: '11px',
102
+ fontFamily: 'Nunito',
103
+ width: 'calc(100% - 26px)',
104
+ height: '30px',
105
+ marginTop: '12px',
106
+ borderRadius: '5px',
107
+ marginLeft: '6px',
108
+ border: '1px solid',
109
+ padding: '5px'
110
+ },
111
+ expandedDisplayButton: {
112
+ backgroundColor: '#4D889E !important',
113
+ color: 'white',
114
+ width: 'calc(100% - 26px)',
115
+ height: '30px',
116
+ marginBottom: '5px',
117
+ marginLeft: '6px',
118
+ borderRadius: '5px',
119
+ fontSize: '12px',
120
+ fontWeight: '600',
121
+ top: '8px'
122
+ },
123
+ clearTextButton: {
124
+ padding: '0px',
125
+ height: '20px',
126
+ position: 'absolute',
127
+ right: '14px',
128
+ top: '14px'
80
129
  }
81
130
  });
82
131
  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,27 +29,50 @@ const FacetView = _ref => {
27
29
  facet,
28
30
  onClearFacetSection,
29
31
  onClearSliderSection,
32
+ onUnknownAgesChange,
30
33
  CustomView,
31
- autoComplete,
32
- upload
34
+ queryParams,
35
+ unknownAgesState
33
36
  } = _ref;
34
- const [expand, setExpand] = (0, _react.useState)(false);
37
+ const [expand, setExpand] = (0, _react.useState)(facet.expanded !== undefined && typeof facet.expanded === 'boolean' ? facet.expanded : false);
35
38
  const onExpandFacet = () => setExpand(!expand);
39
+ const query = new URLSearchParams((0, _reactRouterDom.useLocation)().search);
40
+ const navigate = (0, _reactRouterDom.useNavigate)();
36
41
 
37
42
  /**
38
43
  * expand section incase of active local search
39
44
  */
40
- (0, _react.useEffect)(() => {
41
- if (autoComplete && autoComplete.length > 0 || upload && upload.length > 0) {
42
- setExpand(true);
43
- }
44
- }, [autoComplete, upload]);
45
+ // useEffect(() => {
46
+ // if ((autoComplete && autoComplete.length > 0)
47
+ // || (upload && upload.length > 0)) {
48
+ // setExpand(true);
49
+ // }
50
+ // }, [autoComplete, upload]);
51
+
45
52
  const [sortBy, setSortBy] = (0, _react.useState)(null);
46
53
  const onSortFacet = type => {
47
54
  setSortBy(type);
48
55
  };
49
56
  const onClearSection = () => {
57
+ const field = facet.datafield;
58
+ const paramValue = {};
59
+ paramValue[field] = '';
60
+
61
+ // Also clear the corresponding unknownAges parameter if it exists
62
+ const unknownAgesField = "".concat(field, "_unknownAges");
63
+ if (queryParams.includes(unknownAgesField)) {
64
+ paramValue[unknownAgesField] = '';
65
+ }
66
+ const queryStr = (0, _util.generateQueryStr)(query, queryParams, paramValue);
67
+ navigate("/exploreParticipants".concat(queryStr), {
68
+ replace: true
69
+ });
50
70
  setSortBy(null);
71
+
72
+ // Reset the corresponding unknownAges parameter in Redux state
73
+ if (queryParams.includes(unknownAgesField) && onUnknownAgesChange) {
74
+ onUnknownAgesChange(field, 'include');
75
+ }
51
76
  if (facet.type === _Types.InputTypes.SLIDER) {
52
77
  onClearSliderSection(facet);
53
78
  } else {
@@ -64,7 +89,12 @@ const FacetView = _ref => {
64
89
  const selectedItems = facetValues && facetValues.filter(item => item.isChecked);
65
90
  const displayFacet = _objectSpread({}, facet);
66
91
  displayFacet.facetValues = selectedItems;
67
- const isActiveFacet = [...selectedItems].length > 0;
92
+
93
+ // Check if facet is active based on selected items or unknown ages selection
94
+ const hasSelectedItems = [...selectedItems].length > 0;
95
+ const unknownAges = (unknownAgesState === null || unknownAgesState === void 0 ? void 0 : unknownAgesState[facet.datafield]) || 'include';
96
+ const hasUnknownAgesSelection = unknownAges !== 'include';
97
+ const isActiveFacet = hasSelectedItems || type === _Types.InputTypes.SLIDER && hasUnknownAgesSelection;
68
98
  const limitCheckBoxCount = (facet === null || facet === void 0 ? void 0 : facet.showCheckboxCount) || 5;
69
99
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Accordion, {
70
100
  square: true,
@@ -116,15 +146,23 @@ const FacetView = _ref => {
116
146
  }
117
147
  }, "Sort by count"))), /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
118
148
  facet: facet,
149
+ queryParams: queryParams,
119
150
  sortBy: sortBy
120
151
  })), !expand && type === _Types.InputTypes.CHECKBOX && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
121
152
  id: "filter_Items"
122
153
  }, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
123
- facet: displayFacet
154
+ facet: displayFacet,
155
+ queryParams: queryParams
124
156
  }))), !expand && selectedItems.length > limitCheckBoxCount && /*#__PURE__*/_react.default.createElement("div", {
125
157
  className: classes.showMore,
126
158
  onClick: onExpandFacet
127
- }, "...expand to see all selections"));
159
+ }, "...expand to see all selections"), expand && type === _Types.InputTypes.SLIDER && /*#__PURE__*/_react.default.createElement("div", {
160
+ style: {
161
+ marginTop: '20px',
162
+ marginBottom: '0px',
163
+ borderBottom: '1px solid rgb(204, 204, 204)'
164
+ }
165
+ }));
128
166
  };
129
167
  var _default = (0, _core.withStyles)(_FacetStyle.default)(FacetView);
130
168
  exports.default = _default;