@getlupa/client 1.14.3 → 1.14.5

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.
@@ -8843,6 +8843,34 @@ var __async = (__this, __arguments, generator) => {
8843
8843
  };
8844
8844
  }
8845
8845
  });
8846
+ const generateGridTemplate = (elements) => {
8847
+ const indexedElements = elements.map((el, index) => __spreadProps2(__spreadValues2({}, el), { index }));
8848
+ if (!indexedElements.length || !indexedElements.every((el) => el.gridArea === "left" || el.gridArea === "right")) {
8849
+ return void 0;
8850
+ }
8851
+ let leftElements = indexedElements.filter((el) => el.gridArea === "left");
8852
+ let rightElements = indexedElements.filter((el) => el.gridArea === "right");
8853
+ if (!leftElements.length && !rightElements.length) {
8854
+ return "";
8855
+ } else if (!leftElements.length) {
8856
+ leftElements = rightElements;
8857
+ } else if (!rightElements.length) {
8858
+ rightElements = leftElements;
8859
+ }
8860
+ const totalRows = Math.max(leftElements.length, rightElements.length);
8861
+ const gridTemplate = [];
8862
+ for (let row = 0; row < totalRows; row++) {
8863
+ const leftIndex = row < leftElements.length ? row : leftElements.length - 1;
8864
+ const rightIndex = row < rightElements.length ? row : rightElements.length - 1;
8865
+ const leftElement = leftElements[leftIndex];
8866
+ const rightElement = rightElements[rightIndex];
8867
+ const leftColumn = `${leftElement.gridArea}${leftElement.index}`;
8868
+ const rightColumn = `${rightElement.gridArea}${rightElement.index}`;
8869
+ const gridRow = `${leftColumn} ${rightColumn}`;
8870
+ gridTemplate.push(`"${gridRow}"`);
8871
+ }
8872
+ return gridTemplate.join(" ");
8873
+ };
8846
8874
  const _hoisted_1$19 = ["innerHTML"];
8847
8875
  const _hoisted_2$Q = {
8848
8876
  key: 1,
@@ -9041,6 +9069,7 @@ var __async = (__this, __arguments, generator) => {
9041
9069
  });
9042
9070
  };
9043
9071
  const getSuggestionsDebounced = debounce$1(getSuggestions, props.debounce);
9072
+ watch(() => props.panel.limit, getSuggestionsDebounced);
9044
9073
  return (_ctx, _cache) => {
9045
9074
  return openBlock(), createBlock(_sfc_main$1h, {
9046
9075
  items: searchResult.value,
@@ -18161,6 +18190,25 @@ and ensure you are accounting for this risk.
18161
18190
  var _a;
18162
18191
  return Boolean((_a = hoverImages.value) == null ? void 0 : _a.length);
18163
18192
  });
18193
+ const widthOverride = computed(() => {
18194
+ var _a, _b;
18195
+ return (_b = (_a = props.options.dimensions) == null ? void 0 : _a.width) != null ? _b : void 0;
18196
+ });
18197
+ const heightOverride = computed(() => {
18198
+ var _a, _b;
18199
+ return (_b = (_a = props.options.dimensions) == null ? void 0 : _a.height) != null ? _b : void 0;
18200
+ });
18201
+ const objectFitOverride = computed(() => {
18202
+ var _a, _b;
18203
+ return (_b = (_a = props.options.dimensions) == null ? void 0 : _a.objectFit) != null ? _b : void 0;
18204
+ });
18205
+ const styleOverride = computed(() => {
18206
+ return {
18207
+ width: widthOverride.value ? `${widthOverride.value}px` : void 0,
18208
+ height: heightOverride.value ? `${heightOverride.value}px` : void 0,
18209
+ objectFit: objectFitOverride.value ? objectFitOverride.value : void 0
18210
+ };
18211
+ });
18164
18212
  const replaceWithPlaceholder = (e2) => {
18165
18213
  replaceImageWithPlaceholder(e2, placeholder.value);
18166
18214
  };
@@ -18225,6 +18273,7 @@ and ensure you are accounting for this risk.
18225
18273
  return (_ctx, _cache) => {
18226
18274
  return openBlock(), createElementBlock("div", {
18227
18275
  class: normalizeClass({ [_ctx.wrapperClass]: Boolean(_ctx.wrapperClass), "lupa-images-hover": isHover.value }),
18276
+ style: normalizeStyle(styleOverride.value),
18228
18277
  onMouseenter: handleMouseEnter,
18229
18278
  onMouseleave: handleMouseLeave
18230
18279
  }, [
@@ -18235,6 +18284,7 @@ and ensure you are accounting for this risk.
18235
18284
  default: withCtx(() => [
18236
18285
  (openBlock(), createElementBlock("img", mergeProps({
18237
18286
  class: ["lupa-images-hover-image", { [_ctx.imageClass]: true, "lupa-images-hover-image": isHover.value }],
18287
+ style: styleOverride.value,
18238
18288
  src: finalUrl.value
18239
18289
  }, { alt: imageAlt.value ? imageAlt.value : void 0 }, {
18240
18290
  onError: replaceWithPlaceholder,
@@ -18245,9 +18295,10 @@ and ensure you are accounting for this risk.
18245
18295
  })) : (openBlock(), createElementBlock("img", mergeProps({
18246
18296
  key: 1,
18247
18297
  class: ["lupa-images-main-image", { [_ctx.imageClass]: true }],
18298
+ style: styleOverride.value,
18248
18299
  src: finalMainImageUrl.value
18249
18300
  }, { alt: imageAlt.value ? imageAlt.value : void 0 }, { onError: replaceWithPlaceholder }), null, 16, _hoisted_2$P))
18250
- ], 34);
18301
+ ], 38);
18251
18302
  };
18252
18303
  }
18253
18304
  });
@@ -18511,6 +18562,7 @@ and ensure you are accounting for this risk.
18511
18562
  const layout = ref(ResultsLayoutEnum.GRID);
18512
18563
  const loading = ref(false);
18513
18564
  const isMobileSidebarVisible = ref(false);
18565
+ const relatedCategoryChildren = ref([]);
18514
18566
  const optionsStore = useOptionsStore();
18515
18567
  const paramsStore = useParamsStore();
18516
18568
  const screenStore = useScreenStore();
@@ -18652,6 +18704,9 @@ and ensure you are accounting for this risk.
18652
18704
  const hasExactMatch = items.some((item) => getNormalizedString(item.title) === searchInput);
18653
18705
  return hasExactMatch ? items.filter((item) => getNormalizedString(item.title) === searchInput) : items;
18654
18706
  };
18707
+ const setRelatedCategoryChildren = (children) => {
18708
+ relatedCategoryChildren.value = [...children];
18709
+ };
18655
18710
  return {
18656
18711
  isMobileSidebarVisible,
18657
18712
  searchResult,
@@ -18672,6 +18727,7 @@ and ensure you are accounting for this risk.
18672
18727
  itemRange,
18673
18728
  isPageEmpty,
18674
18729
  hideFiltersOnExactMatchForKeys,
18730
+ relatedCategoryChildren,
18675
18731
  setSidebarState,
18676
18732
  queryFacet,
18677
18733
  add: add2,
@@ -18680,7 +18736,8 @@ and ensure you are accounting for this risk.
18680
18736
  setLayout,
18681
18737
  setLoading,
18682
18738
  clearSearchResult,
18683
- filterVisibleFilterValues
18739
+ filterVisibleFilterValues,
18740
+ setRelatedCategoryChildren
18684
18741
  };
18685
18742
  });
18686
18743
  const _hoisted_1$11 = { class: "lupa-search-box-add-to-cart-wrapper" };
@@ -19097,9 +19154,8 @@ and ensure you are accounting for this risk.
19097
19154
  }
19098
19155
  }));
19099
19156
  const _hoisted_1$V = ["href"];
19100
- const _hoisted_2$I = { class: "lupa-search-box-product-image-section" };
19101
- const _hoisted_3$w = { class: "lupa-search-box-product-details-section" };
19102
- const _hoisted_4$p = {
19157
+ const _hoisted_2$I = { class: "lupa-search-box-product-details-section" };
19158
+ const _hoisted_3$w = {
19103
19159
  key: 0,
19104
19160
  class: "lupa-search-box-product-add-to-cart-section"
19105
19161
  };
@@ -19127,6 +19183,25 @@ and ensure you are accounting for this risk.
19127
19183
  var _a, _b;
19128
19184
  return (_b = (_a = props.panelOptions.elements) == null ? void 0 : _a.filter((e2) => e2.type === DocumentElementType.IMAGE)) != null ? _b : [];
19129
19185
  });
19186
+ const mainImageElement = computed(() => {
19187
+ return imageElements.value[0];
19188
+ });
19189
+ const widthOverride = computed(() => {
19190
+ var _a, _b, _c;
19191
+ return (_c = (_b = (_a = mainImageElement.value) == null ? void 0 : _a.dimensions) == null ? void 0 : _b.width) != null ? _c : void 0;
19192
+ });
19193
+ const heightOverride = computed(() => {
19194
+ var _a, _b, _c;
19195
+ return (_c = (_b = (_a = mainImageElement.value) == null ? void 0 : _a.dimensions) == null ? void 0 : _b.height) != null ? _c : void 0;
19196
+ });
19197
+ const imageStyleOverride = computed(() => {
19198
+ var _a;
19199
+ return ((_a = mainImageElement.value) == null ? void 0 : _a.dimensions) ? {
19200
+ width: widthOverride.value ? `${widthOverride.value}px` : void 0,
19201
+ height: heightOverride.value ? `${heightOverride.value}px` : void 0,
19202
+ minWidth: widthOverride.value ? `${widthOverride.value + 10}px` : void 0
19203
+ } : {};
19204
+ });
19130
19205
  const detailElements = computed(() => {
19131
19206
  var _a, _b;
19132
19207
  return (_b = (_a = props.panelOptions.elements) == null ? void 0 : _a.filter(
@@ -19165,7 +19240,10 @@ and ensure you are accounting for this risk.
19165
19240
  "data-cy": "lupa-search-box-product",
19166
19241
  onClick: handleClick
19167
19242
  }), [
19168
- createBaseVNode("div", _hoisted_2$I, [
19243
+ createBaseVNode("div", {
19244
+ class: "lupa-search-box-product-image-section",
19245
+ style: normalizeStyle(imageStyleOverride.value)
19246
+ }, [
19169
19247
  (openBlock(true), createElementBlock(Fragment, null, renderList(imageElements.value, (element) => {
19170
19248
  return openBlock(), createBlock(_sfc_main$16, {
19171
19249
  class: "lupa-search-box-product-element",
@@ -19176,8 +19254,8 @@ and ensure you are accounting for this risk.
19176
19254
  link: link.value
19177
19255
  }, null, 8, ["item", "element", "labels", "link"]);
19178
19256
  }), 128))
19179
- ]),
19180
- createBaseVNode("div", _hoisted_3$w, [
19257
+ ], 4),
19258
+ createBaseVNode("div", _hoisted_2$I, [
19181
19259
  (openBlock(true), createElementBlock(Fragment, null, renderList(detailElements.value, (element) => {
19182
19260
  var _a;
19183
19261
  return openBlock(), createBlock(_sfc_main$16, {
@@ -19201,7 +19279,7 @@ and ensure you are accounting for this risk.
19201
19279
  ]), 1032, ["item", "element", "labels", "link"]);
19202
19280
  }), 128))
19203
19281
  ]),
19204
- addToCartElement.value ? (openBlock(), createElementBlock("div", _hoisted_4$p, [
19282
+ addToCartElement.value ? (openBlock(), createElementBlock("div", _hoisted_3$w, [
19205
19283
  createVNode(_sfc_main$16, {
19206
19284
  class: "lupa-search-box-product-element",
19207
19285
  item: _ctx.item,
@@ -19459,6 +19537,7 @@ and ensure you are accounting for this risk.
19459
19537
  });
19460
19538
  };
19461
19539
  const getItemsDebounced = debounce$1(getItems, props.debounce);
19540
+ watch(() => props.panel.limit, getItemsDebounced);
19462
19541
  return (_ctx, _cache) => {
19463
19542
  var _a, _b;
19464
19543
  return openBlock(), createBlock(_sfc_main$_, {
@@ -19591,7 +19670,7 @@ and ensure you are accounting for this risk.
19591
19670
  key: 0,
19592
19671
  class: "lupa-panel-title lupa-panel-title-top-results"
19593
19672
  };
19594
- const _hoisted_4$o = {
19673
+ const _hoisted_4$p = {
19595
19674
  key: 1,
19596
19675
  class: "lupa-panel-title"
19597
19676
  };
@@ -19647,6 +19726,13 @@ and ensure you are accounting for this risk.
19647
19726
  const displayPanels = computed(
19648
19727
  () => props.isSearchContainer ? panels.value.filter((p2) => p2.type === SearchBoxPanelType.SUGGESTION) : panels.value
19649
19728
  );
19729
+ const gridTemplate = computed(() => generateGridTemplate(panels.value));
19730
+ const styleOverrides = computed(() => {
19731
+ return {
19732
+ display: expandOnSinglePanel.value ? "block" : "grid",
19733
+ gridTemplateAreas: gridTemplate.value ? gridTemplate.value : "left right"
19734
+ };
19735
+ });
19650
19736
  const getInput = (panel) => {
19651
19737
  var _a, _b;
19652
19738
  if (panel.type === SearchBoxPanelType.SUGGESTION || !panel.searchBySuggestion) {
@@ -19673,6 +19759,9 @@ and ensure you are accounting for this risk.
19673
19759
  searchBoxStore.resetHighlightIndex();
19674
19760
  });
19675
19761
  const handleNavigation = (e2) => {
19762
+ if (!props.focused) {
19763
+ return;
19764
+ }
19676
19765
  switch (e2.key) {
19677
19766
  case "ArrowDown":
19678
19767
  e2.preventDefault();
@@ -19760,7 +19849,7 @@ and ensure you are accounting for this risk.
19760
19849
  }, toDisplayString(labels.value.closePanel), 1)) : createCommentVNode("", true),
19761
19850
  createBaseVNode("div", {
19762
19851
  class: "lupa-main-panel",
19763
- style: normalizeStyle(expandOnSinglePanel.value ? { display: "block" } : {}),
19852
+ style: normalizeStyle(styleOverrides.value),
19764
19853
  "data-cy": "lupa-main-panel"
19765
19854
  }, [
19766
19855
  (openBlock(true), createElementBlock(Fragment, null, renderList(displayPanels.value, (panel, index) => {
@@ -19771,10 +19860,11 @@ and ensure you are accounting for this risk.
19771
19860
  "lupa-panel-" + panel.type + "-index",
19772
19861
  panel.customClassName ? panel.customClassName : ""
19773
19862
  ]),
19863
+ style: normalizeStyle(panel.gridArea ? { gridArea: `${panel.gridArea}${index}` } : {}),
19774
19864
  "data-cy": "lupa-panel-" + panel.type + "-index"
19775
19865
  }, [
19776
19866
  ((_a2 = panel.labels) == null ? void 0 : _a2.topResultsTitle) && showTopResultsPanelTitle(panel.queryKey) ? (openBlock(), createElementBlock("div", _hoisted_3$v, toDisplayString((_b = panel.labels) == null ? void 0 : _b.topResultsTitle), 1)) : createCommentVNode("", true),
19777
- ((_c = panel.labels) == null ? void 0 : _c.title) && showPanelTitle(panel) ? (openBlock(), createElementBlock("div", _hoisted_4$o, toDisplayString((_d = panel.labels) == null ? void 0 : _d.title), 1)) : createCommentVNode("", true),
19867
+ ((_c = panel.labels) == null ? void 0 : _c.title) && showPanelTitle(panel) ? (openBlock(), createElementBlock("div", _hoisted_4$p, toDisplayString((_d = panel.labels) == null ? void 0 : _d.title), 1)) : createCommentVNode("", true),
19778
19868
  panel.queryKey && canShowPanel(panel) ? (openBlock(), createBlock(resolveDynamicComponent(getComponent(panel.type)), {
19779
19869
  key: 2,
19780
19870
  panel,
@@ -19796,7 +19886,7 @@ and ensure you are accounting for this risk.
19796
19886
  key: "0"
19797
19887
  } : void 0
19798
19888
  ]), 1064, ["panel", "search-box-options", "options", "debounce", "inputValue", "labels"])) : createCommentVNode("", true)
19799
- ], 10, _hoisted_2$G);
19889
+ ], 14, _hoisted_2$G);
19800
19890
  }), 128))
19801
19891
  ], 4),
19802
19892
  !unref(hasAnyResults) && _ctx.options.showNoResultsPanel ? (openBlock(), createBlock(_sfc_main$1j, {
@@ -19860,6 +19950,7 @@ and ensure you are accounting for this risk.
19860
19950
  const inputValue = ref("");
19861
19951
  const suggestedValue = ref(defaultSuggestedValue);
19862
19952
  const opened = ref(props.isSearchContainer);
19953
+ const focused = ref(false);
19863
19954
  const searchBoxInput = ref(null);
19864
19955
  const { highlightedDocument } = storeToRefs(searchBoxStore);
19865
19956
  const searchValue = computed(() => {
@@ -19918,6 +20009,9 @@ and ensure you are accounting for this risk.
19918
20009
  const elementClass = (_b = (_a2 = e2.target) == null ? void 0 : _a2.className) != null ? _b : "";
19919
20010
  const hasLupaClass = typeof elementClass.includes == "function" && elementClass.includes("lupa-search-box");
19920
20011
  const isOutsideElement = el && !el.contains(e2.target) && !hasLupaClass;
20012
+ if (isOutsideElement && props.options.keepOpen) {
20013
+ focused.value = false;
20014
+ }
19921
20015
  if (!isOutsideElement || props.options.keepOpen) {
19922
20016
  return;
19923
20017
  }
@@ -19926,11 +20020,12 @@ and ensure you are accounting for this risk.
19926
20020
  };
19927
20021
  const close = () => {
19928
20022
  opened.value = false;
20023
+ focused.value = false;
19929
20024
  suggestedValue.value = defaultSuggestedValue;
19930
20025
  };
19931
20026
  const handleKeyDown = (e2) => {
19932
20027
  var _a2, _b;
19933
- if (!opened.value) {
20028
+ if (!focused.value) {
19934
20029
  return;
19935
20030
  }
19936
20031
  switch (e2.key) {
@@ -19950,6 +20045,7 @@ and ensure you are accounting for this risk.
19950
20045
  const handleInput = (value) => {
19951
20046
  var _a2;
19952
20047
  opened.value = true;
20048
+ focused.value = true;
19953
20049
  inputValue.value = (_a2 = value == null ? void 0 : value.replace(/\s+$/, "")) != null ? _a2 : "";
19954
20050
  suggestedValue.value = defaultSuggestedValue;
19955
20051
  searchBoxStore.resetHighlightIndex();
@@ -20077,12 +20173,14 @@ and ensure you are accounting for this risk.
20077
20173
  }
20078
20174
  });
20079
20175
  };
20176
+ watch(() => props.options.debounce, handleCurrentValueSearch);
20080
20177
  const resetValues = () => {
20081
20178
  inputValue.value = "";
20082
20179
  suggestedValue.value = defaultSuggestedValue;
20083
20180
  };
20084
20181
  const handleProductClick = () => {
20085
20182
  opened.value = false;
20183
+ focused.value = false;
20086
20184
  };
20087
20185
  const slotProps = (props2) => {
20088
20186
  return __spreadValues2({}, props2);
@@ -20099,15 +20197,17 @@ and ensure you are accounting for this risk.
20099
20197
  ref_key: "searchBoxInput",
20100
20198
  ref: searchBoxInput,
20101
20199
  onInput: handleInput,
20102
- onFocus: _cache[0] || (_cache[0] = ($event) => opened.value = true),
20200
+ onBlur: _cache[0] || (_cache[0] = ($event) => focused.value = false),
20201
+ onFocus: _cache[1] || (_cache[1] = ($event) => opened.value = true),
20103
20202
  onSearch: handleSearch,
20104
- onClose: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("close"))
20203
+ onClose: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("close"))
20105
20204
  }, null, 8, ["options", "suggestedValue", "can-close", "emit-input-on-focus"]),
20106
20205
  opened.value || _ctx.isSearchContainer ? (openBlock(), createBlock(_sfc_main$W, {
20107
20206
  key: 0,
20108
20207
  options: panelOptions.value,
20109
20208
  inputValue: inputValue.value,
20110
20209
  isSearchContainer: _ctx.isSearchContainer,
20210
+ focused: focused.value,
20111
20211
  onFetched: handleItemsFetch,
20112
20212
  onItemSelect: handleItemSelect,
20113
20213
  onGoToResults: handleSearch,
@@ -20121,7 +20221,7 @@ and ensure you are accounting for this risk.
20121
20221
  ]),
20122
20222
  key: "0"
20123
20223
  } : void 0
20124
- ]), 1032, ["options", "inputValue", "isSearchContainer"])) : createCommentVNode("", true)
20224
+ ]), 1032, ["options", "inputValue", "isSearchContainer", "focused"])) : createCommentVNode("", true)
20125
20225
  ])
20126
20226
  ]);
20127
20227
  };
@@ -20203,7 +20303,7 @@ and ensure you are accounting for this risk.
20203
20303
  key: 1,
20204
20304
  "data-cy": "did-you-mean-label"
20205
20305
  };
20206
- const _hoisted_4$n = { key: 1 };
20306
+ const _hoisted_4$o = { key: 1 };
20207
20307
  const _sfc_main$U = /* @__PURE__ */ defineComponent({
20208
20308
  __name: "SearchResultsDidYouMean",
20209
20309
  props: {
@@ -20254,7 +20354,7 @@ and ensure you are accounting for this risk.
20254
20354
  class: "lupa-did-you-mean lupa-highlighted-search-text",
20255
20355
  "data-cy": "did-you-mean-value",
20256
20356
  onClick: _cache[0] || (_cache[0] = ($event) => goToResults({ searchText: didYouMeanValue.value }))
20257
- }, toDisplayString(didYouMeanValue.value) + " ", 1)) : (openBlock(), createElementBlock("span", _hoisted_4$n, toDisplayString(label) + " ", 1))
20357
+ }, toDisplayString(didYouMeanValue.value) + " ", 1)) : (openBlock(), createElementBlock("span", _hoisted_4$o, toDisplayString(label) + " ", 1))
20258
20358
  ]);
20259
20359
  }), 128))
20260
20360
  ])) : createCommentVNode("", true)
@@ -20304,7 +20404,7 @@ and ensure you are accounting for this risk.
20304
20404
  key: 1,
20305
20405
  class: "lupa-results-total-count"
20306
20406
  };
20307
- const _hoisted_4$m = { class: "lupa-results-total-count-number" };
20407
+ const _hoisted_4$n = { class: "lupa-results-total-count-number" };
20308
20408
  const _hoisted_5$g = ["innerHTML"];
20309
20409
  const _sfc_main$S = /* @__PURE__ */ defineComponent({
20310
20410
  __name: "SearchResultsTitle",
@@ -20350,7 +20450,7 @@ and ensure you are accounting for this risk.
20350
20450
  queryText.value ? (openBlock(), createElementBlock("span", _hoisted_2$C, "'" + toDisplayString(queryText.value) + "'", 1)) : createCommentVNode("", true),
20351
20451
  showProductCount.value ? (openBlock(), createElementBlock("span", _hoisted_3$t, [
20352
20452
  createTextVNode("(" + toDisplayString(searchResultsCountLabel.value), 1),
20353
- createBaseVNode("span", _hoisted_4$m, toDisplayString(unref(totalItems)), 1),
20453
+ createBaseVNode("span", _hoisted_4$n, toDisplayString(unref(totalItems)), 1),
20354
20454
  createTextVNode(")")
20355
20455
  ])) : createCommentVNode("", true)
20356
20456
  ])) : createCommentVNode("", true),
@@ -20408,7 +20508,7 @@ and ensure you are accounting for this risk.
20408
20508
  key: 0,
20409
20509
  class: "filter-values"
20410
20510
  };
20411
- const _hoisted_4$l = { class: "lupa-current-filter-list" };
20511
+ const _hoisted_4$m = { class: "lupa-current-filter-list" };
20412
20512
  const _sfc_main$Q = /* @__PURE__ */ defineComponent({
20413
20513
  __name: "CurrentFilters",
20414
20514
  props: {
@@ -20492,7 +20592,7 @@ and ensure you are accounting for this risk.
20492
20592
  }, null, 2)) : createCommentVNode("", true)
20493
20593
  ]),
20494
20594
  !_ctx.expandable || isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_3$r, [
20495
- createBaseVNode("div", _hoisted_4$l, [
20595
+ createBaseVNode("div", _hoisted_4$m, [
20496
20596
  (openBlock(true), createElementBlock(Fragment, null, renderList(currentDisplayFilters.value, (filter2) => {
20497
20597
  return openBlock(), createBlock(_sfc_main$R, {
20498
20598
  key: filter2.key + "_" + filter2.value,
@@ -20560,7 +20660,7 @@ and ensure you are accounting for this risk.
20560
20660
  };
20561
20661
  const _hoisted_2$z = { class: "lupa-category-back" };
20562
20662
  const _hoisted_3$q = ["href"];
20563
- const _hoisted_4$k = ["href"];
20663
+ const _hoisted_4$l = ["href"];
20564
20664
  const _hoisted_5$f = { class: "lupa-child-category-list" };
20565
20665
  const _sfc_main$O = /* @__PURE__ */ defineComponent({
20566
20666
  __name: "CategoryFilter",
@@ -20571,6 +20671,7 @@ and ensure you are accounting for this risk.
20571
20671
  const props = __props;
20572
20672
  const categoryChildren = ref([]);
20573
20673
  const optionStore = useOptionsStore();
20674
+ const searchResultsStore = useSearchResultStore();
20574
20675
  const { envOptions, searchResultOptions } = storeToRefs(optionStore);
20575
20676
  const hasBackButton = computed(() => {
20576
20677
  var _a;
@@ -20607,6 +20708,7 @@ and ensure you are accounting for this risk.
20607
20708
  return;
20608
20709
  }
20609
20710
  categoryChildren.value = result2.items;
20711
+ searchResultsStore.setRelatedCategoryChildren(categoryChildren.value);
20610
20712
  (_c = (_b = searchResultOptions.value.callbacks) == null ? void 0 : _b.onCategoryFilterResults) == null ? void 0 : _c.call(_b, {
20611
20713
  queryKey: props.options.queryKey,
20612
20714
  hasResults: result2.total > 0
@@ -20665,7 +20767,7 @@ and ensure you are accounting for this risk.
20665
20767
  href: parentUrlLink.value,
20666
20768
  class: normalizeClass({ "lupa-title-category": !hasBackButton.value }),
20667
20769
  onClick: handleNavigationParent
20668
- }, toDisplayString(parentTitle.value), 11, _hoisted_4$k)
20770
+ }, toDisplayString(parentTitle.value), 11, _hoisted_4$l)
20669
20771
  ], 2),
20670
20772
  createBaseVNode("div", _hoisted_5$f, [
20671
20773
  (openBlock(true), createElementBlock(Fragment, null, renderList(categoryChildren.value, (child) => {
@@ -20686,7 +20788,7 @@ and ensure you are accounting for this risk.
20686
20788
  };
20687
20789
  const _hoisted_2$y = ["placeholder"];
20688
20790
  const _hoisted_3$p = { class: "lupa-terms-list" };
20689
- const _hoisted_4$j = ["onClick"];
20791
+ const _hoisted_4$k = ["onClick"];
20690
20792
  const _hoisted_5$e = { class: "lupa-term-checkbox-wrapper" };
20691
20793
  const _hoisted_6$9 = { class: "lupa-term-checkbox-label" };
20692
20794
  const _hoisted_7$6 = { class: "lupa-term-label" };
@@ -20794,7 +20896,7 @@ and ensure you are accounting for this risk.
20794
20896
  createBaseVNode("span", _hoisted_7$6, toDisplayString(item.title), 1),
20795
20897
  _ctx.options.showDocumentCount ? (openBlock(), createElementBlock("span", _hoisted_8$2, "(" + toDisplayString(item.count) + ")", 1)) : createCommentVNode("", true)
20796
20898
  ])
20797
- ], 10, _hoisted_4$j);
20899
+ ], 10, _hoisted_4$k);
20798
20900
  }), 128))
20799
20901
  ]),
20800
20902
  displayShowMore.value ? (openBlock(), createElementBlock("div", {
@@ -21794,7 +21896,7 @@ and ensure you are accounting for this risk.
21794
21896
  key: 1,
21795
21897
  class: "lupa-stats-facet-summary-input"
21796
21898
  };
21797
- const _hoisted_4$i = {
21899
+ const _hoisted_4$j = {
21798
21900
  key: 0,
21799
21901
  class: "lupa-stats-range-label"
21800
21902
  };
@@ -21989,7 +22091,7 @@ and ensure you are accounting for this risk.
21989
22091
  return openBlock(), createElementBlock("div", _hoisted_1$I, [
21990
22092
  !isInputVisible.value ? (openBlock(), createElementBlock("div", _hoisted_2$x, toDisplayString(statsSummary.value), 1)) : (openBlock(), createElementBlock("div", _hoisted_3$o, [
21991
22093
  createBaseVNode("div", null, [
21992
- rangeLabelFrom.value ? (openBlock(), createElementBlock("div", _hoisted_4$i, toDisplayString(rangeLabelFrom.value), 1)) : createCommentVNode("", true),
22094
+ rangeLabelFrom.value ? (openBlock(), createElementBlock("div", _hoisted_4$j, toDisplayString(rangeLabelFrom.value), 1)) : createCommentVNode("", true),
21993
22095
  createBaseVNode("div", _hoisted_5$d, [
21994
22096
  withDirectives(createBaseVNode("input", {
21995
22097
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => fromValue.value = $event),
@@ -22056,7 +22158,7 @@ and ensure you are accounting for this risk.
22056
22158
  const _hoisted_1$H = { class: "lupa-term-checkbox-wrapper" };
22057
22159
  const _hoisted_2$w = { class: "lupa-term-checkbox-label" };
22058
22160
  const _hoisted_3$n = { class: "lupa-term-label" };
22059
- const _hoisted_4$h = {
22161
+ const _hoisted_4$i = {
22060
22162
  key: 0,
22061
22163
  class: "lupa-term-count"
22062
22164
  };
@@ -22117,7 +22219,7 @@ and ensure you are accounting for this risk.
22117
22219
  ]),
22118
22220
  createBaseVNode("div", _hoisted_2$w, [
22119
22221
  createBaseVNode("span", _hoisted_3$n, toDisplayString(_ctx.item.title) + toDisplayString(" "), 1),
22120
- _ctx.options.showDocumentCount ? (openBlock(), createElementBlock("span", _hoisted_4$h, "(" + toDisplayString(_ctx.item.count) + ")", 1)) : createCommentVNode("", true)
22222
+ _ctx.options.showDocumentCount ? (openBlock(), createElementBlock("span", _hoisted_4$i, "(" + toDisplayString(_ctx.item.count) + ")", 1)) : createCommentVNode("", true)
22121
22223
  ])
22122
22224
  ]),
22123
22225
  showChildren.value ? (openBlock(), createElementBlock("div", _hoisted_5$c, [
@@ -22629,7 +22731,7 @@ and ensure you are accounting for this risk.
22629
22731
  };
22630
22732
  const _hoisted_2$r = ["onClick"];
22631
22733
  const _hoisted_3$l = { class: "lupa-mobile-sidebar-content" };
22632
- const _hoisted_4$g = { class: "lupa-sidebar-top" };
22734
+ const _hoisted_4$h = { class: "lupa-sidebar-top" };
22633
22735
  const _hoisted_5$b = { class: "lupa-sidebar-title" };
22634
22736
  const _hoisted_6$7 = {
22635
22737
  key: 0,
@@ -22673,7 +22775,7 @@ and ensure you are accounting for this risk.
22673
22775
  onClick: withModifiers(handleMobileToggle, ["stop"])
22674
22776
  }, null, 8, _hoisted_2$r),
22675
22777
  createBaseVNode("div", _hoisted_3$l, [
22676
- createBaseVNode("div", _hoisted_4$g, [
22778
+ createBaseVNode("div", _hoisted_4$h, [
22677
22779
  createBaseVNode("div", _hoisted_5$b, [
22678
22780
  createTextVNode(toDisplayString(sidebarTitle.value) + " ", 1),
22679
22781
  isFilterCountVisible.value ? (openBlock(), createElementBlock("span", _hoisted_6$7, toDisplayString(unref(currentFilterCount)), 1)) : createCommentVNode("", true)
@@ -22701,7 +22803,7 @@ and ensure you are accounting for this risk.
22701
22803
  key: 1,
22702
22804
  class: "lupa-search-results-breadcrumb-text"
22703
22805
  };
22704
- const _hoisted_4$f = { key: 2 };
22806
+ const _hoisted_4$g = { key: 2 };
22705
22807
  const _sfc_main$D = /* @__PURE__ */ defineComponent({
22706
22808
  __name: "SearchResultsBreadcrumbs",
22707
22809
  props: {
@@ -22742,7 +22844,7 @@ and ensure you are accounting for this risk.
22742
22844
  return handleNavigation(e2, (_a = breadcrumb == null ? void 0 : breadcrumb.link) != null ? _a : "");
22743
22845
  }
22744
22846
  }, toDisplayString(getLabel(breadcrumb.label)), 9, _hoisted_2$q)) : (openBlock(), createElementBlock("span", _hoisted_3$k, toDisplayString(getLabel(breadcrumb.label)), 1)),
22745
- index < breadcrumbsValue.value.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_4$f, " / ")) : createCommentVNode("", true)
22847
+ index < breadcrumbsValue.value.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_4$g, " / ")) : createCommentVNode("", true)
22746
22848
  ]);
22747
22849
  }), 128))
22748
22850
  ]);
@@ -22848,7 +22950,7 @@ and ensure you are accounting for this risk.
22848
22950
  class: "lupa-page-number-separator"
22849
22951
  };
22850
22952
  const _hoisted_3$j = ["onClick"];
22851
- const _hoisted_4$e = {
22953
+ const _hoisted_4$f = {
22852
22954
  key: 0,
22853
22955
  class: "lupa-page-number-separator"
22854
22956
  };
@@ -22954,7 +23056,7 @@ and ensure you are accounting for this risk.
22954
23056
  }, toDisplayString(page), 11, _hoisted_3$j);
22955
23057
  }), 128)),
22956
23058
  showLastPage.value ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
22957
- showLastPageSeparator.value ? (openBlock(), createElementBlock("div", _hoisted_4$e, "...")) : createCommentVNode("", true),
23059
+ showLastPageSeparator.value ? (openBlock(), createElementBlock("div", _hoisted_4$f, "...")) : createCommentVNode("", true),
22958
23060
  createBaseVNode("div", {
22959
23061
  class: "lupa-page-number lupa-page-number-last",
22960
23062
  onClick: _cache[2] || (_cache[2] = () => {
@@ -22979,7 +23081,7 @@ and ensure you are accounting for this risk.
22979
23081
  };
22980
23082
  const _hoisted_2$o = { id: "lupa-select" };
22981
23083
  const _hoisted_3$i = { class: "lupa-select-label" };
22982
- const _hoisted_4$d = ["aria-label"];
23084
+ const _hoisted_4$e = ["aria-label"];
22983
23085
  const _hoisted_5$a = ["value"];
22984
23086
  const _sfc_main$y = /* @__PURE__ */ defineComponent({
22985
23087
  __name: "SearchResultsPageSize",
@@ -23026,7 +23128,7 @@ and ensure you are accounting for this risk.
23026
23128
  value: option
23027
23129
  }, toDisplayString(prefixLabel.value) + toDisplayString(option), 9, _hoisted_5$a);
23028
23130
  }), 128))
23029
- ], 40, _hoisted_4$d)
23131
+ ], 40, _hoisted_4$e)
23030
23132
  ])
23031
23133
  ]);
23032
23134
  };
@@ -23038,7 +23140,7 @@ and ensure you are accounting for this risk.
23038
23140
  };
23039
23141
  const _hoisted_2$n = { id: "lupa-select" };
23040
23142
  const _hoisted_3$h = { class: "lupa-select-label" };
23041
- const _hoisted_4$c = ["aria-label"];
23143
+ const _hoisted_4$d = ["aria-label"];
23042
23144
  const _hoisted_5$9 = ["value"];
23043
23145
  const _sfc_main$x = /* @__PURE__ */ defineComponent({
23044
23146
  __name: "SearchResultsSort",
@@ -23106,7 +23208,7 @@ and ensure you are accounting for this risk.
23106
23208
  value: option.key
23107
23209
  }, toDisplayString(option.label), 9, _hoisted_5$9);
23108
23210
  }), 128))
23109
- ], 40, _hoisted_4$c), [
23211
+ ], 40, _hoisted_4$d), [
23110
23212
  [vModelSelect, selectedKey.value]
23111
23213
  ])
23112
23214
  ])
@@ -23120,7 +23222,7 @@ and ensure you are accounting for this risk.
23120
23222
  class: "lupa-toolbar-right-title"
23121
23223
  };
23122
23224
  const _hoisted_3$g = { key: 2 };
23123
- const _hoisted_4$b = { key: 4 };
23225
+ const _hoisted_4$c = { key: 4 };
23124
23226
  const _hoisted_5$8 = { key: 6 };
23125
23227
  const _hoisted_6$6 = { class: "lupa-toolbar-right" };
23126
23228
  const _hoisted_7$3 = {
@@ -23244,7 +23346,7 @@ and ensure you are accounting for this risk.
23244
23346
  label: searchSummaryLabel.value,
23245
23347
  clearable: unref(hasAnyFilter) && showFilterClear.value,
23246
23348
  onClear: handleClearAll
23247
- }, null, 8, ["label", "clearable"])) : (openBlock(), createElementBlock("div", _hoisted_4$b)),
23349
+ }, null, 8, ["label", "clearable"])) : (openBlock(), createElementBlock("div", _hoisted_4$c)),
23248
23350
  displayPageSelect.value ? (openBlock(), createBlock(_sfc_main$z, {
23249
23351
  key: 5,
23250
23352
  options: paginationOptions.value.pageSelect,
@@ -23293,7 +23395,7 @@ and ensure you are accounting for this risk.
23293
23395
  const _hoisted_1$r = ["title", "innerHTML"];
23294
23396
  const _hoisted_2$l = ["title"];
23295
23397
  const _hoisted_3$f = ["href", "innerHTML"];
23296
- const _hoisted_4$a = ["title"];
23398
+ const _hoisted_4$b = ["title"];
23297
23399
  const _hoisted_5$7 = {
23298
23400
  key: 0,
23299
23401
  class: "lupa-search-results-product-title-text"
@@ -23361,7 +23463,7 @@ and ensure you are accounting for this risk.
23361
23463
  class: "lupa-search-results-product-title-text lupa-title-link",
23362
23464
  onClick: handleNavigation
23363
23465
  }, toDisplayString(title.value), 9, _hoisted_6$5)) : createCommentVNode("", true)
23364
- ], 12, _hoisted_4$a));
23466
+ ], 12, _hoisted_4$b));
23365
23467
  };
23366
23468
  }
23367
23469
  });
@@ -23404,7 +23506,7 @@ and ensure you are accounting for this risk.
23404
23506
  const _hoisted_1$p = { id: "lupa-search-results-rating" };
23405
23507
  const _hoisted_2$k = { class: "lupa-ratings" };
23406
23508
  const _hoisted_3$e = { class: "lupa-ratings-base" };
23407
- const _hoisted_4$9 = ["innerHTML"];
23509
+ const _hoisted_4$a = ["innerHTML"];
23408
23510
  const _hoisted_5$6 = { class: "lupa-rating-wrapper" };
23409
23511
  const _hoisted_6$4 = ["innerHTML"];
23410
23512
  const _hoisted_7$2 = ["href"];
@@ -23448,7 +23550,7 @@ and ensure you are accounting for this risk.
23448
23550
  key: index,
23449
23551
  innerHTML: star,
23450
23552
  class: "lupa-rating lupa-rating-not-highlighted"
23451
- }, null, 8, _hoisted_4$9);
23553
+ }, null, 8, _hoisted_4$a);
23452
23554
  }), 128))
23453
23555
  ]),
23454
23556
  createBaseVNode("div", _hoisted_5$6, [
@@ -23582,7 +23684,7 @@ and ensure you are accounting for this risk.
23582
23684
  const _hoisted_1$m = ["innerHTML"];
23583
23685
  const _hoisted_2$i = { key: 0 };
23584
23686
  const _hoisted_3$c = { key: 1 };
23585
- const _hoisted_4$8 = { class: "lupa-search-box-custom-label" };
23687
+ const _hoisted_4$9 = { class: "lupa-search-box-custom-label" };
23586
23688
  const _hoisted_5$5 = { class: "lupa-search-box-custom-text" };
23587
23689
  const _sfc_main$o = /* @__PURE__ */ defineComponent({
23588
23690
  __name: "SearchResultsProductCustom",
@@ -23627,7 +23729,7 @@ and ensure you are accounting for this risk.
23627
23729
  class: className.value
23628
23730
  }, toHandlers(_ctx.options.action ? { click: handleClick } : {}, true)), [
23629
23731
  !label.value ? (openBlock(), createElementBlock("div", _hoisted_2$i, toDisplayString(text.value), 1)) : (openBlock(), createElementBlock("div", _hoisted_3$c, [
23630
- createBaseVNode("div", _hoisted_4$8, toDisplayString(label.value), 1),
23732
+ createBaseVNode("div", _hoisted_4$9, toDisplayString(label.value), 1),
23631
23733
  createBaseVNode("div", _hoisted_5$5, toDisplayString(text.value), 1)
23632
23734
  ]))
23633
23735
  ], 16));
@@ -23673,7 +23775,7 @@ and ensure you are accounting for this risk.
23673
23775
  const _hoisted_1$k = { id: "lupa-search-results-rating" };
23674
23776
  const _hoisted_2$h = ["innerHTML"];
23675
23777
  const _hoisted_3$b = { class: "lupa-ratings" };
23676
- const _hoisted_4$7 = ["href"];
23778
+ const _hoisted_4$8 = ["href"];
23677
23779
  const _sfc_main$m = /* @__PURE__ */ defineComponent({
23678
23780
  __name: "SearchResultsProductSingleStarRating",
23679
23781
  props: {
@@ -23711,7 +23813,7 @@ and ensure you are accounting for this risk.
23711
23813
  createBaseVNode("a", {
23712
23814
  href: ratingLink.value,
23713
23815
  class: "lupa-total-ratings"
23714
- }, toDisplayString(totalRatings.value), 9, _hoisted_4$7)
23816
+ }, toDisplayString(totalRatings.value), 9, _hoisted_4$8)
23715
23817
  ]);
23716
23818
  };
23717
23819
  }
@@ -24039,7 +24141,7 @@ and ensure you are accounting for this risk.
24039
24141
  class: "lupa-similar-query-label",
24040
24142
  "data-cy": "lupa-similar-query-label"
24041
24143
  };
24042
- const _hoisted_4$6 = ["onClick"];
24144
+ const _hoisted_4$7 = ["onClick"];
24043
24145
  const _hoisted_5$4 = ["innerHTML"];
24044
24146
  const _hoisted_6$3 = { key: 0 };
24045
24147
  const _hoisted_7$1 = {
@@ -24092,7 +24194,7 @@ and ensure you are accounting for this risk.
24092
24194
  innerHTML: getSimilarQueryContent(similarQuery.displayQuery)
24093
24195
  }, null, 8, _hoisted_5$4),
24094
24196
  similarQuery.count ? (openBlock(), createElementBlock("span", _hoisted_6$3, " (" + toDisplayString(similarQuery.count) + ")", 1)) : createCommentVNode("", true)
24095
- ], 8, _hoisted_4$6)
24197
+ ], 8, _hoisted_4$7)
24096
24198
  ]),
24097
24199
  createBaseVNode("div", _hoisted_7$1, [
24098
24200
  (openBlock(true), createElementBlock(Fragment, null, renderList(similarQuery.items, (product, index2) => {
@@ -24315,7 +24417,7 @@ and ensure you are accounting for this risk.
24315
24417
  class: "lupa-empty-results",
24316
24418
  "data-cy": "lupa-no-results-in-page"
24317
24419
  };
24318
- const _hoisted_4$5 = {
24420
+ const _hoisted_4$6 = {
24319
24421
  key: 3,
24320
24422
  class: "lupa-empty-results",
24321
24423
  "data-cy": "lupa-no-results"
@@ -24507,7 +24609,7 @@ and ensure you are accounting for this risk.
24507
24609
  location: "bottom",
24508
24610
  sdkOptions: _ctx.options.options
24509
24611
  }, null, 8, ["options", "sdkOptions"])
24510
- ], 64)) : !unref(loading) && unref(currentQueryText) ? (openBlock(), createElementBlock("div", _hoisted_4$5, [
24612
+ ], 64)) : !unref(loading) && unref(currentQueryText) ? (openBlock(), createElementBlock("div", _hoisted_4$6, [
24511
24613
  createTextVNode(toDisplayString(_ctx.options.labels.emptyResults) + " ", 1),
24512
24614
  createBaseVNode("span", null, toDisplayString(unref(currentQueryText)), 1)
24513
24615
  ])) : createCommentVNode("", true),
@@ -24536,6 +24638,7 @@ and ensure you are accounting for this risk.
24536
24638
  class: "lupa-category-back"
24537
24639
  };
24538
24640
  const _hoisted_3$6 = ["href"];
24641
+ const _hoisted_4$5 = { class: "lupa-child-category-list" };
24539
24642
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
24540
24643
  __name: "CategoryTopFilters",
24541
24644
  props: {
@@ -24543,6 +24646,8 @@ and ensure you are accounting for this risk.
24543
24646
  },
24544
24647
  setup(__props) {
24545
24648
  const props = __props;
24649
+ const searchResultsStore = useSearchResultStore();
24650
+ const { relatedCategoryChildren } = storeToRefs(searchResultsStore);
24546
24651
  const hasBackButton = computed(() => {
24547
24652
  var _a, _b;
24548
24653
  return Boolean((_b = (_a = props.options.categories) == null ? void 0 : _a.back) == null ? void 0 : _b.title);
@@ -24558,12 +24663,19 @@ and ensure you are accounting for this risk.
24558
24663
  const hasEventRouting = computed(() => {
24559
24664
  return props.options.routingBehavior === "event";
24560
24665
  });
24666
+ const categoryOptions = computed(() => {
24667
+ return props.options.categories;
24668
+ });
24561
24669
  const handleNavigationBack = (event) => {
24562
24670
  if (!backUrlLink.value) {
24563
24671
  return;
24564
24672
  }
24565
24673
  handleRoutingEvent(backUrlLink.value, event, hasEventRouting.value);
24566
24674
  };
24675
+ const getCategoryKey = (item) => {
24676
+ var _a, _b, _c, _d, _e, _f;
24677
+ return (item == null ? void 0 : item[(_c = (_b = (_a = categoryOptions.value) == null ? void 0 : _a.keys) == null ? void 0 : _b.titleKey) != null ? _c : ""]) + (item == null ? void 0 : item[(_f = (_e = (_d = categoryOptions.value) == null ? void 0 : _d.keys) == null ? void 0 : _e.urlKey) != null ? _f : ""]);
24678
+ };
24567
24679
  return (_ctx, _cache) => {
24568
24680
  return openBlock(), createElementBlock("div", {
24569
24681
  class: normalizeClass(["lupa-category-top-mobile-filters", { "lupa-has-back-button": hasBackButton.value }])
@@ -24576,6 +24688,15 @@ and ensure you are accounting for this risk.
24576
24688
  onClick: handleNavigationBack
24577
24689
  }, toDisplayString(backTitle.value), 9, _hoisted_3$6)
24578
24690
  ])) : createCommentVNode("", true),
24691
+ createBaseVNode("div", _hoisted_4$5, [
24692
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(relatedCategoryChildren), (child) => {
24693
+ return openBlock(), createBlock(_sfc_main$P, {
24694
+ key: getCategoryKey(child),
24695
+ item: child,
24696
+ options: categoryOptions.value
24697
+ }, null, 8, ["item", "options"]);
24698
+ }), 128))
24699
+ ]),
24579
24700
  createVNode(_sfc_main$w, {
24580
24701
  class: "lupa-toolbar-mobile",
24581
24702
  "pagination-location": "top",