@sledge-app/react-instant-search 1.0.68 → 1.0.69

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.
@@ -9,79 +9,6 @@ const API_URL = "https://api.sledge-app.com";
9
9
  const INSTANT_SEARCH_ENGINE_URL = "https://instant-search-engine.sledge-app.com";
10
10
  const CDN_URL = "https://sledgeassets.nyc3.cdn.digitaloceanspaces.com";
11
11
  const SELECTOR_ATTRIBUTE_KEY = "data-component";
12
- const DATASET_ATTRIBUTE_KEY = {
13
- GLOBAL: {
14
- ON_AFTER_ADD_WISHLIST: "data-on-after-add-wishlist",
15
- ON_AFTER_REMOVE_WISHLIST: "data-on-after-remove-wishlist",
16
- ON_AFTER_ADD_TO_CART: "data-on-after-add-to-cart",
17
- ON_AFTER_ADD_REVIEW: "data-on-after-add-review",
18
- ON_AFTER_RENDER_PRODUCT: "data-on-after-render-product",
19
- PRODUCT_ID: "data-product-id",
20
- PRODUCT_VARIANT_ID: "data-product-variant-id",
21
- PRODUCT_NAME: "data-product-name",
22
- PRODUCT_VENDOR: "data-product-vendor",
23
- PRODUCT_SKU: "data-product-sku",
24
- PRODUCT_VARIANT_NAME: "data-product-variant-name",
25
- PRODUCT_LINK: "data-product-link",
26
- PRODUCT_IMAGE: "data-product-image",
27
- PRODUCT_CURRENCY: "data-product-currency",
28
- PRODUCT_PRICE: "data-product-price",
29
- USER_ID: "data-user-id",
30
- USER_EMAIL: "data-user-email",
31
- USER_FULLNAME: "data-user-fullname",
32
- COLLECTION_ID: "data-collection-id",
33
- COLLECTION_NAME: "data-collection-name",
34
- WIDTH_ELEMENT: "data-width-element",
35
- ICON_SIZE: "data-icon-size",
36
- API_KEY: "data-api-key",
37
- INSTANT_SEARCH_API_KEY: "data-instant-search-api-key",
38
- RENDER_PRODUCT_CARD: "data-render-product-card",
39
- WITH_SKELETON_LOADING: "data-with-skeleton-loading",
40
- SECTION_TITLE: "data-section-title",
41
- SECTION_DESCRIPTION: "data-section-description",
42
- USE_SLIDER: "data-use-slider",
43
- FILL_COLOR: "data-fill-color",
44
- OUTLINE_COLOR: "data-outline-color",
45
- POSITION_WIDGET: "data-position-widget"
46
- },
47
- WISHLIST: {
48
- SHARE_ID: "data-share-id",
49
- QUERY_SHARE_ID: "data-query-share-id",
50
- RENDER_WISHLIST_WIDGET_ALERT: "data-render-wishlist-widget-alert",
51
- USE_PROXY_URL: "data-use-proxy-url",
52
- LIMIT_OPTIONS: "data-limit-options"
53
- },
54
- PRODUCT_REVIEW: {
55
- RATING_SIZE: "data-rating-size",
56
- RATING_TOTAL: "data-rating-total",
57
- RATING_AVERAGE: "data-rating-average",
58
- RENDER_REVIEW_PRODUCT_INFO: "data-render-review-product-info",
59
- TRUST_BADGE_VARIANT: "data-trust-badge-variant",
60
- SHOW_RATING_AVERAGE: "data-show-rating-average"
61
- },
62
- INSTANT_SEARCH: {
63
- ON_AFTER_RENDER_COLLECTION: "data-on-after-render-collection",
64
- ON_AFTER_RENDER_PAGE: "data-on-after-render-page",
65
- ON_AFTER_RENDER_BLOG: "data-on-after-render-blog",
66
- ON_AFTER_RENDER_ARTICLE: "data-on-after-render-article",
67
- QUERY_KEYWORD: "data-query-keyword",
68
- QUERY_SORT_BY: "data-query-sort-by",
69
- QUERY_PAGE: "data-query-page",
70
- QUERY_LIMIT: "data-query-limit",
71
- URL_SEARCH_RESULT: "data-url-search-result",
72
- RENDER_SUGGESTION_KEYWORD_LIST: "data-render-suggestion-keyword-list",
73
- RENDER_OTHER_INDEX_LIST: "data-render-other-index-list",
74
- RENDER_SEARCH_VIEW_MORE_RESULT: "data-render-search-view-more-result",
75
- RENDER_COLLECTION_CARD: "data-render-collection-card",
76
- RENDER_PAGE_CARD: "data-render-page-card",
77
- RENDER_BLOG_CARD: "data-render-blog-card",
78
- RENDER_ARTICLE_CARD: "data-render-article-card"
79
- },
80
- PRODUCT_RECOMMENDATION: {
81
- DISPLAY_LIMIT: "data-display-limit",
82
- HIDDEN_PRODUCT_IDS: "data-hidden-product-ids"
83
- }
84
- };
85
12
  const LOCAL_STORAGE_KEY = {
86
13
  ANONYM_ID: "sledge-anonym-id",
87
14
  AUTH_APP: "sledge-auth-app",
@@ -95,7 +22,8 @@ const LOCAL_STORAGE_KEY = {
95
22
  ISSUED_AUTH_APP: "sledge-issued-auth-app",
96
23
  EXPIRED_AUTH_APP: "sledge-expired-auth-app",
97
24
  RECENTLY_VIEWED_APP: "sledge-recently-viewed",
98
- LIMIT_PRODUCT: "sledge-limit-product"
25
+ LIMIT_PRODUCT: "sledge-limit-product",
26
+ WISHLIST_BADGE_COUNTER: "sledge-wishlist-badge-counter"
99
27
  };
100
28
  const INTERNAL_SELECTOR_VALUE = {
101
29
  ELEMENT_TOAST_NOTIFICATION: "toast-notification",
@@ -123,6 +51,7 @@ const SELECTOR = {
123
51
  },
124
52
  WISHLIST: {
125
53
  ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}="wishlist-badge"]`,
54
+ ELEMENT_BADGE_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}="wishlist-badge-counter"]`,
126
55
  ELEMENT_BADGE_MENU_ITEM: `[href="#sledge-wishlist-badge-menu-item"]`,
127
56
  ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}="wishlist-trigger"]`,
128
57
  ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}="wishlist-widget"]`,
@@ -721,13 +650,14 @@ const Pagination = (props) => {
721
650
  ] });
722
651
  };
723
652
  const RadioGroup$1 = "";
724
- const rowRenderer = ({ virtualized, item, id, labelStyle }) => {
725
- const { index, key = "", style = {} } = virtualized || {};
653
+ const rowRenderer = ({ virtualized, item, id, labelStyle, useVirtualized }) => {
654
+ const { index, key = "", style = {}, isScrolling = false, isVisible = false } = virtualized || {};
726
655
  const { label, value } = item;
727
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge__radio-group-item-flex", style, children: [
656
+ const content = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
728
657
  /* @__PURE__ */ jsxRuntimeExports.jsx($f99a8c78507165f7$export$6d08773d2e66f8f2, { className: "sledge__radio-group-item", value, id: `${id}${index}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx($f99a8c78507165f7$export$adb584737d712b70, { className: "sledge__radio-group-indicator" }) }),
729
658
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "sledge__radio-group-label", htmlFor: `${id}${index}`, style: labelStyle, children: label })
730
- ] }, key || index);
659
+ ] });
660
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__radio-group-item-flex", style, children: !useVirtualized ? content : !isVisible && isScrolling ? /* @__PURE__ */ jsxRuntimeExports.jsx(LoadingDots, {}) : content }, key || index);
731
661
  };
732
662
  const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, scrollElement, useVirtualized = false }) => {
733
663
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__radio-group-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsx("form", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -748,15 +678,18 @@ const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {},
748
678
  },
749
679
  rowCount: items == null ? void 0 : items.length,
750
680
  rowHeight: 36,
751
- rowRenderer: ({ index, key, style }) => rowRenderer({
681
+ rowRenderer: ({ index, key, style, isScrolling, isVisible }) => rowRenderer({
752
682
  virtualized: {
753
683
  index,
754
684
  key,
755
- style
685
+ style,
686
+ isScrolling,
687
+ isVisible
756
688
  },
757
689
  item: items[index],
758
690
  id,
759
- labelStyle
691
+ labelStyle,
692
+ useVirtualized
760
693
  })
761
694
  }
762
695
  ) : items.map(
@@ -766,7 +699,8 @@ const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {},
766
699
  },
767
700
  item,
768
701
  id,
769
- labelStyle
702
+ labelStyle,
703
+ useVirtualized
770
704
  })
771
705
  )
772
706
  }
@@ -1204,41 +1138,48 @@ const addToCartTrigger$2 = async (data) => {
1204
1138
  return;
1205
1139
  });
1206
1140
  };
1207
- const Badge = (props) => {
1141
+ const wishlistInfo = async ({ callback }) => {
1208
1142
  var _a, _b;
1209
- const { useProxyUrl = false, data: propsData, position: positionProp } = props;
1210
- const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React__default.useContext(SledgeContext);
1143
+ let response;
1144
+ let run = false;
1145
+ let valueTotalWishlist;
1146
+ let valueProxyUrl;
1147
+ response = await getWishlistInfo();
1148
+ run = ((_a = response == null ? void 0 : response.status) == null ? void 0 : _a.code) === 200 || false;
1149
+ valueTotalWishlist = !((_b = response == null ? void 0 : response.data) == null ? void 0 : _b.total_data) ? 0 : response.data.total_data;
1150
+ valueProxyUrl = DEFAULT_WISHLIST_URL;
1151
+ if (run)
1152
+ callback({
1153
+ totalWishlist: valueTotalWishlist,
1154
+ proxyUrl: valueProxyUrl,
1155
+ data: response == null ? void 0 : response.data
1156
+ });
1157
+ };
1158
+ const BadgeCounter = (props) => {
1159
+ var _a;
1160
+ const { data: propsData } = props;
1161
+ const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React__default.useContext(SledgeContext);
1211
1162
  const { wishlist: isRenderAppWishlist } = isRenderApp || {};
1212
1163
  const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = ((_a = triggerRenderMultipleComponent == null ? void 0 : triggerRenderMultipleComponent.wishlist) == null ? void 0 : _a.badge) || {};
1213
- const defaultColorIcon = "currentColor";
1214
- const [colorIcon, setColorIcon] = React__default.useState(defaultColorIcon);
1215
1164
  const [totalWishlist, setTotalWishlist] = React__default.useState((propsData == null ? void 0 : propsData.total_data) || 0);
1216
1165
  const [isFirstLoading, setIsFirstLoading] = React__default.useState(!propsData);
1217
1166
  const [isLoading, setIsLoading] = React__default.useState(!propsData);
1218
1167
  const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React__default.useState(false);
1219
- const [proxyUrl, setProxyUrl] = React__default.useState((propsData == null ? void 0 : propsData.proxy_url) || "");
1220
1168
  const [dataSettings, setDataSettings] = React__default.useState({});
1221
1169
  const [isRequiredLogin, setIsRequiredLogin] = React__default.useState(false);
1222
- const { floating_button_type } = (dataSettings == null ? void 0 : dataSettings.launch_point) || {};
1223
- const { alert_login, alert, login_button } = ((_b = dataSettings == null ? void 0 : dataSettings.languages) == null ? void 0 : _b.widget) || {};
1224
- const defaultPosition = positionProp || floating_button_type;
1225
- const position = defaultPosition ? defaultPosition : "none";
1226
1170
  const handleGetWishlistInfo = async () => {
1227
- var _a2, _b2;
1228
- let response;
1229
- let run = false;
1230
- let valueTotalWishlist;
1231
- let valueProxyUrl;
1232
- response = await getWishlistInfo();
1233
- run = ((_a2 = response == null ? void 0 : response.status) == null ? void 0 : _a2.code) === 200 || false;
1234
- valueTotalWishlist = !((_b2 = response == null ? void 0 : response.data) == null ? void 0 : _b2.total_data) ? 0 : response.data.total_data;
1235
- valueProxyUrl = DEFAULT_WISHLIST_URL;
1236
- if (run) {
1237
- setTotalWishlist(valueTotalWishlist);
1238
- setIsMaximizeTotalWishlist(valueTotalWishlist > 99);
1239
- setProxyUrl(valueProxyUrl);
1240
- setIsFirstLoading(false);
1241
- setIsLoading(false);
1171
+ if (!propsData || propsData && !Object.keys(propsData).length) {
1172
+ await wishlistInfo({
1173
+ callback: ({ totalWishlist: valueTotalWishlist }) => {
1174
+ setTotalWishlist(valueTotalWishlist);
1175
+ setIsMaximizeTotalWishlist(valueTotalWishlist > 99);
1176
+ setIsFirstLoading(false);
1177
+ setIsLoading(false);
1178
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);
1179
+ }
1180
+ });
1181
+ } else {
1182
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, totalWishlist);
1242
1183
  }
1243
1184
  };
1244
1185
  const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING) => {
@@ -1250,25 +1191,6 @@ const Badge = (props) => {
1250
1191
  setDataSettings(response);
1251
1192
  setIsRequiredLogin(sledgeAnonymId && is_required_login);
1252
1193
  };
1253
- const handleRequiredLogin = (e) => {
1254
- if (isRequiredLogin) {
1255
- e.preventDefault();
1256
- e.stopPropagation();
1257
- }
1258
- if (isRequiredLogin) {
1259
- if (typeof window !== "undefined" && window.sledgeConfirmationPopup)
1260
- window.sledgeConfirmationPopup({
1261
- title: alert_login || "Login required!",
1262
- message: alert || "Please login to save your wishlist across devices.",
1263
- textSubmit: login_button || "Login",
1264
- buttonSubmitType: "info",
1265
- onSubmit: () => window.location.href = "/account/login"
1266
- });
1267
- } else {
1268
- if (useProxyUrl)
1269
- window.location.href = proxyUrl || "/";
1270
- }
1271
- };
1272
1194
  React__default.useEffect(() => {
1273
1195
  if (!isRenderAppWishlist)
1274
1196
  return;
@@ -1286,124 +1208,40 @@ const Badge = (props) => {
1286
1208
  triggerRenderWishlistBadge(false);
1287
1209
  handleGetWishlistInfo();
1288
1210
  }, [valueRenderWishlistBadge]);
1289
- const HeaderMenu = () => {
1290
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "sledge-wishlist__badge", onClick: handleRequiredLogin, onMouseEnter: () => setColorIcon("#F85538"), onMouseLeave: () => setColorIcon(defaultColorIcon), children: [
1291
- /* @__PURE__ */ jsxRuntimeExports.jsx(HeartIcon, { width: 20, height: 20, type: "outline", color: colorIcon }),
1292
- !isFirstLoading && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? "sledge-wishlist__badge-fit-content" : ""}`, children: isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? "99+" : totalWishlist}` || 0 })
1293
- ] });
1294
- };
1295
- const FloatingFull = () => {
1296
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `sledge-wishlist__badge-floating sledge__badge-floating-${position}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { onClick: handleRequiredLogin, className: "sledge-wishlist__badge-floating-icon-link", children: [
1297
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sledge-wishlist__badge-floating-text", children: "My Wishlist" }),
1298
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "sledge-wishlist__badge-icon", children: [
1299
- /* @__PURE__ */ jsxRuntimeExports.jsx(HeartIcon, { width: 18, height: 18, type: "fill", color: "#000000" }),
1300
- !isFirstLoading && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? "sledge-wishlist__badge-fit-content" : ""}`, children: isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? "99+" : totalWishlist}` || 0 })
1301
- ] })
1302
- ] }) });
1303
- };
1304
- const FloatingIcon = () => {
1305
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { onClick: handleRequiredLogin, className: "sledge-wishlist__badge-floating-icon-link", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "sledge-wishlist__badge-icon", children: [
1306
- /* @__PURE__ */ jsxRuntimeExports.jsx(HeartIcon, { width: 27.01, height: 25.73, type: "outline", color: "#000000" }),
1307
- !isFirstLoading && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? "sledge-wishlist__badge-fit-content" : ""}`, children: isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? "99+" : totalWishlist}` || 0 })
1308
- ] }) }) });
1309
- };
1310
- return isFirstLoading ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: position === "none" ? /* @__PURE__ */ jsxRuntimeExports.jsx(HeaderMenu, {}) : String(position).includes("bottom") ? /* @__PURE__ */ jsxRuntimeExports.jsx(FloatingIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(FloatingFull, {}) });
1211
+ const defaultTotalWishlist = isJsVersion ? (localStorage == null ? void 0 : localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER)) || null : null;
1212
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? "99+" : totalWishlist}` || 0 });
1311
1213
  };
1312
- const BadgeInitSelector = () => {
1313
- const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) : null;
1314
- let element = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));
1214
+ const BadgeCounterInitSelector = () => {
1215
+ let element = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER));
1315
1216
  let isElementDetected = !element || element && !element.length;
1316
- if (!sledgeWishlistSettings || isElementDetected)
1217
+ if (isElementDetected)
1317
1218
  return;
1318
- const { floating_button_type } = (sledgeWishlistSettings == null ? void 0 : sledgeWishlistSettings.launch_point) || {};
1319
- const isBottomFloatingType = String(floating_button_type).includes("bottom");
1320
- if (floating_button_type !== "none") {
1321
- if (isBottomFloatingType) {
1322
- element.map((item, index) => {
1323
- if (item && !index) {
1324
- if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`))
1325
- item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`).remove();
1326
- let elementContainerWidget = document.createElement("div");
1327
- elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);
1328
- item.appendChild(elementContainerWidget);
1329
- const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);
1330
- client.createRoot(elementContainerWidget).render(
1331
- /* @__PURE__ */ jsxRuntimeExports.jsx(React__default.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1332
- SledgeContext.Provider,
1333
- {
1334
- value: {
1335
- isRenderApp: {
1336
- wishlist: true,
1337
- productReview: true,
1338
- instantSearch: true
1339
- },
1340
- sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || "",
1341
- isJsVersion: true
1342
- },
1343
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { useProxyUrl: Boolean(USE_PROXY_URL && USE_PROXY_URL === "true"), position: floating_button_type })
1344
- }
1345
- ) })
1346
- );
1347
- }
1348
- });
1349
- } else {
1350
- element.map((item, index) => {
1351
- if (item && !index) {
1352
- if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`))
1353
- item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`).remove();
1354
- let elementContainerWidget = document.createElement("div");
1355
- elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);
1356
- item.appendChild(elementContainerWidget);
1357
- const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);
1358
- client.createRoot(elementContainerWidget).render(
1359
- /* @__PURE__ */ jsxRuntimeExports.jsx(React__default.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1360
- SledgeContext.Provider,
1361
- {
1362
- value: {
1363
- isRenderApp: {
1364
- wishlist: true,
1365
- productReview: true,
1366
- instantSearch: true
1367
- },
1368
- sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || "",
1369
- isJsVersion: true
1370
- },
1371
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { useProxyUrl: Boolean(USE_PROXY_URL && USE_PROXY_URL === "true"), position: floating_button_type })
1372
- }
1373
- ) })
1374
- );
1375
- }
1376
- });
1377
- }
1378
- } else {
1379
- element.map((item) => {
1380
- if (item) {
1381
- const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);
1382
- if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`))
1383
- item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`).remove();
1384
- let elementContainerWidget = document.createElement("div");
1385
- elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);
1386
- item.appendChild(elementContainerWidget);
1387
- client.createRoot(elementContainerWidget).render(
1388
- /* @__PURE__ */ jsxRuntimeExports.jsx(React__default.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1389
- SledgeContext.Provider,
1390
- {
1391
- value: {
1392
- isRenderApp: {
1393
- wishlist: true,
1394
- productReview: true,
1395
- instantSearch: true
1396
- },
1397
- sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || "",
1398
- isJsVersion: true
1219
+ element.map((item) => {
1220
+ if (item) {
1221
+ if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`))
1222
+ item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}="${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}"]`).remove();
1223
+ let elementContainerWidget = document.createElement("div");
1224
+ elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);
1225
+ item.appendChild(elementContainerWidget);
1226
+ client.createRoot(elementContainerWidget).render(
1227
+ /* @__PURE__ */ jsxRuntimeExports.jsx(React__default.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1228
+ SledgeContext.Provider,
1229
+ {
1230
+ value: {
1231
+ isRenderApp: {
1232
+ wishlist: true,
1233
+ productReview: true,
1234
+ instantSearch: true
1399
1235
  },
1400
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { useProxyUrl: Boolean(USE_PROXY_URL && USE_PROXY_URL === "true") })
1401
- }
1402
- ) })
1403
- );
1404
- }
1405
- });
1406
- }
1236
+ sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || "",
1237
+ isJsVersion: true
1238
+ },
1239
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(BadgeCounter, {})
1240
+ }
1241
+ ) })
1242
+ );
1243
+ }
1244
+ });
1407
1245
  };
1408
1246
  const Trigger = (props) => {
1409
1247
  var _a, _b, _c, _d, _e;
@@ -1470,7 +1308,7 @@ const Trigger = (props) => {
1470
1308
  setIsWishlist(!isWishlist);
1471
1309
  if (triggerRenderWishlistBadge)
1472
1310
  triggerRenderWishlistBadge(true);
1473
- BadgeInitSelector();
1311
+ BadgeCounterInitSelector();
1474
1312
  if (typeof window !== "undefined") {
1475
1313
  if (window.sledgeWishlistWidgetListUpdate)
1476
1314
  window.sledgeWishlistWidgetListUpdate();
@@ -1685,7 +1523,7 @@ const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger,
1685
1523
  if (typeof window !== "undefined") {
1686
1524
  if (triggerRenderWishlistBadge)
1687
1525
  triggerRenderWishlistBadge(true);
1688
- BadgeInitSelector();
1526
+ BadgeCounterInitSelector();
1689
1527
  if (window.sledgeInfoPopup)
1690
1528
  window.sledgeInfoPopup({
1691
1529
  title: title_added_all_to_wishlist,
@@ -4288,8 +4126,14 @@ const FacetComponent = (props) => {
4288
4126
  valueFilterPriceChange,
4289
4127
  setValueFilterPriceChange,
4290
4128
  separatedFilterItem,
4291
- setSeparatedFilterItem
4129
+ setSeparatedFilterItem,
4130
+ settings
4292
4131
  } = props;
4132
+ let aliases = {};
4133
+ if (filter.value === "hierarchicalProductType")
4134
+ aliases = settings.productTypeAliases || {};
4135
+ if (filter.value === "hierarchicalCollections")
4136
+ aliases = settings.collectionAliases || {};
4293
4137
  const { button_load_more } = (generalDataSettings == null ? void 0 : generalDataSettings.languages) || {};
4294
4138
  const { colors: colorSwatches, languages: languageSettings } = displaySettings || {};
4295
4139
  const {
@@ -4332,7 +4176,7 @@ const FacetComponent = (props) => {
4332
4176
  if (!(isHideFacetWhenZeroValue && !counter))
4333
4177
  facetValues.push({
4334
4178
  ...item,
4335
- labelName,
4179
+ labelName: aliases[labelName] || labelName,
4336
4180
  counter
4337
4181
  });
4338
4182
  }
@@ -4380,7 +4224,7 @@ const FacetComponent = (props) => {
4380
4224
  const handleFacetCheckbox = (props2) => {
4381
4225
  var _a2, _b2;
4382
4226
  const { facetValues, virtualized } = props2;
4383
- const { index, key, style } = virtualized || {};
4227
+ const { index, key, style, isScrolling, isVisible } = virtualized || {};
4384
4228
  return (_b2 = handleFacetValues(virtualized && ((_a2 = Object.keys(virtualized)) == null ? void 0 : _a2.length) ? [facetValues[index]] : facetValues)) == null ? void 0 : _b2.map((facetValue) => {
4385
4229
  var _a3;
4386
4230
  const { labelName, value: itemValue, counter, children, level } = facetValue;
@@ -4393,39 +4237,40 @@ const FacetComponent = (props) => {
4393
4237
  const blockComponentChildren = handleFacetCheckbox({
4394
4238
  facetValues: currentItems2
4395
4239
  });
4240
+ const content = !isVisible && isScrolling ? /* @__PURE__ */ jsxRuntimeExports.jsx(LoadingDots, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(
4241
+ Checkbox,
4242
+ {
4243
+ id: `${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ""}`,
4244
+ name: value,
4245
+ value: itemValue,
4246
+ label: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
4247
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: `${labelName}${counter !== void 0 && isShowNumberMatchingProduct ? ` (${counter})` : ""}` }),
4248
+ isHasChildren ? /* @__PURE__ */ jsxRuntimeExports.jsx(
4249
+ motion.div,
4250
+ {
4251
+ initial: false,
4252
+ animate: isChecked ? "open" : "closed",
4253
+ variants: ROTATE_FILTER_ARROW_ANIMATION,
4254
+ className: "sledge-instant-search__result-filter-checkbox-item-level-arrow",
4255
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronArrowDownIcon, { width: 15, height: 15, color: "#000000" })
4256
+ }
4257
+ ) : null
4258
+ ] }),
4259
+ onClick: (e) => handleFilterChange({
4260
+ parentId: value,
4261
+ value: e.currentTarget.value
4262
+ }),
4263
+ checked: isChecked,
4264
+ labelStyle: filter_option_style
4265
+ }
4266
+ );
4396
4267
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
4397
4268
  /* @__PURE__ */ jsxRuntimeExports.jsx(
4398
4269
  "li",
4399
4270
  {
4400
4271
  className: `sledge-instant-search__result-filter-checkbox-item ${isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ""}`,
4401
4272
  style,
4402
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4403
- Checkbox,
4404
- {
4405
- id: `${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ""}`,
4406
- name: value,
4407
- value: itemValue,
4408
- label: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
4409
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: `${labelName}${counter !== void 0 && isShowNumberMatchingProduct ? ` (${counter})` : ""}` }),
4410
- isHasChildren ? /* @__PURE__ */ jsxRuntimeExports.jsx(
4411
- motion.div,
4412
- {
4413
- initial: false,
4414
- animate: isChecked ? "open" : "closed",
4415
- variants: ROTATE_FILTER_ARROW_ANIMATION,
4416
- className: "sledge-instant-search__result-filter-checkbox-item-level-arrow",
4417
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronArrowDownIcon, { width: 15, height: 15, color: "#000000" })
4418
- }
4419
- ) : null
4420
- ] }),
4421
- onClick: (e) => handleFilterChange({
4422
- parentId: value,
4423
- value: e.currentTarget.value
4424
- }),
4425
- checked: isChecked,
4426
- labelStyle: filter_option_style
4427
- }
4428
- )
4273
+ children: content
4429
4274
  },
4430
4275
  key
4431
4276
  ),
@@ -5647,11 +5492,16 @@ const ResultProduct = (props) => {
5647
5492
  else
5648
5493
  valueText = (_a2 = String(valueText)) == null ? void 0 : _a2.replaceAll(hierarchical_collections_separator, " > ");
5649
5494
  valueText = (_b2 = String(valueText)) == null ? void 0 : _b2.replaceAll("_", " ");
5495
+ let aliases = {};
5496
+ if (name === "hierarchicalCollections")
5497
+ aliases = settings.collectionAliases || {};
5498
+ if (name === "hierarchicalProductType")
5499
+ aliases = settings.productTypeAliases || {};
5650
5500
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-refine-selected", style: filter_option_style, children: [
5651
5501
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "sledge-instant-search__result-filter-item-title-refine-list", children: [
5652
5502
  label,
5653
5503
  ": ",
5654
- valueText
5504
+ aliases[value] || valueText
5655
5505
  ] }),
5656
5506
  /* @__PURE__ */ jsxRuntimeExports.jsx(
5657
5507
  "span",
@@ -5708,6 +5558,7 @@ const ResultProduct = (props) => {
5708
5558
  isFirstLoading,
5709
5559
  displaySettings,
5710
5560
  generalDataSettings,
5561
+ settings,
5711
5562
  searchFacetDistribution,
5712
5563
  clickedFacets,
5713
5564
  handleFilterChange,