@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.
Files changed (40) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
  3. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  4. package/lib/components/SearchFilter/SearchFilterContainer.js +22 -5
  5. package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  6. package/lib/components/SearchFilter/components/Range.js +24 -8
  7. package/lib/components/SearchFilter/components/Range.js.map +1 -1
  8. package/lib/components/SearchFilter/helpers/build-filters-query.js +46 -5
  9. package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
  10. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +16 -10
  11. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  12. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js +6 -6
  13. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  14. package/lib/components/SearchFilter/helpers/get-range-value.js +4 -2
  15. package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  16. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
  17. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  18. package/lib-es/components/SearchFilter/SearchFilterContainer.js +17 -4
  19. package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  20. package/lib-es/components/SearchFilter/components/Range.js +20 -8
  21. package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
  22. package/lib-es/components/SearchFilter/helpers/build-filters-query.js +43 -5
  23. package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
  24. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +15 -10
  25. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  26. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +5 -4
  27. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  28. package/lib-es/components/SearchFilter/helpers/get-range-value.js +2 -2
  29. package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +2 -1
  32. package/src/components/SearchFilter/SearchFilterContainer.js +21 -4
  33. package/src/components/SearchFilter/components/Range.js +19 -16
  34. package/src/components/SearchFilter/helpers/build-filters-query.js +26 -5
  35. package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +17 -12
  36. package/src/components/SearchFilter/helpers/get-initial-filter-values.js +5 -2
  37. package/src/components/SearchFilter/helpers/get-range-value.js +2 -2
  38. package/tests/unit/src/components/SearchFilter/components/Range.test.js +24 -0
  39. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Range.test.js.snap +3 -3
  40. package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"get-range-value.js","names":["getRangeValue","rawQueryProp","rangeInterval","_min","_max","min","max","Array","isArray","split","queryParamMin","queryParamMax","updatedMinValue","Number","updatedMaxValue","step","maxValue","minValue"],"sources":["../../../../src/components/SearchFilter/helpers/get-range-value.js"],"sourcesContent":["import calculateMinMax from './calculate-min-max';\n\nconst getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {\n const { min, max } = calculateMinMax({ min: _min, max: _max }, rangeInterval);\n\n if (rawQueryProp) {\n const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp)\n ? rawQueryProp[0].split('-')\n : rawQueryProp.split('-');\n const updatedMinValue = Number(queryParamMin);\n const updatedMaxValue = Number(queryParamMax);\n\n return {\n min,\n max,\n step: rangeInterval,\n maxValue: updatedMaxValue,\n minValue: updatedMinValue\n };\n }\n\n return {\n max,\n min,\n step: rangeInterval,\n maxValue: max,\n minValue: min\n };\n};\n\nexport default getRangeValue;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,YAAD,EAAeC,aAAf,EAA8BC,IAA9B,EAAoCC,IAApC,EAA6C;EACjE,uBAAqB,kCAAgB;IAAEC,GAAG,EAAEF,IAAP;IAAaG,GAAG,EAAEF;EAAlB,CAAhB,EAA0CF,aAA1C,CAArB;EAAA,IAAQG,GAAR,oBAAQA,GAAR;EAAA,IAAaC,GAAb,oBAAaA,GAAb;;EAEA,IAAIL,YAAJ,EAAkB;IAChB,WAAuCM,KAAK,CAACC,OAAN,CAAcP,YAAd,IACnCA,YAAY,CAAC,CAAD,CAAZ,CAAgBQ,KAAhB,CAAsB,GAAtB,CADmC,GAEnCR,YAAY,CAACQ,KAAb,CAAmB,GAAnB,CAFJ;IAAA;IAAA,IAAOC,aAAP;IAAA,IAAsBC,aAAtB;;IAGA,IAAMC,eAAe,GAAGC,MAAM,CAACH,aAAD,CAA9B;IACA,IAAMI,eAAe,GAAGD,MAAM,CAACF,aAAD,CAA9B;IAEA,OAAO;MACLN,GAAG,EAAHA,GADK;MAELC,GAAG,EAAHA,GAFK;MAGLS,IAAI,EAAEb,aAHD;MAILc,QAAQ,EAAEF,eAJL;MAKLG,QAAQ,EAAEL;IALL,CAAP;EAOD;;EAED,OAAO;IACLN,GAAG,EAAHA,GADK;IAELD,GAAG,EAAHA,GAFK;IAGLU,IAAI,EAAEb,aAHD;IAILc,QAAQ,EAAEV,GAJL;IAKLW,QAAQ,EAAEZ;EALL,CAAP;AAOD,CA1BD;;eA4BeL,a"}
1
+ {"version":3,"file":"get-range-value.js","names":["getRangeValue","rawQueryProp","rangeInterval","_min","_max","min","max","Array","isArray","split","queryParamMin","queryParamMax","updatedMinValue","Number","updatedMaxValue","isNaN","step","maxValue","minValue"],"sources":["../../../../src/components/SearchFilter/helpers/get-range-value.js"],"sourcesContent":["import calculateMinMax from './calculate-min-max';\n\nconst getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {\n const { min, max } = calculateMinMax({ min: _min, max: _max }, rangeInterval);\n\n if (rawQueryProp) {\n const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp)\n ? rawQueryProp[0].split('-')\n : rawQueryProp.split('-');\n const updatedMinValue = Number(queryParamMin);\n const updatedMaxValue = Number(queryParamMax);\n\n return {\n min: Number.isNaN(min) ? updatedMinValue : min,\n max: Number.isNaN(max) ? updatedMaxValue : max,\n step: rangeInterval,\n maxValue: updatedMaxValue,\n minValue: updatedMinValue\n };\n }\n\n return {\n max,\n min,\n step: rangeInterval,\n maxValue: max,\n minValue: min\n };\n};\n\nexport default getRangeValue;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,YAAD,EAAeC,aAAf,EAA8BC,IAA9B,EAAoCC,IAApC,EAA6C;EACjE,uBAAqB,kCAAgB;IAAEC,GAAG,EAAEF,IAAP;IAAaG,GAAG,EAAEF;EAAlB,CAAhB,EAA0CF,aAA1C,CAArB;EAAA,IAAQG,GAAR,oBAAQA,GAAR;EAAA,IAAaC,GAAb,oBAAaA,GAAb;;EAEA,IAAIL,YAAJ,EAAkB;IAChB,WAAuCM,KAAK,CAACC,OAAN,CAAcP,YAAd,IACnCA,YAAY,CAAC,CAAD,CAAZ,CAAgBQ,KAAhB,CAAsB,GAAtB,CADmC,GAEnCR,YAAY,CAACQ,KAAb,CAAmB,GAAnB,CAFJ;IAAA;IAAA,IAAOC,aAAP;IAAA,IAAsBC,aAAtB;;IAGA,IAAMC,eAAe,GAAGC,MAAM,CAACH,aAAD,CAA9B;IACA,IAAMI,eAAe,GAAGD,MAAM,CAACF,aAAD,CAA9B;IAEA,OAAO;MACLN,GAAG,EAAEQ,MAAM,CAACE,KAAP,CAAaV,GAAb,IAAoBO,eAApB,GAAsCP,GADtC;MAELC,GAAG,EAAEO,MAAM,CAACE,KAAP,CAAaT,GAAb,IAAoBQ,eAApB,GAAsCR,GAFtC;MAGLU,IAAI,EAAEd,aAHD;MAILe,QAAQ,EAAEH,eAJL;MAKLI,QAAQ,EAAEN;IALL,CAAP;EAOD;;EAED,OAAO;IACLN,GAAG,EAAHA,GADK;IAELD,GAAG,EAAHA,GAFK;IAGLW,IAAI,EAAEd,aAHD;IAILe,QAAQ,EAAEX,GAJL;IAKLY,QAAQ,EAAEb;EALL,CAAP;AAOD,CA1BD;;eA4BeL,a"}
@@ -59,11 +59,12 @@ const SearchFilter = ({
59
59
  const formId = `filter-${name}-form`;
60
60
 
61
61
  const handleReset = () => {
62
- const newValues = getInitialFilterValues(data, filters, {});
62
+ const newValues = getInitialFilterValues(null, filters, {});
63
63
  setAppliedFilters({
64
64
  newValues,
65
65
  type: 'reset'
66
66
  });
67
+ doSubmit(newValues);
67
68
  };
68
69
 
69
70
  const updateFilterValues = (newValues, shouldSubmit) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFilter.js","names":["React","useState","useEffect","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","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","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","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":["React","useState","useEffect","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","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","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","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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"}
@@ -4,7 +4,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
- import React, { useState, useRef, useReducer } from 'react';
7
+ import React, { useState, useRef, useReducer, useEffect } from 'react';
8
8
  import { useRouter } from 'next/router';
9
9
  import { useQuery } from '@apollo/client';
10
10
  import PropTypes from 'prop-types';
@@ -37,7 +37,7 @@ const reducer = (state, action) => {
37
37
 
38
38
  case 'reset':
39
39
  return _objectSpread(_objectSpread({}, newValues), {}, {
40
- shouldSearch
40
+ shouldSearch: false
41
41
  });
42
42
 
43
43
  default:
@@ -64,6 +64,8 @@ const SearchFilterContainer = ({
64
64
  const searchFilterRef = useRef(null);
65
65
  const [key, setKey] = useState(`filter-${name}`);
66
66
  const [displaySearchFilter, setDisplaySearchFilter] = useState(false);
67
+ const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update
68
+
67
69
  const {
68
70
  url: currentUrl,
69
71
  query: {
@@ -71,8 +73,11 @@ const SearchFilterContainer = ({
71
73
  sortby
72
74
  },
73
75
  query
74
- } = parseUrl(asPath);
76
+ } = parseUrl(urlPath);
75
77
  const [filterValues, dispatch] = useReducer(reducer, getInitialFilterValues(null, filters, query));
78
+ useEffect(() => {
79
+ if (asPath) setUrlPath(asPath);
80
+ }, [asPath]);
76
81
  const hasUrl = !!url;
77
82
  const sortValues = sort && sortby ? stringify({
78
83
  sort,
@@ -95,7 +100,13 @@ const SearchFilterContainer = ({
95
100
  const {
96
101
  docType
97
102
  } = getEntityData(entity);
98
- const filtersQuery = shouldAddFilters ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty) : [];
103
+ const filtersQuery = shouldAddFilters ? buildFiltersQuery({
104
+ query: filterValues,
105
+ filterBy,
106
+ filterByProperty,
107
+ rangeValues,
108
+ queryKeys: Object.keys(query)
109
+ }) : [];
99
110
  const rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType, filtersQuery);
100
111
  const {
101
112
  data,
@@ -132,6 +143,7 @@ const SearchFilterContainer = ({
132
143
 
133
144
  if (!newQuery) {
134
145
  scrollToFirstList();
146
+ setUrlPath(baseQuery);
135
147
  return router.push('/Resolver', baseQuery, {
136
148
  shallow: !hasUrl,
137
149
  scroll: false
@@ -142,6 +154,7 @@ const SearchFilterContainer = ({
142
154
 
143
155
  const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);
144
156
  scrollToFirstList();
157
+ setUrlPath(newUrl);
145
158
  return router.push('/Resolver', newUrl, {
146
159
  shallow: !hasUrl,
147
160
  scroll: false
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useReducer","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","buildFiltersQuery","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","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","checkboxSelectValues","rangeValues","forEach","propsToDisplay","includes","push","docType","filtersQuery","rawQueryStringified","data","error","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","dataNotSet","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"],"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":["React","useState","useRef","useReducer","useEffect","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","buildFiltersQuery","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","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","checkboxSelectValues","rangeValues","forEach","propsToDisplay","includes","push","docType","filtersQuery","queryKeys","Object","keys","rawQueryStringified","data","error","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","dataNotSet","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"],"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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"}
@@ -13,7 +13,7 @@ import Select from '@blaze-react/select';
13
13
  import { parseUrl } from 'query-string';
14
14
  import { useGetSingleEntitySchema } from '../../../hooks';
15
15
  import { withTitle } from '../../../HOC';
16
- import { getSelectOptions, getIntersectedProp, getRangeValue } from '../helpers';
16
+ import { getSelectOptions, getIntersectedProp, getRangeValue, calculateMinMax } from '../helpers';
17
17
  import { decodeValue } from '../helpers/decode-encode';
18
18
 
19
19
  const Range = ({
@@ -21,6 +21,7 @@ const Range = ({
21
21
  label,
22
22
  entity,
23
23
  propsToDisplay,
24
+ dataAggregations,
24
25
  updateFilterValues,
25
26
  filterValues,
26
27
  shouldSearch
@@ -41,12 +42,22 @@ const Range = ({
41
42
  loading
42
43
  } = useGetSingleEntitySchema(entity, !hasMultipleOptions);
43
44
  if (loading || !rangeOption || !rangeValue) return '';
44
- const options = getSelectOptions(getEntitySchema, propsToDisplay);
45
+ const options = getSelectOptions(getEntitySchema, propsToDisplay); // get range from aggregations so it updates
46
+
45
47
  const {
46
48
  min,
47
49
  max
48
- } = rangeValue;
49
- const shouldShowRange = rangeOption && min !== max;
50
+ } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);
51
+ const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
52
+ const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
53
+
54
+ const valueToUse = _objectSpread(_objectSpread({}, rangeValue), {}, {
55
+ min,
56
+ max,
57
+ minValue,
58
+ maxValue
59
+ });
60
+
50
61
  const handleChange = debounce((option, value) => {
51
62
  updateFilterValues({
52
63
  [option]: _objectSpread(_objectSpread({}, value), {}, {
@@ -75,11 +86,11 @@ const Range = ({
75
86
  });
76
87
  updateFilterValues(updatedOptions, false);
77
88
  }
78
- })), shouldShowRange && /*#__PURE__*/React.createElement(RangeFilter, {
79
- key: rangeOption,
89
+ })), /*#__PURE__*/React.createElement(RangeFilter, {
90
+ key: `${rangeOption}-${minValue}-${maxValue}`,
80
91
  name: rangeOption,
81
92
  label: hasMultipleOptions ? '' : label,
82
- value: rangeValue,
93
+ value: valueToUse,
83
94
  id: rangeOption,
84
95
  onChange: ({
85
96
  value
@@ -96,7 +107,8 @@ Range.propTypes = {
96
107
  updateFilterValues: PropTypes.func.isRequired,
97
108
  shouldSearch: PropTypes.bool,
98
109
  rangeInterval: PropTypes.number,
99
- label: PropTypes.string
110
+ label: PropTypes.string,
111
+ dataAggregations: PropTypes.object.isRequired
100
112
  };
101
113
  Range.defaultProps = {
102
114
  shouldSearch: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Range.js","names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","query","asPath","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","shouldShowRange","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","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 } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n updateFilterValues,\n filterValues,\n shouldSearch\n}) => {\n const router = useRouter();\n const debounceAmount = shouldSearch ? 1200 : 100;\n const { query } = parseUrl(decodeValue(router.asPath));\n const hasMultipleOptions = propsToDisplay.length > 1;\n const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];\n const rangeOption =\n (filterValues[initialRangeOption] && filterValues[initialRangeOption].selectedOption) ||\n initialRangeOption;\n const rangeValue = filterValues[rangeOption];\n\n const { data: { getEntitySchema = {} } = {}, loading } = useGetSingleEntitySchema(\n entity,\n !hasMultipleOptions\n );\n\n if (loading || !rangeOption || !rangeValue) return '';\n\n const options = getSelectOptions(getEntitySchema, propsToDisplay);\n const { min, max } = rangeValue;\n const shouldShowRange = rangeOption && min !== max;\n\n const handleChange = debounce((option, value) => {\n updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);\n }, debounceAmount);\n\n return (\n <>\n {hasMultipleOptions && (\n <>\n <label>{label}</label>\n <Select\n value={rangeOption}\n id={rangeOption}\n options={options}\n required\n onChange={({ value }) => {\n const updatedOptions = {};\n propsToDisplay.forEach(prop => {\n const { min: eMin, max: eMax } = filterValues[prop];\n const initValue = getRangeValue(null, rangeInterval, eMin, eMax);\n updatedOptions[prop] = { ...initValue, selectedOption: value };\n });\n\n updateFilterValues(updatedOptions, false);\n }}\n />\n </>\n )}\n {shouldShowRange && (\n <RangeFilter\n key={rangeOption}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={rangeValue}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\n }}\n />\n )}\n </>\n );\n};\n\nRange.propTypes = {\n propsToDisplay: PropTypes.array.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n rangeInterval: PropTypes.number,\n label: PropTypes.string\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Range.js","names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","calculateMinMax","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","query","asPath","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","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":"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"}
@@ -1,4 +1,29 @@
1
- const builFilterObject = (key, value, filters) => {
1
+ const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];
2
+
3
+ const builFilterObject = ({
4
+ queryKey,
5
+ value,
6
+ filters,
7
+ isRange,
8
+ isInQuery
9
+ }) => {
10
+ if (isRange) {
11
+ // don't add to query if value matches range values
12
+ if (isInQuery || value.min !== value.minValue && value.max !== value.maxValue) {
13
+ filters.push({
14
+ range: {
15
+ [queryKey]: {
16
+ gte: Number(value.minValue),
17
+ lte: Number(value.maxValue)
18
+ }
19
+ }
20
+ });
21
+ }
22
+
23
+ return;
24
+ }
25
+
26
+ const key = isRange ? queryKey : `${queryKey}.keyword`;
2
27
  const isArray = Array.isArray(value);
3
28
 
4
29
  if (!isArray) {
@@ -20,14 +45,27 @@ const builFilterObject = (key, value, filters) => {
20
45
  });
21
46
  };
22
47
 
23
- const buildFiltersQuery = (query, filterBy, filterByProperty) => {
48
+ const buildFiltersQuery = ({
49
+ query,
50
+ filterBy,
51
+ filterByProperty,
52
+ rangeValues,
53
+ queryKeys
54
+ }) => {
24
55
  const mustFilters = [];
25
56
  Object.keys(query).forEach(queryKey => {
26
- if (queryKey === 'search_term' || queryKey === 'shouldSearch') return;
57
+ if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
27
58
  if (!queryKey || !query[queryKey]) return;
28
59
  const queryValue = query[queryKey];
29
- const queryKeyword = `${queryKey}.keyword`;
30
- builFilterObject(queryKeyword, queryValue, mustFilters);
60
+ const isRange = rangeValues.includes(queryKey);
61
+ const isInQuery = queryKeys.includes(queryKey);
62
+ builFilterObject({
63
+ queryKey,
64
+ value: queryValue,
65
+ filters: mustFilters,
66
+ isRange,
67
+ isInQuery
68
+ });
31
69
  });
32
70
 
33
71
  if (filterByProperty && filterByProperty.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"build-filters-query.js","names":["builFilterObject","key","value","filters","isArray","Array","singleFilterObj","match","push","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","mustFilters","Object","keys","queryKey","queryValue","queryKeyword","length","filterByPropOption","filterByPropKey","split","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const builFilterObject = (key, value, filters) => {\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) => {\n const mustFilters = [];\n Object.keys(query).forEach(queryKey => {\n if (queryKey === 'search_term' || queryKey === 'shouldSearch') return;\n if (!queryKey || !query[queryKey]) return;\n const queryValue = query[queryKey];\n const queryKeyword = `${queryKey}.keyword`;\n builFilterObject(queryKeyword, queryValue, mustFilters);\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":"AAAA,MAAMA,gBAAgB,GAAG,CAACC,GAAD,EAAMC,KAAN,EAAaC,OAAb,KAAyB;EAChD,MAAMC,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcF,KAAd,CAAhB;;EACA,IAAI,CAACE,OAAL,EAAc;IACZ,MAAME,eAAe,GAAG;MAAEC,KAAK,EAAE;QAAE,CAACN,GAAD,GAAOC;MAAT;IAAT,CAAxB;IACAC,OAAO,CAACK,IAAR,CAAaF,eAAb;IACA;EACD;;EAEDJ,KAAK,CAACO,OAAN,CAAcC,WAAW,IAAI;IAC3BP,OAAO,CAACK,IAAR,CAAa;MAAED,KAAK,EAAE;QAAE,CAACN,GAAD,GAAOS;MAAT;IAAT,CAAb;EACD,CAFD;AAGD,CAXD;;AAYA,MAAMC,iBAAiB,GAAG,CAACC,KAAD,EAAQC,QAAR,EAAkBC,gBAAlB,KAAuC;EAC/D,MAAMC,WAAW,GAAG,EAApB;EACAC,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBH,OAAnB,CAA2BS,QAAQ,IAAI;IACrC,IAAIA,QAAQ,KAAK,aAAb,IAA8BA,QAAQ,KAAK,cAA/C,EAA+D;IAC/D,IAAI,CAACA,QAAD,IAAa,CAACN,KAAK,CAACM,QAAD,CAAvB,EAAmC;IACnC,MAAMC,UAAU,GAAGP,KAAK,CAACM,QAAD,CAAxB;IACA,MAAME,YAAY,GAAI,GAAEF,QAAS,UAAjC;IACAlB,gBAAgB,CAACoB,YAAD,EAAeD,UAAf,EAA2BJ,WAA3B,CAAhB;EACD,CAND;;EAQA,IAAID,gBAAgB,IAAIA,gBAAgB,CAACO,MAAzC,EAAiD;IAC/CP,gBAAgB,IACdA,gBAAgB,CAACL,OAAjB,CAAyBa,kBAAkB,IAAI;MAC7C,MAAM,CAACC,eAAD,IAAoBD,kBAAkB,CAACE,KAAnB,CAAyB,GAAzB,CAA1B;MACAX,QAAQ,CAACJ,OAAT,CAAiBgB,cAAc,IAAI;QACjC,IAAIA,cAAc,CAACC,OAAf,CAAuBH,eAAvB,MAA4C,CAAC,CAAjD,EAAoD;QACpD,MAAM,GAAGI,cAAH,IAAqBF,cAAc,CAACD,KAAf,CAAqB,GAArB,CAA3B;QACA,MAAMI,eAAe,GAAI,GAAEL,eAAgB,UAA3C;QACA,IAAI,CAACI,cAAL,EAAqB;QACrBZ,WAAW,CAACP,IAAZ,CAAiB;UAAED,KAAK,EAAE;YAAE,CAACqB,eAAD,GAAmBD;UAArB;QAAT,CAAjB;MACD,CAND;IAOD,CATD,CADF;EAWD;;EAED,OAAOZ,WAAP;AACD,CAzBD;;AA2BA,eAAeJ,iBAAf"}
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","filterByPropKey","split","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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"}
@@ -1,6 +1,6 @@
1
1
  import { KEYWORD, SIZE } from '../constants';
2
2
 
3
- const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mustFilters) => {
3
+ const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mustFilters = []) => {
4
4
  if (!checkboxSelectValues.length && !rangeValues.length) return '';
5
5
  const aggs = {};
6
6
  checkboxSelectValues.forEach(fieldName => {
@@ -18,21 +18,26 @@ const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mus
18
18
  }
19
19
  };
20
20
  });
21
+ const boolFilter = {
22
+ should: [{
23
+ match: {
24
+ docType: entity
25
+ }
26
+ }],
27
+ minimum_should_match: 1
28
+ };
29
+
30
+ if (mustFilters.length) {
31
+ boolFilter.must = mustFilters;
32
+ }
33
+
21
34
  return JSON.stringify({
22
35
  aggs,
23
36
  size: 0,
24
37
  query: {
25
38
  bool: {
26
39
  filter: {
27
- bool: {
28
- should: [{
29
- match: {
30
- docType: entity
31
- }
32
- }],
33
- must: mustFilters,
34
- minimum_should_match: 1
35
- }
40
+ bool: boolFilter
36
41
  }
37
42
  }
38
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-raw-query-stringified.js","names":["KEYWORD","SIZE","buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","mustFilters","length","aggs","forEach","fieldName","terms","field","size","stats","JSON","stringify","query","bool","filter","should","match","docType","must","minimum_should_match"],"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 return JSON.stringify({\n aggs,\n size: 0,\n query: {\n bool: {\n filter: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n must: mustFilters,\n minimum_should_match: 1\n }\n }\n }\n }\n });\n};\n\nexport default buildRawQueryStringified;\n"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,IAAlB,QAA8B,cAA9B;;AAEA,MAAMC,wBAAwB,GAAG,CAACC,oBAAD,EAAuBC,WAAvB,EAAoCC,MAApC,EAA4CC,WAA5C,KAA4D;EAC3F,IAAI,CAACH,oBAAoB,CAACI,MAAtB,IAAgC,CAACH,WAAW,CAACG,MAAjD,EAAyD,OAAO,EAAP;EAEzD,MAAMC,IAAI,GAAG,EAAb;EAEAL,oBAAoB,CAACM,OAArB,CAA6BC,SAAS,IAAI;IACxCF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBC,KAAK,EAAE;QACLC,KAAK,EAAG,GAAEF,SAAU,IAAGV,OAAQ,EAD1B;QAELa,IAAI,EAAEZ;MAFD;IADS,CAAlB;EAMD,CAPD;EASAG,WAAW,CAACK,OAAZ,CAAoBC,SAAS,IAAI;IAC/BF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBI,KAAK,EAAE;QACLF,KAAK,EAAEF;MADF;IADS,CAAlB;EAKD,CAND;EAQA,OAAOK,IAAI,CAACC,SAAL,CAAe;IACpBR,IADoB;IAEpBK,IAAI,EAAE,CAFc;IAGpBI,KAAK,EAAE;MACLC,IAAI,EAAE;QACJC,MAAM,EAAE;UACND,IAAI,EAAE;YACJE,MAAM,EAAE,CACN;cACEC,KAAK,EAAE;gBACLC,OAAO,EAAEjB;cADJ;YADT,CADM,CADJ;YAQJkB,IAAI,EAAEjB,WARF;YASJkB,oBAAoB,EAAE;UATlB;QADA;MADJ;IADD;EAHa,CAAf,CAAP;AAqBD,CA3CD;;AA6CA,eAAetB,wBAAf"}
1
+ {"version":3,"file":"build-raw-query-stringified.js","names":["KEYWORD","SIZE","buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","mustFilters","length","aggs","forEach","fieldName","terms","field","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,SAASA,OAAT,EAAkBC,IAAlB,QAA8B,cAA9B;;AAEA,MAAMC,wBAAwB,GAAG,CAACC,oBAAD,EAAuBC,WAAvB,EAAoCC,MAApC,EAA4CC,WAAW,GAAG,EAA1D,KAAiE;EAChG,IAAI,CAACH,oBAAoB,CAACI,MAAtB,IAAgC,CAACH,WAAW,CAACG,MAAjD,EAAyD,OAAO,EAAP;EAEzD,MAAMC,IAAI,GAAG,EAAb;EAEAL,oBAAoB,CAACM,OAArB,CAA6BC,SAAS,IAAI;IACxCF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBC,KAAK,EAAE;QACLC,KAAK,EAAG,GAAEF,SAAU,IAAGV,OAAQ,EAD1B;QAELa,IAAI,EAAEZ;MAFD;IADS,CAAlB;EAMD,CAPD;EASAG,WAAW,CAACK,OAAZ,CAAoBC,SAAS,IAAI;IAC/BF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBI,KAAK,EAAE;QACLF,KAAK,EAAEF;MADF;IADS,CAAlB;EAKD,CAND;EAQA,MAAMK,UAAU,GAAG;IACjBC,MAAM,EAAE,CACN;MACEC,KAAK,EAAE;QACLC,OAAO,EAAEb;MADJ;IADT,CADM,CADS;IAQjBc,oBAAoB,EAAE;EARL,CAAnB;;EAWA,IAAIb,WAAW,CAACC,MAAhB,EAAwB;IACtBQ,UAAU,CAACK,IAAX,GAAkBd,WAAlB;EACD;;EAED,OAAOe,IAAI,CAACC,SAAL,CAAe;IACpBd,IADoB;IAEpBK,IAAI,EAAE,CAFc;IAGpBU,KAAK,EAAE;MACLC,IAAI,EAAE;QACJC,MAAM,EAAE;UACND,IAAI,EAAET;QADA;MADJ;IADD;EAHa,CAAf,CAAP;AAWD,CAhDD;;AAkDA,eAAeb,wBAAf"}
@@ -6,10 +6,11 @@ const getInitialFilterValues = (filterData, filters, query) => {
6
6
  filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';
7
7
 
8
8
  if (!filterData) {
9
- filters.forEach(({
10
- propsToDisplay: [key]
11
- }) => {
12
- filterValues[key] = null;
9
+ filters.forEach(filterProps => {
10
+ const {
11
+ propsToDisplay: [key]
12
+ } = filterProps;
13
+ filterValues[key] = query[key] ? getFilterValueFromQuery(key, filterProps, {}, query) : null;
13
14
  });
14
15
  filterValues.dataNotSet = true;
15
16
  return filterValues;
@@ -1 +1 @@
1
- {"version":3,"file":"get-initial-filter-values.js","names":["SEARCH_TERM","getFilterValueFromQuery","getInitialFilterValues","filterData","filters","query","filterValues","forEach","propsToDisplay","key","dataNotSet","Object","keys","filterProps","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(({ propsToDisplay: [key] }) => {\n filterValues[key] = 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,SAASA,WAAT,QAA4B,cAA5B;AACA,OAAOC,uBAAP,MAAoC,+BAApC;;AAEA,MAAMC,sBAAsB,GAAG,CAACC,UAAD,EAAaC,OAAb,EAAsBC,KAAtB,KAAgC;EAC7D,MAAMC,YAAY,GAAG,EAArB;EACAA,YAAY,CAACN,WAAD,CAAZ,GAA4BK,KAAK,CAACL,WAAD,CAAL,IAAsB,EAAlD;;EAEA,IAAI,CAACG,UAAL,EAAiB;IACfC,OAAO,CAACG,OAAR,CAAgB,CAAC;MAAEC,cAAc,EAAE,CAACC,GAAD;IAAlB,CAAD,KAA+B;MAC7CH,YAAY,CAACG,GAAD,CAAZ,GAAoB,IAApB;IACD,CAFD;IAGAH,YAAY,CAACI,UAAb,GAA0B,IAA1B;IACA,OAAOJ,YAAP;EACD;;EAEDK,MAAM,CAACC,IAAP,CAAYT,UAAZ,EAAwBI,OAAxB,CAAgCE,GAAG,IAAI;IACrC,MAAMI,WAAW,GACfT,OAAO,CAACU,IAAR,CAAa,CAAC;MAAEN;IAAF,CAAD,KAAwBA,cAAc,CAACM,IAAf,CAAoBC,IAAI,IAAIN,GAAG,KAAKM,IAApC,CAArC,KAAmF,EADrF;IAEAT,YAAY,CAACG,GAAD,CAAZ,GAAoBR,uBAAuB,CAACQ,GAAD,EAAMI,WAAN,EAAmBV,UAAU,CAACM,GAAD,CAA7B,EAAoCJ,KAApC,CAA3C;EACD,CAJD;EAMAC,YAAY,CAACI,UAAb,GAA0B,KAA1B;EAEA,OAAOJ,YAAP;AACD,CArBD;;AAuBA,eAAeJ,sBAAf"}
1
+ {"version":3,"file":"get-initial-filter-values.js","names":["SEARCH_TERM","getFilterValueFromQuery","getInitialFilterValues","filterData","filters","query","filterValues","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,SAASA,WAAT,QAA4B,cAA5B;AACA,OAAOC,uBAAP,MAAoC,+BAApC;;AAEA,MAAMC,sBAAsB,GAAG,CAACC,UAAD,EAAaC,OAAb,EAAsBC,KAAtB,KAAgC;EAC7D,MAAMC,YAAY,GAAG,EAArB;EACAA,YAAY,CAACN,WAAD,CAAZ,GAA4BK,KAAK,CAACL,WAAD,CAAL,IAAsB,EAAlD;;EAEA,IAAI,CAACG,UAAL,EAAiB;IACfC,OAAO,CAACG,OAAR,CAAgBC,WAAW,IAAI;MAC7B,MAAM;QACJC,cAAc,EAAE,CAACC,GAAD;MADZ,IAEFF,WAFJ;MAGAF,YAAY,CAACI,GAAD,CAAZ,GAAoBL,KAAK,CAACK,GAAD,CAAL,GAAaT,uBAAuB,CAACS,GAAD,EAAMF,WAAN,EAAmB,EAAnB,EAAuBH,KAAvB,CAApC,GAAoE,IAAxF;IACD,CALD;IAMAC,YAAY,CAACK,UAAb,GAA0B,IAA1B;IACA,OAAOL,YAAP;EACD;;EAEDM,MAAM,CAACC,IAAP,CAAYV,UAAZ,EAAwBI,OAAxB,CAAgCG,GAAG,IAAI;IACrC,MAAMF,WAAW,GACfJ,OAAO,CAACU,IAAR,CAAa,CAAC;MAAEL;IAAF,CAAD,KAAwBA,cAAc,CAACK,IAAf,CAAoBC,IAAI,IAAIL,GAAG,KAAKK,IAApC,CAArC,KAAmF,EADrF;IAEAT,YAAY,CAACI,GAAD,CAAZ,GAAoBT,uBAAuB,CAACS,GAAD,EAAMF,WAAN,EAAmBL,UAAU,CAACO,GAAD,CAA7B,EAAoCL,KAApC,CAA3C;EACD,CAJD;EAMAC,YAAY,CAACK,UAAb,GAA0B,KAA1B;EAEA,OAAOL,YAAP;AACD,CAxBD;;AA0BA,eAAeJ,sBAAf"}
@@ -14,8 +14,8 @@ const getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {
14
14
  const updatedMinValue = Number(queryParamMin);
15
15
  const updatedMaxValue = Number(queryParamMax);
16
16
  return {
17
- min,
18
- max,
17
+ min: Number.isNaN(min) ? updatedMinValue : min,
18
+ max: Number.isNaN(max) ? updatedMaxValue : max,
19
19
  step: rangeInterval,
20
20
  maxValue: updatedMaxValue,
21
21
  minValue: updatedMinValue
@@ -1 +1 @@
1
- {"version":3,"file":"get-range-value.js","names":["calculateMinMax","getRangeValue","rawQueryProp","rangeInterval","_min","_max","min","max","queryParamMin","queryParamMax","Array","isArray","split","updatedMinValue","Number","updatedMaxValue","step","maxValue","minValue"],"sources":["../../../../src/components/SearchFilter/helpers/get-range-value.js"],"sourcesContent":["import calculateMinMax from './calculate-min-max';\n\nconst getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {\n const { min, max } = calculateMinMax({ min: _min, max: _max }, rangeInterval);\n\n if (rawQueryProp) {\n const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp)\n ? rawQueryProp[0].split('-')\n : rawQueryProp.split('-');\n const updatedMinValue = Number(queryParamMin);\n const updatedMaxValue = Number(queryParamMax);\n\n return {\n min,\n max,\n step: rangeInterval,\n maxValue: updatedMaxValue,\n minValue: updatedMinValue\n };\n }\n\n return {\n max,\n min,\n step: rangeInterval,\n maxValue: max,\n minValue: min\n };\n};\n\nexport default getRangeValue;\n"],"mappings":"AAAA,OAAOA,eAAP,MAA4B,qBAA5B;;AAEA,MAAMC,aAAa,GAAG,CAACC,YAAD,EAAeC,aAAf,EAA8BC,IAA9B,EAAoCC,IAApC,KAA6C;EACjE,MAAM;IAAEC,GAAF;IAAOC;EAAP,IAAeP,eAAe,CAAC;IAAEM,GAAG,EAAEF,IAAP;IAAaG,GAAG,EAAEF;EAAlB,CAAD,EAA2BF,aAA3B,CAApC;;EAEA,IAAID,YAAJ,EAAkB;IAChB,MAAM,CAACM,aAAD,EAAgBC,aAAhB,IAAiCC,KAAK,CAACC,OAAN,CAAcT,YAAd,IACnCA,YAAY,CAAC,CAAD,CAAZ,CAAgBU,KAAhB,CAAsB,GAAtB,CADmC,GAEnCV,YAAY,CAACU,KAAb,CAAmB,GAAnB,CAFJ;IAGA,MAAMC,eAAe,GAAGC,MAAM,CAACN,aAAD,CAA9B;IACA,MAAMO,eAAe,GAAGD,MAAM,CAACL,aAAD,CAA9B;IAEA,OAAO;MACLH,GADK;MAELC,GAFK;MAGLS,IAAI,EAAEb,aAHD;MAILc,QAAQ,EAAEF,eAJL;MAKLG,QAAQ,EAAEL;IALL,CAAP;EAOD;;EAED,OAAO;IACLN,GADK;IAELD,GAFK;IAGLU,IAAI,EAAEb,aAHD;IAILc,QAAQ,EAAEV,GAJL;IAKLW,QAAQ,EAAEZ;EALL,CAAP;AAOD,CA1BD;;AA4BA,eAAeL,aAAf"}
1
+ {"version":3,"file":"get-range-value.js","names":["calculateMinMax","getRangeValue","rawQueryProp","rangeInterval","_min","_max","min","max","queryParamMin","queryParamMax","Array","isArray","split","updatedMinValue","Number","updatedMaxValue","isNaN","step","maxValue","minValue"],"sources":["../../../../src/components/SearchFilter/helpers/get-range-value.js"],"sourcesContent":["import calculateMinMax from './calculate-min-max';\n\nconst getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {\n const { min, max } = calculateMinMax({ min: _min, max: _max }, rangeInterval);\n\n if (rawQueryProp) {\n const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp)\n ? rawQueryProp[0].split('-')\n : rawQueryProp.split('-');\n const updatedMinValue = Number(queryParamMin);\n const updatedMaxValue = Number(queryParamMax);\n\n return {\n min: Number.isNaN(min) ? updatedMinValue : min,\n max: Number.isNaN(max) ? updatedMaxValue : max,\n step: rangeInterval,\n maxValue: updatedMaxValue,\n minValue: updatedMinValue\n };\n }\n\n return {\n max,\n min,\n step: rangeInterval,\n maxValue: max,\n minValue: min\n };\n};\n\nexport default getRangeValue;\n"],"mappings":"AAAA,OAAOA,eAAP,MAA4B,qBAA5B;;AAEA,MAAMC,aAAa,GAAG,CAACC,YAAD,EAAeC,aAAf,EAA8BC,IAA9B,EAAoCC,IAApC,KAA6C;EACjE,MAAM;IAAEC,GAAF;IAAOC;EAAP,IAAeP,eAAe,CAAC;IAAEM,GAAG,EAAEF,IAAP;IAAaG,GAAG,EAAEF;EAAlB,CAAD,EAA2BF,aAA3B,CAApC;;EAEA,IAAID,YAAJ,EAAkB;IAChB,MAAM,CAACM,aAAD,EAAgBC,aAAhB,IAAiCC,KAAK,CAACC,OAAN,CAAcT,YAAd,IACnCA,YAAY,CAAC,CAAD,CAAZ,CAAgBU,KAAhB,CAAsB,GAAtB,CADmC,GAEnCV,YAAY,CAACU,KAAb,CAAmB,GAAnB,CAFJ;IAGA,MAAMC,eAAe,GAAGC,MAAM,CAACN,aAAD,CAA9B;IACA,MAAMO,eAAe,GAAGD,MAAM,CAACL,aAAD,CAA9B;IAEA,OAAO;MACLH,GAAG,EAAEQ,MAAM,CAACE,KAAP,CAAaV,GAAb,IAAoBO,eAApB,GAAsCP,GADtC;MAELC,GAAG,EAAEO,MAAM,CAACE,KAAP,CAAaT,GAAb,IAAoBQ,eAApB,GAAsCR,GAFtC;MAGLU,IAAI,EAAEd,aAHD;MAILe,QAAQ,EAAEH,eAJL;MAKLI,QAAQ,EAAEN;IALL,CAAP;EAOD;;EAED,OAAO;IACLN,GADK;IAELD,GAFK;IAGLW,IAAI,EAAEd,aAHD;IAILe,QAAQ,EAAEX,GAJL;IAKLY,QAAQ,EAAEb;EALL,CAAP;AAOD,CA1BD;;AA4BA,eAAeL,aAAf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.124.0",
3
+ "version": "0.124.1-alpha.3",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -85,5 +85,5 @@
85
85
  "lib/*",
86
86
  "lib-es/*"
87
87
  ],
88
- "gitHead": "db99e69def55f8ea7fa5e670bee910103b291ca9"
88
+ "gitHead": "25aa010b1846146fab034b6ce1323144ec0bf23c"
89
89
  }
@@ -69,8 +69,9 @@ const SearchFilter = ({
69
69
  const formId = `filter-${name}-form`;
70
70
 
71
71
  const handleReset = () => {
72
- const newValues = getInitialFilterValues(data, filters, {});
72
+ const newValues = getInitialFilterValues(null, filters, {});
73
73
  setAppliedFilters({ newValues, type: 'reset' });
74
+ doSubmit(newValues);
74
75
  };
75
76
 
76
77
  const updateFilterValues = (newValues, shouldSubmit) => {