@blaze-cms/react-page-builder 0.113.0 → 0.114.0-alpha.2
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 +68 -0
- package/README.md +5 -8
- package/lib/components/Card/CardRender.js +61 -17
- package/lib/components/Card/CardRender.js.map +1 -1
- package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib/components/List/ListBuilder.js +11 -6
- package/lib/components/List/ListBuilder.js.map +1 -1
- package/lib/components/List/ListFactory.js +20 -7
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/helpers/get-sort-props.js +46 -0
- package/lib/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib/components/List/helpers/index.js +8 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +57 -20
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib/components/SearchFilter/components/Range.js +7 -3
- package/lib/components/SearchFilter/components/Range.js.map +1 -1
- package/lib/components/SearchFilter/components/Select.js +5 -2
- package/lib/components/SearchFilter/components/Select.js.map +1 -1
- package/lib/components/SearchFilter/constants.js +13 -1
- package/lib/components/SearchFilter/constants.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-query.js +6 -5
- package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-range-value.js +6 -4
- package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js +29 -0
- package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -0
- package/lib/components/SearchFilter/helpers/index.js +8 -0
- package/lib/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib/helpers/get-generic-render-variables.js +32 -22
- package/lib/helpers/get-generic-render-variables.js.map +1 -1
- package/lib-es/components/Card/CardRender.js +32 -5
- package/lib-es/components/Card/CardRender.js.map +1 -1
- package/lib-es/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib-es/components/List/ListBuilder.js +11 -6
- package/lib-es/components/List/ListBuilder.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +20 -8
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/helpers/get-sort-props.js +26 -0
- package/lib-es/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +1 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +51 -21
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Range.js +7 -3
- package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Select.js +5 -2
- package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
- package/lib-es/components/SearchFilter/constants.js +12 -1
- package/lib-es/components/SearchFilter/constants.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-query.js +5 -4
- package/lib-es/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-responsive-filter-classnames.js +20 -0
- package/lib-es/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/index.js +2 -1
- package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib-es/helpers/get-generic-render-variables.js +22 -15
- package/lib-es/helpers/get-generic-render-variables.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Card/CardRender.js +24 -6
- package/src/components/Card/helpers/filter-query-setup.js +1 -0
- package/src/components/DataSummary/helpers/build-loop-props-content.js +1 -6
- package/src/components/List/ListBuilder.js +11 -6
- package/src/components/List/ListFactory.js +18 -8
- package/src/components/List/helpers/get-sort-props.js +17 -0
- package/src/components/List/helpers/index.js +1 -0
- package/src/components/SearchFilter/SearchFilter/FiltersList.js +15 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +75 -25
- package/src/components/SearchFilter/SearchFilterContainer.js +8 -4
- package/src/components/SearchFilter/components/Checkbox.js +4 -2
- package/src/components/SearchFilter/components/Range.js +7 -3
- package/src/components/SearchFilter/components/Select.js +4 -2
- package/src/components/SearchFilter/constants.js +14 -1
- package/src/components/SearchFilter/helpers/build-query.js +5 -4
- package/src/components/SearchFilter/helpers/get-range-value.js +3 -1
- package/src/components/SearchFilter/helpers/get-responsive-filter-classnames.js +22 -0
- package/src/components/SearchFilter/helpers/index.js +2 -0
- package/src/components/SearchFilter/helpers/is-device-desktop.js +2 -1
- package/src/helpers/get-generic-render-variables.js +22 -12
- package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +24 -0
- package/tests/unit/src/components/List/helpers/get-sort-props.test.js +58 -0
- package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +29 -3
- package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/SearchFilter.test.js.snap +304 -6
- package/tests/unit/src/helpers/build-raw-query.test.js +2 -1
- package/tests/unit/src/helpers/get-generic-render-variables.test.js +5 -11
- package/lib/helpers/check-sort-by.js +0 -16
- package/lib/helpers/check-sort-by.js.map +0 -1
- package/lib-es/helpers/check-sort-by.js +0 -4
- package/lib-es/helpers/check-sort-by.js.map +0 -1
- package/src/helpers/check-sort-by.js +0 -4
|
@@ -16,9 +16,11 @@ const Range = ({
|
|
|
16
16
|
entity,
|
|
17
17
|
propsToDisplay,
|
|
18
18
|
updateFilterValues,
|
|
19
|
-
filterValues
|
|
19
|
+
filterValues,
|
|
20
|
+
shouldSearch
|
|
20
21
|
}) => {
|
|
21
22
|
const router = useRouter();
|
|
23
|
+
const debounceAmount = shouldSearch ? 1200 : 100;
|
|
22
24
|
const { query } = parseUrl(decodeValue(router.asPath));
|
|
23
25
|
const hasMultipleOptions = propsToDisplay.length > 1;
|
|
24
26
|
const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];
|
|
@@ -39,8 +41,8 @@ const Range = ({
|
|
|
39
41
|
const shouldShowRange = rangeOption && min !== max;
|
|
40
42
|
|
|
41
43
|
const handleChange = debounce((option, value) => {
|
|
42
|
-
updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } },
|
|
43
|
-
},
|
|
44
|
+
updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);
|
|
45
|
+
}, debounceAmount);
|
|
44
46
|
|
|
45
47
|
return (
|
|
46
48
|
<>
|
|
@@ -86,11 +88,13 @@ Range.propTypes = {
|
|
|
86
88
|
entity: PropTypes.string.isRequired,
|
|
87
89
|
filterValues: PropTypes.object.isRequired,
|
|
88
90
|
updateFilterValues: PropTypes.func.isRequired,
|
|
91
|
+
shouldSearch: PropTypes.bool,
|
|
89
92
|
rangeInterval: PropTypes.number,
|
|
90
93
|
label: PropTypes.string
|
|
91
94
|
};
|
|
92
95
|
|
|
93
96
|
Range.defaultProps = {
|
|
97
|
+
shouldSearch: false,
|
|
94
98
|
rangeInterval: 1,
|
|
95
99
|
label: ''
|
|
96
100
|
};
|
|
@@ -4,7 +4,7 @@ import Select from '@blaze-react/select';
|
|
|
4
4
|
import { withTitle } from '../../../HOC';
|
|
5
5
|
import { DEFAULT_OPTION } from '../constants';
|
|
6
6
|
|
|
7
|
-
const SelectFilter = ({ data, label, prop, updateFilterValues, filterValues }) => {
|
|
7
|
+
const SelectFilter = ({ data, label, prop, updateFilterValues, filterValues, shouldSearch }) => {
|
|
8
8
|
const filterValue = filterValues[prop] || '';
|
|
9
9
|
|
|
10
10
|
const options = data[prop].buckets
|
|
@@ -21,7 +21,7 @@ const SelectFilter = ({ data, label, prop, updateFilterValues, filterValues }) =
|
|
|
21
21
|
id={prop}
|
|
22
22
|
options={optionsJoined}
|
|
23
23
|
onChange={({ value }) => {
|
|
24
|
-
updateFilterValues({ [prop]: value },
|
|
24
|
+
updateFilterValues({ [prop]: value }, shouldSearch);
|
|
25
25
|
}}
|
|
26
26
|
/>
|
|
27
27
|
);
|
|
@@ -32,10 +32,12 @@ SelectFilter.propTypes = {
|
|
|
32
32
|
prop: PropTypes.string.isRequired,
|
|
33
33
|
filterValues: PropTypes.object.isRequired,
|
|
34
34
|
updateFilterValues: PropTypes.func.isRequired,
|
|
35
|
+
shouldSearch: PropTypes.bool,
|
|
35
36
|
label: PropTypes.string
|
|
36
37
|
};
|
|
37
38
|
|
|
38
39
|
SelectFilter.defaultProps = {
|
|
40
|
+
shouldSearch: false,
|
|
39
41
|
label: ''
|
|
40
42
|
};
|
|
41
43
|
|
|
@@ -24,6 +24,18 @@ const SEARCH = 'Search';
|
|
|
24
24
|
const REFINE = `Refine Search`;
|
|
25
25
|
const MOBILE_REFINEMENT_TITLE = 'Search refinement';
|
|
26
26
|
|
|
27
|
+
const MORE_FILTERS_CLASSES_BASE = 'filter__more-filters';
|
|
28
|
+
const MORE_FILTERS_CLASSES = {
|
|
29
|
+
MOBILE_WRAPPER: `${MORE_FILTERS_CLASSES_BASE}-mobile-wrapper`,
|
|
30
|
+
MOBILE_CONTENT: `${MORE_FILTERS_CLASSES_BASE}-mobile-content`,
|
|
31
|
+
MOBILE_TOGGLER: `${MORE_FILTERS_CLASSES_BASE}-mobile-toggler`,
|
|
32
|
+
MOBILE_BUTTONS: `${MORE_FILTERS_CLASSES_BASE}-mobile-buttons`,
|
|
33
|
+
DESKTOP_WRAPPER: `${MORE_FILTERS_CLASSES_BASE}-desktop-wrapper`,
|
|
34
|
+
DESKTOP_CONTENT: `${MORE_FILTERS_CLASSES_BASE}-desktop-content`,
|
|
35
|
+
DESKTOP_TOGGLER: `${MORE_FILTERS_CLASSES_BASE}-desktop-toggler`,
|
|
36
|
+
DESKTOP_BUTTONS: `${MORE_FILTERS_CLASSES_BASE}-desktop-buttons`
|
|
37
|
+
};
|
|
38
|
+
|
|
27
39
|
export {
|
|
28
40
|
CHECKBOX,
|
|
29
41
|
SELECT,
|
|
@@ -49,5 +61,6 @@ export {
|
|
|
49
61
|
RESET,
|
|
50
62
|
SEARCH,
|
|
51
63
|
REFINE,
|
|
52
|
-
MOBILE_REFINEMENT_TITLE
|
|
64
|
+
MOBILE_REFINEMENT_TITLE,
|
|
65
|
+
MORE_FILTERS_CLASSES
|
|
53
66
|
};
|
|
@@ -8,12 +8,13 @@ const buildQuery = (filterValues, filters) => {
|
|
|
8
8
|
|
|
9
9
|
filters.forEach(({ propsToDisplay, type }) => {
|
|
10
10
|
if (type === TEXT_SEARCH) return;
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
propsToDisplay.forEach(prop => {
|
|
12
13
|
const value = filterValues[prop];
|
|
13
14
|
const parsedValue = parseFilterValue(prop, type, value);
|
|
14
|
-
if (!parsedValue)
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
if (parsedValue && !newQuery.includes(parsedValue)) {
|
|
16
|
+
newQuery.push(parsedValue);
|
|
17
|
+
}
|
|
17
18
|
});
|
|
18
19
|
});
|
|
19
20
|
|
|
@@ -4,7 +4,9 @@ const getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {
|
|
|
4
4
|
const { min, max } = calculateMinMax({ min: _min, max: _max }, rangeInterval);
|
|
5
5
|
|
|
6
6
|
if (rawQueryProp) {
|
|
7
|
-
const [queryParamMin, queryParamMax] =
|
|
7
|
+
const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp)
|
|
8
|
+
? rawQueryProp[0].split('-')
|
|
9
|
+
: rawQueryProp.split('-');
|
|
8
10
|
const updatedMinValue = Number(queryParamMin);
|
|
9
11
|
const updatedMaxValue = Number(queryParamMax);
|
|
10
12
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import classnames from 'classnames';
|
|
2
|
+
import { MORE_FILTERS_CLASSES } from '../constants';
|
|
3
|
+
|
|
4
|
+
const getResponsiveFilterClassnames = (
|
|
5
|
+
moreFiltersDesktopCollapsed,
|
|
6
|
+
moreFiltersMobileCollapsed
|
|
7
|
+
) => ({
|
|
8
|
+
moreFiltersMobileWrapperClass: classnames(MORE_FILTERS_CLASSES.MOBILE_WRAPPER, {
|
|
9
|
+
[`${MORE_FILTERS_CLASSES.MOBILE_WRAPPER}--open`]: !moreFiltersMobileCollapsed
|
|
10
|
+
}),
|
|
11
|
+
moreFiltersMobileTogglerClass: classnames(MORE_FILTERS_CLASSES.MOBILE_TOGGLER, {
|
|
12
|
+
[`${MORE_FILTERS_CLASSES.MOBILE_TOGGLER}--open`]: !moreFiltersMobileCollapsed
|
|
13
|
+
}),
|
|
14
|
+
moreFiltersDesktopWrapperClass: classnames(MORE_FILTERS_CLASSES.DESKTOP_WRAPPER, {
|
|
15
|
+
[`${MORE_FILTERS_CLASSES.DESKTOP_WRAPPER}--open`]: !moreFiltersDesktopCollapsed
|
|
16
|
+
}),
|
|
17
|
+
moreFiltersDesktopTogglerClass: classnames(MORE_FILTERS_CLASSES.DESKTOP_TOGGLER, {
|
|
18
|
+
[`${MORE_FILTERS_CLASSES.DESKTOP_TOGGLER}--open`]: !moreFiltersDesktopCollapsed
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export default getResponsiveFilterClassnames;
|
|
@@ -2,6 +2,7 @@ import buildNewQuery from './build-new-query';
|
|
|
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';
|
|
5
|
+
import getResponsiveFilterClassnames from './get-responsive-filter-classnames';
|
|
5
6
|
import getDisplayValue from './get-display-value';
|
|
6
7
|
import calculateStep from './calculate-step';
|
|
7
8
|
import calculateMinMax from './calculate-min-max';
|
|
@@ -20,6 +21,7 @@ export {
|
|
|
20
21
|
decodeValue,
|
|
21
22
|
encodeValue,
|
|
22
23
|
checkIfRangeUpdated,
|
|
24
|
+
getResponsiveFilterClassnames,
|
|
23
25
|
getDisplayValue,
|
|
24
26
|
calculateStep,
|
|
25
27
|
calculateMinMax,
|
|
@@ -1,31 +1,41 @@
|
|
|
1
|
-
import checkSortby from './check-sort-by';
|
|
2
1
|
import getSortbyFieldName from './get-sort-by-field-name';
|
|
3
2
|
import { DEFAULT_LIMIT, DEFAULT_OFFSET } from '../constants';
|
|
4
3
|
|
|
4
|
+
const buildSortValues = (sortFilters, relations, stringProps) => {
|
|
5
|
+
if (!sortFilters || !sortFilters.length) return { sort: [] };
|
|
6
|
+
const sortValues = sortFilters
|
|
7
|
+
.map(
|
|
8
|
+
({ sort, propsToDisplay }) =>
|
|
9
|
+
!!sort &&
|
|
10
|
+
!!propsToDisplay[0] &&
|
|
11
|
+
`${getSortbyFieldName(relations, propsToDisplay[0], stringProps)}:${sort.toLowerCase()}`
|
|
12
|
+
)
|
|
13
|
+
.filter(Boolean)
|
|
14
|
+
.join(',');
|
|
15
|
+
|
|
16
|
+
return { sort: sortValues };
|
|
17
|
+
};
|
|
5
18
|
const getCorrectSort = (relations, filterProps, stringProps, isTextSearchApplied) => {
|
|
6
19
|
if (isTextSearchApplied) {
|
|
7
20
|
return {};
|
|
8
21
|
}
|
|
9
|
-
const { sort, sortby } = filterProps;
|
|
10
|
-
|
|
11
|
-
const isSortbyArray = Array.isArray(sortby);
|
|
12
|
-
|
|
13
|
-
const hasSortFields = sort && checkSortby(sortby, isSortbyArray);
|
|
14
|
-
|
|
15
|
-
const sortValue = hasSortFields
|
|
16
|
-
? `${getSortbyFieldName(relations, sortby, stringProps, isSortbyArray)}:${sort.toLowerCase()}`
|
|
17
|
-
: '';
|
|
22
|
+
const { sort, sortby, sortProperties = [] } = filterProps;
|
|
18
23
|
|
|
19
|
-
return
|
|
24
|
+
return buildSortValues(
|
|
25
|
+
[{ sort, propsToDisplay: [sortby] }, ...sortProperties],
|
|
26
|
+
relations,
|
|
27
|
+
stringProps
|
|
28
|
+
);
|
|
20
29
|
};
|
|
21
30
|
|
|
22
31
|
const getGenericRenderVariables = (
|
|
23
32
|
relations,
|
|
24
|
-
|
|
33
|
+
filterProps = {},
|
|
25
34
|
stringProps = [],
|
|
26
35
|
rawQueryStringified = '',
|
|
27
36
|
isTextSearchFilterApplied = false
|
|
28
37
|
) => {
|
|
38
|
+
const { limit = DEFAULT_LIMIT, offset } = filterProps;
|
|
29
39
|
const sort = getCorrectSort(relations, filterProps, stringProps, isTextSearchFilterApplied);
|
|
30
40
|
const raw = rawQueryStringified ? { rawQueryStringified } : {};
|
|
31
41
|
|
|
@@ -57,4 +57,28 @@ describe('buildLoopPropsContent helper function', () => {
|
|
|
57
57
|
it('should return looped data based on limit if is reachable', () => {
|
|
58
58
|
expect(withLimit).toEqual(mockedResults[3]);
|
|
59
59
|
});
|
|
60
|
+
|
|
61
|
+
it('should have empty label if label is not set', () => {
|
|
62
|
+
const withNoLabel = buildLoopPropsContent(
|
|
63
|
+
mockedLoopProps,
|
|
64
|
+
[
|
|
65
|
+
{
|
|
66
|
+
bold: false,
|
|
67
|
+
enableLink: true,
|
|
68
|
+
label: '',
|
|
69
|
+
modifier: '',
|
|
70
|
+
prefix: '',
|
|
71
|
+
propertiesToDisplay: ['nestedLoopProp.nestedValue'],
|
|
72
|
+
shouldStrip: true
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
0,
|
|
76
|
+
mockedData[0]
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
withNoLabel.forEach(([label]) => {
|
|
80
|
+
expect(label).toEqual('');
|
|
81
|
+
});
|
|
82
|
+
expect.hasAssertions();
|
|
83
|
+
});
|
|
60
84
|
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import getSortProps from '../../../../../../src/components/List/helpers/get-sort-props';
|
|
2
|
+
|
|
3
|
+
const property = 'updated';
|
|
4
|
+
const defaultProperty = 'name';
|
|
5
|
+
const asc = 'asc';
|
|
6
|
+
const desc = 'desc';
|
|
7
|
+
const sortProperties = [
|
|
8
|
+
{
|
|
9
|
+
propsToDisplay: [property],
|
|
10
|
+
sort: asc
|
|
11
|
+
}
|
|
12
|
+
];
|
|
13
|
+
const querySortBy = 'date';
|
|
14
|
+
const props = {
|
|
15
|
+
querySort: '',
|
|
16
|
+
sortProperties,
|
|
17
|
+
defaultSort: desc,
|
|
18
|
+
querySortBy: '',
|
|
19
|
+
defaultSortBy: [defaultProperty]
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
describe('getSortProps helper function', () => {
|
|
23
|
+
it('should ignore old sortby/sort and use sortProperties', () => {
|
|
24
|
+
const { sortbyFilters, updatedSortProperties } = getSortProps(props);
|
|
25
|
+
expect(sortbyFilters).toEqual([property]);
|
|
26
|
+
expect(updatedSortProperties).toEqual(sortProperties);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should add query sort', () => {
|
|
30
|
+
const { sortbyFilters, updatedSortProperties } = getSortProps({
|
|
31
|
+
...props,
|
|
32
|
+
querySortBy,
|
|
33
|
+
querySort: desc
|
|
34
|
+
});
|
|
35
|
+
expect(sortbyFilters).toEqual([querySortBy, property]);
|
|
36
|
+
expect(updatedSortProperties).toEqual([
|
|
37
|
+
{
|
|
38
|
+
propsToDisplay: [querySortBy],
|
|
39
|
+
sort: desc
|
|
40
|
+
},
|
|
41
|
+
...sortProperties
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should use old style sort', () => {
|
|
46
|
+
const { sortbyFilters, updatedSortProperties } = getSortProps({
|
|
47
|
+
...props,
|
|
48
|
+
sortProperties: []
|
|
49
|
+
});
|
|
50
|
+
expect(sortbyFilters).toEqual([defaultProperty]);
|
|
51
|
+
expect(updatedSortProperties).toEqual([
|
|
52
|
+
{
|
|
53
|
+
propsToDisplay: [defaultProperty],
|
|
54
|
+
sort: desc
|
|
55
|
+
}
|
|
56
|
+
]);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -22,7 +22,8 @@ const mockedProps = {
|
|
|
22
22
|
handleSearch: jest.fn(),
|
|
23
23
|
resetFilters: jest.fn(),
|
|
24
24
|
name: 'test',
|
|
25
|
-
|
|
25
|
+
groupAfterMobile: 0,
|
|
26
|
+
groupAfterDesktop: 0,
|
|
26
27
|
isCollapsedOnResponsive: true,
|
|
27
28
|
displaySearchFilter: false
|
|
28
29
|
};
|
|
@@ -139,10 +140,35 @@ describe('SearchFilter component', () => {
|
|
|
139
140
|
});
|
|
140
141
|
});
|
|
141
142
|
|
|
142
|
-
describe('when
|
|
143
|
+
describe('when groupAfterMobile > 0 and groupAfterDesktop = 0', () => {
|
|
143
144
|
const specificMockedProps = {
|
|
144
145
|
...mockedProps,
|
|
145
|
-
|
|
146
|
+
groupAfterMobile: 1
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
it('should render without throwing error and match snapshot', () => {
|
|
150
|
+
const { asFragment } = renderComponent(SearchFilter, specificMockedProps);
|
|
151
|
+
expect(asFragment()).toMatchSnapshot();
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
describe('when groupAfterMobile = 0 and groupAfterDesktop > 0', () => {
|
|
156
|
+
const specificMockedProps = {
|
|
157
|
+
...mockedProps,
|
|
158
|
+
groupAfterDesktop: 1
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
it('should render without throwing error and match snapshot', () => {
|
|
162
|
+
const { asFragment } = renderComponent(SearchFilter, specificMockedProps);
|
|
163
|
+
expect(asFragment()).toMatchSnapshot();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
describe('when groupAfterMobile > 0 and groupAfterDesktop > 0', () => {
|
|
168
|
+
const specificMockedProps = {
|
|
169
|
+
...mockedProps,
|
|
170
|
+
groupAfterMobile: 1,
|
|
171
|
+
groupAfterDesktop: 1
|
|
146
172
|
};
|
|
147
173
|
|
|
148
174
|
it('should render without throwing error and match snapshot', () => {
|