@zengenti/contensis-react-base 4.0.0-beta.2 → 4.0.0-beta.4
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/LICENSE +7 -0
- package/README.md +18 -478
- package/cjs/{App-b56aca04.js → App-DXro6av4.js} +215 -234
- package/cjs/App-DXro6av4.js.map +1 -0
- package/cjs/{ChangePassword.container-ae35785e.js → ChangePassword.container-ECjEXixF.js} +209 -286
- package/cjs/ChangePassword.container-ECjEXixF.js.map +1 -0
- package/cjs/CookieHelper.class-C3Eqoze9.js +471 -0
- package/cjs/CookieHelper.class-C3Eqoze9.js.map +1 -0
- package/cjs/{RouteLoader-c06dccd5.js → RouteLoader-BFc-Wl6M.js} +55 -68
- package/cjs/RouteLoader-BFc-Wl6M.js.map +1 -0
- package/cjs/{ContensisDeliveryApi-4fcf049d.js → SSRContext-CFeZxG9H.js} +165 -119
- package/cjs/SSRContext-CFeZxG9H.js.map +1 -0
- package/cjs/{ToJs-a8d8f3f0.js → ToJs-C9jwV7YB.js} +26 -80
- package/cjs/ToJs-C9jwV7YB.js.map +1 -0
- package/cjs/{_commonjsHelpers-b3309d7b.js → _commonjsHelpers-BJu3ubxk.js} +1 -1
- package/cjs/_commonjsHelpers-BJu3ubxk.js.map +1 -0
- package/cjs/client.js +67 -65
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +387 -3294
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-Blvlk4t2.js} +3 -7
- package/{esm/fromJSLeaveImmer-0114ffcf.js.map → cjs/fromJSLeaveImmer-Blvlk4t2.js.map} +1 -1
- package/cjs/redux.js +19 -20
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +13 -6
- package/cjs/routing.js.map +1 -1
- package/cjs/sagas-CbZhaRNd.js +6010 -0
- package/cjs/sagas-CbZhaRNd.js.map +1 -0
- package/cjs/search.js +105 -305
- package/cjs/search.js.map +1 -1
- package/cjs/selectors-wCs5fHD4.js +460 -0
- package/cjs/selectors-wCs5fHD4.js.map +1 -0
- package/cjs/{version-34d91f68.js → store-D07FOXvM.js} +44 -114
- package/cjs/store-D07FOXvM.js.map +1 -0
- package/cjs/{urls-6fcaf4c6.js → urls-DVIwGZmd.js} +1 -1
- package/{esm/urls-eac9a747.js.map → cjs/urls-DVIwGZmd.js.map} +1 -1
- package/cjs/user.js +12 -20
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +109 -116
- package/cjs/util.js.map +1 -1
- package/cjs/{version-a410c88e.js → version-B7XFkBhY.js} +19 -22
- package/{esm/version-9f29becb.js.map → cjs/version-B7XFkBhY.js.map} +1 -1
- package/cjs/version-CM-bJ62L.js +20 -0
- package/cjs/version-CM-bJ62L.js.map +1 -0
- package/esm/{App-83107d7e.js → App-CIlf4cl4.js} +176 -195
- package/esm/App-CIlf4cl4.js.map +1 -0
- package/esm/{ChangePassword.container-76fd5e9b.js → ChangePassword.container-C0tFq0Tf.js} +191 -250
- package/esm/ChangePassword.container-C0tFq0Tf.js.map +1 -0
- package/esm/CookieHelper.class-FTURFpz3.js +464 -0
- package/esm/CookieHelper.class-FTURFpz3.js.map +1 -0
- package/esm/{RouteLoader-29fd689a.js → RouteLoader-D7HmVx5l.js} +40 -53
- package/esm/RouteLoader-D7HmVx5l.js.map +1 -0
- package/esm/{ContensisDeliveryApi-fe57a037.js → SSRContext-CkiWIvde.js} +159 -120
- package/esm/SSRContext-CkiWIvde.js.map +1 -0
- package/esm/{ToJs-df57f31d.js → ToJs-CpPNdcXS.js} +24 -77
- package/esm/ToJs-CpPNdcXS.js.map +1 -0
- package/esm/{_commonjsHelpers-1789f0cf.js → _commonjsHelpers-BFTU3MAI.js} +1 -1
- package/esm/_commonjsHelpers-BFTU3MAI.js.map +1 -0
- package/esm/client.js +55 -53
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +318 -3223
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-C_YACmOf.js} +2 -6
- package/{cjs/fromJSLeaveImmer-e74c673c.js.map → esm/fromJSLeaveImmer-C_YACmOf.js.map} +1 -1
- package/esm/redux.js +10 -9
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +13 -4
- package/esm/routing.js.map +1 -1
- package/esm/sagas-xJU-zOpn.js +5916 -0
- package/esm/sagas-xJU-zOpn.js.map +1 -0
- package/esm/search.js +113 -311
- package/esm/search.js.map +1 -1
- package/esm/selectors-CBdCY0u3.js +396 -0
- package/esm/selectors-CBdCY0u3.js.map +1 -0
- package/esm/{version-3d9911e2.js → store-v2gyr6u2.js} +38 -85
- package/esm/store-v2gyr6u2.js.map +1 -0
- package/esm/{urls-eac9a747.js → urls-DfCisos-.js} +1 -1
- package/{cjs/urls-6fcaf4c6.js.map → esm/urls-DfCisos-.js.map} +1 -1
- package/esm/user.js +7 -13
- package/esm/user.js.map +1 -1
- package/esm/util.js +67 -75
- package/esm/util.js.map +1 -1
- package/esm/version-D773TD9j.js +15 -0
- package/esm/version-D773TD9j.js.map +1 -0
- package/esm/{version-9f29becb.js → version-DvjTUbcA.js} +6 -9
- package/{cjs/version-a410c88e.js.map → esm/version-DvjTUbcA.js.map} +1 -1
- package/models/app/App.d.ts +1 -1
- package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +4 -1
- package/models/app/pages/VersionInfo/components/VersionInfo.styled.d.ts +2 -1
- package/models/client/client.d.ts +1 -1
- package/models/index.d.ts +1 -2
- package/models/models/AppRouteProps.d.ts +11 -0
- package/models/{redux/appstate.d.ts → models/AppState.d.ts} +3 -3
- package/models/models/ContentTypeMapping.d.ts +89 -0
- package/models/models/EntryMapper.d.ts +3 -0
- package/models/models/GetRouteActionArgs.d.ts +15 -0
- package/models/models/MatchedRoute.d.ts +4 -0
- package/models/models/ReduxInjector.d.ts +5 -0
- package/models/models/RequireLogin.d.ts +6 -0
- package/models/models/RouteComponent.d.ts +4 -0
- package/models/models/RouteComponentProps.d.ts +9 -0
- package/models/models/RouteLoaderProps.d.ts +9 -0
- package/models/models/RouteNode.d.ts +5 -0
- package/models/models/SSRContext.d.ts +11 -0
- package/models/models/StaticRoute.d.ts +61 -0
- package/models/models/WithEvents.d.ts +58 -0
- package/models/models/config/AppConfig.d.ts +12 -0
- package/models/{config.d.ts → models/config/ServerConfig.d.ts} +3 -12
- package/models/models/config/StateType.d.ts +1 -0
- package/models/models/config/index.d.ts +3 -0
- package/models/models/index.d.ts +16 -0
- package/models/redux/actions/index.d.ts +2 -2
- package/models/redux/sagas/navigation.d.ts +1 -3
- package/models/redux/selectors/index.d.ts +2 -2
- package/models/redux/store/injectors.d.ts +16 -4
- package/models/redux/store/store.d.ts +10 -4
- package/models/redux/types/index.d.ts +2 -2
- package/models/redux/types/navigation.d.ts +3 -3
- package/models/redux/types/version.d.ts +2 -2
- package/models/routing/components/Redirect.d.ts +1 -1
- package/models/routing/components/RouteLoader.d.ts +1 -1
- package/models/routing/components/StaticRouteLoader.d.ts +1 -1
- package/models/routing/components/Status.d.ts +1 -1
- package/models/routing/redux/actions.d.ts +3 -4
- package/models/routing/redux/selectors.d.ts +2 -2
- package/models/routing/redux/types.d.ts +11 -11
- package/models/routing/util/find-contenttype-mapping.d.ts +1 -1
- package/models/routing/util/queries.d.ts +2 -2
- package/models/search/containers/withListing.d.ts +4 -1
- package/models/search/containers/withSearch.d.ts +4 -1
- package/models/search/models/Queries.d.ts +4 -2
- package/models/search/models/Search.d.ts +8 -1
- package/models/search/models/SearchActions.d.ts +3 -2
- package/models/search/models/SearchState.d.ts +5 -1
- package/models/search/redux/reducers.d.ts +2 -257
- package/models/search/redux/schema.d.ts +1 -1
- package/models/search/redux/selectors.d.ts +5 -5
- package/models/search/search/ContensisDeliveryApi.d.ts +2 -2
- package/models/search/search/ToJs.d.ts +1 -1
- package/models/search/search/expressions.d.ts +3 -3
- package/models/search/search/util.d.ts +17 -2
- package/models/search/transformations/searchresult-to-state.mapper.d.ts +1 -2
- package/models/server/features/caching/cacheDuration.schema.d.ts +1 -0
- package/models/server/features/linkdepth-api/search.d.ts +1 -1
- package/models/server/features/static-assets/index.d.ts +1 -1
- package/models/server/internalServer.d.ts +1 -1
- package/models/server/util/bundles.d.ts +1 -1
- package/models/server/util/headers.d.ts +1 -1
- package/models/server/webApp.d.ts +1 -1
- package/models/user/components/Login.d.ts +1 -1
- package/models/user/components/LoginForm.d.ts +6 -6
- package/models/user/components/LogoutForm.d.ts +4 -4
- package/models/user/components.styled/Login.styled.d.ts +1 -1
- package/models/user/components.styled/LoginForm.styled.d.ts +1 -1
- package/models/user/hocs/withLogin.d.ts +4 -4
- package/models/user/hocs/withRegistration.d.ts +6 -3
- package/models/user/hooks/useLogin.d.ts +4 -4
- package/models/user/redux/actions.d.ts +7 -6
- package/models/user/redux/sagas/index.d.ts +1 -1
- package/models/user/redux/sagas/login.d.ts +5 -17
- package/models/user/redux/selectors.d.ts +1 -2
- package/models/user/redux/types.d.ts +21 -21
- package/models/user/state.d.ts +12 -0
- package/models/user/transformations/mapClientCredentials.d.ts +3 -1
- package/models/user/util/ContensisManagementApi.d.ts +10 -9
- package/models/user/util/CookieConstants.d.ts +1 -0
- package/models/user/util/CookieHelper.class.d.ts +8 -4
- package/models/user/util/LoginHelper.class.d.ts +25 -37
- package/models/user/util/OidcUserManager.d.ts +1 -1
- package/models/user/util/matchGroups.d.ts +1 -1
- package/models/util/CachedDeliveryApi.d.ts +11 -10
- package/models/util/ContensisDeliveryApi.d.ts +11 -7
- package/models/util/SSRContext.d.ts +29 -0
- package/models/util/index.d.ts +1 -0
- package/models/util/json-mapper.d.ts +4 -5
- package/package.json +71 -92
- package/cjs/App-b56aca04.js.map +0 -1
- package/cjs/ChangePassword.container-ae35785e.js.map +0 -1
- package/cjs/ContensisDeliveryApi-4fcf049d.js.map +0 -1
- package/cjs/CookieConstants-000427db.js +0 -10
- package/cjs/CookieConstants-000427db.js.map +0 -1
- package/cjs/RouteLoader-c06dccd5.js.map +0 -1
- package/cjs/ToJs-a8d8f3f0.js.map +0 -1
- package/cjs/_commonjsHelpers-b3309d7b.js.map +0 -1
- package/cjs/forms.js +0 -5998
- package/cjs/forms.js.map +0 -1
- package/cjs/reducers-73a03ef4.js +0 -257
- package/cjs/reducers-73a03ef4.js.map +0 -1
- package/cjs/sagas-570f23ba.js +0 -2175
- package/cjs/sagas-570f23ba.js.map +0 -1
- package/cjs/selectors-14caa813.js +0 -228
- package/cjs/selectors-14caa813.js.map +0 -1
- package/cjs/version-34d91f68.js.map +0 -1
- package/esm/App-83107d7e.js.map +0 -1
- package/esm/ChangePassword.container-76fd5e9b.js.map +0 -1
- package/esm/ContensisDeliveryApi-fe57a037.js.map +0 -1
- package/esm/CookieConstants-3d3b6531.js +0 -6
- package/esm/CookieConstants-3d3b6531.js.map +0 -1
- package/esm/RouteLoader-29fd689a.js.map +0 -1
- package/esm/ToJs-df57f31d.js.map +0 -1
- package/esm/_commonjsHelpers-1789f0cf.js.map +0 -1
- package/esm/forms.js +0 -5984
- package/esm/forms.js.map +0 -1
- package/esm/reducers-aa8cef1e.js +0 -234
- package/esm/reducers-aa8cef1e.js.map +0 -1
- package/esm/sagas-07e82e18.js +0 -2083
- package/esm/sagas-07e82e18.js.map +0 -1
- package/esm/selectors-691caf02.js +0 -186
- package/esm/selectors-691caf02.js.map +0 -1
- package/esm/version-3d9911e2.js.map +0 -1
- package/models/forms/index.d.ts +0 -1
- package/models/routing/routes.d.ts +0 -133
package/cjs/search.js
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var React = require('react');
|
|
6
4
|
var reactRedux = require('react-redux');
|
|
7
|
-
var sagas = require('./sagas-
|
|
8
|
-
require('jsonpath-mapper');
|
|
5
|
+
var sagas = require('./sagas-CbZhaRNd.js');
|
|
9
6
|
var reselect = require('reselect');
|
|
10
|
-
var merge = require('deepmerge');
|
|
11
|
-
require('query-string');
|
|
12
7
|
var immer = require('immer');
|
|
13
8
|
var equals = require('deep-equal');
|
|
14
|
-
require('
|
|
9
|
+
var merge = require('deepmerge');
|
|
15
10
|
require('loglevel');
|
|
16
11
|
require('@redux-saga/core/effects');
|
|
17
12
|
require('contensis-delivery-api');
|
|
13
|
+
require('query-string');
|
|
14
|
+
require('jsonpath-mapper');
|
|
15
|
+
require('contensis-core-api');
|
|
16
|
+
require('./_commonjsHelpers-BJu3ubxk.js');
|
|
18
17
|
|
|
19
|
-
function
|
|
18
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
19
|
|
|
21
|
-
var React__default = /*#__PURE__*/
|
|
22
|
-
var
|
|
23
|
-
var
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
21
|
+
var equals__default = /*#__PURE__*/_interopDefault(equals);
|
|
22
|
+
var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
24
23
|
|
|
25
|
-
/* eslint-disable
|
|
24
|
+
/* eslint-disable react/display-name */
|
|
26
25
|
const toJS = WrappedComponent => wrappedComponentProps => {
|
|
27
26
|
const KEY = 0;
|
|
28
27
|
const VALUE = 1;
|
|
@@ -32,18 +31,14 @@ const toJS = WrappedComponent => wrappedComponentProps => {
|
|
|
32
31
|
newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
|
|
33
32
|
return newProps;
|
|
34
33
|
}, {});
|
|
35
|
-
return /*#__PURE__*/React__default
|
|
34
|
+
return /*#__PURE__*/React__default.default.createElement(WrappedComponent, propsJS);
|
|
36
35
|
};
|
|
37
36
|
|
|
38
|
-
// eslint-disable-next-line import/default
|
|
39
|
-
|
|
40
37
|
const withSearch = mappers => SearchComponent => {
|
|
41
38
|
const Wrapper = props => {
|
|
42
|
-
return /*#__PURE__*/React__default
|
|
39
|
+
return /*#__PURE__*/React__default.default.createElement(SearchComponent, props);
|
|
43
40
|
};
|
|
44
|
-
|
|
45
41
|
Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
|
|
46
|
-
|
|
47
42
|
const mapStateToProps = state => {
|
|
48
43
|
return {
|
|
49
44
|
currentFacet: sagas.getCurrentFacet(state),
|
|
@@ -70,7 +65,6 @@ const withSearch = mappers => SearchComponent => {
|
|
|
70
65
|
totalCount: sagas.getTotalCount(state)
|
|
71
66
|
};
|
|
72
67
|
};
|
|
73
|
-
|
|
74
68
|
const mapDispatchToProps = {
|
|
75
69
|
clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
|
|
76
70
|
updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
|
|
@@ -85,13 +79,10 @@ const withSearch = mappers => SearchComponent => {
|
|
|
85
79
|
return connector(toJS(Wrapper));
|
|
86
80
|
};
|
|
87
81
|
|
|
88
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
89
|
-
|
|
90
82
|
const withListing = mappers => ListingComponent => {
|
|
91
83
|
const Wrapper = props => {
|
|
92
|
-
return /*#__PURE__*/React__default
|
|
84
|
+
return /*#__PURE__*/React__default.default.createElement(ListingComponent, props);
|
|
93
85
|
};
|
|
94
|
-
|
|
95
86
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
96
87
|
const {
|
|
97
88
|
getCurrent,
|
|
@@ -106,7 +97,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
106
97
|
getSearchTerm,
|
|
107
98
|
getSelectedFilters
|
|
108
99
|
} = sagas.selectListing;
|
|
109
|
-
|
|
110
100
|
const mapStateToProps = state => {
|
|
111
101
|
return {
|
|
112
102
|
currentListing: getCurrent(state),
|
|
@@ -125,7 +115,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
125
115
|
}, 'dynamicOrderBy', [])
|
|
126
116
|
};
|
|
127
117
|
};
|
|
128
|
-
|
|
129
118
|
const mapDispatchToProps = {
|
|
130
119
|
clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
|
|
131
120
|
updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
|
|
@@ -138,201 +127,6 @@ const withListing = mappers => ListingComponent => {
|
|
|
138
127
|
return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
|
|
139
128
|
};
|
|
140
129
|
|
|
141
|
-
var defaultMappers = {
|
|
142
|
-
results: entries => entries,
|
|
143
|
-
navigate: sagas.mapStateToSearchUri
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
const {
|
|
147
|
-
getCurrent: getCurrent$1,
|
|
148
|
-
getCurrentTab,
|
|
149
|
-
getFacet,
|
|
150
|
-
getFacetsTotalCount,
|
|
151
|
-
getFacetTitles,
|
|
152
|
-
getFeaturedResults: getFeaturedResults$1,
|
|
153
|
-
getIsLoading: getIsLoading$1,
|
|
154
|
-
getPageIndex: getPageIndex$1,
|
|
155
|
-
getPageIsLoading: getPageIsLoading$1,
|
|
156
|
-
getQueryParameter: getQueryParameter$1,
|
|
157
|
-
getRenderableFilters: getRenderableFilters$1,
|
|
158
|
-
getSearchTerm: getSearchTerm$1,
|
|
159
|
-
getSearchTotalCount,
|
|
160
|
-
getTabFacets,
|
|
161
|
-
getTabsAndFacets,
|
|
162
|
-
getTotalCount
|
|
163
|
-
} = sagas.selectFacets;
|
|
164
|
-
|
|
165
|
-
const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
166
|
-
currentFacet: getCurrent$1(state),
|
|
167
|
-
currentPageIndex: getPageIndex$1(state),
|
|
168
|
-
currentTabIndex: getCurrentTab(state),
|
|
169
|
-
facet: getFacet(state),
|
|
170
|
-
facetTitles: getFacetTitles(state),
|
|
171
|
-
facets: getTabFacets(state),
|
|
172
|
-
facetsTotalCount: getFacetsTotalCount(state),
|
|
173
|
-
featured: getFeaturedResults$1(state),
|
|
174
|
-
filters: getRenderableFilters$1(state),
|
|
175
|
-
isLoading: getIsLoading$1(state),
|
|
176
|
-
pageIsLoading: getPageIsLoading$1(state),
|
|
177
|
-
paging: sagas.getPaging(state, '', sagas.Context.facets, 'js'),
|
|
178
|
-
results: sagas.getResults(state, '', sagas.Context.facets, 'js'),
|
|
179
|
-
resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
|
|
180
|
-
searchTerm: getSearchTerm$1(state),
|
|
181
|
-
searchTotalCount: getSearchTotalCount(state),
|
|
182
|
-
selectedFilters: sagas.getSelectedFilters(state, '', sagas.Context.facets, 'js'),
|
|
183
|
-
sortOrder: getQueryParameter$1({
|
|
184
|
-
state
|
|
185
|
-
}, 'dynamicOrderBy', []),
|
|
186
|
-
tabsAndFacets: getTabsAndFacets(state),
|
|
187
|
-
totalCount: getTotalCount(state)
|
|
188
|
-
}));
|
|
189
|
-
|
|
190
|
-
const useFacets = ({
|
|
191
|
-
mappers
|
|
192
|
-
} = {
|
|
193
|
-
id: ''
|
|
194
|
-
}) => {
|
|
195
|
-
const dispatch = reactRedux.useDispatch();
|
|
196
|
-
const m = mappers || defaultMappers;
|
|
197
|
-
const selectListingProps = React.useMemo(makeSelectFacetsProps, [m]);
|
|
198
|
-
const dispatchProps = {
|
|
199
|
-
clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
|
|
200
|
-
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
201
|
-
updateCurrentTab: id => sagas.withMappers(sagas.updateCurrentTab(id), m),
|
|
202
|
-
updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
|
|
203
|
-
updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
|
|
204
|
-
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
205
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
206
|
-
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
207
|
-
};
|
|
208
|
-
const {
|
|
209
|
-
currentFacet,
|
|
210
|
-
currentPageIndex,
|
|
211
|
-
currentTabIndex,
|
|
212
|
-
facet,
|
|
213
|
-
facets,
|
|
214
|
-
facetsTotalCount,
|
|
215
|
-
facetTitles,
|
|
216
|
-
featured,
|
|
217
|
-
filters,
|
|
218
|
-
isLoading,
|
|
219
|
-
paging,
|
|
220
|
-
pageIsLoading,
|
|
221
|
-
results,
|
|
222
|
-
resultsInfo,
|
|
223
|
-
searchTerm,
|
|
224
|
-
searchTotalCount,
|
|
225
|
-
selectedFilters,
|
|
226
|
-
sortOrder,
|
|
227
|
-
tabsAndFacets,
|
|
228
|
-
totalCount
|
|
229
|
-
} = reactRedux.useSelector(state => selectListingProps(state, m));
|
|
230
|
-
return {
|
|
231
|
-
currentFacet,
|
|
232
|
-
currentPageIndex,
|
|
233
|
-
currentTabIndex,
|
|
234
|
-
facet,
|
|
235
|
-
facets,
|
|
236
|
-
facetsTotalCount,
|
|
237
|
-
facetTitles,
|
|
238
|
-
featured,
|
|
239
|
-
filters,
|
|
240
|
-
isLoading,
|
|
241
|
-
paging,
|
|
242
|
-
pageIsLoading,
|
|
243
|
-
results,
|
|
244
|
-
resultsInfo,
|
|
245
|
-
searchTerm,
|
|
246
|
-
searchTotalCount,
|
|
247
|
-
selectedFilters,
|
|
248
|
-
sortOrder,
|
|
249
|
-
tabsAndFacets,
|
|
250
|
-
totalCount,
|
|
251
|
-
...dispatchProps
|
|
252
|
-
};
|
|
253
|
-
};
|
|
254
|
-
|
|
255
|
-
const {
|
|
256
|
-
getCurrent,
|
|
257
|
-
getFeaturedResults,
|
|
258
|
-
getIsLoading,
|
|
259
|
-
getListing,
|
|
260
|
-
getPageIndex,
|
|
261
|
-
getPageIsLoading,
|
|
262
|
-
getQueryParameter,
|
|
263
|
-
getRenderableFilters,
|
|
264
|
-
getSearchTerm
|
|
265
|
-
} = sagas.selectListing;
|
|
266
|
-
|
|
267
|
-
const makeSelectListingProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
268
|
-
currentListing: getCurrent(state),
|
|
269
|
-
currentPageIndex: getPageIndex(state),
|
|
270
|
-
listing: getListing(state),
|
|
271
|
-
featured: getFeaturedResults(state),
|
|
272
|
-
filters: getRenderableFilters(state),
|
|
273
|
-
isLoading: getIsLoading(state),
|
|
274
|
-
pageIsLoading: getPageIsLoading(state),
|
|
275
|
-
paging: sagas.getPaging(state, '', sagas.Context.listings, 'js'),
|
|
276
|
-
results: sagas.getResults(state, '', sagas.Context.listings, 'js'),
|
|
277
|
-
resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
|
|
278
|
-
searchTerm: getSearchTerm(state),
|
|
279
|
-
selectedFilters: sagas.getSelectedFilters(state, '', sagas.Context.listings, 'js'),
|
|
280
|
-
sortOrder: getQueryParameter({
|
|
281
|
-
state
|
|
282
|
-
}, 'dynamicOrderBy', [])
|
|
283
|
-
}));
|
|
284
|
-
|
|
285
|
-
const useListing = ({
|
|
286
|
-
mappers
|
|
287
|
-
} = {
|
|
288
|
-
id: ''
|
|
289
|
-
}) => {
|
|
290
|
-
const dispatch = reactRedux.useDispatch();
|
|
291
|
-
const m = mappers || defaultMappers;
|
|
292
|
-
const selectListingProps = React.useMemo(makeSelectListingProps, [m]);
|
|
293
|
-
const dispatchProps = {
|
|
294
|
-
clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
|
|
295
|
-
updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
|
|
296
|
-
updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
|
|
297
|
-
updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
|
|
298
|
-
updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
|
|
299
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
|
|
300
|
-
updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
|
|
301
|
-
};
|
|
302
|
-
const {
|
|
303
|
-
currentListing,
|
|
304
|
-
currentPageIndex,
|
|
305
|
-
featured,
|
|
306
|
-
filters,
|
|
307
|
-
isLoading,
|
|
308
|
-
listing,
|
|
309
|
-
paging,
|
|
310
|
-
pageIsLoading,
|
|
311
|
-
results,
|
|
312
|
-
resultsInfo,
|
|
313
|
-
searchTerm,
|
|
314
|
-
selectedFilters,
|
|
315
|
-
sortOrder
|
|
316
|
-
} = reactRedux.useSelector(state => selectListingProps(state, m));
|
|
317
|
-
return {
|
|
318
|
-
currentListing,
|
|
319
|
-
currentPageIndex,
|
|
320
|
-
featured,
|
|
321
|
-
filters,
|
|
322
|
-
isLoading,
|
|
323
|
-
listing,
|
|
324
|
-
pageIsLoading,
|
|
325
|
-
paging,
|
|
326
|
-
results,
|
|
327
|
-
resultsInfo,
|
|
328
|
-
searchTerm,
|
|
329
|
-
selectedFilters,
|
|
330
|
-
sortOrder,
|
|
331
|
-
title: listing.title,
|
|
332
|
-
...dispatchProps
|
|
333
|
-
};
|
|
334
|
-
};
|
|
335
|
-
|
|
336
130
|
const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_, id) => id, (state, id) => id ? {
|
|
337
131
|
facet: sagas.getFacet(state, id, sagas.Context.minilist, 'js'),
|
|
338
132
|
filters: sagas.getFilters(state, id, sagas.Context.minilist, 'js'),
|
|
@@ -341,7 +135,6 @@ const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_
|
|
|
341
135
|
results: sagas.getResults(state, id, sagas.Context.minilist, 'js'),
|
|
342
136
|
searchTerm: sagas.getSearchTerm(state)
|
|
343
137
|
} : null);
|
|
344
|
-
|
|
345
138
|
const useMinilist = ({
|
|
346
139
|
id,
|
|
347
140
|
config,
|
|
@@ -370,7 +163,8 @@ const useMinilist = ({
|
|
|
370
163
|
pagingInfo: {},
|
|
371
164
|
results: [],
|
|
372
165
|
searchTerm: ''
|
|
373
|
-
};
|
|
166
|
+
};
|
|
167
|
+
// useSelector((state: AppState) => ({
|
|
374
168
|
// facet: getFacet(state, id, Context.minilist).toJS(),
|
|
375
169
|
// filters: getFilters(state, id, Context.minilist).toJS(),
|
|
376
170
|
// isLoading: getIsLoading(state, Context.minilist, id),
|
|
@@ -474,12 +268,12 @@ const initialState = searchState;
|
|
|
474
268
|
var schema = /*#__PURE__*/Object.freeze({
|
|
475
269
|
__proto__: null,
|
|
476
270
|
entries: entries,
|
|
271
|
+
filterItem: filterItem,
|
|
272
|
+
filtering: filtering,
|
|
273
|
+
initialState: initialState,
|
|
477
274
|
pagingInfo: pagingInfo,
|
|
478
275
|
searchFacet: searchFacet,
|
|
479
|
-
searchTab: searchTab
|
|
480
|
-
filtering: filtering,
|
|
481
|
-
filterItem: filterItem,
|
|
482
|
-
initialState: initialState
|
|
276
|
+
searchTab: searchTab
|
|
483
277
|
});
|
|
484
278
|
|
|
485
279
|
const addConfigToState = (state, action) => {
|
|
@@ -487,39 +281,35 @@ const addConfigToState = (state, action) => {
|
|
|
487
281
|
context,
|
|
488
282
|
facet,
|
|
489
283
|
config
|
|
490
|
-
} = action;
|
|
491
|
-
|
|
284
|
+
} = action;
|
|
285
|
+
// Adding or changing the config of a single facet, listing or minilist
|
|
492
286
|
if (context && facet && config) {
|
|
493
|
-
state[context][facet] = {
|
|
287
|
+
state[context][facet] = {
|
|
288
|
+
...searchFacet,
|
|
494
289
|
...config
|
|
495
290
|
};
|
|
496
291
|
} else if (config) {
|
|
497
292
|
// Changing the entire search config
|
|
498
|
-
state = {
|
|
293
|
+
state = {
|
|
294
|
+
...config,
|
|
499
295
|
config: initialState.config
|
|
500
296
|
};
|
|
501
297
|
}
|
|
502
|
-
|
|
503
298
|
return state;
|
|
504
299
|
};
|
|
505
|
-
|
|
506
300
|
const generateSearchFacets = (context, config) => {
|
|
507
301
|
const facets = {};
|
|
508
|
-
|
|
509
302
|
if (config) {
|
|
510
303
|
const thisConfig = config[context] || {};
|
|
511
|
-
|
|
512
304
|
if (Object.keys(thisConfig).length > 0) {
|
|
513
305
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
514
|
-
const newFacet = merge__default
|
|
306
|
+
const newFacet = merge__default.default(searchFacet, facet);
|
|
515
307
|
if (!('isDisabled' in facet) || facet.isDisabled !== true) facets[facetName] = newFacet;
|
|
516
308
|
});
|
|
517
309
|
}
|
|
518
310
|
}
|
|
519
|
-
|
|
520
311
|
return facets;
|
|
521
312
|
};
|
|
522
|
-
|
|
523
313
|
const generateFiltersState = ({
|
|
524
314
|
facet,
|
|
525
315
|
params,
|
|
@@ -527,29 +317,31 @@ const generateFiltersState = ({
|
|
|
527
317
|
isCurrentFacet
|
|
528
318
|
}, state) => {
|
|
529
319
|
// Remove filters we know about from params
|
|
530
|
-
const filterParams = {
|
|
320
|
+
const filterParams = {
|
|
321
|
+
...params,
|
|
531
322
|
facet: undefined,
|
|
532
323
|
orderBy: undefined,
|
|
533
324
|
pageIndex: undefined,
|
|
534
325
|
term: undefined
|
|
535
|
-
};
|
|
536
|
-
// so we can start off with isSelected is false
|
|
326
|
+
};
|
|
537
327
|
|
|
328
|
+
// Get any existing filters and normalise the items[]
|
|
329
|
+
// so we can start off with isSelected is false
|
|
538
330
|
let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
|
|
539
331
|
if (isCurrentFacet || filter.isGrouped) {
|
|
540
332
|
var _filter$items;
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
333
|
+
return [key, {
|
|
334
|
+
...filter,
|
|
335
|
+
items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
|
|
336
|
+
...item,
|
|
544
337
|
isSelected: false
|
|
545
338
|
}))
|
|
546
339
|
}];
|
|
547
340
|
}
|
|
548
|
-
|
|
549
341
|
return [key, filter];
|
|
550
342
|
});
|
|
551
|
-
|
|
552
|
-
|
|
343
|
+
const addFilterItem = (filters, paramKey, paramValue) =>
|
|
344
|
+
// Iterate through all filters within the facet,
|
|
553
345
|
// if the paramKey matches the filter key
|
|
554
346
|
// get the existing items list, and see if that filter
|
|
555
347
|
// already exists, if so set isSelected to true,
|
|
@@ -561,47 +353,45 @@ const generateFiltersState = ({
|
|
|
561
353
|
} else {
|
|
562
354
|
const items = filter.items || [];
|
|
563
355
|
const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
|
|
564
|
-
|
|
565
356
|
if (items.length > 0 && itemIndex !== -1) {
|
|
566
357
|
items[itemIndex].isSelected = true;
|
|
567
358
|
} else {
|
|
568
|
-
items.push({
|
|
359
|
+
items.push({
|
|
360
|
+
...filterItem,
|
|
569
361
|
key: paramValue,
|
|
570
362
|
isSelected: true
|
|
571
363
|
});
|
|
572
364
|
}
|
|
573
|
-
|
|
574
|
-
|
|
365
|
+
return [key, {
|
|
366
|
+
...filter,
|
|
575
367
|
items
|
|
576
368
|
}];
|
|
577
369
|
}
|
|
578
|
-
});
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// For each value found in filterParams
|
|
579
373
|
// we are looking to split that value into multiple by any comma
|
|
580
374
|
// and then either set isSelected for an existing filterItem
|
|
581
375
|
// or push an item to the filters.{ key }.items[] array
|
|
582
376
|
// giving it only the key (entry guid) that can be taken to filter
|
|
583
377
|
// the search results during SSR without needing to fetch the filters first
|
|
584
|
-
|
|
585
|
-
|
|
586
378
|
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
587
379
|
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
588
380
|
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
589
381
|
});
|
|
590
382
|
return Object.fromEntries(filters);
|
|
591
383
|
};
|
|
592
|
-
|
|
593
384
|
const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
|
|
594
|
-
|
|
595
385
|
const resetFacet = facet => {
|
|
596
386
|
facet.pagingInfo.pagesLoaded = [];
|
|
597
387
|
facet.pagingInfo.pageIndex = 0;
|
|
598
388
|
facet.queryDuration = 0;
|
|
599
389
|
return facet;
|
|
600
390
|
};
|
|
601
|
-
|
|
602
|
-
var reducers = (config => {
|
|
391
|
+
var reducers = config => {
|
|
603
392
|
// Add facets from SearchConfig to initialState
|
|
604
|
-
const initState = {
|
|
393
|
+
const initState = {
|
|
394
|
+
...initialState,
|
|
605
395
|
tabs: config.tabs,
|
|
606
396
|
facets: generateSearchFacets(sagas.Context.facets, config),
|
|
607
397
|
listings: generateSearchFacets(sagas.Context.listings, config),
|
|
@@ -610,49 +400,46 @@ var reducers = (config => {
|
|
|
610
400
|
return immer.produce((state = initState, action) => {
|
|
611
401
|
const context = state.context;
|
|
612
402
|
const current = context !== 'listings' ? state.currentFacet : state.currentListing;
|
|
613
|
-
|
|
614
403
|
switch (action.type) {
|
|
615
404
|
case sagas.APPLY_CONFIG:
|
|
616
405
|
{
|
|
617
406
|
state = addConfigToState(state, action);
|
|
618
407
|
return state;
|
|
619
408
|
}
|
|
620
|
-
|
|
621
409
|
case sagas.CLEAR_FILTERS:
|
|
622
410
|
{
|
|
623
411
|
const currentFilters = state[context][current].filters;
|
|
624
412
|
state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
|
|
625
413
|
if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
|
|
626
414
|
const filterItems = filter.items || [];
|
|
627
|
-
filter.items = filterItems.map(item => ({
|
|
415
|
+
filter.items = filterItems.map(item => ({
|
|
416
|
+
...item,
|
|
628
417
|
isSelected: false
|
|
629
418
|
}));
|
|
630
419
|
}
|
|
631
|
-
|
|
632
420
|
return [filterKey, filter];
|
|
633
421
|
}));
|
|
634
422
|
state[context][current].queryDuration = 0;
|
|
635
423
|
state[context][current].pagingInfo.pagesLoaded = [];
|
|
636
424
|
return;
|
|
637
425
|
}
|
|
638
|
-
|
|
639
426
|
case sagas.EXECUTE_SEARCH:
|
|
640
427
|
{
|
|
641
|
-
state[action.context][action.facet].entries = {
|
|
428
|
+
state[action.context][action.facet].entries = {
|
|
429
|
+
...(state[action.context][action.facet].entries || entries),
|
|
642
430
|
isLoading: true
|
|
643
431
|
};
|
|
644
432
|
return;
|
|
645
433
|
}
|
|
646
|
-
|
|
647
434
|
case sagas.EXECUTE_SEARCH_ERROR:
|
|
648
435
|
{
|
|
649
|
-
state[action.context][action.facet].entries = {
|
|
436
|
+
state[action.context][action.facet].entries = {
|
|
437
|
+
...entries,
|
|
650
438
|
isError: true,
|
|
651
439
|
error: action.error
|
|
652
440
|
};
|
|
653
441
|
return;
|
|
654
442
|
}
|
|
655
|
-
|
|
656
443
|
case sagas.LOAD_FILTERS:
|
|
657
444
|
{
|
|
658
445
|
const {
|
|
@@ -661,49 +448,48 @@ var reducers = (config => {
|
|
|
661
448
|
} = action;
|
|
662
449
|
const filters = state[action.context][facetKey].filters;
|
|
663
450
|
Object.entries(filters).map(([filterKey, filter]) => {
|
|
664
|
-
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
451
|
+
if (filtersToLoad.find(f => f === filterKey)) return {
|
|
452
|
+
...filter,
|
|
665
453
|
isLoading: true
|
|
666
454
|
};
|
|
667
455
|
return filter;
|
|
668
456
|
});
|
|
669
457
|
state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
|
|
670
|
-
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
458
|
+
if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
|
|
459
|
+
...filter,
|
|
671
460
|
isLoading: true
|
|
672
461
|
}];
|
|
673
462
|
return [filterKey, filter];
|
|
674
463
|
}));
|
|
675
464
|
return;
|
|
676
465
|
}
|
|
677
|
-
|
|
678
466
|
case sagas.LOAD_FILTERS_ERROR:
|
|
679
467
|
case sagas.LOAD_FILTERS_COMPLETE:
|
|
680
468
|
{
|
|
469
|
+
var _nextFilter$items;
|
|
681
470
|
const {
|
|
682
471
|
facetKey,
|
|
683
472
|
filterKey,
|
|
684
473
|
nextFilter
|
|
685
474
|
} = action;
|
|
686
|
-
const
|
|
687
|
-
|
|
688
|
-
if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
|
|
475
|
+
const stateFilter = state[action.context][facetKey].filters[filterKey];
|
|
476
|
+
if (!((_nextFilter$items = nextFilter.items) !== null && _nextFilter$items !== void 0 && _nextFilter$items.length) && (stateFilter.items || []).length >= nextFilter.items.length) {
|
|
689
477
|
// Preserve items already in state
|
|
690
|
-
state[action.context][facetKey].filters[filterKey] = {
|
|
478
|
+
state[action.context][facetKey].filters[filterKey] = {
|
|
479
|
+
...stateFilter,
|
|
691
480
|
isLoading: false,
|
|
692
481
|
isError: nextFilter.isError
|
|
693
482
|
};
|
|
694
483
|
return;
|
|
695
484
|
}
|
|
696
|
-
|
|
697
|
-
state[action.context][facetKey].filters[filterKey] = merge__default["default"](filter, nextFilter, {
|
|
485
|
+
state[action.context][facetKey].filters[filterKey] = merge__default.default(stateFilter, nextFilter, {
|
|
698
486
|
arrayMerge: (source, inbound) => inbound
|
|
699
487
|
});
|
|
700
488
|
return;
|
|
701
489
|
}
|
|
702
|
-
|
|
703
490
|
case sagas.SET_ROUTE_FILTERS:
|
|
704
491
|
{
|
|
705
492
|
var _state$context$facet$;
|
|
706
|
-
|
|
707
493
|
const {
|
|
708
494
|
facet,
|
|
709
495
|
params,
|
|
@@ -716,14 +502,16 @@ var reducers = (config => {
|
|
|
716
502
|
orderBy
|
|
717
503
|
} = params;
|
|
718
504
|
const stateTerm = state.term;
|
|
719
|
-
const tabId = state[context][facet].tabId || 0;
|
|
720
|
-
// the filters have changed
|
|
505
|
+
const tabId = state[context][facet].tabId || 0;
|
|
721
506
|
|
|
507
|
+
// Reset the facet if the search term has changed, or if the any of
|
|
508
|
+
// the filters have changed
|
|
722
509
|
const resetAllFacets = stateTerm && term !== stateTerm;
|
|
723
|
-
let resetCurrentFacet = false;
|
|
510
|
+
let resetCurrentFacet = false;
|
|
511
|
+
|
|
512
|
+
// Add filter values in params to the matched filters in state for the current facet
|
|
724
513
|
// causing unfetched filter items to be generated with isSelected: true
|
|
725
514
|
// or existing filter items to be tagged with isSelected: true
|
|
726
|
-
|
|
727
515
|
const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
|
|
728
516
|
const isCurrentFacet = facetName === facet;
|
|
729
517
|
const nextFilters = generateFiltersState({
|
|
@@ -732,7 +520,7 @@ var reducers = (config => {
|
|
|
732
520
|
context,
|
|
733
521
|
isCurrentFacet
|
|
734
522
|
}, state);
|
|
735
|
-
resetCurrentFacet = state.config.isLoaded === true && !equals__default
|
|
523
|
+
resetCurrentFacet = state.config.isLoaded === true && !equals__default.default(nextFilters, stateFacet.filters);
|
|
736
524
|
stateFacet = resetCurrentFacet ? resetFacet(stateFacet) : stateFacet;
|
|
737
525
|
stateFacet.filters = nextFilters;
|
|
738
526
|
stateFacet.queryParams.dynamicOrderBy = sagas.toArray(orderBy) || [];
|
|
@@ -743,7 +531,8 @@ var reducers = (config => {
|
|
|
743
531
|
state[action.context === sagas.Context.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
744
532
|
state.term = term;
|
|
745
533
|
state.tabs[tabId].currentFacet = facet;
|
|
746
|
-
state[context][facet].pagingInfo = {
|
|
534
|
+
state[context][facet].pagingInfo = {
|
|
535
|
+
...(state[context][facet].pagingInfo || pagingInfo),
|
|
747
536
|
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
537
|
pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
|
|
749
538
|
};
|
|
@@ -752,30 +541,48 @@ var reducers = (config => {
|
|
|
752
541
|
if (resetAllFacets) state[context] = resetFacets(state, context);
|
|
753
542
|
return;
|
|
754
543
|
}
|
|
755
|
-
|
|
756
544
|
case sagas.SET_SEARCH_ENTRIES:
|
|
757
545
|
{
|
|
758
546
|
const thisContext = action.context || context;
|
|
759
547
|
const currentFacet = state[thisContext][action.facet];
|
|
760
|
-
|
|
548
|
+
|
|
549
|
+
// // Handle aggregations client-side where the filter items have loaded before the results containing the aggregations
|
|
550
|
+
// for (const [filterKey, filter] of Object.entries(
|
|
551
|
+
// currentFacet.filters
|
|
552
|
+
// )) {
|
|
553
|
+
// const aggregation = (action.nextFacet as Partial<Facet>)
|
|
554
|
+
// .aggregations?.[convertKeyForAggregation(filterKey)];
|
|
555
|
+
|
|
556
|
+
// for (const filterItem of filter.items || []) {
|
|
557
|
+
// if (!aggregation) delete filterItem.aggregate;
|
|
558
|
+
// else {
|
|
559
|
+
// const aggregate = aggregation[filterItem.key.toLowerCase()];
|
|
560
|
+
// if (typeof aggregate === 'number')
|
|
561
|
+
// filterItem.aggregate = aggregate;
|
|
562
|
+
// else delete filterItem.aggregate;
|
|
563
|
+
// }
|
|
564
|
+
// }
|
|
565
|
+
// }
|
|
566
|
+
|
|
567
|
+
state[thisContext][action.facet] = merge__default.default(currentFacet, action.nextFacet, {
|
|
761
568
|
arrayMerge: (source, inbound) => inbound
|
|
762
569
|
});
|
|
763
570
|
return;
|
|
764
571
|
}
|
|
765
|
-
|
|
766
572
|
case sagas.SET_SEARCH_FILTERS:
|
|
767
573
|
{
|
|
768
574
|
var _action$params;
|
|
769
|
-
|
|
770
575
|
// DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
|
|
771
576
|
// for example in a minilist scenario where the route filters
|
|
772
577
|
// are used for the primary page / listing navigation
|
|
578
|
+
|
|
773
579
|
// Add filter values in params to the matched filters in state
|
|
774
580
|
// causing unfetched filter items to be generated with isSelected: true
|
|
775
|
-
const filters = generateFiltersState({
|
|
581
|
+
const filters = generateFiltersState({
|
|
582
|
+
...action,
|
|
776
583
|
isCurrentFacet: true
|
|
777
584
|
}, state);
|
|
778
|
-
const term = action === null || action === void 0
|
|
585
|
+
const term = action === null || action === void 0 || (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
779
586
|
const useSearchTerm = state[action.context || sagas.Context.minilist][action.facet].queryParams.useSearchTerm || false;
|
|
780
587
|
state[action.context || sagas.Context.minilist][action.facet].filters = filters;
|
|
781
588
|
state[action.context || sagas.Context.minilist][action.facet].queryParams.excludeIds = action.excludeIds;
|
|
@@ -783,7 +590,6 @@ var reducers = (config => {
|
|
|
783
590
|
state.config.ssr = typeof window === 'undefined';
|
|
784
591
|
return;
|
|
785
592
|
}
|
|
786
|
-
|
|
787
593
|
case sagas.UPDATE_PAGE_INDEX:
|
|
788
594
|
{
|
|
789
595
|
const {
|
|
@@ -798,7 +604,6 @@ var reducers = (config => {
|
|
|
798
604
|
state[context][current].queryDuration = 0;
|
|
799
605
|
return;
|
|
800
606
|
}
|
|
801
|
-
|
|
802
607
|
case sagas.UPDATE_PAGE_SIZE:
|
|
803
608
|
{
|
|
804
609
|
const {
|
|
@@ -810,14 +615,12 @@ var reducers = (config => {
|
|
|
810
615
|
state[context][current].queryDuration = 0;
|
|
811
616
|
return;
|
|
812
617
|
}
|
|
813
|
-
|
|
814
618
|
case sagas.UPDATE_SEARCH_TERM:
|
|
815
619
|
{
|
|
816
620
|
state.term = action.term;
|
|
817
621
|
state[context] = resetFacets(state, context);
|
|
818
622
|
return;
|
|
819
623
|
}
|
|
820
|
-
|
|
821
624
|
case sagas.UPDATE_SELECTED_FILTERS:
|
|
822
625
|
{
|
|
823
626
|
const {
|
|
@@ -830,29 +633,27 @@ var reducers = (config => {
|
|
|
830
633
|
const currentItems = state[context][current].filters[filter].items;
|
|
831
634
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
832
635
|
state[context][current] = resetFacet(state[context][current]);
|
|
833
|
-
|
|
834
636
|
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
835
|
-
currentItems === null || currentItems === void 0
|
|
637
|
+
currentItems === null || currentItems === void 0 || currentItems.push({
|
|
836
638
|
key,
|
|
837
639
|
isSelected: false
|
|
838
640
|
});
|
|
839
641
|
}
|
|
840
|
-
|
|
841
642
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
842
643
|
if (item.key === key) {
|
|
843
|
-
return {
|
|
644
|
+
return {
|
|
645
|
+
...item,
|
|
844
646
|
isSelected: !item.isSelected
|
|
845
647
|
};
|
|
846
648
|
}
|
|
847
|
-
|
|
848
|
-
|
|
649
|
+
if (isSingleSelect) return {
|
|
650
|
+
...item,
|
|
849
651
|
isSelected: false
|
|
850
652
|
};
|
|
851
653
|
return item;
|
|
852
654
|
});
|
|
853
655
|
return;
|
|
854
656
|
}
|
|
855
|
-
|
|
856
657
|
case sagas.UPDATE_SORT_ORDER:
|
|
857
658
|
{
|
|
858
659
|
const {
|
|
@@ -864,12 +665,11 @@ var reducers = (config => {
|
|
|
864
665
|
state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? sagas.toArray(orderBy) || [] : [];
|
|
865
666
|
return;
|
|
866
667
|
}
|
|
867
|
-
|
|
868
668
|
default:
|
|
869
669
|
return;
|
|
870
670
|
}
|
|
871
671
|
}, initState);
|
|
872
|
-
}
|
|
672
|
+
};
|
|
873
673
|
|
|
874
674
|
const Context = {
|
|
875
675
|
facets: 'facets',
|
|
@@ -889,11 +689,11 @@ exports.triggerListingSsr = sagas.triggerListingSsr;
|
|
|
889
689
|
exports.triggerMinilistSsr = sagas.triggerMinilistSsr;
|
|
890
690
|
exports.triggerSearchSsr = sagas.triggerSearchSsr;
|
|
891
691
|
exports.types = sagas.types;
|
|
692
|
+
exports.useFacets = sagas.useFacets;
|
|
693
|
+
exports.useListing = sagas.useListing;
|
|
892
694
|
exports.Context = Context;
|
|
893
695
|
exports.reducer = reducers;
|
|
894
696
|
exports.schema = schema;
|
|
895
|
-
exports.useFacets = useFacets;
|
|
896
|
-
exports.useListing = useListing;
|
|
897
697
|
exports.useMinilist = useMinilist;
|
|
898
698
|
exports.withListing = withListing;
|
|
899
699
|
exports.withSearch = withSearch;
|