@zengenti/contensis-react-base 3.0.0-beta.3 → 3.0.0-beta.33
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/README.md +4 -4
- package/cjs/{App-581b6653.js → App-b681e8eb.js} +139 -124
- package/cjs/App-b681e8eb.js.map +1 -0
- package/cjs/{RouteLoader-282c03ab.js → RouteLoader-2ed14766.js} +44 -30
- package/cjs/RouteLoader-2ed14766.js.map +1 -0
- package/cjs/ToJs-09204afd.js +129 -0
- package/cjs/ToJs-09204afd.js.map +1 -0
- package/cjs/{actions-12871aca.js → actions-6b9ef168.js} +9 -8
- package/cjs/actions-6b9ef168.js.map +1 -0
- package/cjs/client.js +43 -22
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +42 -46
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +275 -275
- package/cjs/forms.js.map +1 -1
- package/cjs/fromJSLeaveImmer-65d26804.js +28 -0
- package/cjs/fromJSLeaveImmer-65d26804.js.map +1 -0
- package/cjs/{login-81d7f9ef.js → login-d67b82aa.js} +113 -79
- package/cjs/login-d67b82aa.js.map +1 -0
- package/cjs/{reducers-fde41d6b.js → reducers-3a4f8971.js} +26 -25
- package/cjs/reducers-3a4f8971.js.map +1 -0
- package/cjs/redux.js +13 -14
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +9 -8
- package/cjs/routing.js.map +1 -1
- package/cjs/search.js +228 -164
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-ed26ed97.js → selectors-2c1b1183.js} +8 -4
- package/cjs/selectors-2c1b1183.js.map +1 -0
- package/cjs/user.js +32 -23
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +48 -45
- package/cjs/util.js.map +1 -1
- package/cjs/{version-f061e409.js → version-7c4ce67e.js} +58 -52
- package/cjs/version-7c4ce67e.js.map +1 -0
- package/cjs/{version-0c190929.js → version-dcfdafd9.js} +5 -5
- package/cjs/{version-0c190929.js.map → version-dcfdafd9.js.map} +1 -1
- package/esm/{App-122f28a3.js → App-c9e818ab.js} +120 -124
- package/esm/App-c9e818ab.js.map +1 -0
- package/esm/{RouteLoader-c2faac87.js → RouteLoader-d4b4d320.js} +37 -23
- package/esm/RouteLoader-d4b4d320.js.map +1 -0
- package/esm/ToJs-2627ce21.js +99 -0
- package/esm/ToJs-2627ce21.js.map +1 -0
- package/esm/{actions-3cc39599.js → actions-5437f43d.js} +8 -7
- package/esm/actions-5437f43d.js.map +1 -0
- package/esm/client.js +22 -20
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +24 -28
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +5 -5
- package/esm/forms.js.map +1 -1
- package/esm/fromJSLeaveImmer-e2f0f331.js +26 -0
- package/esm/fromJSLeaveImmer-e2f0f331.js.map +1 -0
- package/esm/{login-92db44d1.js → login-f6dfbe1b.js} +97 -60
- package/esm/login-f6dfbe1b.js.map +1 -0
- package/esm/{reducers-d6c0edb1.js → reducers-8e5d6232.js} +26 -25
- package/esm/reducers-8e5d6232.js.map +1 -0
- package/esm/redux.js +14 -13
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +9 -8
- package/esm/routing.js.map +1 -1
- package/esm/search.js +198 -152
- package/esm/search.js.map +1 -1
- package/esm/{selectors-82e71d8e.js → selectors-65f0f31c.js} +9 -6
- package/esm/selectors-65f0f31c.js.map +1 -0
- package/esm/user.js +31 -22
- package/esm/user.js.map +1 -1
- package/esm/util.js +17 -10
- package/esm/util.js.map +1 -1
- package/esm/version-696796d7.js +15 -0
- package/esm/{version-59c8f9be.js.map → version-696796d7.js.map} +1 -1
- package/esm/{version-cb9cd09d.js → version-e6a545e1.js} +38 -31
- package/esm/version-e6a545e1.js.map +1 -0
- package/models/redux/appstate.d.ts +5 -10
- package/models/redux/reducers/navigation.d.ts +1 -6
- package/models/redux/reducers/version.d.ts +1 -5
- package/models/redux/selectors/navigation.d.ts +2 -1
- package/models/routing/redux/actions.d.ts +1 -1
- package/models/routing/redux/reducers.d.ts +1 -21
- package/models/routing/redux/selectors.d.ts +1 -1
- package/models/routing/routes.d.ts +3 -2
- package/models/routing/util/expressions.d.ts +3 -2
- package/models/routing/util/queries.d.ts +1 -1
- package/models/search/models/Queries.d.ts +8 -5
- package/models/search/models/Search.d.ts +9 -8
- package/models/search/models/SearchActions.d.ts +1 -0
- package/models/search/models/SearchState.d.ts +3 -0
- package/models/search/models/index.d.ts +3 -2
- package/models/search/redux/actions.d.ts +2 -1
- package/models/search/redux/reducers.d.ts +226 -314
- package/models/search/redux/sagas.d.ts +2 -2
- package/models/search/redux/selectors.d.ts +5 -10
- package/models/search/search/expressions.d.ts +2 -6
- package/models/search/transformations/filter-to-filterexpression.mapper.d.ts +6 -0
- package/models/search/transformations/filters-to-filterexpressions.mapper.d.ts +3 -0
- package/models/server/util/headers.d.ts +3 -2
- package/models/testImmer/redux/reducer.d.ts +1 -7
- package/models/user/components/Login.d.ts +1 -2
- package/models/user/components/LoginForm.d.ts +1 -2
- package/models/user/hocs/withLogin.d.ts +2 -2
- package/models/user/hooks/useChangePassword.d.ts +5 -5
- package/models/user/hooks/useForgotPassword.d.ts +6 -6
- package/models/user/hooks/useLogin.d.ts +9 -45
- package/models/user/hooks/useRegistration.d.ts +4 -4
- package/models/user/redux/reducers.d.ts +5 -32
- package/models/user/redux/sagas/login.d.ts +11 -8
- package/models/user/redux/selectors.d.ts +33 -71
- package/models/user/util/LoginHelper.class.d.ts +4 -3
- package/models/util/json-mapper.d.ts +9 -3
- package/models/util/merge.d.ts +1 -0
- package/package-lock.json +2006 -4796
- package/package.json +47 -48
- package/cjs/App-581b6653.js.map +0 -1
- package/cjs/RouteLoader-282c03ab.js.map +0 -1
- package/cjs/ToJs-87edc45d.js +0 -230
- package/cjs/ToJs-87edc45d.js.map +0 -1
- package/cjs/actions-12871aca.js.map +0 -1
- package/cjs/fromJSLeaveImmer-9b550c8e.js +0 -40
- package/cjs/fromJSLeaveImmer-9b550c8e.js.map +0 -1
- package/cjs/login-81d7f9ef.js.map +0 -1
- package/cjs/reducers-fde41d6b.js.map +0 -1
- package/cjs/selectors-ed26ed97.js.map +0 -1
- package/cjs/version-f061e409.js.map +0 -1
- package/esm/App-122f28a3.js.map +0 -1
- package/esm/RouteLoader-c2faac87.js.map +0 -1
- package/esm/ToJs-52fee252.js +0 -199
- package/esm/ToJs-52fee252.js.map +0 -1
- package/esm/actions-3cc39599.js.map +0 -1
- package/esm/fromJSLeaveImmer-e44d1a91.js +0 -38
- package/esm/fromJSLeaveImmer-e44d1a91.js.map +0 -1
- package/esm/login-92db44d1.js.map +0 -1
- package/esm/reducers-d6c0edb1.js.map +0 -1
- package/esm/selectors-82e71d8e.js.map +0 -1
- package/esm/version-59c8f9be.js +0 -15
- package/esm/version-cb9cd09d.js.map +0 -1
- package/models/search/transformations/filters-to-filterexpression.d.ts +0 -1
- package/models/search/transformations/filters-to-filterexpression.mapper.d.ts +0 -2
- package/models/server/features/caching/cacheHashing.d.ts +0 -1
package/cjs/search.js
CHANGED
|
@@ -5,26 +5,44 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var reactRedux = require('react-redux');
|
|
7
7
|
var mapJson = require('jsonpath-mapper');
|
|
8
|
-
var
|
|
8
|
+
var log = require('loglevel');
|
|
9
9
|
var effects = require('@redux-saga/core/effects');
|
|
10
10
|
var contensisDeliveryApi = require('contensis-delivery-api');
|
|
11
11
|
var queryString = require('query-string');
|
|
12
|
-
var log = require('loglevel');
|
|
13
|
-
var reselect = require('reselect');
|
|
14
12
|
var contensisCoreApi = require('contensis-core-api');
|
|
15
13
|
var merge = require('deepmerge');
|
|
14
|
+
var reselect = require('reselect');
|
|
15
|
+
var immer = require('immer');
|
|
16
16
|
var equals = require('deep-equal');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
19
|
|
|
20
|
+
function _interopNamespace(e) {
|
|
21
|
+
if (e && e.__esModule) return e;
|
|
22
|
+
var n = Object.create(null);
|
|
23
|
+
if (e) {
|
|
24
|
+
Object.keys(e).forEach(function (k) {
|
|
25
|
+
if (k !== 'default') {
|
|
26
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
27
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () { return e[k]; }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
n["default"] = e;
|
|
35
|
+
return Object.freeze(n);
|
|
36
|
+
}
|
|
37
|
+
|
|
20
38
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
39
|
var mapJson__default = /*#__PURE__*/_interopDefaultLegacy(mapJson);
|
|
22
|
-
var
|
|
40
|
+
var log__namespace = /*#__PURE__*/_interopNamespace(log);
|
|
23
41
|
var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
|
|
24
42
|
var equals__default = /*#__PURE__*/_interopDefaultLegacy(equals);
|
|
25
43
|
|
|
26
44
|
/* eslint-disable import/default */
|
|
27
|
-
const toJS = WrappedComponent => wrappedComponentProps => {
|
|
45
|
+
const toJS$1 = WrappedComponent => wrappedComponentProps => {
|
|
28
46
|
const KEY = 0;
|
|
29
47
|
const VALUE = 1;
|
|
30
48
|
const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
|
|
@@ -33,7 +51,7 @@ const toJS = WrappedComponent => wrappedComponentProps => {
|
|
|
33
51
|
newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
|
|
34
52
|
return newProps;
|
|
35
53
|
}, {});
|
|
36
|
-
return /*#__PURE__*/React__default[
|
|
54
|
+
return /*#__PURE__*/React__default["default"].createElement(WrappedComponent, propsJS);
|
|
37
55
|
};
|
|
38
56
|
|
|
39
57
|
const ACTION_PREFIX = '@SEARCH/';
|
|
@@ -133,43 +151,44 @@ const navigate = (path, state) => {
|
|
|
133
151
|
state
|
|
134
152
|
};
|
|
135
153
|
};
|
|
136
|
-
const clearFilters = () => {
|
|
154
|
+
const clearFilters$1 = () => {
|
|
137
155
|
return {
|
|
138
156
|
type: CLEAR_FILTERS
|
|
139
157
|
};
|
|
140
158
|
};
|
|
141
|
-
const updatePageIndex = pageIndex => {
|
|
159
|
+
const updatePageIndex$1 = pageIndex => {
|
|
142
160
|
return {
|
|
143
161
|
type: UPDATE_PAGE_INDEX,
|
|
144
162
|
pageIndex
|
|
145
163
|
};
|
|
146
164
|
};
|
|
147
|
-
const updateCurrentFacet = facet => {
|
|
165
|
+
const updateCurrentFacet$1 = facet => {
|
|
148
166
|
return {
|
|
149
167
|
type: UPDATE_CURRENT_FACET,
|
|
150
168
|
facet
|
|
151
169
|
};
|
|
152
170
|
};
|
|
153
|
-
const updateCurrentTab = id => {
|
|
171
|
+
const updateCurrentTab$1 = id => {
|
|
154
172
|
return {
|
|
155
173
|
type: UPDATE_CURRENT_TAB,
|
|
156
174
|
id
|
|
157
175
|
};
|
|
158
176
|
};
|
|
159
|
-
const updateSearchTerm = term => {
|
|
177
|
+
const updateSearchTerm$1 = term => {
|
|
160
178
|
return {
|
|
161
179
|
type: UPDATE_SEARCH_TERM,
|
|
162
180
|
term
|
|
163
181
|
};
|
|
164
182
|
};
|
|
165
|
-
const updateSelectedFilters = (filter, key) => {
|
|
183
|
+
const updateSelectedFilters = (filter, key, isUnknownItem = false) => {
|
|
166
184
|
return {
|
|
167
185
|
type: UPDATE_SELECTED_FILTERS,
|
|
168
186
|
filter,
|
|
169
|
-
key
|
|
187
|
+
key,
|
|
188
|
+
isUnknownItem
|
|
170
189
|
};
|
|
171
190
|
};
|
|
172
|
-
const updateSortOrder = (orderBy, facet) => {
|
|
191
|
+
const updateSortOrder$1 = (orderBy, facet) => {
|
|
173
192
|
return {
|
|
174
193
|
type: UPDATE_SORT_ORDER,
|
|
175
194
|
orderBy,
|
|
@@ -183,22 +202,22 @@ var actions = /*#__PURE__*/Object.freeze({
|
|
|
183
202
|
triggerSearch: triggerSearch,
|
|
184
203
|
initListing: initListing,
|
|
185
204
|
navigate: navigate,
|
|
186
|
-
clearFilters: clearFilters,
|
|
187
|
-
updatePageIndex: updatePageIndex,
|
|
188
|
-
updateCurrentFacet: updateCurrentFacet,
|
|
189
|
-
updateCurrentTab: updateCurrentTab,
|
|
190
|
-
updateSearchTerm: updateSearchTerm,
|
|
205
|
+
clearFilters: clearFilters$1,
|
|
206
|
+
updatePageIndex: updatePageIndex$1,
|
|
207
|
+
updateCurrentFacet: updateCurrentFacet$1,
|
|
208
|
+
updateCurrentTab: updateCurrentTab$1,
|
|
209
|
+
updateSearchTerm: updateSearchTerm$1,
|
|
191
210
|
updateSelectedFilters: updateSelectedFilters,
|
|
192
|
-
updateSortOrder: updateSortOrder
|
|
211
|
+
updateSortOrder: updateSortOrder$1
|
|
193
212
|
});
|
|
194
213
|
|
|
195
|
-
let Context; // export type Context = 'facets' | 'listings' | 'minilist';
|
|
214
|
+
let Context$1; // export type Context = 'facets' | 'listings' | 'minilist';
|
|
196
215
|
|
|
197
216
|
(function (Context) {
|
|
198
217
|
Context["facets"] = "facets";
|
|
199
218
|
Context["listings"] = "listings";
|
|
200
219
|
Context["minilist"] = "minilist";
|
|
201
|
-
})(Context || (Context = {}));
|
|
220
|
+
})(Context$1 || (Context$1 = {}));
|
|
202
221
|
|
|
203
222
|
// or replace with a stub function for non-immutable gets
|
|
204
223
|
|
|
@@ -229,12 +248,12 @@ const getImmutableOrJS = (state, stateKey, fallbackValue, returnType = globalThi
|
|
|
229
248
|
return result;
|
|
230
249
|
};
|
|
231
250
|
|
|
232
|
-
const getSearchContext = state => getImmutableOrJS(state, ['search', 'context'], Context.facets);
|
|
233
|
-
const getCurrent = (state, context = Context.facets) => context === Context.facets ? getCurrentFacet(state) : getCurrentListing(state);
|
|
251
|
+
const getSearchContext = state => getImmutableOrJS(state, ['search', 'context'], Context$1.facets);
|
|
252
|
+
const getCurrent = (state, context = Context$1.facets) => context === Context$1.facets ? getCurrentFacet(state) : getCurrentListing(state);
|
|
234
253
|
const getCurrentFacet = state => getImmutableOrJS(state, ['search', 'currentFacet']);
|
|
235
254
|
const getCurrentListing = state => getImmutableOrJS(state, ['search', 'currentListing']);
|
|
236
|
-
const getCurrentTab = state => getImmutableOrJS(state, ['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);
|
|
237
|
-
const getFacets = (state, returnType) => getImmutableOrJS(state, ['search', Context.facets], {}, returnType);
|
|
255
|
+
const getCurrentTab = state => getImmutableOrJS(state, ['search', Context$1.facets, getCurrentFacet(state), 'tabId'], 0);
|
|
256
|
+
const getFacets = (state, returnType) => getImmutableOrJS(state, ['search', Context$1.facets], {}, returnType);
|
|
238
257
|
const getTabFacets = state => Object.fromEntries(Object.entries(getFacets(state, 'js')).filter(([key]) => getImmutableOrJS(getFacets(state), [key, 'tabId'], 0) === getCurrentTab(state)));
|
|
239
258
|
const getFacetTitles = state => Object.entries(getFacets(state, 'js')).map(([key, facet = {}]) => {
|
|
240
259
|
var _facet$pagingInfo;
|
|
@@ -245,19 +264,19 @@ const getFacetTitles = state => Object.entries(getFacets(state, 'js')).map(([key
|
|
|
245
264
|
totalCount: (_facet$pagingInfo = facet.pagingInfo) === null || _facet$pagingInfo === void 0 ? void 0 : _facet$pagingInfo.totalCount
|
|
246
265
|
};
|
|
247
266
|
});
|
|
248
|
-
const getFacet = (state, facetName = '', context = Context.facets, returnType) => {
|
|
267
|
+
const getFacet = (state, facetName = '', context = Context$1.facets, returnType) => {
|
|
249
268
|
const currentFacet = facetName || getCurrentFacet(state);
|
|
250
269
|
return getImmutableOrJS(state, ['search', context, currentFacet], {}, returnType);
|
|
251
270
|
};
|
|
252
271
|
const getListing = (state, listing = '') => {
|
|
253
272
|
const currentListing = listing || getCurrentListing(state);
|
|
254
|
-
return getImmutableOrJS(state, ['search', Context.listings, currentListing], {});
|
|
273
|
+
return getImmutableOrJS(state, ['search', Context$1.listings, currentListing], {});
|
|
255
274
|
};
|
|
256
|
-
const getFilters = (state, facet, context = Context.facets, returnType) => {
|
|
275
|
+
const getFilters = (state, facet, context = Context$1.facets, returnType) => {
|
|
257
276
|
return getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'filters'], {}, returnType);
|
|
258
277
|
};
|
|
259
|
-
const getRenderableFilters = (state, facet = '', context = Context.facets) => Object.fromEntries(Object.entries(getFilters(state, facet, context, 'js')).filter(([, f = {}]) => typeof f.renderable !== 'boolean' ? true : f.renderable));
|
|
260
|
-
const getFiltersToLoad = (state, facet, context = Context.facets, returnType) => {
|
|
278
|
+
const getRenderableFilters = (state, facet = '', context = Context$1.facets) => Object.fromEntries(Object.entries(getFilters(state, facet, context, 'js')).filter(([, f = {}]) => typeof f.renderable !== 'boolean' ? true : f.renderable));
|
|
279
|
+
const getFiltersToLoad = (state, facet, context = Context$1.facets, returnType) => {
|
|
261
280
|
const filters = getFilters(state, facet, context, returnType);
|
|
262
281
|
const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [key, (f.items || []).filter(i => {
|
|
263
282
|
const title = i === null || i === void 0 ? void 0 : i.title;
|
|
@@ -266,7 +285,7 @@ const getFiltersToLoad = (state, facet, context = Context.facets, returnType) =>
|
|
|
266
285
|
return loadedFilters.map(([filterKey, isLoaded]) => !isLoaded ? filterKey : null).filter(f => !!f);
|
|
267
286
|
}; // We lowercase the filter key unless it's an ISO date string where the T must be uppercase
|
|
268
287
|
|
|
269
|
-
const getSelectedFilters = (state, facet = '', context = Context.facets, returnType) => {
|
|
288
|
+
const getSelectedFilters = (state, facet = '', context = Context$1.facets, returnType) => {
|
|
270
289
|
const filters = getFilters(state, facet, context, 'js');
|
|
271
290
|
const isoDateRegex = RegExp(/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d/);
|
|
272
291
|
const selectedFilters = Object.fromEntries(Object.entries(filters).map(([key, filter = {}]) => [key, (filter.items || []).filter(item => !!(item.isSelected || false)).map(item => {
|
|
@@ -277,56 +296,56 @@ const getSelectedFilters = (state, facet = '', context = Context.facets, returnT
|
|
|
277
296
|
const fromJS = makeFromJS(returnType);
|
|
278
297
|
return fromJS(selectedFilters);
|
|
279
298
|
};
|
|
280
|
-
const getResults = (state, current = '', context = Context.facets, returnType) => {
|
|
299
|
+
const getResults = (state, current = '', context = Context$1.facets, returnType) => {
|
|
281
300
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'results'], [], returnType);
|
|
282
301
|
};
|
|
283
|
-
const getIsInternalPaging = (state, current, context = Context.facets) => {
|
|
302
|
+
const getIsInternalPaging = (state, current, context = Context$1.facets) => {
|
|
284
303
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'queryParams', 'internalPaging'], false);
|
|
285
304
|
};
|
|
286
|
-
const getIsLoaded = (state, context = Context.facets, facet) => {
|
|
305
|
+
const getIsLoaded = (state, context = Context$1.facets, facet) => {
|
|
287
306
|
return !!getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'queryDuration'], 0);
|
|
288
307
|
};
|
|
289
|
-
const getIsLoading = (state, context = Context.facets, facet) => {
|
|
308
|
+
const getIsLoading = (state, context = Context$1.facets, facet) => {
|
|
290
309
|
return getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'entries', 'isLoading']);
|
|
291
310
|
};
|
|
292
311
|
const getIsSsr = state => getImmutableOrJS(state, ['search', 'config', 'ssr'], false);
|
|
293
|
-
const getFeaturedResults = (state, current = '', context = Context.facets) => {
|
|
312
|
+
const getFeaturedResults = (state, current = '', context = Context$1.facets) => {
|
|
294
313
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'featuredResults'], []);
|
|
295
314
|
};
|
|
296
|
-
const getPaging = (state, current = '', context = Context.facets, returnType) => {
|
|
315
|
+
const getPaging = (state, current = '', context = Context$1.facets, returnType) => {
|
|
297
316
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo'], {}, returnType);
|
|
298
317
|
};
|
|
299
|
-
const getPageIndex = (state, current = '', context = Context.facets) => {
|
|
318
|
+
const getPageIndex = (state, current = '', context = Context$1.facets) => {
|
|
300
319
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'pageIndex']);
|
|
301
320
|
};
|
|
302
|
-
const getPrevPageIndex = (state, current = '', context = Context.facets) => {
|
|
321
|
+
const getPrevPageIndex = (state, current = '', context = Context$1.facets) => {
|
|
303
322
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'prevPageIndex']);
|
|
304
323
|
};
|
|
305
|
-
const getPageIsLoading = (state, current = '', context = Context.facets) => {
|
|
324
|
+
const getPageIsLoading = (state, current = '', context = Context$1.facets) => {
|
|
306
325
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'isLoading']);
|
|
307
326
|
};
|
|
308
|
-
const getPagesLoaded = (state, current = '', context = Context.facets) => {
|
|
327
|
+
const getPagesLoaded = (state, current = '', context = Context$1.facets) => {
|
|
309
328
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'pagesLoaded'], [], 'js');
|
|
310
329
|
};
|
|
311
|
-
const getTotalCount = (state, current = '', context = Context.facets) => {
|
|
330
|
+
const getTotalCount = (state, current = '', context = Context$1.facets) => {
|
|
312
331
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'totalCount']);
|
|
313
332
|
};
|
|
314
333
|
const getSearchTerm = state => getImmutableOrJS(state, ['search', 'term']);
|
|
315
334
|
const getSearchTabs = (state, returnType) => getImmutableOrJS(state, ['search', 'tabs'], [], returnType);
|
|
316
|
-
const getQueryParams = (state, current = '', context = Context.facets) => {
|
|
335
|
+
const getQueryParams = (state, current = '', context = Context$1.facets) => {
|
|
317
336
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'queryParams'], {}, 'js');
|
|
318
337
|
};
|
|
319
338
|
const getQueryParameter = ({
|
|
320
339
|
state,
|
|
321
340
|
facet,
|
|
322
|
-
context = Context.facets
|
|
341
|
+
context = Context$1.facets
|
|
323
342
|
}, key, ifnull = null) => {
|
|
324
343
|
return getImmutableOrJS(getQueryParams(state, facet, context), key, ifnull, 'js');
|
|
325
344
|
};
|
|
326
|
-
const getCustomApi = (state, current, context = Context.facets, returnType) => {
|
|
345
|
+
const getCustomApi = (state, current, context = Context$1.facets, returnType) => {
|
|
327
346
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'customApi'], null, returnType);
|
|
328
347
|
};
|
|
329
|
-
const getCustomEnv = (state, current, context = Context.facets) => {
|
|
348
|
+
const getCustomEnv = (state, current, context = Context$1.facets) => {
|
|
330
349
|
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'env']);
|
|
331
350
|
};
|
|
332
351
|
const getTabsAndFacets = (state, returnType) => {
|
|
@@ -342,7 +361,7 @@ const getTabsAndFacets = (state, returnType) => {
|
|
|
342
361
|
return 0;
|
|
343
362
|
}).reduce((a, b) => a + b, 0);
|
|
344
363
|
return { ...tab,
|
|
345
|
-
[Context.facets]: Object.fromEntries(thisTabFacets),
|
|
364
|
+
[Context$1.facets]: Object.fromEntries(thisTabFacets),
|
|
346
365
|
totalCount: thisTabTotal
|
|
347
366
|
};
|
|
348
367
|
});
|
|
@@ -382,14 +401,14 @@ const selectFacets = {
|
|
|
382
401
|
getPageIsLoading,
|
|
383
402
|
getPagesLoaded,
|
|
384
403
|
getPaging,
|
|
385
|
-
getQueryParams: (state, facet) => getQueryParams(state, facet, Context.facets),
|
|
404
|
+
getQueryParams: (state, facet) => getQueryParams(state, facet, Context$1.facets),
|
|
386
405
|
getQueryParameter: ({
|
|
387
406
|
state,
|
|
388
407
|
facet
|
|
389
408
|
}, key, ifnull) => getQueryParameter({
|
|
390
409
|
state,
|
|
391
410
|
facet,
|
|
392
|
-
context: Context.facets
|
|
411
|
+
context: Context$1.facets
|
|
393
412
|
}, key, ifnull),
|
|
394
413
|
getRenderableFilters,
|
|
395
414
|
getResults,
|
|
@@ -404,32 +423,33 @@ const selectFacets = {
|
|
|
404
423
|
|
|
405
424
|
const selectListing = {
|
|
406
425
|
getCurrent: getCurrentListing,
|
|
407
|
-
getFeaturedResults: (state, listing = '') => getFeaturedResults(state, listing, Context.listings),
|
|
408
|
-
getFilters: (state, listing = '') => getFilters(state, listing, Context.listings),
|
|
409
|
-
getFiltersToLoad: (state, listing = '') => getFiltersToLoad(state, listing, Context.listings),
|
|
426
|
+
getFeaturedResults: (state, listing = '') => getFeaturedResults(state, listing, Context$1.listings),
|
|
427
|
+
getFilters: (state, listing = '') => getFilters(state, listing, Context$1.listings),
|
|
428
|
+
getFiltersToLoad: (state, listing = '') => getFiltersToLoad(state, listing, Context$1.listings),
|
|
410
429
|
getListing,
|
|
411
|
-
getIsLoaded: state => getIsLoaded(state, Context.listings),
|
|
412
|
-
getIsLoading: state => getIsLoading(state, Context.listings),
|
|
413
|
-
getPageIndex: (state, listing = '') => getPageIndex(state, listing, Context.listings),
|
|
414
|
-
getPaging: (state, listing = '') => getPaging(state, listing, Context.listings),
|
|
415
|
-
getPageIsLoading: (state, listing = '') => getPageIsLoading(state, listing, Context.listings),
|
|
416
|
-
getPagesLoaded: (state, listing = '') => getPagesLoaded(state, listing, Context.listings),
|
|
417
|
-
getQueryParams: (state, listing = '') => getQueryParams(state, listing, Context.listings),
|
|
430
|
+
getIsLoaded: state => getIsLoaded(state, Context$1.listings),
|
|
431
|
+
getIsLoading: state => getIsLoading(state, Context$1.listings),
|
|
432
|
+
getPageIndex: (state, listing = '') => getPageIndex(state, listing, Context$1.listings),
|
|
433
|
+
getPaging: (state, listing = '') => getPaging(state, listing, Context$1.listings),
|
|
434
|
+
getPageIsLoading: (state, listing = '') => getPageIsLoading(state, listing, Context$1.listings),
|
|
435
|
+
getPagesLoaded: (state, listing = '') => getPagesLoaded(state, listing, Context$1.listings),
|
|
436
|
+
getQueryParams: (state, listing = '') => getQueryParams(state, listing, Context$1.listings),
|
|
418
437
|
getQueryParameter: ({
|
|
419
438
|
state,
|
|
420
439
|
facet
|
|
421
440
|
}, key, ifnull) => getQueryParameter({
|
|
422
441
|
state,
|
|
423
442
|
facet,
|
|
424
|
-
context: Context.listings
|
|
443
|
+
context: Context$1.listings
|
|
425
444
|
}, key, ifnull),
|
|
426
|
-
getRenderableFilters: (state, listing = '') => getRenderableFilters(state, listing, Context.listings),
|
|
427
|
-
getResults: (state, listing = '') => getResults(state, listing, Context.listings),
|
|
445
|
+
getRenderableFilters: (state, listing = '') => getRenderableFilters(state, listing, Context$1.listings),
|
|
446
|
+
getResults: (state, listing = '') => getResults(state, listing, Context$1.listings),
|
|
428
447
|
getSearchTerm,
|
|
429
|
-
getTotalCount: (state, listing = '') => getTotalCount(state, listing, Context.listings),
|
|
430
|
-
getSelectedFilters: (state, listing = '') => getSelectedFilters(state, listing, Context.listings)
|
|
448
|
+
getTotalCount: (state, listing = '') => getTotalCount(state, listing, Context$1.listings),
|
|
449
|
+
getSelectedFilters: (state, listing = '') => getSelectedFilters(state, listing, Context$1.listings)
|
|
431
450
|
};
|
|
432
451
|
const selectCurrentPath = state => getImmutableOrJS(state, ['routing', 'currentPath']);
|
|
452
|
+
const selectCurrentProject = state => getImmutableOrJS(state, ['routing', 'currentProject']);
|
|
433
453
|
const selectVersionStatus = state => getImmutableOrJS(state, ['version', 'contensisVersionStatus']);
|
|
434
454
|
|
|
435
455
|
var selectors = /*#__PURE__*/Object.freeze({
|
|
@@ -472,6 +492,7 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
472
492
|
selectFacets: selectFacets,
|
|
473
493
|
selectListing: selectListing,
|
|
474
494
|
selectCurrentPath: selectCurrentPath,
|
|
495
|
+
selectCurrentProject: selectCurrentProject,
|
|
475
496
|
selectVersionStatus: selectVersionStatus
|
|
476
497
|
});
|
|
477
498
|
|
|
@@ -480,7 +501,7 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
480
501
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
481
502
|
const withSearch = mappers => SearchComponent => {
|
|
482
503
|
const Wrapper = props => {
|
|
483
|
-
return /*#__PURE__*/React__default[
|
|
504
|
+
return /*#__PURE__*/React__default["default"].createElement(SearchComponent, props);
|
|
484
505
|
};
|
|
485
506
|
|
|
486
507
|
Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
|
|
@@ -512,23 +533,23 @@ const withSearch = mappers => SearchComponent => {
|
|
|
512
533
|
};
|
|
513
534
|
|
|
514
535
|
const mapDispatchToProps = {
|
|
515
|
-
clearFilters: () => withMappers(clearFilters(), mappers),
|
|
516
|
-
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
517
|
-
updateCurrentTab: id => withMappers(updateCurrentTab(id), mappers),
|
|
518
|
-
updatePageIndex: pageIndex => withMappers(updatePageIndex(pageIndex), mappers),
|
|
519
|
-
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
520
|
-
updateSelectedFilters: (filter, key) => withMappers(updateSelectedFilters(filter, key), mappers),
|
|
521
|
-
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
536
|
+
clearFilters: () => withMappers(clearFilters$1(), mappers),
|
|
537
|
+
updateCurrentFacet: facet => withMappers(updateCurrentFacet$1(facet), mappers),
|
|
538
|
+
updateCurrentTab: id => withMappers(updateCurrentTab$1(id), mappers),
|
|
539
|
+
updatePageIndex: pageIndex => withMappers(updatePageIndex$1(pageIndex), mappers),
|
|
540
|
+
updateSearchTerm: term => withMappers(updateSearchTerm$1(term), mappers),
|
|
541
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
542
|
+
updateSortOrder: orderBy => withMappers(updateSortOrder$1(orderBy), mappers)
|
|
522
543
|
};
|
|
523
544
|
const connector = reactRedux.connect(mapStateToProps, mapDispatchToProps);
|
|
524
|
-
return connector(toJS(Wrapper));
|
|
545
|
+
return connector(toJS$1(Wrapper));
|
|
525
546
|
};
|
|
526
547
|
|
|
527
548
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
528
549
|
|
|
529
550
|
const withListing = mappers => ListingComponent => {
|
|
530
551
|
const Wrapper = props => {
|
|
531
|
-
return /*#__PURE__*/React__default[
|
|
552
|
+
return /*#__PURE__*/React__default["default"].createElement(ListingComponent, props);
|
|
532
553
|
};
|
|
533
554
|
|
|
534
555
|
Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
|
|
@@ -564,14 +585,14 @@ const withListing = mappers => ListingComponent => {
|
|
|
564
585
|
};
|
|
565
586
|
|
|
566
587
|
const mapDispatchToProps = {
|
|
567
|
-
clearFilters: () => withMappers(clearFilters(), mappers),
|
|
568
|
-
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
569
|
-
updatePageIndex: pageIndex => withMappers(updatePageIndex(pageIndex), mappers),
|
|
570
|
-
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
571
|
-
updateSelectedFilters: (filter, key) => withMappers(updateSelectedFilters(filter, key), mappers),
|
|
572
|
-
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
588
|
+
clearFilters: () => withMappers(clearFilters$1(), mappers),
|
|
589
|
+
updateCurrentFacet: facet => withMappers(updateCurrentFacet$1(facet), mappers),
|
|
590
|
+
updatePageIndex: pageIndex => withMappers(updatePageIndex$1(pageIndex), mappers),
|
|
591
|
+
updateSearchTerm: term => withMappers(updateSearchTerm$1(term), mappers),
|
|
592
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
593
|
+
updateSortOrder: orderBy => withMappers(updateSortOrder$1(orderBy), mappers)
|
|
573
594
|
};
|
|
574
|
-
return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
|
|
595
|
+
return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS$1(Wrapper));
|
|
575
596
|
};
|
|
576
597
|
|
|
577
598
|
const getClientConfig = (project, env) => {
|
|
@@ -780,7 +801,7 @@ const extractQuotedPhrases = searchTerm => {
|
|
|
780
801
|
return (searchTerm.match(pattern) || []).map(match => match.replace(/"/g, ''));
|
|
781
802
|
};
|
|
782
803
|
const buildUrl = (route, params) => {
|
|
783
|
-
const qs =
|
|
804
|
+
const qs = queryString.stringify(params);
|
|
784
805
|
const path = qs ? `${route}?${qs}` : route;
|
|
785
806
|
return path;
|
|
786
807
|
};
|
|
@@ -861,7 +882,7 @@ const fieldExpression = (field, value, operator = 'equalTo', weight) => {
|
|
|
861
882
|
// to generate expressions that are combined with an 'or' operator
|
|
862
883
|
return [contensisCoreApi.Op.or(...field.map(fieldId => fieldExpression(fieldId, value, operator, weight)).flat())];
|
|
863
884
|
if (operator === 'between') return between(field, value);
|
|
864
|
-
if (Array.isArray(value)) return equalToOrIn(field, value, operator);else return !weight ?
|
|
885
|
+
if (Array.isArray(value)) return equalToOrIn(field, value, operator);else return !weight ? equalToOrIn(field, value, operator) : [equalToOrIn(field, value, operator)[0].weight(weight)];
|
|
865
886
|
};
|
|
866
887
|
const contentTypeIdExpression = (contentTypeIds, webpageTemplates, assetTypes) => {
|
|
867
888
|
const expressions = [];
|
|
@@ -885,8 +906,17 @@ const contentTypeIdExpression = (contentTypeIds, webpageTemplates, assetTypes) =
|
|
|
885
906
|
const filterExpressions = filters => {
|
|
886
907
|
if (!filters) return [];
|
|
887
908
|
const expressions = [];
|
|
888
|
-
filters.map(
|
|
889
|
-
|
|
909
|
+
filters.map(selectedFilter => {
|
|
910
|
+
if (selectedFilter.logicOperator === 'and') // using 'and' logic operator we loop through each filter
|
|
911
|
+
// and loop through all values to add an expression for each filter value
|
|
912
|
+
selectedFilter.values.forEach(value => expressions.push(...fieldExpression(selectedFilter.key, value, selectedFilter.fieldOperator || 'equalTo')));else if (selectedFilter.logicOperator === 'not') {
|
|
913
|
+
const fieldExpressions = fieldExpression(selectedFilter.key, selectedFilter.values, selectedFilter.fieldOperator || 'in');
|
|
914
|
+
fieldExpressions.forEach(expr => {
|
|
915
|
+
expressions.push(contensisCoreApi.Op.not(expr));
|
|
916
|
+
});
|
|
917
|
+
} // using 'or' logic operator we loop over each filter
|
|
918
|
+
// and simply add the array of values to an expression with an 'in' operator
|
|
919
|
+
else expressions.push(...fieldExpression(selectedFilter.key, selectedFilter.values, selectedFilter.fieldOperator || 'in'));
|
|
890
920
|
});
|
|
891
921
|
return expressions;
|
|
892
922
|
};
|
|
@@ -903,8 +933,8 @@ const dataFormatExpression = (contentTypeIds, dataFormat = DataFormats.entry) =>
|
|
|
903
933
|
const withExpr = fieldExpression(Fields.sys.contentTypeId, withContentTypeIds)[0];
|
|
904
934
|
const notExpr = contensisCoreApi.Op.not(fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]);
|
|
905
935
|
andExpr.add(dataFormatExpr);
|
|
906
|
-
if (withContentTypeIds.length > 0) andExpr.add(withExpr);
|
|
907
|
-
if (notContentTypeIds.length > 0) andExpr.add(notExpr);
|
|
936
|
+
if (withContentTypeIds.length > 0 && withExpr) andExpr.add(withExpr);
|
|
937
|
+
if (notContentTypeIds.length > 0 && notExpr) andExpr.add(notExpr);
|
|
908
938
|
return [andExpr];
|
|
909
939
|
}
|
|
910
940
|
|
|
@@ -960,19 +990,45 @@ const equalToOrIn = (field, value, operator = 'equalTo') => {
|
|
|
960
990
|
if (value.length === 0) return [];
|
|
961
991
|
|
|
962
992
|
if (Array.isArray(value)) {
|
|
963
|
-
if (
|
|
964
|
-
return [contensisCoreApi.Op.
|
|
993
|
+
if (operator === 'equalTo') return [contensisCoreApi.Op.in(field, ...value)];
|
|
994
|
+
return [contensisCoreApi.Op.or(...value.map(innerValue => {
|
|
995
|
+
switch (operator) {
|
|
996
|
+
case 'between':
|
|
997
|
+
case 'distanceWithin':
|
|
998
|
+
// Not implemented
|
|
999
|
+
return contensisCoreApi.Op.equalTo(field, innerValue);
|
|
1000
|
+
|
|
1001
|
+
case 'freeText':
|
|
1002
|
+
// TODO: Potentially needs further implementation of new options
|
|
1003
|
+
return contensisCoreApi.Op[operator](field, innerValue, false, undefined);
|
|
1004
|
+
|
|
1005
|
+
default:
|
|
1006
|
+
return contensisCoreApi.Op[operator](field, innerValue);
|
|
1007
|
+
}
|
|
1008
|
+
}))];
|
|
965
1009
|
}
|
|
966
1010
|
|
|
967
|
-
|
|
1011
|
+
switch (operator) {
|
|
1012
|
+
case 'between':
|
|
1013
|
+
case 'distanceWithin':
|
|
1014
|
+
// Not implemented
|
|
1015
|
+
return [contensisCoreApi.Op.equalTo(field, value)];
|
|
1016
|
+
|
|
1017
|
+
case 'freeText':
|
|
1018
|
+
// TODO: Potentially needs further implementation of new options
|
|
1019
|
+
return [contensisCoreApi.Op[operator](field, value, false, undefined)];
|
|
1020
|
+
|
|
1021
|
+
default:
|
|
1022
|
+
return [contensisCoreApi.Op[operator](field, value)];
|
|
1023
|
+
}
|
|
968
1024
|
};
|
|
969
1025
|
|
|
970
1026
|
const between = (field, value) => {
|
|
971
1027
|
const handle = betweenValue => {
|
|
972
|
-
const valArr = betweenValue.split('
|
|
1028
|
+
const valArr = betweenValue.split('--');
|
|
973
1029
|
|
|
974
1030
|
if (valArr.length > 1) {
|
|
975
|
-
const [minimum, maximum
|
|
1031
|
+
const [minimum, maximum] = valArr;
|
|
976
1032
|
return contensisCoreApi.Op.between(field, minimum, maximum);
|
|
977
1033
|
} else {
|
|
978
1034
|
// eslint-disable-next-line no-console
|
|
@@ -982,10 +1038,9 @@ const between = (field, value) => {
|
|
|
982
1038
|
};
|
|
983
1039
|
|
|
984
1040
|
if (value.length === 0) return [];
|
|
985
|
-
if (Array.isArray(value)) return [contensisCoreApi.Op.or(...value.map(handle).filter(bc => bc !== false))];
|
|
986
|
-
|
|
1041
|
+
if (Array.isArray(value)) return [contensisCoreApi.Op.or(...value.map(handle).filter(bc => bc !== false))];
|
|
987
1042
|
const op = handle(value);
|
|
988
|
-
return op ? [op] : [];
|
|
1043
|
+
return op ? [op] : [];
|
|
989
1044
|
};
|
|
990
1045
|
/**
|
|
991
1046
|
* Accept HTTP style objects and map them to
|
|
@@ -1028,7 +1083,7 @@ const customWhereExpressions = where => {
|
|
|
1028
1083
|
// the second property inside the clause
|
|
1029
1084
|
|
|
1030
1085
|
if (notIdx === 1) {
|
|
1031
|
-
expression = contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue));
|
|
1086
|
+
expression = innerOperator === 'between' ? contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue[0], innerValue[1])) : contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue));
|
|
1032
1087
|
}
|
|
1033
1088
|
});
|
|
1034
1089
|
}
|
|
@@ -1040,8 +1095,9 @@ const customWhereExpressions = where => {
|
|
|
1040
1095
|
|
|
1041
1096
|
if (idx === 1 && // operator !== 'and' &&
|
|
1042
1097
|
// operator !== 'or' &&
|
|
1043
|
-
operator !== 'between' &&
|
|
1044
|
-
|
|
1098
|
+
// operator !== 'between' &&
|
|
1099
|
+
operator !== 'distanceWithin') {
|
|
1100
|
+
expression = operator === 'freeText' || operator === 'contains' ? contensisCoreApi.Op[operator](field, value) : operator === 'in' ? contensisCoreApi.Op[operator](field, ...value) : operator === 'exists' ? contensisCoreApi.Op[operator](field, value) : operator === 'between' ? contensisCoreApi.Op[operator](field, value[0], value[1]) : contensisCoreApi.Op[operator](field, value);
|
|
1045
1101
|
if (typeof weight === 'number') expression = expression.weight(weight);
|
|
1046
1102
|
}
|
|
1047
1103
|
});
|
|
@@ -1154,7 +1210,7 @@ const searchUriTemplate = {
|
|
|
1154
1210
|
facet,
|
|
1155
1211
|
pageIndex
|
|
1156
1212
|
}) => {
|
|
1157
|
-
const currentFacet = getSearchContext(state) !== Context.listings && (facet || getCurrentFacet(state));
|
|
1213
|
+
const currentFacet = getSearchContext(state) !== Context$1.listings && (facet || getCurrentFacet(state));
|
|
1158
1214
|
const currentPath = selectCurrentPath(state) || '/search';
|
|
1159
1215
|
const newPath = currentFacet ? `${currentPath}/${currentFacet}` : currentPath;
|
|
1160
1216
|
if (pageIndex) return `${newPath}/${pageIndex + 1}`;
|
|
@@ -1171,15 +1227,15 @@ const searchUriTemplate = {
|
|
|
1171
1227
|
|
|
1172
1228
|
const stateFilters = term ? {} : Object.fromEntries(Object.entries(getSelectedFilters(state, facet, searchContext, 'js')).map(([key, f]) => [key, f === null || f === void 0 ? void 0 : f.join(',')]));
|
|
1173
1229
|
const currentSearch = !term && getImmutableOrJS(state, ['routing', 'location', 'search']);
|
|
1174
|
-
const currentQs = removeEmptyAttributes(
|
|
1230
|
+
const currentQs = removeEmptyAttributes(queryString.parse(currentSearch));
|
|
1175
1231
|
if (orderBy) currentQs.orderBy = orderBy;
|
|
1176
1232
|
const searchTerm = getSearchTerm(state); // Use Immutable's merge to merge the stateFilters with any current Qs
|
|
1177
1233
|
// to build the new Qs.
|
|
1178
1234
|
|
|
1179
|
-
const mergedSearch = removeEmptyAttributes({ ...merge__default[
|
|
1235
|
+
const mergedSearch = removeEmptyAttributes({ ...merge__default["default"](currentQs, stateFilters),
|
|
1180
1236
|
term: searchTerm
|
|
1181
1237
|
});
|
|
1182
|
-
return
|
|
1238
|
+
return queryString.stringify(mergedSearch);
|
|
1183
1239
|
},
|
|
1184
1240
|
hash: {
|
|
1185
1241
|
$path: 'state',
|
|
@@ -1187,7 +1243,7 @@ const searchUriTemplate = {
|
|
|
1187
1243
|
}
|
|
1188
1244
|
};
|
|
1189
1245
|
|
|
1190
|
-
const mapStateToSearchUri = params => mapJson__default[
|
|
1246
|
+
const mapStateToSearchUri = params => mapJson__default["default"](params, searchUriTemplate);
|
|
1191
1247
|
|
|
1192
1248
|
const mapEntriesToSearchResults = ({
|
|
1193
1249
|
mappers,
|
|
@@ -1329,35 +1385,33 @@ const filterTemplate = {
|
|
|
1329
1385
|
const filterExpressionMapper = {
|
|
1330
1386
|
// Expression type: so we can identify how to build the query
|
|
1331
1387
|
expressionType: ({
|
|
1332
|
-
|
|
1333
|
-
}) =>
|
|
1388
|
+
contentTypeId
|
|
1389
|
+
}) => contentTypeId ? FilterExpressionTypes.contentType : FilterExpressionTypes.field,
|
|
1334
1390
|
// Key: so we can target the query to a specific field
|
|
1335
|
-
key: '
|
|
1391
|
+
key: 'fieldId',
|
|
1336
1392
|
// Value: so we can filter a specific field by an array of values
|
|
1337
1393
|
// e.g. taxonomy key or contentTypeId array
|
|
1338
|
-
|
|
1339
|
-
|
|
1394
|
+
values: 'selectedValues',
|
|
1395
|
+
fieldOperator: 'fieldOperator',
|
|
1396
|
+
logicOperator: 'logicOperator'
|
|
1340
1397
|
};
|
|
1341
1398
|
|
|
1342
|
-
const mapFilterToFilterExpression = filter => mapJson__default[
|
|
1399
|
+
const mapFilterToFilterExpression = filter => mapJson__default["default"](filter, filterExpressionMapper);
|
|
1343
1400
|
|
|
1344
1401
|
const mapFiltersToFilterExpression = (filters, selectedFilters) => {
|
|
1345
1402
|
if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];
|
|
1346
1403
|
const filterExpressions = []; // Iterate through the keys in selectedFilters and locate
|
|
1347
1404
|
// the items that are selected and queryable
|
|
1348
1405
|
|
|
1349
|
-
Object.entries(selectedFilters).map(([fkey,
|
|
1406
|
+
Object.entries(selectedFilters).map(([fkey, selectedValues]) => {
|
|
1350
1407
|
const filter = filters[fkey];
|
|
1351
1408
|
|
|
1352
|
-
if (
|
|
1353
|
-
|
|
1409
|
+
if (selectedValues && filter) {
|
|
1410
|
+
// Where we have a value for a selectedFilter
|
|
1354
1411
|
// and a filter is found for the current key
|
|
1355
1412
|
// map the filter to a filterExpression object
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
filter,
|
|
1359
|
-
selectedItems,
|
|
1360
|
-
selectedValue
|
|
1413
|
+
const expr = mapFilterToFilterExpression({ ...filter,
|
|
1414
|
+
selectedValues
|
|
1361
1415
|
});
|
|
1362
1416
|
filterExpressions.push(expr);
|
|
1363
1417
|
}
|
|
@@ -1436,9 +1490,9 @@ const queryParamsTemplate = {
|
|
|
1436
1490
|
}) => {
|
|
1437
1491
|
var _getFacet;
|
|
1438
1492
|
|
|
1439
|
-
return (_getFacet = getFacet(state, facet, context)) === null || _getFacet === void 0 ? void 0 : _getFacet.projectId;
|
|
1493
|
+
return ((_getFacet = getFacet(state, facet, context)) === null || _getFacet === void 0 ? void 0 : _getFacet.projectId) || selectCurrentProject(state);
|
|
1440
1494
|
},
|
|
1441
|
-
searchTerm: root => root.context !== Context.minilist || getQueryParameter(root, 'useSearchTerm', false) ? getSearchTerm(root.state) : '',
|
|
1495
|
+
searchTerm: root => root.context !== Context$1.minilist || getQueryParameter(root, 'useSearchTerm', false) ? getSearchTerm(root.state) : '',
|
|
1442
1496
|
selectedFilters: ({
|
|
1443
1497
|
state,
|
|
1444
1498
|
facet,
|
|
@@ -1455,7 +1509,7 @@ const queryParamsTemplate = {
|
|
|
1455
1509
|
webpageTemplates: root => getQueryParameter(root, 'webpageTemplates', [])
|
|
1456
1510
|
};
|
|
1457
1511
|
|
|
1458
|
-
const mapStateToQueryParams = sourceJson => mapJson__default[
|
|
1512
|
+
const mapStateToQueryParams = sourceJson => mapJson__default["default"](sourceJson, queryParamsTemplate);
|
|
1459
1513
|
|
|
1460
1514
|
/**
|
|
1461
1515
|
* 1, Generates all the parameters required to run the search query.
|
|
@@ -1501,7 +1555,7 @@ const runSearch = (action, state, queryParams) => {
|
|
|
1501
1555
|
stateParams.pageIndex = getPageIndex(ogState, facet, context);
|
|
1502
1556
|
stateParams.searchTerm = getSearchTerm(ogState);
|
|
1503
1557
|
|
|
1504
|
-
if (context === Context.facets && ssr || // context === Context.minilist ||
|
|
1558
|
+
if (context === Context$1.facets && ssr || // context === Context.minilist ||
|
|
1505
1559
|
preload || !facetIsLoaded || filterParamsChanged(action) || defaultLang) {
|
|
1506
1560
|
willRun = true;
|
|
1507
1561
|
} else {
|
|
@@ -1550,9 +1604,10 @@ const filterParamsChanged = (action, state) => {
|
|
|
1550
1604
|
const debugExecuteSearch = (action, state) => {
|
|
1551
1605
|
const [queryParams, runSearch] = generateQueryParams(action, state);
|
|
1552
1606
|
console.log('runSearch', runSearch, 'action', action, 'filterParamsChanged', filterParamsChanged(action, state), 'getIsLoaded(state, context, facet)', getIsLoaded(state, action.context, action.facet));
|
|
1553
|
-
const stateParams = getQueryParams(action.ogState || state, action.facet, action.context)
|
|
1554
|
-
|
|
1555
|
-
|
|
1607
|
+
const stateParams = { ...getQueryParams(action.ogState || state, action.facet, action.context),
|
|
1608
|
+
pageIndex: getPageIndex(action.ogState || state, action.facet, action.context),
|
|
1609
|
+
searchTerm: getSearchTerm(action.ogState || state)
|
|
1610
|
+
};
|
|
1556
1611
|
console.log(stateParams, queryParams);
|
|
1557
1612
|
console.log('getSelectedFilters', getSelectedFilters(action.ogState || state, action.facet, action.context, 'js'), 'params', action.params);
|
|
1558
1613
|
};
|
|
@@ -1575,16 +1630,16 @@ const mapEntriesToFilterItems = entries => {
|
|
|
1575
1630
|
const template = base;
|
|
1576
1631
|
|
|
1577
1632
|
if (template) {
|
|
1578
|
-
return mapJson__default[
|
|
1633
|
+
return mapJson__default["default"](entry, template);
|
|
1579
1634
|
}
|
|
1580
1635
|
|
|
1581
1636
|
return entry;
|
|
1582
1637
|
});
|
|
1583
1638
|
};
|
|
1584
1639
|
|
|
1585
|
-
const searchSagas = [effects.takeEvery(CLEAR_FILTERS, clearFilters
|
|
1640
|
+
const searchSagas = [effects.takeEvery(CLEAR_FILTERS, clearFilters), effects.takeEvery(DO_SEARCH, doSearch), effects.takeEvery(SET_ROUTE_FILTERS, loadFilters), effects.takeEvery(SET_SEARCH_ENTRIES, preloadOtherFacets), effects.takeEvery(UPDATE_CURRENT_FACET, updateCurrentFacet), effects.takeEvery(UPDATE_CURRENT_TAB, updateCurrentTab), effects.takeEvery(UPDATE_PAGE_INDEX, updatePageIndex), effects.takeEvery(UPDATE_SEARCH_TERM, updateSearchTerm), effects.takeEvery(UPDATE_SORT_ORDER, updateSortOrder), effects.takeEvery(UPDATE_SELECTED_FILTERS, applySearchFilter)];
|
|
1586
1641
|
|
|
1587
|
-
const toJS
|
|
1642
|
+
const toJS = obj => obj && 'toJS' in obj && typeof obj.toJS === 'function' ? obj.toJS() : obj;
|
|
1588
1643
|
|
|
1589
1644
|
function* setRouteFilters(action) {
|
|
1590
1645
|
const {
|
|
@@ -1594,8 +1649,8 @@ function* setRouteFilters(action) {
|
|
|
1594
1649
|
defaultLang,
|
|
1595
1650
|
debug
|
|
1596
1651
|
} = action;
|
|
1597
|
-
const context = listingType ? Context.listings : Context.facets;
|
|
1598
|
-
const state = toJS
|
|
1652
|
+
const context = listingType ? Context$1.listings : Context$1.facets;
|
|
1653
|
+
const state = toJS(yield effects.select());
|
|
1599
1654
|
const ssr = getIsSsr(state); // Get current facet from params or state
|
|
1600
1655
|
|
|
1601
1656
|
let currentFacet = params && params.facet || listingType; // Pick the default facet from initialState
|
|
@@ -1625,7 +1680,7 @@ function* setRouteFilters(action) {
|
|
|
1625
1680
|
});
|
|
1626
1681
|
}
|
|
1627
1682
|
function* doSearch(action) {
|
|
1628
|
-
const state = toJS
|
|
1683
|
+
const state = toJS(yield effects.select());
|
|
1629
1684
|
|
|
1630
1685
|
if (action.config) {
|
|
1631
1686
|
// If the action contains a config object, we can add this to the
|
|
@@ -1726,7 +1781,7 @@ function* loadFilter(action) {
|
|
|
1726
1781
|
createStateFrom.error = error;
|
|
1727
1782
|
}
|
|
1728
1783
|
|
|
1729
|
-
const nextAction = mapJson__default[
|
|
1784
|
+
const nextAction = mapJson__default["default"](createStateFrom, filterTemplate);
|
|
1730
1785
|
yield effects.put(nextAction);
|
|
1731
1786
|
}
|
|
1732
1787
|
|
|
@@ -1760,7 +1815,7 @@ function* ensureSearch(action) {
|
|
|
1760
1815
|
}
|
|
1761
1816
|
} catch (error) {
|
|
1762
1817
|
// eslint-disable-next-line import/namespace
|
|
1763
|
-
|
|
1818
|
+
log__namespace.error(...['Error running search saga:', error, error.stack]);
|
|
1764
1819
|
}
|
|
1765
1820
|
}
|
|
1766
1821
|
|
|
@@ -1807,11 +1862,11 @@ function* executeSearch(action) {
|
|
|
1807
1862
|
result,
|
|
1808
1863
|
state
|
|
1809
1864
|
};
|
|
1810
|
-
const nextAction = mapJson__default[
|
|
1865
|
+
const nextAction = mapJson__default["default"](createStateFrom, facetTemplate);
|
|
1811
1866
|
yield effects.put(nextAction);
|
|
1812
1867
|
} catch (error) {
|
|
1813
1868
|
// eslint-disable-next-line import/namespace
|
|
1814
|
-
|
|
1869
|
+
log__namespace.error(...['Error running search saga:', error, error.stack]);
|
|
1815
1870
|
}
|
|
1816
1871
|
}
|
|
1817
1872
|
|
|
@@ -1825,7 +1880,7 @@ function* preloadOtherFacets(action) {
|
|
|
1825
1880
|
const state = yield effects.select();
|
|
1826
1881
|
const currentFacet = getCurrentFacet(state);
|
|
1827
1882
|
|
|
1828
|
-
if (!preload && facet === currentFacet && context !== Context.listings) {
|
|
1883
|
+
if (!preload && facet === currentFacet && context !== Context$1.listings) {
|
|
1829
1884
|
const allFacets = getFacets(state, 'js');
|
|
1830
1885
|
const otherFacets = Object.keys(allFacets).filter(f => f !== currentFacet);
|
|
1831
1886
|
yield effects.all(otherFacets.map((preloadFacet = '') => {
|
|
@@ -1845,7 +1900,7 @@ function* preloadOtherFacets(action) {
|
|
|
1845
1900
|
}
|
|
1846
1901
|
}
|
|
1847
1902
|
|
|
1848
|
-
function* updateCurrentTab
|
|
1903
|
+
function* updateCurrentTab(action) {
|
|
1849
1904
|
const {
|
|
1850
1905
|
id,
|
|
1851
1906
|
mappers
|
|
@@ -1864,10 +1919,10 @@ function* updateCurrentTab$1(action) {
|
|
|
1864
1919
|
|
|
1865
1920
|
|
|
1866
1921
|
if (!nextFacet) nextFacet = Object.entries(facets).filter(([, f]) => f.tabId === id)[0][0];
|
|
1867
|
-
yield effects.put(withMappers(updateCurrentFacet(nextFacet), mappers));
|
|
1922
|
+
yield effects.put(withMappers(updateCurrentFacet$1(nextFacet), mappers));
|
|
1868
1923
|
}
|
|
1869
1924
|
|
|
1870
|
-
function* clearFilters
|
|
1925
|
+
function* clearFilters(action) {
|
|
1871
1926
|
const {
|
|
1872
1927
|
mappers
|
|
1873
1928
|
} = action;
|
|
@@ -1875,7 +1930,7 @@ function* clearFilters$1(action) {
|
|
|
1875
1930
|
yield effects.put(navigate(uri));
|
|
1876
1931
|
}
|
|
1877
1932
|
|
|
1878
|
-
function* updateCurrentFacet
|
|
1933
|
+
function* updateCurrentFacet(action) {
|
|
1879
1934
|
const {
|
|
1880
1935
|
facet,
|
|
1881
1936
|
mappers
|
|
@@ -1888,7 +1943,7 @@ function* updateCurrentFacet$1(action) {
|
|
|
1888
1943
|
yield effects.put(navigate(uri));
|
|
1889
1944
|
}
|
|
1890
1945
|
|
|
1891
|
-
function* updateSearchTerm
|
|
1946
|
+
function* updateSearchTerm(action) {
|
|
1892
1947
|
const {
|
|
1893
1948
|
term,
|
|
1894
1949
|
mappers
|
|
@@ -1899,7 +1954,7 @@ function* updateSearchTerm$1(action) {
|
|
|
1899
1954
|
yield effects.put(navigate(uri));
|
|
1900
1955
|
}
|
|
1901
1956
|
|
|
1902
|
-
function* updateSortOrder
|
|
1957
|
+
function* updateSortOrder(action) {
|
|
1903
1958
|
const {
|
|
1904
1959
|
orderBy,
|
|
1905
1960
|
facet,
|
|
@@ -1912,7 +1967,7 @@ function* updateSortOrder$1(action) {
|
|
|
1912
1967
|
yield effects.put(navigate(uri));
|
|
1913
1968
|
}
|
|
1914
1969
|
|
|
1915
|
-
function* updatePageIndex
|
|
1970
|
+
function* updatePageIndex(action) {
|
|
1916
1971
|
const {
|
|
1917
1972
|
pageIndex,
|
|
1918
1973
|
mappers
|
|
@@ -1951,11 +2006,11 @@ function* buildUri({
|
|
|
1951
2006
|
}
|
|
1952
2007
|
|
|
1953
2008
|
const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_, id) => id, (state, id) => ({
|
|
1954
|
-
facet: getFacet(state, id, Context.minilist, 'js'),
|
|
1955
|
-
filters: getFilters(state, id, Context.minilist, 'js'),
|
|
1956
|
-
isLoading: getIsLoading(state, Context.minilist, id),
|
|
1957
|
-
pagingInfo: getPaging(state, id, Context.minilist, 'js'),
|
|
1958
|
-
results: getResults(state, id, Context.minilist, 'js'),
|
|
2009
|
+
facet: getFacet(state, id, Context$1.minilist, 'js'),
|
|
2010
|
+
filters: getFilters(state, id, Context$1.minilist, 'js'),
|
|
2011
|
+
isLoading: getIsLoading(state, Context$1.minilist, id),
|
|
2012
|
+
pagingInfo: getPaging(state, id, Context$1.minilist, 'js'),
|
|
2013
|
+
results: getResults(state, id, Context$1.minilist, 'js'),
|
|
1959
2014
|
searchTerm: getSearchTerm(state)
|
|
1960
2015
|
}));
|
|
1961
2016
|
|
|
@@ -1993,7 +2048,7 @@ const useMinilist = ({
|
|
|
1993
2048
|
if (id && (mapper || mappers && mappers.results)) {
|
|
1994
2049
|
dispatch(triggerSearch({
|
|
1995
2050
|
config,
|
|
1996
|
-
context: Context.minilist,
|
|
2051
|
+
context: Context$1.minilist,
|
|
1997
2052
|
defaultLang,
|
|
1998
2053
|
facet: id,
|
|
1999
2054
|
mapper,
|
|
@@ -2119,7 +2174,7 @@ const generateSearchFacets = (context, config) => {
|
|
|
2119
2174
|
|
|
2120
2175
|
if (Object.keys(thisConfig).length > 0) {
|
|
2121
2176
|
Object.entries(thisConfig).map(([facetName, facet]) => {
|
|
2122
|
-
const newFacet = merge__default[
|
|
2177
|
+
const newFacet = merge__default["default"](searchFacet, facet);
|
|
2123
2178
|
if (!('isDisabled' in facet) || facet.isDisabled !== true) facets[facetName] = newFacet;
|
|
2124
2179
|
});
|
|
2125
2180
|
}
|
|
@@ -2208,9 +2263,9 @@ var reducers = (config => {
|
|
|
2208
2263
|
// Add facets from SearchConfig to initialState
|
|
2209
2264
|
const initState = { ...initialState,
|
|
2210
2265
|
tabs: config.tabs,
|
|
2211
|
-
facets: generateSearchFacets(Context.facets, config),
|
|
2212
|
-
listings: generateSearchFacets(Context.listings, config),
|
|
2213
|
-
minilist: generateSearchFacets(Context.minilist, config)
|
|
2266
|
+
facets: generateSearchFacets(Context$1.facets, config),
|
|
2267
|
+
listings: generateSearchFacets(Context$1.listings, config),
|
|
2268
|
+
minilist: generateSearchFacets(Context$1.minilist, config)
|
|
2214
2269
|
};
|
|
2215
2270
|
return immer.produce((state = initState, action) => {
|
|
2216
2271
|
const context = state.context;
|
|
@@ -2220,7 +2275,7 @@ var reducers = (config => {
|
|
|
2220
2275
|
case APPLY_CONFIG:
|
|
2221
2276
|
{
|
|
2222
2277
|
state = addConfigToState(state, action);
|
|
2223
|
-
return;
|
|
2278
|
+
return state;
|
|
2224
2279
|
}
|
|
2225
2280
|
|
|
2226
2281
|
case CLEAR_FILTERS:
|
|
@@ -2294,7 +2349,7 @@ var reducers = (config => {
|
|
|
2294
2349
|
return;
|
|
2295
2350
|
}
|
|
2296
2351
|
|
|
2297
|
-
state[action.context][facetKey].filters[filterKey] = merge__default[
|
|
2352
|
+
state[action.context][facetKey].filters[filterKey] = merge__default["default"](filter, nextFilter, {
|
|
2298
2353
|
arrayMerge: (source, inbound) => inbound
|
|
2299
2354
|
});
|
|
2300
2355
|
return;
|
|
@@ -2329,7 +2384,7 @@ var reducers = (config => {
|
|
|
2329
2384
|
context,
|
|
2330
2385
|
isCurrentFacet
|
|
2331
2386
|
}, state);
|
|
2332
|
-
resetCurrentFacet = state.config.isLoaded === true && !equals__default[
|
|
2387
|
+
resetCurrentFacet = state.config.isLoaded === true && !equals__default["default"](nextFilters, stateFacet.filters);
|
|
2333
2388
|
stateFacet = resetCurrentFacet ? resetFacet(stateFacet) : stateFacet;
|
|
2334
2389
|
stateFacet.filters = nextFilters;
|
|
2335
2390
|
stateFacet.queryParams.dynamicOrderBy = toArray(orderBy) || [];
|
|
@@ -2337,7 +2392,7 @@ var reducers = (config => {
|
|
|
2337
2392
|
}));
|
|
2338
2393
|
state.context = context;
|
|
2339
2394
|
state[context] = nextFacets;
|
|
2340
|
-
state[action.context === Context.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
2395
|
+
state[action.context === Context$1.facets ? 'currentFacet' : 'currentListing'] = facet;
|
|
2341
2396
|
state.term = term;
|
|
2342
2397
|
state.tabs[tabId].currentFacet = facet;
|
|
2343
2398
|
state[context][facet].pagingInfo.pageIndex = Number(pageIndex) - 1 || (state[context][facet].queryParams.loadMorePaging ? state[context][facet].pagingInfo.pageIndex || 0 : 0);
|
|
@@ -2351,7 +2406,7 @@ var reducers = (config => {
|
|
|
2351
2406
|
{
|
|
2352
2407
|
const thisContext = action.context || context;
|
|
2353
2408
|
const currentFacet = state[thisContext][action.facet];
|
|
2354
|
-
state[thisContext][action.facet] = merge__default[
|
|
2409
|
+
state[thisContext][action.facet] = merge__default["default"](currentFacet, action.nextFacet, {
|
|
2355
2410
|
arrayMerge: (source, inbound) => inbound
|
|
2356
2411
|
});
|
|
2357
2412
|
return;
|
|
@@ -2370,9 +2425,9 @@ var reducers = (config => {
|
|
|
2370
2425
|
isCurrentFacet: true
|
|
2371
2426
|
}, state);
|
|
2372
2427
|
const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
|
|
2373
|
-
const useSearchTerm = state[action.context || Context.minilist][action.facet].queryParams.useSearchTerm || false;
|
|
2374
|
-
state[action.context || Context.minilist][action.facet].filters = filters;
|
|
2375
|
-
state[action.context || Context.minilist][action.facet].queryParams.excludeIds = action.excludeIds;
|
|
2428
|
+
const useSearchTerm = state[action.context || Context$1.minilist][action.facet].queryParams.useSearchTerm || false;
|
|
2429
|
+
state[action.context || Context$1.minilist][action.facet].filters = filters;
|
|
2430
|
+
state[action.context || Context$1.minilist][action.facet].queryParams.excludeIds = action.excludeIds;
|
|
2376
2431
|
state.term = useSearchTerm ? term : state.term;
|
|
2377
2432
|
state.config.ssr = typeof window === 'undefined';
|
|
2378
2433
|
return;
|
|
@@ -2404,13 +2459,22 @@ var reducers = (config => {
|
|
|
2404
2459
|
{
|
|
2405
2460
|
const {
|
|
2406
2461
|
filter,
|
|
2407
|
-
key
|
|
2462
|
+
key,
|
|
2463
|
+
isUnknownItem
|
|
2408
2464
|
} = action;
|
|
2409
2465
|
const isSingleSelect = state[context][current].filters[filter].isSingleSelect || false;
|
|
2410
2466
|
const isGrouped = state[context][current].filters[filter].isGrouped || false;
|
|
2411
2467
|
const currentItems = state[context][current].filters[filter].items;
|
|
2412
2468
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
2413
2469
|
state[context][current] = resetFacet(state[context][current]);
|
|
2470
|
+
|
|
2471
|
+
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
2472
|
+
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
2473
|
+
key,
|
|
2474
|
+
isSelected: false
|
|
2475
|
+
});
|
|
2476
|
+
}
|
|
2477
|
+
|
|
2414
2478
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
2415
2479
|
if (item.key === key) {
|
|
2416
2480
|
return { ...item,
|
|
@@ -2445,13 +2509,13 @@ var reducers = (config => {
|
|
|
2445
2509
|
});
|
|
2446
2510
|
|
|
2447
2511
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
2448
|
-
const Context
|
|
2512
|
+
const Context = {
|
|
2449
2513
|
facets: 'facets',
|
|
2450
2514
|
listings: 'listings',
|
|
2451
2515
|
minilist: 'minilist'
|
|
2452
2516
|
};
|
|
2453
2517
|
|
|
2454
|
-
exports.Context = Context
|
|
2518
|
+
exports.Context = Context;
|
|
2455
2519
|
exports.actions = actions;
|
|
2456
2520
|
exports.doSearch = doSearch;
|
|
2457
2521
|
exports.queries = queries;
|