@sledge-app/react-instant-search 0.0.34 → 0.0.36
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/Global/OtherIndexLists.d.ts.map +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 +56 -7
- package/dist/sledge-react-instant-search.js.map +1 -1
- package/package.json +1 -1
|
@@ -2256,7 +2256,7 @@ const SearchIconWidget = (props) => {
|
|
|
2256
2256
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sledge-instant-search__icon-widget", onClick: handleShowWidget, children: /* @__PURE__ */ jsxRuntimeExports.jsx(SearchIcon, { ...sizing, color: "currentColor" }) });
|
|
2257
2257
|
};
|
|
2258
2258
|
const SearchIconWidgetPopup$1 = "";
|
|
2259
|
-
const OtherIndexLists = ({ listsComponent, name, items, isComponentJsVersion
|
|
2259
|
+
const OtherIndexLists = ({ listsComponent, name, items, isComponentJsVersion }) => {
|
|
2260
2260
|
const getListsComponent = listsComponent ? listsComponent({ name, items }) : null;
|
|
2261
2261
|
return listsComponent ? isComponentJsVersion ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { dangerouslySetInnerHTML: { __html: getListsComponent } }) : getListsComponent : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2262
2262
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sledge-instant-search__icon-widget-search-form-result-title", children: name }),
|
|
@@ -3086,6 +3086,7 @@ const SearchResultWidget = (props) => {
|
|
|
3086
3086
|
colorSwatches,
|
|
3087
3087
|
defaultSort,
|
|
3088
3088
|
showOutOfStock,
|
|
3089
|
+
query,
|
|
3089
3090
|
data,
|
|
3090
3091
|
separateJsVersionComponent,
|
|
3091
3092
|
productCardsComponent,
|
|
@@ -3117,6 +3118,7 @@ const ResultProduct = (props) => {
|
|
|
3117
3118
|
colorSwatches,
|
|
3118
3119
|
defaultSort,
|
|
3119
3120
|
showOutOfStock,
|
|
3121
|
+
query,
|
|
3120
3122
|
data,
|
|
3121
3123
|
separateJsVersionComponent,
|
|
3122
3124
|
productCardsComponent,
|
|
@@ -3130,6 +3132,7 @@ const ResultProduct = (props) => {
|
|
|
3130
3132
|
onAfterRemoveWishlist,
|
|
3131
3133
|
onAfterRenderProduct
|
|
3132
3134
|
} = props || {};
|
|
3135
|
+
const { keyword: queryKeyword = "" } = query || {};
|
|
3133
3136
|
const { collectionId } = data || {};
|
|
3134
3137
|
const [isFirstLoading, setIsFirstLoading] = React__default.useState(true);
|
|
3135
3138
|
const [isLoading, setIsLoading] = React__default.useState(true);
|
|
@@ -3144,6 +3147,7 @@ const ResultProduct = (props) => {
|
|
|
3144
3147
|
"variants.inventory_quantity": "> 0"
|
|
3145
3148
|
} : {}
|
|
3146
3149
|
});
|
|
3150
|
+
const [triggerClickedFacets, setTriggerClickedFacets] = React__default.useState(false);
|
|
3147
3151
|
const [searchResult, setSearchResult] = React__default.useState([]);
|
|
3148
3152
|
const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React__default.useState(0);
|
|
3149
3153
|
const [currentPage, setCurrentPage] = React__default.useState(1);
|
|
@@ -3199,6 +3203,39 @@ const ResultProduct = (props) => {
|
|
|
3199
3203
|
...filter_button_font_weight && { fontWeight: filter_button_font_weight },
|
|
3200
3204
|
...filter_button_text_transform && { textTransform: filter_button_text_transform }
|
|
3201
3205
|
});
|
|
3206
|
+
const detectQueryStringFilter = (facetsQueryStringObject) => {
|
|
3207
|
+
const searchParams = new URLSearchParams(document.location.search);
|
|
3208
|
+
const searchParamsObject = Object.fromEntries(searchParams);
|
|
3209
|
+
for (const searchParamsKey in searchParamsObject) {
|
|
3210
|
+
let ifFacetsQueryStringObject = (facets == null ? void 0 : facets.length) && facets.includes(searchParamsKey);
|
|
3211
|
+
if (ifFacetsQueryStringObject)
|
|
3212
|
+
facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(",");
|
|
3213
|
+
}
|
|
3214
|
+
if (Object.keys(facetsQueryStringObject).length)
|
|
3215
|
+
setClickedFacets(facetsQueryStringObject);
|
|
3216
|
+
return facetsQueryStringObject;
|
|
3217
|
+
};
|
|
3218
|
+
const handleQueryStringFilter = (valueClickedFacets) => {
|
|
3219
|
+
var _a2;
|
|
3220
|
+
const searchParams = new URLSearchParams(document.location.search);
|
|
3221
|
+
const searchParamsObject = Object.fromEntries(searchParams);
|
|
3222
|
+
let otherQueryStringObject = {};
|
|
3223
|
+
for (const searchParamsKey in searchParamsObject) {
|
|
3224
|
+
let ifOtherQueryStringObject = (facets == null ? void 0 : facets.length) && !facets.includes(searchParamsKey);
|
|
3225
|
+
if (ifOtherQueryStringObject)
|
|
3226
|
+
otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];
|
|
3227
|
+
}
|
|
3228
|
+
let facetQueryStringObject = {};
|
|
3229
|
+
for (const valueClickedFacetsKey in valueClickedFacets) {
|
|
3230
|
+
if ((_a2 = valueClickedFacets[valueClickedFacetsKey]) == null ? void 0 : _a2.length)
|
|
3231
|
+
otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];
|
|
3232
|
+
}
|
|
3233
|
+
const newQueryString = new URLSearchParams({
|
|
3234
|
+
...otherQueryStringObject,
|
|
3235
|
+
...facetQueryStringObject
|
|
3236
|
+
}).toString();
|
|
3237
|
+
window.history.pushState(null, "", `${document.location.pathname}${(newQueryString == null ? void 0 : newQueryString.length) ? `?${newQueryString}` : ""}`);
|
|
3238
|
+
};
|
|
3202
3239
|
const handleChangeSort = (label, value) => {
|
|
3203
3240
|
setIsOpenSort(false);
|
|
3204
3241
|
setClickedSortName(label);
|
|
@@ -3214,6 +3251,8 @@ const ResultProduct = (props) => {
|
|
|
3214
3251
|
const handleFilterReset = () => {
|
|
3215
3252
|
setIsFilterChanged(true);
|
|
3216
3253
|
setClickedFacets({});
|
|
3254
|
+
setTriggerClickedFacets(!triggerClickedFacets);
|
|
3255
|
+
handleQueryStringFilter({});
|
|
3217
3256
|
setValueFilterPriceChange([]);
|
|
3218
3257
|
setTimeout(() => {
|
|
3219
3258
|
setIsFilterChanged(false);
|
|
@@ -3244,12 +3283,15 @@ const ResultProduct = (props) => {
|
|
|
3244
3283
|
}
|
|
3245
3284
|
}
|
|
3246
3285
|
}
|
|
3247
|
-
|
|
3286
|
+
let valueClickedFacets = {
|
|
3248
3287
|
...clickedFacets,
|
|
3249
3288
|
...{
|
|
3250
3289
|
[parentId]: facets2
|
|
3251
3290
|
}
|
|
3252
|
-
}
|
|
3291
|
+
};
|
|
3292
|
+
handleQueryStringFilter(valueClickedFacets);
|
|
3293
|
+
setClickedFacets(valueClickedFacets);
|
|
3294
|
+
setTriggerClickedFacets(!triggerClickedFacets);
|
|
3253
3295
|
setTimeout(() => {
|
|
3254
3296
|
setIsFilterChanged(false);
|
|
3255
3297
|
}, 10);
|
|
@@ -3293,8 +3335,9 @@ const ResultProduct = (props) => {
|
|
|
3293
3335
|
if (isRefreshPage)
|
|
3294
3336
|
setCurrentPage(1);
|
|
3295
3337
|
setIsLoading(true);
|
|
3338
|
+
let detectClickedFacets = detectQueryStringFilter(clickedFacets);
|
|
3296
3339
|
let response;
|
|
3297
|
-
let filters = Object.entries(
|
|
3340
|
+
let filters = Object.entries(detectClickedFacets).map((facet) => {
|
|
3298
3341
|
var _a2, _b2;
|
|
3299
3342
|
if ((facet == null ? void 0 : facet.length) && facet[1].length) {
|
|
3300
3343
|
let value = facet[0];
|
|
@@ -3345,6 +3388,12 @@ const ResultProduct = (props) => {
|
|
|
3345
3388
|
const handlePageChange = (page) => {
|
|
3346
3389
|
setCurrentPage(page);
|
|
3347
3390
|
};
|
|
3391
|
+
const handleChangeKeyword = (value) => {
|
|
3392
|
+
const searchParams = new URLSearchParams(document.location.search);
|
|
3393
|
+
searchParams.set(queryKeyword, value);
|
|
3394
|
+
setKeyword && setKeyword(value);
|
|
3395
|
+
window.history.pushState(null, "", `${document.location.pathname}?${searchParams.toString()}`);
|
|
3396
|
+
};
|
|
3348
3397
|
React__default.useEffect(() => {
|
|
3349
3398
|
let isRefreshSearchResult = Boolean(
|
|
3350
3399
|
previousState && ((previousState == null ? void 0 : previousState.keyword) !== keyword || (previousState == null ? void 0 : previousState.clickedLimitId) !== clickedLimitId || (previousState == null ? void 0 : previousState.clickedFacets) !== clickedFacets)
|
|
@@ -3357,7 +3406,7 @@ const ResultProduct = (props) => {
|
|
|
3357
3406
|
} else {
|
|
3358
3407
|
handleSearchResult(isRefreshSearchResult);
|
|
3359
3408
|
}
|
|
3360
|
-
}, [clickedSortId, clickedLimitId,
|
|
3409
|
+
}, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, currentPage, clickedTabIndexId]);
|
|
3361
3410
|
React__default.useEffect(() => {
|
|
3362
3411
|
handleAllowedFilter();
|
|
3363
3412
|
}, [allowedFilters, searchResultFacets, totalSearchResult]);
|
|
@@ -3608,8 +3657,8 @@ const ResultProduct = (props) => {
|
|
|
3608
3657
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(SearchIcon, { width: 18, height: 18, color: "#868686" }),
|
|
3609
3658
|
placeholder: "Search products...",
|
|
3610
3659
|
value: keyword,
|
|
3611
|
-
onChange: ({ value }) =>
|
|
3612
|
-
onResetField: () =>
|
|
3660
|
+
onChange: ({ value }) => handleChangeKeyword(value),
|
|
3661
|
+
onResetField: () => handleChangeKeyword(""),
|
|
3613
3662
|
className: "sledge-instant-search__result-data-keyword-form",
|
|
3614
3663
|
withClearField: true
|
|
3615
3664
|
}
|