@zengenti/contensis-react-base 4.0.0-beta.14 → 4.0.0-beta.16
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 +6 -0
- package/cjs/contensis-react-base.js +1 -1
- package/cjs/{sagas-BtPnqKAF.js → sagas-C0t6j-SQ.js} +24 -5
- package/cjs/sagas-C0t6j-SQ.js.map +1 -0
- package/cjs/search.js +1 -1
- package/cjs/util.js +13 -0
- package/cjs/util.js.map +1 -1
- package/esm/contensis-react-base.js +1 -1
- package/esm/{sagas-BUsaApww.js → sagas-D2ECe61q.js} +24 -5
- package/esm/sagas-D2ECe61q.js.map +1 -0
- package/esm/search.js +2 -2
- package/esm/util.js +13 -1
- package/esm/util.js.map +1 -1
- package/models/search/models/Search.d.ts +5 -1
- package/models/search/redux/selectors.d.ts +5 -0
- package/models/util/donotuse_useHistory.d.ts +6 -0
- package/models/util/index.d.ts +1 -0
- package/package.json +1 -1
- package/cjs/sagas-BtPnqKAF.js.map +0 -1
- package/esm/sagas-BUsaApww.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,6 +6,12 @@ Handles web app routing with Contensis Site View and component rendering based o
|
|
|
6
6
|
|
|
7
7
|
## Upgrade notes (older projects)
|
|
8
8
|
|
|
9
|
+
### React 18 (v4.0+)
|
|
10
|
+
|
|
11
|
+
This version introduces major updates to React, React Router and Express
|
|
12
|
+
|
|
13
|
+
We have prepared a [Migration Guide: v3 → v4](https://github.com/zengenti/contensis-react-base/blob/feat/react18/MIGRATE-V4.md) with detailed steps to follow to ensure your upgrade goes smoothly
|
|
14
|
+
|
|
9
15
|
### Styled Components 6 (v3.3+)
|
|
10
16
|
|
|
11
17
|
Some projects may see console warnings in the web app like the example below after upgrading to v3.3+ which updates Styled Components from version 5 to 6
|
|
@@ -7,7 +7,7 @@ var contensisDeliveryApi = require('contensis-delivery-api');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var reactRedux = require('react-redux');
|
|
9
9
|
var mapJson = require('jsonpath-mapper');
|
|
10
|
-
var sagas = require('./sagas-
|
|
10
|
+
var sagas = require('./sagas-C0t6j-SQ.js');
|
|
11
11
|
require('reselect');
|
|
12
12
|
require('immer');
|
|
13
13
|
require('deep-equal');
|
|
@@ -262,9 +262,13 @@ const getListing$1 = (state, listing = '') => {
|
|
|
262
262
|
const currentListing = listing || getCurrentListing(state);
|
|
263
263
|
return getImmutableOrJS(state, ['search', Context.listings, currentListing], {});
|
|
264
264
|
};
|
|
265
|
+
|
|
266
|
+
/** Return filter state for the current (or provided) facet */
|
|
265
267
|
const getFilters = (state, facet, context = Context.facets, returnType) => {
|
|
266
268
|
return getImmutableOrJS(state, ['search', context, facet || getCurrent$2(state, context), 'filters'], {}, returnType);
|
|
267
269
|
};
|
|
270
|
+
|
|
271
|
+
/** Return filter state for the current (or provided) facet, excluding filters configured as `renderable: false` */
|
|
268
272
|
const getRenderableFilters$2 = (state, facet = '', context = Context.facets) => Object.fromEntries(Object.entries(getFilters(state, facet, context, 'js')).filter(([, f = {}]) => typeof f.renderable !== 'boolean' ? true : f.renderable));
|
|
269
273
|
const getFiltersToLoad = (state, facet, context = Context.facets, returnType) => {
|
|
270
274
|
const filters = getFilters(state, facet, context, returnType);
|
|
@@ -275,16 +279,30 @@ const getFiltersToLoad = (state, facet, context = Context.facets, returnType) =>
|
|
|
275
279
|
return loadedFilters.map(([filterKey, isLoaded]) => !isLoaded ? filterKey : null).filter(f => !!f);
|
|
276
280
|
};
|
|
277
281
|
|
|
278
|
-
|
|
279
|
-
const
|
|
280
|
-
const filters = getFilters(state, facet, context, 'js');
|
|
282
|
+
/** Reduce filters state to a simple object containing all filter keys and the selected values */
|
|
283
|
+
const reduceSelectedFilters = filters => {
|
|
281
284
|
const selectedFilters = Object.fromEntries(Object.entries(filters).map(([key, filter = {}]) => [key, (filter.items || []).filter(item => !!(item.isSelected || false)).map(item => {
|
|
282
285
|
const key = (item === null || item === void 0 ? void 0 : item.key) || '';
|
|
283
286
|
return key;
|
|
284
287
|
})]));
|
|
288
|
+
return selectedFilters;
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
/** Return keyed object for all filters in the current facet with all selected values for each filter */
|
|
292
|
+
const getSelectedFilters = (state, facet = '', context = Context.facets, returnType) => {
|
|
293
|
+
const filters = getFilters(state, facet, context, 'js');
|
|
294
|
+
const selectedFilters = reduceSelectedFilters(filters);
|
|
285
295
|
const fromJS = makeFromJS(returnType);
|
|
286
296
|
return fromJS(selectedFilters);
|
|
287
297
|
};
|
|
298
|
+
|
|
299
|
+
/** Return keyed object for all _renderable_ filters in the current facet with all selected values for each filter */
|
|
300
|
+
const getRenderableSelectedFilters = (state, facet = '', context = Context.facets) => {
|
|
301
|
+
const filters = getRenderableFilters$2(state, facet, context);
|
|
302
|
+
|
|
303
|
+
// new in CRB4: intended no support for immutable state type
|
|
304
|
+
return reduceSelectedFilters(filters);
|
|
305
|
+
};
|
|
288
306
|
const getResults = (state, current = '', context = Context.facets, returnType) => {
|
|
289
307
|
return getImmutableOrJS(state, ['search', context, current || getCurrent$2(state, context), 'results'], [], returnType);
|
|
290
308
|
};
|
|
@@ -476,6 +494,7 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
476
494
|
getQueryParameter: getQueryParameter$2,
|
|
477
495
|
getQueryParams: getQueryParams,
|
|
478
496
|
getRenderableFilters: getRenderableFilters$2,
|
|
497
|
+
getRenderableSelectedFilters: getRenderableSelectedFilters,
|
|
479
498
|
getResults: getResults,
|
|
480
499
|
getSearchContext: getSearchContext,
|
|
481
500
|
getSearchTabs: getSearchTabs,
|
|
@@ -522,7 +541,7 @@ const searchUriTemplate = {
|
|
|
522
541
|
const searchContext = getSearchContext(state);
|
|
523
542
|
// Lose stateFilters and currentSearch if a new
|
|
524
543
|
// term is passed via an argument
|
|
525
|
-
const stateFilters = term ? {} : Object.fromEntries(Object.entries(
|
|
544
|
+
const stateFilters = term ? {} : Object.fromEntries(Object.entries(getRenderableSelectedFilters(state, facet, searchContext)).map(([k, f]) => [k, f === null || f === void 0 ? void 0 : f.join(',')]));
|
|
526
545
|
const currentSearch = !term && getImmutableOrJS(state, ['routing', 'location', 'search']);
|
|
527
546
|
const currentQs = util.removeEmptyAttributes(queryString.parse(currentSearch));
|
|
528
547
|
if (orderBy) currentQs.orderBy = orderBy;
|
|
@@ -5758,4 +5777,4 @@ exports.updateSortOrder = updateSortOrder$1;
|
|
|
5758
5777
|
exports.useFacets = useFacets;
|
|
5759
5778
|
exports.useListing = useListing;
|
|
5760
5779
|
exports.withMappers = withMappers;
|
|
5761
|
-
//# sourceMappingURL=sagas-
|
|
5780
|
+
//# sourceMappingURL=sagas-C0t6j-SQ.js.map
|