@blaze-cms/react-page-builder 0.113.0-alpha.7 → 0.113.1
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 +41 -0
- package/lib/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +4 -4
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +11 -8
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +4 -4
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +4 -5
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/package.json +4 -4
- package/src/components/DataSummary/helpers/build-loop-props-content.js +1 -6
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +5 -5
- package/src/components/SearchFilter/SearchFilterContainer.js +7 -4
- package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +24 -0
- package/tests/unit/src/components/SearchFilter/__snapshots__/SearchFilterContainer.test.js.snap +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
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.113.1](https://github.com/thebyte9/blaze/compare/v0.113.0...v0.113.1) (2021-11-24)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* do not display loop data summary prop if label not set ([#3225](https://github.com/thebyte9/blaze/issues/3225)) ([1929b13](https://github.com/thebyte9/blaze/commit/1929b134e1631fda047e4bc142208676fdf2da01))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [0.113.0](https://github.com/thebyte9/blaze/compare/v0.113.0-alpha.9...v0.113.0) (2021-11-19)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [0.113.0-alpha.9](https://github.com/thebyte9/blaze/compare/v0.113.0-alpha.8...v0.113.0-alpha.9) (2021-11-19)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* render form when now aggregations are needed ([#3221](https://github.com/thebyte9/blaze/issues/3221)) ([50f4b15](https://github.com/thebyte9/blaze/commit/50f4b157b9fe74b423d20035a34cb5a7d59fb557))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# [0.113.0-alpha.8](https://github.com/thebyte9/blaze/compare/v0.113.0-alpha.7...v0.113.0-alpha.8) (2021-11-18)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* move submit function above first call ([#3219](https://github.com/thebyte9/blaze/issues/3219)) ([ca0af48](https://github.com/thebyte9/blaze/commit/ca0af4802d144a9825f361a7271788d123e04885))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
6
47
|
# [0.113.0-alpha.7](https://github.com/thebyte9/blaze/compare/v0.113.0-alpha.6...v0.113.0-alpha.7) (2021-11-17)
|
|
7
48
|
|
|
8
49
|
|
|
@@ -86,7 +86,7 @@ var buildLoopPropsContent = function buildLoopPropsContent() {
|
|
|
86
86
|
var propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
|
|
87
87
|
if (!propValue) return null;
|
|
88
88
|
var linkToPublishedContent = (0, _getLinkToPublishedContent["default"])(key, data);
|
|
89
|
-
return [(0, _lodash["default"])(label)
|
|
89
|
+
return [(0, _lodash["default"])(label), propValue, linkToPublishedContent, modifier];
|
|
90
90
|
});
|
|
91
91
|
})).filter(Boolean);
|
|
92
92
|
loopPropsWithContent.push(propsArray);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","modifier","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAAAC,KAAK,EAAI;AAC5B,MAAQC,QAAR,GAAqBD,KAArB,CAAQC,QAAR;AACA,SAAOD,KAAK,CAACC,QAAD,CAAZ;AACD,CAHD;;AAKA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,EAAqC;AAC1D,MAAMC,aAAa,GAAG,EAAtB;AACA,MAAMC,UAAU,GAAG,EAAnB;AAEAJ,EAAAA,cAAc,CAACK,OAAf,CAAuB,UAAAC,OAAO,EAAI;AAChC,QAAQC,mBAAR,GAAgCD,OAAhC,CAAQC,mBAAR;AACAA,IAAAA,mBAAmB,CAACF,OAApB,CAA4B,UAAAG,IAAI,EAAI;AAClC,UAAMX,KAAK,GAAG,8BAAaW,IAAb,EAAmBN,IAAnB,EAAyBI,OAAzB,CAAd;AACA,UAAMG,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcd,KAAd,CAArB;AACA,UAAI,CAACA,KAAL,EAAY;AACZ,UAAMe,cAAc,GAAGX,SAAS,CAACY,QAAV,CAAmBL,IAAnB,KAA4BC,YAAnD;;AAEA,UAAIG,cAAJ,EAAoB;AAClBR,QAAAA,UAAU,CAACI,IAAD,CAAV,GAAmBX,KAAnB;AACD,OAFD,MAEO;AACLM,QAAAA,aAAa,CAACK,IAAD,CAAb,GAAsBX,KAAtB;AACD;AACF,KAXD;AAYD,GAdD;AAeA,SAAO,CAACM,aAAD,EAAgBC,UAAhB,CAAP;AACD,CApBD;;AAsBA,IAAMU,qBAAqB,GAAG,SAAxBA,qBAAwB,GAA+D;AAAA,MAA9Db,SAA8D,uEAAlD,EAAkD;AAAA,MAA9CD,cAA8C,uEAA7B,EAA6B;AAAA,MAAzBe,KAAyB,uEAAjB,CAAiB;AAAA,MAAdb,IAAc,uEAAP,EAAO;AAC3F,MAAMc,oBAAoB,GAAG,EAA7B;;AACA,wBAAoCjB,cAAc,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,CAAlD;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,UAAtB;;AAEA,MAAMa,SAAS,GAAG,mCAAkBb,UAAlB,EAA8BW,KAA9B,CAAlB;;AAJ2F,6BAMlFG,CANkF;AAOzF,QAAMC,UAAU,GAAG,yBACjBnB,cAAc,CAACoB,GAAf,CAAmB,UAAAd,OAAO,EAAI;AAC5B,UAAQC,mBAAR,GAAsDD,OAAtD,CAAQC,mBAAR;AAAA,UAA6Bc,KAA7B,GAAsDf,OAAtD,CAA6Be,KAA7B;AAAA,8BAAsDf,OAAtD,CAAoCgB,QAApC;AAAA,UAAoCA,QAApC,kCAA+C,EAA/C;AAEA,aAAOf,mBAAmB,CAACa,GAApB,CAAwB,UAAAG,GAAG,EAAI;AACpC,YAAMC,SAAS,GAAGpB,UAAU,CAACmB,GAAD,CAA5B;AACA,YAAME,SAAS,GAAGD,SAAS,GAAG5B,YAAY,CAAC4B,SAAS,CAACN,CAAD,CAAV,CAAf,GAAgCf,aAAa,CAACoB,GAAD,CAAxE;AACA,YAAI,CAACE,SAAL,EAAgB,OAAO,IAAP;AAChB,YAAMC,sBAAsB,GAAG,2CAA0BH,GAA1B,EAA+BrB,IAA/B,CAA/B;AACA,eAAO,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","modifier","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":"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","sourcesContent":["import upperFirst from 'lodash.upperfirst';\nimport flatten from 'lodash.flatten';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport getLoopPropsLimit from './get-loop-props-limit';\nimport getPropValue from './get-prop-value';\n\nconst getLoopValue = value => {\n const { keyField } = value;\n return value[keyField];\n};\n\nconst separateValues = (propsToDisplay, loopProps, data) => {\n const regularValues = {};\n const loopValues = {};\n\n propsToDisplay.forEach(options => {\n const { propertiesToDisplay } = options;\n propertiesToDisplay.forEach(prop => {\n const value = getPropValue(prop, data, options);\n const isArrayValue = Array.isArray(value);\n if (!value) return;\n const isLoopableProp = loopProps.includes(prop) && isArrayValue;\n\n if (isLoopableProp) {\n loopValues[prop] = value;\n } else {\n regularValues[prop] = value;\n }\n });\n });\n return [regularValues, loopValues];\n};\n\nconst buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {\n const loopPropsWithContent = [];\n const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);\n\n const loopLimit = getLoopPropsLimit(loopValues, limit);\n\n for (let i = 0; i < loopLimit; i += 1) {\n const propsArray = flatten(\n propsToDisplay.map(options => {\n const { propertiesToDisplay, label, modifier = '' } = options;\n\n return propertiesToDisplay.map(key => {\n const loopValue = loopValues[key];\n const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];\n if (!propValue) return null;\n const linkToPublishedContent = getLinkToPublishedContent(key, data);\n return [upperFirst(label), propValue, linkToPublishedContent, modifier];\n });\n })\n ).filter(Boolean);\n loopPropsWithContent.push(propsArray);\n }\n\n return flatten(loopPropsWithContent);\n};\n\nexport default buildLoopPropsContent;\n"],"file":"build-loop-props-content.js"}
|
|
@@ -134,6 +134,10 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
134
134
|
filterValues = _useReducer2[0],
|
|
135
135
|
dispatch = _useReducer2[1];
|
|
136
136
|
|
|
137
|
+
var handleSubmit = (0, _lodash["default"])(function (newValues) {
|
|
138
|
+
var newQuery = (0, _helpers.buildQuery)(newValues, filters);
|
|
139
|
+
handleSearch(newQuery);
|
|
140
|
+
}, 200);
|
|
137
141
|
(0, _react.useEffect)(function () {
|
|
138
142
|
if (window && !pageWidth) {
|
|
139
143
|
setPageWidth(window.innerWidth);
|
|
@@ -195,10 +199,6 @@ var SearchFilter = function SearchFilter(_ref) {
|
|
|
195
199
|
});
|
|
196
200
|
};
|
|
197
201
|
|
|
198
|
-
var handleSubmit = (0, _lodash["default"])(function (newValues) {
|
|
199
|
-
var newQuery = (0, _helpers.buildQuery)(newValues, filters);
|
|
200
|
-
handleSearch(newQuery);
|
|
201
|
-
}, 200);
|
|
202
202
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/_react["default"].createElement("form", {
|
|
203
203
|
ref: searchFilterRef,
|
|
204
204
|
className: formClass,
|
|
@@ -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","window","innerWidth","handleResize","target","addEventListener","removeEventListener","handleSubmit","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersWrapperClass","moreFiltersTogglerClass","formId","handleReset","updateFilterValues","newQuery","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 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 const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\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","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"}
|
|
@@ -139,15 +139,18 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
139
139
|
error = _useQuery.error,
|
|
140
140
|
loading = _useQuery.loading;
|
|
141
141
|
|
|
142
|
-
if (loading
|
|
142
|
+
if (loading) return null;
|
|
143
143
|
if (error) return error.message;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
var
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
144
|
+
if (!filters.length) return null;
|
|
145
|
+
|
|
146
|
+
var _ref3 = data || {},
|
|
147
|
+
_ref3$searchPublished = _ref3.searchPublishedContent;
|
|
148
|
+
|
|
149
|
+
_ref3$searchPublished = _ref3$searchPublished === void 0 ? {} : _ref3$searchPublished;
|
|
150
|
+
var _ref3$searchPublished2 = _ref3$searchPublished.rawResults;
|
|
151
|
+
_ref3$searchPublished2 = _ref3$searchPublished2 === void 0 ? {} : _ref3$searchPublished2;
|
|
152
|
+
var _ref3$searchPublished3 = _ref3$searchPublished2.aggregations,
|
|
153
|
+
filterData = _ref3$searchPublished3 === void 0 ? {} : _ref3$searchPublished3;
|
|
151
154
|
var initialFilterValues = (0, _helpers.getInitialFilterValues)(filterData, filters, query);
|
|
152
155
|
|
|
153
156
|
var handleSearch = function handleSearch(newQuery) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfter","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","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfter","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 groupAfter\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 groupAfter={groupAfter}\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 groupAfter: PropTypes.number\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfter: 0\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"file":"SearchFilterContainer.js"}
|
|
@@ -51,7 +51,7 @@ const buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, d
|
|
|
51
51
|
const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
|
|
52
52
|
if (!propValue) return null;
|
|
53
53
|
const linkToPublishedContent = getLinkToPublishedContent(key, data);
|
|
54
|
-
return [upperFirst(label)
|
|
54
|
+
return [upperFirst(label), propValue, linkToPublishedContent, modifier];
|
|
55
55
|
});
|
|
56
56
|
})).filter(Boolean);
|
|
57
57
|
loopPropsWithContent.push(propsArray);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["upperFirst","flatten","getLinkToPublishedContent","getLoopPropsLimit","getPropValue","getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","modifier","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":"AAAA,OAAOA,UAAP,MAAuB,mBAAvB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,OAAOC,yBAAP,MAAsC,iCAAtC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,YAAP,MAAyB,kBAAzB;;AAEA,MAAMC,YAAY,GAAGC,KAAK,IAAI;AAC5B,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AACA,SAAOA,KAAK,CAACC,QAAD,CAAZ;AACD,CAHD;;AAKA,MAAMC,cAAc,GAAG,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,KAAqC;AAC1D,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAMC,UAAU,GAAG,EAAnB;AAEAJ,EAAAA,cAAc,CAACK,OAAf,CAAuBC,OAAO,IAAI;AAChC,UAAM;AAAEC,MAAAA;AAAF,QAA0BD,OAAhC;AACAC,IAAAA,mBAAmB,CAACF,OAApB,CAA4BG,IAAI,IAAI;AAClC,YAAMX,KAAK,GAAGF,YAAY,CAACa,IAAD,EAAON,IAAP,EAAaI,OAAb,CAA1B;AACA,YAAMG,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcd,KAAd,CAArB;AACA,UAAI,CAACA,KAAL,EAAY;AACZ,YAAMe,cAAc,GAAGX,SAAS,CAACY,QAAV,CAAmBL,IAAnB,KAA4BC,YAAnD;;AAEA,UAAIG,cAAJ,EAAoB;AAClBR,QAAAA,UAAU,CAACI,IAAD,CAAV,GAAmBX,KAAnB;AACD,OAFD,MAEO;AACLM,QAAAA,aAAa,CAACK,IAAD,CAAb,GAAsBX,KAAtB;AACD;AACF,KAXD;AAYD,GAdD;AAeA,SAAO,CAACM,aAAD,EAAgBC,UAAhB,CAAP;AACD,CApBD;;AAsBA,MAAMU,qBAAqB,GAAG,CAACb,SAAS,GAAG,EAAb,EAAiBD,cAAc,GAAG,EAAlC,EAAsCe,KAAK,GAAG,CAA9C,EAAiDb,IAAI,GAAG,EAAxD,KAA+D;AAC3F,QAAMc,oBAAoB,GAAG,EAA7B;AACA,QAAM,CAACb,aAAD,EAAgBC,UAAhB,IAA8BL,cAAc,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,CAAlD;AAEA,QAAMe,SAAS,GAAGvB,iBAAiB,CAACU,UAAD,EAAaW,KAAb,CAAnC;;AAEA,OAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,SAApB,EAA+BC,CAAC,IAAI,CAApC,EAAuC;AACrC,UAAMC,UAAU,GAAG3B,OAAO,CACxBQ,cAAc,CAACoB,GAAf,CAAmBd,OAAO,IAAI;AAC5B,YAAM;AAAEC,QAAAA,mBAAF;AAAuBc,QAAAA,KAAvB;AAA8BC,QAAAA,QAAQ,GAAG;AAAzC,UAAgDhB,OAAtD;AAEA,aAAOC,mBAAmB,CAACa,GAApB,CAAwBG,GAAG,IAAI;AACpC,cAAMC,SAAS,GAAGpB,UAAU,CAACmB,GAAD,CAA5B;AACA,cAAME,SAAS,GAAGD,SAAS,GAAG5B,YAAY,CAAC4B,SAAS,CAACN,CAAD,CAAV,CAAf,GAAgCf,aAAa,CAACoB,GAAD,CAAxE;AACA,YAAI,CAACE,SAAL,EAAgB,OAAO,IAAP;AAChB,cAAMC,sBAAsB,GAAGjC,yBAAyB,CAAC8B,GAAD,EAAMrB,IAAN,CAAxD;AACA,eAAO,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["upperFirst","flatten","getLinkToPublishedContent","getLoopPropsLimit","getPropValue","getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","modifier","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":"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","sourcesContent":["import upperFirst from 'lodash.upperfirst';\nimport flatten from 'lodash.flatten';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport getLoopPropsLimit from './get-loop-props-limit';\nimport getPropValue from './get-prop-value';\n\nconst getLoopValue = value => {\n const { keyField } = value;\n return value[keyField];\n};\n\nconst separateValues = (propsToDisplay, loopProps, data) => {\n const regularValues = {};\n const loopValues = {};\n\n propsToDisplay.forEach(options => {\n const { propertiesToDisplay } = options;\n propertiesToDisplay.forEach(prop => {\n const value = getPropValue(prop, data, options);\n const isArrayValue = Array.isArray(value);\n if (!value) return;\n const isLoopableProp = loopProps.includes(prop) && isArrayValue;\n\n if (isLoopableProp) {\n loopValues[prop] = value;\n } else {\n regularValues[prop] = value;\n }\n });\n });\n return [regularValues, loopValues];\n};\n\nconst buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {\n const loopPropsWithContent = [];\n const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);\n\n const loopLimit = getLoopPropsLimit(loopValues, limit);\n\n for (let i = 0; i < loopLimit; i += 1) {\n const propsArray = flatten(\n propsToDisplay.map(options => {\n const { propertiesToDisplay, label, modifier = '' } = options;\n\n return propertiesToDisplay.map(key => {\n const loopValue = loopValues[key];\n const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];\n if (!propValue) return null;\n const linkToPublishedContent = getLinkToPublishedContent(key, data);\n return [upperFirst(label), propValue, linkToPublishedContent, modifier];\n });\n })\n ).filter(Boolean);\n loopPropsWithContent.push(propsArray);\n }\n\n return flatten(loopPropsWithContent);\n};\n\nexport default buildLoopPropsContent;\n"],"file":"build-loop-props-content.js"}
|
|
@@ -61,6 +61,10 @@ const SearchFilter = ({
|
|
|
61
61
|
const [pageWidth, setPageWidth] = useState(null);
|
|
62
62
|
const [moreFiltersCollapsed, setMoreFiltersCollapsed] = useState(true);
|
|
63
63
|
const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);
|
|
64
|
+
const handleSubmit = debounce(newValues => {
|
|
65
|
+
const newQuery = buildQuery(newValues, filters);
|
|
66
|
+
handleSearch(newQuery);
|
|
67
|
+
}, 200);
|
|
64
68
|
useEffect(() => {
|
|
65
69
|
if (window && !pageWidth) {
|
|
66
70
|
setPageWidth(window.innerWidth);
|
|
@@ -125,10 +129,6 @@ const SearchFilter = ({
|
|
|
125
129
|
});
|
|
126
130
|
};
|
|
127
131
|
|
|
128
|
-
const handleSubmit = debounce(newValues => {
|
|
129
|
-
const newQuery = buildQuery(newValues, filters);
|
|
130
|
-
handleSearch(newQuery);
|
|
131
|
-
}, 200);
|
|
132
132
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/React.createElement("form", {
|
|
133
133
|
ref: searchFilterRef,
|
|
134
134
|
className: formClass,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"names":["React","useState","useEffect","useReducer","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","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","window","innerWidth","handleResize","target","addEventListener","removeEventListener","handleSubmit","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersWrapperClass","moreFiltersTogglerClass","formId","handleReset","updateFilterValues","newQuery","e","preventDefault","slice","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 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 const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\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":["React","useState","useEffect","useReducer","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","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","propTypes","object","isRequired","array","bool","string","func","number"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,UAArC,QAAuD,OAAvD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,SAASC,eAAT,EAA0BC,UAA1B,EAAsCC,sBAAtC,QAAoE,YAApE;AACA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AACA,SAASC,MAAT,EAAiBC,MAAjB,QAA+B,cAA/B;;AAEA,MAAMC,OAAO,GAAG,CAACC,KAAD,EAAQC,MAAR,KAAmB;AACjC,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,IAAb;AAAmBC,IAAAA,YAAY,GAAG;AAAlC,MAA2CH,MAAjD;;AAEA,UAAQE,IAAR;AACE,SAAK,QAAL;AACE,2DAAYH,KAAZ,GAAsBE,SAAtB;AAAiCE,QAAAA;AAAjC;;AACF,SAAK,aAAL;AACE,6CAAYJ,KAAZ;AAAmBI,QAAAA,YAAY,EAAE;AAAjC;;AACF,SAAK,OAAL;AACE,6CAAYF,SAAZ;AAAuBE,QAAAA;AAAvB;;AACF;AACE,YAAM,IAAIC,KAAJ,EAAN;AARJ;AAUD,CAbD;;AAeA,MAAMC,YAAY,GAAG,CAAC;AACpBC,EAAAA,eADoB;AAEpBC,EAAAA,IAFoB;AAGpBC,EAAAA,OAHoB;AAIpBC,EAAAA,MAJoB;AAKpBC,EAAAA,MALoB;AAMpBC,EAAAA,YANoB;AAOpBC,EAAAA,IAPoB;AAQpBC,EAAAA,uBARoB;AASpBC,EAAAA,mBAToB;AAUpBC,EAAAA,sBAVoB;AAWpBC,EAAAA,mBAXoB;AAYpBC,EAAAA;AAZoB,CAAD,KAaf;AACJ,QAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4BpC,QAAQ,CAAC,IAAD,CAA1C;AACA,QAAM,CAACqC,SAAD,EAAYC,YAAZ,IAA4BtC,QAAQ,CAAC,IAAD,CAA1C;AACA,QAAM,CAACuC,oBAAD,EAAuBC,uBAAvB,IAAkDxC,QAAQ,CAAC,IAAD,CAAhE;AACA,QAAM,CAACyC,YAAD,EAAeC,QAAf,IAA2BxC,UAAU,CAACa,OAAD,EAAUkB,mBAAV,CAA3C;AAEA,QAAMU,YAAY,GAAGtC,QAAQ,CAACa,SAAS,IAAI;AACzC,UAAM0B,QAAQ,GAAGpC,UAAU,CAACU,SAAD,EAAYO,OAAZ,CAA3B;AACAG,IAAAA,YAAY,CAACgB,QAAD,CAAZ;AACD,GAH4B,EAG1B,GAH0B,CAA7B;AAKA3C,EAAAA,SAAS,CACP,MAAM;AACJ,QAAI4C,MAAM,IAAI,CAACR,SAAf,EAA0B;AACxBC,MAAAA,YAAY,CAACO,MAAM,CAACC,UAAR,CAAZ;AACAV,MAAAA,YAAY,CAAC7B,eAAe,EAAhB,CAAZ;AACD;;AAED,UAAMwC,YAAY,GAAG,CAAC;AAAEC,MAAAA,MAAM,EAAE;AAAEF,QAAAA;AAAF;AAAV,KAAD,KAAgC;AACnDV,MAAAA,YAAY,CAAC7B,eAAe,EAAhB,CAAZ;AACA+B,MAAAA,YAAY,CAACQ,UAAD,CAAZ;AACA,UAAIX,SAAJ,EAAeH,sBAAsB,CAAC,KAAD,CAAtB;AAChB,KAJD;;AAMAa,IAAAA,MAAM,CAACI,gBAAP,CAAwB,QAAxB,EAAkCF,YAAlC;AACA,WAAO,MAAM;AACXF,MAAAA,MAAM,CAACK,mBAAP,CAA2B,QAA3B,EAAqCH,YAArC;AACD,KAFD;AAGD,GAjBM,EAkBP,CAACZ,SAAD,EAAYE,SAAZ,EAAuBL,sBAAvB,CAlBO,CAAT;AAqBA/B,EAAAA,SAAS,CACP,MAAM;AACJ,QAAIwC,YAAY,CAACrB,YAAjB,EAA+B;AAC7BuB,MAAAA,YAAY,CAACF,YAAD,CAAZ;AACAC,MAAAA,QAAQ,CAAC;AAAEvB,QAAAA,IAAI,EAAE;AAAR,OAAD,CAAR;AACD;AACF,GANM,EAOP,CAACsB,YAAD,EAAeE,YAAf,CAPO,CAAT;AAUA,MAAIQ,sBAAsB,GAAG,IAA7B;AACA,MAAIC,qBAAqB,GAAG,KAA5B;;AAEA,MAAI,CAACjB,SAAD,IAAcL,uBAAlB,EAA2C;AACzCsB,IAAAA,qBAAqB,GAAGrB,mBAAxB;AACAoB,IAAAA,sBAAsB,GAAG,KAAzB;AACD;;AAED,QAAME,SAAS,GAAGjD,UAAU,CAAC;AAC3B,yCAAqCgD;AADV,GAAD,CAA5B;AAIA,QAAME,uBAAuB,GAAGlD,UAAU,CAAC,8BAAD,EAAiC;AACzE,0CAAsC,CAACmC;AADkC,GAAjC,CAA1C;AAIA,QAAMgB,uBAAuB,GAAGnD,UAAU,CAAC,8BAAD,EAAiC;AACzE,0CAAsC,CAACmC;AADkC,GAAjC,CAA1C;AAIA,QAAMiB,MAAM,GAAI,UAAS3B,IAAK,OAA9B;;AAEA,QAAM4B,WAAW,GAAG,MAAM;AACxB,UAAMvC,SAAS,GAAGT,sBAAsB,CAACe,IAAD,EAAOC,OAAP,EAAgB,EAAhB,CAAxC;AAEAiB,IAAAA,QAAQ,CAAC;AAAExB,MAAAA,SAAF;AAAaC,MAAAA,IAAI,EAAE;AAAnB,KAAD,CAAR;AACD,GAJD;;AAMA,QAAMuC,kBAAkB,GAAG,CAACxC,SAAD,EAAYE,YAAZ,KAA6B;AACtDsB,IAAAA,QAAQ,CAAC;AAAExB,MAAAA,SAAF;AAAaE,MAAAA,YAAb;AAA2BD,MAAAA,IAAI,EAAE;AAAjC,KAAD,CAAR;AACD,GAFD;;AAIA,sBACE,0CACGgC,sBAAsB,IAAIC,qBAA1B,gBACC;AACE,IAAA,GAAG,EAAE7B,eADP;AAEE,IAAA,SAAS,EAAE8B,SAFb;AAGE,mBAAaG,MAHf;AAIE,IAAA,EAAE,EAAEA,MAJN;AAKE,IAAA,QAAQ,EAAEG,CAAC,IAAI;AACbA,MAAAA,CAAC,CAACC,cAAF;AACA,YAAMhB,QAAQ,GAAGpC,UAAU,CAACiC,YAAD,EAAehB,OAAf,CAA3B;AACAG,MAAAA,YAAY,CAACgB,QAAD,CAAZ;AACD;AATH,KAUGQ,qBAAqB,iBACpB,oBAAC,eAAD;AAAiB,IAAA,WAAW,EAAE,MAAMpB,sBAAsB,CAAC,KAAD;AAA1D,IAXJ,eAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGmB,sBAAsB,iBAAI,oBAAC,gBAAD;AAAkB,IAAA,WAAW,EAAEM;AAA/B,IAD7B,eAGE;AAAK,IAAA,SAAS,EAAC;AAAf,KACG,CAACvB,UAAD,iBACC,oBAAC,WAAD;AACE,IAAA,IAAI,EAAEV,IADR;AAEE,IAAA,OAAO,EAAEC,OAFX;AAGE,IAAA,MAAM,EAAEC,MAHV;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,YAAY,EAAEc,YALhB;AAME,IAAA,kBAAkB,EAAEiB;AANtB,IAFJ,EAYG,CAAC,CAACxB,UAAF,iBACC,uDACE,oBAAC,WAAD;AACE,IAAA,IAAI,EAAEV,IADR;AAEE,IAAA,OAAO,EAAEC,OAAO,CAACoC,KAAR,CAAc,CAAd,EAAiB3B,UAAjB,CAFX;AAGE,IAAA,MAAM,EAAER,MAHV;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,YAAY,EAAEc,YALhB;AAME,IAAA,kBAAkB,EAAEiB;AANtB,IADF,eAUE;AACE,IAAA,SAAS,EAAEH,uBADb;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,OAAO,EAAE,MAAMf,uBAAuB,CAAC,CAACD,oBAAF;AAHxC,oBAVF,eAiBE;AAAK,IAAA,SAAS,EAAEe;AAAhB,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,WAAD;AACE,IAAA,IAAI,EAAE9B,IADR;AAEE,IAAA,OAAO,EAAEC,OAAO,CAACoC,KAAR,CAAc3B,UAAd,CAFX;AAGE,IAAA,MAAM,EAAER,MAHV;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,YAAY,EAAEc,YALhB;AAME,IAAA,kBAAkB,EAAEiB;AANtB,IADF,CADF,eAYE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,gBAAD;AAAkB,IAAA,WAAW,EAAED;AAA/B,IADF,eAGE;AAAQ,IAAA,SAAS,EAAC,2BAAlB;AAA8C,IAAA,IAAI,EAAC;AAAnD,KACG5C,MADH,CAHF,CAZF,CAjBF,CAbJ,eAqDE,+BArDF,EAuDGsC,sBAAsB,iBACrB;AAAQ,IAAA,SAAS,EAAC,2BAAlB;AAA8C,IAAA,IAAI,EAAC;AAAnD,KACGtC,MADH,CAxDJ,CAHF,CAdF,EAgFGuC,qBAAqB,iBAAI,oBAAC,iBAAD;AAAmB,IAAA,MAAM,EAAEI,MAA3B;AAAmC,IAAA,WAAW,EAAEC;AAAhD,IAhF5B,CADD,gBAoFC,0CACG3B,uBAAuB,iBACtB;AACE,IAAA,SAAS,EAAC,6CADZ;AAEE,mBAAY;AAFd,kBAGE;AAAK,IAAA,IAAI,EAAC,QAAV;AAAmB,IAAA,OAAO,EAAE,MAAME,sBAAsB,CAAC,IAAD;AAAxD,KACGlB,MADH,CAHF,CAFJ,CArFJ,CADF;AAoGD,CA3LD;;AA6LAQ,YAAY,CAACwC,SAAb,GAAyB;AACvBtC,EAAAA,IAAI,EAAErB,SAAS,CAAC4D,MAAV,CAAiBC,UADA;AAEvBvC,EAAAA,OAAO,EAAEtB,SAAS,CAAC8D,KAAV,CAAgBD,UAFF;AAGvBzC,EAAAA,eAAe,EAAEpB,SAAS,CAAC4D,MAAV,CAAiBC,UAHX;AAIvBtC,EAAAA,MAAM,EAAEvB,SAAS,CAAC+D,IAAV,CAAeF,UAJA;AAKvBrC,EAAAA,MAAM,EAAExB,SAAS,CAACgE,MAAV,CAAiBH,UALF;AAMvBpC,EAAAA,YAAY,EAAEzB,SAAS,CAACiE,IAAV,CAAeJ,UANN;AAOvBnC,EAAAA,IAAI,EAAE1B,SAAS,CAACgE,MAAV,CAAiBH,UAPA;AAQvBjC,EAAAA,mBAAmB,EAAE5B,SAAS,CAAC+D,IAAV,CAAeF,UARb;AASvBhC,EAAAA,sBAAsB,EAAE7B,SAAS,CAACiE,IAAV,CAAeJ,UAThB;AAUvBlC,EAAAA,uBAAuB,EAAE3B,SAAS,CAAC+D,IAAV,CAAeF,UAVjB;AAWvB9B,EAAAA,UAAU,EAAE/B,SAAS,CAACkE,MAAV,CAAiBL,UAXN;AAYvB/B,EAAAA,mBAAmB,EAAE9B,SAAS,CAAC4D,MAAV,CAAiBC;AAZf,CAAzB;AAeA,eAAe1C,YAAf","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"}
|
|
@@ -67,17 +67,16 @@ const SearchFilterContainer = ({
|
|
|
67
67
|
// we only want aggs so limit=0 for no search results
|
|
68
68
|
skip: !rawQueryStringified
|
|
69
69
|
});
|
|
70
|
-
if (loading
|
|
70
|
+
if (loading) return null;
|
|
71
71
|
if (error) return error.message;
|
|
72
|
+
if (!filters.length) return null;
|
|
72
73
|
const {
|
|
73
74
|
searchPublishedContent: {
|
|
74
75
|
rawResults: {
|
|
75
|
-
aggregations: filterData
|
|
76
|
+
aggregations: filterData = {}
|
|
76
77
|
} = {}
|
|
77
78
|
} = {}
|
|
78
|
-
} = data;
|
|
79
|
-
const shouldDisplayForm = !!filters.length && !loading;
|
|
80
|
-
if (!shouldDisplayForm || !filterData) return null;
|
|
79
|
+
} = data || {};
|
|
81
80
|
const initialFilterValues = getInitialFilterValues(filterData, filters, query);
|
|
82
81
|
|
|
83
82
|
const handleSearch = newQuery => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["React","useState","useRef","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","decodeValue","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfter","router","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","hasUrl","currentUrl","query","sort","sortby","asPath","sortValues","baseQuery","action","rawQueryStringified","checkboxSelectValues","rangeValues","forEach","type","propsToDisplay","includes","push","docType","data","error","loading","variables","limit","skip","message","searchPublishedContent","rawResults","aggregations","filterData","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"names":["React","useState","useRef","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","decodeValue","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfter","router","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","hasUrl","currentUrl","query","sort","sortby","asPath","sortValues","baseQuery","action","rawQueryStringified","checkboxSelectValues","rangeValues","forEach","type","propsToDisplay","includes","push","docType","data","error","loading","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","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 groupAfter\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 groupAfter={groupAfter}\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 groupAfter: PropTypes.number\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfter: 0\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"file":"SearchFilterContainer.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.113.
|
|
3
|
+
"version": "0.113.1",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"@blaze-cms/core-auth-ui": "^0.102.0",
|
|
31
31
|
"@blaze-cms/core-errors": "^0.102.0",
|
|
32
32
|
"@blaze-cms/image-cdn-react": "^0.2.0",
|
|
33
|
-
"@blaze-cms/nextjs-components": "^0.113.0
|
|
33
|
+
"@blaze-cms/nextjs-components": "^0.113.0",
|
|
34
34
|
"@blaze-cms/setup-ui": "^0.92.0",
|
|
35
|
-
"@blaze-cms/utils": "^0.113.0
|
|
35
|
+
"@blaze-cms/utils": "^0.113.0",
|
|
36
36
|
"@blaze-react/button": "0.5.19",
|
|
37
37
|
"@blaze-react/checkboxes": "0.5.31",
|
|
38
38
|
"@blaze-react/drafteditor": "0.7.0",
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
"lib/*",
|
|
89
89
|
"lib-es/*"
|
|
90
90
|
],
|
|
91
|
-
"gitHead": "
|
|
91
|
+
"gitHead": "132ae7c2cf405ee942f926e99a60d4723a9a68d9"
|
|
92
92
|
}
|
|
@@ -47,12 +47,7 @@ const buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, d
|
|
|
47
47
|
const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
|
|
48
48
|
if (!propValue) return null;
|
|
49
49
|
const linkToPublishedContent = getLinkToPublishedContent(key, data);
|
|
50
|
-
return [
|
|
51
|
-
upperFirst(label) || upperFirst(key),
|
|
52
|
-
propValue,
|
|
53
|
-
linkToPublishedContent,
|
|
54
|
-
modifier
|
|
55
|
-
];
|
|
50
|
+
return [upperFirst(label), propValue, linkToPublishedContent, modifier];
|
|
56
51
|
});
|
|
57
52
|
})
|
|
58
53
|
).filter(Boolean);
|
|
@@ -43,6 +43,11 @@ const SearchFilter = ({
|
|
|
43
43
|
const [moreFiltersCollapsed, setMoreFiltersCollapsed] = useState(true);
|
|
44
44
|
const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);
|
|
45
45
|
|
|
46
|
+
const handleSubmit = debounce(newValues => {
|
|
47
|
+
const newQuery = buildQuery(newValues, filters);
|
|
48
|
+
handleSearch(newQuery);
|
|
49
|
+
}, 200);
|
|
50
|
+
|
|
46
51
|
useEffect(
|
|
47
52
|
() => {
|
|
48
53
|
if (window && !pageWidth) {
|
|
@@ -106,11 +111,6 @@ const SearchFilter = ({
|
|
|
106
111
|
dispatch({ newValues, shouldSearch, type: 'update' });
|
|
107
112
|
};
|
|
108
113
|
|
|
109
|
-
const handleSubmit = debounce(newValues => {
|
|
110
|
-
const newQuery = buildQuery(newValues, filters);
|
|
111
|
-
handleSearch(newQuery);
|
|
112
|
-
}, 200);
|
|
113
|
-
|
|
114
114
|
return (
|
|
115
115
|
<>
|
|
116
116
|
{isDesktopFormDisplayed || isMobileFormDisplayed ? (
|
|
@@ -61,11 +61,14 @@ const SearchFilterContainer = ({
|
|
|
61
61
|
variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results
|
|
62
62
|
skip: !rawQueryStringified
|
|
63
63
|
});
|
|
64
|
-
|
|
64
|
+
|
|
65
|
+
if (loading) return null;
|
|
65
66
|
if (error) return error.message;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
if (!filters.length) return null;
|
|
68
|
+
|
|
69
|
+
const { searchPublishedContent: { rawResults: { aggregations: filterData = {} } = {} } = {} } =
|
|
70
|
+
data || {};
|
|
71
|
+
|
|
69
72
|
const initialFilterValues = getInitialFilterValues(filterData, filters, query);
|
|
70
73
|
|
|
71
74
|
const handleSearch = newQuery => {
|
|
@@ -57,4 +57,28 @@ describe('buildLoopPropsContent helper function', () => {
|
|
|
57
57
|
it('should return looped data based on limit if is reachable', () => {
|
|
58
58
|
expect(withLimit).toEqual(mockedResults[3]);
|
|
59
59
|
});
|
|
60
|
+
|
|
61
|
+
it('should have empty label if label is not set', () => {
|
|
62
|
+
const withNoLabel = buildLoopPropsContent(
|
|
63
|
+
mockedLoopProps,
|
|
64
|
+
[
|
|
65
|
+
{
|
|
66
|
+
bold: false,
|
|
67
|
+
enableLink: true,
|
|
68
|
+
label: '',
|
|
69
|
+
modifier: '',
|
|
70
|
+
prefix: '',
|
|
71
|
+
propertiesToDisplay: ['nestedLoopProp.nestedValue'],
|
|
72
|
+
shouldStrip: true
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
0,
|
|
76
|
+
mockedData[0]
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
withNoLabel.forEach(([label]) => {
|
|
80
|
+
expect(label).toEqual('');
|
|
81
|
+
});
|
|
82
|
+
expect.hasAssertions();
|
|
83
|
+
});
|
|
60
84
|
});
|
package/tests/unit/src/components/SearchFilter/__snapshots__/SearchFilterContainer.test.js.snap
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`SearchFilter container should match snapshot 1`] =
|
|
3
|
+
exports[`SearchFilter container should match snapshot 1`] = `
|
|
4
|
+
<DocumentFragment>
|
|
5
|
+
<div>
|
|
6
|
+
Mocked component
|
|
7
|
+
</div>
|
|
8
|
+
</DocumentFragment>
|
|
9
|
+
`;
|
|
4
10
|
|
|
5
11
|
exports[`SearchFilter container should return null if no filters are passed 1`] = `<DocumentFragment />`;
|