@blaze-cms/react-page-builder 0.113.0 → 0.114.0-alpha.0
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 +11 -0
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +53 -20
- 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/constants.js +13 -1
- package/lib/components/SearchFilter/constants.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-es/components/SearchFilter/SearchFilter/SearchFilter.js +47 -21
- 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/constants.js +12 -1
- package/lib-es/components/SearchFilter/constants.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/package.json +2 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +71 -25
- package/src/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/src/components/SearchFilter/constants.js +14 -1
- package/src/components/SearchFilter/helpers/get-responsive-filter-classnames.js +22 -0
- package/src/components/SearchFilter/helpers/index.js +2 -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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.114.0-alpha.0](https://github.com/thebyte9/blaze/compare/v0.113.0...v0.114.0-alpha.0) (2021-11-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Wrap more filters for mobile with groupAfterMobile option ([#3213](https://github.com/thebyte9/blaze/issues/3213)) ([8914aaa](https://github.com/thebyte9/blaze/commit/8914aaa33d29e8ff7d6a762f7c73adf6e559a344))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [0.113.0](https://github.com/thebyte9/blaze/compare/v0.113.0-alpha.9...v0.113.0) (2021-11-19)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
@@ -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() {
|
|
@@ -199,6 +206,7 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
199
206
|
});
|
|
200
207
|
};
|
|
201
208
|
|
|
209
|
+
var shouldGroup = !!(groupAfterDesktop || groupAfterMobile);
|
|
202
210
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/_react["default"].createElement("form", {
|
|
203
211
|
ref: searchFilterRef,
|
|
204
212
|
className: formClass,
|
|
@@ -219,39 +227,63 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
219
227
|
handleReset: handleReset
|
|
220
228
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
229
|
className: "filter__wrapper filter__wrapper--search-refine"
|
|
222
|
-
}, !
|
|
230
|
+
}, !shouldGroup && /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
223
231
|
data: data,
|
|
224
232
|
filters: filters,
|
|
225
233
|
hasUrl: hasUrl,
|
|
226
234
|
entity: entity,
|
|
227
235
|
filterValues: filterValues,
|
|
228
236
|
updateFilterValues: updateFilterValues
|
|
229
|
-
}),
|
|
237
|
+
}), shouldGroup && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
230
238
|
data: data,
|
|
231
|
-
filters: filters.slice(0,
|
|
239
|
+
filters: filters.slice(0, groupAfterMobile),
|
|
232
240
|
hasUrl: hasUrl,
|
|
233
241
|
entity: entity,
|
|
234
242
|
filterValues: filterValues,
|
|
235
243
|
updateFilterValues: updateFilterValues
|
|
236
|
-
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
237
|
-
className:
|
|
244
|
+
}), !!groupAfterMobile && /*#__PURE__*/_react["default"].createElement("button", {
|
|
245
|
+
className: moreFiltersMobileTogglerClass,
|
|
238
246
|
type: "button",
|
|
239
247
|
onClick: function onClick() {
|
|
240
|
-
return
|
|
248
|
+
return setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed);
|
|
249
|
+
}
|
|
250
|
+
}, "Filters"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
251
|
+
className: moreFiltersMobileWrapperClass
|
|
252
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
253
|
+
className: _constants.MORE_FILTERS_CLASSES.MOBILE_CONTENT
|
|
254
|
+
}, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
255
|
+
data: data,
|
|
256
|
+
filters: filters.slice(groupAfterMobile, groupAfterDesktop ? groupAfterDesktop - 1 : 0),
|
|
257
|
+
hasUrl: hasUrl,
|
|
258
|
+
entity: entity,
|
|
259
|
+
filterValues: filterValues,
|
|
260
|
+
updateFilterValues: updateFilterValues
|
|
261
|
+
}), !!groupAfterDesktop && /*#__PURE__*/_react["default"].createElement("button", {
|
|
262
|
+
className: moreFiltersDesktopTogglerClass,
|
|
263
|
+
type: "button",
|
|
264
|
+
onClick: function onClick() {
|
|
265
|
+
return setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed);
|
|
241
266
|
}
|
|
242
267
|
}, "More filters"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
243
|
-
className:
|
|
268
|
+
className: moreFiltersDesktopWrapperClass
|
|
244
269
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
245
|
-
className:
|
|
270
|
+
className: _constants.MORE_FILTERS_CLASSES.DESKTOP_CONTENT
|
|
246
271
|
}, /*#__PURE__*/_react["default"].createElement(_FiltersList["default"], {
|
|
247
272
|
data: data,
|
|
248
|
-
filters: filters.slice(
|
|
273
|
+
filters: filters.slice(groupAfterDesktop),
|
|
249
274
|
hasUrl: hasUrl,
|
|
250
275
|
entity: entity,
|
|
251
276
|
filterValues: filterValues,
|
|
252
277
|
updateFilterValues: updateFilterValues
|
|
253
278
|
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
254
|
-
className:
|
|
279
|
+
className: _constants.MORE_FILTERS_CLASSES.DESKTOP_BUTTONS
|
|
280
|
+
}, /*#__PURE__*/_react["default"].createElement(_ResetDesktopForm["default"], {
|
|
281
|
+
handleReset: handleReset
|
|
282
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
283
|
+
className: "button button--full-width",
|
|
284
|
+
type: "submit"
|
|
285
|
+
}, _constants.SEARCH)))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
286
|
+
className: _constants.MORE_FILTERS_CLASSES.MOBILE_BUTTONS
|
|
255
287
|
}, /*#__PURE__*/_react["default"].createElement(_ResetDesktopForm["default"], {
|
|
256
288
|
handleReset: handleReset
|
|
257
289
|
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
@@ -285,7 +317,8 @@ SearchFilter.propTypes = {
|
|
|
285
317
|
displaySearchFilter: _propTypes["default"].bool.isRequired,
|
|
286
318
|
setDisplaySearchFilter: _propTypes["default"].func.isRequired,
|
|
287
319
|
isCollapsedOnResponsive: _propTypes["default"].bool.isRequired,
|
|
288
|
-
|
|
320
|
+
groupAfterDesktop: _propTypes["default"].number.isRequired,
|
|
321
|
+
groupAfterMobile: _propTypes["default"].number.isRequired,
|
|
289
322
|
initialFilterValues: _propTypes["default"].object.isRequired
|
|
290
323
|
};
|
|
291
324
|
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","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":"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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 {\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, shouldSearch) => {\n dispatch({ newValues, shouldSearch, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\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 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 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 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 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"}
|
|
@@ -5,7 +5,7 @@ require("core-js/modules/es.object.define-property.js");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.UPDATED_RANGES = exports.UP = exports.TEXT_SEARCH = exports.TABLET_WIDTH = exports.SIZE = exports.SELECT = exports.SEARCH_TERM = exports.SEARCH = exports.RESET = exports.REFINE = exports.RAW_RESULTS = exports.RANGE = exports.MORE = exports.MOBILE_REFINEMENT_TITLE = exports.MIN_VALUE = exports.MAX_VALUE = exports.LIMIT_MIN = exports.LIMIT_MAX = exports.LESS = exports.KEYWORD = exports.DOWN = exports.DEFAULT_VALUES = exports.DEFAULT_OPTION = exports.CHECKBOX_SELECT = exports.CHECKBOX = void 0;
|
|
8
|
+
exports.UPDATED_RANGES = exports.UP = exports.TEXT_SEARCH = exports.TABLET_WIDTH = exports.SIZE = exports.SELECT = exports.SEARCH_TERM = exports.SEARCH = exports.RESET = exports.REFINE = exports.RAW_RESULTS = exports.RANGE = exports.MORE_FILTERS_CLASSES = exports.MORE = exports.MOBILE_REFINEMENT_TITLE = exports.MIN_VALUE = exports.MAX_VALUE = exports.LIMIT_MIN = exports.LIMIT_MAX = exports.LESS = exports.KEYWORD = exports.DOWN = exports.DEFAULT_VALUES = exports.DEFAULT_OPTION = exports.CHECKBOX_SELECT = exports.CHECKBOX = void 0;
|
|
9
9
|
var CHECKBOX = 'checkbox';
|
|
10
10
|
exports.CHECKBOX = CHECKBOX;
|
|
11
11
|
var SELECT = 'select';
|
|
@@ -56,4 +56,16 @@ var REFINE = "Refine Search";
|
|
|
56
56
|
exports.REFINE = REFINE;
|
|
57
57
|
var MOBILE_REFINEMENT_TITLE = 'Search refinement';
|
|
58
58
|
exports.MOBILE_REFINEMENT_TITLE = MOBILE_REFINEMENT_TITLE;
|
|
59
|
+
var MORE_FILTERS_CLASSES_BASE = 'filter__more-filters';
|
|
60
|
+
var MORE_FILTERS_CLASSES = {
|
|
61
|
+
MOBILE_WRAPPER: "".concat(MORE_FILTERS_CLASSES_BASE, "-mobile-wrapper"),
|
|
62
|
+
MOBILE_CONTENT: "".concat(MORE_FILTERS_CLASSES_BASE, "-mobile-content"),
|
|
63
|
+
MOBILE_TOGGLER: "".concat(MORE_FILTERS_CLASSES_BASE, "-mobile-toggler"),
|
|
64
|
+
MOBILE_BUTTONS: "".concat(MORE_FILTERS_CLASSES_BASE, "-mobile-buttons"),
|
|
65
|
+
DESKTOP_WRAPPER: "".concat(MORE_FILTERS_CLASSES_BASE, "-desktop-wrapper"),
|
|
66
|
+
DESKTOP_CONTENT: "".concat(MORE_FILTERS_CLASSES_BASE, "-desktop-content"),
|
|
67
|
+
DESKTOP_TOGGLER: "".concat(MORE_FILTERS_CLASSES_BASE, "-desktop-toggler"),
|
|
68
|
+
DESKTOP_BUTTONS: "".concat(MORE_FILTERS_CLASSES_BASE, "-desktop-buttons")
|
|
69
|
+
};
|
|
70
|
+
exports.MORE_FILTERS_CLASSES = MORE_FILTERS_CLASSES;
|
|
59
71
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchFilter/constants.js"],"names":["CHECKBOX","SELECT","TEXT_SEARCH","SEARCH_TERM","SIZE","KEYWORD","RAW_RESULTS","DEFAULT_OPTION","DEFAULT_VALUES","RANGE","CHECKBOX_SELECT","LIMIT_MIN","LIMIT_MAX","MORE","LESS","DOWN","UP","UPDATED_RANGES","MIN_VALUE","MAX_VALUE","TABLET_WIDTH","RESET","SEARCH","REFINE","MOBILE_REFINEMENT_TITLE"],"mappings":";;;;;;;;AAAA,IAAMA,QAAQ,GAAG,UAAjB;;AACA,IAAMC,MAAM,GAAG,QAAf;;AACA,IAAMC,WAAW,GAAG,aAApB;;AACA,IAAMC,WAAW,GAAG,aAApB;;AACA,IAAMC,IAAI,GAAG,EAAb;;AACA,IAAMC,OAAO,GAAG,SAAhB;;AACA,IAAMC,WAAW,GAAG,YAApB;;AACA,IAAMC,cAAc,GAAG,KAAvB;;AACA,IAAMC,cAAc,GAAG,CAAC,KAAD,EAAQ,kBAAR,CAAvB;;AACA,IAAMC,KAAK,GAAG,OAAd;;AACA,IAAMC,eAAe,GAAG,CAAC,UAAD,EAAa,QAAb,CAAxB;;AACA,IAAMC,SAAS,GAAG,CAAlB;;AACA,IAAMC,SAAS,GAAG,IAAlB;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,EAAE,GAAG,IAAX;;AACA,IAAMC,cAAc,GAAG,gBAAvB;;AACA,IAAMC,SAAS,GAAG,WAAlB;;AACA,IAAMC,SAAS,GAAG,WAAlB;;AACA,IAAMC,YAAY,GAAG,GAArB;;AACA,IAAMC,KAAK,GAAG,mBAAd;;AACA,IAAMC,MAAM,GAAG,QAAf;;AACA,IAAMC,MAAM,kBAAZ;;AACA,IAAMC,uBAAuB,GAAG,mBAAhC","sourcesContent":["const CHECKBOX = 'checkbox';\nconst SELECT = 'select';\nconst TEXT_SEARCH = 'text-search';\nconst SEARCH_TERM = 'search_term';\nconst SIZE = 50;\nconst KEYWORD = 'keyword';\nconst RAW_RESULTS = 'rawResults';\nconst DEFAULT_OPTION = 'Any';\nconst DEFAULT_VALUES = ['Any', 'Please Choose...'];\nconst RANGE = 'range';\nconst CHECKBOX_SELECT = ['checkbox', 'select'];\nconst LIMIT_MIN = 5;\nconst LIMIT_MAX = 1000;\nconst MORE = 'more';\nconst LESS = 'less';\nconst DOWN = 'down';\nconst UP = 'up';\nconst UPDATED_RANGES = 'updated_ranges';\nconst MIN_VALUE = 'min-value';\nconst MAX_VALUE = 'max-value';\nconst TABLET_WIDTH = 768;\nconst RESET = 'Reset all filters';\nconst SEARCH = 'Search';\nconst REFINE = `Refine Search`;\nconst MOBILE_REFINEMENT_TITLE = 'Search refinement';\n\nexport {\n CHECKBOX,\n SELECT,\n TEXT_SEARCH,\n SEARCH_TERM,\n SIZE,\n KEYWORD,\n RAW_RESULTS,\n DEFAULT_OPTION,\n DEFAULT_VALUES,\n RANGE,\n CHECKBOX_SELECT,\n LIMIT_MIN,\n LIMIT_MAX,\n MORE,\n LESS,\n DOWN,\n UP,\n UPDATED_RANGES,\n MIN_VALUE,\n MAX_VALUE,\n TABLET_WIDTH,\n RESET,\n SEARCH,\n REFINE,\n MOBILE_REFINEMENT_TITLE\n};\n"],"file":"constants.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchFilter/constants.js"],"names":["CHECKBOX","SELECT","TEXT_SEARCH","SEARCH_TERM","SIZE","KEYWORD","RAW_RESULTS","DEFAULT_OPTION","DEFAULT_VALUES","RANGE","CHECKBOX_SELECT","LIMIT_MIN","LIMIT_MAX","MORE","LESS","DOWN","UP","UPDATED_RANGES","MIN_VALUE","MAX_VALUE","TABLET_WIDTH","RESET","SEARCH","REFINE","MOBILE_REFINEMENT_TITLE","MORE_FILTERS_CLASSES_BASE","MORE_FILTERS_CLASSES","MOBILE_WRAPPER","MOBILE_CONTENT","MOBILE_TOGGLER","MOBILE_BUTTONS","DESKTOP_WRAPPER","DESKTOP_CONTENT","DESKTOP_TOGGLER","DESKTOP_BUTTONS"],"mappings":";;;;;;;;AAAA,IAAMA,QAAQ,GAAG,UAAjB;;AACA,IAAMC,MAAM,GAAG,QAAf;;AACA,IAAMC,WAAW,GAAG,aAApB;;AACA,IAAMC,WAAW,GAAG,aAApB;;AACA,IAAMC,IAAI,GAAG,EAAb;;AACA,IAAMC,OAAO,GAAG,SAAhB;;AACA,IAAMC,WAAW,GAAG,YAApB;;AACA,IAAMC,cAAc,GAAG,KAAvB;;AACA,IAAMC,cAAc,GAAG,CAAC,KAAD,EAAQ,kBAAR,CAAvB;;AACA,IAAMC,KAAK,GAAG,OAAd;;AACA,IAAMC,eAAe,GAAG,CAAC,UAAD,EAAa,QAAb,CAAxB;;AACA,IAAMC,SAAS,GAAG,CAAlB;;AACA,IAAMC,SAAS,GAAG,IAAlB;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,IAAI,GAAG,MAAb;;AACA,IAAMC,EAAE,GAAG,IAAX;;AACA,IAAMC,cAAc,GAAG,gBAAvB;;AACA,IAAMC,SAAS,GAAG,WAAlB;;AACA,IAAMC,SAAS,GAAG,WAAlB;;AACA,IAAMC,YAAY,GAAG,GAArB;;AACA,IAAMC,KAAK,GAAG,mBAAd;;AACA,IAAMC,MAAM,GAAG,QAAf;;AACA,IAAMC,MAAM,kBAAZ;;AACA,IAAMC,uBAAuB,GAAG,mBAAhC;;AAEA,IAAMC,yBAAyB,GAAG,sBAAlC;AACA,IAAMC,oBAAoB,GAAG;AAC3BC,EAAAA,cAAc,YAAKF,yBAAL,oBADa;AAE3BG,EAAAA,cAAc,YAAKH,yBAAL,oBAFa;AAG3BI,EAAAA,cAAc,YAAKJ,yBAAL,oBAHa;AAI3BK,EAAAA,cAAc,YAAKL,yBAAL,oBAJa;AAK3BM,EAAAA,eAAe,YAAKN,yBAAL,qBALY;AAM3BO,EAAAA,eAAe,YAAKP,yBAAL,qBANY;AAO3BQ,EAAAA,eAAe,YAAKR,yBAAL,qBAPY;AAQ3BS,EAAAA,eAAe,YAAKT,yBAAL;AARY,CAA7B","sourcesContent":["const CHECKBOX = 'checkbox';\nconst SELECT = 'select';\nconst TEXT_SEARCH = 'text-search';\nconst SEARCH_TERM = 'search_term';\nconst SIZE = 50;\nconst KEYWORD = 'keyword';\nconst RAW_RESULTS = 'rawResults';\nconst DEFAULT_OPTION = 'Any';\nconst DEFAULT_VALUES = ['Any', 'Please Choose...'];\nconst RANGE = 'range';\nconst CHECKBOX_SELECT = ['checkbox', 'select'];\nconst LIMIT_MIN = 5;\nconst LIMIT_MAX = 1000;\nconst MORE = 'more';\nconst LESS = 'less';\nconst DOWN = 'down';\nconst UP = 'up';\nconst UPDATED_RANGES = 'updated_ranges';\nconst MIN_VALUE = 'min-value';\nconst MAX_VALUE = 'max-value';\nconst TABLET_WIDTH = 768;\nconst RESET = 'Reset all filters';\nconst SEARCH = 'Search';\nconst REFINE = `Refine Search`;\nconst MOBILE_REFINEMENT_TITLE = 'Search refinement';\n\nconst MORE_FILTERS_CLASSES_BASE = 'filter__more-filters';\nconst MORE_FILTERS_CLASSES = {\n MOBILE_WRAPPER: `${MORE_FILTERS_CLASSES_BASE}-mobile-wrapper`,\n MOBILE_CONTENT: `${MORE_FILTERS_CLASSES_BASE}-mobile-content`,\n MOBILE_TOGGLER: `${MORE_FILTERS_CLASSES_BASE}-mobile-toggler`,\n MOBILE_BUTTONS: `${MORE_FILTERS_CLASSES_BASE}-mobile-buttons`,\n DESKTOP_WRAPPER: `${MORE_FILTERS_CLASSES_BASE}-desktop-wrapper`,\n DESKTOP_CONTENT: `${MORE_FILTERS_CLASSES_BASE}-desktop-content`,\n DESKTOP_TOGGLER: `${MORE_FILTERS_CLASSES_BASE}-desktop-toggler`,\n DESKTOP_BUTTONS: `${MORE_FILTERS_CLASSES_BASE}-desktop-buttons`\n};\n\nexport {\n CHECKBOX,\n SELECT,\n TEXT_SEARCH,\n SEARCH_TERM,\n SIZE,\n KEYWORD,\n RAW_RESULTS,\n DEFAULT_OPTION,\n DEFAULT_VALUES,\n RANGE,\n CHECKBOX_SELECT,\n LIMIT_MIN,\n LIMIT_MAX,\n MORE,\n LESS,\n DOWN,\n UP,\n UPDATED_RANGES,\n MIN_VALUE,\n MAX_VALUE,\n TABLET_WIDTH,\n RESET,\n SEARCH,\n REFINE,\n MOBILE_REFINEMENT_TITLE,\n MORE_FILTERS_CLASSES\n};\n"],"file":"constants.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _classnames5 = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
16
|
+
var _constants = require("../constants");
|
|
17
|
+
|
|
18
|
+
var getResponsiveFilterClassnames = function getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed) {
|
|
19
|
+
return {
|
|
20
|
+
moreFiltersMobileWrapperClass: (0, _classnames5["default"])(_constants.MORE_FILTERS_CLASSES.MOBILE_WRAPPER, (0, _defineProperty2["default"])({}, "".concat(_constants.MORE_FILTERS_CLASSES.MOBILE_WRAPPER, "--open"), !moreFiltersMobileCollapsed)),
|
|
21
|
+
moreFiltersMobileTogglerClass: (0, _classnames5["default"])(_constants.MORE_FILTERS_CLASSES.MOBILE_TOGGLER, (0, _defineProperty2["default"])({}, "".concat(_constants.MORE_FILTERS_CLASSES.MOBILE_TOGGLER, "--open"), !moreFiltersMobileCollapsed)),
|
|
22
|
+
moreFiltersDesktopWrapperClass: (0, _classnames5["default"])(_constants.MORE_FILTERS_CLASSES.DESKTOP_WRAPPER, (0, _defineProperty2["default"])({}, "".concat(_constants.MORE_FILTERS_CLASSES.DESKTOP_WRAPPER, "--open"), !moreFiltersDesktopCollapsed)),
|
|
23
|
+
moreFiltersDesktopTogglerClass: (0, _classnames5["default"])(_constants.MORE_FILTERS_CLASSES.DESKTOP_TOGGLER, (0, _defineProperty2["default"])({}, "".concat(_constants.MORE_FILTERS_CLASSES.DESKTOP_TOGGLER, "--open"), !moreFiltersDesktopCollapsed))
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var _default = getResponsiveFilterClassnames;
|
|
28
|
+
exports["default"] = _default;
|
|
29
|
+
//# sourceMappingURL=get-responsive-filter-classnames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/helpers/get-responsive-filter-classnames.js"],"names":["getResponsiveFilterClassnames","moreFiltersDesktopCollapsed","moreFiltersMobileCollapsed","moreFiltersMobileWrapperClass","MORE_FILTERS_CLASSES","MOBILE_WRAPPER","moreFiltersMobileTogglerClass","MOBILE_TOGGLER","moreFiltersDesktopWrapperClass","DESKTOP_WRAPPER","moreFiltersDesktopTogglerClass","DESKTOP_TOGGLER"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,6BAA6B,GAAG,SAAhCA,6BAAgC,CACpCC,2BADoC,EAEpCC,0BAFoC;AAAA,SAGhC;AACJC,IAAAA,6BAA6B,EAAE,6BAAWC,gCAAqBC,cAAhC,iDACzBD,gCAAqBC,cADI,aACqB,CAACH,0BADtB,EAD3B;AAIJI,IAAAA,6BAA6B,EAAE,6BAAWF,gCAAqBG,cAAhC,iDACzBH,gCAAqBG,cADI,aACqB,CAACL,0BADtB,EAJ3B;AAOJM,IAAAA,8BAA8B,EAAE,6BAAWJ,gCAAqBK,eAAhC,iDAC1BL,gCAAqBK,eADK,aACqB,CAACR,2BADtB,EAP5B;AAUJS,IAAAA,8BAA8B,EAAE,6BAAWN,gCAAqBO,eAAhC,iDAC1BP,gCAAqBO,eADK,aACqB,CAACV,2BADtB;AAV5B,GAHgC;AAAA,CAAtC;;eAkBeD,6B","sourcesContent":["import classnames from 'classnames';\nimport { MORE_FILTERS_CLASSES } from '../constants';\n\nconst getResponsiveFilterClassnames = (\n moreFiltersDesktopCollapsed,\n moreFiltersMobileCollapsed\n) => ({\n moreFiltersMobileWrapperClass: classnames(MORE_FILTERS_CLASSES.MOBILE_WRAPPER, {\n [`${MORE_FILTERS_CLASSES.MOBILE_WRAPPER}--open`]: !moreFiltersMobileCollapsed\n }),\n moreFiltersMobileTogglerClass: classnames(MORE_FILTERS_CLASSES.MOBILE_TOGGLER, {\n [`${MORE_FILTERS_CLASSES.MOBILE_TOGGLER}--open`]: !moreFiltersMobileCollapsed\n }),\n moreFiltersDesktopWrapperClass: classnames(MORE_FILTERS_CLASSES.DESKTOP_WRAPPER, {\n [`${MORE_FILTERS_CLASSES.DESKTOP_WRAPPER}--open`]: !moreFiltersDesktopCollapsed\n }),\n moreFiltersDesktopTogglerClass: classnames(MORE_FILTERS_CLASSES.DESKTOP_TOGGLER, {\n [`${MORE_FILTERS_CLASSES.DESKTOP_TOGGLER}--open`]: !moreFiltersDesktopCollapsed\n })\n});\n\nexport default getResponsiveFilterClassnames;\n"],"file":"get-responsive-filter-classnames.js"}
|
|
@@ -85,6 +85,12 @@ Object.defineProperty(exports, "getRangeValue", {
|
|
|
85
85
|
return _getRangeValue["default"];
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
|
+
Object.defineProperty(exports, "getResponsiveFilterClassnames", {
|
|
89
|
+
enumerable: true,
|
|
90
|
+
get: function get() {
|
|
91
|
+
return _getResponsiveFilterClassnames["default"];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
88
94
|
Object.defineProperty(exports, "getSelectOptions", {
|
|
89
95
|
enumerable: true,
|
|
90
96
|
get: function get() {
|
|
@@ -106,6 +112,8 @@ var _decodeEncode = require("./decode-encode");
|
|
|
106
112
|
|
|
107
113
|
var _checkIfRangeUpdated = _interopRequireDefault(require("./check-if-range-updated"));
|
|
108
114
|
|
|
115
|
+
var _getResponsiveFilterClassnames = _interopRequireDefault(require("./get-responsive-filter-classnames"));
|
|
116
|
+
|
|
109
117
|
var _getDisplayValue = _interopRequireDefault(require("./get-display-value"));
|
|
110
118
|
|
|
111
119
|
var _calculateStep = _interopRequireDefault(require("./calculate-step"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/helpers/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/helpers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["import buildNewQuery from './build-new-query';\nimport buildRawQueryStringified from './build-raw-query-stringified';\nimport { decodeValue, encodeValue } from './decode-encode';\nimport checkIfRangeUpdated from './check-if-range-updated';\nimport getResponsiveFilterClassnames from './get-responsive-filter-classnames';\nimport getDisplayValue from './get-display-value';\nimport calculateStep from './calculate-step';\nimport calculateMinMax from './calculate-min-max';\nimport getIntersectedProp from './get-intersected-prop';\nimport getRangeValue from './get-range-value';\nimport getSelectOptions from './get-select-options';\nimport isDeviceDesktop from './is-device-desktop';\nimport getInitialFilterValues from './get-initial-filter-values';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\nimport buildQuery from './build-query';\n\nexport {\n buildQuery,\n buildNewQuery,\n buildRawQueryStringified,\n decodeValue,\n encodeValue,\n checkIfRangeUpdated,\n getResponsiveFilterClassnames,\n getDisplayValue,\n calculateStep,\n calculateMinMax,\n getIntersectedProp,\n getRangeValue,\n getSelectOptions,\n isDeviceDesktop,\n getInitialFilterValues,\n getFilterValueFromQuery\n};\n"],"file":"index.js"}
|
|
@@ -9,11 +9,11 @@ import PropTypes from 'prop-types';
|
|
|
9
9
|
import classnames from 'classnames';
|
|
10
10
|
import debounce from 'lodash.debounce';
|
|
11
11
|
import FiltersList from './FiltersList';
|
|
12
|
-
import { isDeviceDesktop, buildQuery, getInitialFilterValues } from '../helpers';
|
|
12
|
+
import { isDeviceDesktop, buildQuery, getInitialFilterValues, getResponsiveFilterClassnames } from '../helpers';
|
|
13
13
|
import CloseMobileForm from './CloseMobileForm';
|
|
14
14
|
import ResetDesktopForm from './ResetDesktopForm';
|
|
15
15
|
import MobileFormToolbar from './MobileFormToolbar';
|
|
16
|
-
import { SEARCH, REFINE } from '../constants';
|
|
16
|
+
import { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';
|
|
17
17
|
|
|
18
18
|
const reducer = (state, action) => {
|
|
19
19
|
const {
|
|
@@ -55,11 +55,13 @@ const SearchFilter = ({
|
|
|
55
55
|
displaySearchFilter,
|
|
56
56
|
setDisplaySearchFilter,
|
|
57
57
|
initialFilterValues,
|
|
58
|
-
|
|
58
|
+
groupAfterDesktop,
|
|
59
|
+
groupAfterMobile
|
|
59
60
|
}) => {
|
|
60
61
|
const [isDesktop, setIsDesktop] = useState(true);
|
|
61
62
|
const [pageWidth, setPageWidth] = useState(null);
|
|
62
|
-
const [
|
|
63
|
+
const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);
|
|
64
|
+
const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);
|
|
63
65
|
const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);
|
|
64
66
|
const handleSubmit = debounce(newValues => {
|
|
65
67
|
const newQuery = buildQuery(newValues, filters);
|
|
@@ -105,12 +107,12 @@ const SearchFilter = ({
|
|
|
105
107
|
const formClass = classnames({
|
|
106
108
|
'filter__form filter__form--mobile': isMobileFormDisplayed
|
|
107
109
|
});
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
});
|
|
110
|
+
const {
|
|
111
|
+
moreFiltersMobileWrapperClass,
|
|
112
|
+
moreFiltersMobileTogglerClass,
|
|
113
|
+
moreFiltersDesktopWrapperClass,
|
|
114
|
+
moreFiltersDesktopTogglerClass
|
|
115
|
+
} = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);
|
|
114
116
|
const formId = `filter-${name}-form`;
|
|
115
117
|
|
|
116
118
|
const handleReset = () => {
|
|
@@ -129,6 +131,7 @@ const SearchFilter = ({
|
|
|
129
131
|
});
|
|
130
132
|
};
|
|
131
133
|
|
|
134
|
+
const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);
|
|
132
135
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/React.createElement("form", {
|
|
133
136
|
ref: searchFilterRef,
|
|
134
137
|
className: formClass,
|
|
@@ -147,37 +150,59 @@ const SearchFilter = ({
|
|
|
147
150
|
handleReset: handleReset
|
|
148
151
|
}), /*#__PURE__*/React.createElement("div", {
|
|
149
152
|
className: "filter__wrapper filter__wrapper--search-refine"
|
|
150
|
-
}, !
|
|
153
|
+
}, !shouldGroup && /*#__PURE__*/React.createElement(FiltersList, {
|
|
151
154
|
data: data,
|
|
152
155
|
filters: filters,
|
|
153
156
|
hasUrl: hasUrl,
|
|
154
157
|
entity: entity,
|
|
155
158
|
filterValues: filterValues,
|
|
156
159
|
updateFilterValues: updateFilterValues
|
|
157
|
-
}),
|
|
160
|
+
}), shouldGroup && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FiltersList, {
|
|
158
161
|
data: data,
|
|
159
|
-
filters: filters.slice(0,
|
|
162
|
+
filters: filters.slice(0, groupAfterMobile),
|
|
160
163
|
hasUrl: hasUrl,
|
|
161
164
|
entity: entity,
|
|
162
165
|
filterValues: filterValues,
|
|
163
166
|
updateFilterValues: updateFilterValues
|
|
164
|
-
}), /*#__PURE__*/React.createElement("button", {
|
|
165
|
-
className:
|
|
167
|
+
}), !!groupAfterMobile && /*#__PURE__*/React.createElement("button", {
|
|
168
|
+
className: moreFiltersMobileTogglerClass,
|
|
166
169
|
type: "button",
|
|
167
|
-
onClick: () =>
|
|
170
|
+
onClick: () => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)
|
|
171
|
+
}, "Filters"), /*#__PURE__*/React.createElement("div", {
|
|
172
|
+
className: moreFiltersMobileWrapperClass
|
|
173
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
174
|
+
className: MORE_FILTERS_CLASSES.MOBILE_CONTENT
|
|
175
|
+
}, /*#__PURE__*/React.createElement(FiltersList, {
|
|
176
|
+
data: data,
|
|
177
|
+
filters: filters.slice(groupAfterMobile, groupAfterDesktop ? groupAfterDesktop - 1 : 0),
|
|
178
|
+
hasUrl: hasUrl,
|
|
179
|
+
entity: entity,
|
|
180
|
+
filterValues: filterValues,
|
|
181
|
+
updateFilterValues: updateFilterValues
|
|
182
|
+
}), !!groupAfterDesktop && /*#__PURE__*/React.createElement("button", {
|
|
183
|
+
className: moreFiltersDesktopTogglerClass,
|
|
184
|
+
type: "button",
|
|
185
|
+
onClick: () => setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)
|
|
168
186
|
}, "More filters"), /*#__PURE__*/React.createElement("div", {
|
|
169
|
-
className:
|
|
187
|
+
className: moreFiltersDesktopWrapperClass
|
|
170
188
|
}, /*#__PURE__*/React.createElement("div", {
|
|
171
|
-
className:
|
|
189
|
+
className: MORE_FILTERS_CLASSES.DESKTOP_CONTENT
|
|
172
190
|
}, /*#__PURE__*/React.createElement(FiltersList, {
|
|
173
191
|
data: data,
|
|
174
|
-
filters: filters.slice(
|
|
192
|
+
filters: filters.slice(groupAfterDesktop),
|
|
175
193
|
hasUrl: hasUrl,
|
|
176
194
|
entity: entity,
|
|
177
195
|
filterValues: filterValues,
|
|
178
196
|
updateFilterValues: updateFilterValues
|
|
179
197
|
})), /*#__PURE__*/React.createElement("div", {
|
|
180
|
-
className:
|
|
198
|
+
className: MORE_FILTERS_CLASSES.DESKTOP_BUTTONS
|
|
199
|
+
}, /*#__PURE__*/React.createElement(ResetDesktopForm, {
|
|
200
|
+
handleReset: handleReset
|
|
201
|
+
}), /*#__PURE__*/React.createElement("button", {
|
|
202
|
+
className: "button button--full-width",
|
|
203
|
+
type: "submit"
|
|
204
|
+
}, SEARCH)))), /*#__PURE__*/React.createElement("div", {
|
|
205
|
+
className: MORE_FILTERS_CLASSES.MOBILE_BUTTONS
|
|
181
206
|
}, /*#__PURE__*/React.createElement(ResetDesktopForm, {
|
|
182
207
|
handleReset: handleReset
|
|
183
208
|
}), /*#__PURE__*/React.createElement("button", {
|
|
@@ -209,7 +234,8 @@ SearchFilter.propTypes = {
|
|
|
209
234
|
displaySearchFilter: PropTypes.bool.isRequired,
|
|
210
235
|
setDisplaySearchFilter: PropTypes.func.isRequired,
|
|
211
236
|
isCollapsedOnResponsive: PropTypes.bool.isRequired,
|
|
212
|
-
|
|
237
|
+
groupAfterDesktop: PropTypes.number.isRequired,
|
|
238
|
+
groupAfterMobile: PropTypes.number.isRequired,
|
|
213
239
|
initialFilterValues: PropTypes.object.isRequired
|
|
214
240
|
};
|
|
215
241
|
export default SearchFilter;
|