@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/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-e576b6f6.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-e576b6f6.js';
|
|
5
3
|
import 'jsonpath-mapper';
|
|
6
4
|
import { createSelector } from 'reselect';
|
|
7
5
|
import merge from 'deepmerge';
|
|
8
6
|
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,14 +27,11 @@ const toJS = WrappedComponent => wrappedComponentProps => {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
// eslint-disable-next-line import/default
|
|
30
|
-
|
|
31
30
|
const withSearch = mappers => SearchComponent => {
|
|
32
31
|
const Wrapper = props => {
|
|
33
32
|
return /*#__PURE__*/React.createElement(SearchComponent, props);
|
|
34
33
|
};
|
|
35
|
-
|
|
36
34
|
Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
|
|
37
|
-
|
|
38
35
|
const mapStateToProps = state => {
|
|
39
36
|
return {
|
|
40
37
|
currentFacet: getCurrentFacet(state),
|
|
@@ -61,15 +58,14 @@ const withSearch = mappers => SearchComponent => {
|
|
|
61
58
|
totalCount: getTotalCount$1(state)
|
|
62
59
|
};
|
|
63
60
|
};
|
|
64
|
-
|
|
65
61
|
const mapDispatchToProps = {
|
|
66
62
|
clearFilters: filterKey => withMappers(clearFilters(filterKey), mappers),
|
|
67
63
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
68
64
|
updateCurrentTab: id => withMappers(updateCurrentTab(id), mappers),
|
|
69
|
-
updatePageIndex: (pageIndex,
|
|
70
|
-
updatePageSize: (pageSize,
|
|
65
|
+
updatePageIndex: (pageIndex, scrollToElement) => withMappers(updatePageIndex(pageIndex, scrollToElement), mappers),
|
|
66
|
+
updatePageSize: (pageSize, scrollToElement) => withMappers(updatePageSize(pageSize, scrollToElement), mappers),
|
|
71
67
|
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
72
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
68
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), mappers),
|
|
73
69
|
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
74
70
|
};
|
|
75
71
|
const connector = connect(mapStateToProps, mapDispatchToProps);
|
|
@@ -77,12 +73,10 @@ const withSearch = mappers => SearchComponent => {
|
|
|
77
73
|
};
|
|
78
74
|
|
|
79
75
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
80
|
-
|
|
81
76
|
const withListing = mappers => ListingComponent => {
|
|
82
77
|
const Wrapper = props => {
|
|
83
78
|
return /*#__PURE__*/React.createElement(ListingComponent, props);
|
|
84
79
|
};
|
|
85
|
-
|
|
86
80
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
87
81
|
const {
|
|
88
82
|
getCurrent,
|
|
@@ -97,7 +91,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
97
91
|
getSearchTerm,
|
|
98
92
|
getSelectedFilters
|
|
99
93
|
} = selectListing;
|
|
100
|
-
|
|
101
94
|
const mapStateToProps = state => {
|
|
102
95
|
return {
|
|
103
96
|
currentListing: getCurrent(state),
|
|
@@ -116,14 +109,13 @@ const withListing = mappers => ListingComponent => {
|
|
|
116
109
|
}, 'dynamicOrderBy', [])
|
|
117
110
|
};
|
|
118
111
|
};
|
|
119
|
-
|
|
120
112
|
const mapDispatchToProps = {
|
|
121
113
|
clearFilters: filterKey => withMappers(clearFilters(filterKey), mappers),
|
|
122
114
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
123
|
-
updatePageIndex: (pageIndex,
|
|
124
|
-
updatePageSize: (pageSize,
|
|
115
|
+
updatePageIndex: (pageIndex, scrollToElement) => withMappers(updatePageIndex(pageIndex, scrollToElement), mappers),
|
|
116
|
+
updatePageSize: (pageSize, scrollToElement) => withMappers(updatePageSize(pageSize, scrollToElement), mappers),
|
|
125
117
|
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
126
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
118
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), mappers),
|
|
127
119
|
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
128
120
|
};
|
|
129
121
|
return connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
|
|
@@ -152,7 +144,6 @@ const {
|
|
|
152
144
|
getTabsAndFacets,
|
|
153
145
|
getTotalCount
|
|
154
146
|
} = selectFacets;
|
|
155
|
-
|
|
156
147
|
const makeSelectFacetsProps = () => createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
157
148
|
currentFacet: getCurrent$1(state),
|
|
158
149
|
currentPageIndex: getPageIndex$1(state),
|
|
@@ -177,7 +168,6 @@ const makeSelectFacetsProps = () => createSelector(state => state, (_, mappers)
|
|
|
177
168
|
tabsAndFacets: getTabsAndFacets(state),
|
|
178
169
|
totalCount: getTotalCount(state)
|
|
179
170
|
}));
|
|
180
|
-
|
|
181
171
|
const useFacets = ({
|
|
182
172
|
mappers
|
|
183
173
|
} = {
|
|
@@ -190,10 +180,10 @@ const useFacets = ({
|
|
|
190
180
|
clearFilters: filterKey => dispatch(withMappers(clearFilters(filterKey), m)),
|
|
191
181
|
updateCurrentFacet: facet => dispatch(withMappers(updateCurrentFacet(facet), m)),
|
|
192
182
|
updateCurrentTab: id => withMappers(updateCurrentTab(id), m),
|
|
193
|
-
updatePageIndex: (pageIndex,
|
|
194
|
-
updatePageSize: (pageSize,
|
|
183
|
+
updatePageIndex: (pageIndex, scrollToElement) => dispatch(withMappers(updatePageIndex(pageIndex, scrollToElement), m)),
|
|
184
|
+
updatePageSize: (pageSize, scrollToElement) => dispatch(withMappers(updatePageSize(pageSize, scrollToElement), m)),
|
|
195
185
|
updateSearchTerm: term => dispatch(withMappers(updateSearchTerm(term), m)),
|
|
196
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
186
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
197
187
|
updateSortOrder: orderBy => dispatch(withMappers(updateSortOrder(orderBy), m))
|
|
198
188
|
};
|
|
199
189
|
const {
|
|
@@ -254,7 +244,6 @@ const {
|
|
|
254
244
|
getRenderableFilters,
|
|
255
245
|
getSearchTerm
|
|
256
246
|
} = selectListing;
|
|
257
|
-
|
|
258
247
|
const makeSelectListingProps = () => createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
259
248
|
currentListing: getCurrent(state),
|
|
260
249
|
currentPageIndex: getPageIndex(state),
|
|
@@ -272,7 +261,6 @@ const makeSelectListingProps = () => createSelector(state => state, (_, mappers)
|
|
|
272
261
|
state
|
|
273
262
|
}, 'dynamicOrderBy', [])
|
|
274
263
|
}));
|
|
275
|
-
|
|
276
264
|
const useListing = ({
|
|
277
265
|
mappers
|
|
278
266
|
} = {
|
|
@@ -284,10 +272,10 @@ const useListing = ({
|
|
|
284
272
|
const dispatchProps = {
|
|
285
273
|
clearFilters: filterKey => dispatch(withMappers(clearFilters(filterKey), m)),
|
|
286
274
|
updateCurrentFacet: facet => dispatch(withMappers(updateCurrentFacet(facet), m)),
|
|
287
|
-
updatePageIndex: (pageIndex,
|
|
288
|
-
updatePageSize: (pageSize,
|
|
275
|
+
updatePageIndex: (pageIndex, scrollToElement) => dispatch(withMappers(updatePageIndex(pageIndex, scrollToElement), m)),
|
|
276
|
+
updatePageSize: (pageSize, scrollToElement) => dispatch(withMappers(updatePageSize(pageSize, scrollToElement), m)),
|
|
289
277
|
updateSearchTerm: term => dispatch(withMappers(updateSearchTerm(term), m)),
|
|
290
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false,
|
|
278
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
291
279
|
updateSortOrder: orderBy => dispatch(withMappers(updateSortOrder(orderBy), m))
|
|
292
280
|
};
|
|
293
281
|
const {
|
|
@@ -332,7 +320,6 @@ const makeSelectMinilistProps = () => createSelector(state => state, (_, id) =>
|
|
|
332
320
|
results: getResults(state, id, Context$1.minilist, 'js'),
|
|
333
321
|
searchTerm: getSearchTerm$2(state)
|
|
334
322
|
} : null);
|
|
335
|
-
|
|
336
323
|
const useMinilist = ({
|
|
337
324
|
id,
|
|
338
325
|
config,
|
|
@@ -361,7 +348,8 @@ const useMinilist = ({
|
|
|
361
348
|
pagingInfo: {},
|
|
362
349
|
results: [],
|
|
363
350
|
searchTerm: ''
|
|
364
|
-
};
|
|
351
|
+
};
|
|
352
|
+
// useSelector((state: AppState) => ({
|
|
365
353
|
// facet: getFacet(state, id, Context.minilist).toJS(),
|
|
366
354
|
// filters: getFilters(state, id, Context.minilist).toJS(),
|
|
367
355
|
// isLoading: getIsLoading(state, Context.minilist, id),
|
|
@@ -478,28 +466,26 @@ const addConfigToState = (state, action) => {
|
|
|
478
466
|
context,
|
|
479
467
|
facet,
|
|
480
468
|
config
|
|
481
|
-
} = action;
|
|
482
|
-
|
|
469
|
+
} = action;
|
|
470
|
+
// Adding or changing the config of a single facet, listing or minilist
|
|
483
471
|
if (context && facet && config) {
|
|
484
|
-
state[context][facet] = {
|
|
472
|
+
state[context][facet] = {
|
|
473
|
+
...searchFacet,
|
|
485
474
|
...config
|
|
486
475
|
};
|
|
487
476
|
} else if (config) {
|
|
488
477
|
// Changing the entire search config
|
|
489
|
-
state = {
|
|
478
|
+
state = {
|
|
479
|
+
...config,
|
|
490
480
|
config: initialState.config
|
|
491
481
|
};
|
|
492
482
|
}
|
|
493
|
-
|
|
494
483
|
return state;
|
|
495
484
|
};
|
|
496
|
-
|
|
497
485
|
const generateSearchFacets = (context, config) => {
|
|
498
486
|
const facets = {};
|
|
499
|
-
|
|
500
487
|
if (config) {
|
|
501
488
|
const thisConfig = config[context] || {};
|
|
502
|
-
|
|
503
489
|
if (Object.keys(thisConfig).length > 0) {
|
|
504
490
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
505
491
|
const newFacet = merge(searchFacet, facet);
|
|
@@ -507,10 +493,8 @@ const generateSearchFacets = (context, config) => {
|
|
|
507
493
|
});
|
|
508
494
|
}
|
|
509
495
|
}
|
|
510
|
-
|
|
511
496
|
return facets;
|
|
512
497
|
};
|
|
513
|
-
|
|
514
498
|
const generateFiltersState = ({
|
|
515
499
|
facet,
|
|
516
500
|
params,
|
|
@@ -518,29 +502,31 @@ const generateFiltersState = ({
|
|
|
518
502
|
isCurrentFacet
|
|
519
503
|
}, state) => {
|
|
520
504
|
// Remove filters we know about from params
|
|
521
|
-
const filterParams = {
|
|
505
|
+
const filterParams = {
|
|
506
|
+
...params,
|
|
522
507
|
facet: undefined,
|
|
523
508
|
orderBy: undefined,
|
|
524
509
|
pageIndex: undefined,
|
|
525
510
|
term: undefined
|
|
526
|
-
};
|
|
527
|
-
// so we can start off with isSelected is false
|
|
511
|
+
};
|
|
528
512
|
|
|
513
|
+
// Get any existing filters and normalise the items[]
|
|
514
|
+
// so we can start off with isSelected is false
|
|
529
515
|
let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
|
|
530
516
|
if (isCurrentFacet || filter.isGrouped) {
|
|
531
517
|
var _filter$items;
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
518
|
+
return [key, {
|
|
519
|
+
...filter,
|
|
520
|
+
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
521
|
+
...item,
|
|
535
522
|
isSelected: false
|
|
536
523
|
}))
|
|
537
524
|
}];
|
|
538
525
|
}
|
|
539
|
-
|
|
540
526
|
return [key, filter];
|
|
541
527
|
});
|
|
542
|
-
|
|
543
|
-
|
|
528
|
+
const addFilterItem = (filters, paramKey, paramValue) =>
|
|
529
|
+
// Iterate through all filters within the facet,
|
|
544
530
|
// if the paramKey matches the filter key
|
|
545
531
|
// get the existing items list, and see if that filter
|
|
546
532
|
// already exists, if so set isSelected to true,
|
|
@@ -552,47 +538,45 @@ const generateFiltersState = ({
|
|
|
552
538
|
} else {
|
|
553
539
|
const items = filter.items || [];
|
|
554
540
|
const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
|
|
555
|
-
|
|
556
541
|
if (items.length > 0 && itemIndex !== -1) {
|
|
557
542
|
items[itemIndex].isSelected = true;
|
|
558
543
|
} else {
|
|
559
|
-
items.push({
|
|
544
|
+
items.push({
|
|
545
|
+
...filterItem,
|
|
560
546
|
key: paramValue,
|
|
561
547
|
isSelected: true
|
|
562
548
|
});
|
|
563
549
|
}
|
|
564
|
-
|
|
565
|
-
|
|
550
|
+
return [key, {
|
|
551
|
+
...filter,
|
|
566
552
|
items
|
|
567
553
|
}];
|
|
568
554
|
}
|
|
569
|
-
});
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
// For each value found in filterParams
|
|
570
558
|
// we are looking to split that value into multiple by any comma
|
|
571
559
|
// and then either set isSelected for an existing filterItem
|
|
572
560
|
// or push an item to the filters.{ key }.items[] array
|
|
573
561
|
// giving it only the key (entry guid) that can be taken to filter
|
|
574
562
|
// the search results during SSR without needing to fetch the filters first
|
|
575
|
-
|
|
576
|
-
|
|
577
563
|
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
578
564
|
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
579
565
|
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
580
566
|
});
|
|
581
567
|
return Object.fromEntries(filters);
|
|
582
568
|
};
|
|
583
|
-
|
|
584
569
|
const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
|
|
585
|
-
|
|
586
570
|
const resetFacet = facet => {
|
|
587
571
|
facet.pagingInfo.pagesLoaded = [];
|
|
588
572
|
facet.pagingInfo.pageIndex = 0;
|
|
589
573
|
facet.queryDuration = 0;
|
|
590
574
|
return facet;
|
|
591
575
|
};
|
|
592
|
-
|
|
593
576
|
var reducers = (config => {
|
|
594
577
|
// Add facets from SearchConfig to initialState
|
|
595
|
-
const initState = {
|
|
578
|
+
const initState = {
|
|
579
|
+
...initialState,
|
|
596
580
|
tabs: config.tabs,
|
|
597
581
|
facets: generateSearchFacets(Context$1.facets, config),
|
|
598
582
|
listings: generateSearchFacets(Context$1.listings, config),
|
|
@@ -601,49 +585,46 @@ var reducers = (config => {
|
|
|
601
585
|
return produce((state = initState, action) => {
|
|
602
586
|
const context = state.context;
|
|
603
587
|
const current = context !== 'listings' ? state.currentFacet : state.currentListing;
|
|
604
|
-
|
|
605
588
|
switch (action.type) {
|
|
606
589
|
case APPLY_CONFIG:
|
|
607
590
|
{
|
|
608
591
|
state = addConfigToState(state, action);
|
|
609
592
|
return state;
|
|
610
593
|
}
|
|
611
|
-
|
|
612
594
|
case CLEAR_FILTERS:
|
|
613
595
|
{
|
|
614
596
|
const currentFilters = state[context][current].filters;
|
|
615
597
|
state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
|
|
616
598
|
if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
|
|
617
599
|
const filterItems = filter.items || [];
|
|
618
|
-
filter.items = filterItems.map(item => ({
|
|
600
|
+
filter.items = filterItems.map(item => ({
|
|
601
|
+
...item,
|
|
619
602
|
isSelected: false
|
|
620
603
|
}));
|
|
621
604
|
}
|
|
622
|
-
|
|
623
605
|
return [filterKey, filter];
|
|
624
606
|
}));
|
|
625
607
|
state[context][current].queryDuration = 0;
|
|
626
608
|
state[context][current].pagingInfo.pagesLoaded = [];
|
|
627
609
|
return;
|
|
628
610
|
}
|
|
629
|
-
|
|
630
611
|
case EXECUTE_SEARCH:
|
|
631
612
|
{
|
|
632
|
-
state[action.context][action.facet].entries = {
|
|
613
|
+
state[action.context][action.facet].entries = {
|
|
614
|
+
...(state[action.context][action.facet].entries || entries),
|
|
633
615
|
isLoading: true
|
|
634
616
|
};
|
|
635
617
|
return;
|
|
636
618
|
}
|
|
637
|
-
|
|
638
619
|
case EXECUTE_SEARCH_ERROR:
|
|
639
620
|
{
|
|
640
|
-
state[action.context][action.facet].entries = {
|
|
621
|
+
state[action.context][action.facet].entries = {
|
|
622
|
+
...entries,
|
|
641
623
|
isError: true,
|
|
642
624
|
error: action.error
|
|
643
625
|
};
|
|
644
626
|
return;
|
|
645
627
|
}
|
|
646
|
-
|
|
647
628
|
case LOAD_FILTERS:
|
|
648
629
|
{
|
|
649
630
|
const {
|
|
@@ -652,20 +633,21 @@ var reducers = (config => {
|
|
|
652
633
|
} = action;
|
|
653
634
|
const filters = state[action.context][facetKey].filters;
|
|
654
635
|
Object.entries(filters).map(([filterKey, filter]) => {
|
|
655
|
-
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
636
|
+
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
637
|
+
...filter,
|
|
656
638
|
isLoading: true
|
|
657
639
|
};
|
|
658
640
|
return filter;
|
|
659
641
|
});
|
|
660
642
|
state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
|
|
661
|
-
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
643
|
+
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
644
|
+
...filter,
|
|
662
645
|
isLoading: true
|
|
663
646
|
}];
|
|
664
647
|
return [filterKey, filter];
|
|
665
648
|
}));
|
|
666
649
|
return;
|
|
667
650
|
}
|
|
668
|
-
|
|
669
651
|
case LOAD_FILTERS_ERROR:
|
|
670
652
|
case LOAD_FILTERS_COMPLETE:
|
|
671
653
|
{
|
|
@@ -675,26 +657,23 @@ var reducers = (config => {
|
|
|
675
657
|
nextFilter
|
|
676
658
|
} = action;
|
|
677
659
|
const filter = state[action.context][facetKey].filters[filterKey];
|
|
678
|
-
|
|
679
660
|
if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
|
|
680
661
|
// Preserve items already in state
|
|
681
|
-
state[action.context][facetKey].filters[filterKey] = {
|
|
662
|
+
state[action.context][facetKey].filters[filterKey] = {
|
|
663
|
+
...filter,
|
|
682
664
|
isLoading: false,
|
|
683
665
|
isError: nextFilter.isError
|
|
684
666
|
};
|
|
685
667
|
return;
|
|
686
668
|
}
|
|
687
|
-
|
|
688
669
|
state[action.context][facetKey].filters[filterKey] = merge(filter, nextFilter, {
|
|
689
670
|
arrayMerge: (source, inbound) => inbound
|
|
690
671
|
});
|
|
691
672
|
return;
|
|
692
673
|
}
|
|
693
|
-
|
|
694
674
|
case SET_ROUTE_FILTERS:
|
|
695
675
|
{
|
|
696
676
|
var _state$context$facet$;
|
|
697
|
-
|
|
698
677
|
const {
|
|
699
678
|
facet,
|
|
700
679
|
params,
|
|
@@ -707,14 +686,16 @@ var reducers = (config => {
|
|
|
707
686
|
orderBy
|
|
708
687
|
} = params;
|
|
709
688
|
const stateTerm = state.term;
|
|
710
|
-
const tabId = state[context][facet].tabId || 0;
|
|
711
|
-
// the filters have changed
|
|
689
|
+
const tabId = state[context][facet].tabId || 0;
|
|
712
690
|
|
|
691
|
+
// Reset the facet if the search term has changed, or if the any of
|
|
692
|
+
// the filters have changed
|
|
713
693
|
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
714
|
-
let resetCurrentFacet = false;
|
|
694
|
+
let resetCurrentFacet = false;
|
|
695
|
+
|
|
696
|
+
// Add filter values in params to the matched filters in state for the current facet
|
|
715
697
|
// causing unfetched filter items to be generated with isSelected: true
|
|
716
698
|
// or existing filter items to be tagged with isSelected: true
|
|
717
|
-
|
|
718
699
|
const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
|
|
719
700
|
const isCurrentFacet = facetName === facet;
|
|
720
701
|
const nextFilters = generateFiltersState({
|
|
@@ -734,7 +715,8 @@ var reducers = (config => {
|
|
|
734
715
|
state[action.context === Context$1.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
735
716
|
state.term = term;
|
|
736
717
|
state.tabs[tabId].currentFacet = facet;
|
|
737
|
-
state[context][facet].pagingInfo = {
|
|
718
|
+
state[context][facet].pagingInfo = {
|
|
719
|
+
...(state[context][facet].pagingInfo || pagingInfo),
|
|
738
720
|
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),
|
|
739
721
|
pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
|
|
740
722
|
};
|
|
@@ -743,7 +725,6 @@ var reducers = (config => {
|
|
|
743
725
|
if (resetAllFacets) state[context] = resetFacets(state, context);
|
|
744
726
|
return;
|
|
745
727
|
}
|
|
746
|
-
|
|
747
728
|
case SET_SEARCH_ENTRIES:
|
|
748
729
|
{
|
|
749
730
|
const thisContext = action.context || context;
|
|
@@ -753,17 +734,17 @@ var reducers = (config => {
|
|
|
753
734
|
});
|
|
754
735
|
return;
|
|
755
736
|
}
|
|
756
|
-
|
|
757
737
|
case SET_SEARCH_FILTERS:
|
|
758
738
|
{
|
|
759
739
|
var _action$params;
|
|
760
|
-
|
|
761
740
|
// DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
|
|
762
741
|
// for example in a minilist scenario where the route filters
|
|
763
742
|
// are used for the primary page / listing navigation
|
|
743
|
+
|
|
764
744
|
// Add filter values in params to the matched filters in state
|
|
765
745
|
// causing unfetched filter items to be generated with isSelected: true
|
|
766
|
-
const filters = generateFiltersState({
|
|
746
|
+
const filters = generateFiltersState({
|
|
747
|
+
...action,
|
|
767
748
|
isCurrentFacet: true
|
|
768
749
|
}, state);
|
|
769
750
|
const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
@@ -774,7 +755,6 @@ var reducers = (config => {
|
|
|
774
755
|
state.config.ssr = typeof window === 'undefined';
|
|
775
756
|
return;
|
|
776
757
|
}
|
|
777
|
-
|
|
778
758
|
case UPDATE_PAGE_INDEX:
|
|
779
759
|
{
|
|
780
760
|
const {
|
|
@@ -789,7 +769,6 @@ var reducers = (config => {
|
|
|
789
769
|
state[context][current].queryDuration = 0;
|
|
790
770
|
return;
|
|
791
771
|
}
|
|
792
|
-
|
|
793
772
|
case UPDATE_PAGE_SIZE:
|
|
794
773
|
{
|
|
795
774
|
const {
|
|
@@ -801,14 +780,12 @@ var reducers = (config => {
|
|
|
801
780
|
state[context][current].queryDuration = 0;
|
|
802
781
|
return;
|
|
803
782
|
}
|
|
804
|
-
|
|
805
783
|
case UPDATE_SEARCH_TERM:
|
|
806
784
|
{
|
|
807
785
|
state.term = action.term;
|
|
808
786
|
state[context] = resetFacets(state, context);
|
|
809
787
|
return;
|
|
810
788
|
}
|
|
811
|
-
|
|
812
789
|
case UPDATE_SELECTED_FILTERS:
|
|
813
790
|
{
|
|
814
791
|
const {
|
|
@@ -821,29 +798,27 @@ var reducers = (config => {
|
|
|
821
798
|
const currentItems = state[context][current].filters[filter].items;
|
|
822
799
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
823
800
|
state[context][current] = resetFacet(state[context][current]);
|
|
824
|
-
|
|
825
801
|
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
826
802
|
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
827
803
|
key,
|
|
828
804
|
isSelected: false
|
|
829
805
|
});
|
|
830
806
|
}
|
|
831
|
-
|
|
832
807
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
833
808
|
if (item.key === key) {
|
|
834
|
-
return {
|
|
809
|
+
return {
|
|
810
|
+
...item,
|
|
835
811
|
isSelected: !item.isSelected
|
|
836
812
|
};
|
|
837
813
|
}
|
|
838
|
-
|
|
839
|
-
|
|
814
|
+
if (isSingleSelect) return {
|
|
815
|
+
...item,
|
|
840
816
|
isSelected: false
|
|
841
817
|
};
|
|
842
818
|
return item;
|
|
843
819
|
});
|
|
844
820
|
return;
|
|
845
821
|
}
|
|
846
|
-
|
|
847
822
|
case UPDATE_SORT_ORDER:
|
|
848
823
|
{
|
|
849
824
|
const {
|
|
@@ -855,7 +830,6 @@ var reducers = (config => {
|
|
|
855
830
|
state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? toArray(orderBy) || [] : [];
|
|
856
831
|
return;
|
|
857
832
|
}
|
|
858
|
-
|
|
859
833
|
default:
|
|
860
834
|
return;
|
|
861
835
|
}
|