@tapcart/mobile-components 0.8.63 → 0.8.64
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/hooks/use-infinite-scroll.d.ts +7 -6
- package/dist/components/hooks/use-infinite-scroll.d.ts.map +1 -1
- package/dist/components/hooks/use-infinite-scroll.js +80 -18
- package/dist/components/hooks/use-sort-filter.d.ts +3 -2
- package/dist/components/hooks/use-sort-filter.d.ts.map +1 -1
- package/dist/components/hooks/use-sort-filter.js +36 -6
- package/dist/components/libs/cache/ProductsLocalStorage.d.ts.map +1 -1
- package/dist/components/libs/cache/ProductsLocalStorage.js +1 -1
- package/dist/styles.css +7 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReadonlyURLSearchParams } from "next/navigation";
|
|
2
|
-
import { Product } from "app-studio-types";
|
|
2
|
+
import { Product, BaseSearchClient } from "app-studio-types";
|
|
3
3
|
interface PageData {
|
|
4
4
|
products: Product[];
|
|
5
5
|
cursorBlob?: string;
|
|
@@ -10,10 +10,11 @@ interface PageData {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
interface UseInfiniteScrollProps {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
searchClient?: BaseSearchClient<Product>;
|
|
14
|
+
initialData?: PageData;
|
|
15
|
+
queryVariables?: Record<string, any>;
|
|
16
|
+
direction?: "vertical" | "horizontal";
|
|
17
|
+
productLimit?: number;
|
|
17
18
|
threshold?: number;
|
|
18
19
|
interval?: number;
|
|
19
20
|
customFetcher?: (...args: any[]) => Promise<any>;
|
|
@@ -33,6 +34,6 @@ interface UseInfiniteScrollReturn {
|
|
|
33
34
|
}
|
|
34
35
|
export declare const formatSearchParamsAsNextQueryVariables: (searchParams: ReadonlyURLSearchParams) => {};
|
|
35
36
|
declare const constructURL: (apiURL: string) => string;
|
|
36
|
-
declare const useInfiniteScroll: ({ initialData, queryVariables: queryVariableProps, direction, productLimit, threshold, interval, customFetcher, customGetKey, }: UseInfiniteScrollProps) => UseInfiniteScrollReturn;
|
|
37
|
+
declare const useInfiniteScroll: ({ searchClient, initialData, queryVariables: queryVariableProps, direction, productLimit, threshold, interval, customFetcher, customGetKey, }: UseInfiniteScrollProps) => UseInfiniteScrollReturn;
|
|
37
38
|
export { useInfiniteScroll, constructURL };
|
|
38
39
|
//# sourceMappingURL=use-infinite-scroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-infinite-scroll.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-infinite-scroll.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAmB,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-infinite-scroll.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-infinite-scroll.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAmB,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,UAAU,QAAQ;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxC;AAED,UAAU,sBAAsB;IAE9B,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAGxC,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAGpC,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,GAAG,GAAG,IAAI,EAC5B,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,CAAA;CACT;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAA;IACV,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAChD,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,sCAAsC,iBACnC,uBAAuB,OAsBtC,CAAA;AAED,QAAA,MAAM,YAAY,WAAY,MAAM,WAGnC,CAAA;AAED,QAAA,MAAM,iBAAiB,kJAepB,sBAAsB,KAAG,uBA+L3B,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -41,7 +41,13 @@ const constructURL = (apiURL) => {
|
|
|
41
41
|
const url = new URL(apiURL);
|
|
42
42
|
return url.toString();
|
|
43
43
|
};
|
|
44
|
-
const useInfiniteScroll = ({
|
|
44
|
+
const useInfiniteScroll = ({
|
|
45
|
+
// Search client props
|
|
46
|
+
searchClient,
|
|
47
|
+
// API props (backwards compatibility)
|
|
48
|
+
initialData, queryVariables: queryVariableProps,
|
|
49
|
+
// Common props
|
|
50
|
+
direction = "vertical", productLimit = Infinity, threshold = 0.01, interval = 33, // ~2 frames
|
|
45
51
|
customFetcher, customGetKey, }) => {
|
|
46
52
|
var _a, _b, _c, _d, _e;
|
|
47
53
|
const searchParams = useSearchParams();
|
|
@@ -50,11 +56,19 @@ customFetcher, customGetKey, }) => {
|
|
|
50
56
|
rootMargin: direction === "vertical" ? "600px" : "0px 420px 0px 0px",
|
|
51
57
|
threshold: threshold,
|
|
52
58
|
});
|
|
59
|
+
// When searchClient is provided, use search client approach
|
|
60
|
+
const usingSearchClient = Boolean(searchClient);
|
|
61
|
+
// Search client approach - getKey and fetcher
|
|
62
|
+
const searchClientGetKey = useMemo(() => customGetKey || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.getKey), [customGetKey, searchClient === null || searchClient === void 0 ? void 0 : searchClient.getKey]);
|
|
63
|
+
const searchClientFetcher = useMemo(() => customFetcher || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.fetcher), [customFetcher, searchClient === null || searchClient === void 0 ? void 0 : searchClient.fetcher]);
|
|
64
|
+
// API approach - query variables and fetcher
|
|
53
65
|
const queryVariables = useMemo(() => {
|
|
66
|
+
if (usingSearchClient)
|
|
67
|
+
return null;
|
|
54
68
|
const formattedParams = formatSearchParamsAsNextQueryVariables(searchParams);
|
|
55
69
|
return Object.assign(Object.assign({}, queryVariableProps), { searchParams: formattedParams });
|
|
56
|
-
}, [queryVariableProps, searchParams]);
|
|
57
|
-
|
|
70
|
+
}, [queryVariableProps, searchParams, usingSearchClient]);
|
|
71
|
+
const apiGetKey = (pageIndex, previousPageData, queryVariables) => {
|
|
58
72
|
var _a;
|
|
59
73
|
if (pageIndex === 0) {
|
|
60
74
|
return Object.assign({}, queryVariables);
|
|
@@ -63,11 +77,11 @@ customFetcher, customGetKey, }) => {
|
|
|
63
77
|
return null;
|
|
64
78
|
return Object.assign(Object.assign({}, queryVariables), { cursorBlob: previousPageData.pageData.cursorBlob });
|
|
65
79
|
};
|
|
66
|
-
|
|
67
|
-
getKey = customGetKey;
|
|
68
|
-
}
|
|
69
|
-
let fetcher = (body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
const apiFetcher = (body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
81
|
var _f, _g;
|
|
82
|
+
if (!(initialData === null || initialData === void 0 ? void 0 : initialData.apiURL)) {
|
|
83
|
+
throw new Error("initialData.apiURL is required for API mode");
|
|
84
|
+
}
|
|
71
85
|
const res = yield fetch(constructURL(initialData.apiURL), {
|
|
72
86
|
method: "POST",
|
|
73
87
|
body: JSON.stringify(body),
|
|
@@ -76,10 +90,25 @@ customFetcher, customGetKey, }) => {
|
|
|
76
90
|
productCount.current += (_g = (_f = data === null || data === void 0 ? void 0 : data.products) === null || _f === void 0 ? void 0 : _f.length) !== null && _g !== void 0 ? _g : 0;
|
|
77
91
|
return data;
|
|
78
92
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
// Determine which approach to use
|
|
94
|
+
const getKey = usingSearchClient
|
|
95
|
+
? (pageIndex, previousPageData) => {
|
|
96
|
+
if (!searchClientGetKey)
|
|
97
|
+
return null;
|
|
98
|
+
return searchClientGetKey(pageIndex, previousPageData);
|
|
99
|
+
}
|
|
100
|
+
: (pageIndex, previousPageData) => (customGetKey || apiGetKey)(pageIndex, previousPageData, queryVariables !== null && queryVariables !== void 0 ? queryVariables : {});
|
|
101
|
+
const fetcher = usingSearchClient
|
|
102
|
+
? (...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
+
var _h, _j;
|
|
104
|
+
if (!searchClientFetcher)
|
|
105
|
+
return null;
|
|
106
|
+
const result = yield searchClientFetcher(...args);
|
|
107
|
+
productCount.current += (_j = (_h = result === null || result === void 0 ? void 0 : result.products) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0;
|
|
108
|
+
return result;
|
|
109
|
+
})
|
|
110
|
+
: customFetcher || apiFetcher;
|
|
111
|
+
const { data, error, size, setSize, isLoading, isValidating, mutate, } = useSWRInfinite(getKey, fetcher, {
|
|
83
112
|
revalidateFirstPage: false,
|
|
84
113
|
initialSize: 1,
|
|
85
114
|
});
|
|
@@ -87,8 +116,16 @@ customFetcher, customGetKey, }) => {
|
|
|
87
116
|
const isLoadingMore = isLoadingInitialData ||
|
|
88
117
|
(size > 0 && data && typeof data[size - 1] === "undefined");
|
|
89
118
|
const isEmpty = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.products) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) === 0;
|
|
90
|
-
|
|
91
|
-
|
|
119
|
+
let isEndPointer;
|
|
120
|
+
if (!data) {
|
|
121
|
+
isEndPointer = true;
|
|
122
|
+
}
|
|
123
|
+
else if (usingSearchClient) {
|
|
124
|
+
isEndPointer = !(searchClient === null || searchClient === void 0 ? void 0 : searchClient.getHasMore());
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
isEndPointer = !((_e = (_d = data[data.length - 1]) === null || _d === void 0 ? void 0 : _d.pageData) === null || _e === void 0 ? void 0 : _e.cursorBlob);
|
|
128
|
+
}
|
|
92
129
|
const isReachingEnd = isEmpty || isEndPointer;
|
|
93
130
|
const isRefreshing = isValidating && data && data.length === size;
|
|
94
131
|
const loadMore = useCallback(() => {
|
|
@@ -104,6 +141,7 @@ customFetcher, customGetKey, }) => {
|
|
|
104
141
|
isRefreshing,
|
|
105
142
|
productLimit,
|
|
106
143
|
setSize,
|
|
144
|
+
size,
|
|
107
145
|
]);
|
|
108
146
|
const throttleLoadMore = useMemo(() => throttle(loadMore, interval), [loadMore, interval]);
|
|
109
147
|
useEffect(() => {
|
|
@@ -111,7 +149,22 @@ customFetcher, customGetKey, }) => {
|
|
|
111
149
|
throttleLoadMore();
|
|
112
150
|
}
|
|
113
151
|
}, [inView, throttleLoadMore]);
|
|
114
|
-
|
|
152
|
+
// Search client state change listener (only for search client approach)
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
if (!usingSearchClient || !searchClient)
|
|
155
|
+
return;
|
|
156
|
+
const unsubscribeAllChanges = searchClient.onSearchStateChange(() => {
|
|
157
|
+
productCount.current = 0;
|
|
158
|
+
mutate(undefined, { revalidate: true });
|
|
159
|
+
});
|
|
160
|
+
return unsubscribeAllChanges;
|
|
161
|
+
}, [searchClient, mutate, usingSearchClient]);
|
|
162
|
+
const products = useMemo(() => {
|
|
163
|
+
return data
|
|
164
|
+
? data === null || data === void 0 ? void 0 : data.flatMap((page) => page === null || page === void 0 ? void 0 : page.products).slice(0, productLimit)
|
|
165
|
+
: [];
|
|
166
|
+
}, [data, productLimit]);
|
|
167
|
+
return useMemo(() => ({
|
|
115
168
|
data,
|
|
116
169
|
error,
|
|
117
170
|
isLoadingInitialData,
|
|
@@ -119,11 +172,20 @@ customFetcher, customGetKey, }) => {
|
|
|
119
172
|
isEmpty,
|
|
120
173
|
isReachingEnd,
|
|
121
174
|
ref,
|
|
122
|
-
products
|
|
123
|
-
? data === null || data === void 0 ? void 0 : data.flatMap((page) => page === null || page === void 0 ? void 0 : page.products).slice(0, productLimit)
|
|
124
|
-
: [],
|
|
175
|
+
products,
|
|
125
176
|
isLoading,
|
|
126
177
|
isValidating,
|
|
127
|
-
}
|
|
178
|
+
}), [
|
|
179
|
+
data,
|
|
180
|
+
error,
|
|
181
|
+
isLoadingInitialData,
|
|
182
|
+
isLoadingMore,
|
|
183
|
+
isEmpty,
|
|
184
|
+
isReachingEnd,
|
|
185
|
+
ref,
|
|
186
|
+
products,
|
|
187
|
+
isLoading,
|
|
188
|
+
isValidating,
|
|
189
|
+
]);
|
|
128
190
|
};
|
|
129
191
|
export { useInfiniteScroll, constructURL };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Collection } from "app-studio-types";
|
|
1
|
+
import { Collection, Product, BaseSearchClient } from "app-studio-types";
|
|
2
2
|
import { FilterCategory, FiltersAndRelatedCategories, Integration, IntegrationSortItem } from "../libs/sort-filter/search-integration";
|
|
3
3
|
interface UseSortFilterProps {
|
|
4
4
|
initialData: PageData;
|
|
5
5
|
queryVariables: Record<string, any>;
|
|
6
6
|
dynamicKey?: (queryVariables: any) => () => any;
|
|
7
|
+
searchClient?: BaseSearchClient<Product>;
|
|
7
8
|
}
|
|
8
9
|
interface PageData {
|
|
9
10
|
filtersURL: string;
|
|
@@ -27,6 +28,6 @@ interface SortFilterData {
|
|
|
27
28
|
dynamicFiltersEnabled: boolean;
|
|
28
29
|
integrations: Integration[];
|
|
29
30
|
}
|
|
30
|
-
declare const useSortFilter: ({ initialData, queryVariables, dynamicKey, }: UseSortFilterProps) => UseSortFilterReturn;
|
|
31
|
+
declare const useSortFilter: ({ initialData, queryVariables, dynamicKey, searchClient, }: UseSortFilterProps) => UseSortFilterReturn;
|
|
31
32
|
export { useSortFilter };
|
|
32
33
|
//# sourceMappingURL=use-sort-filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-sort-filter.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-sort-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-sort-filter.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-sort-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExE,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACpB,MAAM,wCAAwC,CAAA;AAI/C,UAAU,kBAAkB;IAC1B,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,KAAK,MAAM,GAAG,CAAA;IAC/C,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;CACzC;AAED,UAAU,QAAQ;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,cAAc,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxC;AAED,UAAU,mBAAmB;IAC3B,cAAc,EAAE,cAAc,CAAA;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAA;CAC5B;AAeD,QAAA,MAAM,aAAa,+DAKhB,kBAAkB,KAAG,mBA2EvB,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
import useSWRInfinite from "swr/infinite";
|
|
3
12
|
import useSWR from "swr";
|
|
4
13
|
import { useCallback, useMemo } from "react";
|
|
@@ -12,26 +21,28 @@ const fetcher = ({ apiURL, body }) => fetch(constructURL(apiURL), {
|
|
|
12
21
|
})
|
|
13
22
|
.then((res) => res.json())
|
|
14
23
|
.catch((error) => console.error(error));
|
|
15
|
-
const useSortFilter = ({ initialData, queryVariables, dynamicKey, }) => {
|
|
16
|
-
const shouldFetch = queryVariables && Object.keys(queryVariables).length > 0;
|
|
24
|
+
const useSortFilter = ({ initialData, queryVariables, dynamicKey, searchClient, }) => {
|
|
25
|
+
const shouldFetch = queryVariables && Object.keys(queryVariables).length > 0 && !searchClient;
|
|
17
26
|
const { data: sortFilterData, isLoading } = useSWR(shouldFetch
|
|
18
27
|
? { apiUrl: initialData.sortFilterURL, body: Object.assign({}, queryVariables) }
|
|
19
28
|
: null, ({ apiUrl, body }) => fetcher({ apiURL: apiUrl, body }), { revalidateOnFocus: false });
|
|
20
29
|
const getKey = () => {
|
|
21
|
-
if (!sortFilterData ||
|
|
30
|
+
if (!sortFilterData ||
|
|
31
|
+
!sortFilterData.dynamicFiltersEnabled ||
|
|
32
|
+
searchClient)
|
|
22
33
|
return null;
|
|
23
34
|
return Object.assign(Object.assign({}, sortFilterData.queryVariables), (initialData.uiFilterState && {
|
|
24
35
|
filterCategories: initialData.uiFilterState,
|
|
25
36
|
}));
|
|
26
37
|
};
|
|
27
38
|
const memoizedDynamicKey = useCallback(() => {
|
|
28
|
-
if (dynamicKey) {
|
|
29
|
-
return dynamicKey(sortFilterData.queryVariables);
|
|
39
|
+
if (dynamicKey && !searchClient) {
|
|
40
|
+
return dynamicKey(sortFilterData === null || sortFilterData === void 0 ? void 0 : sortFilterData.queryVariables);
|
|
30
41
|
}
|
|
31
42
|
else {
|
|
32
43
|
return null;
|
|
33
44
|
}
|
|
34
|
-
}, [dynamicKey, sortFilterData === null || sortFilterData === void 0 ? void 0 : sortFilterData.queryVariables]);
|
|
45
|
+
}, [dynamicKey, sortFilterData === null || sortFilterData === void 0 ? void 0 : sortFilterData.queryVariables, searchClient]);
|
|
35
46
|
const memoizedFetch = useMemo(() => {
|
|
36
47
|
return (body) => fetcher({ apiURL: initialData.filtersURL, body });
|
|
37
48
|
}, [initialData.filtersURL]);
|
|
@@ -40,6 +51,25 @@ const useSortFilter = ({ initialData, queryVariables, dynamicKey, }) => {
|
|
|
40
51
|
revalidateOnFocus: false,
|
|
41
52
|
initialSize: 1,
|
|
42
53
|
});
|
|
54
|
+
// If searchClient is provided, return default values
|
|
55
|
+
if (searchClient) {
|
|
56
|
+
return {
|
|
57
|
+
sortFilterData: {
|
|
58
|
+
collection: {},
|
|
59
|
+
filtersAndRelatedCategories: {
|
|
60
|
+
filterCategories: [],
|
|
61
|
+
relatedCategories: [],
|
|
62
|
+
},
|
|
63
|
+
sortOptions: [],
|
|
64
|
+
dynamicFiltersEnabled: false,
|
|
65
|
+
integrations: [],
|
|
66
|
+
},
|
|
67
|
+
data: [],
|
|
68
|
+
mutate: () => __awaiter(void 0, void 0, void 0, function* () { return ({}); }),
|
|
69
|
+
isLoading: false,
|
|
70
|
+
isFilterLoading: false,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
43
73
|
return {
|
|
44
74
|
sortFilterData,
|
|
45
75
|
data: data !== null && data !== void 0 ? data : [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsLocalStorage.d.ts","sourceRoot":"","sources":["../../../../components/libs/cache/ProductsLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAG7C,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,cAAc;IAC9D,OAAO,EAAE,MAAM,CAA2B;IAC1C,WAAW,EAAE,MAAM,CAAe;IAElC,aAAa,CAAC,EAAE,EAAE,MAAM;IAIxB,iBAAiB,CAAC,MAAM,EAAE,MAAM;;IAShC,QAAQ,IAAI,aAAa,EAAE;IAiB3B,YAAY,CAAC,EACX,EAAE,EACF,MAAM,GACP,EAAE;QACD,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,MAAM,GAAG,IAAI;IAgBjB,aAAa,CAAC,QAAQ,EAAE;QACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"ProductsLocalStorage.d.ts","sourceRoot":"","sources":["../../../../components/libs/cache/ProductsLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAG7C,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,cAAc;IAC9D,OAAO,EAAE,MAAM,CAA2B;IAC1C,WAAW,EAAE,MAAM,CAAe;IAElC,aAAa,CAAC,EAAE,EAAE,MAAM;IAIxB,iBAAiB,CAAC,MAAM,EAAE,MAAM;;IAShC,QAAQ,IAAI,aAAa,EAAE;IAiB3B,YAAY,CAAC,EACX,EAAE,EACF,MAAM,GACP,EAAE;QACD,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,MAAM,GAAG,IAAI;IAgBjB,aAAa,CAAC,QAAQ,EAAE;QACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAYrB,YAAY,CACV,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EACvC,KAAK,CAAC,EAAE,aAAa,EAAE,EACvB,YAAY,GAAE,OAAc;gBAFT,MAAM;YAAM,MAAM;;IAiEvC,aAAa,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE;;;;IASrD,eAAe,CAAC,WAAW,GAAE,MAAU;IAWvC,UAAU;IAQV,eAAe,CAAC,CAAC,EAAE,GAAG;CASvB"}
|
|
@@ -53,7 +53,7 @@ export default class ProductsLocalStorage extends AppStudioCache {
|
|
|
53
53
|
: ((_b = products === null || products === void 0 ? void 0 : products.productHandles) === null || _b === void 0 ? void 0 : _b.length)
|
|
54
54
|
? products.productHandles.map((handle) => this.getCacheItem({ handle }))
|
|
55
55
|
: [];
|
|
56
|
-
return returnProducts;
|
|
56
|
+
return returnProducts.filter((product) => product !== null);
|
|
57
57
|
}
|
|
58
58
|
setCacheItem(product, cache, shouldExpire = true) {
|
|
59
59
|
var _a, _b;
|
package/dist/styles.css
CHANGED
|
@@ -823,6 +823,10 @@ video {
|
|
|
823
823
|
.m-auto {
|
|
824
824
|
margin: auto;
|
|
825
825
|
}
|
|
826
|
+
.-mx-4 {
|
|
827
|
+
margin-left: -1rem;
|
|
828
|
+
margin-right: -1rem;
|
|
829
|
+
}
|
|
826
830
|
.mx-1 {
|
|
827
831
|
margin-left: 0.25rem;
|
|
828
832
|
margin-right: 0.25rem;
|
|
@@ -1072,6 +1076,9 @@ video {
|
|
|
1072
1076
|
.h-full {
|
|
1073
1077
|
height: 100%;
|
|
1074
1078
|
}
|
|
1079
|
+
.h-px {
|
|
1080
|
+
height: 1px;
|
|
1081
|
+
}
|
|
1075
1082
|
.h-screen {
|
|
1076
1083
|
height: 100vh;
|
|
1077
1084
|
}
|