@sledge-app/react-instant-search 1.0.80 → 1.0.81
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/SearchResultWidget/Atoms.d.ts +4 -2
- package/dist/components/SearchResultWidget/Atoms.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 +176 -68
- package/dist/sledge-react-instant-search.js.map +1 -1
- package/package.json +1 -1
|
@@ -4397,7 +4397,7 @@ const createQueryFilter = ({ facets, facetsQueryStringObject, callback, addition
|
|
|
4397
4397
|
if (!((detectClickedFacet == null ? void 0 : detectClickedFacet.length) && detectClickedFacet[1].length))
|
|
4398
4398
|
continue;
|
|
4399
4399
|
let isCustom = ["variants.inventory_quantity"].includes(detectClickedFacet[0]);
|
|
4400
|
-
let isRange = ["variants.price"].includes(detectClickedFacet[0]);
|
|
4400
|
+
let isRange = ["variants.price", "variants.sale_percent"].includes(detectClickedFacet[0]);
|
|
4401
4401
|
let isHierarchical = hierarchicalFacetAliases.includes(detectClickedFacet[0]);
|
|
4402
4402
|
if (isHierarchical) {
|
|
4403
4403
|
let arrItemHierarchicals = [];
|
|
@@ -4511,7 +4511,7 @@ const handleConditionNotUpdateFacetDistribution = ({ value, clickedFacets }) =>
|
|
|
4511
4511
|
let isHasFacetSelected = arrFacetSelected == null ? void 0 : arrFacetSelected.length;
|
|
4512
4512
|
let isNoneFacetSelected = !isHasFacetSelected;
|
|
4513
4513
|
let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;
|
|
4514
|
-
let isSelectedFacetWithPrice = arrFacetSelected.includes("variants.price");
|
|
4514
|
+
let isSelectedFacetWithPrice = arrFacetSelected.includes("variants.price") || arrFacetSelected.includes("variants.sale_percent");
|
|
4515
4515
|
let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;
|
|
4516
4516
|
return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;
|
|
4517
4517
|
};
|
|
@@ -4528,6 +4528,8 @@ const FacetComponent = (props) => {
|
|
|
4528
4528
|
defaultFacetStats,
|
|
4529
4529
|
valueFilterPriceChange,
|
|
4530
4530
|
setValueFilterPriceChange,
|
|
4531
|
+
valueFilterOnSaleChange,
|
|
4532
|
+
setValueFilterOnSaleChange,
|
|
4531
4533
|
separatedFilterItem,
|
|
4532
4534
|
setSeparatedFilterItem,
|
|
4533
4535
|
settings,
|
|
@@ -4556,34 +4558,46 @@ const FacetComponent = (props) => {
|
|
|
4556
4558
|
...filter_option_font_weight && { fontWeight: filter_option_font_weight },
|
|
4557
4559
|
...filter_option_text_transform && { textTransform: filter_option_text_transform }
|
|
4558
4560
|
};
|
|
4559
|
-
let { value, label, display, items } = filter;
|
|
4561
|
+
let { value, label, display, indexFilter, items, settings: filterSettings } = filter;
|
|
4562
|
+
const { prefix, filter_list, delete_prefix, selected_filter } = filterSettings || {};
|
|
4560
4563
|
if (isFirstLoading)
|
|
4561
4564
|
return null;
|
|
4562
4565
|
let blockComponent = null;
|
|
4563
4566
|
const isShowNumberMatchingProduct = (_b = displaySettings == null ? void 0 : displaySettings.filter) == null ? void 0 : _b.show_number_matching_product;
|
|
4564
4567
|
const isHideFacetWhenZeroValue = (_c = displaySettings == null ? void 0 : displaySettings.filter) == null ? void 0 : _c.hide_when_zero_value;
|
|
4565
4568
|
const isDisplaySlider = display.toLowerCase() === "slider";
|
|
4569
|
+
const getValue = `${value}-${indexFilter}`;
|
|
4566
4570
|
const handleFacetValues = (items2) => {
|
|
4567
4571
|
var _a2;
|
|
4568
4572
|
let facetValues = [];
|
|
4569
4573
|
if (!(items2 == null ? void 0 : items2.length))
|
|
4570
4574
|
return facetValues;
|
|
4571
4575
|
for (const item of items2) {
|
|
4572
|
-
|
|
4576
|
+
const isManualFilter = item && filter_list === "manual" && !(selected_filter == null ? void 0 : selected_filter.includes(item == null ? void 0 : item.value));
|
|
4577
|
+
const isPrefixFilter = item && filter_list === "prefix" && !(prefix == null ? void 0 : prefix.find((prefixItem) => {
|
|
4578
|
+
var _a3;
|
|
4579
|
+
return (_a3 = item == null ? void 0 : item.value) == null ? void 0 : _a3.startsWith(prefixItem);
|
|
4580
|
+
}));
|
|
4581
|
+
if (!item || isManualFilter || isPrefixFilter)
|
|
4573
4582
|
continue;
|
|
4574
4583
|
const isFacetHierarchical = Object.hasOwn(item, "children");
|
|
4575
4584
|
let labelName = item.name;
|
|
4576
|
-
let
|
|
4585
|
+
let getValue2 = isFacetHierarchical ? `${value}.lvl${item.level}` : value;
|
|
4577
4586
|
if (languageSettings && (languageSettings[item.value] || languageSettings[item.name]))
|
|
4578
4587
|
labelName = languageSettings[item.value] || languageSettings[item.name];
|
|
4579
4588
|
let counter = handleConditionNotUpdateFacetDistribution({
|
|
4580
|
-
value:
|
|
4589
|
+
value: getValue2,
|
|
4581
4590
|
clickedFacets
|
|
4582
|
-
}) ? (item == null ? void 0 : item.total) || 0 : (searchFacetDistribution == null ? void 0 : searchFacetDistribution[
|
|
4591
|
+
}) ? (item == null ? void 0 : item.total) || 0 : (searchFacetDistribution == null ? void 0 : searchFacetDistribution[getValue2]) && ((_a2 = searchFacetDistribution == null ? void 0 : searchFacetDistribution[getValue2]) == null ? void 0 : _a2[item.value]) ? searchFacetDistribution[getValue2][item.value] : 0;
|
|
4592
|
+
let getLabelName = aliases[labelName] || labelName;
|
|
4593
|
+
delete_prefix == null ? void 0 : delete_prefix.map((deletePrefix) => {
|
|
4594
|
+
if (String(getLabelName).startsWith(deletePrefix))
|
|
4595
|
+
getLabelName = String(getLabelName).replace(deletePrefix, "");
|
|
4596
|
+
});
|
|
4583
4597
|
if (!(isHideFacetWhenZeroValue && !counter))
|
|
4584
4598
|
facetValues.push({
|
|
4585
4599
|
...item,
|
|
4586
|
-
labelName:
|
|
4600
|
+
labelName: getLabelName,
|
|
4587
4601
|
counter
|
|
4588
4602
|
});
|
|
4589
4603
|
}
|
|
@@ -4597,7 +4611,7 @@ const FacetComponent = (props) => {
|
|
|
4597
4611
|
currentItems: arrFacetValues
|
|
4598
4612
|
};
|
|
4599
4613
|
}
|
|
4600
|
-
const lastItemLimit = separatedFilterItem[
|
|
4614
|
+
const lastItemLimit = separatedFilterItem[getValue] || Number(item_pagination_limit);
|
|
4601
4615
|
let haveNextPage2 = Boolean(lastItemLimit < (arrFacetValues == null ? void 0 : arrFacetValues.length));
|
|
4602
4616
|
let sliced = arrFacetValues;
|
|
4603
4617
|
if (haveNextPage2)
|
|
@@ -4618,7 +4632,7 @@ const FacetComponent = (props) => {
|
|
|
4618
4632
|
onClick: () => setSeparatedFilterItem == null ? void 0 : setSeparatedFilterItem((old) => {
|
|
4619
4633
|
const fixState = {
|
|
4620
4634
|
...old,
|
|
4621
|
-
[
|
|
4635
|
+
[getValue]: (old[getValue] || Number(item_pagination_limit)) + Number(item_pagination_limit)
|
|
4622
4636
|
};
|
|
4623
4637
|
return fixState;
|
|
4624
4638
|
}),
|
|
@@ -4647,7 +4661,7 @@ const FacetComponent = (props) => {
|
|
|
4647
4661
|
const content = /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4648
4662
|
Checkbox,
|
|
4649
4663
|
{
|
|
4650
|
-
id: `${
|
|
4664
|
+
id: `${getValue}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ""}`,
|
|
4651
4665
|
name: value,
|
|
4652
4666
|
value: itemValue,
|
|
4653
4667
|
label: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
@@ -4690,12 +4704,18 @@ const FacetComponent = (props) => {
|
|
|
4690
4704
|
});
|
|
4691
4705
|
};
|
|
4692
4706
|
let scrollElement = document.querySelector(
|
|
4693
|
-
scrollElementSelector || `#filter-${layoutType}-${collectionId || "all"}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`
|
|
4707
|
+
scrollElementSelector || `#filter-${indexFilter}-${layoutType}-${collectionId || "all"}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`
|
|
4694
4708
|
);
|
|
4695
4709
|
if (isDisplaySlider) {
|
|
4696
4710
|
items = (defaultFacetStats == null ? void 0 : defaultFacetStats[value]) && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};
|
|
4697
|
-
let
|
|
4698
|
-
|
|
4711
|
+
let valueFilterSliderChange = [];
|
|
4712
|
+
if (value === "variants.price") {
|
|
4713
|
+
valueFilterSliderChange = valueFilterPriceChange;
|
|
4714
|
+
} else if (value === "variants.sale_percent") {
|
|
4715
|
+
valueFilterSliderChange = valueFilterOnSaleChange;
|
|
4716
|
+
}
|
|
4717
|
+
let defaultValueMin = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[0]) || (items == null ? void 0 : items.min);
|
|
4718
|
+
let defaultValueMax = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[1]) || (items == null ? void 0 : items.max);
|
|
4699
4719
|
blockComponent = /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-list-slider", children: [
|
|
4700
4720
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4701
4721
|
Slider,
|
|
@@ -4710,7 +4730,13 @@ const FacetComponent = (props) => {
|
|
|
4710
4730
|
parentId: value,
|
|
4711
4731
|
value: valueCommit
|
|
4712
4732
|
}),
|
|
4713
|
-
setValueChange: (valueChange) =>
|
|
4733
|
+
setValueChange: (valueChange) => {
|
|
4734
|
+
if (value === "variants.price") {
|
|
4735
|
+
setValueFilterPriceChange(valueChange);
|
|
4736
|
+
} else if (value === "variants.sale_percent") {
|
|
4737
|
+
setValueFilterOnSaleChange(valueChange);
|
|
4738
|
+
}
|
|
4739
|
+
}
|
|
4714
4740
|
}
|
|
4715
4741
|
),
|
|
4716
4742
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-list-slider-minmax", children: [
|
|
@@ -4739,11 +4765,11 @@ const FacetComponent = (props) => {
|
|
|
4739
4765
|
blockComponent = /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4740
4766
|
RadioGroup,
|
|
4741
4767
|
{
|
|
4742
|
-
id:
|
|
4743
|
-
name:
|
|
4744
|
-
onValueChange: (
|
|
4768
|
+
id: getValue,
|
|
4769
|
+
name: getValue,
|
|
4770
|
+
onValueChange: (valueChange) => handleFilterChange({
|
|
4745
4771
|
parentId: value,
|
|
4746
|
-
value:
|
|
4772
|
+
value: valueChange,
|
|
4747
4773
|
force: true
|
|
4748
4774
|
}),
|
|
4749
4775
|
items: currentItems == null ? void 0 : currentItems.map((item) => {
|
|
@@ -4768,9 +4794,9 @@ const FacetComponent = (props) => {
|
|
|
4768
4794
|
{
|
|
4769
4795
|
placeholder: `Select ${label}`,
|
|
4770
4796
|
name: value,
|
|
4771
|
-
onValueChange: (
|
|
4797
|
+
onValueChange: (getValue2) => handleFilterChange({
|
|
4772
4798
|
parentId: value,
|
|
4773
|
-
value:
|
|
4799
|
+
value: getValue2,
|
|
4774
4800
|
force: true
|
|
4775
4801
|
}),
|
|
4776
4802
|
items: currentItems == null ? void 0 : currentItems.map((item) => {
|
|
@@ -4790,7 +4816,7 @@ const FacetComponent = (props) => {
|
|
|
4790
4816
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4791
4817
|
ColorSwatch,
|
|
4792
4818
|
{
|
|
4793
|
-
id: `${
|
|
4819
|
+
id: `${getValue}_${index}`,
|
|
4794
4820
|
name: value,
|
|
4795
4821
|
value: item.value,
|
|
4796
4822
|
rgb: getColorSwatch == null ? void 0 : getColorSwatch.rgb,
|
|
@@ -4819,17 +4845,21 @@ const FacetComponent = (props) => {
|
|
|
4819
4845
|
const FilterVerticalComponent = (props) => {
|
|
4820
4846
|
const { filter, filterSettings, indexFilter, filterTitleStyle = {}, handleOpenFilterVertical, clickedOpenFilters, filterLayoutType, layoutType, collectionId } = props;
|
|
4821
4847
|
const { value, label } = filter;
|
|
4822
|
-
const
|
|
4848
|
+
const getValue = `${value}-${indexFilter}`;
|
|
4849
|
+
const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || "all"}-${filterLayoutType}-${stringToSlug(getValue)}`;
|
|
4823
4850
|
const { isRender, classesUlElement, getFacetComponent } = filterSettings({
|
|
4824
|
-
filter
|
|
4851
|
+
filter: {
|
|
4852
|
+
...filter,
|
|
4853
|
+
indexFilter
|
|
4854
|
+
},
|
|
4825
4855
|
scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`
|
|
4826
4856
|
});
|
|
4827
4857
|
return isRender ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item", id: filterItemId, children: [
|
|
4828
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-title", onClick: () => handleOpenFilterVertical(
|
|
4858
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-title", onClick: () => handleOpenFilterVertical(getValue), children: [
|
|
4829
4859
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sledge-instant-search__result-filter-title", style: filterTitleStyle, children: label }),
|
|
4830
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(motion.div, { initial: false, animate: clickedOpenFilters.includes(
|
|
4860
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(motion.div, { initial: false, animate: clickedOpenFilters.includes(getValue) ? "open" : "closed", variants: ROTATE_FILTER_ARROW_ANIMATION, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronArrowDownIcon, { width: 15, height: 15, color: "#000000" }) })
|
|
4831
4861
|
] }),
|
|
4832
|
-
clickedOpenFilters.includes(
|
|
4862
|
+
clickedOpenFilters.includes(getValue) && /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: classesUlElement.join(" "), children: getFacetComponent() })
|
|
4833
4863
|
] }, indexFilter) : null;
|
|
4834
4864
|
};
|
|
4835
4865
|
const FilterHorizontalComponent = (props) => {
|
|
@@ -4847,11 +4877,14 @@ const FilterHorizontalComponent = (props) => {
|
|
|
4847
4877
|
collectionId
|
|
4848
4878
|
} = props;
|
|
4849
4879
|
const { value, label } = filter;
|
|
4850
|
-
const filterItemId = `filter-${layoutType}-${collectionId || "all"}-${deviceType}-${stringToSlug(value)}`;
|
|
4880
|
+
const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || "all"}-${deviceType}-${stringToSlug(value)}`;
|
|
4851
4881
|
const getValueOpenFilterId = deviceType === "mobile" ? clickedOpenFilterHorizontalMobileId : clickedOpenFilterHorizontalId;
|
|
4852
4882
|
const isOpenFilterHorizontal = getValueOpenFilterId === value;
|
|
4853
4883
|
const { isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings({
|
|
4854
|
-
filter
|
|
4884
|
+
filter: {
|
|
4885
|
+
...filter,
|
|
4886
|
+
indexFilter
|
|
4887
|
+
},
|
|
4855
4888
|
scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`
|
|
4856
4889
|
});
|
|
4857
4890
|
return isRender ? /* @__PURE__ */ jsxRuntimeExports.jsx(React__default.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -4985,6 +5018,7 @@ const SearchResultWidget = (props) => {
|
|
|
4985
5018
|
const [clickedOpenFilterHorizontalId, setClickedOpenFilterHorizontalId] = React__default.useState(null);
|
|
4986
5019
|
const [clickedOpenFilterHorizontalMobileId, setClickedOpenFilterHorizontalMobileId] = React__default.useState(null);
|
|
4987
5020
|
const [separatedFilterItem, setSeparatedFilterItem] = React__default.useState({});
|
|
5021
|
+
const [defaultFilterItems, setDefaultFilterItems] = React__default.useState([]);
|
|
4988
5022
|
const debouncedKeyword = useDebounce(keyword, 500);
|
|
4989
5023
|
let productCardsComponent = null;
|
|
4990
5024
|
let collectionCardsComponent = null;
|
|
@@ -5075,31 +5109,30 @@ const SearchResultWidget = (props) => {
|
|
|
5075
5109
|
setIsLoading(false);
|
|
5076
5110
|
const { facetStats, totalHits, facetDistribution } = (results == null ? void 0 : results.find(({ indexUid }) => indexUid.includes(index_product))) || {};
|
|
5077
5111
|
let valueHideFilterWhenOneValue = ((_a2 = display == null ? void 0 : display.filter) == null ? void 0 : _a2.hide_when_one_value) && totalHits <= 1;
|
|
5078
|
-
|
|
5079
|
-
facetDistribution
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
);
|
|
5112
|
+
let valueSearchResultFacets = facetDistribution ? Object.fromEntries(
|
|
5113
|
+
Object.entries(facetDistribution).map((facet) => {
|
|
5114
|
+
let value = facet[0];
|
|
5115
|
+
let items = [];
|
|
5116
|
+
if (value === "variants.inventory_quantity") {
|
|
5117
|
+
items = [
|
|
5118
|
+
{
|
|
5119
|
+
name: "In Stock",
|
|
5120
|
+
value: "> 0"
|
|
5121
|
+
}
|
|
5122
|
+
];
|
|
5123
|
+
} else {
|
|
5124
|
+
items = Object.keys(facetDistribution[value]).map((item) => {
|
|
5125
|
+
return {
|
|
5126
|
+
name: item,
|
|
5127
|
+
value: item,
|
|
5128
|
+
total: facetDistribution[value][item] || 0
|
|
5129
|
+
};
|
|
5130
|
+
});
|
|
5131
|
+
}
|
|
5132
|
+
return [value, items];
|
|
5133
|
+
})
|
|
5134
|
+
) : {};
|
|
5135
|
+
setSearchResultFacets(valueSearchResultFacets);
|
|
5103
5136
|
setDefaultFacetStats(facetStats);
|
|
5104
5137
|
setHideFilterWhenOneValue(valueHideFilterWhenOneValue);
|
|
5105
5138
|
let allowedFilters = ((_c2 = (_b2 = sledgeSettings == null ? void 0 : sledgeSettings.instantsearch) == null ? void 0 : _b2.filters) == null ? void 0 : _c2.length) ? (_d2 = sledgeSettings == null ? void 0 : sledgeSettings.instantsearch) == null ? void 0 : _d2.filters : (filters == null ? void 0 : filters.length) ? filters : [];
|
|
@@ -5127,6 +5160,39 @@ const SearchResultWidget = (props) => {
|
|
|
5127
5160
|
});
|
|
5128
5161
|
if (isSetFilter)
|
|
5129
5162
|
setAllowedFilter(valueAllowedFilter);
|
|
5163
|
+
if (valueAllowedFilter == null ? void 0 : valueAllowedFilter.length) {
|
|
5164
|
+
let valueDefaultFilterItems = valueAllowedFilter.map((filter) => {
|
|
5165
|
+
var _a3;
|
|
5166
|
+
const { value, label, display: display2, settings: settings2 } = filter;
|
|
5167
|
+
const { prefix, filter_list, selected_filter } = settings2 || {};
|
|
5168
|
+
const isDisplaySlider = display2.toLowerCase() === "slider";
|
|
5169
|
+
if (isDisplaySlider)
|
|
5170
|
+
return;
|
|
5171
|
+
let items = [];
|
|
5172
|
+
if (display2.toLowerCase() === "tree") {
|
|
5173
|
+
for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {
|
|
5174
|
+
items = [...items, ...valueSearchResultFacets[`${value}.lvl${level}`]];
|
|
5175
|
+
}
|
|
5176
|
+
} else {
|
|
5177
|
+
items = valueSearchResultFacets[value];
|
|
5178
|
+
}
|
|
5179
|
+
return {
|
|
5180
|
+
label,
|
|
5181
|
+
settings: settings2,
|
|
5182
|
+
items: (_a3 = items == null ? void 0 : items.map((item) => {
|
|
5183
|
+
const isManualFilter = item && filter_list === "manual" && !(selected_filter == null ? void 0 : selected_filter.includes(item == null ? void 0 : item.value));
|
|
5184
|
+
const isPrefixFilter = item && filter_list === "prefix" && !(prefix == null ? void 0 : prefix.find((prefixItem) => {
|
|
5185
|
+
var _a4;
|
|
5186
|
+
return (_a4 = item == null ? void 0 : item.value) == null ? void 0 : _a4.startsWith(prefixItem);
|
|
5187
|
+
}));
|
|
5188
|
+
if (!item || isManualFilter || isPrefixFilter)
|
|
5189
|
+
return;
|
|
5190
|
+
return item.value;
|
|
5191
|
+
})) == null ? void 0 : _a3.filter((item) => item)
|
|
5192
|
+
};
|
|
5193
|
+
}).filter((item) => item);
|
|
5194
|
+
setDefaultFilterItems(valueDefaultFilterItems);
|
|
5195
|
+
}
|
|
5130
5196
|
}
|
|
5131
5197
|
setAllowedTabs(
|
|
5132
5198
|
tabs == null ? void 0 : tabs.map((tab) => {
|
|
@@ -5566,7 +5632,8 @@ const SearchResultWidget = (props) => {
|
|
|
5566
5632
|
clickedOpenFilterHorizontalId,
|
|
5567
5633
|
setClickedOpenFilterHorizontalId,
|
|
5568
5634
|
clickedOpenFilterHorizontalMobileId,
|
|
5569
|
-
setClickedOpenFilterHorizontalMobileId
|
|
5635
|
+
setClickedOpenFilterHorizontalMobileId,
|
|
5636
|
+
defaultFilterItems
|
|
5570
5637
|
})
|
|
5571
5638
|
] });
|
|
5572
5639
|
};
|
|
@@ -5624,7 +5691,8 @@ const ResultProduct = (props) => {
|
|
|
5624
5691
|
setClickedOpenFilterHorizontalId,
|
|
5625
5692
|
clickedOpenFilterHorizontalMobileId,
|
|
5626
5693
|
setClickedOpenFilterHorizontalMobileId,
|
|
5627
|
-
isFirstLoading
|
|
5694
|
+
isFirstLoading,
|
|
5695
|
+
defaultFilterItems
|
|
5628
5696
|
} = props || {};
|
|
5629
5697
|
const querySortBy = (query == null ? void 0 : query.sortBy) ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;
|
|
5630
5698
|
const queryPage = (query == null ? void 0 : query.page) ? query.page : DEFAULT_QUERY_PARAM.PAGE;
|
|
@@ -5635,7 +5703,13 @@ const ResultProduct = (props) => {
|
|
|
5635
5703
|
const [isLoading, setIsLoading] = React__default.useState(!propsData);
|
|
5636
5704
|
const [clickedSortId, setClickedSortId] = React__default.useState(defaultSort || "");
|
|
5637
5705
|
const [clickedLimitId, setClickedLimitId] = React__default.useState(Number((searchParams == null ? void 0 : searchParams.get(queryLimit)) || defaultLimit || DEFAULT_LIMIT_VALUE[0]));
|
|
5638
|
-
const [clickedOpenFilters, setClickedOpenFilters] = React__default.useState(
|
|
5706
|
+
const [clickedOpenFilters, setClickedOpenFilters] = React__default.useState(
|
|
5707
|
+
(allowedFilter == null ? void 0 : allowedFilter.length) ? allowedFilter.map((props2, index) => {
|
|
5708
|
+
const { value, settings: settings2 } = props2;
|
|
5709
|
+
const { collapse } = settings2 || {};
|
|
5710
|
+
return collapse ? null : `${value}-${index}`;
|
|
5711
|
+
}).filter((item) => item) : []
|
|
5712
|
+
);
|
|
5639
5713
|
const [triggerClickedFacets, setTriggerClickedFacets] = React__default.useState(false);
|
|
5640
5714
|
const [searchResult, setSearchResult] = React__default.useState(((_d = (_c = (_b = propsData == null ? void 0 : propsData.result) == null ? void 0 : _b.results) == null ? void 0 : _c[0]) == null ? void 0 : _d.hits) || []);
|
|
5641
5715
|
const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React__default.useState(0);
|
|
@@ -5643,6 +5717,7 @@ const ResultProduct = (props) => {
|
|
|
5643
5717
|
const [totalPage, setTotalPage] = React__default.useState(0);
|
|
5644
5718
|
const [totalSearchResult, setTotalSearchResult] = React__default.useState(((_g = (_f = (_e = propsData == null ? void 0 : propsData.result) == null ? void 0 : _e.results) == null ? void 0 : _f[0]) == null ? void 0 : _g.totalHits) || 0);
|
|
5645
5719
|
const [valueFilterPriceChange, setValueFilterPriceChange] = React__default.useState([]);
|
|
5720
|
+
const [valueFilterOnSaleChange, setValueFilterOnSaleChange] = React__default.useState([]);
|
|
5646
5721
|
const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React__default.useState(true);
|
|
5647
5722
|
const [searchFacetDistribution, setSearchFacetDistribution] = React__default.useState({});
|
|
5648
5723
|
const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React__default.useState(false);
|
|
@@ -5793,11 +5868,12 @@ const ResultProduct = (props) => {
|
|
|
5793
5868
|
setTriggerClickedFacets(!triggerClickedFacets);
|
|
5794
5869
|
handleQueryStringFilter({});
|
|
5795
5870
|
setValueFilterPriceChange([]);
|
|
5871
|
+
setValueFilterOnSaleChange([]);
|
|
5796
5872
|
};
|
|
5797
5873
|
const handleFilterChange = ({ parentId, value, force = false }) => {
|
|
5798
5874
|
var _a2;
|
|
5799
5875
|
let facets2 = [value];
|
|
5800
|
-
let isRange = ["variants.price"].includes(parentId);
|
|
5876
|
+
let isRange = ["variants.price", "variants.sale_percent"].includes(parentId);
|
|
5801
5877
|
let isHierarchical = hierarchicalFacetAliases.includes(parentId);
|
|
5802
5878
|
if (clickedFacets) {
|
|
5803
5879
|
if (force) {
|
|
@@ -5811,7 +5887,11 @@ const ResultProduct = (props) => {
|
|
|
5811
5887
|
if (isRange) {
|
|
5812
5888
|
if (clickedFacets[parentId], clickedFacets[parentId] === value) {
|
|
5813
5889
|
facets2 = [];
|
|
5814
|
-
|
|
5890
|
+
if (parentId === "variants.price") {
|
|
5891
|
+
setValueFilterPriceChange([]);
|
|
5892
|
+
} else if (parentId === "variants.sale_percent") {
|
|
5893
|
+
setValueFilterOnSaleChange([]);
|
|
5894
|
+
}
|
|
5815
5895
|
} else {
|
|
5816
5896
|
facets2 = value;
|
|
5817
5897
|
}
|
|
@@ -5827,7 +5907,10 @@ const ResultProduct = (props) => {
|
|
|
5827
5907
|
[parentId]: facets2
|
|
5828
5908
|
}
|
|
5829
5909
|
};
|
|
5830
|
-
|
|
5910
|
+
let handleQueryStringFilterProp = valueClickedFacets;
|
|
5911
|
+
if (Object.hasOwn(handleQueryStringFilterProp, "variants.inventory_quantity"))
|
|
5912
|
+
handleQueryStringFilterProp == null ? true : delete handleQueryStringFilterProp["variants.inventory_quantity"];
|
|
5913
|
+
handleQueryStringFilter(handleQueryStringFilterProp);
|
|
5831
5914
|
setClickedFacets == null ? void 0 : setClickedFacets(valueClickedFacets);
|
|
5832
5915
|
setTriggerClickedFacets(!triggerClickedFacets);
|
|
5833
5916
|
};
|
|
@@ -5875,6 +5958,8 @@ const ResultProduct = (props) => {
|
|
|
5875
5958
|
setClickedFacets == null ? void 0 : setClickedFacets(facetsQueryStringObject);
|
|
5876
5959
|
if (facetsQueryStringObject["variants.price"])
|
|
5877
5960
|
setValueFilterPriceChange(facetsQueryStringObject["variants.price"]);
|
|
5961
|
+
if (facetsQueryStringObject["variants.sale_percent"])
|
|
5962
|
+
setValueFilterOnSaleChange(facetsQueryStringObject["variants.sale_percent"]);
|
|
5878
5963
|
},
|
|
5879
5964
|
separator: hierarchical_separator,
|
|
5880
5965
|
separatorCollection: hierarchical_collections_separator,
|
|
@@ -5953,7 +6038,7 @@ const ResultProduct = (props) => {
|
|
|
5953
6038
|
let isAdditionalFilter = ["variants.inventory_quantity"].includes(getName);
|
|
5954
6039
|
if (isAdditionalFilter)
|
|
5955
6040
|
return;
|
|
5956
|
-
let isRange = ["variants.price"].includes(getName);
|
|
6041
|
+
let isRange = ["variants.price", "variants.sale_percent"].includes(getName);
|
|
5957
6042
|
let getAllowedFilterOne = allowedFilter == null ? void 0 : allowedFilter.filter(({ value }) => value == null ? void 0 : value.includes(getName));
|
|
5958
6043
|
let getLabel = (getAllowedFilterOne == null ? void 0 : getAllowedFilterOne.length) ? getAllowedFilterOne[0].label : getName;
|
|
5959
6044
|
let items = Array.isArray(facet[1]) && ((_a2 = facet[1]) == null ? void 0 : _a2.length) > 1 ? isRange ? dataClickedFacets.push({
|
|
@@ -5975,14 +6060,29 @@ const ResultProduct = (props) => {
|
|
|
5975
6060
|
}
|
|
5976
6061
|
});
|
|
5977
6062
|
const facetBlockSelected = ({ label, name, value, index }) => {
|
|
5978
|
-
var _a2, _b2;
|
|
6063
|
+
var _a2, _b2, _c2;
|
|
5979
6064
|
let valueText = value;
|
|
5980
|
-
let isRange = ["variants.price"].includes(name);
|
|
6065
|
+
let isRange = ["variants.price", "variants.sale_percent"].includes(name);
|
|
6066
|
+
let getLabel = label;
|
|
6067
|
+
let getSettings = {};
|
|
6068
|
+
if (defaultFilterItems == null ? void 0 : defaultFilterItems.length) {
|
|
6069
|
+
defaultFilterItems.map((defaultFilterItem) => {
|
|
6070
|
+
const { label: defaultFilterItemLabel, items, settings: defaultFilterItemSettings } = defaultFilterItem;
|
|
6071
|
+
if (items == null ? void 0 : items.includes(value)) {
|
|
6072
|
+
getLabel = defaultFilterItemLabel;
|
|
6073
|
+
getSettings = defaultFilterItemSettings;
|
|
6074
|
+
}
|
|
6075
|
+
});
|
|
6076
|
+
}
|
|
6077
|
+
(_a2 = getSettings == null ? void 0 : getSettings.delete_prefix) == null ? void 0 : _a2.map((deletePrefix) => {
|
|
6078
|
+
if (String(valueText).startsWith(deletePrefix))
|
|
6079
|
+
valueText = String(valueText).replace(deletePrefix, "");
|
|
6080
|
+
});
|
|
5981
6081
|
if (isRange)
|
|
5982
6082
|
valueText = value == null ? void 0 : value.join(" - ");
|
|
5983
6083
|
else
|
|
5984
|
-
valueText = (
|
|
5985
|
-
valueText = (
|
|
6084
|
+
valueText = (_b2 = String(valueText)) == null ? void 0 : _b2.replaceAll(hierarchical_collections_separator, " > ");
|
|
6085
|
+
valueText = (_c2 = String(valueText)) == null ? void 0 : _c2.replaceAll("_", " ");
|
|
5986
6086
|
let aliases = {};
|
|
5987
6087
|
let aliasValue = "";
|
|
5988
6088
|
let aliasSeparator = "";
|
|
@@ -6004,7 +6104,7 @@ const ResultProduct = (props) => {
|
|
|
6004
6104
|
}
|
|
6005
6105
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "sledge-instant-search__result-filter-item-refine-selected", style: filter_option_style, children: [
|
|
6006
6106
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "sledge-instant-search__result-filter-item-title-refine-list", children: [
|
|
6007
|
-
|
|
6107
|
+
getLabel,
|
|
6008
6108
|
": ",
|
|
6009
6109
|
aliasValue || valueText
|
|
6010
6110
|
] }),
|
|
@@ -6050,8 +6150,14 @@ const ResultProduct = (props) => {
|
|
|
6050
6150
|
let isRender = Boolean(display.toLowerCase() === "slider" ? items : items == null ? void 0 : items.length);
|
|
6051
6151
|
if (display.toLowerCase() === "slider") {
|
|
6052
6152
|
let defaultItemSlider = (defaultFacetStats == null ? void 0 : defaultFacetStats[value]) && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};
|
|
6053
|
-
let
|
|
6054
|
-
|
|
6153
|
+
let valueFilterSliderChange = [];
|
|
6154
|
+
if (value === "variants.price") {
|
|
6155
|
+
valueFilterSliderChange = valueFilterPriceChange;
|
|
6156
|
+
} else if (value === "variants.sale_percent") {
|
|
6157
|
+
valueFilterSliderChange = valueFilterOnSaleChange;
|
|
6158
|
+
}
|
|
6159
|
+
let defaultValueMin = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[0]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.min);
|
|
6160
|
+
let defaultValueMax = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[1]) || (defaultItemSlider == null ? void 0 : defaultItemSlider.max);
|
|
6055
6161
|
isRender = !defaultValueMin && !defaultValueMax ? false : true;
|
|
6056
6162
|
}
|
|
6057
6163
|
let classesUlElement = ["sledge-instant-search__result-filter-item-list"];
|
|
@@ -6072,6 +6178,8 @@ const ResultProduct = (props) => {
|
|
|
6072
6178
|
defaultFacetStats,
|
|
6073
6179
|
valueFilterPriceChange,
|
|
6074
6180
|
setValueFilterPriceChange,
|
|
6181
|
+
valueFilterOnSaleChange,
|
|
6182
|
+
setValueFilterOnSaleChange,
|
|
6075
6183
|
separatedFilterItem,
|
|
6076
6184
|
setSeparatedFilterItem,
|
|
6077
6185
|
scrollElementSelector,
|