@zengenti/contensis-react-base 3.0.2-beta.2 → 3.0.2-beta.21
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-21a7d836.js} +120 -432
- package/cjs/App-21a7d836.js.map +1 -0
- package/cjs/ContensisDeliveryApi-c079b03a.js +231 -0
- package/cjs/ContensisDeliveryApi-c079b03a.js.map +1 -0
- package/cjs/{RouteLoader-3aa6456e.js → RouteLoader-7f0d107a.js} +23 -37
- package/{esm/RouteLoader-5171c63f.js.map → cjs/RouteLoader-7f0d107a.js.map} +1 -1
- package/cjs/{ToJs-a9a8522b.js → ToJs-6e9cfa69.js} +3 -4
- package/cjs/{ToJs-a9a8522b.js.map → ToJs-6e9cfa69.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 +1488 -272
- 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-2a6b5be0.js} +64 -113
- package/cjs/login-2a6b5be0.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-8a20e424.js → sagas-e04b94c1.js} +225 -301
- package/cjs/sagas-e04b94c1.js.map +1 -0
- package/cjs/search.js +68 -94
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-656da4b7.js → selectors-bcca60f4.js} +89 -8
- package/cjs/selectors-bcca60f4.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-4077e706.js} +50 -159
- package/cjs/version-4077e706.js.map +1 -0
- package/cjs/version-fe28099e.js +98 -0
- package/cjs/version-fe28099e.js.map +1 -0
- package/esm/{App-640239d2.js → App-2af18a99.js} +102 -412
- package/esm/App-2af18a99.js.map +1 -0
- package/esm/ContensisDeliveryApi-5660ee0e.js +227 -0
- package/esm/ContensisDeliveryApi-5660ee0e.js.map +1 -0
- package/esm/{RouteLoader-5171c63f.js → RouteLoader-6eac364e.js} +22 -36
- package/{cjs/RouteLoader-3aa6456e.js.map → esm/RouteLoader-6eac364e.js.map} +1 -1
- package/esm/{ToJs-4e02a04d.js → ToJs-9b30636a.js} +3 -4
- package/esm/{ToJs-4e02a04d.js.map → ToJs-9b30636a.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 +1490 -274
- 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-71ff3fcb.js} +63 -112
- package/esm/login-71ff3fcb.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-e576b6f6.js → sagas-933a8fc8.js} +177 -254
- package/esm/sagas-933a8fc8.js.map +1 -0
- package/esm/search.js +69 -95
- package/esm/search.js.map +1 -1
- package/esm/{selectors-a5e5835b.js → selectors-74de49a3.js} +75 -8
- package/esm/selectors-74de49a3.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-b15807c5.js +87 -0
- package/esm/version-b15807c5.js.map +1 -0
- package/esm/{version-e3a5ec66.js → version-ef107106.js} +37 -142
- package/esm/version-ef107106.js.map +1 -0
- package/models/redux/appstate.d.ts +1 -0
- package/models/routing/redux/selectors.d.ts +2 -1
- package/models/search/models/Queries.d.ts +2 -1
- package/models/search/models/Search.d.ts +2 -0
- package/models/search/models/SearchActions.d.ts +3 -3
- package/models/search/redux/actions.d.ts +6 -6
- package/models/search/redux/util.d.ts +1 -1
- package/models/search/search/expressions.d.ts +1 -1
- package/models/server/features/linkdepth-api/search.d.ts +1 -1
- 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-8a20e424.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-e576b6f6.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-8a20e424.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-e04b94c1.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,15 +67,14 @@ 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
|
-
updatePageIndex: (pageIndex,
|
|
79
|
-
updatePageSize: (pageSize,
|
|
74
|
+
updatePageIndex: (pageIndex, scrollToElement) => sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), mappers),
|
|
75
|
+
updatePageSize: (pageSize, scrollToElement) => sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), mappers),
|
|
80
76
|
updateSearchTerm: term => sagas.withMappers(sagas.updateSearchTerm(term), mappers),
|
|
81
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
77
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), mappers),
|
|
82
78
|
updateSortOrder: orderBy => sagas.withMappers(sagas.updateSortOrder(orderBy), mappers)
|
|
83
79
|
};
|
|
84
80
|
const connector = reactRedux.connect(mapStateToProps, mapDispatchToProps);
|
|
@@ -86,12 +82,10 @@ const withSearch = mappers => SearchComponent => {
|
|
|
86
82
|
};
|
|
87
83
|
|
|
88
84
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
89
|
-
|
|
90
85
|
const withListing = mappers => ListingComponent => {
|
|
91
86
|
const Wrapper = props => {
|
|
92
87
|
return /*#__PURE__*/React__default["default"].createElement(ListingComponent, props);
|
|
93
88
|
};
|
|
94
|
-
|
|
95
89
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
96
90
|
const {
|
|
97
91
|
getCurrent,
|
|
@@ -106,7 +100,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
106
100
|
getSearchTerm,
|
|
107
101
|
getSelectedFilters
|
|
108
102
|
} = sagas.selectListing;
|
|
109
|
-
|
|
110
103
|
const mapStateToProps = state => {
|
|
111
104
|
return {
|
|
112
105
|
currentListing: getCurrent(state),
|
|
@@ -125,14 +118,13 @@ const withListing = mappers => ListingComponent => {
|
|
|
125
118
|
}, 'dynamicOrderBy', [])
|
|
126
119
|
};
|
|
127
120
|
};
|
|
128
|
-
|
|
129
121
|
const mapDispatchToProps = {
|
|
130
122
|
clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
|
|
131
123
|
updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
|
|
132
|
-
updatePageIndex: (pageIndex,
|
|
133
|
-
updatePageSize: (pageSize,
|
|
124
|
+
updatePageIndex: (pageIndex, scrollToElement) => sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), mappers),
|
|
125
|
+
updatePageSize: (pageSize, scrollToElement) => sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), mappers),
|
|
134
126
|
updateSearchTerm: term => sagas.withMappers(sagas.updateSearchTerm(term), mappers),
|
|
135
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
127
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), mappers),
|
|
136
128
|
updateSortOrder: orderBy => sagas.withMappers(sagas.updateSortOrder(orderBy), mappers)
|
|
137
129
|
};
|
|
138
130
|
return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
|
|
@@ -161,7 +153,6 @@ const {
|
|
|
161
153
|
getTabsAndFacets,
|
|
162
154
|
getTotalCount
|
|
163
155
|
} = sagas.selectFacets;
|
|
164
|
-
|
|
165
156
|
const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
166
157
|
currentFacet: getCurrent$1(state),
|
|
167
158
|
currentPageIndex: getPageIndex$1(state),
|
|
@@ -186,7 +177,6 @@ const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_,
|
|
|
186
177
|
tabsAndFacets: getTabsAndFacets(state),
|
|
187
178
|
totalCount: getTotalCount(state)
|
|
188
179
|
}));
|
|
189
|
-
|
|
190
180
|
const useFacets = ({
|
|
191
181
|
mappers
|
|
192
182
|
} = {
|
|
@@ -199,10 +189,10 @@ const useFacets = ({
|
|
|
199
189
|
clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
|
|
200
190
|
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
201
191
|
updateCurrentTab: id => sagas.withMappers(sagas.updateCurrentTab(id), m),
|
|
202
|
-
updatePageIndex: (pageIndex,
|
|
203
|
-
updatePageSize: (pageSize,
|
|
192
|
+
updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
|
|
193
|
+
updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
|
|
204
194
|
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
205
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
195
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
206
196
|
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
207
197
|
};
|
|
208
198
|
const {
|
|
@@ -263,7 +253,6 @@ const {
|
|
|
263
253
|
getRenderableFilters,
|
|
264
254
|
getSearchTerm
|
|
265
255
|
} = sagas.selectListing;
|
|
266
|
-
|
|
267
256
|
const makeSelectListingProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
268
257
|
currentListing: getCurrent(state),
|
|
269
258
|
currentPageIndex: getPageIndex(state),
|
|
@@ -281,7 +270,6 @@ const makeSelectListingProps = () => reselect.createSelector(state => state, (_,
|
|
|
281
270
|
state
|
|
282
271
|
}, 'dynamicOrderBy', [])
|
|
283
272
|
}));
|
|
284
|
-
|
|
285
273
|
const useListing = ({
|
|
286
274
|
mappers
|
|
287
275
|
} = {
|
|
@@ -293,10 +281,10 @@ const useListing = ({
|
|
|
293
281
|
const dispatchProps = {
|
|
294
282
|
clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
|
|
295
283
|
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
296
|
-
updatePageIndex: (pageIndex,
|
|
297
|
-
updatePageSize: (pageSize,
|
|
284
|
+
updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
|
|
285
|
+
updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
|
|
298
286
|
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
299
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
287
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
300
288
|
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
301
289
|
};
|
|
302
290
|
const {
|
|
@@ -341,7 +329,6 @@ const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_
|
|
|
341
329
|
results: sagas.getResults(state, id, sagas.Context.minilist, 'js'),
|
|
342
330
|
searchTerm: sagas.getSearchTerm(state)
|
|
343
331
|
} : null);
|
|
344
|
-
|
|
345
332
|
const useMinilist = ({
|
|
346
333
|
id,
|
|
347
334
|
config,
|
|
@@ -370,7 +357,8 @@ const useMinilist = ({
|
|
|
370
357
|
pagingInfo: {},
|
|
371
358
|
results: [],
|
|
372
359
|
searchTerm: ''
|
|
373
|
-
};
|
|
360
|
+
};
|
|
361
|
+
// useSelector((state: AppState) => ({
|
|
374
362
|
// facet: getFacet(state, id, Context.minilist).toJS(),
|
|
375
363
|
// filters: getFilters(state, id, Context.minilist).toJS(),
|
|
376
364
|
// isLoading: getIsLoading(state, Context.minilist, id),
|
|
@@ -487,28 +475,26 @@ const addConfigToState = (state, action) => {
|
|
|
487
475
|
context,
|
|
488
476
|
facet,
|
|
489
477
|
config
|
|
490
|
-
} = action;
|
|
491
|
-
|
|
478
|
+
} = action;
|
|
479
|
+
// Adding or changing the config of a single facet, listing or minilist
|
|
492
480
|
if (context && facet && config) {
|
|
493
|
-
state[context][facet] = {
|
|
481
|
+
state[context][facet] = {
|
|
482
|
+
...searchFacet,
|
|
494
483
|
...config
|
|
495
484
|
};
|
|
496
485
|
} else if (config) {
|
|
497
486
|
// Changing the entire search config
|
|
498
|
-
state = {
|
|
487
|
+
state = {
|
|
488
|
+
...config,
|
|
499
489
|
config: initialState.config
|
|
500
490
|
};
|
|
501
491
|
}
|
|
502
|
-
|
|
503
492
|
return state;
|
|
504
493
|
};
|
|
505
|
-
|
|
506
494
|
const generateSearchFacets = (context, config) => {
|
|
507
495
|
const facets = {};
|
|
508
|
-
|
|
509
496
|
if (config) {
|
|
510
497
|
const thisConfig = config[context] || {};
|
|
511
|
-
|
|
512
498
|
if (Object.keys(thisConfig).length > 0) {
|
|
513
499
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
514
500
|
const newFacet = merge__default["default"](searchFacet, facet);
|
|
@@ -516,10 +502,8 @@ const generateSearchFacets = (context, config) => {
|
|
|
516
502
|
});
|
|
517
503
|
}
|
|
518
504
|
}
|
|
519
|
-
|
|
520
505
|
return facets;
|
|
521
506
|
};
|
|
522
|
-
|
|
523
507
|
const generateFiltersState = ({
|
|
524
508
|
facet,
|
|
525
509
|
params,
|
|
@@ -527,29 +511,31 @@ const generateFiltersState = ({
|
|
|
527
511
|
isCurrentFacet
|
|
528
512
|
}, state) => {
|
|
529
513
|
// Remove filters we know about from params
|
|
530
|
-
const filterParams = {
|
|
514
|
+
const filterParams = {
|
|
515
|
+
...params,
|
|
531
516
|
facet: undefined,
|
|
532
517
|
orderBy: undefined,
|
|
533
518
|
pageIndex: undefined,
|
|
534
519
|
term: undefined
|
|
535
|
-
};
|
|
536
|
-
// so we can start off with isSelected is false
|
|
520
|
+
};
|
|
537
521
|
|
|
522
|
+
// Get any existing filters and normalise the items[]
|
|
523
|
+
// so we can start off with isSelected is false
|
|
538
524
|
let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
|
|
539
525
|
if (isCurrentFacet || filter.isGrouped) {
|
|
540
526
|
var _filter$items;
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
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,
|
|
544
531
|
isSelected: false
|
|
545
532
|
}))
|
|
546
533
|
}];
|
|
547
534
|
}
|
|
548
|
-
|
|
549
535
|
return [key, filter];
|
|
550
536
|
});
|
|
551
|
-
|
|
552
|
-
|
|
537
|
+
const addFilterItem = (filters, paramKey, paramValue) =>
|
|
538
|
+
// Iterate through all filters within the facet,
|
|
553
539
|
// if the paramKey matches the filter key
|
|
554
540
|
// get the existing items list, and see if that filter
|
|
555
541
|
// already exists, if so set isSelected to true,
|
|
@@ -561,47 +547,45 @@ const generateFiltersState = ({
|
|
|
561
547
|
} else {
|
|
562
548
|
const items = filter.items || [];
|
|
563
549
|
const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
|
|
564
|
-
|
|
565
550
|
if (items.length > 0 && itemIndex !== -1) {
|
|
566
551
|
items[itemIndex].isSelected = true;
|
|
567
552
|
} else {
|
|
568
|
-
items.push({
|
|
553
|
+
items.push({
|
|
554
|
+
...filterItem,
|
|
569
555
|
key: paramValue,
|
|
570
556
|
isSelected: true
|
|
571
557
|
});
|
|
572
558
|
}
|
|
573
|
-
|
|
574
|
-
|
|
559
|
+
return [key, {
|
|
560
|
+
...filter,
|
|
575
561
|
items
|
|
576
562
|
}];
|
|
577
563
|
}
|
|
578
|
-
});
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
// For each value found in filterParams
|
|
579
567
|
// we are looking to split that value into multiple by any comma
|
|
580
568
|
// and then either set isSelected for an existing filterItem
|
|
581
569
|
// or push an item to the filters.{ key }.items[] array
|
|
582
570
|
// giving it only the key (entry guid) that can be taken to filter
|
|
583
571
|
// the search results during SSR without needing to fetch the filters first
|
|
584
|
-
|
|
585
|
-
|
|
586
572
|
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
587
573
|
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
588
574
|
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
589
575
|
});
|
|
590
576
|
return Object.fromEntries(filters);
|
|
591
577
|
};
|
|
592
|
-
|
|
593
578
|
const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
|
|
594
|
-
|
|
595
579
|
const resetFacet = facet => {
|
|
596
580
|
facet.pagingInfo.pagesLoaded = [];
|
|
597
581
|
facet.pagingInfo.pageIndex = 0;
|
|
598
582
|
facet.queryDuration = 0;
|
|
599
583
|
return facet;
|
|
600
584
|
};
|
|
601
|
-
|
|
602
585
|
var reducers = (config => {
|
|
603
586
|
// Add facets from SearchConfig to initialState
|
|
604
|
-
const initState = {
|
|
587
|
+
const initState = {
|
|
588
|
+
...initialState,
|
|
605
589
|
tabs: config.tabs,
|
|
606
590
|
facets: generateSearchFacets(sagas.Context.facets, config),
|
|
607
591
|
listings: generateSearchFacets(sagas.Context.listings, config),
|
|
@@ -610,49 +594,46 @@ var reducers = (config => {
|
|
|
610
594
|
return immer.produce((state = initState, action) => {
|
|
611
595
|
const context = state.context;
|
|
612
596
|
const current = context !== 'listings' ? state.currentFacet : state.currentListing;
|
|
613
|
-
|
|
614
597
|
switch (action.type) {
|
|
615
598
|
case sagas.APPLY_CONFIG:
|
|
616
599
|
{
|
|
617
600
|
state = addConfigToState(state, action);
|
|
618
601
|
return state;
|
|
619
602
|
}
|
|
620
|
-
|
|
621
603
|
case sagas.CLEAR_FILTERS:
|
|
622
604
|
{
|
|
623
605
|
const currentFilters = state[context][current].filters;
|
|
624
606
|
state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
|
|
625
607
|
if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
|
|
626
608
|
const filterItems = filter.items || [];
|
|
627
|
-
filter.items = filterItems.map(item => ({
|
|
609
|
+
filter.items = filterItems.map(item => ({
|
|
610
|
+
...item,
|
|
628
611
|
isSelected: false
|
|
629
612
|
}));
|
|
630
613
|
}
|
|
631
|
-
|
|
632
614
|
return [filterKey, filter];
|
|
633
615
|
}));
|
|
634
616
|
state[context][current].queryDuration = 0;
|
|
635
617
|
state[context][current].pagingInfo.pagesLoaded = [];
|
|
636
618
|
return;
|
|
637
619
|
}
|
|
638
|
-
|
|
639
620
|
case sagas.EXECUTE_SEARCH:
|
|
640
621
|
{
|
|
641
|
-
state[action.context][action.facet].entries = {
|
|
622
|
+
state[action.context][action.facet].entries = {
|
|
623
|
+
...(state[action.context][action.facet].entries || entries),
|
|
642
624
|
isLoading: true
|
|
643
625
|
};
|
|
644
626
|
return;
|
|
645
627
|
}
|
|
646
|
-
|
|
647
628
|
case sagas.EXECUTE_SEARCH_ERROR:
|
|
648
629
|
{
|
|
649
|
-
state[action.context][action.facet].entries = {
|
|
630
|
+
state[action.context][action.facet].entries = {
|
|
631
|
+
...entries,
|
|
650
632
|
isError: true,
|
|
651
633
|
error: action.error
|
|
652
634
|
};
|
|
653
635
|
return;
|
|
654
636
|
}
|
|
655
|
-
|
|
656
637
|
case sagas.LOAD_FILTERS:
|
|
657
638
|
{
|
|
658
639
|
const {
|
|
@@ -661,20 +642,21 @@ var reducers = (config => {
|
|
|
661
642
|
} = action;
|
|
662
643
|
const filters = state[action.context][facetKey].filters;
|
|
663
644
|
Object.entries(filters).map(([filterKey, filter]) => {
|
|
664
|
-
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
645
|
+
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
646
|
+
...filter,
|
|
665
647
|
isLoading: true
|
|
666
648
|
};
|
|
667
649
|
return filter;
|
|
668
650
|
});
|
|
669
651
|
state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
|
|
670
|
-
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
652
|
+
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
653
|
+
...filter,
|
|
671
654
|
isLoading: true
|
|
672
655
|
}];
|
|
673
656
|
return [filterKey, filter];
|
|
674
657
|
}));
|
|
675
658
|
return;
|
|
676
659
|
}
|
|
677
|
-
|
|
678
660
|
case sagas.LOAD_FILTERS_ERROR:
|
|
679
661
|
case sagas.LOAD_FILTERS_COMPLETE:
|
|
680
662
|
{
|
|
@@ -684,26 +666,23 @@ var reducers = (config => {
|
|
|
684
666
|
nextFilter
|
|
685
667
|
} = action;
|
|
686
668
|
const filter = state[action.context][facetKey].filters[filterKey];
|
|
687
|
-
|
|
688
669
|
if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
|
|
689
670
|
// Preserve items already in state
|
|
690
|
-
state[action.context][facetKey].filters[filterKey] = {
|
|
671
|
+
state[action.context][facetKey].filters[filterKey] = {
|
|
672
|
+
...filter,
|
|
691
673
|
isLoading: false,
|
|
692
674
|
isError: nextFilter.isError
|
|
693
675
|
};
|
|
694
676
|
return;
|
|
695
677
|
}
|
|
696
|
-
|
|
697
678
|
state[action.context][facetKey].filters[filterKey] = merge__default["default"](filter, nextFilter, {
|
|
698
679
|
arrayMerge: (source, inbound) => inbound
|
|
699
680
|
});
|
|
700
681
|
return;
|
|
701
682
|
}
|
|
702
|
-
|
|
703
683
|
case sagas.SET_ROUTE_FILTERS:
|
|
704
684
|
{
|
|
705
685
|
var _state$context$facet$;
|
|
706
|
-
|
|
707
686
|
const {
|
|
708
687
|
facet,
|
|
709
688
|
params,
|
|
@@ -716,14 +695,16 @@ var reducers = (config => {
|
|
|
716
695
|
orderBy
|
|
717
696
|
} = params;
|
|
718
697
|
const stateTerm = state.term;
|
|
719
|
-
const tabId = state[context][facet].tabId || 0;
|
|
720
|
-
// the filters have changed
|
|
698
|
+
const tabId = state[context][facet].tabId || 0;
|
|
721
699
|
|
|
700
|
+
// Reset the facet if the search term has changed, or if the any of
|
|
701
|
+
// the filters have changed
|
|
722
702
|
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
723
|
-
let resetCurrentFacet = false;
|
|
703
|
+
let resetCurrentFacet = false;
|
|
704
|
+
|
|
705
|
+
// Add filter values in params to the matched filters in state for the current facet
|
|
724
706
|
// causing unfetched filter items to be generated with isSelected: true
|
|
725
707
|
// or existing filter items to be tagged with isSelected: true
|
|
726
|
-
|
|
727
708
|
const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
|
|
728
709
|
const isCurrentFacet = facetName === facet;
|
|
729
710
|
const nextFilters = generateFiltersState({
|
|
@@ -743,7 +724,8 @@ var reducers = (config => {
|
|
|
743
724
|
state[action.context === sagas.Context.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
744
725
|
state.term = term;
|
|
745
726
|
state.tabs[tabId].currentFacet = facet;
|
|
746
|
-
state[context][facet].pagingInfo = {
|
|
727
|
+
state[context][facet].pagingInfo = {
|
|
728
|
+
...(state[context][facet].pagingInfo || pagingInfo),
|
|
747
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),
|
|
748
730
|
pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
|
|
749
731
|
};
|
|
@@ -752,7 +734,6 @@ var reducers = (config => {
|
|
|
752
734
|
if (resetAllFacets) state[context] = resetFacets(state, context);
|
|
753
735
|
return;
|
|
754
736
|
}
|
|
755
|
-
|
|
756
737
|
case sagas.SET_SEARCH_ENTRIES:
|
|
757
738
|
{
|
|
758
739
|
const thisContext = action.context || context;
|
|
@@ -762,17 +743,17 @@ var reducers = (config => {
|
|
|
762
743
|
});
|
|
763
744
|
return;
|
|
764
745
|
}
|
|
765
|
-
|
|
766
746
|
case sagas.SET_SEARCH_FILTERS:
|
|
767
747
|
{
|
|
768
748
|
var _action$params;
|
|
769
|
-
|
|
770
749
|
// DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
|
|
771
750
|
// for example in a minilist scenario where the route filters
|
|
772
751
|
// are used for the primary page / listing navigation
|
|
752
|
+
|
|
773
753
|
// Add filter values in params to the matched filters in state
|
|
774
754
|
// causing unfetched filter items to be generated with isSelected: true
|
|
775
|
-
const filters = generateFiltersState({
|
|
755
|
+
const filters = generateFiltersState({
|
|
756
|
+
...action,
|
|
776
757
|
isCurrentFacet: true
|
|
777
758
|
}, state);
|
|
778
759
|
const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
@@ -783,7 +764,6 @@ var reducers = (config => {
|
|
|
783
764
|
state.config.ssr = typeof window === 'undefined';
|
|
784
765
|
return;
|
|
785
766
|
}
|
|
786
|
-
|
|
787
767
|
case sagas.UPDATE_PAGE_INDEX:
|
|
788
768
|
{
|
|
789
769
|
const {
|
|
@@ -798,7 +778,6 @@ var reducers = (config => {
|
|
|
798
778
|
state[context][current].queryDuration = 0;
|
|
799
779
|
return;
|
|
800
780
|
}
|
|
801
|
-
|
|
802
781
|
case sagas.UPDATE_PAGE_SIZE:
|
|
803
782
|
{
|
|
804
783
|
const {
|
|
@@ -810,14 +789,12 @@ var reducers = (config => {
|
|
|
810
789
|
state[context][current].queryDuration = 0;
|
|
811
790
|
return;
|
|
812
791
|
}
|
|
813
|
-
|
|
814
792
|
case sagas.UPDATE_SEARCH_TERM:
|
|
815
793
|
{
|
|
816
794
|
state.term = action.term;
|
|
817
795
|
state[context] = resetFacets(state, context);
|
|
818
796
|
return;
|
|
819
797
|
}
|
|
820
|
-
|
|
821
798
|
case sagas.UPDATE_SELECTED_FILTERS:
|
|
822
799
|
{
|
|
823
800
|
const {
|
|
@@ -830,29 +807,27 @@ var reducers = (config => {
|
|
|
830
807
|
const currentItems = state[context][current].filters[filter].items;
|
|
831
808
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
832
809
|
state[context][current] = resetFacet(state[context][current]);
|
|
833
|
-
|
|
834
810
|
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
835
811
|
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
836
812
|
key,
|
|
837
813
|
isSelected: false
|
|
838
814
|
});
|
|
839
815
|
}
|
|
840
|
-
|
|
841
816
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
842
817
|
if (item.key === key) {
|
|
843
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
...item,
|
|
844
820
|
isSelected: !item.isSelected
|
|
845
821
|
};
|
|
846
822
|
}
|
|
847
|
-
|
|
848
|
-
|
|
823
|
+
if (isSingleSelect) return {
|
|
824
|
+
...item,
|
|
849
825
|
isSelected: false
|
|
850
826
|
};
|
|
851
827
|
return item;
|
|
852
828
|
});
|
|
853
829
|
return;
|
|
854
830
|
}
|
|
855
|
-
|
|
856
831
|
case sagas.UPDATE_SORT_ORDER:
|
|
857
832
|
{
|
|
858
833
|
const {
|
|
@@ -864,7 +839,6 @@ var reducers = (config => {
|
|
|
864
839
|
state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? sagas.toArray(orderBy) || [] : [];
|
|
865
840
|
return;
|
|
866
841
|
}
|
|
867
|
-
|
|
868
842
|
default:
|
|
869
843
|
return;
|
|
870
844
|
}
|