@zengenti/contensis-react-base 3.0.0-beta.5 → 3.0.0-beta.52
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-3324f784.js → App-478e0b4c.js} +114 -114
- package/cjs/App-478e0b4c.js.map +1 -0
- package/cjs/{RouteLoader-c7957b14.js → RouteLoader-8df335cf.js} +46 -22
- package/cjs/RouteLoader-8df335cf.js.map +1 -0
- package/cjs/ToJs-09204afd.js +129 -0
- package/cjs/ToJs-09204afd.js.map +1 -0
- package/cjs/{actions-a24bf46e.js → actions-6b9ef168.js} +5 -4
- package/cjs/actions-6b9ef168.js.map +1 -0
- package/cjs/client.js +11 -9
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +2888 -84
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-c00d597f.js → fromJSLeaveImmer-65d26804.js} +2 -16
- package/cjs/fromJSLeaveImmer-65d26804.js.map +1 -0
- package/cjs/{login-c810cc4c.js → login-d67b82aa.js} +92 -55
- 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 +6 -5
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +5 -4
- package/cjs/routing.js.map +1 -1
- package/cjs/search.js +295 -146
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-0ec95076.js → selectors-2c1b1183.js} +7 -3
- package/cjs/selectors-2c1b1183.js.map +1 -0
- package/cjs/user.js +21 -12
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +15 -8
- package/cjs/util.js.map +1 -1
- package/cjs/{version-4f0f5fa6.js → version-951bc80c.js} +28 -20
- package/cjs/version-951bc80c.js.map +1 -0
- package/cjs/{version-085d203d.js → version-dcfdafd9.js} +5 -5
- package/cjs/{version-085d203d.js.map → version-dcfdafd9.js.map} +1 -1
- package/esm/{App-1b05ab11.js → App-36e24faa.js} +114 -114
- package/esm/App-36e24faa.js.map +1 -0
- package/esm/{RouteLoader-e5f0e8cb.js → RouteLoader-93c0d740.js} +46 -22
- package/esm/RouteLoader-93c0d740.js.map +1 -0
- package/esm/ToJs-2627ce21.js +99 -0
- package/esm/ToJs-2627ce21.js.map +1 -0
- package/esm/{actions-927d9698.js → actions-5437f43d.js} +5 -4
- package/esm/actions-5437f43d.js.map +1 -0
- package/esm/client.js +12 -10
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +2889 -85
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/{fromJSLeaveImmer-392af4e3.js → fromJSLeaveImmer-e2f0f331.js} +2 -16
- package/esm/fromJSLeaveImmer-e2f0f331.js.map +1 -0
- package/esm/{login-f8ba3aeb.js → login-f6dfbe1b.js} +92 -55
- 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 +8 -7
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +5 -4
- package/esm/routing.js.map +1 -1
- package/esm/search.js +296 -147
- package/esm/search.js.map +1 -1
- package/esm/{selectors-b98d5c76.js → selectors-65f0f31c.js} +7 -4
- package/esm/selectors-65f0f31c.js.map +1 -0
- package/esm/user.js +23 -14
- package/esm/user.js.map +1 -1
- package/esm/util.js +15 -8
- package/esm/util.js.map +1 -1
- package/esm/version-696796d7.js +15 -0
- package/esm/{version-3833e8b5.js.map → version-696796d7.js.map} +1 -1
- package/esm/{version-16aa83eb.js → version-b2ca1dab.js} +27 -20
- package/esm/version-b2ca1dab.js.map +1 -0
- package/models/redux/appstate.d.ts +5 -10
- package/models/redux/selectors/navigation.d.ts +2 -1
- package/models/routing/redux/actions.d.ts +1 -1
- 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/containers/withListing.d.ts +1 -1
- package/models/search/containers/withSearch.d.ts +1 -1
- package/models/search/hooks/useListing.hook.d.ts +3 -0
- package/models/search/hooks/useMinilist.hook.d.ts +2 -9
- package/models/search/index.d.ts +1 -0
- package/models/search/models/Queries.d.ts +8 -5
- package/models/search/models/Search.d.ts +58 -26
- package/models/search/models/SearchActions.d.ts +4 -3
- package/models/search/models/SearchProps.d.ts +31 -4
- package/models/search/models/SearchState.d.ts +5 -1
- package/models/search/models/index.d.ts +2 -1
- package/models/search/redux/actions.d.ts +2 -1
- package/models/search/redux/reducers.d.ts +230 -314
- package/models/search/redux/sagas.d.ts +5 -5
- package/models/search/redux/selectors.d.ts +7 -12
- package/models/search/search/expressions.d.ts +2 -6
- package/models/search/transformations/entry-to-filteritem.mapper.d.ts +2 -1
- 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/search/transformations/index.d.ts +3 -0
- package/models/search/transformations/state-to-searchuri.d.ts +2 -13
- package/models/server/middleware/bundleManipulation.d.ts +2 -1
- package/models/server/util/headers.d.ts +3 -2
- 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 +4 -5
- 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 +279 -521
- package/package.json +9 -5
- package/cjs/App-3324f784.js.map +0 -1
- package/cjs/RouteLoader-c7957b14.js.map +0 -1
- package/cjs/ToJs-a38fa20e.js +0 -230
- package/cjs/ToJs-a38fa20e.js.map +0 -1
- package/cjs/actions-a24bf46e.js.map +0 -1
- package/cjs/fromJSLeaveImmer-c00d597f.js.map +0 -1
- package/cjs/login-c810cc4c.js.map +0 -1
- package/cjs/reducers-fde41d6b.js.map +0 -1
- package/cjs/selectors-0ec95076.js.map +0 -1
- package/cjs/version-4f0f5fa6.js.map +0 -1
- package/esm/App-1b05ab11.js.map +0 -1
- package/esm/RouteLoader-e5f0e8cb.js.map +0 -1
- package/esm/ToJs-879a5a85.js +0 -199
- package/esm/ToJs-879a5a85.js.map +0 -1
- package/esm/actions-927d9698.js.map +0 -1
- package/esm/fromJSLeaveImmer-392af4e3.js.map +0 -1
- package/esm/login-f8ba3aeb.js.map +0 -1
- package/esm/reducers-d6c0edb1.js.map +0 -1
- package/esm/selectors-b98d5c76.js.map +0 -1
- package/esm/version-16aa83eb.js.map +0 -1
- package/esm/version-3833e8b5.js +0 -15
- 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
|
@@ -38,7 +38,6 @@ function _interopNamespace(e) {
|
|
|
38
38
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
39
39
|
var mapJson__default = /*#__PURE__*/_interopDefaultLegacy(mapJson);
|
|
40
40
|
var log__namespace = /*#__PURE__*/_interopNamespace(log);
|
|
41
|
-
var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
|
|
42
41
|
var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
|
|
43
42
|
var equals__default = /*#__PURE__*/_interopDefaultLegacy(equals);
|
|
44
43
|
|
|
@@ -181,11 +180,12 @@ const updateSearchTerm$1 = term => {
|
|
|
181
180
|
term
|
|
182
181
|
};
|
|
183
182
|
};
|
|
184
|
-
const updateSelectedFilters = (filter, key) => {
|
|
183
|
+
const updateSelectedFilters = (filter, key, isUnknownItem = false) => {
|
|
185
184
|
return {
|
|
186
185
|
type: UPDATE_SELECTED_FILTERS,
|
|
187
186
|
filter,
|
|
188
|
-
key
|
|
187
|
+
key,
|
|
188
|
+
isUnknownItem
|
|
189
189
|
};
|
|
190
190
|
};
|
|
191
191
|
const updateSortOrder$1 = (orderBy, facet) => {
|
|
@@ -249,7 +249,7 @@ const getImmutableOrJS = (state, stateKey, fallbackValue, returnType = globalThi
|
|
|
249
249
|
};
|
|
250
250
|
|
|
251
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);
|
|
252
|
+
const getCurrent$1 = (state, context = Context$1.facets) => context === Context$1.facets ? getCurrentFacet(state) : getCurrentListing(state);
|
|
253
253
|
const getCurrentFacet = state => getImmutableOrJS(state, ['search', 'currentFacet']);
|
|
254
254
|
const getCurrentListing = state => getImmutableOrJS(state, ['search', 'currentListing']);
|
|
255
255
|
const getCurrentTab = state => getImmutableOrJS(state, ['search', Context$1.facets, getCurrentFacet(state), 'tabId'], 0);
|
|
@@ -268,14 +268,14 @@ const getFacet = (state, facetName = '', context = Context$1.facets, returnType)
|
|
|
268
268
|
const currentFacet = facetName || getCurrentFacet(state);
|
|
269
269
|
return getImmutableOrJS(state, ['search', context, currentFacet], {}, returnType);
|
|
270
270
|
};
|
|
271
|
-
const getListing = (state, listing = '') => {
|
|
271
|
+
const getListing$1 = (state, listing = '') => {
|
|
272
272
|
const currentListing = listing || getCurrentListing(state);
|
|
273
273
|
return getImmutableOrJS(state, ['search', Context$1.listings, currentListing], {});
|
|
274
274
|
};
|
|
275
275
|
const getFilters = (state, facet, context = Context$1.facets, returnType) => {
|
|
276
|
-
return getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'filters'], {}, returnType);
|
|
276
|
+
return getImmutableOrJS(state, ['search', context, facet || getCurrent$1(state, context), 'filters'], {}, returnType);
|
|
277
277
|
};
|
|
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));
|
|
278
|
+
const getRenderableFilters$1 = (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
279
|
const getFiltersToLoad = (state, facet, context = Context$1.facets, returnType) => {
|
|
280
280
|
const filters = getFilters(state, facet, context, returnType);
|
|
281
281
|
const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [key, (f.items || []).filter(i => {
|
|
@@ -291,51 +291,51 @@ const getSelectedFilters = (state, facet = '', context = Context$1.facets, retur
|
|
|
291
291
|
const selectedFilters = Object.fromEntries(Object.entries(filters).map(([key, filter = {}]) => [key, (filter.items || []).filter(item => !!(item.isSelected || false)).map(item => {
|
|
292
292
|
const key = (item === null || item === void 0 ? void 0 : item.key) || '';
|
|
293
293
|
const isIsoDate = isoDateRegex.test(key);
|
|
294
|
-
return isIsoDate ? key : key.toLowerCase();
|
|
294
|
+
return isIsoDate ? key : typeof key.toLowerCase !== 'undefined' ? key.toLowerCase() : key;
|
|
295
295
|
})]));
|
|
296
296
|
const fromJS = makeFromJS(returnType);
|
|
297
297
|
return fromJS(selectedFilters);
|
|
298
298
|
};
|
|
299
299
|
const getResults = (state, current = '', context = Context$1.facets, returnType) => {
|
|
300
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'results'], [], returnType);
|
|
300
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'results'], [], returnType);
|
|
301
301
|
};
|
|
302
302
|
const getIsInternalPaging = (state, current, context = Context$1.facets) => {
|
|
303
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'queryParams', 'internalPaging'], false);
|
|
303
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'queryParams', 'internalPaging'], false);
|
|
304
304
|
};
|
|
305
305
|
const getIsLoaded = (state, context = Context$1.facets, facet) => {
|
|
306
|
-
return !!getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'queryDuration'], 0);
|
|
306
|
+
return !!getImmutableOrJS(state, ['search', context, facet || getCurrent$1(state, context), 'queryDuration'], 0);
|
|
307
307
|
};
|
|
308
|
-
const getIsLoading = (state, context = Context$1.facets, facet) => {
|
|
309
|
-
return getImmutableOrJS(state, ['search', context, facet || getCurrent(state, context), 'entries', 'isLoading']);
|
|
308
|
+
const getIsLoading$1 = (state, context = Context$1.facets, facet) => {
|
|
309
|
+
return getImmutableOrJS(state, ['search', context, facet || getCurrent$1(state, context), 'entries', 'isLoading']);
|
|
310
310
|
};
|
|
311
311
|
const getIsSsr = state => getImmutableOrJS(state, ['search', 'config', 'ssr'], false);
|
|
312
|
-
const getFeaturedResults = (state, current = '', context = Context$1.facets) => {
|
|
313
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'featuredResults'], []);
|
|
312
|
+
const getFeaturedResults$1 = (state, current = '', context = Context$1.facets, returnType) => {
|
|
313
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'featuredResults'], [], returnType);
|
|
314
314
|
};
|
|
315
315
|
const getPaging = (state, current = '', context = Context$1.facets, returnType) => {
|
|
316
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo'], {}, returnType);
|
|
316
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo'], {}, returnType);
|
|
317
317
|
};
|
|
318
|
-
const getPageIndex = (state, current = '', context = Context$1.facets) => {
|
|
319
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'pageIndex']);
|
|
318
|
+
const getPageIndex$1 = (state, current = '', context = Context$1.facets) => {
|
|
319
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo', 'pageIndex']);
|
|
320
320
|
};
|
|
321
321
|
const getPrevPageIndex = (state, current = '', context = Context$1.facets) => {
|
|
322
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'prevPageIndex']);
|
|
322
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo', 'prevPageIndex']);
|
|
323
323
|
};
|
|
324
|
-
const getPageIsLoading = (state, current = '', context = Context$1.facets) => {
|
|
325
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'isLoading']);
|
|
324
|
+
const getPageIsLoading$1 = (state, current = '', context = Context$1.facets) => {
|
|
325
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo', 'isLoading']);
|
|
326
326
|
};
|
|
327
327
|
const getPagesLoaded = (state, current = '', context = Context$1.facets) => {
|
|
328
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'pagesLoaded'], [], 'js');
|
|
328
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo', 'pagesLoaded'], [], 'js');
|
|
329
329
|
};
|
|
330
330
|
const getTotalCount = (state, current = '', context = Context$1.facets) => {
|
|
331
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'pagingInfo', 'totalCount']);
|
|
331
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'pagingInfo', 'totalCount']);
|
|
332
332
|
};
|
|
333
|
-
const getSearchTerm = state => getImmutableOrJS(state, ['search', 'term']);
|
|
333
|
+
const getSearchTerm$1 = state => getImmutableOrJS(state, ['search', 'term']);
|
|
334
334
|
const getSearchTabs = (state, returnType) => getImmutableOrJS(state, ['search', 'tabs'], [], returnType);
|
|
335
335
|
const getQueryParams = (state, current = '', context = Context$1.facets) => {
|
|
336
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'queryParams'], {}, 'js');
|
|
336
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'queryParams'], {}, 'js');
|
|
337
337
|
};
|
|
338
|
-
const getQueryParameter = ({
|
|
338
|
+
const getQueryParameter$1 = ({
|
|
339
339
|
state,
|
|
340
340
|
facet,
|
|
341
341
|
context = Context$1.facets
|
|
@@ -343,10 +343,10 @@ const getQueryParameter = ({
|
|
|
343
343
|
return getImmutableOrJS(getQueryParams(state, facet, context), key, ifnull, 'js');
|
|
344
344
|
};
|
|
345
345
|
const getCustomApi = (state, current, context = Context$1.facets, returnType) => {
|
|
346
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'customApi'], null, returnType);
|
|
346
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'customApi'], null, returnType);
|
|
347
347
|
};
|
|
348
348
|
const getCustomEnv = (state, current, context = Context$1.facets) => {
|
|
349
|
-
return getImmutableOrJS(state, ['search', context, current || getCurrent(state, context), 'env']);
|
|
349
|
+
return getImmutableOrJS(state, ['search', context, current || getCurrent$1(state, context), 'env']);
|
|
350
350
|
};
|
|
351
351
|
const getTabsAndFacets = (state, returnType) => {
|
|
352
352
|
const tabs = getSearchTabs(state, 'js');
|
|
@@ -392,69 +392,70 @@ const selectFacets = {
|
|
|
392
392
|
getFacetTitles,
|
|
393
393
|
getFacets,
|
|
394
394
|
getFacetsTotalCount,
|
|
395
|
-
getFeaturedResults,
|
|
395
|
+
getFeaturedResults: getFeaturedResults$1,
|
|
396
396
|
getFilters,
|
|
397
397
|
getFiltersToLoad,
|
|
398
398
|
getIsLoaded,
|
|
399
|
-
getIsLoading,
|
|
400
|
-
getPageIndex,
|
|
401
|
-
getPageIsLoading,
|
|
399
|
+
getIsLoading: getIsLoading$1,
|
|
400
|
+
getPageIndex: getPageIndex$1,
|
|
401
|
+
getPageIsLoading: getPageIsLoading$1,
|
|
402
402
|
getPagesLoaded,
|
|
403
403
|
getPaging,
|
|
404
404
|
getQueryParams: (state, facet) => getQueryParams(state, facet, Context$1.facets),
|
|
405
405
|
getQueryParameter: ({
|
|
406
406
|
state,
|
|
407
407
|
facet
|
|
408
|
-
}, key, ifnull) => getQueryParameter({
|
|
408
|
+
}, key, ifnull) => getQueryParameter$1({
|
|
409
409
|
state,
|
|
410
410
|
facet,
|
|
411
411
|
context: Context$1.facets
|
|
412
412
|
}, key, ifnull),
|
|
413
|
-
getRenderableFilters,
|
|
413
|
+
getRenderableFilters: getRenderableFilters$1,
|
|
414
414
|
getResults,
|
|
415
415
|
getTabFacets,
|
|
416
416
|
getTabsAndFacets,
|
|
417
417
|
getTotalCount,
|
|
418
418
|
getSearchTabs,
|
|
419
|
-
getSearchTerm,
|
|
419
|
+
getSearchTerm: getSearchTerm$1,
|
|
420
420
|
getSearchTotalCount,
|
|
421
421
|
getSelectedFilters
|
|
422
422
|
}; // An exported copy of the relevant selectors pre-scoped to a listing context
|
|
423
423
|
|
|
424
424
|
const selectListing = {
|
|
425
425
|
getCurrent: getCurrentListing,
|
|
426
|
-
getFeaturedResults: (state, listing = '') => getFeaturedResults(state, listing, Context$1.listings),
|
|
427
|
-
getFilters: (state, listing = '') => getFilters(state, listing, Context$1.listings),
|
|
426
|
+
getFeaturedResults: (state, listing = '') => getFeaturedResults$1(state, listing, Context$1.listings, 'js'),
|
|
427
|
+
getFilters: (state, listing = '') => getFilters(state, listing, Context$1.listings, 'js'),
|
|
428
428
|
getFiltersToLoad: (state, listing = '') => getFiltersToLoad(state, listing, Context$1.listings),
|
|
429
|
-
getListing,
|
|
429
|
+
getListing: getListing$1,
|
|
430
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),
|
|
431
|
+
getIsLoading: state => getIsLoading$1(state, Context$1.listings),
|
|
432
|
+
getPageIndex: (state, listing = '') => getPageIndex$1(state, listing, Context$1.listings),
|
|
433
|
+
getPaging: (state, listing = '') => getPaging(state, listing, Context$1.listings, 'js'),
|
|
434
|
+
getPageIsLoading: (state, listing = '') => getPageIsLoading$1(state, listing, Context$1.listings),
|
|
435
435
|
getPagesLoaded: (state, listing = '') => getPagesLoaded(state, listing, Context$1.listings),
|
|
436
436
|
getQueryParams: (state, listing = '') => getQueryParams(state, listing, Context$1.listings),
|
|
437
437
|
getQueryParameter: ({
|
|
438
438
|
state,
|
|
439
439
|
facet
|
|
440
|
-
}, key, ifnull) => getQueryParameter({
|
|
440
|
+
}, key, ifnull) => getQueryParameter$1({
|
|
441
441
|
state,
|
|
442
442
|
facet,
|
|
443
443
|
context: Context$1.listings
|
|
444
444
|
}, key, ifnull),
|
|
445
|
-
getRenderableFilters: (state, listing = '') => getRenderableFilters(state, listing, Context$1.listings),
|
|
446
|
-
getResults: (state, listing = '') => getResults(state, listing, Context$1.listings),
|
|
447
|
-
getSearchTerm,
|
|
445
|
+
getRenderableFilters: (state, listing = '') => getRenderableFilters$1(state, listing, Context$1.listings),
|
|
446
|
+
getResults: (state, listing = '') => getResults(state, listing, Context$1.listings, 'js'),
|
|
447
|
+
getSearchTerm: getSearchTerm$1,
|
|
448
448
|
getTotalCount: (state, listing = '') => getTotalCount(state, listing, Context$1.listings),
|
|
449
|
-
getSelectedFilters: (state, listing = '') => getSelectedFilters(state, listing, Context$1.listings)
|
|
449
|
+
getSelectedFilters: (state, listing = '') => getSelectedFilters(state, listing, Context$1.listings, 'js')
|
|
450
450
|
};
|
|
451
451
|
const selectCurrentPath = state => getImmutableOrJS(state, ['routing', 'currentPath']);
|
|
452
|
+
const selectCurrentProject = state => getImmutableOrJS(state, ['routing', 'currentProject']);
|
|
452
453
|
const selectVersionStatus = state => getImmutableOrJS(state, ['version', 'contensisVersionStatus']);
|
|
453
454
|
|
|
454
455
|
var selectors = /*#__PURE__*/Object.freeze({
|
|
455
456
|
__proto__: null,
|
|
456
457
|
getSearchContext: getSearchContext,
|
|
457
|
-
getCurrent: getCurrent,
|
|
458
|
+
getCurrent: getCurrent$1,
|
|
458
459
|
getCurrentFacet: getCurrentFacet,
|
|
459
460
|
getCurrentListing: getCurrentListing,
|
|
460
461
|
getCurrentTab: getCurrentTab,
|
|
@@ -462,27 +463,27 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
462
463
|
getTabFacets: getTabFacets,
|
|
463
464
|
getFacetTitles: getFacetTitles,
|
|
464
465
|
getFacet: getFacet,
|
|
465
|
-
getListing: getListing,
|
|
466
|
+
getListing: getListing$1,
|
|
466
467
|
getFilters: getFilters,
|
|
467
|
-
getRenderableFilters: getRenderableFilters,
|
|
468
|
+
getRenderableFilters: getRenderableFilters$1,
|
|
468
469
|
getFiltersToLoad: getFiltersToLoad,
|
|
469
470
|
getSelectedFilters: getSelectedFilters,
|
|
470
471
|
getResults: getResults,
|
|
471
472
|
getIsInternalPaging: getIsInternalPaging,
|
|
472
473
|
getIsLoaded: getIsLoaded,
|
|
473
|
-
getIsLoading: getIsLoading,
|
|
474
|
+
getIsLoading: getIsLoading$1,
|
|
474
475
|
getIsSsr: getIsSsr,
|
|
475
|
-
getFeaturedResults: getFeaturedResults,
|
|
476
|
+
getFeaturedResults: getFeaturedResults$1,
|
|
476
477
|
getPaging: getPaging,
|
|
477
|
-
getPageIndex: getPageIndex,
|
|
478
|
+
getPageIndex: getPageIndex$1,
|
|
478
479
|
getPrevPageIndex: getPrevPageIndex,
|
|
479
|
-
getPageIsLoading: getPageIsLoading,
|
|
480
|
+
getPageIsLoading: getPageIsLoading$1,
|
|
480
481
|
getPagesLoaded: getPagesLoaded,
|
|
481
482
|
getTotalCount: getTotalCount,
|
|
482
|
-
getSearchTerm: getSearchTerm,
|
|
483
|
+
getSearchTerm: getSearchTerm$1,
|
|
483
484
|
getSearchTabs: getSearchTabs,
|
|
484
485
|
getQueryParams: getQueryParams,
|
|
485
|
-
getQueryParameter: getQueryParameter,
|
|
486
|
+
getQueryParameter: getQueryParameter$1,
|
|
486
487
|
getCustomApi: getCustomApi,
|
|
487
488
|
getCustomEnv: getCustomEnv,
|
|
488
489
|
getTabsAndFacets: getTabsAndFacets,
|
|
@@ -491,12 +492,12 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
491
492
|
selectFacets: selectFacets,
|
|
492
493
|
selectListing: selectListing,
|
|
493
494
|
selectCurrentPath: selectCurrentPath,
|
|
495
|
+
selectCurrentProject: selectCurrentProject,
|
|
494
496
|
selectVersionStatus: selectVersionStatus
|
|
495
497
|
});
|
|
496
498
|
|
|
497
499
|
// eslint-disable-next-line import/default
|
|
498
500
|
|
|
499
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
500
501
|
const withSearch = mappers => SearchComponent => {
|
|
501
502
|
const Wrapper = props => {
|
|
502
503
|
return /*#__PURE__*/React__default["default"].createElement(SearchComponent, props);
|
|
@@ -507,22 +508,23 @@ const withSearch = mappers => SearchComponent => {
|
|
|
507
508
|
const mapStateToProps = state => {
|
|
508
509
|
return {
|
|
509
510
|
currentFacet: getCurrentFacet(state),
|
|
510
|
-
currentPageIndex: getPageIndex(state),
|
|
511
|
+
currentPageIndex: getPageIndex$1(state),
|
|
511
512
|
currentTabIndex: getCurrentTab(state),
|
|
512
513
|
facet: getFacet(state),
|
|
513
514
|
facets: getTabFacets(state),
|
|
514
515
|
facetsTotalCount: getFacetsTotalCount(state),
|
|
515
516
|
facetTitles: getFacetTitles(state),
|
|
516
|
-
featuredResults: getFeaturedResults(state),
|
|
517
|
-
filters: getRenderableFilters(state),
|
|
518
|
-
isLoading: getIsLoading(state),
|
|
517
|
+
featuredResults: getFeaturedResults$1(state),
|
|
518
|
+
filters: getRenderableFilters$1(state),
|
|
519
|
+
isLoading: getIsLoading$1(state),
|
|
519
520
|
paging: getPaging(state),
|
|
520
|
-
pageIsLoading: getPageIsLoading(state),
|
|
521
|
+
pageIsLoading: getPageIsLoading$1(state),
|
|
521
522
|
results: getResults(state),
|
|
522
523
|
resultsInfo: (mappers === null || mappers === void 0 ? void 0 : mappers.resultsInfo) && mappers.resultsInfo(state),
|
|
523
|
-
searchTerm: getSearchTerm(state),
|
|
524
|
+
searchTerm: getSearchTerm$1(state),
|
|
524
525
|
searchTotalCount: getSearchTotalCount(state),
|
|
525
|
-
|
|
526
|
+
selectedFilters: getSelectedFilters(state),
|
|
527
|
+
sortOrder: getQueryParameter$1({
|
|
526
528
|
state
|
|
527
529
|
}, 'dynamicOrderBy', []),
|
|
528
530
|
tabsAndFacets: getTabsAndFacets(state),
|
|
@@ -536,7 +538,7 @@ const withSearch = mappers => SearchComponent => {
|
|
|
536
538
|
updateCurrentTab: id => withMappers(updateCurrentTab$1(id), mappers),
|
|
537
539
|
updatePageIndex: pageIndex => withMappers(updatePageIndex$1(pageIndex), mappers),
|
|
538
540
|
updateSearchTerm: term => withMappers(updateSearchTerm$1(term), mappers),
|
|
539
|
-
updateSelectedFilters: (filter, key) => withMappers(updateSelectedFilters(filter, key), mappers),
|
|
541
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
540
542
|
updateSortOrder: orderBy => withMappers(updateSortOrder$1(orderBy), mappers)
|
|
541
543
|
};
|
|
542
544
|
const connector = reactRedux.connect(mapStateToProps, mapDispatchToProps);
|
|
@@ -576,6 +578,7 @@ const withListing = mappers => ListingComponent => {
|
|
|
576
578
|
results: getResults(state),
|
|
577
579
|
resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
|
|
578
580
|
searchTerm: getSearchTerm(state),
|
|
581
|
+
selectedFilters: getSelectedFilters(state),
|
|
579
582
|
sortOrder: getQueryParameter({
|
|
580
583
|
state
|
|
581
584
|
}, 'dynamicOrderBy', [])
|
|
@@ -587,7 +590,7 @@ const withListing = mappers => ListingComponent => {
|
|
|
587
590
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet$1(facet), mappers),
|
|
588
591
|
updatePageIndex: pageIndex => withMappers(updatePageIndex$1(pageIndex), mappers),
|
|
589
592
|
updateSearchTerm: term => withMappers(updateSearchTerm$1(term), mappers),
|
|
590
|
-
updateSelectedFilters: (filter, key) => withMappers(updateSelectedFilters(filter, key), mappers),
|
|
593
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
591
594
|
updateSortOrder: orderBy => withMappers(updateSortOrder$1(orderBy), mappers)
|
|
592
595
|
};
|
|
593
596
|
return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS$1(Wrapper));
|
|
@@ -799,7 +802,7 @@ const extractQuotedPhrases = searchTerm => {
|
|
|
799
802
|
return (searchTerm.match(pattern) || []).map(match => match.replace(/"/g, ''));
|
|
800
803
|
};
|
|
801
804
|
const buildUrl = (route, params) => {
|
|
802
|
-
const qs =
|
|
805
|
+
const qs = queryString.stringify(params);
|
|
803
806
|
const path = qs ? `${route}?${qs}` : route;
|
|
804
807
|
return path;
|
|
805
808
|
};
|
|
@@ -875,12 +878,12 @@ const Fields = {
|
|
|
875
878
|
};
|
|
876
879
|
|
|
877
880
|
const fieldExpression = (field, value, operator = 'equalTo', weight) => {
|
|
878
|
-
if (!field || !value) return [];
|
|
881
|
+
if (!field || !value || Array.isArray(value) && value.length === 0) return [];
|
|
879
882
|
if (Array.isArray(field)) // If an array of fieldIds have been provided, call self for each fieldId
|
|
880
883
|
// to generate expressions that are combined with an 'or' operator
|
|
881
884
|
return [contensisCoreApi.Op.or(...field.map(fieldId => fieldExpression(fieldId, value, operator, weight)).flat())];
|
|
882
885
|
if (operator === 'between') return between(field, value);
|
|
883
|
-
if (Array.isArray(value)) return equalToOrIn(field, value, operator);else return !weight ?
|
|
886
|
+
if (Array.isArray(value)) return equalToOrIn(field, value, operator);else return !weight ? equalToOrIn(field, value, operator) : [equalToOrIn(field, value, operator)[0].weight(weight)];
|
|
884
887
|
};
|
|
885
888
|
const contentTypeIdExpression = (contentTypeIds, webpageTemplates, assetTypes) => {
|
|
886
889
|
const expressions = [];
|
|
@@ -904,8 +907,17 @@ const contentTypeIdExpression = (contentTypeIds, webpageTemplates, assetTypes) =
|
|
|
904
907
|
const filterExpressions = filters => {
|
|
905
908
|
if (!filters) return [];
|
|
906
909
|
const expressions = [];
|
|
907
|
-
filters.map(
|
|
908
|
-
|
|
910
|
+
filters.map(selectedFilter => {
|
|
911
|
+
if (selectedFilter.logicOperator === 'and') // using 'and' logic operator we loop through each filter
|
|
912
|
+
// and loop through all values to add an expression for each filter value
|
|
913
|
+
selectedFilter.values.forEach(value => expressions.push(...fieldExpression(selectedFilter.key, value, selectedFilter.fieldOperator || 'equalTo')));else if (selectedFilter.logicOperator === 'not') {
|
|
914
|
+
const fieldExpressions = fieldExpression(selectedFilter.key, selectedFilter.values, selectedFilter.fieldOperator || 'in');
|
|
915
|
+
fieldExpressions.forEach(expr => {
|
|
916
|
+
expressions.push(contensisCoreApi.Op.not(expr));
|
|
917
|
+
});
|
|
918
|
+
} // using 'or' logic operator we loop over each filter
|
|
919
|
+
// and simply add the array of values to an expression with an 'in' operator
|
|
920
|
+
else expressions.push(...fieldExpression(selectedFilter.key, selectedFilter.values, selectedFilter.fieldOperator || 'in'));
|
|
909
921
|
});
|
|
910
922
|
return expressions;
|
|
911
923
|
};
|
|
@@ -922,8 +934,8 @@ const dataFormatExpression = (contentTypeIds, dataFormat = DataFormats.entry) =>
|
|
|
922
934
|
const withExpr = fieldExpression(Fields.sys.contentTypeId, withContentTypeIds)[0];
|
|
923
935
|
const notExpr = contensisCoreApi.Op.not(fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]);
|
|
924
936
|
andExpr.add(dataFormatExpr);
|
|
925
|
-
if (withContentTypeIds.length > 0) andExpr.add(withExpr);
|
|
926
|
-
if (notContentTypeIds.length > 0) andExpr.add(notExpr);
|
|
937
|
+
if (withContentTypeIds.length > 0 && withExpr) andExpr.add(withExpr);
|
|
938
|
+
if (notContentTypeIds.length > 0 && notExpr) andExpr.add(notExpr);
|
|
927
939
|
return [andExpr];
|
|
928
940
|
}
|
|
929
941
|
|
|
@@ -979,19 +991,48 @@ const equalToOrIn = (field, value, operator = 'equalTo') => {
|
|
|
979
991
|
if (value.length === 0) return [];
|
|
980
992
|
|
|
981
993
|
if (Array.isArray(value)) {
|
|
982
|
-
if (
|
|
983
|
-
return [contensisCoreApi.Op.
|
|
994
|
+
if (operator === 'equalTo' || operator === 'in') return [contensisCoreApi.Op.in(field, ...value)];
|
|
995
|
+
return [contensisCoreApi.Op.or(...value.map(innerValue => {
|
|
996
|
+
switch (operator) {
|
|
997
|
+
case 'between':
|
|
998
|
+
case 'distanceWithin':
|
|
999
|
+
// Not implemented
|
|
1000
|
+
return contensisCoreApi.Op.equalTo(field, innerValue);
|
|
1001
|
+
|
|
1002
|
+
case 'exists':
|
|
1003
|
+
return contensisCoreApi.Op.exists(field, innerValue);
|
|
1004
|
+
|
|
1005
|
+
case 'freeText':
|
|
1006
|
+
// TODO: Potentially needs further implementation of new options
|
|
1007
|
+
return contensisCoreApi.Op[operator](field, innerValue, false, undefined);
|
|
1008
|
+
|
|
1009
|
+
default:
|
|
1010
|
+
return contensisCoreApi.Op[operator](field, innerValue);
|
|
1011
|
+
}
|
|
1012
|
+
}))];
|
|
984
1013
|
}
|
|
985
1014
|
|
|
986
|
-
|
|
1015
|
+
switch (operator) {
|
|
1016
|
+
case 'between':
|
|
1017
|
+
case 'distanceWithin':
|
|
1018
|
+
// Not implemented
|
|
1019
|
+
return [contensisCoreApi.Op.equalTo(field, value)];
|
|
1020
|
+
|
|
1021
|
+
case 'freeText':
|
|
1022
|
+
// TODO: Potentially needs further implementation of new options
|
|
1023
|
+
return [contensisCoreApi.Op[operator](field, value, false, undefined)];
|
|
1024
|
+
|
|
1025
|
+
default:
|
|
1026
|
+
return [contensisCoreApi.Op[operator](field, value)];
|
|
1027
|
+
}
|
|
987
1028
|
};
|
|
988
1029
|
|
|
989
1030
|
const between = (field, value) => {
|
|
990
1031
|
const handle = betweenValue => {
|
|
991
|
-
const valArr = betweenValue.split('
|
|
1032
|
+
const valArr = betweenValue.split('--');
|
|
992
1033
|
|
|
993
1034
|
if (valArr.length > 1) {
|
|
994
|
-
const [minimum, maximum
|
|
1035
|
+
const [minimum, maximum] = valArr;
|
|
995
1036
|
return contensisCoreApi.Op.between(field, minimum, maximum);
|
|
996
1037
|
} else {
|
|
997
1038
|
// eslint-disable-next-line no-console
|
|
@@ -1001,10 +1042,9 @@ const between = (field, value) => {
|
|
|
1001
1042
|
};
|
|
1002
1043
|
|
|
1003
1044
|
if (value.length === 0) return [];
|
|
1004
|
-
if (Array.isArray(value)) return [contensisCoreApi.Op.or(...value.map(handle).filter(bc => bc !== false))];
|
|
1005
|
-
|
|
1045
|
+
if (Array.isArray(value)) return [contensisCoreApi.Op.or(...value.map(handle).filter(bc => bc !== false))];
|
|
1006
1046
|
const op = handle(value);
|
|
1007
|
-
return op ? [op] : [];
|
|
1047
|
+
return op ? [op] : [];
|
|
1008
1048
|
};
|
|
1009
1049
|
/**
|
|
1010
1050
|
* Accept HTTP style objects and map them to
|
|
@@ -1047,7 +1087,7 @@ const customWhereExpressions = where => {
|
|
|
1047
1087
|
// the second property inside the clause
|
|
1048
1088
|
|
|
1049
1089
|
if (notIdx === 1) {
|
|
1050
|
-
expression = contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue));
|
|
1090
|
+
expression = innerOperator === 'between' ? contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue[0], innerValue[1])) : contensisCoreApi.Op.not(contensisCoreApi.Op[innerOperator](innerField, innerValue));
|
|
1051
1091
|
}
|
|
1052
1092
|
});
|
|
1053
1093
|
}
|
|
@@ -1059,8 +1099,9 @@ const customWhereExpressions = where => {
|
|
|
1059
1099
|
|
|
1060
1100
|
if (idx === 1 && // operator !== 'and' &&
|
|
1061
1101
|
// operator !== 'or' &&
|
|
1062
|
-
operator !== 'between' &&
|
|
1063
|
-
|
|
1102
|
+
// operator !== 'between' &&
|
|
1103
|
+
operator !== 'distanceWithin') {
|
|
1104
|
+
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);
|
|
1064
1105
|
if (typeof weight === 'number') expression = expression.weight(weight);
|
|
1065
1106
|
}
|
|
1066
1107
|
});
|
|
@@ -1190,20 +1231,16 @@ const searchUriTemplate = {
|
|
|
1190
1231
|
|
|
1191
1232
|
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(',')]));
|
|
1192
1233
|
const currentSearch = !term && getImmutableOrJS(state, ['routing', 'location', 'search']);
|
|
1193
|
-
const currentQs = removeEmptyAttributes(
|
|
1234
|
+
const currentQs = removeEmptyAttributes(queryString.parse(currentSearch));
|
|
1194
1235
|
if (orderBy) currentQs.orderBy = orderBy;
|
|
1195
|
-
const searchTerm = getSearchTerm(state); //
|
|
1196
|
-
// to build the new Qs.
|
|
1236
|
+
const searchTerm = getSearchTerm$1(state); // Merge the stateFilters with any current qs to build the new qs
|
|
1197
1237
|
|
|
1198
1238
|
const mergedSearch = removeEmptyAttributes({ ...merge__default["default"](currentQs, stateFilters),
|
|
1199
1239
|
term: searchTerm
|
|
1200
1240
|
});
|
|
1201
|
-
return
|
|
1241
|
+
return queryString.stringify(mergedSearch);
|
|
1202
1242
|
},
|
|
1203
|
-
hash:
|
|
1204
|
-
$path: 'state',
|
|
1205
|
-
$formatting: state => getImmutableOrJS(state, ['routing', 'location', 'hash'], '').replace('#', '')
|
|
1206
|
-
}
|
|
1243
|
+
hash: state => getImmutableOrJS(state, ['routing', 'location', 'hash'], '').replace('#', '')
|
|
1207
1244
|
};
|
|
1208
1245
|
|
|
1209
1246
|
const mapStateToSearchUri = params => mapJson__default["default"](params, searchUriTemplate);
|
|
@@ -1348,14 +1385,15 @@ const filterTemplate = {
|
|
|
1348
1385
|
const filterExpressionMapper = {
|
|
1349
1386
|
// Expression type: so we can identify how to build the query
|
|
1350
1387
|
expressionType: ({
|
|
1351
|
-
|
|
1352
|
-
}) =>
|
|
1388
|
+
contentTypeId
|
|
1389
|
+
}) => contentTypeId ? FilterExpressionTypes.contentType : FilterExpressionTypes.field,
|
|
1353
1390
|
// Key: so we can target the query to a specific field
|
|
1354
|
-
key: '
|
|
1391
|
+
key: 'fieldId',
|
|
1355
1392
|
// Value: so we can filter a specific field by an array of values
|
|
1356
1393
|
// e.g. taxonomy key or contentTypeId array
|
|
1357
|
-
|
|
1358
|
-
|
|
1394
|
+
values: 'selectedValues',
|
|
1395
|
+
fieldOperator: 'fieldOperator',
|
|
1396
|
+
logicOperator: 'logicOperator'
|
|
1359
1397
|
};
|
|
1360
1398
|
|
|
1361
1399
|
const mapFilterToFilterExpression = filter => mapJson__default["default"](filter, filterExpressionMapper);
|
|
@@ -1365,18 +1403,15 @@ const mapFiltersToFilterExpression = (filters, selectedFilters) => {
|
|
|
1365
1403
|
const filterExpressions = []; // Iterate through the keys in selectedFilters and locate
|
|
1366
1404
|
// the items that are selected and queryable
|
|
1367
1405
|
|
|
1368
|
-
Object.entries(selectedFilters).map(([fkey,
|
|
1406
|
+
Object.entries(selectedFilters).map(([fkey, selectedValues]) => {
|
|
1369
1407
|
const filter = filters[fkey];
|
|
1370
1408
|
|
|
1371
|
-
if (
|
|
1372
|
-
|
|
1409
|
+
if (selectedValues && filter) {
|
|
1410
|
+
// Where we have a value for a selectedFilter
|
|
1373
1411
|
// and a filter is found for the current key
|
|
1374
1412
|
// map the filter to a filterExpression object
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
filter,
|
|
1378
|
-
selectedItems,
|
|
1379
|
-
selectedValue
|
|
1413
|
+
const expr = mapFilterToFilterExpression({ ...filter,
|
|
1414
|
+
selectedValues
|
|
1380
1415
|
});
|
|
1381
1416
|
filterExpressions.push(expr);
|
|
1382
1417
|
}
|
|
@@ -1385,10 +1420,10 @@ const mapFiltersToFilterExpression = (filters, selectedFilters) => {
|
|
|
1385
1420
|
};
|
|
1386
1421
|
|
|
1387
1422
|
const queryParamsTemplate = {
|
|
1388
|
-
assetTypes: root => getQueryParameter(root, 'assetTypes', []),
|
|
1389
|
-
contentTypeIds: root => getQueryParameter(root, 'contentTypeIds', []),
|
|
1390
|
-
customWhere: root => getQueryParameter(root, 'customWhere', []),
|
|
1391
|
-
dynamicOrderBy: root => getQueryParameter(root, 'dynamicOrderBy', []),
|
|
1423
|
+
assetTypes: root => getQueryParameter$1(root, 'assetTypes', []),
|
|
1424
|
+
contentTypeIds: root => getQueryParameter$1(root, 'contentTypeIds', []),
|
|
1425
|
+
customWhere: root => getQueryParameter$1(root, 'customWhere', []),
|
|
1426
|
+
dynamicOrderBy: root => getQueryParameter$1(root, 'dynamicOrderBy', []),
|
|
1392
1427
|
env: ({
|
|
1393
1428
|
state,
|
|
1394
1429
|
facet,
|
|
@@ -1403,8 +1438,8 @@ const queryParamsTemplate = {
|
|
|
1403
1438
|
if (excludeIds) return Array.isArray(excludeIds) ? excludeIds : excludeIds.split(',').map(id => id.trim());
|
|
1404
1439
|
return null;
|
|
1405
1440
|
},
|
|
1406
|
-
featuredResults: root => getQueryParameter(root, 'featuredResults', null),
|
|
1407
|
-
fields: root => getQueryParameter(root, 'fields', []),
|
|
1441
|
+
featuredResults: root => getQueryParameter$1(root, 'featuredResults', null),
|
|
1442
|
+
fields: root => getQueryParameter$1(root, 'fields', []),
|
|
1408
1443
|
filters: ({
|
|
1409
1444
|
state,
|
|
1410
1445
|
facet,
|
|
@@ -1416,28 +1451,28 @@ const queryParamsTemplate = {
|
|
|
1416
1451
|
const filterParams = mapFiltersToFilterExpression(stateFilters, selectedFilters);
|
|
1417
1452
|
return filterParams;
|
|
1418
1453
|
},
|
|
1419
|
-
includeInSearchFields: root => getQueryParameter(root, 'includeInSearch', []),
|
|
1454
|
+
includeInSearchFields: root => getQueryParameter$1(root, 'includeInSearch', []),
|
|
1420
1455
|
internalPageIndex: ({
|
|
1421
1456
|
action,
|
|
1422
1457
|
state
|
|
1423
|
-
}) => getPageIndex(state, '', action.context),
|
|
1424
|
-
internalPaging: root => getQueryParameter(root, 'internalPaging', false),
|
|
1458
|
+
}) => getPageIndex$1(state, '', action.context),
|
|
1459
|
+
internalPaging: root => getQueryParameter$1(root, 'internalPaging', false),
|
|
1425
1460
|
languages: ({
|
|
1426
1461
|
action
|
|
1427
1462
|
}) => action.defaultLang ? [action.defaultLang] : [],
|
|
1428
|
-
linkDepth: root => getQueryParameter(root, 'linkDepth', 0),
|
|
1429
|
-
loadMorePaging: root => getQueryParameter(root, 'loadMorePaging', false),
|
|
1430
|
-
orderBy: root => getQueryParameter(root, 'orderBy', []),
|
|
1463
|
+
linkDepth: root => getQueryParameter$1(root, 'linkDepth', 0),
|
|
1464
|
+
loadMorePaging: root => getQueryParameter$1(root, 'loadMorePaging', false),
|
|
1465
|
+
orderBy: root => getQueryParameter$1(root, 'orderBy', []),
|
|
1431
1466
|
pageIndex: root => {
|
|
1432
1467
|
const {
|
|
1433
1468
|
action,
|
|
1434
1469
|
state
|
|
1435
1470
|
} = root;
|
|
1436
|
-
if (getQueryParameter(root, 'internalPaging', false)) return 0;
|
|
1471
|
+
if (getQueryParameter$1(root, 'internalPaging', false)) return 0;
|
|
1437
1472
|
if (action.type === UPDATE_PAGE_INDEX) return action.params.pageIndex;
|
|
1438
|
-
return !action.preload ? getPageIndex(state,
|
|
1473
|
+
return !action.preload ? getPageIndex$1(state, action.facet, action.context) : 0;
|
|
1439
1474
|
},
|
|
1440
|
-
pageSize: root => getQueryParameter(root, 'pageSize'),
|
|
1475
|
+
pageSize: root => getQueryParameter$1(root, 'pageSize'),
|
|
1441
1476
|
pagesLoaded: ({
|
|
1442
1477
|
state,
|
|
1443
1478
|
facet,
|
|
@@ -1455,9 +1490,9 @@ const queryParamsTemplate = {
|
|
|
1455
1490
|
}) => {
|
|
1456
1491
|
var _getFacet;
|
|
1457
1492
|
|
|
1458
|
-
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);
|
|
1459
1494
|
},
|
|
1460
|
-
searchTerm: root => root.context !== Context$1.minilist || getQueryParameter(root, 'useSearchTerm', false) ? getSearchTerm(root.state) : '',
|
|
1495
|
+
searchTerm: root => root.context !== Context$1.minilist || getQueryParameter$1(root, 'useSearchTerm', false) ? getSearchTerm$1(root.state) : '',
|
|
1461
1496
|
selectedFilters: ({
|
|
1462
1497
|
state,
|
|
1463
1498
|
facet,
|
|
@@ -1467,11 +1502,11 @@ const queryParamsTemplate = {
|
|
|
1467
1502
|
state
|
|
1468
1503
|
}) => selectVersionStatus(state),
|
|
1469
1504
|
weightedSearchFields: root => {
|
|
1470
|
-
const wsf = getQueryParameter(root, 'weightedSearchFields', []);
|
|
1505
|
+
const wsf = getQueryParameter$1(root, 'weightedSearchFields', []);
|
|
1471
1506
|
const deduped = wsf.filter((v, i, a) => a.findIndex(t => t.fieldId === v.fieldId) === i);
|
|
1472
1507
|
return deduped; // return wsf;
|
|
1473
1508
|
},
|
|
1474
|
-
webpageTemplates: root => getQueryParameter(root, 'webpageTemplates', [])
|
|
1509
|
+
webpageTemplates: root => getQueryParameter$1(root, 'webpageTemplates', [])
|
|
1475
1510
|
};
|
|
1476
1511
|
|
|
1477
1512
|
const mapStateToQueryParams = sourceJson => mapJson__default["default"](sourceJson, queryParamsTemplate);
|
|
@@ -1517,8 +1552,8 @@ const runSearch = (action, state, queryParams) => {
|
|
|
1517
1552
|
const facetIsLoaded = defaultLang ? false : getIsLoaded(state, context, facet);
|
|
1518
1553
|
const stateParams = { ...getQueryParams(ogState, facet, context)
|
|
1519
1554
|
};
|
|
1520
|
-
stateParams.pageIndex = getPageIndex(ogState, facet, context);
|
|
1521
|
-
stateParams.searchTerm = getSearchTerm(ogState);
|
|
1555
|
+
stateParams.pageIndex = getPageIndex$1(ogState, facet, context);
|
|
1556
|
+
stateParams.searchTerm = getSearchTerm$1(ogState);
|
|
1522
1557
|
|
|
1523
1558
|
if (context === Context$1.facets && ssr || // context === Context.minilist ||
|
|
1524
1559
|
preload || !facetIsLoaded || filterParamsChanged(action) || defaultLang) {
|
|
@@ -1569,9 +1604,10 @@ const filterParamsChanged = (action, state) => {
|
|
|
1569
1604
|
const debugExecuteSearch = (action, state) => {
|
|
1570
1605
|
const [queryParams, runSearch] = generateQueryParams(action, state);
|
|
1571
1606
|
console.log('runSearch', runSearch, 'action', action, 'filterParamsChanged', filterParamsChanged(action, state), 'getIsLoaded(state, context, facet)', getIsLoaded(state, action.context, action.facet));
|
|
1572
|
-
const stateParams = getQueryParams(action.ogState || state, action.facet, action.context)
|
|
1573
|
-
|
|
1574
|
-
|
|
1607
|
+
const stateParams = { ...getQueryParams(action.ogState || state, action.facet, action.context),
|
|
1608
|
+
pageIndex: getPageIndex$1(action.ogState || state, action.facet, action.context),
|
|
1609
|
+
searchTerm: getSearchTerm$1(action.ogState || state)
|
|
1610
|
+
};
|
|
1575
1611
|
console.log(stateParams, queryParams);
|
|
1576
1612
|
console.log('getSelectedFilters', getSelectedFilters(action.ogState || state, action.facet, action.context, 'js'), 'params', action.params);
|
|
1577
1613
|
};
|
|
@@ -1636,14 +1672,20 @@ function* setRouteFilters(action) {
|
|
|
1636
1672
|
ssr,
|
|
1637
1673
|
debug
|
|
1638
1674
|
};
|
|
1639
|
-
yield effects.put(nextAction); //
|
|
1675
|
+
yield effects.put(nextAction); // keep track of this state ref for comparing changes to params later
|
|
1676
|
+
|
|
1677
|
+
const ogState = {
|
|
1678
|
+
search: state.search
|
|
1679
|
+
}; // Using call instead of triggering from the put
|
|
1640
1680
|
// to allow this exported saga to continue during SSR
|
|
1641
1681
|
|
|
1642
1682
|
yield effects.call(ensureSearch, { ...nextAction,
|
|
1643
|
-
ogState
|
|
1683
|
+
ogState
|
|
1644
1684
|
});
|
|
1645
1685
|
}
|
|
1646
1686
|
function* doSearch(action) {
|
|
1687
|
+
var _action$params;
|
|
1688
|
+
|
|
1647
1689
|
const state = toJS(yield effects.select());
|
|
1648
1690
|
|
|
1649
1691
|
if (action.config) {
|
|
@@ -1656,12 +1698,20 @@ function* doSearch(action) {
|
|
|
1656
1698
|
|
|
1657
1699
|
const nextAction = { ...action,
|
|
1658
1700
|
type: SET_SEARCH_FILTERS,
|
|
1659
|
-
ssr: getIsSsr(state)
|
|
1701
|
+
ssr: getIsSsr(state),
|
|
1702
|
+
facet: action.facet || ((_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.facet)
|
|
1660
1703
|
};
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1704
|
+
|
|
1705
|
+
if (nextAction.facet && (action.config || Object.keys(getFacet(state, nextAction.facet, action.context, 'js')).length > 0)) {
|
|
1706
|
+
yield effects.put(nextAction); // keep track of this state ref for comparing changes to params later
|
|
1707
|
+
|
|
1708
|
+
const ogState = {
|
|
1709
|
+
search: state.search
|
|
1710
|
+
};
|
|
1711
|
+
yield effects.call(ensureSearch, { ...nextAction,
|
|
1712
|
+
ogState
|
|
1713
|
+
});
|
|
1714
|
+
}
|
|
1665
1715
|
}
|
|
1666
1716
|
|
|
1667
1717
|
function* loadFilters(action) {
|
|
@@ -1759,7 +1809,9 @@ function* ensureSearch(action) {
|
|
|
1759
1809
|
try {
|
|
1760
1810
|
const state = yield effects.select();
|
|
1761
1811
|
const nextAction = { ...action,
|
|
1762
|
-
ogState: action.ogState ||
|
|
1812
|
+
ogState: action.ogState || {
|
|
1813
|
+
search: state.search
|
|
1814
|
+
}
|
|
1763
1815
|
};
|
|
1764
1816
|
const [queryParams, runSearch] = generateQueryParams(nextAction, state);
|
|
1765
1817
|
if (debug && (debug === true || debug.executeSearch)) debugExecuteSearch(nextAction, state);
|
|
@@ -1899,7 +1951,7 @@ function* updateCurrentFacet(action) {
|
|
|
1899
1951
|
facet,
|
|
1900
1952
|
mappers
|
|
1901
1953
|
} = action;
|
|
1902
|
-
const pageIndex = yield effects.select(getPageIndex, facet);
|
|
1954
|
+
const pageIndex = yield effects.select(getPageIndex$1, facet);
|
|
1903
1955
|
const uri = yield buildUri({
|
|
1904
1956
|
facet,
|
|
1905
1957
|
pageIndex
|
|
@@ -1957,7 +2009,7 @@ function* buildUri({
|
|
|
1957
2009
|
term
|
|
1958
2010
|
}, mappers) {
|
|
1959
2011
|
const state = yield effects.select();
|
|
1960
|
-
const mapUri = mappers
|
|
2012
|
+
const mapUri = (mappers === null || mappers === void 0 ? void 0 : mappers.navigate) || mapStateToSearchUri;
|
|
1961
2013
|
const uri = mapUri({
|
|
1962
2014
|
state,
|
|
1963
2015
|
facet,
|
|
@@ -1969,13 +2021,98 @@ function* buildUri({
|
|
|
1969
2021
|
return `${uri.path}${uri.search && `?${uri.search}` || ''}${uri.hash && `#${uri.hash}` || ''}`;
|
|
1970
2022
|
}
|
|
1971
2023
|
|
|
2024
|
+
var defaultMappers = {
|
|
2025
|
+
results: entries => entries,
|
|
2026
|
+
navigate: mapStateToSearchUri
|
|
2027
|
+
};
|
|
2028
|
+
|
|
2029
|
+
const {
|
|
2030
|
+
getCurrent,
|
|
2031
|
+
getFeaturedResults,
|
|
2032
|
+
getIsLoading,
|
|
2033
|
+
getListing,
|
|
2034
|
+
getPageIndex,
|
|
2035
|
+
getPageIsLoading,
|
|
2036
|
+
getQueryParameter,
|
|
2037
|
+
getRenderableFilters,
|
|
2038
|
+
getSearchTerm
|
|
2039
|
+
} = selectListing;
|
|
2040
|
+
|
|
2041
|
+
const makeSelectListingProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
|
|
2042
|
+
currentListing: getCurrent(state),
|
|
2043
|
+
currentPageIndex: getPageIndex(state),
|
|
2044
|
+
listing: getListing(state),
|
|
2045
|
+
featured: getFeaturedResults(state),
|
|
2046
|
+
filters: getRenderableFilters(state),
|
|
2047
|
+
isLoading: getIsLoading(state),
|
|
2048
|
+
pageIsLoading: getPageIsLoading(state),
|
|
2049
|
+
paging: getPaging(state, '', Context$1.listings, 'js'),
|
|
2050
|
+
results: getResults(state, '', Context$1.listings, 'js'),
|
|
2051
|
+
resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
|
|
2052
|
+
searchTerm: getSearchTerm(state),
|
|
2053
|
+
selectedFilters: getSelectedFilters(state, '', Context$1.listings, 'js'),
|
|
2054
|
+
sortOrder: getQueryParameter({
|
|
2055
|
+
state
|
|
2056
|
+
}, 'dynamicOrderBy', [])
|
|
2057
|
+
}));
|
|
2058
|
+
|
|
2059
|
+
const useListing = ({
|
|
2060
|
+
mappers
|
|
2061
|
+
} = {
|
|
2062
|
+
id: ''
|
|
2063
|
+
}) => {
|
|
2064
|
+
const dispatch = reactRedux.useDispatch();
|
|
2065
|
+
const m = mappers || defaultMappers;
|
|
2066
|
+
const selectListingProps = React.useMemo(makeSelectListingProps, [m]);
|
|
2067
|
+
const dispatchProps = {
|
|
2068
|
+
clearFilters: () => dispatch(withMappers(clearFilters$1(), m)),
|
|
2069
|
+
updateCurrentFacet: facet => dispatch(withMappers(updateCurrentFacet$1(facet), m)),
|
|
2070
|
+
updatePageIndex: pageIndex => dispatch(withMappers(updatePageIndex$1(pageIndex), m)),
|
|
2071
|
+
updateSearchTerm: term => dispatch(withMappers(updateSearchTerm$1(term), m)),
|
|
2072
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)),
|
|
2073
|
+
updateSortOrder: orderBy => dispatch(withMappers(updateSortOrder$1(orderBy), m))
|
|
2074
|
+
};
|
|
2075
|
+
const {
|
|
2076
|
+
currentListing,
|
|
2077
|
+
currentPageIndex,
|
|
2078
|
+
featured,
|
|
2079
|
+
filters,
|
|
2080
|
+
isLoading,
|
|
2081
|
+
listing,
|
|
2082
|
+
paging,
|
|
2083
|
+
pageIsLoading,
|
|
2084
|
+
results,
|
|
2085
|
+
resultsInfo,
|
|
2086
|
+
searchTerm,
|
|
2087
|
+
selectedFilters,
|
|
2088
|
+
sortOrder
|
|
2089
|
+
} = reactRedux.useSelector(state => selectListingProps(state, m));
|
|
2090
|
+
return {
|
|
2091
|
+
currentListing,
|
|
2092
|
+
currentPageIndex,
|
|
2093
|
+
featured,
|
|
2094
|
+
filters,
|
|
2095
|
+
isLoading,
|
|
2096
|
+
listing,
|
|
2097
|
+
pageIsLoading,
|
|
2098
|
+
paging,
|
|
2099
|
+
results,
|
|
2100
|
+
resultsInfo,
|
|
2101
|
+
searchTerm,
|
|
2102
|
+
selectedFilters,
|
|
2103
|
+
sortOrder,
|
|
2104
|
+
title: listing.title,
|
|
2105
|
+
...dispatchProps
|
|
2106
|
+
};
|
|
2107
|
+
};
|
|
2108
|
+
|
|
1972
2109
|
const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_, id) => id, (state, id) => ({
|
|
1973
2110
|
facet: getFacet(state, id, Context$1.minilist, 'js'),
|
|
1974
2111
|
filters: getFilters(state, id, Context$1.minilist, 'js'),
|
|
1975
|
-
isLoading: getIsLoading(state, Context$1.minilist, id),
|
|
2112
|
+
isLoading: getIsLoading$1(state, Context$1.minilist, id),
|
|
1976
2113
|
pagingInfo: getPaging(state, id, Context$1.minilist, 'js'),
|
|
1977
2114
|
results: getResults(state, id, Context$1.minilist, 'js'),
|
|
1978
|
-
searchTerm: getSearchTerm(state)
|
|
2115
|
+
searchTerm: getSearchTerm$1(state)
|
|
1979
2116
|
}));
|
|
1980
2117
|
|
|
1981
2118
|
const useMinilist = ({
|
|
@@ -2026,7 +2163,7 @@ const useMinilist = ({
|
|
|
2026
2163
|
return {
|
|
2027
2164
|
filters,
|
|
2028
2165
|
isLoading,
|
|
2029
|
-
pagingInfo,
|
|
2166
|
+
paging: pagingInfo,
|
|
2030
2167
|
results,
|
|
2031
2168
|
searchTerm,
|
|
2032
2169
|
title: facet.title
|
|
@@ -2210,7 +2347,10 @@ const generateFiltersState = ({
|
|
|
2210
2347
|
// the search results during SSR without needing to fetch the filters first
|
|
2211
2348
|
|
|
2212
2349
|
|
|
2213
|
-
Object.entries(filterParams).map(([paramName = '', paramValue]) =>
|
|
2350
|
+
Object.entries(filterParams).map(([paramName = '', paramValue]) => {
|
|
2351
|
+
if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
|
|
2352
|
+
if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
|
|
2353
|
+
});
|
|
2214
2354
|
return Object.fromEntries(filters);
|
|
2215
2355
|
};
|
|
2216
2356
|
|
|
@@ -2239,7 +2379,7 @@ var reducers = (config => {
|
|
|
2239
2379
|
case APPLY_CONFIG:
|
|
2240
2380
|
{
|
|
2241
2381
|
state = addConfigToState(state, action);
|
|
2242
|
-
return;
|
|
2382
|
+
return state;
|
|
2243
2383
|
}
|
|
2244
2384
|
|
|
2245
2385
|
case CLEAR_FILTERS:
|
|
@@ -2423,13 +2563,22 @@ var reducers = (config => {
|
|
|
2423
2563
|
{
|
|
2424
2564
|
const {
|
|
2425
2565
|
filter,
|
|
2426
|
-
key
|
|
2566
|
+
key,
|
|
2567
|
+
isUnknownItem
|
|
2427
2568
|
} = action;
|
|
2428
2569
|
const isSingleSelect = state[context][current].filters[filter].isSingleSelect || false;
|
|
2429
2570
|
const isGrouped = state[context][current].filters[filter].isGrouped || false;
|
|
2430
2571
|
const currentItems = state[context][current].filters[filter].items;
|
|
2431
2572
|
if (isGrouped) state[context] = resetFacets(state, context);
|
|
2432
2573
|
state[context][current] = resetFacet(state[context][current]);
|
|
2574
|
+
|
|
2575
|
+
if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
|
|
2576
|
+
currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
|
|
2577
|
+
key,
|
|
2578
|
+
isSelected: false
|
|
2579
|
+
});
|
|
2580
|
+
}
|
|
2581
|
+
|
|
2433
2582
|
state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
|
|
2434
2583
|
if (item.key === key) {
|
|
2435
2584
|
return { ...item,
|
|
@@ -2463,7 +2612,6 @@ var reducers = (config => {
|
|
|
2463
2612
|
}, initState);
|
|
2464
2613
|
});
|
|
2465
2614
|
|
|
2466
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
2467
2615
|
const Context = {
|
|
2468
2616
|
facets: 'facets',
|
|
2469
2617
|
listings: 'listings',
|
|
@@ -2480,6 +2628,7 @@ exports.schema = schema;
|
|
|
2480
2628
|
exports.selectors = selectors;
|
|
2481
2629
|
exports.setRouteFilters = setRouteFilters;
|
|
2482
2630
|
exports.types = types;
|
|
2631
|
+
exports.useListing = useListing;
|
|
2483
2632
|
exports.useMinilist = useMinilist;
|
|
2484
2633
|
exports.withListing = withListing;
|
|
2485
2634
|
exports.withSearch = withSearch;
|