@usereactify/search 5.51.0 → 5.52.0
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
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [5.52.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.51.0...release-v5.52.0) (2024-09-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* add submitSearchQuery method to useSearch hook ([6619d6e](https://bitbucket.org/usereactify/reactify-search-ui/commit/6619d6e80fba88896f10562868f8f27ac758ab78))
|
|
11
|
+
|
|
5
12
|
## [5.51.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.50.1...release-v5.51.0) (2024-08-21)
|
|
6
13
|
|
|
7
14
|
|
package/dist/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { ConfigRedirect } from "../types";
|
|
2
|
+
import { ConfigRedirect, ElasticProduct } from "../types";
|
|
3
3
|
export declare const useSearch: () => {
|
|
4
4
|
/** The current search term */
|
|
5
5
|
searchTerm: string;
|
|
@@ -7,6 +7,8 @@ export declare const useSearch: () => {
|
|
|
7
7
|
setSearchTerm: (searchTerm?: string | undefined) => void;
|
|
8
8
|
/** Function for navigating to the search page, includes logic for redirects */
|
|
9
9
|
submitSearchTerm: (searchTerm?: string | undefined) => void;
|
|
10
|
+
/** Function for retrieving search results for an opensearch query */
|
|
11
|
+
submitSearchQuery: (searchBody: any, searchHeaders: Record<string, string>) => Promise<Array<ElasticProduct>>;
|
|
10
12
|
/** Used to determine if instant search results should be displayed */
|
|
11
13
|
showInstantSearchResults: boolean;
|
|
12
14
|
/** Used to manually set the "showInstantSearchResults" value */
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -9,6 +18,27 @@ const hooks_1 = require("../hooks");
|
|
|
9
18
|
const utility_1 = require("../utility");
|
|
10
19
|
const useSearch = () => {
|
|
11
20
|
const { options, config, search } = (0, hooks_1.useReactifySearchContext)();
|
|
21
|
+
const handleSubmitSearchQuery = react_1.default.useCallback((searchBody, searchHeaders) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
utility_1.debug.log("useSearch", "submitSearchQuery[body]", searchBody);
|
|
24
|
+
utility_1.debug.log("useSearch", "submitSearchQuery[headers]", searchHeaders);
|
|
25
|
+
const response = yield fetch(`${config.endpoint}/${config.index}/_search`, {
|
|
26
|
+
method: "POST",
|
|
27
|
+
body: JSON.stringify(searchBody),
|
|
28
|
+
headers: searchHeaders,
|
|
29
|
+
}).then((response) => {
|
|
30
|
+
utility_1.debug.log("useSearch", "submitSearchQuery[status]", response.status);
|
|
31
|
+
return response.json();
|
|
32
|
+
}).catch((error) => {
|
|
33
|
+
utility_1.debug.log("useSearch", "submitSearchQuery[error]", error);
|
|
34
|
+
return error;
|
|
35
|
+
});
|
|
36
|
+
utility_1.debug.log("useSearch", "submitSearchQuery[response]", response);
|
|
37
|
+
if (((_b = (_a = response === null || response === void 0 ? void 0 : response.hits) === null || _a === void 0 ? void 0 : _a.hits) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
38
|
+
return response.hits.hits.map((item) => item._source);
|
|
39
|
+
}
|
|
40
|
+
return [];
|
|
41
|
+
}), [config.endpoint, config.index]);
|
|
12
42
|
const handleSubmitSearchTerm = react_1.default.useCallback((searchTerm = search.searchTerm) => {
|
|
13
43
|
utility_1.debug.log("useSearch", "submitSearchTerm[query]", searchTerm);
|
|
14
44
|
if (!searchTerm) {
|
|
@@ -40,6 +70,7 @@ const useSearch = () => {
|
|
|
40
70
|
searchTerm: search.searchTerm,
|
|
41
71
|
setSearchTerm: handleSetSearchTerm,
|
|
42
72
|
submitSearchTerm: handleSubmitSearchTerm,
|
|
73
|
+
submitSearchQuery: handleSubmitSearchQuery,
|
|
43
74
|
showInstantSearchResults: !!search.showInstantSearchResults && !!search.searchTerm,
|
|
44
75
|
setShowInstantSearchResults: search.setShowInstantSearchResults,
|
|
45
76
|
searchRedirect: search.searchRedirect,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../../src/hooks/useSearch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../../src/hooks/useSearch.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext } from \"../hooks\";\nimport { debug } from \"../utility\";\nimport { ConfigRedirect, ElasticProduct } from \"../types\";\n\nexport const useSearch = (): {\n /** The current search term */\n searchTerm: string;\n /** Function for changing the current search term */\n setSearchTerm: (searchTerm?: string) => void;\n /** Function for navigating to the search page, includes logic for redirects */\n submitSearchTerm: (searchTerm?: string) => void;\n /** Function for retrieving search results for an opensearch query */\n submitSearchQuery: (searchBody: any, searchHeaders: Record<string, string>) => Promise<Array<ElasticProduct>>;\n /** Used to determine if instant search results should be displayed */\n showInstantSearchResults: boolean;\n /** Used to manually set the \"showInstantSearchResults\" value */\n setShowInstantSearchResults: React.Dispatch<React.SetStateAction<boolean>>;\n /** Contains any matching redirect for the current search term */\n searchRedirect: ConfigRedirect | undefined;\n} => {\n const { options, config, search } = useReactifySearchContext();\n\n const handleSubmitSearchQuery = React.useCallback(\n async (searchBody: any, searchHeaders: Record<string, string>) => {\n debug.log(\"useSearch\", \"submitSearchQuery[body]\", searchBody);\n debug.log(\"useSearch\", \"submitSearchQuery[headers]\", searchHeaders);\n \n const response = await fetch(`${config.endpoint}/${config.index}/_search`, {\n method: \"POST\",\n body: JSON.stringify(searchBody),\n headers: searchHeaders,\n }).then((response) => {\n debug.log(\"useSearch\", \"submitSearchQuery[status]\", response.status);\n \n return response.json();\n }).catch((error) => {\n debug.log(\"useSearch\", \"submitSearchQuery[error]\", error);\n\n return error;\n })\n\n debug.log(\"useSearch\", \"submitSearchQuery[response]\", response);\n\n if (response?.hits?.hits?.length > 0) {\n return response.hits.hits.map((item: { _source: ElasticProduct; }) => item._source);\n }\n\n return [];\n },\n [config.endpoint, config.index]\n );\n\n const handleSubmitSearchTerm = React.useCallback(\n (searchTerm: string = search.searchTerm) => {\n debug.log(\"useSearch\", \"submitSearchTerm[query]\", searchTerm);\n\n if (!searchTerm) {\n return;\n }\n\n const redirect = config.redirects.find(\n (redirect) =>\n redirect.query.trim().toLowerCase() ===\n searchTerm.trim().toLowerCase()\n );\n\n if (redirect) {\n debug.log(\"useSearch\", \"submitSearchTerm[redirect]\", redirect);\n }\n\n search.setShowInstantSearchResults(false);\n\n if (options.onRedirect) {\n options.onRedirect(\n redirect ? \"redirect\" : \"search\",\n redirect\n ? redirect.url\n : `/search?q=${encodeURIComponent(searchTerm)}`\n );\n } else if (redirect) {\n window.location.href = redirect.url;\n } else {\n window.location.href = `/search?q=${encodeURIComponent(searchTerm)}`;\n }\n },\n [search.searchTerm]\n );\n\n const handleSetSearchTerm = React.useCallback(\n (searchTerm: string = \"\") => {\n debug.log(\"useSearch\", \"setSearchTerm[searchTerm]\", searchTerm);\n\n search.setSearchTerm(searchTerm);\n },\n [search.searchTerm]\n );\n\n return {\n searchTerm: search.searchTerm,\n setSearchTerm: handleSetSearchTerm,\n submitSearchTerm: handleSubmitSearchTerm,\n submitSearchQuery: handleSubmitSearchQuery,\n showInstantSearchResults: !!search.showInstantSearchResults && !!search.searchTerm,\n setShowInstantSearchResults: search.setShowInstantSearchResults,\n searchRedirect: search.searchRedirect,\n };\n};\n"]}
|