@sledge-app/react-instant-search 2.0.21 → 2.0.23

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.
@@ -671,6 +671,17 @@ const setElementAttribute = ({ element, attributeName, value }) => {
671
671
  element.setAttribute(attributeName, value);
672
672
  }
673
673
  };
674
+ const convertToQueryParams = (obj) => {
675
+ var _a;
676
+ if (typeof obj !== "object" || obj === null || obj && !((_a = Object.keys(obj)) == null ? void 0 : _a.length))
677
+ return {};
678
+ const queryParams = {};
679
+ Object.keys(obj).forEach((key) => {
680
+ var _a2, _b;
681
+ queryParams[key] = (_b = (_a2 = obj[key]) == null ? void 0 : _a2.map) == null ? void 0 : _b.call(_a2, (value) => encodeURIComponent(value));
682
+ });
683
+ return queryParams;
684
+ };
674
685
  const root = "";
675
686
  const Loading = "";
676
687
  const ConfirmationPopup = "";
@@ -6152,12 +6163,13 @@ const parseFacetObject = ({ facet = "" }) => {
6152
6163
  return null;
6153
6164
  };
6154
6165
  const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }) => {
6166
+ var _a, _b;
6155
6167
  const searchParams = new URLSearchParams(document.location.search);
6156
6168
  const searchParamsObject = Object.fromEntries(searchParams);
6157
6169
  for (const searchParamsKey in searchParamsObject) {
6158
6170
  let ifFacetsQueryStringObject = (facets == null ? void 0 : facets.length) && facets.includes(searchParamsKey);
6159
6171
  if (ifFacetsQueryStringObject)
6160
- facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(",");
6172
+ facetsQueryStringObject[searchParamsKey] = (_b = (_a = searchParamsObject[searchParamsKey].split(",")) == null ? void 0 : _a.map) == null ? void 0 : _b.call(_a, (item) => decodeURIComponent(item));
6161
6173
  }
6162
6174
  if (Object.keys(facetsQueryStringObject).length)
6163
6175
  callback(facetsQueryStringObject);
@@ -9957,9 +9969,10 @@ const ResultProduct = React__default.memo((props) => {
9957
9969
  otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];
9958
9970
  }
9959
9971
  let facetQueryStringObject = {};
9960
- for (const valueClickedFacetsKey in valueClickedFacets) {
9961
- if ((_a2 = valueClickedFacets[valueClickedFacetsKey]) == null ? void 0 : _a2.length)
9962
- otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];
9972
+ let convertValueClickedFacets = convertToQueryParams(valueClickedFacets);
9973
+ for (const valueClickedFacetsKey in convertValueClickedFacets) {
9974
+ if ((_a2 = convertValueClickedFacets[valueClickedFacetsKey]) == null ? void 0 : _a2.length)
9975
+ otherQueryStringObject[valueClickedFacetsKey] = convertValueClickedFacets[valueClickedFacetsKey];
9963
9976
  }
9964
9977
  const newQueryString = new URLSearchParams({
9965
9978
  ...otherQueryStringObject,
@@ -10305,8 +10318,8 @@ const ResultProduct = React__default.memo((props) => {
10305
10318
  filter,
10306
10319
  scrollElementSelector
10307
10320
  }) => {
10308
- var _a2, _b2;
10309
- const { value, display, indexFilter } = filter;
10321
+ var _a2, _b2, _c2;
10322
+ const { value, display, indexFilter, settings: filterSettingsProp } = filter;
10310
10323
  const isDisplaySlider = ["slider", "input_range", "slider_with_input_range"].includes(display.toLowerCase());
10311
10324
  const isDisplayColorSwatch = ["swatch", "swatch_with_label"].includes(display.toLowerCase());
10312
10325
  let items = display.toLowerCase() === "tree" ? createHierarchicalFacet({
@@ -10323,33 +10336,73 @@ const ResultProduct = React__default.memo((props) => {
10323
10336
  hierarchicalFacetAliases,
10324
10337
  hierarchicalCollectionsSettings
10325
10338
  }) : searchResultFacets[value];
10326
- let isRender = Boolean(
10327
- isDisplaySlider ? items : Number(
10328
- (_a2 = handleFacetValues({
10329
- filter,
10330
- languageSettings,
10331
- clickedFacets,
10332
- searchFacetDistribution,
10333
- displaySettings,
10334
- settings,
10335
- items,
10336
- allowedFilterSlider
10337
- })) == null ? void 0 : _a2.length
10338
- )
10339
- );
10340
- if (isDisplaySlider) {
10341
- let defaultItemSlider = (defaultFacetStats == null ? void 0 : defaultFacetStats[value]) && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};
10342
- let valueFilterSliderChange = [];
10343
- if (value === "variants.price") {
10344
- valueFilterSliderChange = valueFilterPriceChange;
10345
- } else if (value === "variants.sale_percent") {
10346
- valueFilterSliderChange = valueFilterOnSaleChange;
10347
- } else {
10348
- valueFilterSliderChange = valueFilterSliderOthers == null ? void 0 : valueFilterSliderOthers[value];
10339
+ let isRender = false;
10340
+ if ((_a2 = filterSettingsProp == null ? void 0 : filterSettingsProp.visibility_rules) == null ? void 0 : _a2.length) {
10341
+ filterSettingsProp.visibility_rules.map((visibility_rule) => {
10342
+ var _a3, _b3, _c3;
10343
+ const { operator, type, values } = visibility_rule || {};
10344
+ const facetSelectedValues = ((_a3 = clickedFacets == null ? void 0 : clickedFacets[type]) == null ? void 0 : _a3.length) ? clickedFacets == null ? void 0 : clickedFacets[type] : [];
10345
+ if (operator && (values == null ? void 0 : values.length)) {
10346
+ if (String(operator).toLowerCase() === "and") {
10347
+ isRender = values.every((item) => {
10348
+ var _a4;
10349
+ return (_a4 = facetSelectedValues == null ? void 0 : facetSelectedValues.includes) == null ? void 0 : _a4.call(facetSelectedValues, item);
10350
+ });
10351
+ } else if (String(operator).toLowerCase() === "or") {
10352
+ if ((_b3 = values == null ? void 0 : values.find) == null ? void 0 : _b3.call(values, (value2) => {
10353
+ var _a4;
10354
+ return ((_a4 = value2 == null ? void 0 : value2.toLowerCase) == null ? void 0 : _a4.call(value2)) === "all";
10355
+ })) {
10356
+ isRender = Boolean(facetSelectedValues == null ? void 0 : facetSelectedValues.length);
10357
+ } else {
10358
+ isRender = Boolean((_c3 = facetSelectedValues == null ? void 0 : facetSelectedValues.some) == null ? void 0 : _c3.call(facetSelectedValues, (item) => values.includes(item)));
10359
+ }
10360
+ }
10361
+ }
10362
+ });
10363
+ }
10364
+ const isRenderFromVisibilityRules = isRender;
10365
+ const checkRenderFacet = () => {
10366
+ var _a3;
10367
+ isRender = Boolean(
10368
+ isDisplaySlider ? items : Number(
10369
+ (_a3 = handleFacetValues({
10370
+ filter,
10371
+ languageSettings,
10372
+ clickedFacets,
10373
+ searchFacetDistribution,
10374
+ displaySettings,
10375
+ settings,
10376
+ items,
10377
+ allowedFilterSlider
10378
+ })) == null ? void 0 : _a3.length
10379
+ )
10380
+ );
10381
+ };
10382
+ const checkRenderFacetSlider = () => {
10383
+ if (isDisplaySlider) {
10384
+ let defaultItemSlider = (defaultFacetStats == null ? void 0 : defaultFacetStats[value]) && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};
10385
+ let valueFilterSliderChange = [];
10386
+ if (value === "variants.price") {
10387
+ valueFilterSliderChange = valueFilterPriceChange;
10388
+ } else if (value === "variants.sale_percent") {
10389
+ valueFilterSliderChange = valueFilterOnSaleChange;
10390
+ } else {
10391
+ valueFilterSliderChange = valueFilterSliderOthers == null ? void 0 : valueFilterSliderOthers[value];
10392
+ }
10393
+ let defaultValueMin = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[0]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.min);
10394
+ let defaultValueMax = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[1]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.max);
10395
+ isRender = !defaultValueMin && !defaultValueMax ? false : true;
10396
+ }
10397
+ };
10398
+ if ((_b2 = filterSettingsProp == null ? void 0 : filterSettingsProp.visibility_rules) == null ? void 0 : _b2.length) {
10399
+ if (isRenderFromVisibilityRules) {
10400
+ checkRenderFacet();
10401
+ checkRenderFacetSlider();
10349
10402
  }
10350
- let defaultValueMin = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[0]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.min);
10351
- let defaultValueMax = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[1]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.max);
10352
- isRender = !defaultValueMin && !defaultValueMax ? false : true;
10403
+ } else {
10404
+ checkRenderFacet();
10405
+ checkRenderFacetSlider();
10353
10406
  }
10354
10407
  let classesUlElement = ["sledge-instant-search__result-filter-item-list"];
10355
10408
  const getFacetComponent = (props2) => {
@@ -10399,7 +10452,7 @@ const ResultProduct = React__default.memo((props) => {
10399
10452
  );
10400
10453
  if (display.toLowerCase() === "tree")
10401
10454
  classesUlElement.push("sledge-instant-search__result-filter-item-tree");
10402
- if (((_b2 = displaySettings == null ? void 0 : displaySettings.filter) == null ? void 0 : _b2.layout) === "vertical" && (allowedFilter == null ? void 0 : allowedFilter.length) === 1)
10455
+ if (((_c2 = displaySettings == null ? void 0 : displaySettings.filter) == null ? void 0 : _c2.layout) === "vertical" && (allowedFilter == null ? void 0 : allowedFilter.length) === 1)
10403
10456
  classesUlElement == null ? void 0 : classesUlElement.push("sledge-instant-search__result-filter-item-list-just-one");
10404
10457
  let isLastIndex = allowedFilter ? (allowedFilter == null ? void 0 : allowedFilter.length) - 1 === indexFilter : false;
10405
10458
  return { isRender, classesUlElement, getFacetComponent, isLastIndex };