@blaze-cms/react-page-builder 0.131.1 → 0.132.0-admin-updates.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 +101 -2
- package/lib/components/Button.js +2 -1
- package/lib/components/Button.js.map +1 -1
- package/lib/components/Card/CardsRender.js +13 -6
- package/lib/components/Card/CardsRender.js.map +1 -1
- package/lib/components/Card/helpers/get-updated-items-to-display.js +55 -0
- package/lib/components/Card/helpers/get-updated-items-to-display.js.map +1 -0
- package/lib/components/Card/helpers/index.js +7 -0
- package/lib/components/Card/helpers/index.js.map +1 -1
- package/lib/components/CarouselWrapper/SmoothScrollCarousel.js +2 -2
- package/lib/components/CarouselWrapper/SmoothScrollCarousel.js.map +1 -1
- package/lib/components/Code/Code.js +7 -3
- package/lib/components/Code/Code.js.map +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js +6 -3
- package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js +3 -2
- package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
- package/lib/components/DataSummary/helpers/get-link-to-published-content.js +2 -0
- package/lib/components/DataSummary/helpers/get-link-to-published-content.js.map +1 -1
- package/lib/components/List/ListFactory.js +16 -11
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/helpers/get-list-query.js +43 -0
- package/lib/components/List/helpers/get-list-query.js.map +1 -0
- package/lib/components/List/helpers/get-list-specific-search-filter.js +21 -0
- package/lib/components/List/helpers/get-list-specific-search-filter.js.map +1 -0
- package/lib/components/List/helpers/index.js +14 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/components/List/helpers/strip-query-key.js +14 -0
- package/lib/components/List/helpers/strip-query-key.js.map +1 -0
- package/lib/components/SearchContent/SearchContent.js +8 -8
- package/lib/components/SearchContent/SearchContent.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +17 -13
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +64 -83
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-filters-query.js +3 -1
- package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-new-url.js +17 -0
- package/lib/components/SearchFilter/helpers/build-new-url.js.map +1 -0
- package/lib/components/SearchFilter/helpers/build-url-query.js +49 -0
- package/lib/components/SearchFilter/helpers/build-url-query.js.map +1 -0
- package/lib/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +32 -0
- package/lib/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js.map +1 -0
- package/lib/components/SearchFilter/helpers/get-filter-values.js +31 -0
- package/lib/components/SearchFilter/helpers/get-filter-values.js.map +1 -0
- package/lib/components/SearchFilter/helpers/index.js +18 -11
- package/lib/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/index.js.map +1 -1
- package/lib/components/SearchFilter/searchFilterReducer.js +43 -0
- package/lib/components/SearchFilter/searchFilterReducer.js.map +1 -0
- package/lib/components/SearchFilterSort/SearchFilterSort.js +31 -11
- package/lib/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
- package/lib/components/SearchFilterSort/helpers/handle-sort-update.js +19 -5
- package/lib/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
- package/lib/components/SearchFilterSort/helpers/update-sort.js +9 -5
- package/lib/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
- package/lib/helpers/build-inherited-filters.js +2 -0
- package/lib/helpers/build-inherited-filters.js.map +1 -1
- package/lib/helpers/build-props-query.js +5 -2
- package/lib/helpers/build-props-query.js.map +1 -1
- package/lib/helpers/build-query-key.js +16 -0
- package/lib/helpers/build-query-key.js.map +1 -0
- package/lib/helpers/build-set-filters.js +5 -1
- package/lib/helpers/build-set-filters.js.map +1 -1
- package/lib/helpers/get-entities-with-banner.js +8 -2
- package/lib/helpers/get-entities-with-banner.js.map +1 -1
- package/lib/helpers/get-query-filters.js +6 -8
- package/lib/helpers/get-query-filters.js.map +1 -1
- package/lib/helpers/get-query-props.js +13 -2
- package/lib/helpers/get-query-props.js.map +1 -1
- package/lib/helpers/get-wrapped-value-with-link.js +2 -3
- package/lib/helpers/get-wrapped-value-with-link.js.map +1 -1
- package/lib/helpers/index.js +14 -0
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/parse-props-to-display.js +13 -8
- package/lib/helpers/parse-props-to-display.js.map +1 -1
- package/lib/helpers/process-data-summary-value.js +56 -0
- package/lib/helpers/process-data-summary-value.js.map +1 -0
- package/lib-es/components/Button.js +2 -1
- package/lib-es/components/Button.js.map +1 -1
- package/lib-es/components/Card/CardsRender.js +14 -7
- package/lib-es/components/Card/CardsRender.js.map +1 -1
- package/lib-es/components/Card/helpers/get-updated-items-to-display.js +32 -0
- package/lib-es/components/Card/helpers/get-updated-items-to-display.js.map +1 -0
- package/lib-es/components/Card/helpers/index.js +1 -0
- package/lib-es/components/Card/helpers/index.js.map +1 -1
- package/lib-es/components/CarouselWrapper/SmoothScrollCarousel.js +2 -2
- package/lib-es/components/CarouselWrapper/SmoothScrollCarousel.js.map +1 -1
- package/lib-es/components/Code/Code.js +8 -4
- package/lib-es/components/Code/Code.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +6 -3
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/build-props-to-display-with-content.js +4 -3
- package/lib-es/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/get-link-to-published-content.js +2 -1
- package/lib-es/components/DataSummary/helpers/get-link-to-published-content.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +16 -12
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/helpers/get-list-query.js +24 -0
- package/lib-es/components/List/helpers/get-list-query.js.map +1 -0
- package/lib-es/components/List/helpers/get-list-specific-search-filter.js +12 -0
- package/lib-es/components/List/helpers/get-list-specific-search-filter.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +2 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/components/List/helpers/strip-query-key.js +6 -0
- package/lib-es/components/List/helpers/strip-query-key.js.map +1 -0
- package/lib-es/components/SearchContent/SearchContent.js +8 -8
- package/lib-es/components/SearchContent/SearchContent.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +18 -13
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +48 -70
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js +2 -0
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-new-url.js +8 -0
- package/lib-es/components/SearchFilter/helpers/build-new-url.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/build-url-query.js +31 -0
- package/lib-es/components/SearchFilter/helpers/build-url-query.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +18 -0
- package/lib-es/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/get-filter-values.js +19 -0
- package/lib-es/components/SearchFilter/helpers/get-filter-values.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/index.js +5 -4
- package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/index.js +2 -2
- package/lib-es/components/SearchFilter/index.js.map +1 -1
- package/lib-es/components/SearchFilter/searchFilterReducer.js +26 -0
- package/lib-es/components/SearchFilter/searchFilterReducer.js.map +1 -0
- package/lib-es/components/SearchFilterSort/SearchFilterSort.js +26 -10
- package/lib-es/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
- package/lib-es/components/SearchFilterSort/helpers/handle-sort-update.js +21 -4
- package/lib-es/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
- package/lib-es/components/SearchFilterSort/helpers/update-sort.js +8 -4
- package/lib-es/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
- package/lib-es/helpers/build-inherited-filters.js +2 -0
- package/lib-es/helpers/build-inherited-filters.js.map +1 -1
- package/lib-es/helpers/build-props-query.js +4 -2
- package/lib-es/helpers/build-props-query.js.map +1 -1
- package/lib-es/helpers/build-query-key.js +7 -0
- package/lib-es/helpers/build-query-key.js.map +1 -0
- package/lib-es/helpers/build-set-filters.js +5 -1
- package/lib-es/helpers/build-set-filters.js.map +1 -1
- package/lib-es/helpers/get-entities-with-banner.js +9 -2
- package/lib-es/helpers/get-entities-with-banner.js.map +1 -1
- package/lib-es/helpers/get-query-filters.js +6 -8
- package/lib-es/helpers/get-query-filters.js.map +1 -1
- package/lib-es/helpers/get-query-props.js +10 -2
- package/lib-es/helpers/get-query-props.js.map +1 -1
- package/lib-es/helpers/get-wrapped-value-with-link.js +2 -2
- package/lib-es/helpers/get-wrapped-value-with-link.js.map +1 -1
- package/lib-es/helpers/index.js +2 -0
- package/lib-es/helpers/index.js.map +1 -1
- package/lib-es/helpers/parse-props-to-display.js +12 -9
- package/lib-es/helpers/parse-props-to-display.js.map +1 -1
- package/lib-es/helpers/process-data-summary-value.js +36 -0
- package/lib-es/helpers/process-data-summary-value.js.map +1 -0
- package/package.json +10 -10
- package/src/components/Button.js +2 -1
- package/src/components/Card/CardsRender.js +27 -7
- package/src/components/Card/helpers/get-updated-items-to-display.js +32 -0
- package/src/components/Card/helpers/index.js +1 -0
- package/src/components/CarouselWrapper/SmoothScrollCarousel.js +2 -2
- package/src/components/Code/Code.js +7 -3
- package/src/components/DataSummary/helpers/build-loop-props-content.js +7 -3
- package/src/components/DataSummary/helpers/build-props-to-display-with-content.js +6 -3
- package/src/components/DataSummary/helpers/get-link-to-published-content.js +4 -1
- package/src/components/List/ListFactory.js +25 -15
- package/src/components/List/helpers/get-list-query.js +28 -0
- package/src/components/List/helpers/get-list-specific-search-filter.js +10 -0
- package/src/components/List/helpers/index.js +2 -0
- package/src/components/List/helpers/strip-query-key.js +6 -0
- package/src/components/SearchContent/SearchContent.js +8 -8
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +21 -18
- package/src/components/SearchFilter/SearchFilterContainer.js +59 -67
- package/src/components/SearchFilter/helpers/build-filters-query.js +9 -1
- package/src/components/SearchFilter/helpers/build-new-url.js +8 -0
- package/src/components/SearchFilter/helpers/build-url-query.js +33 -0
- package/src/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +17 -0
- package/src/components/SearchFilter/helpers/get-filter-values.js +21 -0
- package/src/components/SearchFilter/helpers/index.js +9 -7
- package/src/components/SearchFilter/index.js +2 -2
- package/src/components/SearchFilter/searchFilterReducer.js +15 -0
- package/src/components/SearchFilterSort/SearchFilterSort.js +18 -8
- package/src/components/SearchFilterSort/helpers/handle-sort-update.js +14 -5
- package/src/components/SearchFilterSort/helpers/update-sort.js +7 -3
- package/src/helpers/build-inherited-filters.js +3 -1
- package/src/helpers/build-props-query.js +4 -2
- package/src/helpers/build-query-key.js +7 -0
- package/src/helpers/build-set-filters.js +2 -1
- package/src/helpers/get-entities-with-banner.js +3 -2
- package/src/helpers/get-query-filters.js +4 -4
- package/src/helpers/get-query-props.js +12 -4
- package/src/helpers/get-wrapped-value-with-link.js +6 -3
- package/src/helpers/index.js +2 -0
- package/src/helpers/parse-props-to-display.js +25 -21
- package/src/helpers/process-data-summary-value.js +22 -0
- package/tests/helpers/mocks.js +3 -5
- package/tests/unit/src/components/Card/helpers/get-updated-items-to-display.test.js +72 -0
- package/tests/unit/src/components/Code/Code.test.js +5 -0
- package/tests/unit/src/components/Code/__snapshots__/Code.test.js.snap +8 -0
- package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +50 -0
- package/tests/unit/src/components/DataSummary/helpers/get-link-to-published-content.test.js +21 -0
- package/tests/unit/src/components/PlaceholderIcon/__snapshots__/index.test.js.snap +72 -0
- package/tests/unit/src/components/PlaceholderIcon/index.test.js +20 -0
- package/tests/unit/src/components/SearchFilter/__snapshots__/SearchFilterContainer.test.js.snap +1 -7
- package/tests/unit/src/components/SearchFilter/helpers/build-new-query.test.js +10 -10
- package/tests/unit/src/components/SearchFilter/helpers/build-query.test.js +24 -7
- package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +10 -10
- package/tests/unit/src/components/SearchFilterSort/SearchFilterSort.test.js +4 -1
- package/tests/unit/src/components/SearchFilterSort/helpers/handle-sort-update.test.js +26 -19
- package/tests/unit/src/components/SearchFilterSort/helpers/update-sort.test.js +10 -1
- package/tests/unit/src/helpers/__snapshots__/get-wrapped-value-with-link.test.js.snap +18 -0
- package/tests/unit/src/helpers/build-props-query.test.js +25 -0
- package/tests/unit/src/helpers/get-wrapped-value-with-link.test.js +2 -2
- package/tests/unit/src/helpers/parse-props-to-display.test.js +4 -0
- package/tests/unit/src/helpers/prcoess-data-summary-value.test.js +52 -0
- package/lib/components/SearchFilter/helpers/build-new-query.js +0 -15
- package/lib/components/SearchFilter/helpers/build-new-query.js.map +0 -1
- package/lib/components/SearchFilter/helpers/build-query.js +0 -37
- package/lib/components/SearchFilter/helpers/build-query.js.map +0 -1
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js +0 -43
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +0 -1
- package/lib-es/components/SearchFilter/helpers/build-new-query.js +0 -6
- package/lib-es/components/SearchFilter/helpers/build-new-query.js.map +0 -1
- package/lib-es/components/SearchFilter/helpers/build-query.js +0 -23
- package/lib-es/components/SearchFilter/helpers/build-query.js.map +0 -1
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +0 -26
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +0 -1
- package/src/components/SearchFilter/helpers/build-new-query.js +0 -6
- package/src/components/SearchFilter/helpers/build-query.js +0 -26
- package/src/components/SearchFilter/helpers/get-initial-filter-values.js +0 -30
|
@@ -1,40 +1,28 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
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; }
|
|
4
1
|
import React, { useState, useRef, useReducer, useEffect } from 'react';
|
|
5
2
|
import { useRouter } from 'next/router';
|
|
6
3
|
import { useQuery } from '@apollo/client';
|
|
7
4
|
import PropTypes from 'prop-types';
|
|
8
|
-
import { parseUrl
|
|
5
|
+
import { parseUrl } from 'query-string';
|
|
9
6
|
import SearchFilter from './SearchFilter';
|
|
10
7
|
import { withTitle } from '../../HOC';
|
|
11
8
|
import { getSearchPublishedContent } from '../../application/query';
|
|
12
|
-
import {
|
|
9
|
+
import { buildNewUrl, buildRawQueryStringified, getFilterValues, buildFiltersQuery, getFilterRangesAndCheckboxesValues } from './helpers';
|
|
13
10
|
import { getEntityData } from '../../helpers';
|
|
14
|
-
import { RAW_RESULTS
|
|
11
|
+
import { RAW_RESULTS } from './constants';
|
|
15
12
|
import { SCROLL_OFFSET } from '../../constants';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
shouldSearch: false
|
|
30
|
-
});
|
|
31
|
-
case 'reset':
|
|
32
|
-
return _objectSpread(_objectSpread({}, newValues), {}, {
|
|
33
|
-
shouldSearch: false
|
|
34
|
-
});
|
|
35
|
-
default:
|
|
36
|
-
throw new Error();
|
|
37
|
-
}
|
|
13
|
+
import searchFilterReducer from './searchFilterReducer';
|
|
14
|
+
const getFiltersUrlQuery = (query, listName) => {
|
|
15
|
+
if (!listName) return query;
|
|
16
|
+
const updatedQuery = {};
|
|
17
|
+
const listKey = `pb[${listName}]`;
|
|
18
|
+
Object.keys(query).forEach(queryKey => {
|
|
19
|
+
const isListKey = queryKey.indexOf(`${listName}`) !== -1;
|
|
20
|
+
if (!isListKey) return;
|
|
21
|
+
const decodedQueryValue = Array.isArray(query[queryKey]) ? query[queryKey].map(value => decodeURIComponent(value)) : decodeURIComponent(query[queryKey]);
|
|
22
|
+
const strippedKey = queryKey.substring(listKey.length + 1, queryKey.length - 1);
|
|
23
|
+
if (isListKey) updatedQuery[strippedKey] = decodedQueryValue;
|
|
24
|
+
});
|
|
25
|
+
return updatedQuery;
|
|
38
26
|
};
|
|
39
27
|
const SearchFilterContainer = ({
|
|
40
28
|
entity,
|
|
@@ -46,7 +34,8 @@ const SearchFilterContainer = ({
|
|
|
46
34
|
groupAfterDesktop,
|
|
47
35
|
filterBy,
|
|
48
36
|
filterByProperty,
|
|
49
|
-
shouldAddFilters
|
|
37
|
+
shouldAddFilters,
|
|
38
|
+
listComponentName
|
|
50
39
|
}) => {
|
|
51
40
|
const router = useRouter();
|
|
52
41
|
const {
|
|
@@ -58,49 +47,31 @@ const SearchFilterContainer = ({
|
|
|
58
47
|
const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update
|
|
59
48
|
const {
|
|
60
49
|
url: currentUrl,
|
|
61
|
-
query: {
|
|
62
|
-
sort,
|
|
63
|
-
sortby
|
|
64
|
-
},
|
|
65
50
|
query
|
|
66
51
|
} = parseUrl(urlPath);
|
|
67
|
-
const
|
|
52
|
+
const updatedQuery = getFiltersUrlQuery(query, listComponentName);
|
|
53
|
+
const [filterValues, dispatch] = useReducer(searchFilterReducer, null);
|
|
68
54
|
useEffect(() => {
|
|
69
55
|
if (asPath) setUrlPath(asPath);
|
|
70
56
|
}, [asPath]);
|
|
71
|
-
const hasUrl = !!url;
|
|
72
|
-
const sortValues = sort && sortby ? stringify({
|
|
73
|
-
sort,
|
|
74
|
-
sortby
|
|
75
|
-
}) : '';
|
|
76
|
-
const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;
|
|
77
57
|
const action = getSearchPublishedContent(RAW_RESULTS);
|
|
78
|
-
const checkboxSelectValues =
|
|
79
|
-
const rangeValues = [];
|
|
80
|
-
filters.forEach(({
|
|
81
|
-
type,
|
|
82
|
-
propsToDisplay
|
|
83
|
-
}) => {
|
|
84
|
-
if (CHECKBOX_SELECT.includes(type)) {
|
|
85
|
-
checkboxSelectValues.push(propsToDisplay[0]);
|
|
86
|
-
} else if (type === RANGE) {
|
|
87
|
-
rangeValues.push(...propsToDisplay);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
58
|
+
const [checkboxSelectValues, rangeValues] = getFilterRangesAndCheckboxesValues(filters);
|
|
90
59
|
const {
|
|
91
60
|
docType
|
|
92
61
|
} = getEntityData(entity);
|
|
93
|
-
const filtersQuery =
|
|
94
|
-
|
|
62
|
+
const filtersQuery = buildFiltersQuery({
|
|
63
|
+
shouldAddFilters,
|
|
64
|
+
query: filterValues || {},
|
|
95
65
|
filterBy,
|
|
96
66
|
filterByProperty,
|
|
97
67
|
rangeValues,
|
|
98
|
-
queryKeys: Object.keys(
|
|
99
|
-
})
|
|
68
|
+
queryKeys: Object.keys(updatedQuery)
|
|
69
|
+
});
|
|
100
70
|
const rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType, filtersQuery);
|
|
101
71
|
const {
|
|
102
72
|
data,
|
|
103
|
-
error
|
|
73
|
+
error,
|
|
74
|
+
loading
|
|
104
75
|
} = useQuery(action, {
|
|
105
76
|
variables: {
|
|
106
77
|
rawQueryStringified,
|
|
@@ -118,38 +89,41 @@ const SearchFilterContainer = ({
|
|
|
118
89
|
} = {}
|
|
119
90
|
} = {}
|
|
120
91
|
} = data || {};
|
|
121
|
-
if (filterValues
|
|
122
|
-
const
|
|
92
|
+
if (!filterValues && !loading && (filterData || !rawQueryStringified)) {
|
|
93
|
+
const newValues = getFilterValues(filterData, filters, updatedQuery);
|
|
123
94
|
dispatch({
|
|
124
|
-
newValues
|
|
95
|
+
newValues,
|
|
125
96
|
shouldSearch: false,
|
|
126
97
|
type: 'update'
|
|
127
98
|
});
|
|
99
|
+
return null;
|
|
128
100
|
}
|
|
129
101
|
const handleSearch = newQuery => {
|
|
130
102
|
setDisplaySearchFilter(false);
|
|
103
|
+
const hashBit = asPath.split('#')[1] || '';
|
|
104
|
+
const parsedHashBit = hashBit ? `#${hashBit}` : '';
|
|
105
|
+
scrollToFirstList();
|
|
131
106
|
if (!newQuery) {
|
|
132
|
-
|
|
107
|
+
const baseQuery = `${currentUrl}${parsedHashBit}`;
|
|
133
108
|
setUrlPath(baseQuery);
|
|
134
109
|
return router.push('/Resolver', baseQuery, {
|
|
135
|
-
shallow: !
|
|
110
|
+
shallow: !url,
|
|
136
111
|
scroll: false
|
|
137
112
|
}).then(() => {
|
|
138
113
|
setKey(`filter-${name}:${Date.now()}`); // remove after range component update
|
|
139
114
|
});
|
|
140
115
|
}
|
|
141
116
|
|
|
142
|
-
const newUrl =
|
|
143
|
-
scrollToFirstList();
|
|
117
|
+
const newUrl = buildNewUrl(url, currentUrl, newQuery, hashBit);
|
|
144
118
|
setUrlPath(newUrl);
|
|
145
119
|
return router.push('/Resolver', newUrl, {
|
|
146
|
-
shallow: !
|
|
120
|
+
shallow: !url,
|
|
147
121
|
scroll: false
|
|
148
122
|
});
|
|
149
123
|
};
|
|
150
124
|
const scrollToFirstList = () => {
|
|
151
125
|
const [list] = document.getElementsByClassName('list-top');
|
|
152
|
-
const shouldScrollToFirstList = !
|
|
126
|
+
const shouldScrollToFirstList = !url && list;
|
|
153
127
|
if (shouldScrollToFirstList) {
|
|
154
128
|
window.scrollTo({
|
|
155
129
|
left: 0,
|
|
@@ -159,14 +133,16 @@ const SearchFilterContainer = ({
|
|
|
159
133
|
window.scrollTo(0, 0);
|
|
160
134
|
}
|
|
161
135
|
};
|
|
162
|
-
if (!filterValues) return
|
|
136
|
+
if (!filterValues) return null;
|
|
163
137
|
return /*#__PURE__*/React.createElement(SearchFilter, {
|
|
164
138
|
key: key,
|
|
165
139
|
setAppliedFilters: dispatch,
|
|
140
|
+
query: updatedQuery,
|
|
141
|
+
listComponentName: listComponentName,
|
|
166
142
|
searchFilterRef: searchFilterRef,
|
|
167
143
|
data: filterData,
|
|
168
144
|
filters: filters,
|
|
169
|
-
hasUrl:
|
|
145
|
+
hasUrl: !!url,
|
|
170
146
|
entity: entity,
|
|
171
147
|
handleSearch: handleSearch,
|
|
172
148
|
filterValues: filterValues,
|
|
@@ -188,7 +164,8 @@ SearchFilterContainer.propTypes = {
|
|
|
188
164
|
groupAfterDesktop: PropTypes.number,
|
|
189
165
|
filterBy: PropTypes.array,
|
|
190
166
|
filterByProperty: PropTypes.array,
|
|
191
|
-
shouldAddFilters: PropTypes.bool
|
|
167
|
+
shouldAddFilters: PropTypes.bool,
|
|
168
|
+
listComponentName: PropTypes.string
|
|
192
169
|
};
|
|
193
170
|
SearchFilterContainer.defaultProps = {
|
|
194
171
|
url: null,
|
|
@@ -199,7 +176,8 @@ SearchFilterContainer.defaultProps = {
|
|
|
199
176
|
groupAfterDesktop: 0,
|
|
200
177
|
filterBy: [],
|
|
201
178
|
filterByProperty: [],
|
|
202
|
-
shouldAddFilters: false
|
|
179
|
+
shouldAddFilters: false,
|
|
180
|
+
listComponentName: ''
|
|
203
181
|
};
|
|
204
182
|
export default withTitle(SearchFilterContainer);
|
|
205
183
|
//# sourceMappingURL=SearchFilterContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
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","_objectSpread","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","createElement","setAppliedFilters","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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"}
|
|
1
|
+
{"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useReducer","useEffect","useRouter","useQuery","PropTypes","parseUrl","SearchFilter","withTitle","getSearchPublishedContent","buildNewUrl","buildRawQueryStringified","getFilterValues","buildFiltersQuery","getFilterRangesAndCheckboxesValues","getEntityData","RAW_RESULTS","SCROLL_OFFSET","searchFilterReducer","getFiltersUrlQuery","query","listName","updatedQuery","listKey","Object","keys","forEach","queryKey","isListKey","indexOf","decodedQueryValue","Array","isArray","map","value","decodeURIComponent","strippedKey","substring","length","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","listComponentName","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","currentUrl","filterValues","dispatch","action","checkboxSelectValues","rangeValues","docType","filtersQuery","queryKeys","rawQueryStringified","data","error","loading","variables","limit","skip","message","searchPublishedContent","rawResults","aggregations","filterData","newValues","shouldSearch","type","handleSearch","newQuery","hashBit","split","parsedHashBit","scrollToFirstList","baseQuery","push","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","createElement","setAppliedFilters","hasUrl","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 } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewUrl,\n buildRawQueryStringified,\n getFilterValues,\n buildFiltersQuery,\n getFilterRangesAndCheckboxesValues\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\nimport searchFilterReducer from './searchFilterReducer';\n\nconst getFiltersUrlQuery = (query, listName) => {\n if (!listName) return query;\n const updatedQuery = {};\n const listKey = `pb[${listName}]`;\n Object.keys(query).forEach(queryKey => {\n const isListKey = queryKey.indexOf(`${listName}`) !== -1;\n if (!isListKey) return;\n const decodedQueryValue = Array.isArray(query[queryKey])\n ? query[queryKey].map(value => decodeURIComponent(value))\n : decodeURIComponent(query[queryKey]);\n const strippedKey = queryKey.substring(listKey.length + 1, queryKey.length - 1);\n if (isListKey) updatedQuery[strippedKey] = decodedQueryValue;\n });\n\n return updatedQuery;\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 listComponentName\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 { url: currentUrl, query } = parseUrl(urlPath);\n const updatedQuery = getFiltersUrlQuery(query, listComponentName);\n\n const [filterValues, dispatch] = useReducer(searchFilterReducer, null);\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const [checkboxSelectValues, rangeValues] = getFilterRangesAndCheckboxesValues(filters);\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = buildFiltersQuery({\n shouldAddFilters,\n query: filterValues || {},\n filterBy,\n filterByProperty,\n rangeValues,\n queryKeys: Object.keys(updatedQuery)\n });\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\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 (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (!filterValues && !loading && (filterData || !rawQueryStringified)) {\n const newValues = getFilterValues(filterData, filters, updatedQuery);\n dispatch({ newValues, shouldSearch: false, type: 'update' });\n return null;\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n const hashBit = asPath.split('#')[1] || '';\n const parsedHashBit = hashBit ? `#${hashBit}` : '';\n scrollToFirstList();\n if (!newQuery) {\n const baseQuery = `${currentUrl}${parsedHashBit}`;\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !url, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewUrl(url, currentUrl, newQuery, hashBit);\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !url, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !url && 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 if (!filterValues) return null;\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n query={updatedQuery}\n listComponentName={listComponentName}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={!!url}\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 listComponentName: PropTypes.string\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 listComponentName: ''\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
@@ -40,12 +40,14 @@ const builFilterObject = ({
|
|
|
40
40
|
});
|
|
41
41
|
};
|
|
42
42
|
const buildFiltersQuery = ({
|
|
43
|
+
shouldAddFilters,
|
|
43
44
|
query,
|
|
44
45
|
filterBy,
|
|
45
46
|
filterByProperty,
|
|
46
47
|
rangeValues,
|
|
47
48
|
queryKeys
|
|
48
49
|
}) => {
|
|
50
|
+
if (!shouldAddFilters) return [];
|
|
49
51
|
const mustFilters = [];
|
|
50
52
|
Object.keys(query).forEach(queryKey => {
|
|
51
53
|
if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
|
|
@@ -1 +1 @@
|
|
|
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 = ({
|
|
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","shouldAddFilters","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 = ({\n shouldAddFilters,\n query,\n filterBy,\n filterByProperty,\n rangeValues,\n queryKeys\n}) => {\n if (!shouldAddFilters) return [];\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":"AAAA,MAAMA,oBAAoB,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC;AAE1E,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,KAAK;EAAEC,OAAO;EAAEC,OAAO;EAAEC;AAAU,CAAC,KAAK;EAC7E,IAAID,OAAO,EAAE;IACX;IACA,IAAIC,SAAS,IAAKH,KAAK,CAACI,GAAG,KAAKJ,KAAK,CAACK,QAAQ,IAAIL,KAAK,CAACM,GAAG,KAAKN,KAAK,CAACO,QAAS,EAAE;MAC/EN,OAAO,CAACO,IAAI,CAAC;QACXC,KAAK,EAAE;UACL,CAACV,QAAQ,GAAG;YACVW,GAAG,EAAEC,MAAM,CAACX,KAAK,CAACK,QAAQ,CAAC;YAC3BO,GAAG,EAAED,MAAM,CAACX,KAAK,CAACO,QAAQ;UAC5B;QACF;MACF,CAAC,CAAC;IACJ;IACA;EACF;EAEA,MAAMM,GAAG,GAAGX,OAAO,GAAGH,QAAQ,GAAI,GAAEA,QAAS,UAAS;EAEtD,MAAMe,OAAO,GAAGC,KAAK,CAACD,OAAO,CAACd,KAAK,CAAC;EACpC,IAAI,CAACc,OAAO,EAAE;IACZ,MAAME,eAAe,GAAG;MAAEC,KAAK,EAAE;QAAE,CAACJ,GAAG,GAAGb;MAAM;IAAE,CAAC;IACnDC,OAAO,CAACO,IAAI,CAACQ,eAAe,CAAC;IAC7B;EACF;EAEAhB,KAAK,CAACkB,OAAO,CAACC,WAAW,IAAI;IAC3BlB,OAAO,CAACO,IAAI,CAAC;MAAES,KAAK,EAAE;QAAE,CAACJ,GAAG,GAAGM;MAAY;IAAE,CAAC,CAAC;EACjD,CAAC,CAAC;AACJ,CAAC;AACD,MAAMC,iBAAiB,GAAGA,CAAC;EACzBC,gBAAgB;EAChBC,KAAK;EACLC,QAAQ;EACRC,gBAAgB;EAChBC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,IAAI,CAACL,gBAAgB,EAAE,OAAO,EAAE;EAChC,MAAMM,WAAW,GAAG,EAAE;EACtBC,MAAM,CAACC,IAAI,CAACP,KAAK,CAAC,CAACJ,OAAO,CAACnB,QAAQ,IAAI;IACrC,IAAIF,oBAAoB,CAACiC,QAAQ,CAAC/B,QAAQ,CAAC,EAAE;IAC7C,IAAI,CAACA,QAAQ,IAAI,CAACuB,KAAK,CAACvB,QAAQ,CAAC,EAAE;IACnC,MAAMgC,UAAU,GAAGT,KAAK,CAACvB,QAAQ,CAAC;IAElC,MAAMG,OAAO,GAAGuB,WAAW,CAACK,QAAQ,CAAC/B,QAAQ,CAAC;IAC9C,MAAMI,SAAS,GAAGuB,SAAS,CAACI,QAAQ,CAAC/B,QAAQ,CAAC;IAC9CD,gBAAgB,CAAC;MAAEC,QAAQ;MAAEC,KAAK,EAAE+B,UAAU;MAAE9B,OAAO,EAAE0B,WAAW;MAAEzB,OAAO;MAAEC;IAAU,CAAC,CAAC;EAC7F,CAAC,CAAC;EAEF,IAAIqB,gBAAgB,IAAIA,gBAAgB,CAACQ,MAAM,EAAE;IAC/CR,gBAAgB,IACdA,gBAAgB,CAACN,OAAO,CAACe,kBAAkB,IAAI;MAC7C,MAAM,CAACC,eAAe,CAAC,GAAGD,kBAAkB,CAACE,KAAK,CAAC,GAAG,CAAC;MACvDZ,QAAQ,CAACL,OAAO,CAACkB,cAAc,IAAI;QACjC,IAAIA,cAAc,CAACC,OAAO,CAACH,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QACpD,MAAM,GAAGI,cAAc,CAAC,GAAGF,cAAc,CAACD,KAAK,CAAC,GAAG,CAAC;QACpD,MAAMI,eAAe,GAAI,GAAEL,eAAgB,UAAS;QACpD,IAAI,CAACI,cAAc,EAAE;QACrBX,WAAW,CAACnB,IAAI,CAAC;UAAES,KAAK,EAAE;YAAE,CAACsB,eAAe,GAAGD;UAAe;QAAE,CAAC,CAAC;MACpE,CAAC,CAAC;IACJ,CAAC,CAAC;EACN;EAEA,OAAOX,WAAW;AACpB,CAAC;AAED,eAAeP,iBAAiB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const buildNewUrl = (url, currentUrl, queryParams, hashBit) => {
|
|
2
|
+
const encodedQuery = encodeURI(queryParams);
|
|
3
|
+
const baseUrl = url || currentUrl;
|
|
4
|
+
const newUrl = encodedQuery ? `${baseUrl}?${encodedQuery}` : `${baseUrl}`;
|
|
5
|
+
return hashBit ? `${newUrl}#${hashBit}` : newUrl;
|
|
6
|
+
};
|
|
7
|
+
export default buildNewUrl;
|
|
8
|
+
//# sourceMappingURL=build-new-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-new-url.js","names":["buildNewUrl","url","currentUrl","queryParams","hashBit","encodedQuery","encodeURI","baseUrl","newUrl"],"sources":["../../../../src/components/SearchFilter/helpers/build-new-url.js"],"sourcesContent":["const buildNewUrl = (url, currentUrl, queryParams, hashBit) => {\n const encodedQuery = encodeURI(queryParams);\n const baseUrl = url || currentUrl;\n const newUrl = encodedQuery ? `${baseUrl}?${encodedQuery}` : `${baseUrl}`;\n return hashBit ? `${newUrl}#${hashBit}` : newUrl;\n};\n\nexport default buildNewUrl;\n"],"mappings":"AAAA,MAAMA,WAAW,GAAGA,CAACC,GAAG,EAAEC,UAAU,EAAEC,WAAW,EAAEC,OAAO,KAAK;EAC7D,MAAMC,YAAY,GAAGC,SAAS,CAACH,WAAW,CAAC;EAC3C,MAAMI,OAAO,GAAGN,GAAG,IAAIC,UAAU;EACjC,MAAMM,MAAM,GAAGH,YAAY,GAAI,GAAEE,OAAQ,IAAGF,YAAa,EAAC,GAAI,GAAEE,OAAQ,EAAC;EACzE,OAAOH,OAAO,GAAI,GAAEI,MAAO,IAAGJ,OAAQ,EAAC,GAAGI,MAAM;AAClD,CAAC;AAED,eAAeR,WAAW"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SEARCH_TERM, TEXT_SEARCH } from '../constants';
|
|
2
|
+
import parseFilterValue from './parse-filter-value';
|
|
3
|
+
import { buildQueryKey } from '../../../helpers';
|
|
4
|
+
const buildUrlQuery = (filterValues, filters, listComponentName = '', query = {}) => {
|
|
5
|
+
if (!filterValues) return '';
|
|
6
|
+
const newQuery = [];
|
|
7
|
+
const queryKeys = [];
|
|
8
|
+
const searchValue = filterValues[SEARCH_TERM];
|
|
9
|
+
const searchKey = buildQueryKey(SEARCH_TERM, listComponentName);
|
|
10
|
+
queryKeys.push(searchKey);
|
|
11
|
+
if (searchValue) newQuery.push(`${searchKey}=${searchValue}`);
|
|
12
|
+
filters.forEach(({
|
|
13
|
+
propsToDisplay,
|
|
14
|
+
type
|
|
15
|
+
}) => {
|
|
16
|
+
if (type === TEXT_SEARCH) return;
|
|
17
|
+
propsToDisplay.forEach(prop => {
|
|
18
|
+
const value = filterValues[prop];
|
|
19
|
+
const filterKey = buildQueryKey(prop, listComponentName);
|
|
20
|
+
queryKeys.push(filterKey);
|
|
21
|
+
const parsedValue = parseFilterValue(filterKey, type, value, newQuery);
|
|
22
|
+
if (parsedValue && !newQuery.includes(parsedValue)) newQuery.push(parsedValue);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
Object.keys(query).forEach(key => {
|
|
26
|
+
if (queryKeys.indexOf(key) === -1) newQuery.push(`${key}=${query[key]}`);
|
|
27
|
+
});
|
|
28
|
+
return newQuery.join('&');
|
|
29
|
+
};
|
|
30
|
+
export default buildUrlQuery;
|
|
31
|
+
//# sourceMappingURL=build-url-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-url-query.js","names":["SEARCH_TERM","TEXT_SEARCH","parseFilterValue","buildQueryKey","buildUrlQuery","filterValues","filters","listComponentName","query","newQuery","queryKeys","searchValue","searchKey","push","forEach","propsToDisplay","type","prop","value","filterKey","parsedValue","includes","Object","keys","key","indexOf","join"],"sources":["../../../../src/components/SearchFilter/helpers/build-url-query.js"],"sourcesContent":["import { SEARCH_TERM, TEXT_SEARCH } from '../constants';\nimport parseFilterValue from './parse-filter-value';\nimport { buildQueryKey } from '../../../helpers';\n\nconst buildUrlQuery = (filterValues, filters, listComponentName = '', query = {}) => {\n if (!filterValues) return '';\n\n const newQuery = [];\n const queryKeys = [];\n const searchValue = filterValues[SEARCH_TERM];\n const searchKey = buildQueryKey(SEARCH_TERM, listComponentName);\n queryKeys.push(searchKey);\n if (searchValue) newQuery.push(`${searchKey}=${searchValue}`);\n\n filters.forEach(({ propsToDisplay, type }) => {\n if (type === TEXT_SEARCH) return;\n propsToDisplay.forEach(prop => {\n const value = filterValues[prop];\n const filterKey = buildQueryKey(prop, listComponentName);\n queryKeys.push(filterKey);\n const parsedValue = parseFilterValue(filterKey, type, value, newQuery);\n if (parsedValue && !newQuery.includes(parsedValue)) newQuery.push(parsedValue);\n });\n });\n\n Object.keys(query).forEach(key => {\n if (queryKeys.indexOf(key) === -1) newQuery.push(`${key}=${query[key]}`);\n });\n\n return newQuery.join('&');\n};\n\nexport default buildUrlQuery;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,WAAW,QAAQ,cAAc;AACvD,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,MAAMC,aAAa,GAAGA,CAACC,YAAY,EAAEC,OAAO,EAAEC,iBAAiB,GAAG,EAAE,EAAEC,KAAK,GAAG,CAAC,CAAC,KAAK;EACnF,IAAI,CAACH,YAAY,EAAE,OAAO,EAAE;EAE5B,MAAMI,QAAQ,GAAG,EAAE;EACnB,MAAMC,SAAS,GAAG,EAAE;EACpB,MAAMC,WAAW,GAAGN,YAAY,CAACL,WAAW,CAAC;EAC7C,MAAMY,SAAS,GAAGT,aAAa,CAACH,WAAW,EAAEO,iBAAiB,CAAC;EAC/DG,SAAS,CAACG,IAAI,CAACD,SAAS,CAAC;EACzB,IAAID,WAAW,EAAEF,QAAQ,CAACI,IAAI,CAAE,GAAED,SAAU,IAAGD,WAAY,EAAC,CAAC;EAE7DL,OAAO,CAACQ,OAAO,CAAC,CAAC;IAAEC,cAAc;IAAEC;EAAK,CAAC,KAAK;IAC5C,IAAIA,IAAI,KAAKf,WAAW,EAAE;IAC1Bc,cAAc,CAACD,OAAO,CAACG,IAAI,IAAI;MAC7B,MAAMC,KAAK,GAAGb,YAAY,CAACY,IAAI,CAAC;MAChC,MAAME,SAAS,GAAGhB,aAAa,CAACc,IAAI,EAAEV,iBAAiB,CAAC;MACxDG,SAAS,CAACG,IAAI,CAACM,SAAS,CAAC;MACzB,MAAMC,WAAW,GAAGlB,gBAAgB,CAACiB,SAAS,EAAEH,IAAI,EAAEE,KAAK,EAAET,QAAQ,CAAC;MACtE,IAAIW,WAAW,IAAI,CAACX,QAAQ,CAACY,QAAQ,CAACD,WAAW,CAAC,EAAEX,QAAQ,CAACI,IAAI,CAACO,WAAW,CAAC;IAChF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFE,MAAM,CAACC,IAAI,CAACf,KAAK,CAAC,CAACM,OAAO,CAACU,GAAG,IAAI;IAChC,IAAId,SAAS,CAACe,OAAO,CAACD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAEf,QAAQ,CAACI,IAAI,CAAE,GAAEW,GAAI,IAAGhB,KAAK,CAACgB,GAAG,CAAE,EAAC,CAAC;EAC1E,CAAC,CAAC;EAEF,OAAOf,QAAQ,CAACiB,IAAI,CAAC,GAAG,CAAC;AAC3B,CAAC;AAED,eAAetB,aAAa"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RANGE, CHECKBOX_SELECT } from '../constants';
|
|
2
|
+
const getFilterRangesAndCheckboxesValues = filters => {
|
|
3
|
+
const checkboxSelectValues = [];
|
|
4
|
+
const rangeValues = [];
|
|
5
|
+
filters.forEach(({
|
|
6
|
+
type,
|
|
7
|
+
propsToDisplay
|
|
8
|
+
}) => {
|
|
9
|
+
if (CHECKBOX_SELECT.includes(type)) {
|
|
10
|
+
checkboxSelectValues.push(propsToDisplay[0]);
|
|
11
|
+
} else if (type === RANGE) {
|
|
12
|
+
rangeValues.push(...propsToDisplay);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return [checkboxSelectValues, rangeValues];
|
|
16
|
+
};
|
|
17
|
+
export default getFilterRangesAndCheckboxesValues;
|
|
18
|
+
//# sourceMappingURL=get-filter-ranges-and-checkboxes-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-filter-ranges-and-checkboxes-values.js","names":["RANGE","CHECKBOX_SELECT","getFilterRangesAndCheckboxesValues","filters","checkboxSelectValues","rangeValues","forEach","type","propsToDisplay","includes","push"],"sources":["../../../../src/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js"],"sourcesContent":["import { RANGE, CHECKBOX_SELECT } from '../constants';\n\nconst getFilterRangesAndCheckboxesValues = filters => {\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 return [checkboxSelectValues, rangeValues];\n};\n\nexport default getFilterRangesAndCheckboxesValues;\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,eAAe,QAAQ,cAAc;AAErD,MAAMC,kCAAkC,GAAGC,OAAO,IAAI;EACpD,MAAMC,oBAAoB,GAAG,EAAE;EAC/B,MAAMC,WAAW,GAAG,EAAE;EAEtBF,OAAO,CAACG,OAAO,CAAC,CAAC;IAAEC,IAAI;IAAEC;EAAe,CAAC,KAAK;IAC5C,IAAIP,eAAe,CAACQ,QAAQ,CAACF,IAAI,CAAC,EAAE;MAClCH,oBAAoB,CAACM,IAAI,CAACF,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,MAAM,IAAID,IAAI,KAAKP,KAAK,EAAE;MACzBK,WAAW,CAACK,IAAI,CAAC,GAAGF,cAAc,CAAC;IACrC;EACF,CAAC,CAAC;EACF,OAAO,CAACJ,oBAAoB,EAAEC,WAAW,CAAC;AAC5C,CAAC;AAED,eAAeH,kCAAkC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SEARCH_TERM, TEXT_SEARCH } from '../constants';
|
|
2
|
+
import getFilterValueFromQuery from './get-filter-value-from-query';
|
|
3
|
+
const getFilterValues = (filterData, filters, query) => {
|
|
4
|
+
const filterValues = {};
|
|
5
|
+
filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';
|
|
6
|
+
filters.forEach(filterProps => {
|
|
7
|
+
const {
|
|
8
|
+
propsToDisplay: [key],
|
|
9
|
+
type
|
|
10
|
+
} = filterProps;
|
|
11
|
+
if (type === TEXT_SEARCH) return;
|
|
12
|
+
const data = filterData && filterData[key] ? filterData[key] : {};
|
|
13
|
+
filterValues[key] = getFilterValueFromQuery(key, filterProps, data, query);
|
|
14
|
+
});
|
|
15
|
+
filterValues.dataNotSet = !filterData;
|
|
16
|
+
return filterValues;
|
|
17
|
+
};
|
|
18
|
+
export default getFilterValues;
|
|
19
|
+
//# sourceMappingURL=get-filter-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-filter-values.js","names":["SEARCH_TERM","TEXT_SEARCH","getFilterValueFromQuery","getFilterValues","filterData","filters","query","filterValues","forEach","filterProps","propsToDisplay","key","type","data","dataNotSet"],"sources":["../../../../src/components/SearchFilter/helpers/get-filter-values.js"],"sourcesContent":["import { SEARCH_TERM, TEXT_SEARCH } from '../constants';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\n\nconst getFilterValues = (filterData, filters, query) => {\n const filterValues = {};\n filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';\n\n filters.forEach(filterProps => {\n const {\n propsToDisplay: [key],\n type\n } = filterProps;\n if (type === TEXT_SEARCH) return;\n const data = filterData && filterData[key] ? filterData[key] : {};\n filterValues[key] = getFilterValueFromQuery(key, filterProps, data, query);\n });\n filterValues.dataNotSet = !filterData;\n return filterValues;\n};\n\nexport default getFilterValues;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,WAAW,QAAQ,cAAc;AACvD,OAAOC,uBAAuB,MAAM,+BAA+B;AAEnE,MAAMC,eAAe,GAAGA,CAACC,UAAU,EAAEC,OAAO,EAAEC,KAAK,KAAK;EACtD,MAAMC,YAAY,GAAG,CAAC,CAAC;EACvBA,YAAY,CAACP,WAAW,CAAC,GAAGM,KAAK,CAACN,WAAW,CAAC,IAAI,EAAE;EAEpDK,OAAO,CAACG,OAAO,CAACC,WAAW,IAAI;IAC7B,MAAM;MACJC,cAAc,EAAE,CAACC,GAAG,CAAC;MACrBC;IACF,CAAC,GAAGH,WAAW;IACf,IAAIG,IAAI,KAAKX,WAAW,EAAE;IAC1B,MAAMY,IAAI,GAAGT,UAAU,IAAIA,UAAU,CAACO,GAAG,CAAC,GAAGP,UAAU,CAACO,GAAG,CAAC,GAAG,CAAC,CAAC;IACjEJ,YAAY,CAACI,GAAG,CAAC,GAAGT,uBAAuB,CAACS,GAAG,EAAEF,WAAW,EAAEI,IAAI,EAAEP,KAAK,CAAC;EAC5E,CAAC,CAAC;EACFC,YAAY,CAACO,UAAU,GAAG,CAACV,UAAU;EACrC,OAAOG,YAAY;AACrB,CAAC;AAED,eAAeJ,eAAe"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import buildNewUrl from './build-new-url';
|
|
2
2
|
import buildRawQueryStringified from './build-raw-query-stringified';
|
|
3
3
|
import { decodeValue, encodeValue } from './decode-encode';
|
|
4
4
|
import checkIfRangeUpdated from './check-if-range-updated';
|
|
@@ -10,9 +10,10 @@ import getIntersectedProp from './get-intersected-prop';
|
|
|
10
10
|
import getRangeValue from './get-range-value';
|
|
11
11
|
import getSelectOptions from './get-select-options';
|
|
12
12
|
import isDeviceDesktop from './is-device-desktop';
|
|
13
|
-
import
|
|
13
|
+
import getFilterValues from './get-filter-values';
|
|
14
14
|
import getFilterValueFromQuery from './get-filter-value-from-query';
|
|
15
|
-
import
|
|
15
|
+
import buildUrlQuery from './build-url-query';
|
|
16
16
|
import buildFiltersQuery from './build-filters-query';
|
|
17
|
-
|
|
17
|
+
import getFilterRangesAndCheckboxesValues from './get-filter-ranges-and-checkboxes-values';
|
|
18
|
+
export { buildUrlQuery, buildNewUrl, buildRawQueryStringified, decodeValue, encodeValue, checkIfRangeUpdated, getResponsiveFilterClassnames, getDisplayValue, calculateStep, calculateMinMax, getIntersectedProp, getRangeValue, getSelectOptions, isDeviceDesktop, getFilterValues, getFilterValueFromQuery, buildFiltersQuery, getFilterRangesAndCheckboxesValues };
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["buildNewUrl","buildRawQueryStringified","decodeValue","encodeValue","checkIfRangeUpdated","getResponsiveFilterClassnames","getDisplayValue","calculateStep","calculateMinMax","getIntersectedProp","getRangeValue","getSelectOptions","isDeviceDesktop","getFilterValues","getFilterValueFromQuery","buildUrlQuery","buildFiltersQuery","getFilterRangesAndCheckboxesValues"],"sources":["../../../../src/components/SearchFilter/helpers/index.js"],"sourcesContent":["import buildNewUrl from './build-new-url';\nimport buildRawQueryStringified from './build-raw-query-stringified';\nimport { decodeValue, encodeValue } from './decode-encode';\nimport checkIfRangeUpdated from './check-if-range-updated';\nimport getResponsiveFilterClassnames from './get-responsive-filter-classnames';\nimport getDisplayValue from './get-display-value';\nimport calculateStep from './calculate-step';\nimport calculateMinMax from './calculate-min-max';\nimport getIntersectedProp from './get-intersected-prop';\nimport getRangeValue from './get-range-value';\nimport getSelectOptions from './get-select-options';\nimport isDeviceDesktop from './is-device-desktop';\nimport getFilterValues from './get-filter-values';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\nimport buildUrlQuery from './build-url-query';\nimport buildFiltersQuery from './build-filters-query';\nimport getFilterRangesAndCheckboxesValues from './get-filter-ranges-and-checkboxes-values';\n\nexport {\n buildUrlQuery,\n buildNewUrl,\n buildRawQueryStringified,\n decodeValue,\n encodeValue,\n checkIfRangeUpdated,\n getResponsiveFilterClassnames,\n getDisplayValue,\n calculateStep,\n calculateMinMax,\n getIntersectedProp,\n getRangeValue,\n getSelectOptions,\n isDeviceDesktop,\n getFilterValues,\n getFilterValueFromQuery,\n buildFiltersQuery,\n getFilterRangesAndCheckboxesValues\n};\n"],"mappings":"AAAA,OAAOA,WAAW,MAAM,iBAAiB;AACzC,OAAOC,wBAAwB,MAAM,+BAA+B;AACpE,SAASC,WAAW,EAAEC,WAAW,QAAQ,iBAAiB;AAC1D,OAAOC,mBAAmB,MAAM,0BAA0B;AAC1D,OAAOC,6BAA6B,MAAM,oCAAoC;AAC9E,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAOC,aAAa,MAAM,kBAAkB;AAC5C,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAOC,uBAAuB,MAAM,+BAA+B;AACnE,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,kCAAkC,MAAM,2CAA2C;AAE1F,SACEF,aAAa,EACbf,WAAW,EACXC,wBAAwB,EACxBC,WAAW,EACXC,WAAW,EACXC,mBAAmB,EACnBC,6BAA6B,EAC7BC,eAAe,EACfC,aAAa,EACbC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,uBAAuB,EACvBE,iBAAiB,EACjBC,kCAAkC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default
|
|
1
|
+
import SearchFilter from './SearchFilterContainer';
|
|
2
|
+
export default SearchFilter;
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["SearchFilter"],"sources":["../../../src/components/SearchFilter/index.js"],"sourcesContent":["import SearchFilter from './SearchFilterContainer';\n\nexport default SearchFilter;\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,yBAAyB;AAElD,eAAeA,YAAY"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
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; }
|
|
4
|
+
const searchFilterReducer = (state, action) => {
|
|
5
|
+
const {
|
|
6
|
+
newValues,
|
|
7
|
+
type,
|
|
8
|
+
shouldSearch = true
|
|
9
|
+
} = action;
|
|
10
|
+
switch (type) {
|
|
11
|
+
case 'update':
|
|
12
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), newValues), {}, {
|
|
13
|
+
shouldSearch
|
|
14
|
+
});
|
|
15
|
+
case 'resetSearch':
|
|
16
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
17
|
+
shouldSearch: false
|
|
18
|
+
});
|
|
19
|
+
case 'reset':
|
|
20
|
+
return null;
|
|
21
|
+
default:
|
|
22
|
+
throw new Error();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export default searchFilterReducer;
|
|
26
|
+
//# sourceMappingURL=searchFilterReducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchFilterReducer.js","names":["searchFilterReducer","state","action","newValues","type","shouldSearch","_objectSpread","Error"],"sources":["../../../src/components/SearchFilter/searchFilterReducer.js"],"sourcesContent":["const searchFilterReducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return null;\n default:\n throw new Error();\n }\n};\n\nexport default searchFilterReducer;\n"],"mappings":";;;AAAA,MAAMA,mBAAmB,GAAGA,CAACC,KAAK,EAAEC,MAAM,KAAK;EAC7C,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC,YAAY,GAAG;EAAK,CAAC,GAAGH,MAAM;EACvD,QAAQE,IAAI;IACV,KAAK,QAAQ;MACX,OAAAE,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAAYL,KAAK,GAAKE,SAAS;QAAEE;MAAY;IAC/C,KAAK,aAAa;MAChB,OAAAC,aAAA,CAAAA,aAAA,KAAYL,KAAK;QAAEI,YAAY,EAAE;MAAK;IACxC,KAAK,OAAO;MACV,OAAO,IAAI;IACb;MACE,MAAM,IAAIE,KAAK,CAAC,CAAC;EACrB;AACF,CAAC;AAED,eAAeP,mBAAmB"}
|
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Select from '@blaze-react/select';
|
|
3
|
-
import {
|
|
3
|
+
import { useRouter } from 'next/router';
|
|
4
4
|
import { parseUrl } from 'query-string';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { DEFAULT_SORT } from './constants';
|
|
7
7
|
import { handleSortUpdate } from './helpers';
|
|
8
8
|
import { withTitle } from '../../HOC';
|
|
9
|
+
const getSortFromQuery = listComponentName => {
|
|
10
|
+
const listNameKey = listComponentName ? `pb[${listComponentName}]` : '';
|
|
11
|
+
const sortKey = `${listNameKey}${listNameKey ? '[sort]' : 'sort'}`;
|
|
12
|
+
const sortByKey = `${listNameKey}${listNameKey ? '[sortby]' : 'sortby'}`;
|
|
13
|
+
return [sortKey, sortByKey];
|
|
14
|
+
};
|
|
9
15
|
const SearchFilterSort = ({
|
|
10
|
-
router,
|
|
11
16
|
filters,
|
|
12
17
|
elementLabel,
|
|
13
18
|
selectLabel,
|
|
14
|
-
id
|
|
19
|
+
id,
|
|
20
|
+
listComponentName
|
|
15
21
|
}) => {
|
|
22
|
+
const router = useRouter();
|
|
16
23
|
const {
|
|
17
24
|
asPath
|
|
18
25
|
} = router;
|
|
26
|
+
const [sortKey, sortByKey] = getSortFromQuery(listComponentName);
|
|
19
27
|
const {
|
|
20
28
|
url,
|
|
21
29
|
query,
|
|
22
30
|
query: {
|
|
23
|
-
sort,
|
|
24
|
-
sortby
|
|
31
|
+
[sortKey]: sort,
|
|
32
|
+
[sortByKey]: sortby
|
|
25
33
|
} = {}
|
|
26
34
|
} = parseUrl(asPath);
|
|
27
35
|
const selectedValue = `${sortby}:${sort}` || '';
|
|
@@ -33,7 +41,14 @@ const SearchFilterSort = ({
|
|
|
33
41
|
}) => [`${propsToDisplay[0]}:${sortValue}`, optionLabel]);
|
|
34
42
|
const setSortValue = ({
|
|
35
43
|
value
|
|
36
|
-
}) => handleSortUpdate(
|
|
44
|
+
}) => handleSortUpdate({
|
|
45
|
+
router,
|
|
46
|
+
value,
|
|
47
|
+
query,
|
|
48
|
+
url,
|
|
49
|
+
selectLabel,
|
|
50
|
+
listComponentName
|
|
51
|
+
});
|
|
37
52
|
return /*#__PURE__*/React.createElement("div", {
|
|
38
53
|
className: "sort-by"
|
|
39
54
|
}, /*#__PURE__*/React.createElement(Select, {
|
|
@@ -46,17 +61,18 @@ const SearchFilterSort = ({
|
|
|
46
61
|
}));
|
|
47
62
|
};
|
|
48
63
|
SearchFilterSort.propTypes = {
|
|
49
|
-
router: PropTypes.object.isRequired,
|
|
50
64
|
filters: PropTypes.array,
|
|
51
65
|
elementLabel: PropTypes.string,
|
|
52
66
|
selectLabel: PropTypes.string,
|
|
53
|
-
id: PropTypes.string
|
|
67
|
+
id: PropTypes.string,
|
|
68
|
+
listComponentName: PropTypes.string
|
|
54
69
|
};
|
|
55
70
|
SearchFilterSort.defaultProps = {
|
|
56
71
|
filters: [],
|
|
57
72
|
elementLabel: '',
|
|
58
73
|
selectLabel: '',
|
|
59
|
-
id: ''
|
|
74
|
+
id: '',
|
|
75
|
+
listComponentName: ''
|
|
60
76
|
};
|
|
61
|
-
export default
|
|
77
|
+
export default withTitle(SearchFilterSort);
|
|
62
78
|
//# sourceMappingURL=SearchFilterSort.js.map
|