@growupsell/react-ecommerce-core 2.0.16 → 2.0.17
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/{chunk-ID4JKOXT.js → chunk-D24PXFD3.js} +70 -10
- package/dist/chunk-D24PXFD3.js.map +1 -0
- package/dist/index.cjs +68 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +1 -1
- package/dist/provider.cjs +68 -8
- package/dist/provider.cjs.map +1 -1
- package/dist/provider.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-ID4JKOXT.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -118,6 +118,15 @@ declare const FilterContext: React__default.Context<{
|
|
|
118
118
|
selectedVariants: any[];
|
|
119
119
|
updateSelectedVariants: (x: any) => void;
|
|
120
120
|
variantLoading: boolean;
|
|
121
|
+
selectedSpecifications: {
|
|
122
|
+
id: number;
|
|
123
|
+
values: string[];
|
|
124
|
+
}[];
|
|
125
|
+
updateSpecificationOption: (keyId: number, option: string) => void;
|
|
126
|
+
setSelectedSpecifications: (value: {
|
|
127
|
+
id: number;
|
|
128
|
+
values: string[];
|
|
129
|
+
}[]) => void;
|
|
121
130
|
total: number;
|
|
122
131
|
limit: number;
|
|
123
132
|
offset: number;
|
|
@@ -150,6 +159,15 @@ declare const useFilter: () => {
|
|
|
150
159
|
selectedVariants: any[];
|
|
151
160
|
updateSelectedVariants: (x: any) => void;
|
|
152
161
|
variantLoading: boolean;
|
|
162
|
+
selectedSpecifications: {
|
|
163
|
+
id: number;
|
|
164
|
+
values: string[];
|
|
165
|
+
}[];
|
|
166
|
+
updateSpecificationOption: (keyId: number, option: string) => void;
|
|
167
|
+
setSelectedSpecifications: (value: {
|
|
168
|
+
id: number;
|
|
169
|
+
values: string[];
|
|
170
|
+
}[]) => void;
|
|
153
171
|
total: number;
|
|
154
172
|
limit: number;
|
|
155
173
|
offset: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -118,6 +118,15 @@ declare const FilterContext: React__default.Context<{
|
|
|
118
118
|
selectedVariants: any[];
|
|
119
119
|
updateSelectedVariants: (x: any) => void;
|
|
120
120
|
variantLoading: boolean;
|
|
121
|
+
selectedSpecifications: {
|
|
122
|
+
id: number;
|
|
123
|
+
values: string[];
|
|
124
|
+
}[];
|
|
125
|
+
updateSpecificationOption: (keyId: number, option: string) => void;
|
|
126
|
+
setSelectedSpecifications: (value: {
|
|
127
|
+
id: number;
|
|
128
|
+
values: string[];
|
|
129
|
+
}[]) => void;
|
|
121
130
|
total: number;
|
|
122
131
|
limit: number;
|
|
123
132
|
offset: number;
|
|
@@ -150,6 +159,15 @@ declare const useFilter: () => {
|
|
|
150
159
|
selectedVariants: any[];
|
|
151
160
|
updateSelectedVariants: (x: any) => void;
|
|
152
161
|
variantLoading: boolean;
|
|
162
|
+
selectedSpecifications: {
|
|
163
|
+
id: number;
|
|
164
|
+
values: string[];
|
|
165
|
+
}[];
|
|
166
|
+
updateSpecificationOption: (keyId: number, option: string) => void;
|
|
167
|
+
setSelectedSpecifications: (value: {
|
|
168
|
+
id: number;
|
|
169
|
+
values: string[];
|
|
170
|
+
}[]) => void;
|
|
153
171
|
total: number;
|
|
154
172
|
limit: number;
|
|
155
173
|
offset: number;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist } from './chunk-
|
|
1
|
+
export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist } from './chunk-D24PXFD3.js';
|
|
2
2
|
export { BusinessConfigContext } from './chunk-SP77KIKJ.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/provider.cjs
CHANGED
|
@@ -588,6 +588,9 @@ var FilterContext = react.createContext({
|
|
|
588
588
|
selectedVariants: [],
|
|
589
589
|
updateSelectedVariants: () => null,
|
|
590
590
|
variantLoading: false,
|
|
591
|
+
selectedSpecifications: [],
|
|
592
|
+
updateSpecificationOption: () => null,
|
|
593
|
+
setSelectedSpecifications: () => null,
|
|
591
594
|
total: 0,
|
|
592
595
|
limit: 10,
|
|
593
596
|
offset: 0
|
|
@@ -614,6 +617,7 @@ var FilterProvider = (props) => {
|
|
|
614
617
|
const [variantList, setVariantList] = react.useState([]);
|
|
615
618
|
const [selectedVariants, setSelectedVariants] = react.useState([]);
|
|
616
619
|
const [variantLoading, setVariantLoading] = react.useState(false);
|
|
620
|
+
const [selectedSpecifications, setSelectedSpecifications] = react.useState([]);
|
|
617
621
|
const [limit, setLimit] = react.useState(10);
|
|
618
622
|
const [offset, setOffset] = react.useState(0);
|
|
619
623
|
const [total, setTotal] = react.useState(0);
|
|
@@ -640,15 +644,30 @@ var FilterProvider = (props) => {
|
|
|
640
644
|
});
|
|
641
645
|
setCurrentPage(1);
|
|
642
646
|
};
|
|
643
|
-
const
|
|
644
|
-
setFilterConfigLoading(true);
|
|
645
|
-
const response = await api.api.getProductFilterConfig();
|
|
646
|
-
setFilterConfig(response);
|
|
647
|
-
setFilterConfigLoading(false);
|
|
648
|
-
};
|
|
647
|
+
const categoryFilterKey = selectedCategoryId.length === 1 ? selectedCategoryId[0] : void 0;
|
|
649
648
|
react.useEffect(() => {
|
|
650
|
-
|
|
651
|
-
|
|
649
|
+
let active = true;
|
|
650
|
+
(async () => {
|
|
651
|
+
if (!filterConfig) {
|
|
652
|
+
setFilterConfigLoading(true);
|
|
653
|
+
}
|
|
654
|
+
try {
|
|
655
|
+
const response = await api.api.getProductFilterConfig(categoryFilterKey);
|
|
656
|
+
if (active) {
|
|
657
|
+
setFilterConfig(response);
|
|
658
|
+
}
|
|
659
|
+
} catch (error) {
|
|
660
|
+
console.log(error);
|
|
661
|
+
} finally {
|
|
662
|
+
if (active) {
|
|
663
|
+
setFilterConfigLoading(false);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
})();
|
|
667
|
+
return () => {
|
|
668
|
+
active = false;
|
|
669
|
+
};
|
|
670
|
+
}, [categoryFilterKey]);
|
|
652
671
|
const removeCategoryFilterId = (id) => {
|
|
653
672
|
setSelectedCategoryId((x) => {
|
|
654
673
|
return x.filter((o) => o !== id);
|
|
@@ -666,6 +685,7 @@ var FilterProvider = (props) => {
|
|
|
666
685
|
max_price: selectedMaxPrice,
|
|
667
686
|
brand_ids: selectedCategoryId.length > 0 ? selectedBrandId : null,
|
|
668
687
|
variants: selectedCategoryId.length > 0 ? selectedVariants : null,
|
|
688
|
+
specifications: selectedSpecifications,
|
|
669
689
|
limit,
|
|
670
690
|
offset
|
|
671
691
|
};
|
|
@@ -687,6 +707,21 @@ var FilterProvider = (props) => {
|
|
|
687
707
|
return [...prevIds, id];
|
|
688
708
|
});
|
|
689
709
|
};
|
|
710
|
+
const updateSpecificationOption = (keyId, option) => {
|
|
711
|
+
setSelectedSpecifications((prev) => {
|
|
712
|
+
const current = prev.find((item) => item.id === keyId);
|
|
713
|
+
if (!current) {
|
|
714
|
+
return [...prev, { id: keyId, values: [option] }];
|
|
715
|
+
}
|
|
716
|
+
const values = current.values.includes(option) ? current.values.filter((value) => value !== option) : [...current.values, option];
|
|
717
|
+
if (values.length === 0) {
|
|
718
|
+
return prev.filter((item) => item.id !== keyId);
|
|
719
|
+
}
|
|
720
|
+
return prev.map(
|
|
721
|
+
(item) => item.id === keyId ? { ...item, values } : item
|
|
722
|
+
);
|
|
723
|
+
});
|
|
724
|
+
};
|
|
690
725
|
const updateSelectedVariants = (label) => {
|
|
691
726
|
setSelectedVariants((prevVariants) => {
|
|
692
727
|
if (prevVariants.includes(label)) {
|
|
@@ -718,9 +753,31 @@ var FilterProvider = (props) => {
|
|
|
718
753
|
selectedMaxPrice,
|
|
719
754
|
selectedBrandId,
|
|
720
755
|
selectedVariants,
|
|
756
|
+
selectedSpecifications,
|
|
721
757
|
limit,
|
|
722
758
|
offset
|
|
723
759
|
]);
|
|
760
|
+
react.useEffect(() => {
|
|
761
|
+
const keys = filterConfig?.specifications ?? [];
|
|
762
|
+
const allowed = new Map(
|
|
763
|
+
keys.map((key) => [
|
|
764
|
+
key.id,
|
|
765
|
+
new Set(key.options ?? [])
|
|
766
|
+
])
|
|
767
|
+
);
|
|
768
|
+
setSelectedSpecifications((prev) => {
|
|
769
|
+
const next = prev.map((item) => ({
|
|
770
|
+
...item,
|
|
771
|
+
values: item.values.filter((value) => allowed.get(item.id)?.has(value))
|
|
772
|
+
})).filter((item) => item.values.length > 0 && allowed.has(item.id));
|
|
773
|
+
if (next.length === prev.length && next.every(
|
|
774
|
+
(item, index) => item.id === prev[index].id && item.values.length === prev[index].values.length && item.values.every((value, valueIndex) => value === prev[index].values[valueIndex])
|
|
775
|
+
)) {
|
|
776
|
+
return prev;
|
|
777
|
+
}
|
|
778
|
+
return next;
|
|
779
|
+
});
|
|
780
|
+
}, [filterConfig]);
|
|
724
781
|
const handlePageChange = (newOffset) => {
|
|
725
782
|
setOffset(newOffset);
|
|
726
783
|
};
|
|
@@ -760,6 +817,9 @@ var FilterProvider = (props) => {
|
|
|
760
817
|
selectedVariants,
|
|
761
818
|
updateSelectedVariants,
|
|
762
819
|
variantLoading,
|
|
820
|
+
selectedSpecifications,
|
|
821
|
+
updateSpecificationOption,
|
|
822
|
+
setSelectedSpecifications,
|
|
763
823
|
total,
|
|
764
824
|
limit,
|
|
765
825
|
offset
|