@blaze-cms/react-page-builder 0.113.1 → 0.114.0-alpha.3
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/CHANGELOG.md +68 -0
- package/README.md +5 -8
- package/lib/components/Card/CardRender.js +61 -17
- package/lib/components/Card/CardRender.js.map +1 -1
- package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib/components/List/ListBuilder.js +11 -6
- package/lib/components/List/ListBuilder.js.map +1 -1
- package/lib/components/List/ListFactory.js +20 -7
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/helpers/get-sort-props.js +46 -0
- package/lib/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib/components/List/helpers/index.js +8 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +60 -22
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib/components/SearchFilter/components/Range.js +7 -3
- package/lib/components/SearchFilter/components/Range.js.map +1 -1
- package/lib/components/SearchFilter/components/Select.js +5 -2
- package/lib/components/SearchFilter/components/Select.js.map +1 -1
- package/lib/components/SearchFilter/constants.js +13 -1
- package/lib/components/SearchFilter/constants.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-query.js +6 -5
- package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-range-value.js +6 -4
- package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js +29 -0
- package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -0
- package/lib/components/SearchFilter/helpers/index.js +8 -0
- package/lib/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib/helpers/get-generic-render-variables.js +32 -22
- package/lib/helpers/get-generic-render-variables.js.map +1 -1
- package/lib-es/components/Card/CardRender.js +32 -5
- package/lib-es/components/Card/CardRender.js.map +1 -1
- package/lib-es/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib-es/components/List/ListBuilder.js +11 -6
- package/lib-es/components/List/ListBuilder.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +20 -8
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/helpers/get-sort-props.js +26 -0
- package/lib-es/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +1 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +54 -23
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Range.js +7 -3
- package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Select.js +5 -2
- package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
- package/lib-es/components/SearchFilter/constants.js +12 -1
- package/lib-es/components/SearchFilter/constants.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-query.js +5 -4
- package/lib-es/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-responsive-filter-classnames.js +20 -0
- package/lib-es/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/index.js +2 -1
- package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib-es/helpers/get-generic-render-variables.js +22 -15
- package/lib-es/helpers/get-generic-render-variables.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Card/CardRender.js +24 -6
- package/src/components/Card/helpers/filter-query-setup.js +1 -0
- package/src/components/List/ListBuilder.js +11 -6
- package/src/components/List/ListFactory.js +18 -8
- package/src/components/List/helpers/get-sort-props.js +17 -0
- package/src/components/List/helpers/index.js +1 -0
- package/src/components/SearchFilter/SearchFilter/FiltersList.js +15 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +78 -27
- package/src/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/src/components/SearchFilter/components/Checkbox.js +4 -2
- package/src/components/SearchFilter/components/Range.js +7 -3
- package/src/components/SearchFilter/components/Select.js +4 -2
- package/src/components/SearchFilter/constants.js +14 -1
- package/src/components/SearchFilter/helpers/build-query.js +5 -4
- package/src/components/SearchFilter/helpers/get-range-value.js +3 -1
- package/src/components/SearchFilter/helpers/get-responsive-filter-classnames.js +22 -0
- package/src/components/SearchFilter/helpers/index.js +2 -0
- package/src/components/SearchFilter/helpers/is-device-desktop.js +2 -1
- package/src/helpers/get-generic-render-variables.js +22 -12
- package/tests/unit/src/components/List/helpers/get-sort-props.test.js +58 -0
- package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +29 -3
- package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/SearchFilter.test.js.snap +304 -6
- package/tests/unit/src/helpers/build-raw-query.test.js +2 -1
- package/tests/unit/src/helpers/get-generic-render-variables.test.js +5 -11
- package/lib/helpers/check-sort-by.js +0 -16
- package/lib/helpers/check-sort-by.js.map +0 -1
- package/lib-es/helpers/check-sort-by.js +0 -4
- package/lib-es/helpers/check-sort-by.js.map +0 -1
- package/src/helpers/check-sort-by.js +0 -4
|
@@ -37,6 +37,12 @@ Object.defineProperty(exports, "getItemsPerPageToUse", {
|
|
|
37
37
|
return _getItemsPerPageToUse["default"];
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
+
Object.defineProperty(exports, "getSortProps", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function get() {
|
|
43
|
+
return _getSortProps["default"];
|
|
44
|
+
}
|
|
45
|
+
});
|
|
40
46
|
Object.defineProperty(exports, "sortAggs", {
|
|
41
47
|
enumerable: true,
|
|
42
48
|
get: function get() {
|
|
@@ -55,4 +61,6 @@ var _buildAzUrl = _interopRequireDefault(require("./build-az-url"));
|
|
|
55
61
|
var _sortAggs = _interopRequireDefault(require("./sort-aggs"));
|
|
56
62
|
|
|
57
63
|
var _getItemsPerPageToUse = _interopRequireDefault(require("./get-items-per-page-to-use"));
|
|
64
|
+
|
|
65
|
+
var _getSortProps = _interopRequireDefault(require("./get-sort-props"));
|
|
58
66
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/List/helpers/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/List/helpers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export { default as buildPaginationItems } from './build-pagination-items';\nexport { default as getAzQueryFilter } from './get-az-query-filter';\nexport { default as buildAzAggregations } from './build-az-aggregations';\nexport { default as buildAzUrl } from './build-az-url';\nexport { default as sortAggs } from './sort-aggs';\nexport { default as getItemsPerPageToUse } from './get-items-per-page-to-use';\nexport { default as getSortProps } from './get-sort-props';\n"],"file":"index.js"}
|
|
@@ -49,7 +49,8 @@ var FiltersList = function FiltersList(_ref) {
|
|
|
49
49
|
hasUrl = _ref.hasUrl,
|
|
50
50
|
entity = _ref.entity,
|
|
51
51
|
filterValues = _ref.filterValues,
|
|
52
|
-
updateFilterValues = _ref.updateFilterValues
|
|
52
|
+
updateFilterValues = _ref.updateFilterValues,
|
|
53
|
+
shouldSearch = _ref.shouldSearch;
|
|
53
54
|
|
|
54
55
|
var _useContext = (0, _react.useContext)(_nextjsComponents.MainContext),
|
|
55
56
|
itemId = _useContext.itemId;
|
|
@@ -92,7 +93,8 @@ var FiltersList = function FiltersList(_ref) {
|
|
|
92
93
|
elementTitle: elementTitle,
|
|
93
94
|
hasUrl: hasUrl,
|
|
94
95
|
filterValues: filterValues,
|
|
95
|
-
updateFilterValues: updateFilterValues
|
|
96
|
+
updateFilterValues: updateFilterValues,
|
|
97
|
+
shouldSearch: shouldSearch
|
|
96
98
|
}));
|
|
97
99
|
|
|
98
100
|
case _constants.SELECT:
|
|
@@ -106,7 +108,8 @@ var FiltersList = function FiltersList(_ref) {
|
|
|
106
108
|
elementTitle: elementTitle,
|
|
107
109
|
hasUrl: hasUrl,
|
|
108
110
|
filterValues: filterValues,
|
|
109
|
-
updateFilterValues: updateFilterValues
|
|
111
|
+
updateFilterValues: updateFilterValues,
|
|
112
|
+
shouldSearch: shouldSearch
|
|
110
113
|
}));
|
|
111
114
|
|
|
112
115
|
case _constants.RANGE:
|
|
@@ -121,7 +124,8 @@ var FiltersList = function FiltersList(_ref) {
|
|
|
121
124
|
elementTitle: elementTitle,
|
|
122
125
|
entity: entity,
|
|
123
126
|
filterValues: filterValues,
|
|
124
|
-
updateFilterValues: updateFilterValues
|
|
127
|
+
updateFilterValues: updateFilterValues,
|
|
128
|
+
shouldSearch: shouldSearch
|
|
125
129
|
}));
|
|
126
130
|
|
|
127
131
|
default:
|
|
@@ -136,9 +140,11 @@ FiltersList.propTypes = {
|
|
|
136
140
|
filterValues: _propTypes["default"].object.isRequired,
|
|
137
141
|
updateFilterValues: _propTypes["default"].func.isRequired,
|
|
138
142
|
data: _propTypes["default"].object,
|
|
139
|
-
filters: _propTypes["default"].array
|
|
143
|
+
filters: _propTypes["default"].array,
|
|
144
|
+
shouldSearch: _propTypes["default"].bool
|
|
140
145
|
};
|
|
141
146
|
FiltersList.defaultProps = {
|
|
147
|
+
shouldSearch: false,
|
|
142
148
|
data: {},
|
|
143
149
|
filters: []
|
|
144
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/FiltersList.js"],"names":["FiltersList","data","filters","hasUrl","entity","filterValues","updateFilterValues","MainContext","itemId","map","index","type","label","propsToDisplay","rangeInterval","elementTitle","length","dynamicKey","join","isDataAvailable","Object","keys","dataAggregations","areAggregationsAvailable","results","shouldDisplayFilter","buckets","TEXT_SEARCH","SEARCH_TERM","CHECKBOX","SELECT","RANGE","propTypes","PropTypes","bool","isRequired","string","object","func","array","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,WAAW,GAAG,SAAdA,WAAc,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/FiltersList.js"],"names":["FiltersList","data","filters","hasUrl","entity","filterValues","updateFilterValues","shouldSearch","MainContext","itemId","map","index","type","label","propsToDisplay","rangeInterval","elementTitle","length","dynamicKey","join","isDataAvailable","Object","keys","dataAggregations","areAggregationsAvailable","results","shouldDisplayFilter","buckets","TEXT_SEARCH","SEARCH_TERM","CHECKBOX","SELECT","RANGE","propTypes","PropTypes","bool","isRequired","string","object","func","array","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { TextSearch, Checkbox, SelectFilter, Range } from '../components';\nimport { CHECKBOX, SELECT, TEXT_SEARCH, RANGE, SEARCH_TERM } from '../constants';\n\nconst FiltersList = ({\n data,\n filters,\n hasUrl,\n entity,\n filterValues,\n updateFilterValues,\n shouldSearch\n}) => {\n const { itemId } = useContext(MainContext);\n\n return filters.map(({ type, label, propsToDisplay, rangeInterval, elementTitle }, index) => {\n if (!propsToDisplay && !propsToDisplay.length) return null;\n\n const dynamicKey = [itemId, index].join('-');\n const isDataAvailable = !!data && Object.keys(data).length;\n const dataAggregations = isDataAvailable ? data : null;\n const areAggregationsAvailable = isDataAvailable && !!dataAggregations;\n const results = areAggregationsAvailable && dataAggregations[propsToDisplay[0]];\n const shouldDisplayFilter = results && results.buckets && results.buckets.length;\n\n switch (type) {\n case TEXT_SEARCH:\n return (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--search\">\n <TextSearch\n label={label}\n elementTitle={elementTitle}\n searchValue={filterValues[SEARCH_TERM]}\n updateFilterValues={updateFilterValues}\n filterValues={filterValues}\n />\n </div>\n );\n case CHECKBOX:\n return (\n !!shouldDisplayFilter && (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--checkboxes\">\n <Checkbox\n data={data}\n prop={propsToDisplay[0]}\n label={label}\n elementTitle={elementTitle}\n hasUrl={hasUrl}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n case SELECT:\n return (\n !!shouldDisplayFilter && (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--selects\">\n <SelectFilter\n data={data}\n prop={propsToDisplay[0]}\n label={label}\n elementTitle={elementTitle}\n hasUrl={hasUrl}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n case RANGE:\n return (\n !!areAggregationsAvailable && (\n <div key={dynamicKey} className=\"range-slider__wrapper\">\n <Range\n dataAggregations={dataAggregations}\n propsToDisplay={propsToDisplay}\n rangeInterval={rangeInterval}\n label={label}\n elementTitle={elementTitle}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n default:\n return null;\n }\n });\n};\n\nFiltersList.propTypes = {\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n data: PropTypes.object,\n filters: PropTypes.array,\n shouldSearch: PropTypes.bool\n};\n\nFiltersList.defaultProps = {\n shouldSearch: false,\n data: {},\n filters: []\n};\n\nexport default FiltersList;\n"],"file":"FiltersList.js"}
|
|
@@ -112,7 +112,8 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
112
112
|
displaySearchFilter = _ref.displaySearchFilter,
|
|
113
113
|
setDisplaySearchFilter = _ref.setDisplaySearchFilter,
|
|
114
114
|
initialFilterValues = _ref.initialFilterValues,
|
|
115
|
-
|
|
115
|
+
groupAfterDesktop = _ref.groupAfterDesktop,
|
|
116
|
+
groupAfterMobile = _ref.groupAfterMobile;
|
|
116
117
|
|
|
117
118
|
var _useState = (0, _react.useState)(true),
|
|
118
119
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -126,8 +127,13 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
126
127
|
|
|
127
128
|
var _useState5 = (0, _react.useState)(true),
|
|
128
129
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
129
|
-
|
|
130
|
-
|
|
130
|
+
moreFiltersMobileCollapsed = _useState6[0],
|
|
131
|
+
setMoreFiltersMobileCollapsed = _useState6[1];
|
|
132
|
+
|
|
133
|
+
var _useState7 = (0, _react.useState)(true),
|
|
134
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
135
|
+
moreFiltersDesktopCollapsed = _useState8[0],
|
|
136
|
+
setMoreFiltersDesktopCollapsed = _useState8[1];
|
|
131
137
|
|
|
132
138
|
var _useReducer = (0, _react.useReducer)(reducer, initialFilterValues),
|
|
133
139
|
_useReducer2 = (0, _slicedToArray2["default"])(_useReducer, 2),
|
|
@@ -175,12 +181,13 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
175
181
|
var formClass = (0, _classnames["default"])({
|
|
176
182
|
'filter__form filter__form--mobile': isMobileFormDisplayed
|
|
177
183
|
});
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
|
|
185
|
+
var _getResponsiveFilterC = (0, _helpers.getResponsiveFilterClassnames)(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed),
|
|
186
|
+
moreFiltersMobileWrapperClass = _getResponsiveFilterC.moreFiltersMobileWrapperClass,
|
|
187
|
+
moreFiltersMobileTogglerClass = _getResponsiveFilterC.moreFiltersMobileTogglerClass,
|
|
188
|
+
moreFiltersDesktopWrapperClass = _getResponsiveFilterC.moreFiltersDesktopWrapperClass,
|
|
189
|
+
moreFiltersDesktopTogglerClass = _getResponsiveFilterC.moreFiltersDesktopTogglerClass;
|
|
190
|
+
|
|
184
191
|
var formId = "filter-".concat(name, "-form");
|
|
185
192
|
|
|
186
193
|
var handleReset = function handleReset() {
|
|
@@ -191,14 +198,16 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
191
198
|
});
|
|
192
199
|
};
|
|
193
200
|
|
|
194
|
-
var updateFilterValues = function updateFilterValues(newValues,
|
|
201
|
+
var updateFilterValues = function updateFilterValues(newValues, shouldSubmit) {
|
|
195
202
|
dispatch({
|
|
196
203
|
newValues: newValues,
|
|
197
|
-
shouldSearch:
|
|
204
|
+
shouldSearch: shouldSubmit,
|
|
198
205
|
type: 'update'
|
|
199
206
|
});
|
|
200
207
|
};
|
|
201
208
|
|
|
209
|
+
var shouldGroup = !!(groupAfterDesktop || groupAfterMobile);
|
|
210
|
+
var shouldSearch = !hasUrl;
|
|
202
211
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/_react["default"].createElement("form", {
|
|
203
212
|
ref: searchFilterRef,
|
|
204
213
|
className: formClass,
|
|
@@ -219,39 +228,67 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
219
228
|
handleReset: handleReset
|
|
220
229
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
230
|
className: "filter__wrapper filter__wrapper--search-refine"
|
|
222
|
-
}, !
|
|
231
|
+
}, !shouldGroup && /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
232
|
+
shouldSearch: shouldSearch,
|
|
223
233
|
data: data,
|
|
224
234
|
filters: filters,
|
|
225
235
|
hasUrl: hasUrl,
|
|
226
236
|
entity: entity,
|
|
227
237
|
filterValues: filterValues,
|
|
228
238
|
updateFilterValues: updateFilterValues
|
|
229
|
-
}),
|
|
239
|
+
}), shouldGroup && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
240
|
+
shouldSearch: shouldSearch,
|
|
230
241
|
data: data,
|
|
231
|
-
filters: filters.slice(0,
|
|
242
|
+
filters: filters.slice(0, groupAfterMobile),
|
|
232
243
|
hasUrl: hasUrl,
|
|
233
244
|
entity: entity,
|
|
234
245
|
filterValues: filterValues,
|
|
235
246
|
updateFilterValues: updateFilterValues
|
|
236
|
-
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
237
|
-
className:
|
|
247
|
+
}), !!groupAfterMobile && /*#__PURE__*/_react["default"].createElement("button", {
|
|
248
|
+
className: moreFiltersMobileTogglerClass,
|
|
238
249
|
type: "button",
|
|
239
250
|
onClick: function onClick() {
|
|
240
|
-
return
|
|
251
|
+
return setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed);
|
|
252
|
+
}
|
|
253
|
+
}, "Filters"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
254
|
+
className: moreFiltersMobileWrapperClass
|
|
255
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
256
|
+
className: _constants.MORE_FILTERS_CLASSES.MOBILE_CONTENT
|
|
257
|
+
}, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
258
|
+
shouldSearch: shouldSearch && (0, _helpers.isDeviceDesktop)(),
|
|
259
|
+
data: data,
|
|
260
|
+
filters: filters.slice(groupAfterMobile, groupAfterDesktop ? groupAfterDesktop - 1 : 0),
|
|
261
|
+
hasUrl: hasUrl,
|
|
262
|
+
entity: entity,
|
|
263
|
+
filterValues: filterValues,
|
|
264
|
+
updateFilterValues: updateFilterValues
|
|
265
|
+
}), !!groupAfterDesktop && /*#__PURE__*/_react["default"].createElement("button", {
|
|
266
|
+
className: moreFiltersDesktopTogglerClass,
|
|
267
|
+
type: "button",
|
|
268
|
+
onClick: function onClick() {
|
|
269
|
+
return setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed);
|
|
241
270
|
}
|
|
242
271
|
}, "More filters"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
243
|
-
className:
|
|
272
|
+
className: moreFiltersDesktopWrapperClass
|
|
244
273
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
245
|
-
className:
|
|
274
|
+
className: _constants.MORE_FILTERS_CLASSES.DESKTOP_CONTENT
|
|
246
275
|
}, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
276
|
+
shouldSearch: false,
|
|
247
277
|
data: data,
|
|
248
|
-
filters: filters.slice(
|
|
278
|
+
filters: filters.slice(groupAfterDesktop),
|
|
249
279
|
hasUrl: hasUrl,
|
|
250
280
|
entity: entity,
|
|
251
281
|
filterValues: filterValues,
|
|
252
282
|
updateFilterValues: updateFilterValues
|
|
253
283
|
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
254
|
-
className:
|
|
284
|
+
className: _constants.MORE_FILTERS_CLASSES.DESKTOP_BUTTONS
|
|
285
|
+
}, /*#__PURE__*/_react["default"].createElement(_ResetDesktopForm["default"], {
|
|
286
|
+
handleReset: handleReset
|
|
287
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
288
|
+
className: "button button--full-width",
|
|
289
|
+
type: "submit"
|
|
290
|
+
}, _constants.SEARCH)))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
291
|
+
className: _constants.MORE_FILTERS_CLASSES.MOBILE_BUTTONS
|
|
255
292
|
}, /*#__PURE__*/_react["default"].createElement(_ResetDesktopForm["default"], {
|
|
256
293
|
handleReset: handleReset
|
|
257
294
|
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
@@ -285,7 +322,8 @@ SearchFilter.propTypes = {
|
|
|
285
322
|
displaySearchFilter: _propTypes["default"].bool.isRequired,
|
|
286
323
|
setDisplaySearchFilter: _propTypes["default"].func.isRequired,
|
|
287
324
|
isCollapsedOnResponsive: _propTypes["default"].bool.isRequired,
|
|
288
|
-
|
|
325
|
+
groupAfterDesktop: _propTypes["default"].number.isRequired,
|
|
326
|
+
groupAfterMobile: _propTypes["default"].number.isRequired,
|
|
289
327
|
initialFilterValues: _propTypes["default"].object.isRequired
|
|
290
328
|
};
|
|
291
329
|
var _default = SearchFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","initialFilterValues","groupAfter","isDesktop","setIsDesktop","pageWidth","setPageWidth","moreFiltersCollapsed","setMoreFiltersCollapsed","filterValues","dispatch","handleSubmit","newQuery","window","innerWidth","handleResize","target","addEventListener","removeEventListener","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersWrapperClass","moreFiltersTogglerClass","formId","handleReset","updateFilterValues","e","preventDefault","slice","SEARCH","REFINE","propTypes","PropTypes","object","isRequired","array","bool","string","func","number"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport { isDeviceDesktop, buildQuery, getInitialFilterValues } from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE } from '../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n initialFilterValues,\n groupAfter\n}) => {\n const [isDesktop, setIsDesktop] = useState(true);\n const [pageWidth, setPageWidth] = useState(null);\n const [moreFiltersCollapsed, setMoreFiltersCollapsed] = useState(true);\n const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);\n\n const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\n\n useEffect(\n () => {\n if (window && !pageWidth) {\n setPageWidth(window.innerWidth);\n setIsDesktop(isDeviceDesktop());\n }\n\n const handleResize = ({ target: { innerWidth } }) => {\n setIsDesktop(isDeviceDesktop());\n setPageWidth(innerWidth);\n if (isDesktop) setDisplaySearchFilter(false);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n },\n [isDesktop, pageWidth, setDisplaySearchFilter]\n );\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n dispatch({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit]\n );\n\n let isDesktopFormDisplayed = true;\n let isMobileFormDisplayed = false;\n\n if (!isDesktop && isCollapsedOnResponsive) {\n isMobileFormDisplayed = displaySearchFilter;\n isDesktopFormDisplayed = false;\n }\n\n const formClass = classnames({\n 'filter__form filter__form--mobile': isMobileFormDisplayed\n });\n\n const moreFiltersWrapperClass = classnames('filter__more-filters-wrapper', {\n 'filter__more-filters-wrapper--open': !moreFiltersCollapsed\n });\n\n const moreFiltersTogglerClass = classnames('filter__more-filters-toggler', {\n 'filter__more-filters-toggler--open': !moreFiltersCollapsed\n });\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(data, filters, {});\n\n dispatch({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSearch) => {\n dispatch({ newValues, shouldSearch, type: 'update' });\n };\n\n return (\n <>\n {isDesktopFormDisplayed || isMobileFormDisplayed ? (\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n const newQuery = buildQuery(filterValues, filters);\n handleSearch(newQuery);\n }}>\n {isMobileFormDisplayed && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n {isDesktopFormDisplayed && <ResetDesktopForm handleReset={handleReset} />}\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!groupAfter && (\n <FiltersList\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {!!groupAfter && (\n <>\n <FiltersList\n data={data}\n filters={filters.slice(0, groupAfter)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n <button\n className={moreFiltersTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersCollapsed(!moreFiltersCollapsed)}>\n More filters\n </button>\n\n <div className={moreFiltersWrapperClass}>\n <div className=\"filter__more-filters-content\">\n <FiltersList\n data={data}\n filters={filters.slice(groupAfter)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className=\"filter__more-filters-buttons\">\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {isDesktopFormDisplayed && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {isMobileFormDisplayed && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n ) : (\n <>\n {isCollapsedOnResponsive && (\n <div\n className=\"filter__refine filter__refine--mobile-close\"\n data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfter: PropTypes.number.isRequired,\n initialFilterValues: PropTypes.object.isRequired\n};\n\nexport default SearchFilter;\n"],"file":"SearchFilter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","initialFilterValues","groupAfterDesktop","groupAfterMobile","isDesktop","setIsDesktop","pageWidth","setPageWidth","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","filterValues","dispatch","handleSubmit","newQuery","window","innerWidth","handleResize","target","addEventListener","removeEventListener","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersMobileWrapperClass","moreFiltersMobileTogglerClass","moreFiltersDesktopWrapperClass","moreFiltersDesktopTogglerClass","formId","handleReset","updateFilterValues","shouldSubmit","shouldGroup","e","preventDefault","slice","MORE_FILTERS_CLASSES","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","SEARCH","MOBILE_BUTTONS","REFINE","propTypes","PropTypes","object","isRequired","array","bool","string","func","number"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAACC,KAAD,EAAQC,MAAR,EAAmB;AACjC,MAAQC,SAAR,GAAiDD,MAAjD,CAAQC,SAAR;AAAA,MAAmBC,IAAnB,GAAiDF,MAAjD,CAAmBE,IAAnB;AAAA,6BAAiDF,MAAjD,CAAyBG,YAAzB;AAAA,MAAyBA,YAAzB,qCAAwC,IAAxC;;AAEA,UAAQD,IAAR;AACE,SAAK,QAAL;AACE,2DAAYH,KAAZ,GAAsBE,SAAtB;AAAiCE,QAAAA,YAAY,EAAZA;AAAjC;;AACF,SAAK,aAAL;AACE,6CAAYJ,KAAZ;AAAmBI,QAAAA,YAAY,EAAE;AAAjC;;AACF,SAAK,OAAL;AACE,6CAAYF,SAAZ;AAAuBE,QAAAA,YAAY,EAAZA;AAAvB;;AACF;AACE,YAAM,IAAIC,KAAJ,EAAN;AARJ;AAUD,CAbD;;AAeA,IAAMC,YAAY,GAAG,SAAfA,YAAe,OAcf;AAAA,MAbJC,eAaI,QAbJA,eAaI;AAAA,MAZJC,IAYI,QAZJA,IAYI;AAAA,MAXJC,OAWI,QAXJA,OAWI;AAAA,MAVJC,MAUI,QAVJA,MAUI;AAAA,MATJC,MASI,QATJA,MASI;AAAA,MARJC,YAQI,QARJA,YAQI;AAAA,MAPJC,IAOI,QAPJA,IAOI;AAAA,MANJC,uBAMI,QANJA,uBAMI;AAAA,MALJC,mBAKI,QALJA,mBAKI;AAAA,MAJJC,sBAII,QAJJA,sBAII;AAAA,MAHJC,mBAGI,QAHJA,mBAGI;AAAA,MAFJC,iBAEI,QAFJA,iBAEI;AAAA,MADJC,gBACI,QADJA,gBACI;;AACJ,kBAAkC,qBAAS,IAAT,CAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AACA,mBAAkC,qBAAS,IAAT,CAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AACA,mBAAoE,qBAAS,IAAT,CAApE;AAAA;AAAA,MAAOC,0BAAP;AAAA,MAAmCC,6BAAnC;;AACA,mBAAsE,qBAAS,IAAT,CAAtE;AAAA;AAAA,MAAOC,2BAAP;AAAA,MAAoCC,8BAApC;;AACA,oBAAiC,uBAAW5B,OAAX,EAAoBkB,mBAApB,CAAjC;AAAA;AAAA,MAAOW,YAAP;AAAA,MAAqBC,QAArB;;AAEA,MAAMC,YAAY,GAAG,wBAAS,UAAA5B,SAAS,EAAI;AACzC,QAAM6B,QAAQ,GAAG,yBAAW7B,SAAX,EAAsBO,OAAtB,CAAjB;AACAG,IAAAA,YAAY,CAACmB,QAAD,CAAZ;AACD,GAHoB,EAGlB,GAHkB,CAArB;AAKA,wBACE,YAAM;AACJ,QAAIC,MAAM,IAAI,CAACV,SAAf,EAA0B;AACxBC,MAAAA,YAAY,CAACS,MAAM,CAACC,UAAR,CAAZ;AACAZ,MAAAA,YAAY,CAAC,+BAAD,CAAZ;AACD;;AAED,QAAMa,YAAY,GAAG,SAAfA,YAAe,QAAgC;AAAA,UAAnBD,UAAmB,SAA7BE,MAA6B,CAAnBF,UAAmB;AACnDZ,MAAAA,YAAY,CAAC,+BAAD,CAAZ;AACAE,MAAAA,YAAY,CAACU,UAAD,CAAZ;AACA,UAAIb,SAAJ,EAAeJ,sBAAsB,CAAC,KAAD,CAAtB;AAChB,KAJD;;AAMAgB,IAAAA,MAAM,CAACI,gBAAP,CAAwB,QAAxB,EAAkCF,YAAlC;AACA,WAAO,YAAM;AACXF,MAAAA,MAAM,CAACK,mBAAP,CAA2B,QAA3B,EAAqCH,YAArC;AACD,KAFD;AAGD,GAjBH,EAkBE,CAACd,SAAD,EAAYE,SAAZ,EAAuBN,sBAAvB,CAlBF;AAqBA,wBACE,YAAM;AACJ,QAAIY,YAAY,CAACxB,YAAjB,EAA+B;AAC7B0B,MAAAA,YAAY,CAACF,YAAD,CAAZ;AACAC,MAAAA,QAAQ,CAAC;AAAE1B,QAAAA,IAAI,EAAE;AAAR,OAAD,CAAR;AACD;AACF,GANH,EAOE,CAACyB,YAAD,EAAeE,YAAf,CAPF;AAUA,MAAIQ,sBAAsB,GAAG,IAA7B;AACA,MAAIC,qBAAqB,GAAG,KAA5B;;AAEA,MAAI,CAACnB,SAAD,IAAcN,uBAAlB,EAA2C;AACzCyB,IAAAA,qBAAqB,GAAGxB,mBAAxB;AACAuB,IAAAA,sBAAsB,GAAG,KAAzB;AACD;;AAED,MAAME,SAAS,GAAG,4BAAW;AAC3B,yCAAqCD;AADV,GAAX,CAAlB;;AAIA,8BAKI,4CAA8Bb,2BAA9B,EAA2DF,0BAA3D,CALJ;AAAA,MACEiB,6BADF,yBACEA,6BADF;AAAA,MAEEC,6BAFF,yBAEEA,6BAFF;AAAA,MAGEC,8BAHF,yBAGEA,8BAHF;AAAA,MAIEC,8BAJF,yBAIEA,8BAJF;;AAOA,MAAMC,MAAM,oBAAahC,IAAb,UAAZ;;AAEA,MAAMiC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAM5C,SAAS,GAAG,qCAAuBM,IAAvB,EAA6BC,OAA7B,EAAsC,EAAtC,CAAlB;AAEAoB,IAAAA,QAAQ,CAAC;AAAE3B,MAAAA,SAAS,EAATA,SAAF;AAAaC,MAAAA,IAAI,EAAE;AAAnB,KAAD,CAAR;AACD,GAJD;;AAMA,MAAM4C,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC7C,SAAD,EAAY8C,YAAZ,EAA6B;AACtDnB,IAAAA,QAAQ,CAAC;AAAE3B,MAAAA,SAAS,EAATA,SAAF;AAAaE,MAAAA,YAAY,EAAE4C,YAA3B;AAAyC7C,MAAAA,IAAI,EAAE;AAA/C,KAAD,CAAR;AACD,GAFD;;AAIA,MAAM8C,WAAW,GAAG,CAAC,EAAE/B,iBAAiB,IAAIC,gBAAvB,CAArB;AACA,MAAMf,YAAY,GAAG,CAACM,MAAtB;AAEA,sBACE,kEACG4B,sBAAsB,IAAIC,qBAA1B,gBACC;AACE,IAAA,GAAG,EAAEhC,eADP;AAEE,IAAA,SAAS,EAAEiC,SAFb;AAGE,mBAAaK,MAHf;AAIE,IAAA,EAAE,EAAEA,MAJN;AAKE,IAAA,QAAQ,EAAE,kBAAAK,CAAC,EAAI;AACbA,MAAAA,CAAC,CAACC,cAAF;AACA,UAAMpB,QAAQ,GAAG,yBAAWH,YAAX,EAAyBnB,OAAzB,CAAjB;AACAG,MAAAA,YAAY,CAACmB,QAAD,CAAZ;AACD;AATH,KAUGQ,qBAAqB,iBACpB,gCAAC,2BAAD;AAAiB,IAAA,WAAW,EAAE;AAAA,aAAMvB,sBAAsB,CAAC,KAAD,CAA5B;AAAA;AAA9B,IAXJ,eAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGsB,sBAAsB,iBAAI,gCAAC,4BAAD;AAAkB,IAAA,WAAW,EAAEQ;AAA/B,IAD7B,eAGE;AAAK,IAAA,SAAS,EAAC;AAAf,KACG,CAACG,WAAD,iBACC,gCAAC,uBAAD;AACE,IAAA,YAAY,EAAE7C,YADhB;AAEE,IAAA,IAAI,EAAEI,IAFR;AAGE,IAAA,OAAO,EAAEC,OAHX;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,MAAM,EAAEC,MALV;AAME,IAAA,YAAY,EAAEiB,YANhB;AAOE,IAAA,kBAAkB,EAAEmB;AAPtB,IAFJ,EAaGE,WAAW,iBACV,+EACE,gCAAC,uBAAD;AACE,IAAA,YAAY,EAAE7C,YADhB;AAEE,IAAA,IAAI,EAAEI,IAFR;AAGE,IAAA,OAAO,EAAEC,OAAO,CAAC2C,KAAR,CAAc,CAAd,EAAiBjC,gBAAjB,CAHX;AAIE,IAAA,MAAM,EAAET,MAJV;AAKE,IAAA,MAAM,EAAEC,MALV;AAME,IAAA,YAAY,EAAEiB,YANhB;AAOE,IAAA,kBAAkB,EAAEmB;AAPtB,IADF,EAWG,CAAC,CAAC5B,gBAAF,iBACC;AACE,IAAA,SAAS,EAAEuB,6BADb;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,OAAO,EAAE;AAAA,aAAMjB,6BAA6B,CAAC,CAACD,0BAAF,CAAnC;AAAA;AAHX,eAZJ,eAoBE;AAAK,IAAA,SAAS,EAAEiB;AAAhB,kBACE;AAAK,IAAA,SAAS,EAAEY,gCAAqBC;AAArC,kBACE,gCAAC,uBAAD;AACE,IAAA,YAAY,EAAElD,YAAY,IAAI,+BADhC;AAEE,IAAA,IAAI,EAAEI,IAFR;AAGE,IAAA,OAAO,EAAEC,OAAO,CAAC2C,KAAR,CACPjC,gBADO,EAEPD,iBAAiB,GAAGA,iBAAiB,GAAG,CAAvB,GAA2B,CAFrC,CAHX;AAOE,IAAA,MAAM,EAAER,MAPV;AAQE,IAAA,MAAM,EAAEC,MARV;AASE,IAAA,YAAY,EAAEiB,YAThB;AAUE,IAAA,kBAAkB,EAAEmB;AAVtB,IADF,EAcG,CAAC,CAAC7B,iBAAF,iBACC;AACE,IAAA,SAAS,EAAE0B,8BADb;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,OAAO,EAAE;AAAA,aACPjB,8BAA8B,CAAC,CAACD,2BAAF,CADvB;AAAA;AAHX,oBAfJ,eAyBE;AAAK,IAAA,SAAS,EAAEiB;AAAhB,kBACE;AAAK,IAAA,SAAS,EAAEU,gCAAqBE;AAArC,kBACE,gCAAC,uBAAD;AACE,IAAA,YAAY,EAAE,KADhB;AAEE,IAAA,IAAI,EAAE/C,IAFR;AAGE,IAAA,OAAO,EAAEC,OAAO,CAAC2C,KAAR,CAAclC,iBAAd,CAHX;AAIE,IAAA,MAAM,EAAER,MAJV;AAKE,IAAA,MAAM,EAAEC,MALV;AAME,IAAA,YAAY,EAAEiB,YANhB;AAOE,IAAA,kBAAkB,EAAEmB;AAPtB,IADF,CADF,eAaE;AAAK,IAAA,SAAS,EAAEM,gCAAqBG;AAArC,kBACE,gCAAC,4BAAD;AAAkB,IAAA,WAAW,EAAEV;AAA/B,IADF,eAGE;AAAQ,IAAA,SAAS,EAAC,2BAAlB;AAA8C,IAAA,IAAI,EAAC;AAAnD,KACGW,iBADH,CAHF,CAbF,CAzBF,CADF,eAiDE;AAAK,IAAA,SAAS,EAAEJ,gCAAqBK;AAArC,kBACE,gCAAC,4BAAD;AAAkB,IAAA,WAAW,EAAEZ;AAA/B,IADF,eAGE;AAAQ,IAAA,SAAS,EAAC,2BAAlB;AAA8C,IAAA,IAAI,EAAC;AAAnD,KACGW,iBADH,CAHF,CAjDF,CApBF,CAdJ,eA8FE,2CA9FF,EAgGGnB,sBAAsB,iBACrB;AAAQ,IAAA,SAAS,EAAC,2BAAlB;AAA8C,IAAA,IAAI,EAAC;AAAnD,KACGmB,iBADH,CAjGJ,CAHF,CAdF,EAyHGlB,qBAAqB,iBAAI,gCAAC,6BAAD;AAAmB,IAAA,MAAM,EAAEM,MAA3B;AAAmC,IAAA,WAAW,EAAEC;AAAhD,IAzH5B,CADD,gBA6HC,kEACGhC,uBAAuB,iBACtB;AACE,IAAA,SAAS,EAAC,6CADZ;AAEE,mBAAY;AAFd,kBAGE;AAAK,IAAA,IAAI,EAAC,QAAV;AAAmB,IAAA,OAAO,EAAE;AAAA,aAAME,sBAAsB,CAAC,IAAD,CAA5B;AAAA;AAA5B,KACG2C,iBADH,CAHF,CAFJ,CA9HJ,CADF;AA6ID,CAxOD;;AA0OArD,YAAY,CAACsD,SAAb,GAAyB;AACvBpD,EAAAA,IAAI,EAAEqD,sBAAUC,MAAV,CAAiBC,UADA;AAEvBtD,EAAAA,OAAO,EAAEoD,sBAAUG,KAAV,CAAgBD,UAFF;AAGvBxD,EAAAA,eAAe,EAAEsD,sBAAUC,MAAV,CAAiBC,UAHX;AAIvBrD,EAAAA,MAAM,EAAEmD,sBAAUI,IAAV,CAAeF,UAJA;AAKvBpD,EAAAA,MAAM,EAAEkD,sBAAUK,MAAV,CAAiBH,UALF;AAMvBnD,EAAAA,YAAY,EAAEiD,sBAAUM,IAAV,CAAeJ,UANN;AAOvBlD,EAAAA,IAAI,EAAEgD,sBAAUK,MAAV,CAAiBH,UAPA;AAQvBhD,EAAAA,mBAAmB,EAAE8C,sBAAUI,IAAV,CAAeF,UARb;AASvB/C,EAAAA,sBAAsB,EAAE6C,sBAAUM,IAAV,CAAeJ,UAThB;AAUvBjD,EAAAA,uBAAuB,EAAE+C,sBAAUI,IAAV,CAAeF,UAVjB;AAWvB7C,EAAAA,iBAAiB,EAAE2C,sBAAUO,MAAV,CAAiBL,UAXb;AAYvB5C,EAAAA,gBAAgB,EAAE0C,sBAAUO,MAAV,CAAiBL,UAZZ;AAavB9C,EAAAA,mBAAmB,EAAE4C,sBAAUC,MAAV,CAAiBC;AAbf,CAAzB;eAgBezD,Y","sourcesContent":["import React, { useState, useEffect, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport {\n isDeviceDesktop,\n buildQuery,\n getInitialFilterValues,\n getResponsiveFilterClassnames\n} from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n initialFilterValues,\n groupAfterDesktop,\n groupAfterMobile\n}) => {\n const [isDesktop, setIsDesktop] = useState(true);\n const [pageWidth, setPageWidth] = useState(null);\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);\n\n const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\n\n useEffect(\n () => {\n if (window && !pageWidth) {\n setPageWidth(window.innerWidth);\n setIsDesktop(isDeviceDesktop());\n }\n\n const handleResize = ({ target: { innerWidth } }) => {\n setIsDesktop(isDeviceDesktop());\n setPageWidth(innerWidth);\n if (isDesktop) setDisplaySearchFilter(false);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n },\n [isDesktop, pageWidth, setDisplaySearchFilter]\n );\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n dispatch({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit]\n );\n\n let isDesktopFormDisplayed = true;\n let isMobileFormDisplayed = false;\n\n if (!isDesktop && isCollapsedOnResponsive) {\n isMobileFormDisplayed = displaySearchFilter;\n isDesktopFormDisplayed = false;\n }\n\n const formClass = classnames({\n 'filter__form filter__form--mobile': isMobileFormDisplayed\n });\n\n const {\n moreFiltersMobileWrapperClass,\n moreFiltersMobileTogglerClass,\n moreFiltersDesktopWrapperClass,\n moreFiltersDesktopTogglerClass\n } = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(data, filters, {});\n\n dispatch({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n dispatch({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n {isDesktopFormDisplayed || isMobileFormDisplayed ? (\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n const newQuery = buildQuery(filterValues, filters);\n handleSearch(newQuery);\n }}>\n {isMobileFormDisplayed && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n {isDesktopFormDisplayed && <ResetDesktopForm handleReset={handleReset} />}\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!shouldGroup && (\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {shouldGroup && (\n <>\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters.slice(0, groupAfterMobile)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterMobile && (\n <button\n className={moreFiltersMobileTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)}>\n Filters\n </button>\n )}\n\n <div className={moreFiltersMobileWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.MOBILE_CONTENT}>\n <FiltersList\n shouldSearch={shouldSearch && isDeviceDesktop()}\n data={data}\n filters={filters.slice(\n groupAfterMobile,\n groupAfterDesktop ? groupAfterDesktop - 1 : 0\n )}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterDesktop && (\n <button\n className={moreFiltersDesktopTogglerClass}\n type=\"button\"\n onClick={() =>\n setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)\n }>\n More filters\n </button>\n )}\n\n <div className={moreFiltersDesktopWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.DESKTOP_CONTENT}>\n <FiltersList\n shouldSearch={false}\n data={data}\n filters={filters.slice(groupAfterDesktop)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className={MORE_FILTERS_CLASSES.DESKTOP_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </div>\n\n <div className={MORE_FILTERS_CLASSES.MOBILE_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {isDesktopFormDisplayed && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {isMobileFormDisplayed && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n ) : (\n <>\n {isCollapsedOnResponsive && (\n <div\n className=\"filter__refine filter__refine--mobile-close\"\n data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfterDesktop: PropTypes.number.isRequired,\n groupAfterMobile: PropTypes.number.isRequired,\n initialFilterValues: PropTypes.object.isRequired\n};\n\nexport default SearchFilter;\n"],"file":"SearchFilter.js"}
|
|
@@ -79,7 +79,8 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
79
79
|
filters = _ref.filters,
|
|
80
80
|
name = _ref.name,
|
|
81
81
|
isCollapsedOnResponsive = _ref.isCollapsedOnResponsive,
|
|
82
|
-
|
|
82
|
+
groupAfterMobile = _ref.groupAfterMobile,
|
|
83
|
+
groupAfterDesktop = _ref.groupAfterDesktop;
|
|
83
84
|
var router = (0, _router.useRouter)();
|
|
84
85
|
var searchFilterRef = (0, _react.useRef)(null);
|
|
85
86
|
|
|
@@ -204,7 +205,8 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
204
205
|
isCollapsedOnResponsive: isCollapsedOnResponsive,
|
|
205
206
|
displaySearchFilter: displaySearchFilter,
|
|
206
207
|
setDisplaySearchFilter: setDisplaySearchFilter,
|
|
207
|
-
|
|
208
|
+
groupAfterMobile: groupAfterMobile,
|
|
209
|
+
groupAfterDesktop: groupAfterDesktop
|
|
208
210
|
});
|
|
209
211
|
};
|
|
210
212
|
|
|
@@ -214,14 +216,16 @@ SearchFilterContainer.propTypes = {
|
|
|
214
216
|
filters: _propTypes["default"].array,
|
|
215
217
|
name: _propTypes["default"].string.isRequired,
|
|
216
218
|
isCollapsedOnResponsive: _propTypes["default"].bool,
|
|
217
|
-
|
|
219
|
+
groupAfterMobile: _propTypes["default"].number,
|
|
220
|
+
groupAfterDesktop: _propTypes["default"].number
|
|
218
221
|
};
|
|
219
222
|
SearchFilterContainer.defaultProps = {
|
|
220
223
|
url: null,
|
|
221
224
|
filters: [],
|
|
222
225
|
entity: '',
|
|
223
226
|
isCollapsedOnResponsive: true,
|
|
224
|
-
|
|
227
|
+
groupAfterMobile: 0,
|
|
228
|
+
groupAfterDesktop: 0
|
|
225
229
|
};
|
|
226
230
|
|
|
227
231
|
var _default = (0, _HOC.withTitle)(SearchFilterContainer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","router","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","hasUrl","asPath","currentUrl","query","sort","sortby","sortValues","baseQuery","action","RAW_RESULTS","rawQueryStringified","checkboxSelectValues","rangeValues","forEach","type","propsToDisplay","CHECKBOX_SELECT","includes","push","RANGE","docType","variables","limit","skip","data","error","loading","message","length","searchPublishedContent","rawResults","aggregations","filterData","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","document","getElementsByClassName","list","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","SCROLL_OFFSET","getBoundingClientRect","propTypes","PropTypes","string","array","isRequired","bool","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState, useRef } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n decodeValue\n} from './helpers';\n\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop\n}) => {\n const router = useRouter();\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const hasUrl = !!url;\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(decodeValue(router.asPath));\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n\n let rawQueryStringified = '';\n\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType);\n\n const { data, error, loading } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (loading) return null;\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData = {} } = {} } = {} } =\n data || {};\n\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n\n return (\n <SearchFilter\n key={key}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n initialFilterValues={initialFilterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"file":"SearchFilterContainer.js"}
|
|
@@ -74,7 +74,8 @@ var Checkbox = function Checkbox(_ref) {
|
|
|
74
74
|
prop = _ref.prop,
|
|
75
75
|
updateFilterValues = _ref.updateFilterValues,
|
|
76
76
|
filterValues = _ref.filterValues,
|
|
77
|
-
label = _ref.label
|
|
77
|
+
label = _ref.label,
|
|
78
|
+
shouldSearch = _ref.shouldSearch;
|
|
78
79
|
|
|
79
80
|
var _useState = (0, _react.useState)(null),
|
|
80
81
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -129,7 +130,7 @@ var Checkbox = function Checkbox(_ref) {
|
|
|
129
130
|
var value = _ref5.value;
|
|
130
131
|
return value;
|
|
131
132
|
});
|
|
132
|
-
updateFilterValues((0, _defineProperty2["default"])({}, prop, newCheckboxValues),
|
|
133
|
+
updateFilterValues((0, _defineProperty2["default"])({}, prop, newCheckboxValues), shouldSearch);
|
|
133
134
|
}
|
|
134
135
|
}), data[prop].buckets.length > _constants.LIMIT_MIN && /*#__PURE__*/_react["default"].createElement("div", {
|
|
135
136
|
role: "button",
|
|
@@ -145,9 +146,11 @@ Checkbox.propTypes = {
|
|
|
145
146
|
prop: _propTypes["default"].string.isRequired,
|
|
146
147
|
filterValues: _propTypes["default"].object.isRequired,
|
|
147
148
|
updateFilterValues: _propTypes["default"].func.isRequired,
|
|
149
|
+
shouldSearch: _propTypes["default"].bool,
|
|
148
150
|
label: _propTypes["default"].string
|
|
149
151
|
};
|
|
150
152
|
Checkbox.defaultProps = {
|
|
153
|
+
shouldSearch: false,
|
|
151
154
|
label: ''
|
|
152
155
|
};
|
|
153
156
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"names":["getButtonInfo","isMore","icon","DOWN","text","MORE","UP","LESS","Checkbox","data","prop","updateFilterValues","filterValues","label","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","LIMIT_MIN","LIMIT_MAX","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","PropTypes","object","isRequired","string","func","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAAC,MAAM;AAAA,SAAKA,MAAM,GAAG;AAAEC,IAAAA,IAAI,EAAEC,eAAR;AAAcC,IAAAA,IAAI,EAAEC;AAApB,GAAH,GAAgC;AAAEH,IAAAA,IAAI,EAAEI,aAAR;AAAYF,IAAAA,IAAI,EAAEG;AAAlB,GAA3C;AAAA,CAA5B;;AAEA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"names":["getButtonInfo","isMore","icon","DOWN","text","MORE","UP","LESS","Checkbox","data","prop","updateFilterValues","filterValues","label","shouldSearch","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","LIMIT_MIN","LIMIT_MAX","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","PropTypes","object","isRequired","string","func","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport upperFirst from 'lodash.upperfirst';\nimport { Checkboxes } from '@blaze-react/checkboxes';\nimport { withTitle } from '../../../HOC';\nimport { decodeValue } from '../helpers';\nimport { LIMIT_MIN, LIMIT_MAX, MORE, LESS, DOWN, UP } from '../constants';\n\nconst getButtonInfo = isMore => (isMore ? { icon: DOWN, text: MORE } : { icon: UP, text: LESS });\n\nconst Checkbox = ({ data, prop, updateFilterValues, filterValues, label, shouldSearch }) => {\n const [checkboxLimit, setCheckboxLimit] = useState(null);\n\n const handleCheckboxOptions = () => {\n if (checkboxLimit[prop] === LIMIT_MIN) {\n setCheckboxLimit({ [prop]: LIMIT_MAX });\n } else {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n };\n\n if (!checkboxLimit) {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n\n if (!checkboxLimit) return null;\n\n let checkboxQueryParams = [];\n\n if (filterValues && filterValues[prop]) {\n checkboxQueryParams =\n typeof filterValues[prop] === 'string'\n ? [decodeValue(filterValues[prop])]\n : filterValues[prop].map(val => decodeValue(val));\n }\n const multiple = [];\n\n const sortedValues = data[prop].buckets\n .map(({ key }) => key)\n .filter(Boolean)\n .sort();\n\n sortedValues.forEach(\n (value, i) =>\n i < checkboxLimit[prop] &&\n multiple.push({\n label: upperFirst(value),\n value,\n name: prop,\n checked: checkboxQueryParams.includes(value),\n id: value\n })\n );\n\n const shouldDisplayMore = !checkboxLimit || checkboxLimit[prop] === LIMIT_MIN;\n\n return (\n <>\n {label ? <p>{label}</p> : ''}\n <Checkboxes\n className=\"form-checkbox\"\n options={multiple}\n onChange={({ data: eData }) => {\n const newCheckboxValues = eData\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n updateFilterValues({ [prop]: newCheckboxValues }, shouldSearch);\n }}\n />\n {data[prop].buckets.length > LIMIT_MIN && (\n <div role=\"button\" className=\"see-more\" onClick={handleCheckboxOptions}>\n <i className={`fas fa-chevron-${getButtonInfo(shouldDisplayMore).icon}`} />\n {` See ${getButtonInfo(shouldDisplayMore).text}`}\n </div>\n )}\n </>\n );\n};\n\nCheckbox.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string\n};\n\nCheckbox.defaultProps = {\n shouldSearch: false,\n label: ''\n};\n\nexport default withTitle(Checkbox);\n"],"file":"Checkbox.js"}
|
|
@@ -59,8 +59,10 @@ var Range = function Range(_ref) {
|
|
|
59
59
|
entity = _ref.entity,
|
|
60
60
|
propsToDisplay = _ref.propsToDisplay,
|
|
61
61
|
updateFilterValues = _ref.updateFilterValues,
|
|
62
|
-
filterValues = _ref.filterValues
|
|
62
|
+
filterValues = _ref.filterValues,
|
|
63
|
+
shouldSearch = _ref.shouldSearch;
|
|
63
64
|
var router = (0, _router.useRouter)();
|
|
65
|
+
var debounceAmount = shouldSearch ? 1200 : 100;
|
|
64
66
|
|
|
65
67
|
var _parseUrl = (0, _queryString.parseUrl)((0, _decodeEncode.decodeValue)(router.asPath)),
|
|
66
68
|
query = _parseUrl.query;
|
|
@@ -85,8 +87,8 @@ var Range = function Range(_ref) {
|
|
|
85
87
|
var handleChange = (0, _lodash["default"])(function (option, value) {
|
|
86
88
|
updateFilterValues((0, _defineProperty2["default"])({}, option, _objectSpread(_objectSpread({}, value), {}, {
|
|
87
89
|
selectedOption: rangeOption
|
|
88
|
-
})),
|
|
89
|
-
},
|
|
90
|
+
})), shouldSearch);
|
|
91
|
+
}, debounceAmount);
|
|
90
92
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, hasMultipleOptions && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("label", null, label), /*#__PURE__*/_react["default"].createElement(_select["default"], {
|
|
91
93
|
value: rangeOption,
|
|
92
94
|
id: rangeOption,
|
|
@@ -124,10 +126,12 @@ Range.propTypes = {
|
|
|
124
126
|
entity: _propTypes["default"].string.isRequired,
|
|
125
127
|
filterValues: _propTypes["default"].object.isRequired,
|
|
126
128
|
updateFilterValues: _propTypes["default"].func.isRequired,
|
|
129
|
+
shouldSearch: _propTypes["default"].bool,
|
|
127
130
|
rangeInterval: _propTypes["default"].number,
|
|
128
131
|
label: _propTypes["default"].string
|
|
129
132
|
};
|
|
130
133
|
Range.defaultProps = {
|
|
134
|
+
shouldSearch: false,
|
|
131
135
|
rangeInterval: 1,
|
|
132
136
|
label: ''
|
|
133
137
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Range.js"],"names":["Range","rangeInterval","label","entity","propsToDisplay","updateFilterValues","filterValues","router","asPath","query","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","shouldShowRange","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","PropTypes","array","isRequired","string","object","func","number","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAG,SAARA,KAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Range.js"],"names":["Range","rangeInterval","label","entity","propsToDisplay","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","asPath","query","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","shouldShowRange","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","PropTypes","array","isRequired","string","object","func","bool","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport RangeFilter from '@blaze-react/range-filter';\nimport { useRouter } from 'next/router';\nimport Select from '@blaze-react/select';\nimport { parseUrl } from 'query-string';\nimport { useGetSingleEntitySchema } from '../../../hooks';\nimport { withTitle } from '../../../HOC';\nimport { getSelectOptions, getIntersectedProp, getRangeValue } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n updateFilterValues,\n filterValues,\n shouldSearch\n}) => {\n const router = useRouter();\n const debounceAmount = shouldSearch ? 1200 : 100;\n const { query } = parseUrl(decodeValue(router.asPath));\n const hasMultipleOptions = propsToDisplay.length > 1;\n const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];\n const rangeOption =\n (filterValues[initialRangeOption] && filterValues[initialRangeOption].selectedOption) ||\n initialRangeOption;\n const rangeValue = filterValues[rangeOption];\n\n const { data: { getEntitySchema = {} } = {}, loading } = useGetSingleEntitySchema(\n entity,\n !hasMultipleOptions\n );\n\n if (loading || !rangeOption || !rangeValue) return '';\n\n const options = getSelectOptions(getEntitySchema, propsToDisplay);\n const { min, max } = rangeValue;\n const shouldShowRange = rangeOption && min !== max;\n\n const handleChange = debounce((option, value) => {\n updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);\n }, debounceAmount);\n\n return (\n <>\n {hasMultipleOptions && (\n <>\n <label>{label}</label>\n <Select\n value={rangeOption}\n id={rangeOption}\n options={options}\n required\n onChange={({ value }) => {\n const updatedOptions = {};\n propsToDisplay.forEach(prop => {\n const { min: eMin, max: eMax } = filterValues[prop];\n const initValue = getRangeValue(null, rangeInterval, eMin, eMax);\n updatedOptions[prop] = { ...initValue, selectedOption: value };\n });\n\n updateFilterValues(updatedOptions, false);\n }}\n />\n </>\n )}\n {shouldShowRange && (\n <RangeFilter\n key={rangeOption}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={rangeValue}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\n }}\n />\n )}\n </>\n );\n};\n\nRange.propTypes = {\n propsToDisplay: PropTypes.array.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n rangeInterval: PropTypes.number,\n label: PropTypes.string\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"file":"Range.js"}
|