@sledge-app/react-instant-search 0.0.69 → 0.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ProductFilterWidget/ProductFilterWidget.d.ts +1 -1
- package/dist/components/ProductFilterWidget/ProductFilterWidget.d.ts.map +1 -1
- package/dist/components/SearchResultWidget/SearchResultWidget.d.ts +1 -1
- package/dist/components/SearchResultWidget/SearchResultWidget.d.ts.map +1 -1
- package/dist/sledge-react-instant-search.cjs +1 -1
- package/dist/sledge-react-instant-search.cjs.map +1 -1
- package/dist/sledge-react-instant-search.js +52 -49
- package/dist/sledge-react-instant-search.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -441,7 +441,7 @@ const SearchInputField = (props) => {
|
|
|
441
441
|
const SelectField$1 = "";
|
|
442
442
|
const SelectField = (props) => {
|
|
443
443
|
var _a;
|
|
444
|
-
const { className = "", placeholder = null, prefixLabel = null, prefixSelectedLabel = "", align = "end", onChange, value = "", options = [] } = props;
|
|
444
|
+
const { className = "", placeholder = null, prefixLabel = null, prefixSelectedLabel = "", align = "end", onChange, value = "", options = [], LinkComponent, link } = props;
|
|
445
445
|
const [isOpen, setIsOpen] = React__default.useState(false);
|
|
446
446
|
const handleChangeField = (label, value2) => {
|
|
447
447
|
onChange && onChange({ label, value: value2 });
|
|
@@ -457,7 +457,7 @@ const SelectField = (props) => {
|
|
|
457
457
|
] }),
|
|
458
458
|
content: /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "sledge__select-field-option", children: options == null ? void 0 : options.map((option, index) => {
|
|
459
459
|
const { label, value: optionValue } = option;
|
|
460
|
-
|
|
460
|
+
const Item = () => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
461
461
|
"li",
|
|
462
462
|
{
|
|
463
463
|
onClick: () => handleChangeField(label, optionValue),
|
|
@@ -468,6 +468,7 @@ const SelectField = (props) => {
|
|
|
468
468
|
},
|
|
469
469
|
index
|
|
470
470
|
);
|
|
471
|
+
return LinkComponent ? /* @__PURE__ */ jsxRuntimeExports.jsx(LinkComponent, { scroll: false, to: link == null ? void 0 : link.replace("value", optionValue), href: link == null ? void 0 : link.replace("value", optionValue), children: /* @__PURE__ */ jsxRuntimeExports.jsx(Item, {}) }, index) : /* @__PURE__ */ jsxRuntimeExports.jsx(Item, {}, index);
|
|
471
472
|
}) }),
|
|
472
473
|
isOpen,
|
|
473
474
|
setIsOpen,
|
|
@@ -618,8 +619,8 @@ const addToCartTrigger$1 = async (data) => {
|
|
|
618
619
|
};
|
|
619
620
|
const Trigger = (props) => {
|
|
620
621
|
var _a, _b, _c;
|
|
621
|
-
const {
|
|
622
|
-
const { productId, productVariantId } =
|
|
622
|
+
const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist } = props;
|
|
623
|
+
const { productId, productVariantId } = params || {};
|
|
623
624
|
const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React__default.useContext(SledgeContext);
|
|
624
625
|
const defaultColorIcon = "#767676";
|
|
625
626
|
const defaultTypeIcon = "outline";
|
|
@@ -660,7 +661,7 @@ const Trigger = (props) => {
|
|
|
660
661
|
return;
|
|
661
662
|
}
|
|
662
663
|
setIsWishlist(!isWishlist);
|
|
663
|
-
let resAddWishlist = await addWishlist(
|
|
664
|
+
let resAddWishlist = await addWishlist(params);
|
|
664
665
|
const { status, data: response_data } = resAddWishlist || {};
|
|
665
666
|
const { code } = status || {};
|
|
666
667
|
if (code === 200) {
|
|
@@ -712,11 +713,11 @@ const Trigger = (props) => {
|
|
|
712
713
|
response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);
|
|
713
714
|
if (!response)
|
|
714
715
|
return;
|
|
715
|
-
const { status, data
|
|
716
|
+
const { status, data } = response;
|
|
716
717
|
const { code } = status;
|
|
717
718
|
run = code === 200 || false;
|
|
718
719
|
if (run) {
|
|
719
|
-
setDataSettings(
|
|
720
|
+
setDataSettings(data);
|
|
720
721
|
setIsLoading(false);
|
|
721
722
|
}
|
|
722
723
|
};
|
|
@@ -1158,8 +1159,8 @@ const getReviewInfo = async (id) => {
|
|
|
1158
1159
|
};
|
|
1159
1160
|
const Rating = (props) => {
|
|
1160
1161
|
var _a;
|
|
1161
|
-
const { value, size = "md",
|
|
1162
|
-
const { productId } =
|
|
1162
|
+
const { value, size = "md", params, withSkeletonLoading = true, isScrollToElementWidget = true, defaultData } = props;
|
|
1163
|
+
const { productId } = params || {};
|
|
1163
1164
|
const { isRenderApp, triggerRenderMultipleComponent } = React__default.useContext(SledgeContext);
|
|
1164
1165
|
const [isFirstLoading, setIsFirstLoading] = React__default.useState(true);
|
|
1165
1166
|
const [isLoading, setIsLoading] = React__default.useState(true);
|
|
@@ -1178,21 +1179,21 @@ const Rating = (props) => {
|
|
|
1178
1179
|
let run = false;
|
|
1179
1180
|
let valueTotalReview = 0;
|
|
1180
1181
|
let valueAverageReview;
|
|
1181
|
-
let
|
|
1182
|
+
let data;
|
|
1182
1183
|
if (!defaultData) {
|
|
1183
1184
|
response = await getReviewInfo(validateProductId);
|
|
1184
1185
|
if (!response)
|
|
1185
1186
|
return;
|
|
1186
1187
|
const { status } = response;
|
|
1187
|
-
|
|
1188
|
+
data = response.data;
|
|
1188
1189
|
const { code } = status;
|
|
1189
1190
|
run = code === 200 || false;
|
|
1190
1191
|
} else {
|
|
1191
|
-
|
|
1192
|
+
data = defaultData;
|
|
1192
1193
|
run = true;
|
|
1193
1194
|
}
|
|
1194
|
-
valueTotalReview = (
|
|
1195
|
-
valueAverageReview = ((_a2 =
|
|
1195
|
+
valueTotalReview = (data == null ? void 0 : data.review_count) ? data.review_count : 0;
|
|
1196
|
+
valueAverageReview = ((_a2 = data == null ? void 0 : data.rating) == null ? void 0 : _a2.average) ? data.rating.average : 0;
|
|
1196
1197
|
if (run) {
|
|
1197
1198
|
setTotalReview(valueTotalReview);
|
|
1198
1199
|
setAverageReview(valueAverageReview);
|
|
@@ -1201,7 +1202,7 @@ const Rating = (props) => {
|
|
|
1201
1202
|
}
|
|
1202
1203
|
};
|
|
1203
1204
|
const handleRefreshProductRating = async () => {
|
|
1204
|
-
if (value && !
|
|
1205
|
+
if (value && !params) {
|
|
1205
1206
|
setAverageReview(value);
|
|
1206
1207
|
setIsLoading(false);
|
|
1207
1208
|
} else {
|
|
@@ -1215,11 +1216,11 @@ const Rating = (props) => {
|
|
|
1215
1216
|
response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);
|
|
1216
1217
|
if (!response)
|
|
1217
1218
|
return;
|
|
1218
|
-
const { status, data
|
|
1219
|
+
const { status, data } = response;
|
|
1219
1220
|
const { code } = status;
|
|
1220
1221
|
run = code === 200 || false;
|
|
1221
1222
|
if (run) {
|
|
1222
|
-
setDataSettings(
|
|
1223
|
+
setDataSettings(data);
|
|
1223
1224
|
await handleRefreshProductRating();
|
|
1224
1225
|
}
|
|
1225
1226
|
};
|
|
@@ -1297,7 +1298,7 @@ const Rating = (props) => {
|
|
|
1297
1298
|
}
|
|
1298
1299
|
return /* @__PURE__ */ createElement("svg", { ...sizing, viewBox: "0 0 30 29", "data-product-review-rating-fill": item <= ratingValue ? "full" : fillOther, key: index }, /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#sledge-product-review-icons-rating-icon" }));
|
|
1299
1300
|
}),
|
|
1300
|
-
!value &&
|
|
1301
|
+
!value && params ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-product-review__rating-summary-total", children: [
|
|
1301
1302
|
"(",
|
|
1302
1303
|
totalReview,
|
|
1303
1304
|
")"
|
|
@@ -1305,7 +1306,7 @@ const Rating = (props) => {
|
|
|
1305
1306
|
] })
|
|
1306
1307
|
] }) });
|
|
1307
1308
|
};
|
|
1308
|
-
const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings,
|
|
1309
|
+
const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings, params, onAfterAddReview }) => {
|
|
1309
1310
|
var _a, _b, _c;
|
|
1310
1311
|
const {
|
|
1311
1312
|
text_color: display_button_write_review_text_color,
|
|
@@ -1339,7 +1340,7 @@ const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings, data, onAf
|
|
|
1339
1340
|
{
|
|
1340
1341
|
type: "button",
|
|
1341
1342
|
colorType: "success",
|
|
1342
|
-
onClick: () => typeof window !== "undefined" && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(
|
|
1343
|
+
onClick: () => typeof window !== "undefined" && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview),
|
|
1343
1344
|
style: display_button_write_review_style,
|
|
1344
1345
|
children: [
|
|
1345
1346
|
/* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: 16, height: 17, viewBox: "0 0 16 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -1356,7 +1357,7 @@ const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings, data, onAf
|
|
|
1356
1357
|
}
|
|
1357
1358
|
) });
|
|
1358
1359
|
};
|
|
1359
|
-
const WidgetHeaderSort = ({ isFirstLoading, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }) => {
|
|
1360
|
+
const WidgetHeaderSort = ({ isFirstLoading, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList, LinkComponent }) => {
|
|
1360
1361
|
var _a, _b;
|
|
1361
1362
|
const { default_sort, show_sorting_options } = ((_a = dataSettings == null ? void 0 : dataSettings.display) == null ? void 0 : _a.widget) || {};
|
|
1362
1363
|
const [clickedSortId, setClickedSortId] = React__default.useState(default_sort || null);
|
|
@@ -1388,7 +1389,9 @@ const WidgetHeaderSort = ({ isFirstLoading, productReviewSort, dataSettings, set
|
|
|
1388
1389
|
};
|
|
1389
1390
|
}),
|
|
1390
1391
|
value: getSelectedSort,
|
|
1391
|
-
onChange: ({ value }) => handleChangeSort(value)
|
|
1392
|
+
onChange: ({ value }) => handleChangeSort(value),
|
|
1393
|
+
LinkComponent,
|
|
1394
|
+
link: "?page=1&sort=value"
|
|
1392
1395
|
}
|
|
1393
1396
|
) }) });
|
|
1394
1397
|
};
|
|
@@ -1416,8 +1419,8 @@ const VISIBLE_ANIMATION = {
|
|
|
1416
1419
|
};
|
|
1417
1420
|
const WidgetHeaderSummary = (props) => {
|
|
1418
1421
|
var _a, _b, _c;
|
|
1419
|
-
const {
|
|
1420
|
-
const { productId } =
|
|
1422
|
+
const { params, dataSettings, summaryData } = props;
|
|
1423
|
+
const { productId } = params || {};
|
|
1421
1424
|
const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = ((_b = (_a = dataSettings == null ? void 0 : dataSettings.display) == null ? void 0 : _a.widget) == null ? void 0 : _b.summary_bar) || {};
|
|
1422
1425
|
const { review_singular, review_plural } = ((_c = dataSettings == null ? void 0 : dataSettings.languages) == null ? void 0 : _c.widget) || {};
|
|
1423
1426
|
const [isFirstLoading, setIsFirstLoading] = React__default.useState(true);
|
|
@@ -1438,32 +1441,32 @@ const WidgetHeaderSummary = (props) => {
|
|
|
1438
1441
|
const handleProductReviewInfo = async () => {
|
|
1439
1442
|
var _a2;
|
|
1440
1443
|
let response;
|
|
1441
|
-
let
|
|
1444
|
+
let data;
|
|
1442
1445
|
let run = false;
|
|
1443
1446
|
let valueTotalReview = 0;
|
|
1444
1447
|
let valueRatingList;
|
|
1445
1448
|
let valueAverageReview;
|
|
1446
|
-
if (!
|
|
1449
|
+
if (!summaryData) {
|
|
1447
1450
|
response = await getReviewInfo(productId);
|
|
1448
1451
|
if (!response)
|
|
1449
1452
|
return;
|
|
1450
1453
|
const { status } = response;
|
|
1451
1454
|
const { code } = status;
|
|
1452
|
-
|
|
1455
|
+
data = response.data;
|
|
1453
1456
|
run = code === 200 || false;
|
|
1454
1457
|
} else {
|
|
1455
|
-
|
|
1458
|
+
data = summaryData;
|
|
1456
1459
|
run = true;
|
|
1457
1460
|
}
|
|
1458
|
-
valueTotalReview = (
|
|
1459
|
-
valueRatingList = (
|
|
1460
|
-
5:
|
|
1461
|
-
4:
|
|
1462
|
-
3:
|
|
1463
|
-
2:
|
|
1464
|
-
1:
|
|
1461
|
+
valueTotalReview = (data == null ? void 0 : data.review_count) ? data.review_count : 0;
|
|
1462
|
+
valueRatingList = (data == null ? void 0 : data.rating) ? {
|
|
1463
|
+
5: data.rating["5"] || 0,
|
|
1464
|
+
4: data.rating["4"] || 0,
|
|
1465
|
+
3: data.rating["3"] || 0,
|
|
1466
|
+
2: data.rating["2"] || 0,
|
|
1467
|
+
1: data.rating["1"] || 0
|
|
1465
1468
|
} : ratingList;
|
|
1466
|
-
valueAverageReview = ((_a2 =
|
|
1469
|
+
valueAverageReview = ((_a2 = data == null ? void 0 : data.rating) == null ? void 0 : _a2.average) ? data.rating.average : "0";
|
|
1467
1470
|
if (run) {
|
|
1468
1471
|
setTotalReview(valueTotalReview);
|
|
1469
1472
|
setRatingList(valueRatingList);
|
|
@@ -1777,7 +1780,7 @@ const ProductGrid = ({
|
|
|
1777
1780
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1778
1781
|
Trigger,
|
|
1779
1782
|
{
|
|
1780
|
-
|
|
1783
|
+
params: {
|
|
1781
1784
|
productId: id,
|
|
1782
1785
|
productVariantId: variant_id,
|
|
1783
1786
|
productName: title,
|
|
@@ -1834,7 +1837,7 @@ const ProductGrid = ({
|
|
|
1834
1837
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge__product-grid-card-rating", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1835
1838
|
Rating,
|
|
1836
1839
|
{
|
|
1837
|
-
|
|
1840
|
+
params: {
|
|
1838
1841
|
productId: id
|
|
1839
1842
|
},
|
|
1840
1843
|
size: "xs",
|
|
@@ -2675,9 +2678,9 @@ const SearchIconWidgetPopup = () => {
|
|
|
2675
2678
|
const SearchResultWidget = (props) => {
|
|
2676
2679
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2677
2680
|
const { isRenderApp, isJsVersion } = React__default.useContext(SledgeContext);
|
|
2678
|
-
const { layoutType = "default", query,
|
|
2681
|
+
const { layoutType = "default", query, params, children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props;
|
|
2679
2682
|
const { keyword: queryKeyword = "" } = query || {};
|
|
2680
|
-
const { collectionId } =
|
|
2683
|
+
const { collectionId } = params || {};
|
|
2681
2684
|
let productCardsComponent = null;
|
|
2682
2685
|
React__default.Children.map(children, (child) => {
|
|
2683
2686
|
if (React__default.isValidElement(child) && isFunction(child.type)) {
|
|
@@ -2711,8 +2714,8 @@ const SearchResultWidget = (props) => {
|
|
|
2711
2714
|
setClickedTabIndexName(name);
|
|
2712
2715
|
setResultComponent(id.includes(suffixIndexProduct) ? /* @__PURE__ */ jsxRuntimeExports.jsx(ResultProduct, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ResultCategory, {}));
|
|
2713
2716
|
};
|
|
2714
|
-
const handleInitStates = async (
|
|
2715
|
-
const { filters, tabs, suffix_index_product, hidden_tags, display, show_out_of_stock } =
|
|
2717
|
+
const handleInitStates = async (data, type) => {
|
|
2718
|
+
const { filters, tabs, suffix_index_product, hidden_tags, display, show_out_of_stock } = data;
|
|
2716
2719
|
let getTabs = layoutType === "product-filter" ? tabs.filter(({ index }) => index == null ? void 0 : index.includes(suffix_index_product)) : tabs;
|
|
2717
2720
|
let response;
|
|
2718
2721
|
let body = {
|
|
@@ -2813,9 +2816,9 @@ const SearchResultWidget = (props) => {
|
|
|
2813
2816
|
response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);
|
|
2814
2817
|
if (!response)
|
|
2815
2818
|
return;
|
|
2816
|
-
const { status, data
|
|
2819
|
+
const { status, data } = response;
|
|
2817
2820
|
const { code } = status;
|
|
2818
|
-
const { allowed_sorts, default_sort, filters, tabs, suffix_index_product, hidden_tags, display, colors, show_out_of_stock } =
|
|
2821
|
+
const { allowed_sorts, default_sort, filters, tabs, suffix_index_product, hidden_tags, display, colors, show_out_of_stock } = data;
|
|
2819
2822
|
run = code === 200 || false;
|
|
2820
2823
|
if (run) {
|
|
2821
2824
|
setAllowedSorts((allowed_sorts == null ? void 0 : allowed_sorts.length) ? allowed_sorts : []);
|
|
@@ -2831,9 +2834,9 @@ const SearchResultWidget = (props) => {
|
|
|
2831
2834
|
setClickedTabIndexId(getFirstIndex.index);
|
|
2832
2835
|
setClickedTabIndexName(getFirstIndex.name);
|
|
2833
2836
|
}
|
|
2834
|
-
await handleInitStates(
|
|
2837
|
+
await handleInitStates(data, "default");
|
|
2835
2838
|
if (layoutType === "default")
|
|
2836
|
-
await handleInitStates(
|
|
2839
|
+
await handleInitStates(data, "totalDataPerIndex");
|
|
2837
2840
|
}
|
|
2838
2841
|
};
|
|
2839
2842
|
React__default.useEffect(() => {
|
|
@@ -3149,7 +3152,7 @@ const SearchResultWidget = (props) => {
|
|
|
3149
3152
|
defaultSort,
|
|
3150
3153
|
showOutOfStock,
|
|
3151
3154
|
query,
|
|
3152
|
-
|
|
3155
|
+
params,
|
|
3153
3156
|
isJsVersion,
|
|
3154
3157
|
productCardsComponent,
|
|
3155
3158
|
onAfterAddToCart,
|
|
@@ -3182,7 +3185,7 @@ const ResultProduct = (props) => {
|
|
|
3182
3185
|
defaultSort,
|
|
3183
3186
|
showOutOfStock,
|
|
3184
3187
|
query,
|
|
3185
|
-
|
|
3188
|
+
params,
|
|
3186
3189
|
isJsVersion,
|
|
3187
3190
|
productCardsComponent,
|
|
3188
3191
|
setKeyword,
|
|
@@ -3197,7 +3200,7 @@ const ResultProduct = (props) => {
|
|
|
3197
3200
|
searchResultContainerRef
|
|
3198
3201
|
} = props || {};
|
|
3199
3202
|
const { keyword: queryKeyword = "" } = query || {};
|
|
3200
|
-
const { collectionId } =
|
|
3203
|
+
const { collectionId } = params || {};
|
|
3201
3204
|
const [isFirstLoading, setIsFirstLoading] = React__default.useState(true);
|
|
3202
3205
|
const [isLoading, setIsLoading] = React__default.useState(true);
|
|
3203
3206
|
const [isOpenSort, setIsOpenSort] = React__default.useState(false);
|