@blaze-cms/react-page-builder 0.124.0 → 0.124.1-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 +33 -0
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +22 -5
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/components/Range.js +24 -8
- package/lib/components/SearchFilter/components/Range.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-filters-query.js +46 -5
- package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +16 -10
- package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js +6 -6
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-range-value.js +4 -2
- package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +17 -4
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Range.js +20 -8
- package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js +43 -5
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +15 -10
- package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +5 -4
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js +2 -2
- package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/package.json +2 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
- package/src/components/SearchFilter/SearchFilterContainer.js +21 -4
- package/src/components/SearchFilter/components/Range.js +19 -16
- package/src/components/SearchFilter/helpers/build-filters-query.js +26 -5
- package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +17 -12
- package/src/components/SearchFilter/helpers/get-initial-filter-values.js +5 -2
- package/src/components/SearchFilter/helpers/get-range-value.js +2 -2
- package/tests/unit/src/components/SearchFilter/components/Range.test.js +24 -0
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/Range.test.js.snap +3 -3
- package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,39 @@
|
|
|
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.124.1-alpha.3](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.2...v0.124.1-alpha.3) (2022-08-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* search filter handles range values, show range filter even when min/max are the same ([#3568](https://github.com/thebyte9/blaze/issues/3568)) ([0c7e561](https://github.com/thebyte9/blaze/commit/0c7e561bd4bbd8fff9968dfa373cfa66ffc7a8ae))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.124.1-alpha.2](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.1...v0.124.1-alpha.2) (2022-08-23)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* resolve reset filters not updating filter options ([#3563](https://github.com/thebyte9/blaze/issues/3563)) ([b230507](https://github.com/thebyte9/blaze/commit/b230507476b811f0a4d141b8e20956738c53d2fc))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [0.124.1-alpha.1](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.0...v0.124.1-alpha.1) (2022-08-19)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* search filter component handling range values properly ([#3559](https://github.com/thebyte9/blaze/issues/3559)) ([8a261b4](https://github.com/thebyte9/blaze/commit/8a261b4b4ac472290654761e068621317f5a242f))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
6
39
|
# [0.124.0](https://github.com/thebyte9/blaze/compare/v0.124.0-alpha.43...v0.124.0) (2022-08-08)
|
|
7
40
|
|
|
8
41
|
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
@@ -112,11 +112,12 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
112
112
|
var formId = "filter-".concat(name, "-form");
|
|
113
113
|
|
|
114
114
|
var handleReset = function handleReset() {
|
|
115
|
-
var newValues = (0, _helpers.getInitialFilterValues)(
|
|
115
|
+
var newValues = (0, _helpers.getInitialFilterValues)(null, filters, {});
|
|
116
116
|
setAppliedFilters({
|
|
117
117
|
newValues: newValues,
|
|
118
118
|
type: 'reset'
|
|
119
119
|
});
|
|
120
|
+
doSubmit(newValues);
|
|
120
121
|
};
|
|
121
122
|
|
|
122
123
|
var updateFilterValues = function updateFilterValues(newValues, shouldSubmit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFilter.js","names":["SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","groupAfterDesktop","groupAfterMobile","filterValues","setAppliedFilters","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","doSubmit","newValues","newQuery","handleSubmit","shouldSearch","type","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"],"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"sourcesContent":["import React, { useState, useEffect } 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 SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n groupAfterDesktop,\n groupAfterMobile,\n filterValues,\n setAppliedFilters\n}) => {\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n\n const doSubmit = (newValues = filterValues) => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n setMoreFiltersDesktopCollapsed(true);\n setMoreFiltersMobileCollapsed(true);\n };\n\n const handleSubmit = debounce(newValues => {\n doSubmit(newValues);\n }, 200);\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n setAppliedFilters({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit, setAppliedFilters]\n );\n\n const formClass = classnames('filter__form filter__form--initial', {\n 'filter__form--mobile': isCollapsedOnResponsive && displaySearchFilter,\n 'filter__form--collapsible': isCollapsedOnResponsive\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 setAppliedFilters({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n setAppliedFilters({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n doSubmit();\n }}>\n {displaySearchFilter && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n <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 data-testId=\"search-filter-mobile-toggler\"\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 data-testId=\"search-filter-desktop-toggler\"\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 {!displaySearchFilter && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {displaySearchFilter && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n\n {isCollapsedOnResponsive &&\n !displaySearchFilter && (\n <div className=\"filter__refine filter__refine--mobile-close\" data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\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 filterValues: PropTypes.object.isRequired,\n setAppliedFilters: PropTypes.func.isRequired\n};\n\nexport default SearchFilter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchFilter.js","names":["SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","groupAfterDesktop","groupAfterMobile","filterValues","setAppliedFilters","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","doSubmit","newValues","newQuery","handleSubmit","shouldSearch","type","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"],"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"sourcesContent":["import React, { useState, useEffect } 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 SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n groupAfterDesktop,\n groupAfterMobile,\n filterValues,\n setAppliedFilters\n}) => {\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n\n const doSubmit = (newValues = filterValues) => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n setMoreFiltersDesktopCollapsed(true);\n setMoreFiltersMobileCollapsed(true);\n };\n\n const handleSubmit = debounce(newValues => {\n doSubmit(newValues);\n }, 200);\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n setAppliedFilters({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit, setAppliedFilters]\n );\n\n const formClass = classnames('filter__form filter__form--initial', {\n 'filter__form--mobile': isCollapsedOnResponsive && displaySearchFilter,\n 'filter__form--collapsible': isCollapsedOnResponsive\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(null, filters, {});\n setAppliedFilters({ newValues, type: 'reset' });\n doSubmit(newValues);\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n setAppliedFilters({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n doSubmit();\n }}>\n {displaySearchFilter && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n <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 data-testId=\"search-filter-mobile-toggler\"\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 data-testId=\"search-filter-desktop-toggler\"\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 {!displaySearchFilter && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {displaySearchFilter && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n\n {isCollapsedOnResponsive &&\n !displaySearchFilter && (\n <div className=\"filter__refine filter__refine--mobile-close\" data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\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 filterValues: PropTypes.object.isRequired,\n setAppliedFilters: PropTypes.func.isRequired\n};\n\nexport default SearchFilter;\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.object.keys.js");
|
|
4
|
-
|
|
5
3
|
require("core-js/modules/es.symbol.js");
|
|
6
4
|
|
|
7
5
|
require("core-js/modules/es.array.filter.js");
|
|
@@ -47,6 +45,8 @@ require("core-js/modules/es.array.includes.js");
|
|
|
47
45
|
|
|
48
46
|
require("core-js/modules/es.string.includes.js");
|
|
49
47
|
|
|
48
|
+
require("core-js/modules/es.object.keys.js");
|
|
49
|
+
|
|
50
50
|
require("core-js/modules/es.date.now.js");
|
|
51
51
|
|
|
52
52
|
require("core-js/modules/es.date.to-string.js");
|
|
@@ -108,7 +108,7 @@ var reducer = function reducer(state, action) {
|
|
|
108
108
|
|
|
109
109
|
case 'reset':
|
|
110
110
|
return _objectSpread(_objectSpread({}, newValues), {}, {
|
|
111
|
-
shouldSearch:
|
|
111
|
+
shouldSearch: false
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
default:
|
|
@@ -141,7 +141,13 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
141
141
|
displaySearchFilter = _useState4[0],
|
|
142
142
|
setDisplaySearchFilter = _useState4[1];
|
|
143
143
|
|
|
144
|
-
var
|
|
144
|
+
var _useState5 = (0, _react.useState)(asPath),
|
|
145
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
146
|
+
urlPath = _useState6[0],
|
|
147
|
+
setUrlPath = _useState6[1]; // used as asPath can take too long to update
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
var _parseUrl = (0, _queryString.parseUrl)(urlPath),
|
|
145
151
|
currentUrl = _parseUrl.url,
|
|
146
152
|
_parseUrl$query = _parseUrl.query,
|
|
147
153
|
sort = _parseUrl$query.sort,
|
|
@@ -153,6 +159,9 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
153
159
|
filterValues = _useReducer2[0],
|
|
154
160
|
dispatch = _useReducer2[1];
|
|
155
161
|
|
|
162
|
+
(0, _react.useEffect)(function () {
|
|
163
|
+
if (asPath) setUrlPath(asPath);
|
|
164
|
+
}, [asPath]);
|
|
156
165
|
var hasUrl = !!url;
|
|
157
166
|
var sortValues = sort && sortby ? (0, _queryString.stringify)({
|
|
158
167
|
sort: sort,
|
|
@@ -176,7 +185,13 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
176
185
|
var _getEntityData = (0, _helpers2.getEntityData)(entity),
|
|
177
186
|
docType = _getEntityData.docType;
|
|
178
187
|
|
|
179
|
-
var filtersQuery = shouldAddFilters ? (0, _helpers.buildFiltersQuery)(
|
|
188
|
+
var filtersQuery = shouldAddFilters ? (0, _helpers.buildFiltersQuery)({
|
|
189
|
+
query: filterValues,
|
|
190
|
+
filterBy: filterBy,
|
|
191
|
+
filterByProperty: filterByProperty,
|
|
192
|
+
rangeValues: rangeValues,
|
|
193
|
+
queryKeys: Object.keys(query)
|
|
194
|
+
}) : [];
|
|
180
195
|
var rawQueryStringified = (0, _helpers.buildRawQueryStringified)(checkboxSelectValues, rangeValues, docType, filtersQuery);
|
|
181
196
|
|
|
182
197
|
var _useQuery = (0, _client.useQuery)(action, {
|
|
@@ -215,6 +230,7 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
215
230
|
|
|
216
231
|
if (!newQuery) {
|
|
217
232
|
scrollToFirstList();
|
|
233
|
+
setUrlPath(baseQuery);
|
|
218
234
|
return router.push('/Resolver', baseQuery, {
|
|
219
235
|
shallow: !hasUrl,
|
|
220
236
|
scroll: false
|
|
@@ -225,6 +241,7 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
225
241
|
|
|
226
242
|
var newUrl = (0, _helpers.buildNewQuery)(url, currentUrl, newQuery, sortValues);
|
|
227
243
|
scrollToFirstList();
|
|
244
|
+
setUrlPath(newUrl);
|
|
228
245
|
return router.push('/Resolver', newUrl, {
|
|
229
246
|
shallow: !hasUrl,
|
|
230
247
|
scroll: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFilterContainer.js","names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","currentUrl","query","sort","sortby","filterValues","dispatch","hasUrl","sortValues","baseQuery","RAW_RESULTS","checkboxSelectValues","rangeValues","forEach","propsToDisplay","CHECKBOX_SELECT","includes","push","RANGE","docType","filtersQuery","rawQueryStringified","variables","limit","skip","data","error","message","length","searchPublishedContent","rawResults","filterData","aggregations","dataNotSet","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"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\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 buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } 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 SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(asPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\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 const filtersQuery = shouldAddFilters\n ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty)\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = 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 (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\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 if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\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 filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchFilterContainer.js","names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","currentUrl","query","sort","sortby","filterValues","dispatch","hasUrl","sortValues","baseQuery","RAW_RESULTS","checkboxSelectValues","rangeValues","forEach","propsToDisplay","CHECKBOX_SELECT","includes","push","RANGE","docType","filtersQuery","queryKeys","Object","keys","rawQueryStringified","variables","limit","skip","data","error","message","length","searchPublishedContent","rawResults","filterData","aggregations","dataNotSet","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"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\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 buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } 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: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\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 const filtersQuery = shouldAddFilters\n ? buildFiltersQuery({\n query: filterValues,\n filterBy,\n filterByProperty,\n rangeValues,\n queryKeys: Object.keys(query)\n })\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = 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 (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\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 setUrlPath(newUrl);\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 if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\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 filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
@@ -27,6 +27,8 @@ require("core-js/modules/es.object.to-string.js");
|
|
|
27
27
|
|
|
28
28
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
29
29
|
|
|
30
|
+
require("core-js/modules/es.array.concat.js");
|
|
31
|
+
|
|
30
32
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
31
33
|
|
|
32
34
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -60,6 +62,7 @@ var Range = function Range(_ref) {
|
|
|
60
62
|
label = _ref.label,
|
|
61
63
|
entity = _ref.entity,
|
|
62
64
|
propsToDisplay = _ref.propsToDisplay,
|
|
65
|
+
dataAggregations = _ref.dataAggregations,
|
|
63
66
|
updateFilterValues = _ref.updateFilterValues,
|
|
64
67
|
filterValues = _ref.filterValues,
|
|
65
68
|
shouldSearch = _ref.shouldSearch;
|
|
@@ -82,10 +85,22 @@ var Range = function Range(_ref) {
|
|
|
82
85
|
getEntitySchema = _useGetSingleEntitySc3 === void 0 ? {} : _useGetSingleEntitySc3,
|
|
83
86
|
loading = _useGetSingleEntitySc.loading;
|
|
84
87
|
if (loading || !rangeOption || !rangeValue) return '';
|
|
85
|
-
var options = (0, _helpers.getSelectOptions)(getEntitySchema, propsToDisplay);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
var options = (0, _helpers.getSelectOptions)(getEntitySchema, propsToDisplay); // get range from aggregations so it updates
|
|
89
|
+
|
|
90
|
+
var _calculateMinMax = (0, _helpers.calculateMinMax)(dataAggregations[rangeOption], rangeInterval),
|
|
91
|
+
min = _calculateMinMax.min,
|
|
92
|
+
max = _calculateMinMax.max;
|
|
93
|
+
|
|
94
|
+
var minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
|
|
95
|
+
var maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
|
|
96
|
+
|
|
97
|
+
var valueToUse = _objectSpread(_objectSpread({}, rangeValue), {}, {
|
|
98
|
+
min: min,
|
|
99
|
+
max: max,
|
|
100
|
+
minValue: minValue,
|
|
101
|
+
maxValue: maxValue
|
|
102
|
+
});
|
|
103
|
+
|
|
89
104
|
var handleChange = (0, _lodash["default"])(function (option, value) {
|
|
90
105
|
updateFilterValues((0, _defineProperty2["default"])({}, option, _objectSpread(_objectSpread({}, value), {}, {
|
|
91
106
|
selectedOption: rangeOption
|
|
@@ -110,11 +125,11 @@ var Range = function Range(_ref) {
|
|
|
110
125
|
});
|
|
111
126
|
updateFilterValues(updatedOptions, false);
|
|
112
127
|
}
|
|
113
|
-
})),
|
|
114
|
-
key: rangeOption,
|
|
128
|
+
})), /*#__PURE__*/_react["default"].createElement(_rangeFilter["default"], {
|
|
129
|
+
key: "".concat(rangeOption, "-").concat(minValue, "-").concat(maxValue),
|
|
115
130
|
name: rangeOption,
|
|
116
131
|
label: hasMultipleOptions ? '' : label,
|
|
117
|
-
value:
|
|
132
|
+
value: valueToUse,
|
|
118
133
|
id: rangeOption,
|
|
119
134
|
onChange: function onChange(_ref3) {
|
|
120
135
|
var value = _ref3.value;
|
|
@@ -130,7 +145,8 @@ Range.propTypes = {
|
|
|
130
145
|
updateFilterValues: _propTypes["default"].func.isRequired,
|
|
131
146
|
shouldSearch: _propTypes["default"].bool,
|
|
132
147
|
rangeInterval: _propTypes["default"].number,
|
|
133
|
-
label: _propTypes["default"].string
|
|
148
|
+
label: _propTypes["default"].string,
|
|
149
|
+
dataAggregations: _propTypes["default"].object.isRequired
|
|
134
150
|
};
|
|
135
151
|
Range.defaultProps = {
|
|
136
152
|
shouldSearch: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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","
|
|
1
|
+
{"version":3,"file":"Range.js","names":["Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","asPath","query","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","minValue","maxValue","valueToUse","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","PropTypes","array","isRequired","string","object","func","bool","number","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Range.js"],"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, calculateMinMax } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n dataAggregations,\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 // get range from aggregations so it updates\n const { min, max } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);\n const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;\n const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;\n const valueToUse = { ...rangeValue, min, max, minValue, maxValue };\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 <RangeFilter\n key={`${rangeOption}-${minValue}-${maxValue}`}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={valueToUse}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\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 dataAggregations: PropTypes.object.isRequired\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAG,SAARA,KAAQ,OASR;EAAA,IARJC,aAQI,QARJA,aAQI;EAAA,IAPJC,KAOI,QAPJA,KAOI;EAAA,IANJC,MAMI,QANJA,MAMI;EAAA,IALJC,cAKI,QALJA,cAKI;EAAA,IAJJC,gBAII,QAJJA,gBAII;EAAA,IAHJC,kBAGI,QAHJA,kBAGI;EAAA,IAFJC,YAEI,QAFJA,YAEI;EAAA,IADJC,YACI,QADJA,YACI;EACJ,IAAMC,MAAM,GAAG,wBAAf;EACA,IAAMC,cAAc,GAAGF,YAAY,GAAG,IAAH,GAAU,GAA7C;;EACA,gBAAkB,2BAAS,+BAAYC,MAAM,CAACE,MAAnB,CAAT,CAAlB;EAAA,IAAQC,KAAR,aAAQA,KAAR;;EACA,IAAMC,kBAAkB,GAAGT,cAAc,CAACU,MAAf,GAAwB,CAAnD;EACA,IAAMC,kBAAkB,GAAG,iCAAmBH,KAAnB,EAA0BR,cAA1B,KAA6CA,cAAc,CAAC,CAAD,CAAtF;EACA,IAAMY,WAAW,GACdT,YAAY,CAACQ,kBAAD,CAAZ,IAAoCR,YAAY,CAACQ,kBAAD,CAAZ,CAAiCE,cAAtE,IACAF,kBAFF;EAGA,IAAMG,UAAU,GAAGX,YAAY,CAACS,WAAD,CAA/B;;EAEA,4BAAyD,qCACvDb,MADuD,EAEvD,CAACU,kBAFsD,CAAzD;EAAA,mDAAQM,IAAR;;EAAA,6DAAyC,EAAzC;EAAA,oDAAgBC,eAAhB;EAAA,IAAgBA,eAAhB,uCAAkC,EAAlC;EAAA,IAA6CC,OAA7C,yBAA6CA,OAA7C;EAKA,IAAIA,OAAO,IAAI,CAACL,WAAZ,IAA2B,CAACE,UAAhC,EAA4C,OAAO,EAAP;EAE5C,IAAMI,OAAO,GAAG,+BAAiBF,eAAjB,EAAkChB,cAAlC,CAAhB,CAlBI,CAmBJ;;EACA,uBAAqB,8BAAgBC,gBAAgB,CAACW,WAAD,CAAhC,EAA+Cf,aAA/C,CAArB;EAAA,IAAQsB,GAAR,oBAAQA,GAAR;EAAA,IAAaC,GAAb,oBAAaA,GAAb;;EACA,IAAMC,QAAQ,GAAGP,UAAU,CAACO,QAAX,GAAsBF,GAAtB,GAA4BA,GAA5B,GAAkCL,UAAU,CAACO,QAA9D;EACA,IAAMC,QAAQ,GAAGR,UAAU,CAACQ,QAAX,GAAsBF,GAAtB,GAA4BA,GAA5B,GAAkCN,UAAU,CAACQ,QAA9D;;EACA,IAAMC,UAAU,mCAAQT,UAAR;IAAoBK,GAAG,EAAHA,GAApB;IAAyBC,GAAG,EAAHA,GAAzB;IAA8BC,QAAQ,EAARA,QAA9B;IAAwCC,QAAQ,EAARA;EAAxC,EAAhB;;EAEA,IAAME,YAAY,GAAG,wBAAS,UAACC,MAAD,EAASC,KAAT,EAAmB;IAC/CxB,kBAAkB,sCAAIuB,MAAJ,kCAAkBC,KAAlB;MAAyBb,cAAc,EAAED;IAAzC,KAA0DR,YAA1D,CAAlB;EACD,CAFoB,EAElBE,cAFkB,CAArB;EAIA,oBACE,kEACGG,kBAAkB,iBACjB,+EACE,+CAAQX,KAAR,CADF,eAEE,gCAAC,kBAAD;IACE,KAAK,EAAEc,WADT;IAEE,EAAE,EAAEA,WAFN;IAGE,OAAO,EAAEM,OAHX;IAIE,QAAQ,MAJV;IAKE,QAAQ,EAAE,yBAAe;MAAA,IAAZQ,KAAY,SAAZA,KAAY;MACvB,IAAMC,cAAc,GAAG,EAAvB;MACA3B,cAAc,CAAC4B,OAAf,CAAuB,UAAAC,IAAI,EAAI;QAC7B,yBAAiC1B,YAAY,CAAC0B,IAAD,CAA7C;QAAA,IAAaC,IAAb,sBAAQX,GAAR;QAAA,IAAwBY,IAAxB,sBAAmBX,GAAnB;QACA,IAAMY,SAAS,GAAG,4BAAc,IAAd,EAAoBnC,aAApB,EAAmCiC,IAAnC,EAAyCC,IAAzC,CAAlB;QACAJ,cAAc,CAACE,IAAD,CAAd,mCAA4BG,SAA5B;UAAuCnB,cAAc,EAAEa;QAAvD;MACD,CAJD;MAMAxB,kBAAkB,CAACyB,cAAD,EAAiB,KAAjB,CAAlB;IACD;EAdH,EAFF,CAFJ,eAsBE,gCAAC,uBAAD;IACE,GAAG,YAAKf,WAAL,cAAoBS,QAApB,cAAgCC,QAAhC,CADL;IAEE,IAAI,EAAEV,WAFR;IAGE,KAAK,EAAEH,kBAAkB,GAAG,EAAH,GAAQX,KAHnC;IAIE,KAAK,EAAEyB,UAJT;IAKE,EAAE,EAAEX,WALN;IAME,QAAQ,EAAE,yBAAe;MAAA,IAAZc,KAAY,SAAZA,KAAY;MACvBF,YAAY,CAACZ,WAAD,EAAcc,KAAd,CAAZ;IACD;EARH,EAtBF,CADF;AAmCD,CAzED;;AA2EA9B,KAAK,CAACqC,SAAN,GAAkB;EAChBjC,cAAc,EAAEkC,sBAAUC,KAAV,CAAgBC,UADhB;EAEhBrC,MAAM,EAAEmC,sBAAUG,MAAV,CAAiBD,UAFT;EAGhBjC,YAAY,EAAE+B,sBAAUI,MAAV,CAAiBF,UAHf;EAIhBlC,kBAAkB,EAAEgC,sBAAUK,IAAV,CAAeH,UAJnB;EAKhBhC,YAAY,EAAE8B,sBAAUM,IALR;EAMhB3C,aAAa,EAAEqC,sBAAUO,MANT;EAOhB3C,KAAK,EAAEoC,sBAAUG,MAPD;EAQhBpC,gBAAgB,EAAEiC,sBAAUI,MAAV,CAAiBF;AARnB,CAAlB;AAWAxC,KAAK,CAAC8C,YAAN,GAAqB;EACnBtC,YAAY,EAAE,KADK;EAEnBP,aAAa,EAAE,CAFI;EAGnBC,KAAK,EAAE;AAHY,CAArB;;eAMe,oBAAUF,KAAV,C"}
|
|
@@ -13,6 +13,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
13
13
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
|
|
16
|
+
require("core-js/modules/es.number.constructor.js");
|
|
17
|
+
|
|
16
18
|
require("core-js/modules/es.array.is-array.js");
|
|
17
19
|
|
|
18
20
|
require("core-js/modules/es.array.for-each.js");
|
|
@@ -23,13 +25,40 @@ require("core-js/modules/web.dom-collections.for-each.js");
|
|
|
23
25
|
|
|
24
26
|
require("core-js/modules/es.object.keys.js");
|
|
25
27
|
|
|
28
|
+
require("core-js/modules/es.array.includes.js");
|
|
29
|
+
|
|
30
|
+
require("core-js/modules/es.string.includes.js");
|
|
31
|
+
|
|
26
32
|
require("core-js/modules/es.regexp.exec.js");
|
|
27
33
|
|
|
28
34
|
require("core-js/modules/es.string.split.js");
|
|
29
35
|
|
|
30
36
|
require("core-js/modules/es.array.index-of.js");
|
|
31
37
|
|
|
32
|
-
var
|
|
38
|
+
var QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];
|
|
39
|
+
|
|
40
|
+
var builFilterObject = function builFilterObject(_ref) {
|
|
41
|
+
var queryKey = _ref.queryKey,
|
|
42
|
+
value = _ref.value,
|
|
43
|
+
filters = _ref.filters,
|
|
44
|
+
isRange = _ref.isRange,
|
|
45
|
+
isInQuery = _ref.isInQuery;
|
|
46
|
+
|
|
47
|
+
if (isRange) {
|
|
48
|
+
// don't add to query if value matches range values
|
|
49
|
+
if (isInQuery || value.min !== value.minValue && value.max !== value.maxValue) {
|
|
50
|
+
filters.push({
|
|
51
|
+
range: (0, _defineProperty2["default"])({}, queryKey, {
|
|
52
|
+
gte: Number(value.minValue),
|
|
53
|
+
lte: Number(value.maxValue)
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var key = isRange ? queryKey : "".concat(queryKey, ".keyword");
|
|
33
62
|
var isArray = Array.isArray(value);
|
|
34
63
|
|
|
35
64
|
if (!isArray) {
|
|
@@ -47,14 +76,26 @@ var builFilterObject = function builFilterObject(key, value, filters) {
|
|
|
47
76
|
});
|
|
48
77
|
};
|
|
49
78
|
|
|
50
|
-
var buildFiltersQuery = function buildFiltersQuery(
|
|
79
|
+
var buildFiltersQuery = function buildFiltersQuery(_ref2) {
|
|
80
|
+
var query = _ref2.query,
|
|
81
|
+
filterBy = _ref2.filterBy,
|
|
82
|
+
filterByProperty = _ref2.filterByProperty,
|
|
83
|
+
rangeValues = _ref2.rangeValues,
|
|
84
|
+
queryKeys = _ref2.queryKeys;
|
|
51
85
|
var mustFilters = [];
|
|
52
86
|
Object.keys(query).forEach(function (queryKey) {
|
|
53
|
-
if (queryKey
|
|
87
|
+
if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
|
|
54
88
|
if (!queryKey || !query[queryKey]) return;
|
|
55
89
|
var queryValue = query[queryKey];
|
|
56
|
-
var
|
|
57
|
-
|
|
90
|
+
var isRange = rangeValues.includes(queryKey);
|
|
91
|
+
var isInQuery = queryKeys.includes(queryKey);
|
|
92
|
+
builFilterObject({
|
|
93
|
+
queryKey: queryKey,
|
|
94
|
+
value: queryValue,
|
|
95
|
+
filters: mustFilters,
|
|
96
|
+
isRange: isRange,
|
|
97
|
+
isInQuery: isInQuery
|
|
98
|
+
});
|
|
58
99
|
});
|
|
59
100
|
|
|
60
101
|
if (filterByProperty && filterByProperty.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-filters-query.js","names":["builFilterObject","
|
|
1
|
+
{"version":3,"file":"build-filters-query.js","names":["QUERY_KEYS_TO_IGNORE","builFilterObject","queryKey","value","filters","isRange","isInQuery","min","minValue","max","maxValue","push","range","gte","Number","lte","key","isArray","Array","singleFilterObj","match","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","rangeValues","queryKeys","mustFilters","Object","keys","includes","queryValue","length","filterByPropOption","split","filterByPropKey","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];\n\nconst builFilterObject = ({ queryKey, value, filters, isRange, isInQuery }) => {\n if (isRange) {\n // don't add to query if value matches range values\n if (isInQuery || (value.min !== value.minValue && value.max !== value.maxValue)) {\n filters.push({\n range: {\n [queryKey]: {\n gte: Number(value.minValue),\n lte: Number(value.maxValue)\n }\n }\n });\n }\n return;\n }\n\n const key = isRange ? queryKey : `${queryKey}.keyword`;\n\n const isArray = Array.isArray(value);\n if (!isArray) {\n const singleFilterObj = { match: { [key]: value } };\n filters.push(singleFilterObj);\n return;\n }\n\n value.forEach(filterValue => {\n filters.push({ match: { [key]: filterValue } });\n });\n};\nconst buildFiltersQuery = ({ query, filterBy, filterByProperty, rangeValues, queryKeys }) => {\n const mustFilters = [];\n Object.keys(query).forEach(queryKey => {\n if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;\n if (!queryKey || !query[queryKey]) return;\n const queryValue = query[queryKey];\n\n const isRange = rangeValues.includes(queryKey);\n const isInQuery = queryKeys.includes(queryKey);\n builFilterObject({ queryKey, value: queryValue, filters: mustFilters, isRange, isInQuery });\n });\n\n if (filterByProperty && filterByProperty.length) {\n filterByProperty &&\n filterByProperty.forEach(filterByPropOption => {\n const [filterByPropKey] = filterByPropOption.split('/');\n filterBy.forEach(filterByOption => {\n if (filterByOption.indexOf(filterByPropKey) === -1) return;\n const [, filteryByValue] = filterByOption.split('/');\n const filterByKeyword = `${filterByPropKey}.keyword`;\n if (!filteryByValue) return;\n mustFilters.push({ match: { [filterByKeyword]: filteryByValue } });\n });\n });\n }\n\n return mustFilters;\n};\n\nexport default buildFiltersQuery;\n"],"mappings":"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"}
|
|
@@ -17,7 +17,8 @@ require("core-js/modules/es.array.concat.js");
|
|
|
17
17
|
|
|
18
18
|
var _constants = require("../constants");
|
|
19
19
|
|
|
20
|
-
var buildRawQueryStringified = function buildRawQueryStringified(checkboxSelectValues, rangeValues, entity
|
|
20
|
+
var buildRawQueryStringified = function buildRawQueryStringified(checkboxSelectValues, rangeValues, entity) {
|
|
21
|
+
var mustFilters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
21
22
|
if (!checkboxSelectValues.length && !rangeValues.length) return '';
|
|
22
23
|
var aggs = {};
|
|
23
24
|
checkboxSelectValues.forEach(function (fieldName) {
|
|
@@ -35,21 +36,26 @@ var buildRawQueryStringified = function buildRawQueryStringified(checkboxSelectV
|
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
});
|
|
39
|
+
var boolFilter = {
|
|
40
|
+
should: [{
|
|
41
|
+
match: {
|
|
42
|
+
docType: entity
|
|
43
|
+
}
|
|
44
|
+
}],
|
|
45
|
+
minimum_should_match: 1
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
if (mustFilters.length) {
|
|
49
|
+
boolFilter.must = mustFilters;
|
|
50
|
+
}
|
|
51
|
+
|
|
38
52
|
return JSON.stringify({
|
|
39
53
|
aggs: aggs,
|
|
40
54
|
size: 0,
|
|
41
55
|
query: {
|
|
42
56
|
bool: {
|
|
43
57
|
filter: {
|
|
44
|
-
bool:
|
|
45
|
-
should: [{
|
|
46
|
-
match: {
|
|
47
|
-
docType: entity
|
|
48
|
-
}
|
|
49
|
-
}],
|
|
50
|
-
must: mustFilters,
|
|
51
|
-
minimum_should_match: 1
|
|
52
|
-
}
|
|
58
|
+
bool: boolFilter
|
|
53
59
|
}
|
|
54
60
|
}
|
|
55
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-raw-query-stringified.js","names":["buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","mustFilters","length","aggs","forEach","fieldName","terms","field","KEYWORD","size","SIZE","stats","
|
|
1
|
+
{"version":3,"file":"build-raw-query-stringified.js","names":["buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","mustFilters","length","aggs","forEach","fieldName","terms","field","KEYWORD","size","SIZE","stats","boolFilter","should","match","docType","minimum_should_match","must","JSON","stringify","query","bool","filter"],"sources":["../../../../src/components/SearchFilter/helpers/build-raw-query-stringified.js"],"sourcesContent":["import { KEYWORD, SIZE } from '../constants';\n\nconst buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mustFilters = []) => {\n if (!checkboxSelectValues.length && !rangeValues.length) return '';\n\n const aggs = {};\n\n checkboxSelectValues.forEach(fieldName => {\n aggs[fieldName] = {\n terms: {\n field: `${fieldName}.${KEYWORD}`,\n size: SIZE\n }\n };\n });\n\n rangeValues.forEach(fieldName => {\n aggs[fieldName] = {\n stats: {\n field: fieldName\n }\n };\n });\n\n const boolFilter = {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n };\n\n if (mustFilters.length) {\n boolFilter.must = mustFilters;\n }\n\n return JSON.stringify({\n aggs,\n size: 0,\n query: {\n bool: {\n filter: {\n bool: boolFilter\n }\n }\n }\n });\n};\n\nexport default buildRawQueryStringified;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,oBAAD,EAAuBC,WAAvB,EAAoCC,MAApC,EAAiE;EAAA,IAArBC,WAAqB,uEAAP,EAAO;EAChG,IAAI,CAACH,oBAAoB,CAACI,MAAtB,IAAgC,CAACH,WAAW,CAACG,MAAjD,EAAyD,OAAO,EAAP;EAEzD,IAAMC,IAAI,GAAG,EAAb;EAEAL,oBAAoB,CAACM,OAArB,CAA6B,UAAAC,SAAS,EAAI;IACxCF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBC,KAAK,EAAE;QACLC,KAAK,YAAKF,SAAL,cAAkBG,kBAAlB,CADA;QAELC,IAAI,EAAEC;MAFD;IADS,CAAlB;EAMD,CAPD;EASAX,WAAW,CAACK,OAAZ,CAAoB,UAAAC,SAAS,EAAI;IAC/BF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBM,KAAK,EAAE;QACLJ,KAAK,EAAEF;MADF;IADS,CAAlB;EAKD,CAND;EAQA,IAAMO,UAAU,GAAG;IACjBC,MAAM,EAAE,CACN;MACEC,KAAK,EAAE;QACLC,OAAO,EAAEf;MADJ;IADT,CADM,CADS;IAQjBgB,oBAAoB,EAAE;EARL,CAAnB;;EAWA,IAAIf,WAAW,CAACC,MAAhB,EAAwB;IACtBU,UAAU,CAACK,IAAX,GAAkBhB,WAAlB;EACD;;EAED,OAAOiB,IAAI,CAACC,SAAL,CAAe;IACpBhB,IAAI,EAAJA,IADoB;IAEpBM,IAAI,EAAE,CAFc;IAGpBW,KAAK,EAAE;MACLC,IAAI,EAAE;QACJC,MAAM,EAAE;UACND,IAAI,EAAET;QADA;MADJ;IADD;EAHa,CAAf,CAAP;AAWD,CAhDD;;eAkDef,wB"}
|
|
@@ -30,19 +30,19 @@ var getInitialFilterValues = function getInitialFilterValues(filterData, filters
|
|
|
30
30
|
filterValues[_constants.SEARCH_TERM] = query[_constants.SEARCH_TERM] || '';
|
|
31
31
|
|
|
32
32
|
if (!filterData) {
|
|
33
|
-
filters.forEach(function (
|
|
34
|
-
var
|
|
35
|
-
key =
|
|
33
|
+
filters.forEach(function (filterProps) {
|
|
34
|
+
var _filterProps$propsToD = (0, _slicedToArray2["default"])(filterProps.propsToDisplay, 1),
|
|
35
|
+
key = _filterProps$propsToD[0];
|
|
36
36
|
|
|
37
|
-
filterValues[key] = null;
|
|
37
|
+
filterValues[key] = query[key] ? (0, _getFilterValueFromQuery["default"])(key, filterProps, {}, query) : null;
|
|
38
38
|
});
|
|
39
39
|
filterValues.dataNotSet = true;
|
|
40
40
|
return filterValues;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
Object.keys(filterData).forEach(function (key) {
|
|
44
|
-
var filterProps = filters.find(function (
|
|
45
|
-
var propsToDisplay =
|
|
44
|
+
var filterProps = filters.find(function (_ref) {
|
|
45
|
+
var propsToDisplay = _ref.propsToDisplay;
|
|
46
46
|
return propsToDisplay.find(function (prop) {
|
|
47
47
|
return key === prop;
|
|
48
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-initial-filter-values.js","names":["getInitialFilterValues","filterData","filters","query","filterValues","SEARCH_TERM","forEach","propsToDisplay","key","dataNotSet","Object","keys","
|
|
1
|
+
{"version":3,"file":"get-initial-filter-values.js","names":["getInitialFilterValues","filterData","filters","query","filterValues","SEARCH_TERM","forEach","filterProps","propsToDisplay","key","dataNotSet","Object","keys","find","prop"],"sources":["../../../../src/components/SearchFilter/helpers/get-initial-filter-values.js"],"sourcesContent":["import { SEARCH_TERM } from '../constants';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\n\nconst getInitialFilterValues = (filterData, filters, query) => {\n const filterValues = {};\n filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';\n\n if (!filterData) {\n filters.forEach(filterProps => {\n const {\n propsToDisplay: [key]\n } = filterProps;\n filterValues[key] = query[key] ? getFilterValueFromQuery(key, filterProps, {}, query) : null;\n });\n filterValues.dataNotSet = true;\n return filterValues;\n }\n\n Object.keys(filterData).forEach(key => {\n const filterProps =\n filters.find(({ propsToDisplay }) => propsToDisplay.find(prop => key === prop)) || {};\n filterValues[key] = getFilterValueFromQuery(key, filterProps, filterData[key], query);\n });\n\n filterValues.dataNotSet = false;\n\n return filterValues;\n};\n\nexport default getInitialFilterValues;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,UAAD,EAAaC,OAAb,EAAsBC,KAAtB,EAAgC;EAC7D,IAAMC,YAAY,GAAG,EAArB;EACAA,YAAY,CAACC,sBAAD,CAAZ,GAA4BF,KAAK,CAACE,sBAAD,CAAL,IAAsB,EAAlD;;EAEA,IAAI,CAACJ,UAAL,EAAiB;IACfC,OAAO,CAACI,OAAR,CAAgB,UAAAC,WAAW,EAAI;MAC7B,4DAEIA,WAFJ,CACEC,cADF;MAAA,IACmBC,GADnB;;MAGAL,YAAY,CAACK,GAAD,CAAZ,GAAoBN,KAAK,CAACM,GAAD,CAAL,GAAa,yCAAwBA,GAAxB,EAA6BF,WAA7B,EAA0C,EAA1C,EAA8CJ,KAA9C,CAAb,GAAoE,IAAxF;IACD,CALD;IAMAC,YAAY,CAACM,UAAb,GAA0B,IAA1B;IACA,OAAON,YAAP;EACD;;EAEDO,MAAM,CAACC,IAAP,CAAYX,UAAZ,EAAwBK,OAAxB,CAAgC,UAAAG,GAAG,EAAI;IACrC,IAAMF,WAAW,GACfL,OAAO,CAACW,IAAR,CAAa;MAAA,IAAGL,cAAH,QAAGA,cAAH;MAAA,OAAwBA,cAAc,CAACK,IAAf,CAAoB,UAAAC,IAAI;QAAA,OAAIL,GAAG,KAAKK,IAAZ;MAAA,CAAxB,CAAxB;IAAA,CAAb,KAAmF,EADrF;IAEAV,YAAY,CAACK,GAAD,CAAZ,GAAoB,yCAAwBA,GAAxB,EAA6BF,WAA7B,EAA0CN,UAAU,CAACQ,GAAD,CAApD,EAA2DN,KAA3D,CAApB;EACD,CAJD;EAMAC,YAAY,CAACM,UAAb,GAA0B,KAA1B;EAEA,OAAON,YAAP;AACD,CAxBD;;eA0BeJ,sB"}
|
|
@@ -17,6 +17,8 @@ require("core-js/modules/es.string.split.js");
|
|
|
17
17
|
|
|
18
18
|
require("core-js/modules/es.number.constructor.js");
|
|
19
19
|
|
|
20
|
+
require("core-js/modules/es.number.is-nan.js");
|
|
21
|
+
|
|
20
22
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
21
23
|
|
|
22
24
|
var _calculateMinMax2 = _interopRequireDefault(require("./calculate-min-max"));
|
|
@@ -38,8 +40,8 @@ var getRangeValue = function getRangeValue(rawQueryProp, rangeInterval, _min, _m
|
|
|
38
40
|
var updatedMinValue = Number(queryParamMin);
|
|
39
41
|
var updatedMaxValue = Number(queryParamMax);
|
|
40
42
|
return {
|
|
41
|
-
min: min,
|
|
42
|
-
max: max,
|
|
43
|
+
min: Number.isNaN(min) ? updatedMinValue : min,
|
|
44
|
+
max: Number.isNaN(max) ? updatedMaxValue : max,
|
|
43
45
|
step: rangeInterval,
|
|
44
46
|
maxValue: updatedMaxValue,
|
|
45
47
|
minValue: updatedMinValue
|