@usereactify/search 5.0.0-beta.1 → 5.0.0-beta.12
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 +72 -0
- package/dist/package.json +70 -0
- package/dist/src/components/Example/ExampleFilterList.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterList.js +21 -0
- package/dist/src/components/Example/ExampleFilterList.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterRange.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterRange.js +22 -0
- package/dist/src/components/Example/ExampleFilterRange.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterSlider.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterSlider.js +21 -0
- package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterStack.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterStack.js +14 -0
- package/dist/src/components/Example/ExampleFilterStack.js.map +1 -0
- package/dist/src/components/Example/ExampleResultCardCallout.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultCardCallout.js +22 -0
- package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -0
- package/dist/src/components/Example/ExampleResultCardProduct.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultCardProduct.js +19 -0
- package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +12 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +14 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.js +27 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -0
- package/dist/src/components/Example/ExampleSortby.d.ts +4 -0
- package/dist/src/components/Example/ExampleSortby.js +13 -0
- package/dist/src/components/Example/ExampleSortby.js.map +1 -0
- package/dist/src/components/Example/index.d.ts +10 -0
- package/dist/src/components/Example/index.js +23 -0
- package/dist/src/components/Example/index.js.map +1 -0
- package/dist/src/components/Filter/Filter.d.ts +20 -0
- package/dist/src/components/Filter/Filter.js +78 -0
- package/dist/src/components/Filter/Filter.js.map +1 -0
- package/dist/src/components/Filter/FilterStack.d.ts +7 -0
- package/dist/src/components/Filter/FilterStack.js +17 -0
- package/dist/src/components/Filter/FilterStack.js.map +1 -0
- package/dist/src/components/Filter/index.d.ts +2 -0
- package/dist/src/components/Filter/index.js +15 -0
- package/dist/src/components/Filter/index.js.map +1 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.d.ts +42 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js +131 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js.map +1 -0
- package/dist/src/components/ReactifySearchBase/index.d.ts +1 -0
- package/dist/src/components/ReactifySearchBase/index.js +14 -0
- package/dist/src/components/ReactifySearchBase/index.js.map +1 -0
- package/dist/src/components/Result/ResultCardCallout.d.ts +12 -0
- package/dist/src/components/Result/ResultCardCallout.js +45 -0
- package/dist/src/components/Result/ResultCardCallout.js.map +1 -0
- package/dist/src/components/Result/ResultCardProduct.d.ts +13 -0
- package/dist/src/components/Result/ResultCardProduct.js +50 -0
- package/dist/src/components/Result/ResultCardProduct.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.js +17 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.js +17 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationNumbered.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationNumbered.js +20 -0
- package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -0
- package/dist/src/components/Result/ResultStack.d.ts +40 -0
- package/dist/src/components/Result/ResultStack.js +108 -0
- package/dist/src/components/Result/ResultStack.js.map +1 -0
- package/dist/src/components/Result/ResultStateProvider.d.ts +6 -0
- package/dist/src/components/Result/ResultStateProvider.js +14 -0
- package/dist/src/components/Result/ResultStateProvider.js.map +1 -0
- package/dist/src/components/Result/index.d.ts +7 -0
- package/dist/src/components/Result/index.js +20 -0
- package/dist/src/components/Result/index.js.map +1 -0
- package/dist/src/components/Search/SearchInput.d.ts +8 -0
- package/dist/src/components/Search/SearchInput.js +18 -0
- package/dist/src/components/Search/SearchInput.js.map +1 -0
- package/dist/src/components/Search/index.d.ts +1 -0
- package/dist/src/components/Search/index.js +14 -0
- package/dist/src/components/Search/index.js.map +1 -0
- package/dist/src/components/Sensor/SensorCollection.d.ts +2 -0
- package/dist/src/components/Sensor/SensorCollection.js +45 -0
- package/dist/src/components/Sensor/SensorCollection.js.map +1 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +2 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.js +53 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -0
- package/dist/src/components/Sensor/SensorPublished.d.ts +2 -0
- package/dist/src/components/Sensor/SensorPublished.js +17 -0
- package/dist/src/components/Sensor/SensorPublished.js.map +1 -0
- package/dist/src/components/Sensor/SensorSearch.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSearch.js +83 -0
- package/dist/src/components/Sensor/SensorSearch.js.map +1 -0
- package/dist/src/components/Sensor/SensorSort.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSort.js +187 -0
- package/dist/src/components/Sensor/SensorSort.js.map +1 -0
- 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/SensorStack.d.ts +3 -0
- package/dist/src/components/Sensor/SensorStack.js +32 -0
- package/dist/src/components/Sensor/SensorStack.js.map +1 -0
- package/dist/src/components/Sensor/index.d.ts +8 -0
- package/dist/src/components/Sensor/index.js +30 -0
- package/dist/src/components/Sensor/index.js.map +1 -0
- package/dist/src/components/Sortby/Sortby.d.ts +7 -0
- package/dist/src/components/Sortby/Sortby.js +17 -0
- package/dist/src/components/Sortby/Sortby.js.map +1 -0
- package/dist/src/components/Sortby/index.d.ts +1 -0
- package/dist/src/components/Sortby/index.js +14 -0
- package/dist/src/components/Sortby/index.js.map +1 -0
- package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +2 -0
- package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +15 -0
- package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -0
- package/dist/src/components/Utility/index.d.ts +1 -0
- package/dist/src/components/Utility/index.js +14 -0
- package/dist/src/components/Utility/index.js.map +1 -0
- package/dist/src/components/index.d.ts +8 -0
- package/dist/src/components/index.js +21 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/hooks/index.d.ts +15 -0
- package/dist/src/hooks/index.js +28 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/index.d.ts +8 -0
- package/dist/src/hooks/reactivesearch/index.js +21 -0
- package/dist/src/hooks/reactivesearch/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +7 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +45 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +26 -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 +73 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +23 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +70 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +23 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.d.ts +67 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +107 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.d.ts +68 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +23 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.d.ts +3 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +26 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.d.ts +5 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.js +33 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.js.map +1 -0
- package/dist/src/hooks/useAnalytics.d.ts +95 -0
- package/dist/src/hooks/useAnalytics.js +113 -0
- package/dist/src/hooks/useAnalytics.js.map +1 -0
- package/dist/src/hooks/useConfig.d.ts +4 -0
- package/dist/src/hooks/useConfig.js +83 -0
- package/dist/src/hooks/useConfig.js.map +1 -0
- package/dist/src/hooks/useCuration.d.ts +2 -0
- package/dist/src/hooks/useCuration.js +66 -0
- package/dist/src/hooks/useCuration.js.map +1 -0
- package/dist/src/hooks/useDebugger.d.ts +1 -0
- package/dist/src/hooks/useDebugger.js +15 -0
- package/dist/src/hooks/useDebugger.js.map +1 -0
- package/dist/src/hooks/useFilterCollapsedState.d.ts +8 -0
- package/dist/src/hooks/useFilterCollapsedState.js +28 -0
- package/dist/src/hooks/useFilterCollapsedState.js.map +1 -0
- package/dist/src/hooks/useFilterListProps.d.ts +12 -0
- package/dist/src/hooks/useFilterListProps.js +63 -0
- package/dist/src/hooks/useFilterListProps.js.map +1 -0
- package/dist/src/hooks/useFilterStack.d.ts +4 -0
- package/dist/src/hooks/useFilterStack.js +52 -0
- package/dist/src/hooks/useFilterStack.js.map +1 -0
- package/dist/src/hooks/useFilters.d.ts +4 -0
- package/dist/src/hooks/useFilters.js +27 -0
- package/dist/src/hooks/useFilters.js.map +1 -0
- package/dist/src/hooks/usePagination.d.ts +14 -0
- package/dist/src/hooks/usePagination.js +109 -0
- package/dist/src/hooks/usePagination.js.map +1 -0
- 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/useProductPrice.d.ts +10 -0
- package/dist/src/hooks/useProductPrice.js +64 -0
- package/dist/src/hooks/useProductPrice.js.map +1 -0
- package/dist/src/hooks/useReactifySearchContext.d.ts +78 -0
- package/dist/src/hooks/useReactifySearchContext.js +11 -0
- package/dist/src/hooks/useReactifySearchContext.js.map +1 -0
- package/dist/src/hooks/useSearch.d.ts +8 -0
- package/dist/src/hooks/useSearch.js +50 -0
- package/dist/src/hooks/useSearch.js.map +1 -0
- package/dist/src/hooks/useSortby.d.ts +6 -0
- package/dist/src/hooks/useSortby.js +58 -0
- package/dist/src/hooks/useSortby.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +61 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/config.d.ts +26 -0
- package/dist/src/types/config.js +3 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/types/elastic.d.ts +209 -0
- package/dist/src/types/elastic.js +19 -0
- package/dist/src/types/elastic.js.map +1 -0
- package/dist/src/types/firestore.d.ts +280 -0
- package/dist/src/types/firestore.js +19 -0
- package/dist/src/types/firestore.js.map +1 -0
- package/dist/src/types/graphql.d.ts +26545 -0
- package/dist/src/types/graphql.js +4688 -0
- package/dist/src/types/graphql.js.map +1 -0
- package/dist/src/types/index.d.ts +3 -0
- package/dist/src/types/index.js +16 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/reactivesearch.d.ts +73 -0
- package/dist/src/types/reactivesearch.js +3 -0
- package/dist/src/types/reactivesearch.js.map +1 -0
- package/dist/src/types/shopify.d.ts +21 -0
- package/dist/src/types/shopify.js +28 -0
- package/dist/src/types/shopify.js.map +1 -0
- package/dist/src/utility/debug.d.ts +12 -0
- package/dist/src/utility/debug.js +43 -0
- package/dist/src/utility/debug.js.map +1 -0
- package/dist/src/utility/index.d.ts +1 -0
- package/dist/src/utility/index.js +14 -0
- package/dist/src/utility/index.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const useReactiveDataSearchProps: (options: {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
debounce?: number | undefined;
|
|
4
|
+
placeholder?: string | undefined;
|
|
5
|
+
inputClassName?: string | undefined;
|
|
6
|
+
}) => {
|
|
7
|
+
debounce?: number | undefined;
|
|
8
|
+
placeholder: string;
|
|
9
|
+
inputClassName?: string | undefined;
|
|
10
|
+
type: string;
|
|
11
|
+
showIcon: boolean;
|
|
12
|
+
fuzziness: 0 | 1 | 2 | "AUTO";
|
|
13
|
+
queryFormat: "and" | "or";
|
|
14
|
+
autosuggest: boolean;
|
|
15
|
+
value: string;
|
|
16
|
+
onKeyUp: (e: any) => void;
|
|
17
|
+
componentId: string;
|
|
18
|
+
dataField: string[];
|
|
19
|
+
fieldWeights: number[];
|
|
20
|
+
onChange: (value: string, triggerQuery: () => {}) => void;
|
|
21
|
+
onBlur: () => void;
|
|
22
|
+
onFocus: () => void;
|
|
23
|
+
innerClass: {
|
|
24
|
+
input: string | undefined;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
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.useReactiveDataSearchProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const ahooks_1 = require("ahooks");
|
|
9
|
+
const hooks_1 = require("../../hooks");
|
|
10
|
+
// default field for when zero search fields have been configured in Reactify
|
|
11
|
+
const defaultSearchField = {
|
|
12
|
+
id: "title",
|
|
13
|
+
field: "title",
|
|
14
|
+
importance: 0,
|
|
15
|
+
searchType: "instant_search",
|
|
16
|
+
};
|
|
17
|
+
const useReactiveDataSearchProps = (options) => {
|
|
18
|
+
var _a;
|
|
19
|
+
const { config } = (0, hooks_1.useReactifySearchContext)();
|
|
20
|
+
const { searchQuery, submitSearch, setSearchQuery, setShowInstantSearchResults, } = (0, hooks_1.useSearch)();
|
|
21
|
+
const searchFields = react_1.default.useMemo(() => 0 < config.fields.length
|
|
22
|
+
? config.fields.filter((field) => ["always_search", "instant_search"].includes(field.searchType))
|
|
23
|
+
: [defaultSearchField], []);
|
|
24
|
+
const handleKeyPress = react_1.default.useCallback((e) => {
|
|
25
|
+
if ("Enter" !== e.key)
|
|
26
|
+
return;
|
|
27
|
+
submitSearch();
|
|
28
|
+
}, [submitSearch]);
|
|
29
|
+
const { track } = (0, hooks_1.useAnalytics)();
|
|
30
|
+
const trackQuery = react_1.default.useCallback(() => {
|
|
31
|
+
if (!searchQuery || (searchQuery && searchQuery.length < 3))
|
|
32
|
+
return;
|
|
33
|
+
track({ eventName: "search", payload: { searchTerm: searchQuery } });
|
|
34
|
+
}, [searchQuery, track]);
|
|
35
|
+
const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } = (0, ahooks_1.useDebounceFn)((triggerQuery) => {
|
|
36
|
+
triggerQuery();
|
|
37
|
+
trackQuery();
|
|
38
|
+
}, {
|
|
39
|
+
wait: (_a = options.debounce) !== null && _a !== void 0 ? _a : 300,
|
|
40
|
+
});
|
|
41
|
+
const reactiveDataSearchProps = react_1.default.useMemo(() => {
|
|
42
|
+
var _a;
|
|
43
|
+
return (Object.assign({ type: "search", showIcon: false, fuzziness: 1, queryFormat: "and", autosuggest: false, value: searchQuery !== null && searchQuery !== void 0 ? searchQuery : "", onKeyUp: handleKeyPress, componentId: "SearchInput", placeholder: (_a = options.placeholder) !== null && _a !== void 0 ? _a : "Search for a product...", dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), onChange: (value, triggerQuery) => {
|
|
44
|
+
setSearchQuery(value);
|
|
45
|
+
if (!!value) {
|
|
46
|
+
runDebouncedTriggerQuery(triggerQuery);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
cancelDebouncedTriggerQuery();
|
|
50
|
+
}
|
|
51
|
+
}, onBlur: () => {
|
|
52
|
+
// setTimeout ensures that results are still clickable before close
|
|
53
|
+
setTimeout(() => setShowInstantSearchResults(false), 300);
|
|
54
|
+
}, onFocus: () => {
|
|
55
|
+
setShowInstantSearchResults(true);
|
|
56
|
+
}, innerClass: {
|
|
57
|
+
input: options.inputClassName,
|
|
58
|
+
} }, options));
|
|
59
|
+
}, [
|
|
60
|
+
searchQuery,
|
|
61
|
+
handleKeyPress,
|
|
62
|
+
options.placeholder,
|
|
63
|
+
searchFields,
|
|
64
|
+
setSearchQuery,
|
|
65
|
+
runDebouncedTriggerQuery,
|
|
66
|
+
cancelDebouncedTriggerQuery,
|
|
67
|
+
]);
|
|
68
|
+
return reactiveDataSearchProps;
|
|
69
|
+
};
|
|
70
|
+
exports.useReactiveDataSearchProps = useReactiveDataSearchProps;
|
|
71
|
+
//# sourceMappingURL=useReactiveDataSearchProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveDataSearchProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveDataSearchProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\n\nimport type { ConfigField } from \"../../types/config\";\n\nimport { useReactifySearchContext, useSearch, useAnalytics } from \"../../hooks\";\n\n// default field for when zero search fields have been configured in Reactify\nconst defaultSearchField: ConfigField = {\n id: \"title\",\n field: \"title\",\n importance: 0,\n searchType: \"instant_search\",\n};\n\nexport const useReactiveDataSearchProps = (options: {\n [key: string]: any;\n debounce?: number;\n placeholder?: string;\n inputClassName?: string;\n}) => {\n const { config } = useReactifySearchContext();\n const {\n searchQuery,\n submitSearch,\n setSearchQuery,\n setShowInstantSearchResults,\n } = useSearch();\n\n const searchFields = React.useMemo(\n () =>\n 0 < config.fields.length\n ? config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n )\n : [defaultSearchField],\n []\n );\n\n const handleKeyPress = React.useCallback(\n (e) => {\n if (\"Enter\" !== e.key) return;\n submitSearch();\n },\n [submitSearch]\n );\n\n const { track } = useAnalytics();\n\n const trackQuery = React.useCallback(() => {\n if (!searchQuery || (searchQuery && searchQuery.length < 3)) return;\n track({ eventName: \"search\", payload: { searchTerm: searchQuery } });\n }, [searchQuery, track]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (triggerQuery: () => void) => {\n triggerQuery();\n trackQuery();\n },\n {\n wait: options.debounce ?? 300,\n }\n );\n\n const reactiveDataSearchProps = React.useMemo(\n () => ({\n type: \"search\",\n showIcon: false,\n fuzziness: 1 as 0 | 1 | 2 | \"AUTO\",\n queryFormat: \"and\" as \"and\" | \"or\",\n autosuggest: false,\n value: searchQuery ?? \"\",\n onKeyUp: handleKeyPress,\n componentId: \"SearchInput\",\n placeholder: options.placeholder ?? \"Search for a product...\",\n dataField: searchFields.map((field) => field.field),\n fieldWeights: searchFields.map((field) => field.importance),\n onChange: (value: string, triggerQuery: () => {}) => {\n setSearchQuery(value);\n if (!!value) {\n runDebouncedTriggerQuery(triggerQuery);\n } else {\n cancelDebouncedTriggerQuery();\n }\n },\n onBlur: () => {\n // setTimeout ensures that results are still clickable before close\n setTimeout(() => setShowInstantSearchResults(false), 300);\n },\n onFocus: () => {\n setShowInstantSearchResults(true);\n },\n innerClass: {\n input: options.inputClassName,\n },\n ...options,\n }),\n [\n searchQuery,\n handleKeyPress,\n options.placeholder,\n searchFields,\n setSearchQuery,\n runDebouncedTriggerQuery,\n cancelDebouncedTriggerQuery,\n ]\n );\n\n return reactiveDataSearchProps;\n};\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with @appbaseio/reactivesearch SingleList and MultiList components
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterListProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
size: number | undefined;
|
|
7
|
+
showFilter: boolean;
|
|
8
|
+
showLoadMore: boolean;
|
|
9
|
+
showSearch: boolean;
|
|
10
|
+
showRadio: boolean;
|
|
11
|
+
showCheckbox: boolean;
|
|
12
|
+
nestedField: string | undefined;
|
|
13
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
14
|
+
query?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
query: {
|
|
17
|
+
nested: {
|
|
18
|
+
path: string;
|
|
19
|
+
query: {
|
|
20
|
+
bool: {
|
|
21
|
+
must: ({
|
|
22
|
+
match: {
|
|
23
|
+
"variants.available": string;
|
|
24
|
+
};
|
|
25
|
+
terms?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
terms: {
|
|
28
|
+
[x: string]: string[];
|
|
29
|
+
};
|
|
30
|
+
match?: undefined;
|
|
31
|
+
})[];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
}) | undefined;
|
|
37
|
+
defaultQuery: (() => {
|
|
38
|
+
aggs: {
|
|
39
|
+
reactivesearch_nested: {
|
|
40
|
+
nested: {
|
|
41
|
+
path: string;
|
|
42
|
+
};
|
|
43
|
+
aggs: {
|
|
44
|
+
reactify_nested_outer: {
|
|
45
|
+
filter: {
|
|
46
|
+
match: {
|
|
47
|
+
"variants.available": string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
aggs: {
|
|
51
|
+
[x: string]: {
|
|
52
|
+
terms: {
|
|
53
|
+
field: string;
|
|
54
|
+
size: number;
|
|
55
|
+
order: {
|
|
56
|
+
_count: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
}) | undefined;
|
|
66
|
+
URLParams: boolean;
|
|
67
|
+
componentId: string;
|
|
68
|
+
dataField: string;
|
|
69
|
+
filterLabel: string;
|
|
70
|
+
react: {
|
|
71
|
+
and: string[];
|
|
72
|
+
};
|
|
73
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
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.useReactiveFilterListProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveFilterSharedProps_1 = require("./useReactiveFilterSharedProps");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
/**
|
|
11
|
+
* For use with @appbaseio/reactivesearch SingleList and MultiList components
|
|
12
|
+
*/
|
|
13
|
+
const useReactiveFilterListProps = (filter) => {
|
|
14
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
15
|
+
const reactiveFilterSharedProps = (0, useReactiveFilterSharedProps_1.useReactiveFilterSharedProps)(filter);
|
|
16
|
+
const reactiveFilterListProps = react_1.default.useMemo(() => {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
return (Object.assign(Object.assign({}, reactiveFilterSharedProps), { size: parseInt(filter.displaySize) || undefined, showFilter: (_a = filter.settingsShowFilter) !== null && _a !== void 0 ? _a : true, showLoadMore: (_b = filter.settingsShowMore) !== null && _b !== void 0 ? _b : false, showSearch: (_c = filter.settingsShowSearch) !== null && _c !== void 0 ? _c : false, showRadio: false, showCheckbox: false }));
|
|
19
|
+
}, [filter, reactiveReactProp]);
|
|
20
|
+
return reactiveFilterListProps;
|
|
21
|
+
};
|
|
22
|
+
exports.useReactiveFilterListProps = useReactiveFilterListProps;
|
|
23
|
+
//# sourceMappingURL=useReactiveFilterListProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterListProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterListProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,iFAA8E;AAE9E,iEAA8D;AAE9D;;GAEG;AACI,MAAM,0BAA0B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACvE,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAA,2DAA4B,EAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,uBAAuB,GAAG,eAAK,CAAC,OAAO,CAC3C,GAAG,EAAE;;QAAC,OAAA,iCACD,yBAAyB,KAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,SAAS,EAC/C,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,IAAI,EAC7C,YAAY,EAAE,MAAA,MAAM,CAAC,gBAAgB,mCAAI,KAAK,EAC9C,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,KAAK,EAC9C,SAAS,EAAE,KAAK,EAChB,YAAY,EAAE,KAAK,IACnB,CAAA;KAAA,EACF,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;IAEF,OAAO,uBAAuB,CAAC;AACjC,CAAC,CAAC;AAlBW,QAAA,0BAA0B,8BAkBrC","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\nimport { useReactiveFilterSharedProps } from \"./useReactiveFilterSharedProps\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with @appbaseio/reactivesearch SingleList and MultiList components\n */\nexport const useReactiveFilterListProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n const reactiveFilterSharedProps = useReactiveFilterSharedProps(filter);\n\n const reactiveFilterListProps = React.useMemo(\n () => ({\n ...reactiveFilterSharedProps,\n size: parseInt(filter.displaySize) || undefined,\n showFilter: filter.settingsShowFilter ?? true,\n showLoadMore: filter.settingsShowMore ?? false,\n showSearch: filter.settingsShowSearch ?? false,\n showRadio: false,\n showCheckbox: false,\n }),\n [filter, reactiveReactProp]\n );\n\n return reactiveFilterListProps;\n};\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with @appbaseio/reactivesearch SingleRange and MultiRange components
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterRangeProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
showFilter: boolean;
|
|
7
|
+
showRadio: boolean;
|
|
8
|
+
showCheckbox: boolean;
|
|
9
|
+
nestedField: string | undefined;
|
|
10
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
11
|
+
query?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
query: {
|
|
14
|
+
nested: {
|
|
15
|
+
path: string;
|
|
16
|
+
query: {
|
|
17
|
+
bool: {
|
|
18
|
+
must: ({
|
|
19
|
+
match: {
|
|
20
|
+
"variants.available": string;
|
|
21
|
+
};
|
|
22
|
+
terms?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
terms: {
|
|
25
|
+
[x: string]: string[];
|
|
26
|
+
};
|
|
27
|
+
match?: undefined;
|
|
28
|
+
})[];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}) | undefined;
|
|
34
|
+
defaultQuery: (() => {
|
|
35
|
+
aggs: {
|
|
36
|
+
reactivesearch_nested: {
|
|
37
|
+
nested: {
|
|
38
|
+
path: string;
|
|
39
|
+
};
|
|
40
|
+
aggs: {
|
|
41
|
+
reactify_nested_outer: {
|
|
42
|
+
filter: {
|
|
43
|
+
match: {
|
|
44
|
+
"variants.available": string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
aggs: {
|
|
48
|
+
[x: string]: {
|
|
49
|
+
terms: {
|
|
50
|
+
field: string;
|
|
51
|
+
size: number;
|
|
52
|
+
order: {
|
|
53
|
+
_count: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
}) | undefined;
|
|
63
|
+
URLParams: boolean;
|
|
64
|
+
componentId: string;
|
|
65
|
+
dataField: string;
|
|
66
|
+
filterLabel: string;
|
|
67
|
+
react: {
|
|
68
|
+
and: string[];
|
|
69
|
+
};
|
|
70
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
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.useReactiveFilterRangeProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveFilterSharedProps_1 = require("./useReactiveFilterSharedProps");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
/**
|
|
11
|
+
* For use with @appbaseio/reactivesearch SingleRange and MultiRange components
|
|
12
|
+
*/
|
|
13
|
+
const useReactiveFilterRangeProps = (filter) => {
|
|
14
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
15
|
+
const reactiveFilterSharedProps = (0, useReactiveFilterSharedProps_1.useReactiveFilterSharedProps)(filter);
|
|
16
|
+
const reactiveFilterRangeProps = react_1.default.useMemo(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
return (Object.assign(Object.assign({}, reactiveFilterSharedProps), { showFilter: (_a = filter.settingsShowFilter) !== null && _a !== void 0 ? _a : true, showRadio: false, showCheckbox: false }));
|
|
19
|
+
}, [filter, reactiveReactProp]);
|
|
20
|
+
return reactiveFilterRangeProps;
|
|
21
|
+
};
|
|
22
|
+
exports.useReactiveFilterRangeProps = useReactiveFilterRangeProps;
|
|
23
|
+
//# sourceMappingURL=useReactiveFilterRangeProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterRangeProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterRangeProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,iFAA8E;AAE9E,iEAA8D;AAE9D;;GAEG;AACI,MAAM,2BAA2B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACxE,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAA,2DAA4B,EAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,wBAAwB,GAAG,eAAK,CAAC,OAAO,CAC5C,GAAG,EAAE;;QAAC,OAAA,iCACD,yBAAyB,KAC5B,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,IAAI,EAC7C,SAAS,EAAE,KAAK,EAChB,YAAY,EAAE,KAAK,IACnB,CAAA;KAAA,EACF,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;IAEF,OAAO,wBAAwB,CAAC;AAClC,CAAC,CAAC;AAfW,QAAA,2BAA2B,+BAetC","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\nimport { useReactiveFilterSharedProps } from \"./useReactiveFilterSharedProps\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with @appbaseio/reactivesearch SingleRange and MultiRange components\n */\nexport const useReactiveFilterRangeProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n const reactiveFilterSharedProps = useReactiveFilterSharedProps(filter);\n\n const reactiveFilterRangeProps = React.useMemo(\n () => ({\n ...reactiveFilterSharedProps,\n showFilter: filter.settingsShowFilter ?? true,\n showRadio: false,\n showCheckbox: false,\n }),\n [filter, reactiveReactProp]\n );\n\n return reactiveFilterRangeProps;\n};\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with all @appbaseio/reactivesearch filter components
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterSharedProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
nestedField: string | undefined;
|
|
7
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
8
|
+
query?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
query: {
|
|
11
|
+
nested: {
|
|
12
|
+
path: string;
|
|
13
|
+
query: {
|
|
14
|
+
bool: {
|
|
15
|
+
must: ({
|
|
16
|
+
match: {
|
|
17
|
+
"variants.available": string;
|
|
18
|
+
};
|
|
19
|
+
terms?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
terms: {
|
|
22
|
+
[x: string]: string[];
|
|
23
|
+
};
|
|
24
|
+
match?: undefined;
|
|
25
|
+
})[];
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}) | undefined;
|
|
31
|
+
defaultQuery: (() => {
|
|
32
|
+
aggs: {
|
|
33
|
+
reactivesearch_nested: {
|
|
34
|
+
nested: {
|
|
35
|
+
path: string;
|
|
36
|
+
};
|
|
37
|
+
aggs: {
|
|
38
|
+
reactify_nested_outer: {
|
|
39
|
+
filter: {
|
|
40
|
+
match: {
|
|
41
|
+
"variants.available": string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
aggs: {
|
|
45
|
+
[x: string]: {
|
|
46
|
+
terms: {
|
|
47
|
+
field: string;
|
|
48
|
+
size: number;
|
|
49
|
+
order: {
|
|
50
|
+
_count: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}) | undefined;
|
|
60
|
+
URLParams: boolean;
|
|
61
|
+
componentId: string;
|
|
62
|
+
dataField: string;
|
|
63
|
+
filterLabel: string;
|
|
64
|
+
react: {
|
|
65
|
+
and: string[];
|
|
66
|
+
};
|
|
67
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
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.useReactiveFilterSharedProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
9
|
+
/**
|
|
10
|
+
* For use with all @appbaseio/reactivesearch filter components
|
|
11
|
+
*/
|
|
12
|
+
const useReactiveFilterSharedProps = (filter) => {
|
|
13
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
14
|
+
const nestedField = react_1.default.useMemo(() => {
|
|
15
|
+
const nestedFields = ["variants"];
|
|
16
|
+
const topField = filter.field.split(".")[0];
|
|
17
|
+
if (nestedFields.includes(topField))
|
|
18
|
+
return topField;
|
|
19
|
+
return undefined;
|
|
20
|
+
}, [filter]);
|
|
21
|
+
// define a custom query for when settingsHideUnavailable is enabled and the target field is inside variants
|
|
22
|
+
// customQuery defines how this filter affects *other* components like the results component
|
|
23
|
+
const customQuery = react_1.default.useMemo(() => {
|
|
24
|
+
if (!filter.settingsHideUnavailable ||
|
|
25
|
+
!filter.field.startsWith("variants."))
|
|
26
|
+
return undefined;
|
|
27
|
+
return (value) => {
|
|
28
|
+
if (!value)
|
|
29
|
+
return {};
|
|
30
|
+
// reactivesearch sometimes returns string, sometimes string[]
|
|
31
|
+
const valueArray = "string" === typeof value ? [value] : value;
|
|
32
|
+
if (0 === valueArray.length)
|
|
33
|
+
return {};
|
|
34
|
+
return {
|
|
35
|
+
query: {
|
|
36
|
+
nested: {
|
|
37
|
+
path: "variants",
|
|
38
|
+
query: {
|
|
39
|
+
bool: {
|
|
40
|
+
must: [
|
|
41
|
+
{
|
|
42
|
+
match: {
|
|
43
|
+
"variants.available": "true",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
terms: {
|
|
48
|
+
[filter.field]: valueArray,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}, [filter]);
|
|
59
|
+
// define a default query for when settingsHideUnavailable is enabled and the target field is inside variants
|
|
60
|
+
// defaultQuery defines how this filter affects itself i.e. the options displayed
|
|
61
|
+
const defaultQuery = react_1.default.useMemo(() => {
|
|
62
|
+
if (!filter.settingsHideUnavailable ||
|
|
63
|
+
!filter.field.startsWith("variants."))
|
|
64
|
+
return undefined;
|
|
65
|
+
// override the aggregation query to filter the results by the variants.available attribute
|
|
66
|
+
return () => {
|
|
67
|
+
return {
|
|
68
|
+
aggs: {
|
|
69
|
+
reactivesearch_nested: {
|
|
70
|
+
nested: { path: "variants" },
|
|
71
|
+
aggs: {
|
|
72
|
+
reactify_nested_outer: {
|
|
73
|
+
filter: {
|
|
74
|
+
match: {
|
|
75
|
+
"variants.available": "true",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
aggs: {
|
|
79
|
+
[filter.field]: {
|
|
80
|
+
terms: {
|
|
81
|
+
field: filter.field,
|
|
82
|
+
size: 100,
|
|
83
|
+
order: { _count: "desc" },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
}, [filter]);
|
|
94
|
+
const reactiveFilterSharedProps = react_1.default.useMemo(() => ({
|
|
95
|
+
nestedField,
|
|
96
|
+
customQuery,
|
|
97
|
+
defaultQuery,
|
|
98
|
+
URLParams: true,
|
|
99
|
+
componentId: filter.handle,
|
|
100
|
+
dataField: filter.field,
|
|
101
|
+
filterLabel: filter.name,
|
|
102
|
+
react: reactiveReactProp,
|
|
103
|
+
}), [filter, reactiveReactProp]);
|
|
104
|
+
return reactiveFilterSharedProps;
|
|
105
|
+
};
|
|
106
|
+
exports.useReactiveFilterSharedProps = useReactiveFilterSharedProps;
|
|
107
|
+
//# sourceMappingURL=useReactiveFilterSharedProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterSharedProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterSharedProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with all @appbaseio/reactivesearch filter components\n */\nexport const useReactiveFilterSharedProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n\n const nestedField = React.useMemo(() => {\n const nestedFields = [\"variants\"];\n const topField = filter.field.split(\".\")[0];\n if (nestedFields.includes(topField)) return topField;\n return undefined;\n }, [filter]);\n\n // define a custom query for when settingsHideUnavailable is enabled and the target field is inside variants\n // customQuery defines how this filter affects *other* components like the results component\n const customQuery = React.useMemo(() => {\n if (\n !filter.settingsHideUnavailable ||\n !filter.field.startsWith(\"variants.\")\n )\n return undefined;\n\n return (value?: string | string[]) => {\n if (!value) return {};\n\n // reactivesearch sometimes returns string, sometimes string[]\n const valueArray = \"string\" === typeof value ? [value] : value;\n\n if (0 === valueArray.length) return {};\n\n return {\n query: {\n nested: {\n path: \"variants\",\n query: {\n bool: {\n must: [\n {\n match: {\n \"variants.available\": \"true\",\n },\n },\n {\n terms: {\n [filter.field]: valueArray,\n },\n },\n ],\n },\n },\n },\n },\n };\n };\n }, [filter]);\n\n // define a default query for when settingsHideUnavailable is enabled and the target field is inside variants\n // defaultQuery defines how this filter affects itself i.e. the options displayed\n const defaultQuery = React.useMemo(() => {\n if (\n !filter.settingsHideUnavailable ||\n !filter.field.startsWith(\"variants.\")\n )\n return undefined;\n\n // override the aggregation query to filter the results by the variants.available attribute\n return () => {\n return {\n aggs: {\n reactivesearch_nested: {\n nested: { path: \"variants\" },\n aggs: {\n reactify_nested_outer: {\n filter: {\n match: {\n \"variants.available\": \"true\",\n },\n },\n aggs: {\n [filter.field]: {\n terms: {\n field: filter.field,\n size: 100,\n order: { _count: \"desc\" },\n },\n },\n },\n },\n },\n },\n },\n };\n };\n }, [filter]);\n\n const reactiveFilterSharedProps = React.useMemo(\n () => ({\n nestedField,\n customQuery,\n defaultQuery,\n URLParams: true,\n componentId: filter.handle,\n dataField: filter.field,\n filterLabel: filter.name,\n react: reactiveReactProp,\n }),\n [filter, reactiveReactProp]\n );\n\n return reactiveFilterSharedProps;\n};\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with @appbaseio/reactivesearch RangeSlider component
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterSliderProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
showFilter: boolean;
|
|
7
|
+
nestedField: string | undefined;
|
|
8
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
9
|
+
query?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
query: {
|
|
12
|
+
nested: {
|
|
13
|
+
path: string;
|
|
14
|
+
query: {
|
|
15
|
+
bool: {
|
|
16
|
+
must: ({
|
|
17
|
+
match: {
|
|
18
|
+
"variants.available": string;
|
|
19
|
+
};
|
|
20
|
+
terms?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
terms: {
|
|
23
|
+
[x: string]: string[];
|
|
24
|
+
};
|
|
25
|
+
match?: undefined;
|
|
26
|
+
})[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}) | undefined;
|
|
32
|
+
defaultQuery: (() => {
|
|
33
|
+
aggs: {
|
|
34
|
+
reactivesearch_nested: {
|
|
35
|
+
nested: {
|
|
36
|
+
path: string;
|
|
37
|
+
};
|
|
38
|
+
aggs: {
|
|
39
|
+
reactify_nested_outer: {
|
|
40
|
+
filter: {
|
|
41
|
+
match: {
|
|
42
|
+
"variants.available": string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
aggs: {
|
|
46
|
+
[x: string]: {
|
|
47
|
+
terms: {
|
|
48
|
+
field: string;
|
|
49
|
+
size: number;
|
|
50
|
+
order: {
|
|
51
|
+
_count: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}) | undefined;
|
|
61
|
+
URLParams: boolean;
|
|
62
|
+
componentId: string;
|
|
63
|
+
dataField: string;
|
|
64
|
+
filterLabel: string;
|
|
65
|
+
react: {
|
|
66
|
+
and: string[];
|
|
67
|
+
};
|
|
68
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
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.useReactiveFilterSliderProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveFilterSharedProps_1 = require("./useReactiveFilterSharedProps");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
/**
|
|
11
|
+
* For use with @appbaseio/reactivesearch RangeSlider component
|
|
12
|
+
*/
|
|
13
|
+
const useReactiveFilterSliderProps = (filter) => {
|
|
14
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
15
|
+
const reactiveFilterSharedProps = (0, useReactiveFilterSharedProps_1.useReactiveFilterSharedProps)(filter);
|
|
16
|
+
const reactiveFilterSliderProps = react_1.default.useMemo(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
return (Object.assign(Object.assign({}, reactiveFilterSharedProps), { showFilter: (_a = filter.settingsShowFilter) !== null && _a !== void 0 ? _a : true }));
|
|
19
|
+
}, [filter, reactiveReactProp]);
|
|
20
|
+
return reactiveFilterSliderProps;
|
|
21
|
+
};
|
|
22
|
+
exports.useReactiveFilterSliderProps = useReactiveFilterSliderProps;
|
|
23
|
+
//# sourceMappingURL=useReactiveFilterSliderProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterSliderProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterSliderProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,iFAA8E;AAE9E,iEAA8D;AAE9D;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACzE,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAA,2DAA4B,EAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,yBAAyB,GAAG,eAAK,CAAC,OAAO,CAC7C,GAAG,EAAE;;QAAC,OAAA,iCACD,yBAAyB,KAC5B,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,IAAI,IAC7C,CAAA;KAAA,EACF,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;IAEF,OAAO,yBAAyB,CAAC;AACnC,CAAC,CAAC;AAbW,QAAA,4BAA4B,gCAavC","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\nimport { useReactiveFilterSharedProps } from \"./useReactiveFilterSharedProps\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with @appbaseio/reactivesearch RangeSlider component\n */\nexport const useReactiveFilterSliderProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n const reactiveFilterSharedProps = useReactiveFilterSharedProps(filter);\n\n const reactiveFilterSliderProps = React.useMemo(\n () => ({\n ...reactiveFilterSharedProps,\n showFilter: filter.settingsShowFilter ?? true,\n }),\n [filter, reactiveReactProp]\n );\n\n return reactiveFilterSliderProps;\n};\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
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.useReactiveReactProp = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const components_1 = require("../../components");
|
|
10
|
+
const useReactiveReactProp = (currentHandle) => {
|
|
11
|
+
const { options } = (0, hooks_1.useReactifySearchContext)();
|
|
12
|
+
const { filters } = (0, hooks_1.useFilters)();
|
|
13
|
+
return react_1.default.useMemo(() => {
|
|
14
|
+
var _a;
|
|
15
|
+
return {
|
|
16
|
+
and: [
|
|
17
|
+
"SearchInput",
|
|
18
|
+
...components_1.SENSOR_IDS,
|
|
19
|
+
...((_a = options.additionalComponentHandles) !== null && _a !== void 0 ? _a : []),
|
|
20
|
+
...filters.map((filter) => filter.handle),
|
|
21
|
+
].filter((handle) => handle !== currentHandle),
|
|
22
|
+
};
|
|
23
|
+
}, [filters, currentHandle, options.additionalComponentHandles]);
|
|
24
|
+
};
|
|
25
|
+
exports.useReactiveReactProp = useReactiveReactProp;
|
|
26
|
+
//# sourceMappingURL=useReactiveReactProp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveReactProp.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveReactProp.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAAmE;AACnE,iDAA8C;AAEvC,MAAM,oBAAoB,GAAG,CAAC,aAAsB,EAAE,EAAE;IAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAEjC,OAAO,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACxB,OAAO;YACL,GAAG,EAAE;gBACH,aAAa;gBACb,GAAG,uBAAU;gBACb,GAAG,CAAC,MAAA,OAAO,CAAC,0BAA0B,mCAAI,EAAE,CAAC;gBAC7C,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aAC1C,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC;SAC/C,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext, useFilters } from \"../../hooks\";\nimport { SENSOR_IDS } from \"../../components\";\n\nexport const useReactiveReactProp = (currentHandle?: string) => {\n const { options } = useReactifySearchContext();\n const { filters } = useFilters();\n\n return React.useMemo(() => {\n return {\n and: [\n \"SearchInput\",\n ...SENSOR_IDS,\n ...(options.additionalComponentHandles ?? []),\n ...filters.map((filter) => filter.handle),\n ].filter((handle) => handle !== currentHandle),\n };\n }, [filters, currentHandle, options.additionalComponentHandles]);\n};\n"]}
|