@zengenti/contensis-react-base 3.1.0 → 4.0.0-beta.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/cjs/{App-7ff737fa.js → App-b56aca04.js} +139 -94
- package/cjs/{App-7ff737fa.js.map → App-b56aca04.js.map} +1 -1
- package/cjs/{ChangePassword.container-a617190b.js → ChangePassword.container-ae35785e.js} +120 -62
- package/{esm/ChangePassword.container-ae0f9ce4.js.map → cjs/ChangePassword.container-ae35785e.js.map} +1 -1
- package/cjs/{ContensisDeliveryApi-9e32960d.js → ContensisDeliveryApi-4fcf049d.js} +71 -17
- package/{esm/ContensisDeliveryApi-c66b0cc3.js.map → cjs/ContensisDeliveryApi-4fcf049d.js.map} +1 -1
- package/cjs/CookieConstants-000427db.js.map +1 -1
- package/cjs/RouteLoader-c06dccd5.js +321 -0
- package/cjs/RouteLoader-c06dccd5.js.map +1 -0
- package/cjs/{ToJs-149fc5e1.js → ToJs-a8d8f3f0.js} +14 -6
- package/cjs/{ToJs-149fc5e1.js.map → ToJs-a8d8f3f0.js.map} +1 -1
- package/cjs/client.js +52 -22
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +277 -140
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +717 -228
- package/cjs/forms.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-7c363211.js → fromJSLeaveImmer-e74c673c.js} +4 -1
- package/cjs/{fromJSLeaveImmer-7c363211.js.map → fromJSLeaveImmer-e74c673c.js.map} +1 -1
- package/cjs/{reducers-9afb5f89.js → reducers-73a03ef4.js} +31 -10
- package/cjs/{reducers-9afb5f89.js.map → reducers-73a03ef4.js.map} +1 -1
- package/cjs/redux.js +4 -5
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +6 -5
- package/cjs/routing.js.map +1 -1
- package/cjs/{sagas-e04b94c1.js → sagas-570f23ba.js} +286 -187
- package/cjs/{sagas-e04b94c1.js.map → sagas-570f23ba.js.map} +1 -1
- package/cjs/search.js +82 -56
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-46b689d0.js → selectors-14caa813.js} +6 -1
- package/cjs/selectors-14caa813.js.map +1 -0
- package/cjs/urls-6fcaf4c6.js.map +1 -1
- package/cjs/user.js +9 -4
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +55 -35
- package/cjs/util.js.map +1 -1
- package/cjs/{version-79a027cb.js → version-34d91f68.js} +60 -26
- package/cjs/version-34d91f68.js.map +1 -0
- package/cjs/{version-afd4f77e.js → version-a410c88e.js} +6 -3
- package/cjs/{version-afd4f77e.js.map → version-a410c88e.js.map} +1 -1
- package/esm/{App-ff944c78.js → App-83107d7e.js} +137 -92
- package/esm/{App-ff944c78.js.map → App-83107d7e.js.map} +1 -1
- package/esm/{ChangePassword.container-ae0f9ce4.js → ChangePassword.container-76fd5e9b.js} +120 -62
- package/{cjs/ChangePassword.container-a617190b.js.map → esm/ChangePassword.container-76fd5e9b.js.map} +1 -1
- package/esm/{ContensisDeliveryApi-c66b0cc3.js → ContensisDeliveryApi-fe57a037.js} +71 -17
- package/{cjs/ContensisDeliveryApi-9e32960d.js.map → esm/ContensisDeliveryApi-fe57a037.js.map} +1 -1
- package/esm/CookieConstants-3d3b6531.js.map +1 -1
- package/esm/RouteLoader-29fd689a.js +310 -0
- package/esm/RouteLoader-29fd689a.js.map +1 -0
- package/esm/{ToJs-ae860aad.js → ToJs-df57f31d.js} +14 -6
- package/esm/{ToJs-ae860aad.js.map → ToJs-df57f31d.js.map} +1 -1
- package/esm/client.js +52 -23
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +272 -137
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +717 -228
- package/esm/forms.js.map +1 -1
- package/esm/{fromJSLeaveImmer-e2dacd63.js → fromJSLeaveImmer-0114ffcf.js} +4 -1
- package/esm/{fromJSLeaveImmer-e2dacd63.js.map → fromJSLeaveImmer-0114ffcf.js.map} +1 -1
- package/esm/{reducers-3d5c37d1.js → reducers-aa8cef1e.js} +31 -10
- package/esm/{reducers-3d5c37d1.js.map → reducers-aa8cef1e.js.map} +1 -1
- package/esm/redux.js +7 -8
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +3 -5
- package/esm/routing.js.map +1 -1
- package/esm/{sagas-933a8fc8.js → sagas-07e82e18.js} +239 -139
- package/esm/{sagas-933a8fc8.js.map → sagas-07e82e18.js.map} +1 -1
- package/esm/search.js +83 -57
- package/esm/search.js.map +1 -1
- package/esm/{selectors-01074974.js → selectors-691caf02.js} +6 -1
- package/esm/selectors-691caf02.js.map +1 -0
- package/esm/urls-eac9a747.js.map +1 -1
- package/esm/user.js +11 -6
- package/esm/user.js.map +1 -1
- package/esm/util.js +55 -35
- package/esm/util.js.map +1 -1
- package/esm/{version-346a9787.js → version-3d9911e2.js} +60 -26
- package/esm/version-3d9911e2.js.map +1 -0
- package/esm/{version-0fbd1b82.js → version-9f29becb.js} +6 -3
- package/esm/{version-0fbd1b82.js.map → version-9f29becb.js.map} +1 -1
- package/models/app/App.d.ts +3 -3
- package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +5 -3
- package/models/redux/appstate.d.ts +2 -3
- package/models/redux/store/history.d.ts +2 -2
- package/models/routing/components/Loading.d.ts +2 -2
- package/models/routing/components/NotFound.d.ts +2 -2
- package/models/routing/components/Redirect.d.ts +5 -0
- package/models/routing/components/StaticRouteLoader.d.ts +6 -0
- package/models/routing/components/Status.d.ts +1 -1
- package/models/routing/httpContext.d.ts +7 -0
- package/models/routing/index.d.ts +3 -0
- package/models/routing/redux/actions.d.ts +2 -3
- package/models/routing/routes.d.ts +11 -5
- package/models/user/components/Login.d.ts +2 -1
- package/models/user/components/LoginForm.d.ts +2 -1
- package/models/user/components/LogoutForm.d.ts +2 -1
- package/models/user/containers/ChangePassword.container.d.ts +1 -1
- package/models/user/containers/ForgotPassword.container.d.ts +1 -1
- package/models/user/containers/Login.container.d.ts +1 -1
- package/models/user/containers/Registration.container.d.ts +1 -1
- package/models/user/hocs/withLogin.d.ts +2 -1
- package/models/user/hocs/withRegistration.d.ts +1 -1
- package/models/util/ContensisDeliveryApi.d.ts +0 -1
- package/models/util/ToJs.d.ts +1 -1
- package/models/util/mergeStaticRoutes.d.ts +1 -0
- package/package.json +7 -10
- package/cjs/RouteLoader-049e81e5.js +0 -203
- package/cjs/RouteLoader-049e81e5.js.map +0 -1
- package/cjs/selectors-46b689d0.js.map +0 -1
- package/cjs/version-79a027cb.js.map +0 -1
- package/esm/RouteLoader-02eef6d9.js +0 -197
- package/esm/RouteLoader-02eef6d9.js.map +0 -1
- package/esm/selectors-01074974.js.map +0 -1
- package/esm/version-346a9787.js.map +0 -1
package/esm/search.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React, { useMemo, useEffect } from 'react';
|
|
2
2
|
import { connect, useDispatch, useSelector } from 'react-redux';
|
|
3
|
+
import { g as getCurrentFacet, b as getPageIndex$2, e as getCurrentTab$1, h as getFacet$1, i as getTabFacets$1, j as getFacetsTotalCount$1, k as getFacetTitles$1, l as getFeaturedResults$2, m as getRenderableFilters$2, n as getIsLoading$2, p as getPaging, q as getPageIsLoading$2, r as getResults, s as getSearchTerm$2, u as getSearchTotalCount$1, v as getSelectedFilters, w as getQueryParameter$2, x as getTabsAndFacets$1, y as getTotalCount$1, z as withMappers, A as clearFilters, B as updateCurrentFacet, C as updateCurrentTab, D as updatePageIndex, E as updatePageSize, F as updateSearchTerm, G as updateSelectedFilters, H as updateSortOrder, I as selectListing, J as mapStateToSearchUri, K as Context$1, L as selectFacets, M as triggerSearch, N as getFilters, U as UPDATE_SORT_ORDER, O as toArray, P as UPDATE_SELECTED_FILTERS, Q as UPDATE_SEARCH_TERM, R as UPDATE_PAGE_SIZE, S as UPDATE_PAGE_INDEX, T as SET_SEARCH_FILTERS, V as SET_SEARCH_ENTRIES, W as SET_ROUTE_FILTERS, X as LOAD_FILTERS_COMPLETE, Y as LOAD_FILTERS_ERROR, Z as LOAD_FILTERS, _ as EXECUTE_SEARCH_ERROR, $ as EXECUTE_SEARCH, a0 as CLEAR_FILTERS, a1 as APPLY_CONFIG } from './sagas-07e82e18.js';
|
|
4
|
+
export { a2 as actions, a7 as doSearch, a5 as expressions, a6 as queries, ad as routeParams, a9 as sagas, a3 as selectors, a8 as setRouteFilters, aa as triggerListingSsr, ab as triggerMinilistSsr, ac as triggerSearchSsr, a4 as types } from './sagas-07e82e18.js';
|
|
3
5
|
import 'jsonpath-mapper';
|
|
4
6
|
import { createSelector } from 'reselect';
|
|
5
7
|
import merge from 'deepmerge';
|
|
6
8
|
import 'query-string';
|
|
7
|
-
import { g as getCurrentFacet, b as getPageIndex$2, e as getCurrentTab$1, h as getFacet$1, i as getTabFacets$1, j as getFacetsTotalCount$1, k as getFacetTitles$1, l as getFeaturedResults$2, m as getRenderableFilters$2, n as getIsLoading$2, p as getPaging, q as getPageIsLoading$2, r as getResults, s as getSearchTerm$2, u as getSearchTotalCount$1, v as getSelectedFilters, w as getQueryParameter$2, x as getTabsAndFacets$1, y as getTotalCount$1, z as withMappers, A as clearFilters, B as updateCurrentFacet, C as updateCurrentTab, D as updatePageIndex, E as updatePageSize, F as updateSearchTerm, G as updateSelectedFilters, H as updateSortOrder, I as selectListing, J as mapStateToSearchUri, K as Context$1, L as selectFacets, M as triggerSearch, N as getFilters, U as UPDATE_SORT_ORDER, O as toArray, P as UPDATE_SELECTED_FILTERS, Q as UPDATE_SEARCH_TERM, R as UPDATE_PAGE_SIZE, S as UPDATE_PAGE_INDEX, T as SET_SEARCH_FILTERS, V as SET_SEARCH_ENTRIES, W as SET_ROUTE_FILTERS, X as LOAD_FILTERS_COMPLETE, Y as LOAD_FILTERS_ERROR, Z as LOAD_FILTERS, _ as EXECUTE_SEARCH_ERROR, $ as EXECUTE_SEARCH, a0 as CLEAR_FILTERS, a1 as APPLY_CONFIG } from './sagas-933a8fc8.js';
|
|
8
|
-
export { a2 as actions, a7 as doSearch, a5 as expressions, a6 as queries, ad as routeParams, a9 as sagas, a3 as selectors, a8 as setRouteFilters, aa as triggerListingSsr, ab as triggerMinilistSsr, ac as triggerSearchSsr, a4 as types } from './sagas-933a8fc8.js';
|
|
9
9
|
import { produce } from 'immer';
|
|
10
10
|
import equals from 'deep-equal';
|
|
11
11
|
import 'contensis-core-api';
|
|
@@ -27,11 +27,14 @@ const toJS = WrappedComponent => wrappedComponentProps => {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
// eslint-disable-next-line import/default
|
|
30
|
+
|
|
30
31
|
const withSearch = mappers => SearchComponent => {
|
|
31
32
|
const Wrapper = props => {
|
|
32
33
|
return /*#__PURE__*/React.createElement(SearchComponent, props);
|
|
33
34
|
};
|
|
35
|
+
|
|
34
36
|
Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
|
|
37
|
+
|
|
35
38
|
const mapStateToProps = state => {
|
|
36
39
|
return {
|
|
37
40
|
currentFacet: getCurrentFacet(state),
|
|
@@ -58,6 +61,7 @@ const withSearch = mappers => SearchComponent => {
|
|
|
58
61
|
totalCount: getTotalCount$1(state)
|
|
59
62
|
};
|
|
60
63
|
};
|
|
64
|
+
|
|
61
65
|
const mapDispatchToProps = {
|
|
62
66
|
clearFilters: filterKey => withMappers(clearFilters(filterKey), mappers),
|
|
63
67
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
@@ -73,10 +77,12 @@ const withSearch = mappers => SearchComponent => {
|
|
|
73
77
|
};
|
|
74
78
|
|
|
75
79
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
80
|
+
|
|
76
81
|
const withListing = mappers => ListingComponent => {
|
|
77
82
|
const Wrapper = props => {
|
|
78
83
|
return /*#__PURE__*/React.createElement(ListingComponent, props);
|
|
79
84
|
};
|
|
85
|
+
|
|
80
86
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
81
87
|
const {
|
|
82
88
|
getCurrent,
|
|
@@ -91,6 +97,7 @@ const withListing = mappers => ListingComponent => {
|
|
|
91
97
|
getSearchTerm,
|
|
92
98
|
getSelectedFilters
|
|
93
99
|
} = selectListing;
|
|
100
|
+
|
|
94
101
|
const mapStateToProps = state => {
|
|
95
102
|
return {
|
|
96
103
|
currentListing: getCurrent(state),
|
|
@@ -109,6 +116,7 @@ const withListing = mappers => ListingComponent => {
|
|
|
109
116
|
}, 'dynamicOrderBy', [])
|
|
110
117
|
};
|
|
111
118
|
};
|
|
119
|
+
|
|
112
120
|
const mapDispatchToProps = {
|
|
113
121
|
clearFilters: filterKey => withMappers(clearFilters(filterKey), mappers),
|
|
114
122
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
@@ -144,6 +152,7 @@ const {
|
|
|
144
152
|
getTabsAndFacets,
|
|
145
153
|
getTotalCount
|
|
146
154
|
} = selectFacets;
|
|
155
|
+
|
|
147
156
|
const makeSelectFacetsProps = () => createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
148
157
|
currentFacet: getCurrent$1(state),
|
|
149
158
|
currentPageIndex: getPageIndex$1(state),
|
|
@@ -168,6 +177,7 @@ const makeSelectFacetsProps = () => createSelector(state => state, (_, mappers)
|
|
|
168
177
|
tabsAndFacets: getTabsAndFacets(state),
|
|
169
178
|
totalCount: getTotalCount(state)
|
|
170
179
|
}));
|
|
180
|
+
|
|
171
181
|
const useFacets = ({
|
|
172
182
|
mappers
|
|
173
183
|
} = {
|
|
@@ -244,6 +254,7 @@ const {
|
|
|
244
254
|
getRenderableFilters,
|
|
245
255
|
getSearchTerm
|
|
246
256
|
} = selectListing;
|
|
257
|
+
|
|
247
258
|
const makeSelectListingProps = () => createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
248
259
|
currentListing: getCurrent(state),
|
|
249
260
|
currentPageIndex: getPageIndex(state),
|
|
@@ -261,6 +272,7 @@ const makeSelectListingProps = () => createSelector(state => state, (_, mappers)
|
|
|
261
272
|
state
|
|
262
273
|
}, 'dynamicOrderBy', [])
|
|
263
274
|
}));
|
|
275
|
+
|
|
264
276
|
const useListing = ({
|
|
265
277
|
mappers
|
|
266
278
|
} = {
|
|
@@ -320,6 +332,7 @@ const makeSelectMinilistProps = () => createSelector(state => state, (_, id) =>
|
|
|
320
332
|
results: getResults(state, id, Context$1.minilist, 'js'),
|
|
321
333
|
searchTerm: getSearchTerm$2(state)
|
|
322
334
|
} : null);
|
|
335
|
+
|
|
323
336
|
const useMinilist = ({
|
|
324
337
|
id,
|
|
325
338
|
config,
|
|
@@ -348,8 +361,7 @@ const useMinilist = ({
|
|
|
348
361
|
pagingInfo: {},
|
|
349
362
|
results: [],
|
|
350
363
|
searchTerm: ''
|
|
351
|
-
};
|
|
352
|
-
// useSelector((state: AppState) => ({
|
|
364
|
+
}; // useSelector((state: AppState) => ({
|
|
353
365
|
// facet: getFacet(state, id, Context.minilist).toJS(),
|
|
354
366
|
// filters: getFilters(state, id, Context.minilist).toJS(),
|
|
355
367
|
// isLoading: getIsLoading(state, Context.minilist, id),
|
|
@@ -466,26 +478,28 @@ const addConfigToState = (state, action) => {
|
|
|
466
478
|
context,
|
|
467
479
|
facet,
|
|
468
480
|
config
|
|
469
|
-
} = action;
|
|
470
|
-
|
|
481
|
+
} = action; // Adding or changing the config of a single facet, listing or minilist
|
|
482
|
+
|
|
471
483
|
if (context && facet && config) {
|
|
472
|
-
state[context][facet] = {
|
|
473
|
-
...searchFacet,
|
|
484
|
+
state[context][facet] = { ...searchFacet,
|
|
474
485
|
...config
|
|
475
486
|
};
|
|
476
487
|
} else if (config) {
|
|
477
488
|
// Changing the entire search config
|
|
478
|
-
state = {
|
|
479
|
-
...config,
|
|
489
|
+
state = { ...config,
|
|
480
490
|
config: initialState.config
|
|
481
491
|
};
|
|
482
492
|
}
|
|
493
|
+
|
|
483
494
|
return state;
|
|
484
495
|
};
|
|
496
|
+
|
|
485
497
|
const generateSearchFacets = (context, config) => {
|
|
486
498
|
const facets = {};
|
|
499
|
+
|
|
487
500
|
if (config) {
|
|
488
501
|
const thisConfig = config[context] || {};
|
|
502
|
+
|
|
489
503
|
if (Object.keys(thisConfig).length > 0) {
|
|
490
504
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
491
505
|
const newFacet = merge(searchFacet, facet);
|
|
@@ -493,8 +507,10 @@ const generateSearchFacets = (context, config) => {
|
|
|
493
507
|
});
|
|
494
508
|
}
|
|
495
509
|
}
|
|
510
|
+
|
|
496
511
|
return facets;
|
|
497
512
|
};
|
|
513
|
+
|
|
498
514
|
const generateFiltersState = ({
|
|
499
515
|
facet,
|
|
500
516
|
params,
|
|
@@ -502,31 +518,29 @@ const generateFiltersState = ({
|
|
|
502
518
|
isCurrentFacet
|
|
503
519
|
}, state) => {
|
|
504
520
|
// Remove filters we know about from params
|
|
505
|
-
const filterParams = {
|
|
506
|
-
...params,
|
|
521
|
+
const filterParams = { ...params,
|
|
507
522
|
facet: undefined,
|
|
508
523
|
orderBy: undefined,
|
|
509
524
|
pageIndex: undefined,
|
|
510
525
|
term: undefined
|
|
511
|
-
};
|
|
512
|
-
|
|
513
|
-
// Get any existing filters and normalise the items[]
|
|
526
|
+
}; // Get any existing filters and normalise the items[]
|
|
514
527
|
// so we can start off with isSelected is false
|
|
528
|
+
|
|
515
529
|
let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
|
|
516
530
|
if (isCurrentFacet || filter.isGrouped) {
|
|
517
531
|
var _filter$items;
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
521
|
-
...item,
|
|
532
|
+
|
|
533
|
+
return [key, { ...filter,
|
|
534
|
+
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({ ...item,
|
|
522
535
|
isSelected: false
|
|
523
536
|
}))
|
|
524
537
|
}];
|
|
525
538
|
}
|
|
539
|
+
|
|
526
540
|
return [key, filter];
|
|
527
541
|
});
|
|
528
|
-
|
|
529
|
-
// Iterate through all filters within the facet,
|
|
542
|
+
|
|
543
|
+
const addFilterItem = (filters, paramKey, paramValue) => // Iterate through all filters within the facet,
|
|
530
544
|
// if the paramKey matches the filter key
|
|
531
545
|
// get the existing items list, and see if that filter
|
|
532
546
|
// already exists, if so set isSelected to true,
|
|
@@ -538,45 +552,47 @@ const generateFiltersState = ({
|
|
|
538
552
|
} else {
|
|
539
553
|
const items = filter.items || [];
|
|
540
554
|
const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
|
|
555
|
+
|
|
541
556
|
if (items.length > 0 && itemIndex !== -1) {
|
|
542
557
|
items[itemIndex].isSelected = true;
|
|
543
558
|
} else {
|
|
544
|
-
items.push({
|
|
545
|
-
...filterItem,
|
|
559
|
+
items.push({ ...filterItem,
|
|
546
560
|
key: paramValue,
|
|
547
561
|
isSelected: true
|
|
548
562
|
});
|
|
549
563
|
}
|
|
550
|
-
|
|
551
|
-
|
|
564
|
+
|
|
565
|
+
return [key, { ...filter,
|
|
552
566
|
items
|
|
553
567
|
}];
|
|
554
568
|
}
|
|
555
|
-
});
|
|
556
|
-
|
|
557
|
-
// For each value found in filterParams
|
|
569
|
+
}); // For each value found in filterParams
|
|
558
570
|
// we are looking to split that value into multiple by any comma
|
|
559
571
|
// and then either set isSelected for an existing filterItem
|
|
560
572
|
// or push an item to the filters.{ key }.items[] array
|
|
561
573
|
// giving it only the key (entry guid) that can be taken to filter
|
|
562
574
|
// the search results during SSR without needing to fetch the filters first
|
|
575
|
+
|
|
576
|
+
|
|
563
577
|
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
564
578
|
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
565
579
|
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
566
580
|
});
|
|
567
581
|
return Object.fromEntries(filters);
|
|
568
582
|
};
|
|
583
|
+
|
|
569
584
|
const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
|
|
585
|
+
|
|
570
586
|
const resetFacet = facet => {
|
|
571
587
|
facet.pagingInfo.pagesLoaded = [];
|
|
572
588
|
facet.pagingInfo.pageIndex = 0;
|
|
573
589
|
facet.queryDuration = 0;
|
|
574
590
|
return facet;
|
|
575
591
|
};
|
|
592
|
+
|
|
576
593
|
var reducers = (config => {
|
|
577
594
|
// Add facets from SearchConfig to initialState
|
|
578
|
-
const initState = {
|
|
579
|
-
...initialState,
|
|
595
|
+
const initState = { ...initialState,
|
|
580
596
|
tabs: config.tabs,
|
|
581
597
|
facets: generateSearchFacets(Context$1.facets, config),
|
|
582
598
|
listings: generateSearchFacets(Context$1.listings, config),
|
|
@@ -585,46 +601,49 @@ var reducers = (config => {
|
|
|
585
601
|
return produce((state = initState, action) => {
|
|
586
602
|
const context = state.context;
|
|
587
603
|
const current = context !== 'listings' ? state.currentFacet : state.currentListing;
|
|
604
|
+
|
|
588
605
|
switch (action.type) {
|
|
589
606
|
case APPLY_CONFIG:
|
|
590
607
|
{
|
|
591
608
|
state = addConfigToState(state, action);
|
|
592
609
|
return state;
|
|
593
610
|
}
|
|
611
|
+
|
|
594
612
|
case CLEAR_FILTERS:
|
|
595
613
|
{
|
|
596
614
|
const currentFilters = state[context][current].filters;
|
|
597
615
|
state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
|
|
598
616
|
if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
|
|
599
617
|
const filterItems = filter.items || [];
|
|
600
|
-
filter.items = filterItems.map(item => ({
|
|
601
|
-
...item,
|
|
618
|
+
filter.items = filterItems.map(item => ({ ...item,
|
|
602
619
|
isSelected: false
|
|
603
620
|
}));
|
|
604
621
|
}
|
|
622
|
+
|
|
605
623
|
return [filterKey, filter];
|
|
606
624
|
}));
|
|
607
625
|
state[context][current].queryDuration = 0;
|
|
608
626
|
state[context][current].pagingInfo.pagesLoaded = [];
|
|
609
627
|
return;
|
|
610
628
|
}
|
|
629
|
+
|
|
611
630
|
case EXECUTE_SEARCH:
|
|
612
631
|
{
|
|
613
|
-
state[action.context][action.facet].entries = {
|
|
614
|
-
...(state[action.context][action.facet].entries || entries),
|
|
632
|
+
state[action.context][action.facet].entries = { ...(state[action.context][action.facet].entries || entries),
|
|
615
633
|
isLoading: true
|
|
616
634
|
};
|
|
617
635
|
return;
|
|
618
636
|
}
|
|
637
|
+
|
|
619
638
|
case EXECUTE_SEARCH_ERROR:
|
|
620
639
|
{
|
|
621
|
-
state[action.context][action.facet].entries = {
|
|
622
|
-
...entries,
|
|
640
|
+
state[action.context][action.facet].entries = { ...entries,
|
|
623
641
|
isError: true,
|
|
624
642
|
error: action.error
|
|
625
643
|
};
|
|
626
644
|
return;
|
|
627
645
|
}
|
|
646
|
+
|
|
628
647
|
case LOAD_FILTERS:
|
|
629
648
|
{
|
|
630
649
|
const {
|
|
@@ -633,21 +652,20 @@ var reducers = (config => {
|
|
|
633
652
|
} = action;
|
|
634
653
|
const filters = state[action.context][facetKey].filters;
|
|
635
654
|
Object.entries(filters).map(([filterKey, filter]) => {
|
|
636
|
-
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
637
|
-
...filter,
|
|
655
|
+
if (filtersToLoad.find(f => f === filterKey)) return { ...filter,
|
|
638
656
|
isLoading: true
|
|
639
657
|
};
|
|
640
658
|
return filter;
|
|
641
659
|
});
|
|
642
660
|
state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
|
|
643
|
-
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
644
|
-
...filter,
|
|
661
|
+
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, { ...filter,
|
|
645
662
|
isLoading: true
|
|
646
663
|
}];
|
|
647
664
|
return [filterKey, filter];
|
|
648
665
|
}));
|
|
649
666
|
return;
|
|
650
667
|
}
|
|
668
|
+
|
|
651
669
|
case LOAD_FILTERS_ERROR:
|
|
652
670
|
case LOAD_FILTERS_COMPLETE:
|
|
653
671
|
{
|
|
@@ -657,23 +675,26 @@ var reducers = (config => {
|
|
|
657
675
|
nextFilter
|
|
658
676
|
} = action;
|
|
659
677
|
const filter = state[action.context][facetKey].filters[filterKey];
|
|
678
|
+
|
|
660
679
|
if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
|
|
661
680
|
// Preserve items already in state
|
|
662
|
-
state[action.context][facetKey].filters[filterKey] = {
|
|
663
|
-
...filter,
|
|
681
|
+
state[action.context][facetKey].filters[filterKey] = { ...filter,
|
|
664
682
|
isLoading: false,
|
|
665
683
|
isError: nextFilter.isError
|
|
666
684
|
};
|
|
667
685
|
return;
|
|
668
686
|
}
|
|
687
|
+
|
|
669
688
|
state[action.context][facetKey].filters[filterKey] = merge(filter, nextFilter, {
|
|
670
689
|
arrayMerge: (source, inbound) => inbound
|
|
671
690
|
});
|
|
672
691
|
return;
|
|
673
692
|
}
|
|
693
|
+
|
|
674
694
|
case SET_ROUTE_FILTERS:
|
|
675
695
|
{
|
|
676
696
|
var _state$context$facet$;
|
|
697
|
+
|
|
677
698
|
const {
|
|
678
699
|
facet,
|
|
679
700
|
params,
|
|
@@ -686,16 +707,14 @@ var reducers = (config => {
|
|
|
686
707
|
orderBy
|
|
687
708
|
} = params;
|
|
688
709
|
const stateTerm = state.term;
|
|
689
|
-
const tabId = state[context][facet].tabId || 0;
|
|
690
|
-
|
|
691
|
-
// Reset the facet if the search term has changed, or if the any of
|
|
710
|
+
const tabId = state[context][facet].tabId || 0; // Reset the facet if the search term has changed, or if the any of
|
|
692
711
|
// the filters have changed
|
|
693
|
-
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
694
|
-
let resetCurrentFacet = false;
|
|
695
712
|
|
|
696
|
-
|
|
713
|
+
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
714
|
+
let resetCurrentFacet = false; // Add filter values in params to the matched filters in state for the current facet
|
|
697
715
|
// causing unfetched filter items to be generated with isSelected: true
|
|
698
716
|
// or existing filter items to be tagged with isSelected: true
|
|
717
|
+
|
|
699
718
|
const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
|
|
700
719
|
const isCurrentFacet = facetName === facet;
|
|
701
720
|
const nextFilters = generateFiltersState({
|
|
@@ -715,8 +734,7 @@ var reducers = (config => {
|
|
|
715
734
|
state[action.context === Context$1.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
716
735
|
state.term = term;
|
|
717
736
|
state.tabs[tabId].currentFacet = facet;
|
|
718
|
-
state[context][facet].pagingInfo = {
|
|
719
|
-
...(state[context][facet].pagingInfo || pagingInfo),
|
|
737
|
+
state[context][facet].pagingInfo = { ...(state[context][facet].pagingInfo || pagingInfo),
|
|
720
738
|
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),
|
|
721
739
|
pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
|
|
722
740
|
};
|
|
@@ -725,6 +743,7 @@ var reducers = (config => {
|
|
|
725
743
|
if (resetAllFacets) state[context] = resetFacets(state, context);
|
|
726
744
|
return;
|
|
727
745
|
}
|
|
746
|
+
|
|
728
747
|
case SET_SEARCH_ENTRIES:
|
|
729
748
|
{
|
|
730
749
|
const thisContext = action.context || context;
|
|
@@ -734,17 +753,17 @@ var reducers = (config => {
|
|
|
734
753
|
});
|
|
735
754
|
return;
|
|
736
755
|
}
|
|
756
|
+
|
|
737
757
|
case SET_SEARCH_FILTERS:
|
|
738
758
|
{
|
|
739
759
|
var _action$params;
|
|
760
|
+
|
|
740
761
|
// DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
|
|
741
762
|
// for example in a minilist scenario where the route filters
|
|
742
763
|
// are used for the primary page / listing navigation
|
|
743
|
-
|
|
744
764
|
// Add filter values in params to the matched filters in state
|
|
745
765
|
// causing unfetched filter items to be generated with isSelected: true
|
|
746
|
-
const filters = generateFiltersState({
|
|
747
|
-
...action,
|
|
766
|
+
const filters = generateFiltersState({ ...action,
|
|
748
767
|
isCurrentFacet: true
|
|
749
768
|
}, state);
|
|
750
769
|
const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
@@ -755,6 +774,7 @@ var reducers = (config => {
|
|
|
755
774
|
state.config.ssr = typeof window === 'undefined';
|
|
756
775
|
return;
|
|
757
776
|
}
|
|
777
|
+
|
|
758
778
|
case UPDATE_PAGE_INDEX:
|
|
759
779
|
{
|
|
760
780
|
const {
|
|
@@ -769,6 +789,7 @@ var reducers = (config => {
|
|
|
769
789
|
state[context][current].queryDuration = 0;
|
|
770
790
|
return;
|
|
771
791
|
}
|
|
792
|
+
|
|
772
793
|
case UPDATE_PAGE_SIZE:
|
|
773
794
|
{
|
|
774
795
|
const {
|
|
@@ -780,12 +801,14 @@ var reducers = (config => {
|
|
|
780
801
|
state[context][current].queryDuration = 0;
|
|
781
802
|
return;
|
|
782
803
|
}
|
|
804
|
+
|
|
783
805
|
case UPDATE_SEARCH_TERM:
|
|
784
806
|
{
|
|
785
807
|
state.term = action.term;
|
|
786
808
|
state[context] = resetFacets(state, context);
|
|
787
809
|
return;
|
|
788
810
|
}
|
|
811
|
+
|
|
789
812
|
case UPDATE_SELECTED_FILTERS:
|
|
790
813
|
{
|
|
791
814
|
const {
|
|
@@ -798,27 +821,29 @@ var reducers = (config => {
|
|
|
798
821
|
const currentItems = state[context][current].filters[filter].items;
|
|
799
822
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
800
823
|
state[context][current] = resetFacet(state[context][current]);
|
|
824
|
+
|
|
801
825
|
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
802
826
|
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
803
827
|
key,
|
|
804
828
|
isSelected: false
|
|
805
829
|
});
|
|
806
830
|
}
|
|
831
|
+
|
|
807
832
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
808
833
|
if (item.key === key) {
|
|
809
|
-
return {
|
|
810
|
-
...item,
|
|
834
|
+
return { ...item,
|
|
811
835
|
isSelected: !item.isSelected
|
|
812
836
|
};
|
|
813
837
|
}
|
|
814
|
-
|
|
815
|
-
|
|
838
|
+
|
|
839
|
+
if (isSingleSelect) return { ...item,
|
|
816
840
|
isSelected: false
|
|
817
841
|
};
|
|
818
842
|
return item;
|
|
819
843
|
});
|
|
820
844
|
return;
|
|
821
845
|
}
|
|
846
|
+
|
|
822
847
|
case UPDATE_SORT_ORDER:
|
|
823
848
|
{
|
|
824
849
|
const {
|
|
@@ -830,6 +855,7 @@ var reducers = (config => {
|
|
|
830
855
|
state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? toArray(orderBy) || [] : [];
|
|
831
856
|
return;
|
|
832
857
|
}
|
|
858
|
+
|
|
833
859
|
default:
|
|
834
860
|
return;
|
|
835
861
|
}
|