@docusaurus/theme-search-algolia 0.0.0-4394 → 0.0.0-4411
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/lib/theme/SearchBar/index.js +7 -3
- package/package.json +9 -9
- package/src/theme/SearchBar/index.tsx +27 -11
- package/src/types.d.ts +4 -0
|
@@ -27,6 +27,10 @@ function ResultsFooter({ state, onClose }) {
|
|
|
27
27
|
See all {state.context.nbHits} results
|
|
28
28
|
</Link>);
|
|
29
29
|
}
|
|
30
|
+
function mergeFacetFilters(f1, f2) {
|
|
31
|
+
const normalize = (f) => f instanceof Array ? f : [f];
|
|
32
|
+
return [...normalize(f1), ...normalize(f2)];
|
|
33
|
+
}
|
|
30
34
|
function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
|
|
31
35
|
var _a, _b;
|
|
32
36
|
const { siteMetadata } = useDocusaurusContext();
|
|
@@ -34,7 +38,7 @@ function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
|
|
|
34
38
|
const configFacetFilters = (_b = (_a = props.searchParameters) === null || _a === void 0 ? void 0 : _a.facetFilters) !== null && _b !== void 0 ? _b : [];
|
|
35
39
|
const facetFilters = contextualSearch
|
|
36
40
|
? // Merge contextual search filters with config filters
|
|
37
|
-
|
|
41
|
+
mergeFacetFilters(contextualSearchFacetFilters, configFacetFilters)
|
|
38
42
|
: // ... or use config facetFilters
|
|
39
43
|
configFacetFilters;
|
|
40
44
|
// we let user override default searchParameters if he wants to
|
|
@@ -104,9 +108,9 @@ function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
|
|
|
104
108
|
url: withBaseUrl(`${url.pathname}${url.hash}`),
|
|
105
109
|
};
|
|
106
110
|
})).current;
|
|
107
|
-
const resultsFooterComponent = useMemo(
|
|
111
|
+
const resultsFooterComponent = useMemo(() =>
|
|
108
112
|
// eslint-disable-next-line react/no-unstable-nested-components
|
|
109
|
-
(
|
|
113
|
+
(footerProps) => <ResultsFooter {...footerProps} onClose={onClose}/>, [onClose]);
|
|
110
114
|
const transformSearchClient = useCallback((searchClient) => {
|
|
111
115
|
searchClient.addAlgoliaAgent('docusaurus', siteMetadata.docusaurusVersion);
|
|
112
116
|
return searchClient;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/theme-search-algolia",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-4411",
|
|
4
4
|
"description": "Algolia search component for Docusaurus.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@docsearch/react": "^3.0.0-alpha.39",
|
|
28
|
-
"@docusaurus/core": "0.0.0-
|
|
29
|
-
"@docusaurus/logger": "0.0.0-
|
|
30
|
-
"@docusaurus/theme-common": "0.0.0-
|
|
31
|
-
"@docusaurus/theme-translations": "0.0.0-
|
|
32
|
-
"@docusaurus/utils": "0.0.0-
|
|
33
|
-
"@docusaurus/utils-validation": "0.0.0-
|
|
28
|
+
"@docusaurus/core": "0.0.0-4411",
|
|
29
|
+
"@docusaurus/logger": "0.0.0-4411",
|
|
30
|
+
"@docusaurus/theme-common": "0.0.0-4411",
|
|
31
|
+
"@docusaurus/theme-translations": "0.0.0-4411",
|
|
32
|
+
"@docusaurus/utils": "0.0.0-4411",
|
|
33
|
+
"@docusaurus/utils-validation": "0.0.0-4411",
|
|
34
34
|
"algoliasearch": "^4.10.5",
|
|
35
35
|
"algoliasearch-helper": "^3.5.5",
|
|
36
36
|
"clsx": "^1.1.1",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"utility-types": "^3.10.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@docusaurus/module-type-aliases": "0.0.0-
|
|
43
|
+
"@docusaurus/module-type-aliases": "0.0.0-4411",
|
|
44
44
|
"fs-extra": "^10.0.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"engines": {
|
|
51
51
|
"node": ">=14"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "c0caab39eb322080bf583dd612cef50012105ec9"
|
|
54
54
|
}
|
|
@@ -64,6 +64,18 @@ function ResultsFooter({state, onClose}: ResultsFooterProps) {
|
|
|
64
64
|
);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
type FacetFilters = Required<
|
|
68
|
+
Required<DocSearchProps>['searchParameters']
|
|
69
|
+
>['facetFilters'];
|
|
70
|
+
|
|
71
|
+
function mergeFacetFilters(f1: FacetFilters, f2: FacetFilters): FacetFilters {
|
|
72
|
+
const normalize = (
|
|
73
|
+
f: FacetFilters,
|
|
74
|
+
): readonly string[] | ReadonlyArray<readonly string[]> =>
|
|
75
|
+
f instanceof Array ? f : [f];
|
|
76
|
+
return [...normalize(f1), ...normalize(f2)] as FacetFilters;
|
|
77
|
+
}
|
|
78
|
+
|
|
67
79
|
function DocSearch({
|
|
68
80
|
contextualSearch,
|
|
69
81
|
externalUrlRegex,
|
|
@@ -71,18 +83,20 @@ function DocSearch({
|
|
|
71
83
|
}: DocSearchProps) {
|
|
72
84
|
const {siteMetadata} = useDocusaurusContext();
|
|
73
85
|
|
|
74
|
-
const contextualSearchFacetFilters =
|
|
86
|
+
const contextualSearchFacetFilters =
|
|
87
|
+
useAlgoliaContextualFacetFilters() as FacetFilters;
|
|
75
88
|
|
|
76
|
-
const configFacetFilters =
|
|
89
|
+
const configFacetFilters: FacetFilters =
|
|
90
|
+
props.searchParameters?.facetFilters ?? [];
|
|
77
91
|
|
|
78
|
-
const facetFilters = contextualSearch
|
|
92
|
+
const facetFilters: FacetFilters = contextualSearch
|
|
79
93
|
? // Merge contextual search filters with config filters
|
|
80
|
-
|
|
94
|
+
mergeFacetFilters(contextualSearchFacetFilters, configFacetFilters)
|
|
81
95
|
: // ... or use config facetFilters
|
|
82
96
|
configFacetFilters;
|
|
83
97
|
|
|
84
98
|
// we let user override default searchParameters if he wants to
|
|
85
|
-
const searchParameters = {
|
|
99
|
+
const searchParameters: DocSearchProps['searchParameters'] = {
|
|
86
100
|
...props.searchParameters,
|
|
87
101
|
facetFilters,
|
|
88
102
|
};
|
|
@@ -167,12 +181,14 @@ function DocSearch({
|
|
|
167
181
|
}),
|
|
168
182
|
).current;
|
|
169
183
|
|
|
170
|
-
const resultsFooterComponent =
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
184
|
+
const resultsFooterComponent: DocSearchProps['resultsFooterComponent'] =
|
|
185
|
+
useMemo(
|
|
186
|
+
() =>
|
|
187
|
+
// eslint-disable-next-line react/no-unstable-nested-components
|
|
188
|
+
(footerProps: Omit<ResultsFooterProps, 'onClose'>): JSX.Element =>
|
|
189
|
+
<ResultsFooter {...footerProps} onClose={onClose} />,
|
|
190
|
+
[onClose],
|
|
191
|
+
);
|
|
176
192
|
|
|
177
193
|
const transformSearchClient = useCallback(
|
|
178
194
|
(searchClient) => {
|
package/src/types.d.ts
CHANGED
|
@@ -8,3 +8,7 @@
|
|
|
8
8
|
/// <reference types="@docusaurus/module-type-aliases" />
|
|
9
9
|
/// <reference types="@docusaurus/theme-common" />
|
|
10
10
|
/// <reference types="@docusaurus/theme-classic" />
|
|
11
|
+
|
|
12
|
+
export type FacetFilters = Required<
|
|
13
|
+
Required<DocSearchProps>['searchParameters']
|
|
14
|
+
>['facetFilters'];
|