@sledge-app/react-instant-search 2.0.11 → 2.0.13

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.
@@ -1106,7 +1106,7 @@ const Pagination = (props) => {
1106
1106
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__pagination", "data-pagination-type": type, children: renderPaginationLayout() });
1107
1107
  };
1108
1108
  const RadioGroup$1 = "";
1109
- const rowRenderer$1 = ({ virtualized, item, id, labelStyle }) => {
1109
+ const rowRenderer = ({ virtualized, item, id, labelStyle }) => {
1110
1110
  const { index, key = "" } = virtualized || {};
1111
1111
  const { label, value } = item;
1112
1112
  const content = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -1120,7 +1120,7 @@ const RadioGroup = ({ id, name, required, value, items, labelStyle = {}, onValue
1120
1120
  VirtualizedList,
1121
1121
  {
1122
1122
  rowCount: items == null ? void 0 : items.length,
1123
- rowRenderer: ({ index, key }) => rowRenderer$1({
1123
+ rowRenderer: ({ index, key }) => rowRenderer({
1124
1124
  virtualized: {
1125
1125
  index,
1126
1126
  key
@@ -1134,7 +1134,7 @@ const RadioGroup = ({ id, name, required, value, items, labelStyle = {}, onValue
1134
1134
  parentRef
1135
1135
  }
1136
1136
  ) : items.map(
1137
- (item, index) => rowRenderer$1({
1137
+ (item, index) => rowRenderer({
1138
1138
  virtualized: {
1139
1139
  index
1140
1140
  },
@@ -1177,25 +1177,32 @@ const ColorSwatch = ({ id, name, value, rgb, image, required, checked, onClick }
1177
1177
  );
1178
1178
  };
1179
1179
  const Select$1 = "";
1180
- const rowRenderer = ({ virtualized, item, labelStyle }) => {
1181
- const { index, key = "" } = virtualized || {};
1182
- const { label, value } = item;
1183
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItemComponent, { value, children: label }, index);
1184
- };
1185
- const Select = ({ name, placeholder, required, defaultValue, items: itemsProp, labelStyle = {}, onValueChange, useVirtualized = false }) => {
1180
+ const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange, useLoadMore = false, loadMoreText = "Load More" }) => {
1181
+ var _a;
1182
+ const maxItemPerPage = 30;
1183
+ const defaultVisibleItemsLoadMore = (items == null ? void 0 : items.length) ? items.slice(0, maxItemPerPage) : [];
1186
1184
  const [isLoading, setIsLoading] = React__default.useState(true);
1187
- const [items, setItems] = React__default.useState([]);
1188
- const selectViewportRef = React__default.useRef(null);
1189
- const scrollToPosition = (direction) => {
1190
- const directionMultiplier = direction === "up" ? -1 : 1;
1191
- if (selectViewportRef.current) {
1192
- const currentPosition = selectViewportRef.current.scrollTop;
1193
- const scrollAmount = 500 * directionMultiplier;
1194
- selectViewportRef.current.scrollTo({
1195
- top: currentPosition + scrollAmount
1196
- });
1197
- }
1185
+ const [visibleItems, setVisibleItems] = React__default.useState((items == null ? void 0 : items.length) ? useLoadMore ? defaultVisibleItemsLoadMore : items : []);
1186
+ const [page, setPage] = React__default.useState(1);
1187
+ const handleLoadMore = () => {
1188
+ var _a2;
1189
+ const nextItems = (_a2 = items == null ? void 0 : items.slice) == null ? void 0 : _a2.call(items, 0, (page + 1) * maxItemPerPage);
1190
+ setVisibleItems(nextItems);
1191
+ setPage(page + 1);
1192
+ setTimeout(() => {
1193
+ var _a3, _b, _c, _d;
1194
+ const selectRootElement = document.querySelector(".sledge__select-root");
1195
+ if (selectRootElement) {
1196
+ const currentHeight = (_b = (_a3 = window == null ? void 0 : window.getComputedStyle) == null ? void 0 : _a3.call(window, selectRootElement)) == null ? void 0 : _b.height;
1197
+ const currentMaxHeight = (_d = (_c = window == null ? void 0 : window.getComputedStyle) == null ? void 0 : _c.call(window, selectRootElement)) == null ? void 0 : _d.maxHeight;
1198
+ if (currentHeight)
1199
+ selectRootElement.style.height = currentHeight;
1200
+ if (currentMaxHeight)
1201
+ selectRootElement.style.height = currentMaxHeight;
1202
+ }
1203
+ }, 0);
1198
1204
  };
1205
+ const hasMore = visibleItems.length < items.length;
1199
1206
  React__default.useEffect(() => {
1200
1207
  setIsLoading(true);
1201
1208
  setTimeout(() => {
@@ -1212,22 +1219,19 @@ const Select = ({ name, placeholder, required, defaultValue, items: itemsProp, l
1212
1219
  selectRootElement.classList.toggle("sledge__select-root");
1213
1220
  }
1214
1221
  };
1215
- return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: isLoading ? null : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__select-wrapper", "data-use-virtualized": useVirtualized, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1222
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: isLoading ? null : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__select-wrapper", "data-use-load-more": useLoadMore, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1216
1223
  $cc7e05a45900e73f$export$be92b6f5f03c0fe9,
1217
1224
  {
1218
1225
  name,
1219
1226
  required,
1220
1227
  onValueChange,
1221
- onOpenChange: (open) => {
1222
- handleClassNameRoot(open);
1223
- setItems(open ? itemsProp : []);
1224
- },
1228
+ onOpenChange: (open) => handleClassNameRoot(open),
1225
1229
  ...defaultValue ? {
1226
1230
  defaultValue
1227
1231
  } : {},
1228
1232
  children: [
1229
1233
  /* @__PURE__ */ jsxRuntimeExports.jsxs($cc7e05a45900e73f$export$41fb9f06171c75f4, { className: "sledge__select-trigger", style: labelStyle, children: [
1230
- useVirtualized && defaultValue ? /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$4c8d1a57a761ef94, { children: defaultValue }) : /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$4c8d1a57a761ef94, { placeholder }),
1234
+ useLoadMore && defaultValue ? /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$4c8d1a57a761ef94, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: defaultValue }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$4c8d1a57a761ef94, { placeholder }),
1231
1235
  /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$f04a61298a47a40f, { className: "sledge__select-icon", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1232
1236
  "path",
1233
1237
  {
@@ -1238,15 +1242,18 @@ const Select = ({ name, placeholder, required, defaultValue, items: itemsProp, l
1238
1242
  }
1239
1243
  ) }) })
1240
1244
  ] }),
1241
- /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$602eac185826482c, { className: "sledge__select-portal", children: /* @__PURE__ */ jsxRuntimeExports.jsxs($cc7e05a45900e73f$export$7c6e2c02157bb7d2, { className: "sledge__select-content", children: [
1242
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1243
- $cc7e05a45900e73f$export$2f60d3ec9ad468f2,
1244
- {
1245
- className: "sledge__select-scroll-button",
1246
- ...useVirtualized ? {
1247
- onClick: () => scrollToPosition("up")
1248
- } : {},
1249
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1245
+ /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$602eac185826482c, { className: "sledge__select-portal", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1246
+ $cc7e05a45900e73f$export$7c6e2c02157bb7d2,
1247
+ {
1248
+ className: "sledge__select-content",
1249
+ onCloseAutoFocus: () => {
1250
+ if (!useLoadMore)
1251
+ return;
1252
+ setVisibleItems(defaultVisibleItemsLoadMore);
1253
+ setPage(1);
1254
+ },
1255
+ children: [
1256
+ /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$2f60d3ec9ad468f2, { className: "sledge__select-scroll-button", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1250
1257
  "path",
1251
1258
  {
1252
1259
  d: "M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z",
@@ -1254,37 +1261,20 @@ const Select = ({ name, placeholder, required, defaultValue, items: itemsProp, l
1254
1261
  fillRule: "evenodd",
1255
1262
  clipRule: "evenodd"
1256
1263
  }
1257
- ) })
1258
- }
1259
- ),
1260
- /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$d5c6c08dc2d3ca7, { className: "sledge__select-viewport", ref: selectViewportRef, children: useVirtualized ? /* @__PURE__ */ jsxRuntimeExports.jsx(
1261
- VirtualizedList,
1262
- {
1263
- rowCount: items == null ? void 0 : items.length,
1264
- rowRenderer: ({ index, key }) => rowRenderer({
1265
- virtualized: {
1266
- index,
1267
- key
1268
- },
1269
- item: items == null ? void 0 : items[index],
1270
- labelStyle
1271
- }),
1272
- parentRef: selectViewportRef
1273
- }
1274
- ) : items.map(
1275
- (item, index) => {
1276
- const { label, value } = item;
1277
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItemComponent, { value, children: label }, index);
1278
- }
1279
- ) }),
1280
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1281
- $cc7e05a45900e73f$export$bf1aedc3039c8d63,
1282
- {
1283
- className: "sledge__select-scroll-button",
1284
- ...useVirtualized ? {
1285
- onClick: () => scrollToPosition("down")
1286
- } : {},
1287
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1264
+ ) }) }),
1265
+ /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$d5c6c08dc2d3ca7, { className: "sledge__select-viewport", children: useLoadMore ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
1266
+ (_a = visibleItems == null ? void 0 : visibleItems.map) == null ? void 0 : _a.call(visibleItems, (item, index) => {
1267
+ const { label, value } = item;
1268
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItemComponent, { value, children: label }, index);
1269
+ }),
1270
+ hasMore && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__select-load-more", onClick: handleLoadMore, children: loadMoreText })
1271
+ ] }) : items.map(
1272
+ (item, index) => {
1273
+ const { label, value } = item;
1274
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItemComponent, { value, children: label }, index);
1275
+ }
1276
+ ) }),
1277
+ /* @__PURE__ */ jsxRuntimeExports.jsx($cc7e05a45900e73f$export$bf1aedc3039c8d63, { className: "sledge__select-scroll-button", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1288
1278
  "path",
1289
1279
  {
1290
1280
  d: "M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z",
@@ -1292,10 +1282,10 @@ const Select = ({ name, placeholder, required, defaultValue, items: itemsProp, l
1292
1282
  fillRule: "evenodd",
1293
1283
  clipRule: "evenodd"
1294
1284
  }
1295
- ) })
1296
- }
1297
- )
1298
- ] }) })
1285
+ ) }) })
1286
+ ]
1287
+ }
1288
+ ) })
1299
1289
  ]
1300
1290
  }
1301
1291
  ) }) });
@@ -7838,7 +7828,8 @@ const Facet = (props) => {
7838
7828
  }),
7839
7829
  defaultValue: clickedFacets && ((_e = clickedFacets[value]) == null ? void 0 : _e.length) ? clickedFacets[value][0] : "",
7840
7830
  labelStyle: filter_option_style,
7841
- useVirtualized: true
7831
+ loadMoreText: button_load_more || "Load More",
7832
+ useLoadMore: true
7842
7833
  }
7843
7834
  ) });
7844
7835
  } else if (display.toLowerCase() === "swatch" && (currentItems == null ? void 0 : currentItems.length)) {