@usereactify/search 5.25.0 → 5.26.1
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/CHANGELOG.md +14 -0
- package/dist/package.json +11 -10
- package/dist/src/components/ClearAll/ClearAll.js +3 -31
- package/dist/src/components/ClearAll/ClearAll.js.map +1 -1
- package/dist/src/components/Example/ExampleFilterRange.js +1 -3
- package/dist/src/components/Example/ExampleFilterRange.js.map +1 -1
- package/dist/src/components/Example/ExampleFilterSlider.js +7 -24
- package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -1
- package/dist/src/components/Example/ExampleFilters.d.ts +3 -1
- package/dist/src/components/Example/ExampleFilters.js +4 -8
- package/dist/src/components/Example/ExampleFilters.js.map +1 -1
- package/dist/src/components/Example/ExampleFiltersSelected.js +10 -24
- package/dist/src/components/Example/ExampleFiltersSelected.js.map +1 -1
- package/dist/src/components/Example/index.d.ts +0 -3
- package/dist/src/components/Example/index.js +0 -3
- package/dist/src/components/Example/index.js.map +1 -1
- package/dist/src/components/Filter/Filter.d.ts +2 -2
- package/dist/src/components/Filter/Filter.js +18 -91
- package/dist/src/components/Filter/Filter.js.map +1 -1
- package/dist/src/components/Filter/Filters.d.ts +3 -17
- package/dist/src/components/Filter/Filters.js +2 -1
- package/dist/src/components/Filter/Filters.js.map +1 -1
- package/dist/src/components/Filter/FiltersSelected.d.ts +2 -7
- package/dist/src/components/Filter/FiltersSelected.js +2 -45
- package/dist/src/components/Filter/FiltersSelected.js.map +1 -1
- package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.d.ts +7 -5
- package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js +24 -42
- package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -1
- package/dist/src/components/Result/Results.js +9 -24
- package/dist/src/components/Result/Results.js.map +1 -1
- package/dist/src/components/Sensor/SensorCollection.js +0 -4
- package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
- package/dist/src/components/Sensor/SensorInventoryAvailable.js +1 -6
- package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
- package/dist/src/components/Sensor/SensorPublished.js +6 -13
- package/dist/src/components/Sensor/SensorPublished.js.map +1 -1
- package/dist/src/components/Sensor/SensorSearchTerm.js +66 -78
- package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
- package/dist/src/components/Sensor/SensorSort.js +65 -75
- package/dist/src/components/Sensor/SensorSort.js.map +1 -1
- package/dist/src/components/Sensor/SensorSortScore.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSortScore.js +13 -0
- package/dist/src/components/Sensor/SensorSortScore.js.map +1 -0
- package/dist/src/components/Sensor/index.d.ts +1 -0
- package/dist/src/components/Sensor/index.js +2 -0
- package/dist/src/components/Sensor/index.js.map +1 -1
- package/dist/src/components/index.d.ts +0 -1
- package/dist/src/components/index.js +0 -1
- package/dist/src/components/index.js.map +1 -1
- package/dist/src/hooks/index.d.ts +0 -3
- package/dist/src/hooks/index.js +0 -3
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +7 -2
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +3 -10
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +27 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js +71 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.d.ts +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +5 -3
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +5 -3
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +3 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.d.ts +1 -2
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +3 -8
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -1
- package/dist/src/hooks/useAnalytics.js +3 -23
- package/dist/src/hooks/useAnalytics.js.map +1 -1
- package/dist/src/hooks/useConfig.js +27 -9
- package/dist/src/hooks/useConfig.js.map +1 -1
- package/dist/src/hooks/useCuration.js +1 -12
- package/dist/src/hooks/useCuration.js.map +1 -1
- package/dist/src/hooks/useFilterListProps.js +2 -15
- package/dist/src/hooks/useFilterListProps.js.map +1 -1
- package/dist/src/hooks/useFilterRangeProps.d.ts +10 -1
- package/dist/src/hooks/useFilterRangeProps.js +47 -36
- package/dist/src/hooks/useFilterRangeProps.js.map +1 -1
- package/dist/src/hooks/useFilterSliderProps.d.ts +8 -6
- package/dist/src/hooks/useFilterSliderProps.js +10 -31
- package/dist/src/hooks/useFilterSliderProps.js.map +1 -1
- package/dist/src/hooks/usePaginationLoadMore.d.ts +15 -0
- package/dist/src/hooks/usePaginationLoadMore.js +38 -0
- package/dist/src/hooks/usePaginationLoadMore.js.map +1 -0
- package/dist/src/hooks/useReactifySearchContext.d.ts +11 -19
- package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
- package/dist/src/hooks/useSearch.js +2 -4
- package/dist/src/hooks/useSearch.js.map +1 -1
- package/dist/src/types/config.d.ts +5 -11
- package/dist/src/types/config.js.map +1 -1
- package/dist/src/types/elastic.d.ts +17 -53
- package/dist/src/types/elastic.js.map +1 -1
- package/dist/src/types/firestore.d.ts +0 -3
- package/dist/src/types/firestore.js.map +1 -1
- package/dist/src/types/reactivesearch.d.ts +1 -1
- package/dist/src/types/reactivesearch.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/components/Example/ExampleHookUseResults.d.ts +0 -2
- package/dist/src/components/Example/ExampleHookUseResults.js +0 -25
- package/dist/src/components/Example/ExampleHookUseResults.js.map +0 -1
- package/dist/src/components/Example/ExampleSuggestions.d.ts +0 -4
- package/dist/src/components/Example/ExampleSuggestions.js +0 -16
- package/dist/src/components/Example/ExampleSuggestions.js.map +0 -1
- package/dist/src/components/Suggestions/Suggestions.d.ts +0 -12
- package/dist/src/components/Suggestions/Suggestions.js +0 -44
- package/dist/src/components/Suggestions/Suggestions.js.map +0 -1
- package/dist/src/components/Suggestions/index.d.ts +0 -1
- package/dist/src/components/Suggestions/index.js +0 -14
- package/dist/src/components/Suggestions/index.js.map +0 -1
- package/dist/src/hooks/react-slider/useReactSliderProps.d.ts +0 -4
- package/dist/src/hooks/react-slider/useReactSliderProps.js +0 -28
- package/dist/src/hooks/react-slider/useReactSliderProps.js.map +0 -1
- package/dist/src/hooks/useFlags.d.ts +0 -17
- package/dist/src/hooks/useFlags.js +0 -45
- package/dist/src/hooks/useFlags.js.map +0 -1
- package/dist/src/hooks/useIndices.d.ts +0 -5
- package/dist/src/hooks/useIndices.js +0 -49
- package/dist/src/hooks/useIndices.js.map +0 -1
- package/dist/src/hooks/useResults.d.ts +0 -21
- package/dist/src/hooks/useResults.js +0 -19
- package/dist/src/hooks/useResults.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,wCAAmC;AAE5B,MAAM,SAAS,GAAG,CACvB,sBAA8B,EAC9B,QAAiB,EAGjB,EAAE;IACF,2EAA2E;IAC3E,MAAM,YAAY,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAO;SACR;QACD,eAAK,CAAC,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;QAEhD,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { Config } from \"../types/config\";\nimport { debug } from \"../utility\";\n\n// 5 minute cache expiry\nconst CACHE_EXPIRY = 5 * 60 * 1000;\n\nexport const useConfig = (\n shopifyPermanentDomain: string,\n configId?: string\n): {\n config: Config | undefined;\n} => {\n // synchronously returns cached and non-expired config from session storage\n const cachedConfig = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n debug.log(\"useConfig\", \"checking config cache\");\n\n // skip checking cache if url search param \"nocache\" is set\n const skipCache =\n new URLSearchParams(window.location.href.split(\"?\")[1]).get(\"nocache\") !==\n null;\n if (skipCache) {\n debug.log(\"useConfig\", \"cache is disabled\");\n\n return;\n }\n\n const sessionConfig: {\n expiresAt: number;\n config: Config;\n } | null = JSON.parse(\n window.sessionStorage.getItem(\"reactify-search:config\") ?? \"null\"\n );\n\n if (sessionConfig) {\n const sessionConfigTtl = sessionConfig.expiresAt - Date.now();\n if (sessionConfigTtl > 0) {\n debug.log(\n \"useConfig\",\n `config cache valid, expires in ${(\n sessionConfigTtl / 1000\n ).toFixed()} seconds`\n );\n\n return sessionConfig.config;\n } else {\n debug.log(\n \"useConfig\",\n `config cache invalid, expired ${(\n (sessionConfigTtl * -1) /\n 1000\n ).toFixed()} seconds ago`\n );\n }\n }\n\n return;\n }, []);\n\n const [config, setConfig] = React.useState<Config | undefined>(cachedConfig);\n\n React.useEffect(() => {\n if (config) {\n return;\n }\n\n (async () => {\n debug.log(\"useConfig\", \"loading fresh config\");\n const searchParams = new URLSearchParams();\n searchParams.set(\"shop\", shopifyPermanentDomain);\n\n if (configId) {\n searchParams.set(\"id\", configId);\n }\n\n const skipCache =\n new URLSearchParams(window.location.href.split(\"?\")[1]).get(\n \"nocache\"\n ) !== null;\n\n if (skipCache) {\n searchParams.set(\"nocache\", \"true\");\n }\n\n const json = await fetch(\n `https://config.search.reactify.app/?${searchParams.toString()}`\n ).then((response) => response.json());\n\n setConfig(json.body);\n\n debug.log(\"useConfig\", \"loaded fresh config\");\n\n window.sessionStorage.setItem(\n \"reactify-search:config\",\n JSON.stringify({\n expiresAt: new Date().getTime() + CACHE_EXPIRY,\n noCache: skipCache,\n config: json.body,\n })\n );\n })();\n }, [shopifyPermanentDomain, configId]);\n\n React.useEffect(() => {\n debug.log(\"useConfig\", \"config\", config);\n }, [config]);\n\n return {\n config,\n };\n};\n"]}
|
|
@@ -15,18 +15,7 @@ const useCuration = () => {
|
|
|
15
15
|
const normalisedHandleOrSearchTerm = handleOrSearchTerm
|
|
16
16
|
.toLowerCase()
|
|
17
17
|
.trim();
|
|
18
|
-
const globalCuration = config.curations.find((curation) =>
|
|
19
|
-
if (options.mode === "search") {
|
|
20
|
-
return curation.id === "global_search";
|
|
21
|
-
}
|
|
22
|
-
if (options.mode === "instant-search") {
|
|
23
|
-
return curation.id === "global_search";
|
|
24
|
-
}
|
|
25
|
-
if (options.mode === "collection") {
|
|
26
|
-
return curation.id === "global_collection";
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
});
|
|
18
|
+
const globalCuration = config.curations.find((curation) => curation.id === "global");
|
|
30
19
|
const curation = config.curations.find((curation) => {
|
|
31
20
|
var _a, _b;
|
|
32
21
|
const normalisedSearchTerm = (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase().trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCuration.js","sourceRoot":"","sources":["../../../src/hooks/useCuration.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAA+D;AAC/D,wCAAmC;AAE5B,MAAM,WAAW,GAAG,GAEzB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACvD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,iBAAS,GAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,kBAAkB,GACtB,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;QAExE,MAAM,4BAA4B,GAAG,kBAAkB;aACpD,WAAW,EAAE;aACb,IAAI,EAAE,CAAC;QAEV,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"useCuration.js","sourceRoot":"","sources":["../../../src/hooks/useCuration.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { ConfigCuration } from \"../types\";\nimport { useReactifySearchContext, useSearch } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const useCuration = (): {\n curation?: ConfigCuration;\n} => {\n const { options, config } = useReactifySearchContext();\n const { searchTerm } = useSearch();\n\n const curation = React.useMemo(() => {\n const handleOrSearchTerm =\n options.mode === \"collection\" ? options.collectionHandle : searchTerm;\n\n const normalisedHandleOrSearchTerm = handleOrSearchTerm\n .toLowerCase()\n .trim();\n\n const globalCuration = config.curations.find(\n (curation) => curation.id === \"global\"\n );\n\n const curation = config.curations.find((curation) => {\n const normalisedSearchTerm = curation.searchTerm?.toLowerCase().trim();\n const normalisedCollectionHandle = curation.collectionHandle\n ?.toLowerCase()\n .trim();\n\n if (\"instant-search\" === options.mode) {\n return (\n \"search\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedSearchTerm\n );\n }\n\n if (\"search\" === options.mode) {\n return (\n \"search\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedSearchTerm\n );\n }\n\n if (\"collection\" === options.mode) {\n return (\n \"collection\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedCollectionHandle\n );\n }\n\n return false;\n });\n\n const addGlobalBoosting = (curation: ConfigCuration) => {\n if (!globalCuration) {\n return curation;\n }\n\n const curationIsCollection = curation.type === \"collection\";\n if (!curationIsCollection) {\n return curation;\n }\n\n const curationHasRules =\n !!curation.boosting.groupings.length ||\n !!curation.boosting.sortings.length;\n\n if (curationHasRules) {\n return curation;\n }\n\n const curationWithGlobalBoosting = {\n ...curation,\n boosting: globalCuration.boosting,\n } as ConfigCuration;\n\n return curationWithGlobalBoosting;\n };\n\n return curation\n ? addGlobalBoosting(curation)\n : globalCuration\n ? globalCuration\n : undefined;\n }, [\n config,\n options.mode === \"collection\" ? options.collectionHandle : undefined,\n searchTerm,\n ]);\n\n React.useEffect(() => {\n debug.log(\"useCuration\", \"curation\", curation);\n }, [curation]);\n\n return {\n curation: curation,\n };\n};\n"]}
|
|
@@ -9,11 +9,6 @@ const hooks_1 = require("../hooks");
|
|
|
9
9
|
const utility_1 = require("../utility");
|
|
10
10
|
const DEFAULT_NUMERIC_SORT = ["0000", "000", "00", "0"];
|
|
11
11
|
const DEFAULT_ALPHABETICAL_SORT = [
|
|
12
|
-
"SINGLE",
|
|
13
|
-
"DOUBLE",
|
|
14
|
-
"QUEEN",
|
|
15
|
-
"KING",
|
|
16
|
-
"SUPER KING",
|
|
17
12
|
"XXXS",
|
|
18
13
|
"XXS",
|
|
19
14
|
"XS",
|
|
@@ -40,7 +35,6 @@ const DEFAULT_ALPHABETICAL_SORT = [
|
|
|
40
35
|
];
|
|
41
36
|
// converts reactivesearch props returned in filters to a cleaned up/filtered version
|
|
42
37
|
const useFilterListProps = (filter, reactivesearchFilterProps) => {
|
|
43
|
-
var _a;
|
|
44
38
|
const { track } = (0, hooks_1.useAnalytics)();
|
|
45
39
|
const handleChange = react_1.default.useCallback((key) => {
|
|
46
40
|
utility_1.debug.breadcrumb({
|
|
@@ -62,7 +56,6 @@ const useFilterListProps = (filter, reactivesearchFilterProps) => {
|
|
|
62
56
|
},
|
|
63
57
|
});
|
|
64
58
|
}, [filter]);
|
|
65
|
-
const customSortOrder = (_a = filter.customSortOrder) === null || _a === void 0 ? void 0 : _a.split(",").map((item) => item.trim().toUpperCase());
|
|
66
59
|
const filterListProps = react_1.default.useMemo(() => {
|
|
67
60
|
// remove excluded options, sort alphabeticaly, map checked boolean
|
|
68
61
|
const options = reactivesearchFilterProps.data
|
|
@@ -77,14 +70,8 @@ const useFilterListProps = (filter, reactivesearchFilterProps) => {
|
|
|
77
70
|
.sort((a, b) => DEFAULT_NUMERIC_SORT.indexOf(a.key) -
|
|
78
71
|
DEFAULT_NUMERIC_SORT.indexOf(b.key))
|
|
79
72
|
.sort((a, b) => new Intl.Collator("en", { numeric: true, sensitivity: "base" }).compare(a.key, b.key))
|
|
80
|
-
.sort((a, b) =>
|
|
81
|
-
|
|
82
|
-
return (DEFAULT_ALPHABETICAL_SORT.indexOf(a.key.toUpperCase()) -
|
|
83
|
-
DEFAULT_ALPHABETICAL_SORT.indexOf(b.key.toUpperCase()));
|
|
84
|
-
}
|
|
85
|
-
return ((customSortOrder === null || customSortOrder === void 0 ? void 0 : customSortOrder.indexOf(a.key.toUpperCase())) -
|
|
86
|
-
(customSortOrder === null || customSortOrder === void 0 ? void 0 : customSortOrder.indexOf(b.key.toUpperCase())));
|
|
87
|
-
})
|
|
73
|
+
.sort((a, b) => DEFAULT_ALPHABETICAL_SORT.indexOf(a.key) -
|
|
74
|
+
DEFAULT_ALPHABETICAL_SORT.indexOf(b.key))
|
|
88
75
|
.map((option) => (Object.assign(Object.assign({}, option), { label: filter.settingsUppercase ? option.key.toUpperCase() : option.key, checked: (typeof reactivesearchFilterProps.value === "object" &&
|
|
89
76
|
reactivesearchFilterProps.value[option.key]) ||
|
|
90
77
|
reactivesearchFilterProps.value === option.key })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterListProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterListProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAI1B,oCAAwC;AACxC,wCAAmC;AAEnC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACxD,MAAM,yBAAyB,GAAG;IAChC,
|
|
1
|
+
{"version":3,"file":"useFilterListProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterListProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { ConfigFilterOption } from \"../types/config\";\nimport { ReactivesearchFilterListProps } from \"../types/reactivesearch\";\nimport { useAnalytics } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nconst DEFAULT_NUMERIC_SORT = [\"0000\", \"000\", \"00\", \"0\"];\nconst DEFAULT_ALPHABETICAL_SORT = [\n \"XXXS\",\n \"XXS\",\n \"XS\",\n \"XS/S\",\n \"S\",\n \"SM\",\n \"S/M\",\n \"M\",\n \"ML\",\n \"M/L\",\n \"L\",\n \"LXL\",\n \"L/XL\",\n \"XL\",\n \"2L\",\n \"XXL\",\n \"3L\",\n \"XXXL\",\n \"4L\",\n \"5L\",\n \"6L\",\n \"OS\",\n \"ONESIZE\",\n];\n\n// converts reactivesearch props returned in filters to a cleaned up/filtered version\nexport const useFilterListProps = (\n filter: ConfigFilterOption,\n reactivesearchFilterProps: ReactivesearchFilterListProps\n): ReactivesearchFilterListProps & {\n filter: ConfigFilterOption;\n options: Array<{\n doc_count: number;\n key: string;\n label: string;\n checked: boolean;\n }>;\n hasSelected: boolean;\n totalSelected: number;\n} => {\n const { track } = useAnalytics();\n\n const handleChange = React.useCallback(\n (key: string) => {\n debug.breadcrumb({\n category: \"filter\",\n message: \"filter option changed\",\n data: {\n filter: filter.name,\n field: filter.field,\n value: key,\n },\n });\n\n debug.log(\"useFilterListProps\", \"handleChange[key]\", key);\n\n reactivesearchFilterProps.handleChange(key);\n track({\n eventName: \"filterChange\",\n payload: {\n name: filter.name,\n value: key,\n },\n });\n },\n [filter]\n );\n\n const filterListProps = React.useMemo(() => {\n // remove excluded options, sort alphabeticaly, map checked boolean\n const options = reactivesearchFilterProps.data\n .filter(({ key }) => {\n if (filter.valuesExclude?.includes(key)) return false;\n if (!!filter.valuesManual?.length && !filter.valuesManual.includes(key))\n return false;\n return true;\n })\n .sort(\n (a, b) =>\n DEFAULT_NUMERIC_SORT.indexOf(a.key) -\n DEFAULT_NUMERIC_SORT.indexOf(b.key)\n )\n .sort((a, b) =>\n new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" }).compare(\n a.key,\n b.key\n )\n )\n .sort(\n (a, b) =>\n DEFAULT_ALPHABETICAL_SORT.indexOf(a.key) -\n DEFAULT_ALPHABETICAL_SORT.indexOf(b.key)\n )\n .map((option) => ({\n ...option,\n label: filter.settingsUppercase ? option.key.toUpperCase() : option.key,\n checked:\n (typeof reactivesearchFilterProps.value === \"object\" &&\n reactivesearchFilterProps.value[option.key]) ||\n reactivesearchFilterProps.value === option.key,\n }));\n\n // work out if at least one option selected\n const hasSelected =\n (typeof reactivesearchFilterProps.value === \"object\" &&\n 0 < Object.keys(reactivesearchFilterProps.value).length) ||\n (typeof reactivesearchFilterProps.value !== \"object\" &&\n !!reactivesearchFilterProps.value);\n\n const totalSelected = options.filter((option) => option.checked).length;\n\n return {\n ...reactivesearchFilterProps,\n handleChange,\n filter,\n options,\n hasSelected,\n totalSelected,\n };\n }, [filter, handleChange, reactivesearchFilterProps]);\n\n return filterListProps;\n};\n"]}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { ConfigFilterOption } from "../types/config";
|
|
2
2
|
export declare const useFilterRangeProps: (filter: ConfigFilterOption) => {
|
|
3
|
+
filter: ConfigFilterOption;
|
|
4
|
+
options: Array<{
|
|
5
|
+
key: string;
|
|
6
|
+
label: string;
|
|
7
|
+
checked: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
value: string;
|
|
10
|
+
handleChange: (key: string) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare const useFilterRangeMultiProps: (filter: ConfigFilterOption) => {
|
|
3
13
|
filter: ConfigFilterOption;
|
|
4
14
|
options: Array<{
|
|
5
15
|
key: string;
|
|
@@ -8,5 +18,4 @@ export declare const useFilterRangeProps: (filter: ConfigFilterOption) => {
|
|
|
8
18
|
}>;
|
|
9
19
|
values: string[];
|
|
10
20
|
handleChange: (key: string) => void;
|
|
11
|
-
handleClear: () => void;
|
|
12
21
|
};
|
|
@@ -3,13 +3,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.useFilterRangeProps = void 0;
|
|
6
|
+
exports.useFilterRangeMultiProps = exports.useFilterRangeProps = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const hooks_1 = require("../hooks");
|
|
9
9
|
const utility_1 = require("../utility");
|
|
10
10
|
const useFilterRangeProps = (filter) => {
|
|
11
11
|
const { track } = (0, hooks_1.useAnalytics)();
|
|
12
|
-
const [
|
|
12
|
+
const [filterValue, setFilterValue] = react_1.default.useState("");
|
|
13
|
+
const handleChange = react_1.default.useCallback((key) => {
|
|
14
|
+
utility_1.debug.breadcrumb({
|
|
15
|
+
category: "filter",
|
|
16
|
+
message: "filter option changed",
|
|
17
|
+
data: {
|
|
18
|
+
filter: filter.name,
|
|
19
|
+
field: filter.field,
|
|
20
|
+
value: key,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
utility_1.debug.log("useFilterRangeProps", "handleChange[key]", key);
|
|
24
|
+
setFilterValue(key);
|
|
25
|
+
track({
|
|
26
|
+
eventName: "filterChange",
|
|
27
|
+
payload: {
|
|
28
|
+
name: filter.name,
|
|
29
|
+
value: key,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}, [filter]);
|
|
33
|
+
const filterRangeProps = react_1.default.useMemo(() => {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const options = (_b = (_a = filter.displayRangeOptions) === null || _a === void 0 ? void 0 : _a.map((option) => {
|
|
36
|
+
const [key] = option.split(":");
|
|
37
|
+
return {
|
|
38
|
+
key: key,
|
|
39
|
+
label: filter.settingsUppercase ? key.toUpperCase() : key,
|
|
40
|
+
checked: filterValue === key,
|
|
41
|
+
};
|
|
42
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
43
|
+
return {
|
|
44
|
+
handleChange,
|
|
45
|
+
filter,
|
|
46
|
+
value: filterValue,
|
|
47
|
+
options,
|
|
48
|
+
};
|
|
49
|
+
}, [filter, filterValue, handleChange]);
|
|
50
|
+
return filterRangeProps;
|
|
51
|
+
};
|
|
52
|
+
exports.useFilterRangeProps = useFilterRangeProps;
|
|
53
|
+
const useFilterRangeMultiProps = (filter) => {
|
|
54
|
+
const { track } = (0, hooks_1.useAnalytics)();
|
|
55
|
+
const [filterValues, setFilterValues] = react_1.default.useState([""]);
|
|
13
56
|
const handleChange = react_1.default.useCallback((key) => {
|
|
14
57
|
utility_1.debug.breadcrumb({
|
|
15
58
|
category: "filter",
|
|
@@ -21,15 +64,7 @@ const useFilterRangeProps = (filter) => {
|
|
|
21
64
|
},
|
|
22
65
|
});
|
|
23
66
|
utility_1.debug.log("useFilterRangeMultiProps", "handleChange[key]", key);
|
|
24
|
-
|
|
25
|
-
const selected = filterValues.find((item) => item === key)
|
|
26
|
-
? filterValues.filter((value) => value !== key)
|
|
27
|
-
: [...filterValues, key];
|
|
28
|
-
setFilterValues(selected);
|
|
29
|
-
}
|
|
30
|
-
if (filter.displayType === "single") {
|
|
31
|
-
setFilterValues([key]);
|
|
32
|
-
}
|
|
67
|
+
setFilterValues([...filterValues, key]);
|
|
33
68
|
track({
|
|
34
69
|
eventName: "filterChange",
|
|
35
70
|
payload: {
|
|
@@ -38,29 +73,6 @@ const useFilterRangeProps = (filter) => {
|
|
|
38
73
|
},
|
|
39
74
|
});
|
|
40
75
|
}, [filter, filterValues]);
|
|
41
|
-
const handleClear = react_1.default.useCallback(() => {
|
|
42
|
-
setFilterValues([]);
|
|
43
|
-
}, []);
|
|
44
|
-
react_1.default.useEffect(() => {
|
|
45
|
-
var _a;
|
|
46
|
-
try {
|
|
47
|
-
if (filter.displayView === "range") {
|
|
48
|
-
const url = new URL(window.location.href);
|
|
49
|
-
const value = JSON.parse((_a = url.searchParams.get(filter.handle)) !== null && _a !== void 0 ? _a : "[]");
|
|
50
|
-
setFilterValues(value);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
console.error(error);
|
|
55
|
-
}
|
|
56
|
-
}, []);
|
|
57
|
-
react_1.default.useEffect(() => {
|
|
58
|
-
const handler = (event) => {
|
|
59
|
-
setFilterValues(event.detail.value);
|
|
60
|
-
};
|
|
61
|
-
window.addEventListener(`@usereactify/search:filter:${filter.handle}:update`, handler);
|
|
62
|
-
return () => window.removeEventListener(`@usereactify/search:filter:${filter.handle}:update`, handler);
|
|
63
|
-
}, []);
|
|
64
76
|
const filterRangeProps = react_1.default.useMemo(() => {
|
|
65
77
|
var _a, _b;
|
|
66
78
|
const options = (_b = (_a = filter.displayRangeOptions) === null || _a === void 0 ? void 0 : _a.map((option) => {
|
|
@@ -73,7 +85,6 @@ const useFilterRangeProps = (filter) => {
|
|
|
73
85
|
})) !== null && _b !== void 0 ? _b : [];
|
|
74
86
|
return {
|
|
75
87
|
handleChange,
|
|
76
|
-
handleClear,
|
|
77
88
|
filter,
|
|
78
89
|
values: filterValues,
|
|
79
90
|
options,
|
|
@@ -81,5 +92,5 @@ const useFilterRangeProps = (filter) => {
|
|
|
81
92
|
}, [filter, filterValues, handleChange]);
|
|
82
93
|
return filterRangeProps;
|
|
83
94
|
};
|
|
84
|
-
exports.
|
|
95
|
+
exports.useFilterRangeMultiProps = useFilterRangeMultiProps;
|
|
85
96
|
//# sourceMappingURL=useFilterRangeProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterRangeProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterRangeProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAwC;AACxC,wCAAmC;AAE5B,MAAM,mBAAmB,GAAG,CACjC,MAA0B,
|
|
1
|
+
{"version":3,"file":"useFilterRangeProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterRangeProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { ConfigFilterOption } from \"../types/config\";\nimport { useAnalytics } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const useFilterRangeProps = (\n filter: ConfigFilterOption\n): {\n filter: ConfigFilterOption;\n options: Array<{\n key: string;\n label: string;\n checked: boolean;\n }>;\n value: string;\n handleChange: (key: string) => void;\n} => {\n const { track } = useAnalytics();\n const [filterValue, setFilterValue] = React.useState<string>(\"\");\n\n const handleChange = React.useCallback(\n (key: string) => {\n debug.breadcrumb({\n category: \"filter\",\n message: \"filter option changed\",\n data: {\n filter: filter.name,\n field: filter.field,\n value: key,\n },\n });\n\n debug.log(\"useFilterRangeProps\", \"handleChange[key]\", key);\n\n setFilterValue(key);\n\n track({\n eventName: \"filterChange\",\n payload: {\n name: filter.name,\n value: key,\n },\n });\n },\n [filter]\n );\n\n const filterRangeProps = React.useMemo(() => {\n const options =\n filter.displayRangeOptions?.map((option) => {\n const [key] = option.split(\":\");\n return {\n key: key,\n label: filter.settingsUppercase ? key.toUpperCase() : key,\n checked: filterValue === key,\n };\n }) ?? [];\n\n return {\n handleChange,\n filter,\n value: filterValue,\n options,\n };\n }, [filter, filterValue, handleChange]);\n\n return filterRangeProps;\n};\n\nexport const useFilterRangeMultiProps = (\n filter: ConfigFilterOption\n): {\n filter: ConfigFilterOption;\n options: Array<{\n key: string;\n label: string;\n checked: boolean;\n }>;\n values: string[];\n handleChange: (key: string) => void;\n} => {\n const { track } = useAnalytics();\n const [filterValues, setFilterValues] = React.useState<string[]>([\"\"]);\n\n const handleChange = React.useCallback(\n (key: string) => {\n debug.breadcrumb({\n category: \"filter\",\n message: \"filter option changed\",\n data: {\n filter: filter.name,\n field: filter.field,\n value: key,\n },\n });\n\n debug.log(\"useFilterRangeMultiProps\", \"handleChange[key]\", key);\n\n setFilterValues([...filterValues, key]);\n\n track({\n eventName: \"filterChange\",\n payload: {\n name: filter.name,\n value: key,\n },\n });\n },\n [filter, filterValues]\n );\n\n const filterRangeProps = React.useMemo(() => {\n const options =\n filter.displayRangeOptions?.map((option) => {\n const [key] = option.split(\":\");\n return {\n key: key,\n label: filter.settingsUppercase ? key.toUpperCase() : key,\n checked: filterValues.includes(key),\n };\n }) ?? [];\n\n return {\n handleChange,\n filter,\n values: filterValues,\n options,\n };\n }, [filter, filterValues, handleChange]);\n\n return filterRangeProps;\n};\n"]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ConfigFilterOption } from "../types/config";
|
|
2
|
-
import { useReactSliderProps } from "./react-slider/useReactSliderProps";
|
|
3
2
|
export declare const useFilterSliderProps: (filter: ConfigFilterOption) => {
|
|
4
3
|
filter: ConfigFilterOption;
|
|
5
|
-
value:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
value: {
|
|
5
|
+
start: number;
|
|
6
|
+
end: number;
|
|
7
|
+
};
|
|
8
|
+
handleChange: (value: {
|
|
9
|
+
start: number | string;
|
|
10
|
+
end: number | string;
|
|
11
|
+
}) => void;
|
|
10
12
|
};
|
|
@@ -7,15 +7,12 @@ exports.useFilterSliderProps = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const hooks_1 = require("../hooks");
|
|
9
9
|
const utility_1 = require("../utility");
|
|
10
|
-
const useReactSliderProps_1 = require("./react-slider/useReactSliderProps");
|
|
11
10
|
const useFilterSliderProps = (filter) => {
|
|
12
|
-
var _a;
|
|
13
11
|
const { track } = (0, hooks_1.useAnalytics)();
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
]);
|
|
12
|
+
const [filterValue, setFilterValue] = react_1.default.useState({
|
|
13
|
+
start: 0,
|
|
14
|
+
end: 0,
|
|
15
|
+
});
|
|
19
16
|
const handleChange = react_1.default.useCallback((value) => {
|
|
20
17
|
utility_1.debug.breadcrumb({
|
|
21
18
|
category: "filter",
|
|
@@ -27,43 +24,25 @@ const useFilterSliderProps = (filter) => {
|
|
|
27
24
|
},
|
|
28
25
|
});
|
|
29
26
|
utility_1.debug.log("useFilterSliderProps", "handleChange[value]", value);
|
|
30
|
-
setFilterValue(
|
|
27
|
+
setFilterValue({
|
|
28
|
+
start: parseInt(`${value.start}`),
|
|
29
|
+
end: parseInt(`${value.end}`),
|
|
30
|
+
});
|
|
31
31
|
track({
|
|
32
32
|
eventName: "filterChange",
|
|
33
33
|
payload: {
|
|
34
34
|
name: filter.name,
|
|
35
|
-
value: `${value
|
|
35
|
+
value: `${value.start}:${value.end}`,
|
|
36
36
|
},
|
|
37
37
|
});
|
|
38
38
|
}, [filter]);
|
|
39
|
-
const handleRange = react_1.default.useCallback((value) => {
|
|
40
|
-
setFilterRange([parseInt(`${value[0]}`), parseInt(`${value[1]}`)]);
|
|
41
|
-
}, [filter]);
|
|
42
|
-
react_1.default.useEffect(() => {
|
|
43
|
-
const handler = (event) => {
|
|
44
|
-
setFilterValue(event.detail.value);
|
|
45
|
-
};
|
|
46
|
-
window.addEventListener(`@usereactify/search:filter:${filter.handle}:update`, handler);
|
|
47
|
-
return () => window.removeEventListener(`@usereactify/search:filter:${filter.handle}:update`, handler);
|
|
48
|
-
}, []);
|
|
49
|
-
const reactSliderProps = (0, useReactSliderProps_1.useReactSliderProps)(filter, filterValue, filterRange, handleChange);
|
|
50
39
|
const filterSliderProps = react_1.default.useMemo(() => {
|
|
51
40
|
return {
|
|
52
41
|
handleChange,
|
|
53
|
-
handleRange,
|
|
54
42
|
filter,
|
|
55
43
|
value: filterValue,
|
|
56
|
-
range: filterRange,
|
|
57
|
-
reactSliderProps,
|
|
58
44
|
};
|
|
59
|
-
}, [
|
|
60
|
-
handleChange,
|
|
61
|
-
handleRange,
|
|
62
|
-
filter,
|
|
63
|
-
filterValue,
|
|
64
|
-
filterRange,
|
|
65
|
-
reactSliderProps,
|
|
66
|
-
]);
|
|
45
|
+
}, [filter, filterValue, handleChange]);
|
|
67
46
|
return filterSliderProps;
|
|
68
47
|
};
|
|
69
48
|
exports.useFilterSliderProps = useFilterSliderProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterSliderProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterSliderProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"useFilterSliderProps.js","sourceRoot":"","sources":["../../../src/hooks/useFilterSliderProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAwC;AACxC,wCAAmC;AAE5B,MAAM,oBAAoB,GAAG,CAClC,MAA0B,EAW1B,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IACjC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,CAGjD;QACD,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,eAAK,CAAC,WAAW,CACpC,CAAC,KAAuD,EAAE,EAAE;QAC1D,eAAK,CAAC,UAAU,CAAC;YACf,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAC;QAEH,eAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAEhE,cAAc,CAAC;YACb,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,GAAG,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEH,KAAK,CAAC;YACJ,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;aACrC;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,iBAAiB,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,OAAO;YACL,YAAY;YACZ,MAAM;YACN,KAAK,EAAE,WAAW;SACnB,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAExC,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AA7DW,QAAA,oBAAoB,wBA6D/B","sourcesContent":["import React from \"react\";\n\nimport { ConfigFilterOption } from \"../types/config\";\nimport { useAnalytics } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const useFilterSliderProps = (\n filter: ConfigFilterOption\n): {\n filter: ConfigFilterOption;\n value: {\n start: number;\n end: number;\n };\n handleChange: (value: {\n start: number | string;\n end: number | string;\n }) => void;\n} => {\n const { track } = useAnalytics();\n const [filterValue, setFilterValue] = React.useState<{\n start: number;\n end: number;\n }>({\n start: 0,\n end: 0,\n });\n\n const handleChange = React.useCallback(\n (value: { start: number | string; end: number | string }) => {\n debug.breadcrumb({\n category: \"filter\",\n message: \"filter option changed\",\n data: {\n filter: filter.name,\n field: filter.field,\n value: value,\n },\n });\n\n debug.log(\"useFilterSliderProps\", \"handleChange[value]\", value);\n\n setFilterValue({\n start: parseInt(`${value.start}`),\n end: parseInt(`${value.end}`),\n });\n\n track({\n eventName: \"filterChange\",\n payload: {\n name: filter.name,\n value: `${value.start}:${value.end}`,\n },\n });\n },\n [filter]\n );\n\n const filterSliderProps = React.useMemo(() => {\n return {\n handleChange,\n filter,\n value: filterValue,\n };\n }, [filter, filterValue, handleChange]);\n\n return filterSliderProps;\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactivesearchResultProps } from "../types";
|
|
2
|
+
export declare const usePaginationLoadMore: (input: ReactivesearchResultProps) => {
|
|
3
|
+
loading: boolean;
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
handleLoadMore: () => void;
|
|
6
|
+
resultStats: {
|
|
7
|
+
time: number;
|
|
8
|
+
hidden: number;
|
|
9
|
+
promoted: number;
|
|
10
|
+
currentPage: number;
|
|
11
|
+
numberOfPages: number;
|
|
12
|
+
numberOfResults?: number;
|
|
13
|
+
displayedResults: number;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.usePaginationLoadMore = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const hooks_1 = require("../hooks");
|
|
9
|
+
const utility_1 = require("../utility");
|
|
10
|
+
const usePaginationLoadMore = (input) => {
|
|
11
|
+
const analyticsHook = (0, hooks_1.useAnalytics)();
|
|
12
|
+
const { filterStack } = (0, hooks_1.useFilters)();
|
|
13
|
+
const hasMore = input.resultStats.displayedResults !== input.resultStats.numberOfResults;
|
|
14
|
+
const handleLoadMore = react_1.default.useCallback(() => {
|
|
15
|
+
utility_1.debug.log("usePaginationLoadMore", "handleLoadMore");
|
|
16
|
+
if (!hasMore) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
input.loadMore();
|
|
20
|
+
analyticsHook.track({
|
|
21
|
+
eventName: "paginationChange",
|
|
22
|
+
payload: {
|
|
23
|
+
page: Math.ceil(input.resultStats.displayedResults / ((filterStack === null || filterStack === void 0 ? void 0 : filterStack.pageSize) || 20)) + 1,
|
|
24
|
+
source: window.location.pathname.includes("/search")
|
|
25
|
+
? "search"
|
|
26
|
+
: "collection",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}, [input.loadMore, analyticsHook.track, input.resultStats, filterStack]);
|
|
30
|
+
return react_1.default.useMemo(() => ({
|
|
31
|
+
loading: input.loading,
|
|
32
|
+
hasMore,
|
|
33
|
+
handleLoadMore,
|
|
34
|
+
resultStats: input.resultStats,
|
|
35
|
+
}), [input.loading, hasMore, handleLoadMore, input.resultStats]);
|
|
36
|
+
};
|
|
37
|
+
exports.usePaginationLoadMore = usePaginationLoadMore;
|
|
38
|
+
//# sourceMappingURL=usePaginationLoadMore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePaginationLoadMore.js","sourceRoot":"","sources":["../../../src/hooks/usePaginationLoadMore.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAoD;AACpD,wCAAmC;AAE5B,MAAM,qBAAqB,GAAG,CACnC,KAAgC,EAchC,EAAE;IACF,MAAM,aAAa,GAAG,IAAA,oBAAY,GAAE,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAErC,MAAM,OAAO,GACX,KAAK,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC;IAE3E,MAAM,cAAc,GAAG,eAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,eAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,aAAa,CAAC,KAAK,CAAC;YAClB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE;gBACP,IAAI,EACF,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CACnE,GAAG,CAAC;gBACP,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAClD,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,YAAY;aACjB;SACF,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;QACP,cAAc;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,EACF,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,qBAAqB,yBAqDhC","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchResultProps } from \"../types\";\nimport { useAnalytics, useFilters } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const usePaginationLoadMore = (\n input: ReactivesearchResultProps\n): {\n loading: boolean;\n hasMore: boolean;\n handleLoadMore: () => void;\n resultStats: {\n time: number;\n hidden: number;\n promoted: number;\n currentPage: number;\n numberOfPages: number;\n numberOfResults?: number;\n displayedResults: number;\n };\n} => {\n const analyticsHook = useAnalytics();\n const { filterStack } = useFilters();\n\n const hasMore =\n input.resultStats.displayedResults !== input.resultStats.numberOfResults;\n\n const handleLoadMore = React.useCallback(() => {\n debug.log(\"usePaginationLoadMore\", \"handleLoadMore\");\n\n if (!hasMore) {\n return;\n }\n\n input.loadMore();\n analyticsHook.track({\n eventName: \"paginationChange\",\n payload: {\n page:\n Math.ceil(\n input.resultStats.displayedResults / (filterStack?.pageSize || 20)\n ) + 1,\n source: window.location.pathname.includes(\"/search\")\n ? \"search\"\n : \"collection\",\n },\n });\n }, [input.loadMore, analyticsHook.track, input.resultStats, filterStack]);\n\n return React.useMemo(\n () => ({\n loading: input.loading,\n hasMore,\n handleLoadMore,\n resultStats: input.resultStats,\n }),\n [input.loading, hasMore, handleLoadMore, input.resultStats]\n );\n};\n"]}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Config
|
|
2
|
+
import { Config } from "../types";
|
|
3
3
|
export declare type ReactifySearchMode = "search" | "collection" | "instant-search";
|
|
4
4
|
export declare const ReactifySearchContext: React.Context<{
|
|
5
5
|
config: Config;
|
|
6
6
|
options: {
|
|
7
|
-
clientId: string;
|
|
8
7
|
mode: ReactifySearchMode;
|
|
9
8
|
index: string;
|
|
10
9
|
shopifyPermanentDomain: string;
|
|
11
10
|
filtersHandle?: string | undefined;
|
|
12
|
-
credentials
|
|
13
|
-
|
|
11
|
+
credentials: {
|
|
12
|
+
username: string;
|
|
13
|
+
password: string;
|
|
14
|
+
endpoint: string;
|
|
15
|
+
};
|
|
14
16
|
onRedirect?: ((type: "redirect" | "search", url: string) => void) | undefined;
|
|
15
17
|
theme: Record<string, unknown>;
|
|
16
18
|
additionalComponentIds?: string[] | undefined;
|
|
@@ -34,23 +36,19 @@ export declare const ReactifySearchContext: React.Context<{
|
|
|
34
36
|
sortOption: string;
|
|
35
37
|
setSortOption: React.Dispatch<React.SetStateAction<string>>;
|
|
36
38
|
};
|
|
37
|
-
results: {
|
|
38
|
-
results: ReactivesearchResultProps["data"];
|
|
39
|
-
setResults: React.Dispatch<React.SetStateAction<ReactivesearchResultProps["data"]>>;
|
|
40
|
-
resultStats?: ReactivesearchResultProps["resultStats"];
|
|
41
|
-
setResultStats: React.Dispatch<React.SetStateAction<ReactivesearchResultProps["resultStats"] | undefined>>;
|
|
42
|
-
};
|
|
43
39
|
} | undefined>;
|
|
44
40
|
export declare const useReactifySearchContext: () => {
|
|
45
41
|
config: Config;
|
|
46
42
|
options: {
|
|
47
|
-
clientId: string;
|
|
48
43
|
mode: ReactifySearchMode;
|
|
49
44
|
index: string;
|
|
50
45
|
shopifyPermanentDomain: string;
|
|
51
46
|
filtersHandle?: string | undefined;
|
|
52
|
-
credentials
|
|
53
|
-
|
|
47
|
+
credentials: {
|
|
48
|
+
username: string;
|
|
49
|
+
password: string;
|
|
50
|
+
endpoint: string;
|
|
51
|
+
};
|
|
54
52
|
onRedirect?: ((type: "redirect" | "search", url: string) => void) | undefined;
|
|
55
53
|
theme: Record<string, unknown>;
|
|
56
54
|
additionalComponentIds?: string[] | undefined;
|
|
@@ -74,10 +72,4 @@ export declare const useReactifySearchContext: () => {
|
|
|
74
72
|
sortOption: string;
|
|
75
73
|
setSortOption: React.Dispatch<React.SetStateAction<string>>;
|
|
76
74
|
};
|
|
77
|
-
results: {
|
|
78
|
-
results: ReactivesearchResultProps["data"];
|
|
79
|
-
setResults: React.Dispatch<React.SetStateAction<ReactivesearchResultProps["data"]>>;
|
|
80
|
-
resultStats?: ReactivesearchResultProps["resultStats"];
|
|
81
|
-
setResultStats: React.Dispatch<React.SetStateAction<ReactivesearchResultProps["resultStats"] | undefined>>;
|
|
82
|
-
};
|
|
83
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReactifySearchContext.js","sourceRoot":"","sources":["../../../src/hooks/useReactifySearchContext.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAMb,QAAA,qBAAqB,GAAG,eAAK,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"useReactifySearchContext.js","sourceRoot":"","sources":["../../../src/hooks/useReactifySearchContext.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAMb,QAAA,qBAAqB,GAAG,eAAK,CAAC,aAAa,CA4CtD,SAAS,CAAC,CAAC;AAEN,MAAM,wBAAwB,GAAG,GAAG,EAAE,CAC3C,eAAK,CAAC,UAAU,CAAC,6BAAqB,CAAE,CAAC;AAD9B,QAAA,wBAAwB,4BACM","sourcesContent":["import React from \"react\";\n\nimport { Config } from \"../types\";\n\nexport type ReactifySearchMode = \"search\" | \"collection\" | \"instant-search\";\n\nexport const ReactifySearchContext = React.createContext<\n | {\n config: Config;\n options: {\n mode: ReactifySearchMode;\n index: string;\n shopifyPermanentDomain: string;\n filtersHandle?: string;\n credentials: {\n username: string;\n password: string;\n endpoint: string;\n };\n onRedirect?: (type: \"redirect\" | \"search\", url: string) => void;\n theme: Record<string, unknown>;\n additionalComponentIds?: Array<string>;\n includeFields?: Array<string>;\n excludeFields?: Array<string>;\n } & (\n | {\n mode: \"search\";\n }\n | {\n mode: \"collection\";\n collectionHandle: string;\n }\n | {\n mode: \"instant-search\";\n }\n );\n search: {\n searchTerm: string;\n setSearchTerm: React.Dispatch<React.SetStateAction<string>>;\n showInstantSearchResults: boolean;\n setShowInstantSearchResults: React.Dispatch<\n React.SetStateAction<boolean>\n >;\n };\n sortby: {\n sortOption: string;\n setSortOption: React.Dispatch<React.SetStateAction<string>>;\n };\n }\n | undefined\n>(undefined);\n\nexport const useReactifySearchContext = () =>\n React.useContext(ReactifySearchContext)!;\n"]}
|
|
@@ -28,15 +28,13 @@ const useSearch = () => {
|
|
|
28
28
|
}
|
|
29
29
|
search.setShowInstantSearchResults(false);
|
|
30
30
|
if (options.onRedirect) {
|
|
31
|
-
options.onRedirect(redirect ? "redirect" : "search", redirect
|
|
32
|
-
? redirect.url
|
|
33
|
-
: `/search?q=${encodeURIComponent(searchTerm)}`);
|
|
31
|
+
options.onRedirect(redirect ? "redirect" : "search", redirect ? redirect.url : `/search?q=${searchTerm}`);
|
|
34
32
|
}
|
|
35
33
|
else if (redirect) {
|
|
36
34
|
window.location.href = redirect.url;
|
|
37
35
|
}
|
|
38
36
|
else {
|
|
39
|
-
window.location.href = `/search?q=${
|
|
37
|
+
window.location.href = `/search?q=${searchTerm}`;
|
|
40
38
|
}
|
|
41
39
|
}, [search.searchTerm]);
|
|
42
40
|
const handleSetSearchTerm = react_1.default.useCallback((searchTerm = "") => {
|