@bento-core/facet-filter 1.0.1-icdc.0 → 1.0.1-icdc.10
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.
- package/README.md +81 -4
- package/dist/FacetFilterController.js +23 -16
- package/dist/FacetFilterView.js +7 -8
- package/dist/components/facet/FacetStyle.js +23 -10
- package/dist/components/facet/FacetView.js +60 -11
- package/dist/components/facet/ReduxFacetView.js +2 -0
- package/dist/components/inputs/checkbox/CheckboxView.js +22 -13
- package/dist/components/inputs/slider/SliderView.js +5 -4
- package/dist/components/summary/AccordionSummaryView.js +1 -0
- package/dist/index.js +7 -0
- package/dist/store/reducers/SideBarReducer.js +27 -8
- package/dist/utils/Sort.js +8 -6
- package/package.json +4 -11
- package/src/FacetFilterController.js +18 -13
- package/src/FacetFilterView.js +21 -33
- package/src/components/facet/FacetStyle.js +17 -7
- package/src/components/facet/FacetView.js +126 -103
- package/src/components/facet/ReduxFacetView.js +14 -4
- package/src/components/inputs/checkbox/CheckboxView.js +34 -25
- package/src/components/inputs/checkbox/ReduxCheckbox.js +1 -1
- package/src/components/inputs/slider/SliderView.js +5 -4
- package/src/components/summary/AccordionSummaryView.js +4 -11
- package/src/index.js +3 -0
- package/src/store/reducers/SideBarReducer.js +14 -2
- package/src/utils/Sort.js +14 -8
package/README.md
CHANGED
|
@@ -72,12 +72,17 @@ import FacetFilter from 'bento-core';
|
|
|
72
72
|
```
|
|
73
73
|
import { InputTypes } from 'bento-core';
|
|
74
74
|
|
|
75
|
+
// fields for labelds and counts
|
|
76
|
+
const GROUP = 'group'; // access labels
|
|
77
|
+
const COUNT = 'subjects'; // access count value
|
|
78
|
+
|
|
75
79
|
export const facetsConfig = [{
|
|
76
80
|
section: CASES,
|
|
77
81
|
label: 'Program',
|
|
78
82
|
apiForFiltering: 'filterSubjectCountByProgram',
|
|
79
83
|
datafield: 'programs',
|
|
80
|
-
field: GROUP,
|
|
84
|
+
field: GROUP,
|
|
85
|
+
count: COUNT,
|
|
81
86
|
type: InputTypes.CHECKBOX,
|
|
82
87
|
sort_type: sortType.ALPHABET,
|
|
83
88
|
show: true,
|
|
@@ -244,12 +249,84 @@ className={clsx(classes.sectionSummaryText, classes[facetClasses])}
|
|
|
244
249
|
## 10 CLearAllFilterButton Component
|
|
245
250
|
Bento Core provides 1. function to clear all active filters, 2. disable flag (true incase of no active filters). Client is responsible for defining view (custom html).
|
|
246
251
|
```
|
|
247
|
-
import {
|
|
252
|
+
import { ClearAllFiltersBtn, FacetFilter } from '@bento-core/facet-filter';
|
|
253
|
+
import { getFilters } from '@bento-core/facet-filter';
|
|
248
254
|
|
|
249
255
|
const CustomClearAllFiltersBtn = ({ onClearAllFilters, disable }) => {
|
|
250
256
|
//...custom component 1. bind onClearFilters fn
|
|
251
257
|
// 2. disable flag to disable button
|
|
252
|
-
}
|
|
258
|
+
}
|
|
259
|
+
// get filter data
|
|
260
|
+
// filterState: state.statusReducer.filterState, (from reducer)
|
|
261
|
+
// const activeFilters = getFilters(filterState) // formating
|
|
262
|
+
|
|
263
|
+
<ClearAllFiltersBtn
|
|
264
|
+
Component={CustomClearAllFiltersBtn}
|
|
265
|
+
activeFilters={activeFilters}
|
|
266
|
+
/>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## 11 Facet Value Component
|
|
270
|
+
```
|
|
271
|
+
// response
|
|
272
|
+
// filterCaseCountByProgram: [{group: "COP", subjects: 301}]
|
|
273
|
+
|
|
274
|
+
// facet = {
|
|
275
|
+
// section: CASES,
|
|
276
|
+
// label: 'Program',
|
|
277
|
+
// apiForFiltering: 'filterSubjectCountByProgram',
|
|
278
|
+
// datafield: 'programs',
|
|
279
|
+
// field: GROUP,
|
|
280
|
+
// count: COUNT,
|
|
281
|
+
// type: InputTypes.CHECKBOX,
|
|
282
|
+
// sort_type: sortType.ALPHABET,
|
|
283
|
+
// show: true,
|
|
284
|
+
// customCount = (text) => `(${text})`,
|
|
285
|
+
// }
|
|
286
|
+
|
|
287
|
+
const {
|
|
288
|
+
field = 'group',
|
|
289
|
+
count = 'subjects',
|
|
290
|
+
customCount = (text) => `(${text})`,
|
|
291
|
+
} = facet;
|
|
292
|
+
const {
|
|
293
|
+
isChecked = false,
|
|
294
|
+
index,
|
|
295
|
+
section,
|
|
296
|
+
tooltip,
|
|
297
|
+
} = checkboxItem;
|
|
253
298
|
|
|
254
|
-
|
|
299
|
+
// 1. by default facet value component display group ("COP")
|
|
300
|
+
// 2. set customName to display customize value
|
|
301
|
+
// 3. by default facet value component display subjects (301)
|
|
302
|
+
// 4. set customSubjects to display customize value or adjust correct field for subject count
|
|
303
|
+
// 5. tooltip - provide text value to tooltip text
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Add Bento frontend filter count/subjects
|
|
307
|
+
* Add tootip text
|
|
308
|
+
*/
|
|
309
|
+
const filterData = facetsConfig.reduce((acc, item) => {
|
|
310
|
+
const facetValues = searchData[item.apiPath];
|
|
311
|
+
if (!facetValues) {
|
|
312
|
+
return acc;
|
|
313
|
+
}
|
|
314
|
+
const subjectCounts = [...facetValues].map((checkbox) => {
|
|
315
|
+
const text = tooltipText[item.tooltipKey];
|
|
316
|
+
return {
|
|
317
|
+
...checkbox,
|
|
318
|
+
customSubjects: checkbox.count,
|
|
319
|
+
tooltip: text ? text[checkbox.group] : undefined,
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
return { ...acc, [item.apiPath]: [...subjectCounts] };
|
|
323
|
+
}, {});
|
|
324
|
+
|
|
325
|
+
<FacetFilter
|
|
326
|
+
data={filterData}
|
|
327
|
+
facetSectionConfig={facetSectionVariables}
|
|
328
|
+
facetsConfig={facetsConfig}
|
|
329
|
+
CustomFacetSection={CustomFacetSection}
|
|
330
|
+
CustomFacetView={CustomFacetView}
|
|
331
|
+
/>
|
|
255
332
|
```
|
|
@@ -12,13 +12,13 @@ var _FacetFilterView = _interopRequireDefault(require("./FacetFilterView"));
|
|
|
12
12
|
const _excluded = ["section"];
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
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 _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; }
|
|
16
|
+
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; }
|
|
15
17
|
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
18
|
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
19
|
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
20
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
19
21
|
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
22
|
const FacetFilterController = props => {
|
|
23
23
|
/**
|
|
24
24
|
* update checkbox state
|
|
@@ -29,7 +29,8 @@ const FacetFilterController = props => {
|
|
|
29
29
|
filterState,
|
|
30
30
|
data,
|
|
31
31
|
facetsConfig,
|
|
32
|
-
facetSectionConfig
|
|
32
|
+
facetSectionConfig,
|
|
33
|
+
tooltipText = {}
|
|
33
34
|
} = props;
|
|
34
35
|
const updateFacetState = filterSections => {
|
|
35
36
|
const updateSections = [...filterSections];
|
|
@@ -37,9 +38,16 @@ const FacetFilterController = props => {
|
|
|
37
38
|
for (const [key, value] of Object.entries(filterState)) {
|
|
38
39
|
updateSections.forEach(sideBar => {
|
|
39
40
|
if (sideBar.type === _Types.InputTypes.CHECKBOX && sideBar.datafield === key) {
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const {
|
|
42
|
+
facetValues = []
|
|
43
|
+
} = sideBar;
|
|
44
|
+
const updateFacetVals = facetValues.map(item => {
|
|
45
|
+
const facetVal = item[sideBar.field];
|
|
46
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
47
|
+
isChecked: value[facetVal] ? value[facetVal] : false
|
|
48
|
+
});
|
|
42
49
|
});
|
|
50
|
+
sideBar.facetValues = updateFacetVals;
|
|
43
51
|
}
|
|
44
52
|
if (sideBar.type === _Types.InputTypes.SLIDER && sideBar.datafield === key) {
|
|
45
53
|
sideBar.facetValues = value;
|
|
@@ -49,9 +57,13 @@ const FacetFilterController = props => {
|
|
|
49
57
|
} else {
|
|
50
58
|
updateSections.forEach(sideBar => {
|
|
51
59
|
if (sideBar.type === _Types.InputTypes.CHECKBOX) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
60
|
+
const {
|
|
61
|
+
facetValues = []
|
|
62
|
+
} = sideBar;
|
|
63
|
+
const updateFacetVals = facetValues.map(item => _objectSpread(_objectSpread({}, item), {}, {
|
|
64
|
+
isChecked: false
|
|
65
|
+
}));
|
|
66
|
+
sideBar.facetValues = updateFacetVals;
|
|
55
67
|
}
|
|
56
68
|
/**
|
|
57
69
|
* set default value for slider - on clear all filter
|
|
@@ -96,6 +108,7 @@ const FacetFilterController = props => {
|
|
|
96
108
|
* Construct filter object
|
|
97
109
|
* 1. add facet values to facets
|
|
98
110
|
* 2. add 'name' key to each facet value
|
|
111
|
+
* 3. add '
|
|
99
112
|
*/
|
|
100
113
|
const addFacetValues = facets => {
|
|
101
114
|
const updateFacets = [];
|
|
@@ -105,19 +118,13 @@ const FacetFilterController = props => {
|
|
|
105
118
|
facetValues: []
|
|
106
119
|
});
|
|
107
120
|
const {
|
|
108
|
-
field,
|
|
109
121
|
ApiLowerBoundName,
|
|
110
122
|
ApiUpperBoundName,
|
|
111
123
|
apiForFiltering
|
|
112
124
|
} = updateFacet;
|
|
113
125
|
if (data[apiForFiltering]) {
|
|
114
126
|
if (Array.isArray(data[apiForFiltering])) {
|
|
115
|
-
|
|
116
|
-
const addField = _objectSpread({}, item);
|
|
117
|
-
addField.name = item[field];
|
|
118
|
-
return addField;
|
|
119
|
-
});
|
|
120
|
-
updateFacet.facetValues = updateField;
|
|
127
|
+
updateFacet.facetValues = data[apiForFiltering];
|
|
121
128
|
}
|
|
122
129
|
/**
|
|
123
130
|
* add object to facet values
|
|
@@ -140,7 +147,7 @@ const FacetFilterController = props => {
|
|
|
140
147
|
* Generate facet sections state
|
|
141
148
|
*
|
|
142
149
|
*/
|
|
143
|
-
const displayFacets = facetsConfig.filter(facet => facet.show)
|
|
150
|
+
const displayFacets = facetsConfig.filter(facet => facet.show);
|
|
144
151
|
const facetStates = addFacetValues(displayFacets);
|
|
145
152
|
const updateState = updateFacetState(facetStates);
|
|
146
153
|
const facetSections = arrangeBySections(updateState);
|
package/dist/FacetFilterView.js
CHANGED
|
@@ -9,7 +9,6 @@ var _core = require("@material-ui/core");
|
|
|
9
9
|
var _FacetFilterStyle = _interopRequireDefault(require("./FacetFilterStyle"));
|
|
10
10
|
var _FacetSectionView = _interopRequireDefault(require("./components/section/FacetSectionView"));
|
|
11
11
|
var _ReduxFacetView = _interopRequireDefault(require("./components/facet/ReduxFacetView"));
|
|
12
|
-
var _FilterItems = _interopRequireDefault(require("./components/inputs/FilterItems"));
|
|
13
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
13
|
/* eslint-disable arrow-body-style */
|
|
15
14
|
/* eslint-disable padded-blocks */
|
|
@@ -18,7 +17,9 @@ const BentoFacetFilter = _ref => {
|
|
|
18
17
|
let {
|
|
19
18
|
sideBarSections,
|
|
20
19
|
CustomFacetSection,
|
|
21
|
-
CustomFacetView
|
|
20
|
+
CustomFacetView,
|
|
21
|
+
enableClearSection,
|
|
22
|
+
enableFacetCollapse
|
|
22
23
|
} = _ref;
|
|
23
24
|
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
25
|
variant: "middle",
|
|
@@ -28,12 +29,10 @@ const BentoFacetFilter = _ref => {
|
|
|
28
29
|
CustomSection: CustomFacetSection
|
|
29
30
|
}, section.items.map(facet => /*#__PURE__*/_react.default.createElement(_ReduxFacetView.default, {
|
|
30
31
|
facet: facet,
|
|
31
|
-
CustomView: CustomFacetView
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
facet: facet
|
|
36
|
-
}))))))));
|
|
32
|
+
CustomView: CustomFacetView,
|
|
33
|
+
enableClearSection: enableClearSection,
|
|
34
|
+
enableFacetCollapse: enableFacetCollapse
|
|
35
|
+
}))))));
|
|
37
36
|
};
|
|
38
37
|
var _default = (0, _core.withStyles)(_FacetFilterStyle.default)(BentoFacetFilter);
|
|
39
38
|
exports.default = _default;
|
|
@@ -20,6 +20,13 @@ var _default = () => ({
|
|
|
20
20
|
position: 'initial'
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
|
+
subSectionSummaryTextWrapper: {
|
|
24
|
+
display: 'flex',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
justifyContent: 'space-between',
|
|
27
|
+
width: '100%',
|
|
28
|
+
paddingRight: '15px'
|
|
29
|
+
},
|
|
23
30
|
subSectionSummaryText: {
|
|
24
31
|
marginLeft: '10px',
|
|
25
32
|
lineHeight: 0,
|
|
@@ -34,21 +41,26 @@ var _default = () => ({
|
|
|
34
41
|
marginBottom: '5px',
|
|
35
42
|
borderTop: '1px solid #B1B1B1',
|
|
36
43
|
textAlign: 'left',
|
|
37
|
-
marginLeft: '-5px'
|
|
44
|
+
// marginLeft: '-5px',
|
|
45
|
+
display: 'flex',
|
|
46
|
+
alignItems: 'center',
|
|
47
|
+
justifyContent: 'space-around'
|
|
38
48
|
},
|
|
39
49
|
sortGroupIcon: {
|
|
40
50
|
cursor: 'pointer',
|
|
41
51
|
fontFamily: 'Nunito',
|
|
42
|
-
fontSize: '10px'
|
|
43
|
-
marginRight: '12px',
|
|
44
|
-
marginLeft: '16px'
|
|
52
|
+
fontSize: '10px'
|
|
53
|
+
// marginRight: '12px',
|
|
54
|
+
// marginLeft: '16px',
|
|
45
55
|
},
|
|
56
|
+
|
|
46
57
|
sortGroupItem: {
|
|
47
58
|
cursor: 'pointer',
|
|
48
59
|
fontFamily: 'Nunito',
|
|
49
|
-
fontSize: '10px'
|
|
50
|
-
marginRight: '32px'
|
|
60
|
+
fontSize: '10px'
|
|
61
|
+
// marginRight: '32px',
|
|
51
62
|
},
|
|
63
|
+
|
|
52
64
|
NonSortGroup: {
|
|
53
65
|
marginBottom: '5px',
|
|
54
66
|
borderTop: '1px solid #B1B1B1',
|
|
@@ -63,11 +75,12 @@ var _default = () => ({
|
|
|
63
75
|
sortGroupItemCounts: {
|
|
64
76
|
cursor: 'pointer',
|
|
65
77
|
fontFamily: 'Nunito',
|
|
66
|
-
fontSize: '10px'
|
|
67
|
-
float: 'right',
|
|
68
|
-
marginRight: '10px',
|
|
69
|
-
marginTop: '5px'
|
|
78
|
+
fontSize: '10px'
|
|
79
|
+
// float: 'right',
|
|
80
|
+
// marginRight: '10px',
|
|
81
|
+
// marginTop: '5px',
|
|
70
82
|
},
|
|
83
|
+
|
|
71
84
|
highlight: {
|
|
72
85
|
color: '#b2c6d6'
|
|
73
86
|
},
|
|
@@ -7,12 +7,15 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _core = require("@material-ui/core");
|
|
9
9
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
10
|
+
var _Refresh = _interopRequireDefault(require("@material-ui/icons/Refresh"));
|
|
11
|
+
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
|
10
12
|
var _AccordionSummaryView = _interopRequireDefault(require("../summary/AccordionSummaryView"));
|
|
11
13
|
var _Types = require("../inputs/Types");
|
|
12
14
|
var _FacetStyle = _interopRequireDefault(require("./FacetStyle"));
|
|
13
15
|
var _FilterItems = _interopRequireDefault(require("../inputs/FilterItems"));
|
|
14
16
|
var _Sort = require("../../utils/Sort");
|
|
15
17
|
var _clearIcon = _interopRequireDefault(require("./assets/clearIcon.svg"));
|
|
18
|
+
var _ActionTypes = require("../../store/actions/ActionTypes");
|
|
16
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
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); }
|
|
18
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; }
|
|
@@ -25,18 +28,50 @@ const FacetView = _ref => {
|
|
|
25
28
|
let {
|
|
26
29
|
classes,
|
|
27
30
|
facet,
|
|
31
|
+
enableClearSection,
|
|
28
32
|
onClearFacetSection,
|
|
29
33
|
onClearSliderSection,
|
|
30
34
|
CustomView,
|
|
31
35
|
autoComplete,
|
|
32
|
-
upload
|
|
36
|
+
upload,
|
|
37
|
+
filterState,
|
|
38
|
+
currentActionType = {},
|
|
39
|
+
enableFacetCollapse
|
|
33
40
|
} = _ref;
|
|
34
41
|
const [expand, setExpand] = (0, _react.useState)(false);
|
|
35
42
|
const onExpandFacet = () => setExpand(!expand);
|
|
43
|
+
const {
|
|
44
|
+
datafield
|
|
45
|
+
} = facet;
|
|
46
|
+
/**
|
|
47
|
+
* Collapse expanded facet or facets
|
|
48
|
+
* 1. on clear facet section
|
|
49
|
+
* 2. on clear all
|
|
50
|
+
* 3. on uncheck facet from DQB
|
|
51
|
+
*/
|
|
52
|
+
(0, _react.useEffect)(() => {
|
|
53
|
+
if (enableFacetCollapse) {
|
|
54
|
+
const actionType = currentActionType[datafield];
|
|
55
|
+
// collapse facet if uncheck from DQB
|
|
56
|
+
if (actionType && actionType === _ActionTypes.sideBarActionTypes.FACET_VALUE_CHANGED) {
|
|
57
|
+
const {
|
|
58
|
+
isFacetOrigin
|
|
59
|
+
} = currentActionType;
|
|
60
|
+
if (!isFacetOrigin) {
|
|
61
|
+
if (Object.keys(filterState[datafield] || {}).length === 0) {
|
|
62
|
+
setExpand(false);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (actionType && actionType === _ActionTypes.sideBarActionTypes.CLEAR_FACET_SECTION || currentActionType === _ActionTypes.sideBarActionTypes.CLEAR_ALL_FILTERS) {
|
|
67
|
+
setExpand(false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, [filterState]);
|
|
36
71
|
|
|
37
72
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
73
|
+
* expand section incase of active local search
|
|
74
|
+
*/
|
|
40
75
|
(0, _react.useEffect)(() => {
|
|
41
76
|
if (autoComplete && autoComplete.length > 0 || upload && upload.length > 0) {
|
|
42
77
|
setExpand(true);
|
|
@@ -48,10 +83,13 @@ const FacetView = _ref => {
|
|
|
48
83
|
};
|
|
49
84
|
const onClearSection = () => {
|
|
50
85
|
setSortBy(null);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
86
|
+
const activeFilterItems = filterState[datafield];
|
|
87
|
+
if (activeFilterItems && Object.keys(activeFilterItems).length > 0) {
|
|
88
|
+
if (facet.type === _Types.InputTypes.SLIDER) {
|
|
89
|
+
onClearSliderSection(facet);
|
|
90
|
+
} else {
|
|
91
|
+
onClearFacetSection(facet);
|
|
92
|
+
}
|
|
55
93
|
}
|
|
56
94
|
};
|
|
57
95
|
/**
|
|
@@ -75,14 +113,25 @@ const FacetView = _ref => {
|
|
|
75
113
|
},
|
|
76
114
|
id: facet.section
|
|
77
115
|
}, CustomView ? /*#__PURE__*/_react.default.createElement(CustomView, {
|
|
116
|
+
clearFacetSectionValues: onClearSection,
|
|
117
|
+
hasSelections: selectedItems.length,
|
|
78
118
|
facet: facet,
|
|
79
119
|
facetClasses: isActiveFacet ? "activeFacet".concat(facet.section) : "inactiveFacet".concat(facet.section)
|
|
80
|
-
}) : /*#__PURE__*/_react.default.createElement(_AccordionSummaryView.default, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
120
|
+
}) : /*#__PURE__*/_react.default.createElement(_AccordionSummaryView.default, null, !enableClearSection ? /*#__PURE__*/_react.default.createElement("div", {
|
|
121
|
+
id: "filterGroup_ ".concat(facet.datafield, "\n ").concat(facet.label),
|
|
122
|
+
className: (0, _clsx.default)(classes.subSectionSummaryText, {
|
|
123
|
+
["activeFacet".concat(facet.section)]: isActiveFacet
|
|
124
|
+
})
|
|
125
|
+
}, facet.label) : /*#__PURE__*/_react.default.createElement("div", {
|
|
126
|
+
className: classes.subSectionSummaryTextWrapper
|
|
127
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
81
128
|
id: "filterGroup_ ".concat(facet.datafield, "\n ").concat(facet.label),
|
|
82
129
|
className: (0, _clsx.default)(classes.subSectionSummaryText, {
|
|
83
130
|
["activeFacet".concat(facet.section)]: isActiveFacet
|
|
84
131
|
})
|
|
85
|
-
}, facet.label)
|
|
132
|
+
}, facet.label), selectedItems.length ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
133
|
+
onClick: onClearSection
|
|
134
|
+
}, /*#__PURE__*/_react.default.createElement(_Refresh.default, null)) : null)), (facet.type === _Types.InputTypes.SLIDER || facetValues.length === 0) && /*#__PURE__*/_react.default.createElement("div", {
|
|
86
135
|
className: classes.NonSortGroup
|
|
87
136
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
88
137
|
className: classes.NonSortGroupItem
|
|
@@ -114,10 +163,10 @@ const FacetView = _ref => {
|
|
|
114
163
|
onClick: () => {
|
|
115
164
|
onSortFacet(_Sort.sortType.NUMERIC);
|
|
116
165
|
}
|
|
117
|
-
}, "Sort by count"))), /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
166
|
+
}, "Sort by count"))), expand && /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
118
167
|
facet: facet,
|
|
119
168
|
sortBy: sortBy
|
|
120
|
-
})), !expand && type === _Types.InputTypes.CHECKBOX && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
|
|
169
|
+
})), !expand && type === _Types.InputTypes.CHECKBOX && selectedItems.length > 0 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.List, {
|
|
121
170
|
id: "filter_Items"
|
|
122
171
|
}, /*#__PURE__*/_react.default.createElement(_FilterItems.default, {
|
|
123
172
|
facet: displayFacet
|
|
@@ -14,11 +14,13 @@ const mapStateToProps = state => {
|
|
|
14
14
|
var _state$localFind, _state$localFind2;
|
|
15
15
|
return {
|
|
16
16
|
filterState: state.statusReducer.filterState,
|
|
17
|
+
currentActionType: state.statusReducer.currentActionType,
|
|
17
18
|
autoComplete: (state === null || state === void 0 ? void 0 : (_state$localFind = state.localFind) === null || _state$localFind === void 0 ? void 0 : _state$localFind.autocomplete) || [],
|
|
18
19
|
upload: (state === null || state === void 0 ? void 0 : (_state$localFind2 = state.localFind) === null || _state$localFind2 === void 0 ? void 0 : _state$localFind2.upload) || []
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
22
|
const mapDispatchToProps = dispatch => ({
|
|
23
|
+
onToggle: facet => dispatch((0, _Actions.toggleCheckBox)(facet)),
|
|
22
24
|
onClearFacetSection: facet => {
|
|
23
25
|
dispatch((0, _Actions.clearFacetSection)(facet));
|
|
24
26
|
},
|
|
@@ -10,6 +10,7 @@ var _core = require("@material-ui/core");
|
|
|
10
10
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
11
|
var _icons = require("@material-ui/icons");
|
|
12
12
|
var _CheckboxStyle = _interopRequireDefault(require("./CheckboxStyle"));
|
|
13
|
+
var _ActionTypes = require("../../../store/actions/ActionTypes");
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
/* eslint-disable no-unused-vars */
|
|
15
16
|
/* eslint-disable no-unused-vars */
|
|
@@ -18,8 +19,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
18
19
|
/* eslint-disable object-curly-newline */
|
|
19
20
|
/* eslint-disable object-shorthand */
|
|
20
21
|
/* eslint-disable react/jsx-one-expression-per-line */
|
|
22
|
+
/* eslint-disable no-useless-escape */
|
|
21
23
|
|
|
22
|
-
const alignment = 'flex-start';
|
|
23
24
|
const CheckBoxView = _ref => {
|
|
24
25
|
let {
|
|
25
26
|
classes,
|
|
@@ -29,21 +30,28 @@ const CheckBoxView = _ref => {
|
|
|
29
30
|
facet
|
|
30
31
|
} = _ref;
|
|
31
32
|
const {
|
|
32
|
-
name,
|
|
33
|
-
subjects,
|
|
34
33
|
isChecked = false,
|
|
35
34
|
index,
|
|
36
35
|
section,
|
|
37
|
-
tooltip
|
|
38
|
-
label
|
|
36
|
+
tooltip
|
|
39
37
|
} = checkboxItem;
|
|
38
|
+
const {
|
|
39
|
+
field = 'group',
|
|
40
|
+
count = 'subjects',
|
|
41
|
+
customCount = text => "(".concat(text, ")")
|
|
42
|
+
} = facet;
|
|
40
43
|
const indexType = index % 2 === 0 ? 'Even' : 'Odd';
|
|
41
|
-
const checkedSection = "".concat(section).toLowerCase().replace(
|
|
44
|
+
const checkedSection = "".concat(section).toLowerCase().replace(/\ /g, '_');
|
|
45
|
+
const name = checkboxItem[field] || 'N/A';
|
|
42
46
|
const handleToggle = () => {
|
|
43
47
|
const toggleCheckBoxItem = {
|
|
44
48
|
name: name,
|
|
45
49
|
datafield: datafield,
|
|
46
|
-
isChecked: !isChecked
|
|
50
|
+
isChecked: !isChecked,
|
|
51
|
+
actionType: {
|
|
52
|
+
[datafield]: _ActionTypes.sideBarActionTypes.FACET_VALUE_CHANGED,
|
|
53
|
+
isFacetOrigin: true
|
|
54
|
+
}
|
|
47
55
|
};
|
|
48
56
|
onToggle(toggleCheckBoxItem);
|
|
49
57
|
};
|
|
@@ -53,9 +61,7 @@ const CheckBoxView = _ref => {
|
|
|
53
61
|
["".concat(checkedSection, "NameUnChecked")]: !isChecked,
|
|
54
62
|
["".concat(checkedSection, "NameChecked")]: isChecked
|
|
55
63
|
})
|
|
56
|
-
},
|
|
57
|
-
className: classes.checkboxLabel
|
|
58
|
-
}, label) : /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
64
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
59
65
|
className: classes.checkboxName
|
|
60
66
|
}, name));
|
|
61
67
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.ListItem, {
|
|
@@ -74,7 +80,8 @@ const CheckBoxView = _ref => {
|
|
|
74
80
|
icon: /*#__PURE__*/_react.default.createElement(_icons.CheckBoxOutlineBlank, {
|
|
75
81
|
style: {
|
|
76
82
|
fontSize: 18
|
|
77
|
-
}
|
|
83
|
+
},
|
|
84
|
+
className: checkedSection
|
|
78
85
|
}),
|
|
79
86
|
onClick: handleToggle,
|
|
80
87
|
checked: isChecked,
|
|
@@ -94,12 +101,14 @@ const CheckBoxView = _ref => {
|
|
|
94
101
|
title: tooltip
|
|
95
102
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
96
103
|
className: datafield
|
|
97
|
-
},
|
|
104
|
+
}, name)) : /*#__PURE__*/_react.default.createElement(LabelComponent, null), /*#__PURE__*/_react.default.createElement(_core.ListItemText, {
|
|
105
|
+
className: "".concat(checkedSection, "_md_space")
|
|
106
|
+
}), /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
98
107
|
className: (0, _clsx.default)("".concat(checkedSection, "Subjects"), {
|
|
99
108
|
["".concat(checkedSection, "SubjectUnChecked")]: !isChecked,
|
|
100
109
|
["".concat(checkedSection, "SubjectChecked")]: isChecked
|
|
101
110
|
})
|
|
102
|
-
},
|
|
111
|
+
}, customCount(checkboxItem[count] || 0))), /*#__PURE__*/_react.default.createElement(_core.Divider, {
|
|
103
112
|
style: {
|
|
104
113
|
backgroundColor: isChecked ? '#FFFFFF' : '#b1b1b1',
|
|
105
114
|
margin: '0px',
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _core = require("@material-ui/core");
|
|
9
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
9
10
|
var _SliderStyle = _interopRequireDefault(require("./SliderStyle"));
|
|
10
11
|
var _Types = require("../Types");
|
|
11
12
|
var _InputMinMaxView = _interopRequireDefault(require("./InputMinMaxView"));
|
|
@@ -63,9 +64,9 @@ const SliderView = _ref => {
|
|
|
63
64
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
64
65
|
className: classes.sliderRoot
|
|
65
66
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
66
|
-
className: classes.minMaxInputs
|
|
67
|
+
className: (0, _clsx.default)(classes.minMaxInputs, 'minMaxInputs')
|
|
67
68
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
68
|
-
className: classes.minValue
|
|
69
|
+
className: (0, _clsx.default)(classes.minValue, 'min_input_box')
|
|
69
70
|
}, /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
70
71
|
className: classes.minInputLabel
|
|
71
72
|
}, "Min:"), /*#__PURE__*/_react.default.createElement(_InputMinMaxView.default, {
|
|
@@ -76,7 +77,7 @@ const SliderView = _ref => {
|
|
|
76
77
|
type: _Types.silderTypes.INPUT_MIN,
|
|
77
78
|
onInputChange: handleChangeCommittedSlider
|
|
78
79
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
-
className: classes.maxValue
|
|
80
|
+
className: (0, _clsx.default)(classes.maxValue, 'max_input_box')
|
|
80
81
|
}, /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
81
82
|
className: classes.maxInputLabel
|
|
82
83
|
}, "Max:"), /*#__PURE__*/_react.default.createElement(_InputMinMaxView.default, {
|
|
@@ -87,7 +88,7 @@ const SliderView = _ref => {
|
|
|
87
88
|
type: _Types.silderTypes.INPUT_MAX,
|
|
88
89
|
onInputChange: handleChangeCommittedSlider
|
|
89
90
|
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
-
className: classes.slider
|
|
91
|
+
className: (0, _clsx.default)(classes.slider, 'slider')
|
|
91
92
|
}, /*#__PURE__*/_react.default.createElement(_core.Slider, {
|
|
92
93
|
disableSwap: true,
|
|
93
94
|
getAriaValueText: valuetext,
|
|
@@ -11,6 +11,7 @@ var _AccordionSummaryStyle = _interopRequireDefault(require("./AccordionSummaryS
|
|
|
11
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
12
|
const Summary = (0, _core.withStyles)({
|
|
13
13
|
root: {
|
|
14
|
+
width: '307px',
|
|
14
15
|
marginBottom: -1,
|
|
15
16
|
minHeight: 48,
|
|
16
17
|
paddingLeft: 14,
|
package/dist/index.js
CHANGED
|
@@ -81,6 +81,12 @@ Object.defineProperty(exports, "onToggleStateUpdate", {
|
|
|
81
81
|
return _SideBarReducer.onToggleStateUpdate;
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
|
+
Object.defineProperty(exports, "sideBarActionTypes", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function get() {
|
|
87
|
+
return _ActionTypes.sideBarActionTypes;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
84
90
|
Object.defineProperty(exports, "sideBarReducerGenerator", {
|
|
85
91
|
enumerable: true,
|
|
86
92
|
get: function get() {
|
|
@@ -129,6 +135,7 @@ var _filter = require("./utils/filter");
|
|
|
129
135
|
var _Types = require("./components/inputs/Types");
|
|
130
136
|
var _SideBarReducer = require("./store/reducers/SideBarReducer");
|
|
131
137
|
var _Actions = require("./store/actions/Actions");
|
|
138
|
+
var _ActionTypes = require("./store/actions/ActionTypes");
|
|
132
139
|
var _component = require("./generator/component");
|
|
133
140
|
var _ReduxClearAllBtn = _interopRequireDefault(require("./components/reset/ReduxClearAllBtn"));
|
|
134
141
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|