@zengenti/contensis-react-base 3.0.2-beta.0 → 3.0.2-beta.10
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/cjs/{App-ee485b92.js → App-81a45001.js} +111 -427
- package/cjs/App-81a45001.js.map +1 -0
- package/cjs/ContensisDeliveryApi-de88df2a.js +231 -0
- package/cjs/ContensisDeliveryApi-de88df2a.js.map +1 -0
- package/cjs/{RouteLoader-3aa6456e.js → RouteLoader-47d70a26.js} +23 -37
- package/{esm/RouteLoader-5171c63f.js.map → cjs/RouteLoader-47d70a26.js.map} +1 -1
- package/cjs/{ToJs-a9a8522b.js → ToJs-61c03582.js} +3 -4
- package/cjs/{ToJs-a9a8522b.js.map → ToJs-61c03582.js.map} +1 -1
- package/cjs/client.js +20 -27
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +124 -188
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +430 -545
- package/cjs/forms.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-7c363211.js} +1 -4
- package/cjs/{fromJSLeaveImmer-e74c673c.js.map → fromJSLeaveImmer-7c363211.js.map} +1 -1
- package/cjs/{login-840860bc.js → login-51b66359.js} +64 -113
- package/cjs/login-51b66359.js.map +1 -0
- package/cjs/{reducers-3a4f8971.js → reducers-9afb5f89.js} +14 -31
- package/cjs/reducers-9afb5f89.js.map +1 -0
- package/cjs/redux.js +17 -17
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +6 -7
- package/cjs/routing.js.map +1 -1
- package/cjs/{sagas-7c19ce8e.js → sagas-6d12e7ca.js} +224 -283
- package/cjs/sagas-6d12e7ca.js.map +1 -0
- package/cjs/search.js +74 -82
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-656da4b7.js → selectors-c76c2676.js} +84 -7
- package/cjs/selectors-c76c2676.js.map +1 -0
- package/cjs/urls-6fcaf4c6.js.map +1 -1
- package/cjs/user.js +4 -13
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +45 -53
- package/cjs/util.js.map +1 -1
- package/cjs/{version-78dfc3bd.js → version-38afaf2a.js} +45 -158
- package/cjs/version-38afaf2a.js.map +1 -0
- package/cjs/version-886f49d8.js +98 -0
- package/cjs/version-886f49d8.js.map +1 -0
- package/esm/{App-640239d2.js → App-5f914483.js} +93 -407
- package/esm/App-5f914483.js.map +1 -0
- package/esm/ContensisDeliveryApi-ad06857d.js +227 -0
- package/esm/ContensisDeliveryApi-ad06857d.js.map +1 -0
- package/esm/{RouteLoader-5171c63f.js → RouteLoader-f5d5f733.js} +22 -36
- package/{cjs/RouteLoader-3aa6456e.js.map → esm/RouteLoader-f5d5f733.js.map} +1 -1
- package/esm/{ToJs-4e02a04d.js → ToJs-0066e629.js} +3 -4
- package/esm/{ToJs-4e02a04d.js.map → ToJs-0066e629.js.map} +1 -1
- package/esm/client.js +15 -22
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +119 -183
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +432 -547
- package/esm/forms.js.map +1 -1
- package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-e2dacd63.js} +1 -4
- package/esm/{fromJSLeaveImmer-0114ffcf.js.map → fromJSLeaveImmer-e2dacd63.js.map} +1 -1
- package/esm/{login-57395c9c.js → login-4d07c2de.js} +63 -112
- package/esm/login-4d07c2de.js.map +1 -0
- package/esm/{reducers-8e5d6232.js → reducers-3d5c37d1.js} +14 -31
- package/esm/reducers-3d5c37d1.js.map +1 -0
- package/esm/redux.js +9 -8
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +3 -4
- package/esm/routing.js.map +1 -1
- package/esm/{sagas-8d8945e6.js → sagas-53d2aefb.js} +176 -238
- package/esm/sagas-53d2aefb.js.map +1 -0
- package/esm/search.js +75 -83
- package/esm/search.js.map +1 -1
- package/esm/{selectors-a5e5835b.js → selectors-3f0d804d.js} +70 -7
- package/esm/selectors-3f0d804d.js.map +1 -0
- package/esm/urls-eac9a747.js.map +1 -1
- package/esm/user.js +6 -15
- package/esm/user.js.map +1 -1
- package/esm/util.js +42 -53
- package/esm/util.js.map +1 -1
- package/esm/{version-e3a5ec66.js → version-dd31c7f0.js} +32 -141
- package/esm/version-dd31c7f0.js.map +1 -0
- package/esm/version-f4629693.js +87 -0
- package/esm/version-f4629693.js.map +1 -0
- package/models/forms/index.d.ts +1 -3
- package/models/search/models/Search.d.ts +2 -1
- package/models/search/models/SearchActions.d.ts +5 -0
- package/models/search/models/SearchProps.d.ts +4 -1
- package/models/search/models/SearchState.d.ts +1 -0
- package/models/search/redux/actions.d.ts +5 -0
- package/models/search/redux/reducers.d.ts +3 -0
- package/models/search/redux/selectors.d.ts +1 -0
- package/models/search/redux/types.d.ts +1 -0
- package/models/util/ContensisDeliveryApi.d.ts +6 -0
- package/models/util/index.d.ts +1 -0
- package/package.json +1 -1
- package/cjs/App-ee485b92.js.map +0 -1
- package/cjs/actions-8dc9e8de.js +0 -87
- package/cjs/actions-8dc9e8de.js.map +0 -1
- package/cjs/login-840860bc.js.map +0 -1
- package/cjs/reducers-3a4f8971.js.map +0 -1
- package/cjs/sagas-7c19ce8e.js.map +0 -1
- package/cjs/selectors-656da4b7.js.map +0 -1
- package/cjs/version-78dfc3bd.js.map +0 -1
- package/cjs/version-eba6d09b.js +0 -20
- package/cjs/version-eba6d09b.js.map +0 -1
- package/esm/App-640239d2.js.map +0 -1
- package/esm/actions-180948dd.js +0 -72
- package/esm/actions-180948dd.js.map +0 -1
- package/esm/login-57395c9c.js.map +0 -1
- package/esm/reducers-8e5d6232.js.map +0 -1
- package/esm/sagas-8d8945e6.js.map +0 -1
- package/esm/selectors-a5e5835b.js.map +0 -1
- package/esm/version-2485e2fb.js +0 -15
- package/esm/version-2485e2fb.js.map +0 -1
- package/esm/version-e3a5ec66.js.map +0 -1
package/cjs/search.js
CHANGED
|
@@ -4,11 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var reactRedux = require('react-redux');
|
|
7
|
-
var sagas = require('./sagas-7c19ce8e.js');
|
|
8
7
|
require('jsonpath-mapper');
|
|
9
8
|
var reselect = require('reselect');
|
|
10
9
|
var merge = require('deepmerge');
|
|
11
10
|
require('query-string');
|
|
11
|
+
var sagas = require('./sagas-6d12e7ca.js');
|
|
12
12
|
var immer = require('immer');
|
|
13
13
|
var equals = require('deep-equal');
|
|
14
14
|
require('contensis-core-api');
|
|
@@ -36,14 +36,11 @@ const toJS = WrappedComponent => wrappedComponentProps => {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
// eslint-disable-next-line import/default
|
|
39
|
-
|
|
40
39
|
const withSearch = mappers => SearchComponent => {
|
|
41
40
|
const Wrapper = props => {
|
|
42
41
|
return /*#__PURE__*/React__default["default"].createElement(SearchComponent, props);
|
|
43
42
|
};
|
|
44
|
-
|
|
45
43
|
Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
|
|
46
|
-
|
|
47
44
|
const mapStateToProps = state => {
|
|
48
45
|
return {
|
|
49
46
|
currentFacet: sagas.getCurrentFacet(state),
|
|
@@ -70,12 +67,12 @@ const withSearch = mappers => SearchComponent => {
|
|
|
70
67
|
totalCount: sagas.getTotalCount(state)
|
|
71
68
|
};
|
|
72
69
|
};
|
|
73
|
-
|
|
74
70
|
const mapDispatchToProps = {
|
|
75
71
|
clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
|
|
76
72
|
updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
|
|
77
73
|
updateCurrentTab: id => sagas.withMappers(sagas.updateCurrentTab(id), mappers),
|
|
78
74
|
updatePageIndex: (pageIndex, scrollYPos) => sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollYPos), mappers),
|
|
75
|
+
updatePageSize: (pageSize, scrollYPos) => sagas.withMappers(sagas.updatePageSize(pageSize, scrollYPos), mappers),
|
|
79
76
|
updateSearchTerm: term => sagas.withMappers(sagas.updateSearchTerm(term), mappers),
|
|
80
77
|
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), mappers),
|
|
81
78
|
updateSortOrder: orderBy => sagas.withMappers(sagas.updateSortOrder(orderBy), mappers)
|
|
@@ -85,12 +82,10 @@ const withSearch = mappers => SearchComponent => {
|
|
|
85
82
|
};
|
|
86
83
|
|
|
87
84
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
88
|
-
|
|
89
85
|
const withListing = mappers => ListingComponent => {
|
|
90
86
|
const Wrapper = props => {
|
|
91
87
|
return /*#__PURE__*/React__default["default"].createElement(ListingComponent, props);
|
|
92
88
|
};
|
|
93
|
-
|
|
94
89
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
95
90
|
const {
|
|
96
91
|
getCurrent,
|
|
@@ -105,7 +100,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
105
100
|
getSearchTerm,
|
|
106
101
|
getSelectedFilters
|
|
107
102
|
} = sagas.selectListing;
|
|
108
|
-
|
|
109
103
|
const mapStateToProps = state => {
|
|
110
104
|
return {
|
|
111
105
|
currentListing: getCurrent(state),
|
|
@@ -124,11 +118,11 @@ const withListing = mappers => ListingComponent => {
|
|
|
124
118
|
}, 'dynamicOrderBy', [])
|
|
125
119
|
};
|
|
126
120
|
};
|
|
127
|
-
|
|
128
121
|
const mapDispatchToProps = {
|
|
129
122
|
clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
|
|
130
123
|
updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
|
|
131
124
|
updatePageIndex: (pageIndex, scrollYPos) => sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollYPos), mappers),
|
|
125
|
+
updatePageSize: (pageSize, scrollYPos) => sagas.withMappers(sagas.updatePageSize(pageSize, scrollYPos), mappers),
|
|
132
126
|
updateSearchTerm: term => sagas.withMappers(sagas.updateSearchTerm(term), mappers),
|
|
133
127
|
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), mappers),
|
|
134
128
|
updateSortOrder: orderBy => sagas.withMappers(sagas.updateSortOrder(orderBy), mappers)
|
|
@@ -159,7 +153,6 @@ const {
|
|
|
159
153
|
getTabsAndFacets,
|
|
160
154
|
getTotalCount
|
|
161
155
|
} = sagas.selectFacets;
|
|
162
|
-
|
|
163
156
|
const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
164
157
|
currentFacet: getCurrent$1(state),
|
|
165
158
|
currentPageIndex: getPageIndex$1(state),
|
|
@@ -184,7 +177,6 @@ const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_,
|
|
|
184
177
|
tabsAndFacets: getTabsAndFacets(state),
|
|
185
178
|
totalCount: getTotalCount(state)
|
|
186
179
|
}));
|
|
187
|
-
|
|
188
180
|
const useFacets = ({
|
|
189
181
|
mappers
|
|
190
182
|
} = {
|
|
@@ -198,6 +190,7 @@ const useFacets = ({
|
|
|
198
190
|
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
199
191
|
updateCurrentTab: id => sagas.withMappers(sagas.updateCurrentTab(id), m),
|
|
200
192
|
updatePageIndex: (pageIndex, scrollYPos) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollYPos), m)),
|
|
193
|
+
updatePageSize: (pageSize, scrollYPos) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollYPos), m)),
|
|
201
194
|
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
202
195
|
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), m)),
|
|
203
196
|
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
@@ -260,7 +253,6 @@ const {
|
|
|
260
253
|
getRenderableFilters,
|
|
261
254
|
getSearchTerm
|
|
262
255
|
} = sagas.selectListing;
|
|
263
|
-
|
|
264
256
|
const makeSelectListingProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
265
257
|
currentListing: getCurrent(state),
|
|
266
258
|
currentPageIndex: getPageIndex(state),
|
|
@@ -278,7 +270,6 @@ const makeSelectListingProps = () => reselect.createSelector(state => state, (_,
|
|
|
278
270
|
state
|
|
279
271
|
}, 'dynamicOrderBy', [])
|
|
280
272
|
}));
|
|
281
|
-
|
|
282
273
|
const useListing = ({
|
|
283
274
|
mappers
|
|
284
275
|
} = {
|
|
@@ -291,6 +282,7 @@ const useListing = ({
|
|
|
291
282
|
clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
|
|
292
283
|
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
293
284
|
updatePageIndex: (pageIndex, scrollYPos) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollYPos), m)),
|
|
285
|
+
updatePageSize: (pageSize, scrollYPos) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollYPos), m)),
|
|
294
286
|
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
295
287
|
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), m)),
|
|
296
288
|
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
@@ -337,7 +329,6 @@ const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_
|
|
|
337
329
|
results: sagas.getResults(state, id, sagas.Context.minilist, 'js'),
|
|
338
330
|
searchTerm: sagas.getSearchTerm(state)
|
|
339
331
|
} : null);
|
|
340
|
-
|
|
341
332
|
const useMinilist = ({
|
|
342
333
|
id,
|
|
343
334
|
config,
|
|
@@ -366,7 +357,8 @@ const useMinilist = ({
|
|
|
366
357
|
pagingInfo: {},
|
|
367
358
|
results: [],
|
|
368
359
|
searchTerm: ''
|
|
369
|
-
};
|
|
360
|
+
};
|
|
361
|
+
// useSelector((state: AppState) => ({
|
|
370
362
|
// facet: getFacet(state, id, Context.minilist).toJS(),
|
|
371
363
|
// filters: getFilters(state, id, Context.minilist).toJS(),
|
|
372
364
|
// isLoading: getIsLoading(state, Context.minilist, id),
|
|
@@ -483,28 +475,26 @@ const addConfigToState = (state, action) => {
|
|
|
483
475
|
context,
|
|
484
476
|
facet,
|
|
485
477
|
config
|
|
486
|
-
} = action;
|
|
487
|
-
|
|
478
|
+
} = action;
|
|
479
|
+
// Adding or changing the config of a single facet, listing or minilist
|
|
488
480
|
if (context && facet && config) {
|
|
489
|
-
state[context][facet] = {
|
|
481
|
+
state[context][facet] = {
|
|
482
|
+
...searchFacet,
|
|
490
483
|
...config
|
|
491
484
|
};
|
|
492
485
|
} else if (config) {
|
|
493
486
|
// Changing the entire search config
|
|
494
|
-
state = {
|
|
487
|
+
state = {
|
|
488
|
+
...config,
|
|
495
489
|
config: initialState.config
|
|
496
490
|
};
|
|
497
491
|
}
|
|
498
|
-
|
|
499
492
|
return state;
|
|
500
493
|
};
|
|
501
|
-
|
|
502
494
|
const generateSearchFacets = (context, config) => {
|
|
503
495
|
const facets = {};
|
|
504
|
-
|
|
505
496
|
if (config) {
|
|
506
497
|
const thisConfig = config[context] || {};
|
|
507
|
-
|
|
508
498
|
if (Object.keys(thisConfig).length > 0) {
|
|
509
499
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
510
500
|
const newFacet = merge__default["default"](searchFacet, facet);
|
|
@@ -512,10 +502,8 @@ const generateSearchFacets = (context, config) => {
|
|
|
512
502
|
});
|
|
513
503
|
}
|
|
514
504
|
}
|
|
515
|
-
|
|
516
505
|
return facets;
|
|
517
506
|
};
|
|
518
|
-
|
|
519
507
|
const generateFiltersState = ({
|
|
520
508
|
facet,
|
|
521
509
|
params,
|
|
@@ -523,29 +511,31 @@ const generateFiltersState = ({
|
|
|
523
511
|
isCurrentFacet
|
|
524
512
|
}, state) => {
|
|
525
513
|
// Remove filters we know about from params
|
|
526
|
-
const filterParams = {
|
|
514
|
+
const filterParams = {
|
|
515
|
+
...params,
|
|
527
516
|
facet: undefined,
|
|
528
517
|
orderBy: undefined,
|
|
529
518
|
pageIndex: undefined,
|
|
530
519
|
term: undefined
|
|
531
|
-
};
|
|
532
|
-
// so we can start off with isSelected is false
|
|
520
|
+
};
|
|
533
521
|
|
|
522
|
+
// Get any existing filters and normalise the items[]
|
|
523
|
+
// so we can start off with isSelected is false
|
|
534
524
|
let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
|
|
535
525
|
if (isCurrentFacet || filter.isGrouped) {
|
|
536
526
|
var _filter$items;
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
527
|
+
return [key, {
|
|
528
|
+
...filter,
|
|
529
|
+
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
530
|
+
...item,
|
|
540
531
|
isSelected: false
|
|
541
532
|
}))
|
|
542
533
|
}];
|
|
543
534
|
}
|
|
544
|
-
|
|
545
535
|
return [key, filter];
|
|
546
536
|
});
|
|
547
|
-
|
|
548
|
-
|
|
537
|
+
const addFilterItem = (filters, paramKey, paramValue) =>
|
|
538
|
+
// Iterate through all filters within the facet,
|
|
549
539
|
// if the paramKey matches the filter key
|
|
550
540
|
// get the existing items list, and see if that filter
|
|
551
541
|
// already exists, if so set isSelected to true,
|
|
@@ -557,47 +547,45 @@ const generateFiltersState = ({
|
|
|
557
547
|
} else {
|
|
558
548
|
const items = filter.items || [];
|
|
559
549
|
const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
|
|
560
|
-
|
|
561
550
|
if (items.length > 0 && itemIndex !== -1) {
|
|
562
551
|
items[itemIndex].isSelected = true;
|
|
563
552
|
} else {
|
|
564
|
-
items.push({
|
|
553
|
+
items.push({
|
|
554
|
+
...filterItem,
|
|
565
555
|
key: paramValue,
|
|
566
556
|
isSelected: true
|
|
567
557
|
});
|
|
568
558
|
}
|
|
569
|
-
|
|
570
|
-
|
|
559
|
+
return [key, {
|
|
560
|
+
...filter,
|
|
571
561
|
items
|
|
572
562
|
}];
|
|
573
563
|
}
|
|
574
|
-
});
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
// For each value found in filterParams
|
|
575
567
|
// we are looking to split that value into multiple by any comma
|
|
576
568
|
// and then either set isSelected for an existing filterItem
|
|
577
569
|
// or push an item to the filters.{ key }.items[] array
|
|
578
570
|
// giving it only the key (entry guid) that can be taken to filter
|
|
579
571
|
// the search results during SSR without needing to fetch the filters first
|
|
580
|
-
|
|
581
|
-
|
|
582
572
|
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
583
573
|
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
584
574
|
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
585
575
|
});
|
|
586
576
|
return Object.fromEntries(filters);
|
|
587
577
|
};
|
|
588
|
-
|
|
589
578
|
const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
|
|
590
|
-
|
|
591
579
|
const resetFacet = facet => {
|
|
592
580
|
facet.pagingInfo.pagesLoaded = [];
|
|
593
581
|
facet.pagingInfo.pageIndex = 0;
|
|
594
582
|
facet.queryDuration = 0;
|
|
595
583
|
return facet;
|
|
596
584
|
};
|
|
597
|
-
|
|
598
585
|
var reducers = (config => {
|
|
599
586
|
// Add facets from SearchConfig to initialState
|
|
600
|
-
const initState = {
|
|
587
|
+
const initState = {
|
|
588
|
+
...initialState,
|
|
601
589
|
tabs: config.tabs,
|
|
602
590
|
facets: generateSearchFacets(sagas.Context.facets, config),
|
|
603
591
|
listings: generateSearchFacets(sagas.Context.listings, config),
|
|
@@ -606,49 +594,46 @@ var reducers = (config => {
|
|
|
606
594
|
return immer.produce((state = initState, action) => {
|
|
607
595
|
const context = state.context;
|
|
608
596
|
const current = context !== 'listings' ? state.currentFacet : state.currentListing;
|
|
609
|
-
|
|
610
597
|
switch (action.type) {
|
|
611
598
|
case sagas.APPLY_CONFIG:
|
|
612
599
|
{
|
|
613
600
|
state = addConfigToState(state, action);
|
|
614
601
|
return state;
|
|
615
602
|
}
|
|
616
|
-
|
|
617
603
|
case sagas.CLEAR_FILTERS:
|
|
618
604
|
{
|
|
619
605
|
const currentFilters = state[context][current].filters;
|
|
620
606
|
state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
|
|
621
607
|
if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
|
|
622
608
|
const filterItems = filter.items || [];
|
|
623
|
-
filter.items = filterItems.map(item => ({
|
|
609
|
+
filter.items = filterItems.map(item => ({
|
|
610
|
+
...item,
|
|
624
611
|
isSelected: false
|
|
625
612
|
}));
|
|
626
613
|
}
|
|
627
|
-
|
|
628
614
|
return [filterKey, filter];
|
|
629
615
|
}));
|
|
630
616
|
state[context][current].queryDuration = 0;
|
|
631
617
|
state[context][current].pagingInfo.pagesLoaded = [];
|
|
632
618
|
return;
|
|
633
619
|
}
|
|
634
|
-
|
|
635
620
|
case sagas.EXECUTE_SEARCH:
|
|
636
621
|
{
|
|
637
|
-
state[action.context][action.facet].entries = {
|
|
622
|
+
state[action.context][action.facet].entries = {
|
|
623
|
+
...(state[action.context][action.facet].entries || entries),
|
|
638
624
|
isLoading: true
|
|
639
625
|
};
|
|
640
626
|
return;
|
|
641
627
|
}
|
|
642
|
-
|
|
643
628
|
case sagas.EXECUTE_SEARCH_ERROR:
|
|
644
629
|
{
|
|
645
|
-
state[action.context][action.facet].entries = {
|
|
630
|
+
state[action.context][action.facet].entries = {
|
|
631
|
+
...entries,
|
|
646
632
|
isError: true,
|
|
647
633
|
error: action.error
|
|
648
634
|
};
|
|
649
635
|
return;
|
|
650
636
|
}
|
|
651
|
-
|
|
652
637
|
case sagas.LOAD_FILTERS:
|
|
653
638
|
{
|
|
654
639
|
const {
|
|
@@ -657,20 +642,21 @@ var reducers = (config => {
|
|
|
657
642
|
} = action;
|
|
658
643
|
const filters = state[action.context][facetKey].filters;
|
|
659
644
|
Object.entries(filters).map(([filterKey, filter]) => {
|
|
660
|
-
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
645
|
+
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
646
|
+
...filter,
|
|
661
647
|
isLoading: true
|
|
662
648
|
};
|
|
663
649
|
return filter;
|
|
664
650
|
});
|
|
665
651
|
state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
|
|
666
|
-
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
652
|
+
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
653
|
+
...filter,
|
|
667
654
|
isLoading: true
|
|
668
655
|
}];
|
|
669
656
|
return [filterKey, filter];
|
|
670
657
|
}));
|
|
671
658
|
return;
|
|
672
659
|
}
|
|
673
|
-
|
|
674
660
|
case sagas.LOAD_FILTERS_ERROR:
|
|
675
661
|
case sagas.LOAD_FILTERS_COMPLETE:
|
|
676
662
|
{
|
|
@@ -680,26 +666,23 @@ var reducers = (config => {
|
|
|
680
666
|
nextFilter
|
|
681
667
|
} = action;
|
|
682
668
|
const filter = state[action.context][facetKey].filters[filterKey];
|
|
683
|
-
|
|
684
669
|
if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
|
|
685
670
|
// Preserve items already in state
|
|
686
|
-
state[action.context][facetKey].filters[filterKey] = {
|
|
671
|
+
state[action.context][facetKey].filters[filterKey] = {
|
|
672
|
+
...filter,
|
|
687
673
|
isLoading: false,
|
|
688
674
|
isError: nextFilter.isError
|
|
689
675
|
};
|
|
690
676
|
return;
|
|
691
677
|
}
|
|
692
|
-
|
|
693
678
|
state[action.context][facetKey].filters[filterKey] = merge__default["default"](filter, nextFilter, {
|
|
694
679
|
arrayMerge: (source, inbound) => inbound
|
|
695
680
|
});
|
|
696
681
|
return;
|
|
697
682
|
}
|
|
698
|
-
|
|
699
683
|
case sagas.SET_ROUTE_FILTERS:
|
|
700
684
|
{
|
|
701
685
|
var _state$context$facet$;
|
|
702
|
-
|
|
703
686
|
const {
|
|
704
687
|
facet,
|
|
705
688
|
params,
|
|
@@ -708,17 +691,20 @@ var reducers = (config => {
|
|
|
708
691
|
const {
|
|
709
692
|
term = '',
|
|
710
693
|
pageIndex,
|
|
694
|
+
pageSize,
|
|
711
695
|
orderBy
|
|
712
696
|
} = params;
|
|
713
697
|
const stateTerm = state.term;
|
|
714
|
-
const tabId = state[context][facet].tabId || 0;
|
|
715
|
-
// the filters have changed
|
|
698
|
+
const tabId = state[context][facet].tabId || 0;
|
|
716
699
|
|
|
700
|
+
// Reset the facet if the search term has changed, or if the any of
|
|
701
|
+
// the filters have changed
|
|
717
702
|
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
718
|
-
let resetCurrentFacet = false;
|
|
703
|
+
let resetCurrentFacet = false;
|
|
704
|
+
|
|
705
|
+
// Add filter values in params to the matched filters in state for the current facet
|
|
719
706
|
// causing unfetched filter items to be generated with isSelected: true
|
|
720
707
|
// or existing filter items to be tagged with isSelected: true
|
|
721
|
-
|
|
722
708
|
const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
|
|
723
709
|
const isCurrentFacet = facetName === facet;
|
|
724
710
|
const nextFilters = generateFiltersState({
|
|
@@ -738,15 +724,16 @@ var reducers = (config => {
|
|
|
738
724
|
state[action.context === sagas.Context.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
739
725
|
state.term = term;
|
|
740
726
|
state.tabs[tabId].currentFacet = facet;
|
|
741
|
-
state[context][facet].pagingInfo = {
|
|
742
|
-
|
|
727
|
+
state[context][facet].pagingInfo = {
|
|
728
|
+
...(state[context][facet].pagingInfo || pagingInfo),
|
|
729
|
+
pageIndex: Number(pageIndex) - 1 || (state[context][facet].queryParams.loadMorePaging ? ((_state$context$facet$ = state[context][facet].pagingInfo) === null || _state$context$facet$ === void 0 ? void 0 : _state$context$facet$.pageIndex) || 0 : 0),
|
|
730
|
+
pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
|
|
743
731
|
};
|
|
744
732
|
state.config.isLoaded = true;
|
|
745
733
|
state.config.ssr = typeof window === 'undefined';
|
|
746
734
|
if (resetAllFacets) state[context] = resetFacets(state, context);
|
|
747
735
|
return;
|
|
748
736
|
}
|
|
749
|
-
|
|
750
737
|
case sagas.SET_SEARCH_ENTRIES:
|
|
751
738
|
{
|
|
752
739
|
const thisContext = action.context || context;
|
|
@@ -756,17 +743,17 @@ var reducers = (config => {
|
|
|
756
743
|
});
|
|
757
744
|
return;
|
|
758
745
|
}
|
|
759
|
-
|
|
760
746
|
case sagas.SET_SEARCH_FILTERS:
|
|
761
747
|
{
|
|
762
748
|
var _action$params;
|
|
763
|
-
|
|
764
749
|
// DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
|
|
765
750
|
// for example in a minilist scenario where the route filters
|
|
766
751
|
// are used for the primary page / listing navigation
|
|
752
|
+
|
|
767
753
|
// Add filter values in params to the matched filters in state
|
|
768
754
|
// causing unfetched filter items to be generated with isSelected: true
|
|
769
|
-
const filters = generateFiltersState({
|
|
755
|
+
const filters = generateFiltersState({
|
|
756
|
+
...action,
|
|
770
757
|
isCurrentFacet: true
|
|
771
758
|
}, state);
|
|
772
759
|
const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
@@ -777,7 +764,6 @@ var reducers = (config => {
|
|
|
777
764
|
state.config.ssr = typeof window === 'undefined';
|
|
778
765
|
return;
|
|
779
766
|
}
|
|
780
|
-
|
|
781
767
|
case sagas.UPDATE_PAGE_INDEX:
|
|
782
768
|
{
|
|
783
769
|
const {
|
|
@@ -792,14 +778,23 @@ var reducers = (config => {
|
|
|
792
778
|
state[context][current].queryDuration = 0;
|
|
793
779
|
return;
|
|
794
780
|
}
|
|
795
|
-
|
|
781
|
+
case sagas.UPDATE_PAGE_SIZE:
|
|
782
|
+
{
|
|
783
|
+
const {
|
|
784
|
+
pageSize
|
|
785
|
+
} = action;
|
|
786
|
+
state[context][current].pagingInfo.pageSize = pageSize;
|
|
787
|
+
state[context][current].pagingInfo.pageIndex = 0;
|
|
788
|
+
state[context][current].pagingInfo.isLoading = true;
|
|
789
|
+
state[context][current].queryDuration = 0;
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
796
792
|
case sagas.UPDATE_SEARCH_TERM:
|
|
797
793
|
{
|
|
798
794
|
state.term = action.term;
|
|
799
795
|
state[context] = resetFacets(state, context);
|
|
800
796
|
return;
|
|
801
797
|
}
|
|
802
|
-
|
|
803
798
|
case sagas.UPDATE_SELECTED_FILTERS:
|
|
804
799
|
{
|
|
805
800
|
const {
|
|
@@ -812,29 +807,27 @@ var reducers = (config => {
|
|
|
812
807
|
const currentItems = state[context][current].filters[filter].items;
|
|
813
808
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
814
809
|
state[context][current] = resetFacet(state[context][current]);
|
|
815
|
-
|
|
816
810
|
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
817
811
|
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
818
812
|
key,
|
|
819
813
|
isSelected: false
|
|
820
814
|
});
|
|
821
815
|
}
|
|
822
|
-
|
|
823
816
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
824
817
|
if (item.key === key) {
|
|
825
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
...item,
|
|
826
820
|
isSelected: !item.isSelected
|
|
827
821
|
};
|
|
828
822
|
}
|
|
829
|
-
|
|
830
|
-
|
|
823
|
+
if (isSingleSelect) return {
|
|
824
|
+
...item,
|
|
831
825
|
isSelected: false
|
|
832
826
|
};
|
|
833
827
|
return item;
|
|
834
828
|
});
|
|
835
829
|
return;
|
|
836
830
|
}
|
|
837
|
-
|
|
838
831
|
case sagas.UPDATE_SORT_ORDER:
|
|
839
832
|
{
|
|
840
833
|
const {
|
|
@@ -846,7 +839,6 @@ var reducers = (config => {
|
|
|
846
839
|
state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? sagas.toArray(orderBy) || [] : [];
|
|
847
840
|
return;
|
|
848
841
|
}
|
|
849
|
-
|
|
850
842
|
default:
|
|
851
843
|
return;
|
|
852
844
|
}
|