@docusaurus/theme-search-algolia 0.0.0-4369 → 0.0.0-4378
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/hooks/useSearchQuery.d.ts → client/index.d.ts} +1 -3
- package/lib/client/index.js +7 -0
- package/lib/client/useAlgoliaContextualFacetFilters.d.ts +7 -0
- package/lib/{theme/hooks → client}/useAlgoliaContextualFacetFilters.js +1 -1
- package/lib/theme/SearchBar/index.js +3 -4
- package/lib/theme/SearchPage/index.js +3 -4
- package/package.json +13 -9
- package/src/client/index.ts +8 -0
- package/src/{theme/hooks → client}/useAlgoliaContextualFacetFilters.ts +1 -2
- package/src/theme/SearchBar/index.tsx +3 -4
- package/src/theme/SearchPage/index.tsx +3 -3
- package/src/theme-search-algolia.d.ts +2 -18
- package/lib/theme/hooks/useAlgoliaContextualFacetFilters.d.ts +0 -8
- package/lib/theme/hooks/useSearchQuery.js +0 -43
- package/src/theme/hooks/useSearchQuery.ts +0 -63
|
@@ -4,6 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
declare function useSearchQuery(): SearchQuery;
|
|
9
|
-
export default useSearchQuery;
|
|
7
|
+
export { useAlgoliaContextualFacetFilters } from './useAlgoliaContextualFacetFilters';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export { useAlgoliaContextualFacetFilters } from './useAlgoliaContextualFacetFilters';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useAlgoliaContextualFacetFilters(): (string | string[])[];
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { useContextualSearchFilters } from '@docusaurus/theme-common';
|
|
8
8
|
// Translate search-engine agnostic search filters to Algolia search filters
|
|
9
|
-
export
|
|
9
|
+
export function useAlgoliaContextualFacetFilters() {
|
|
10
10
|
const { locale, tags } = useContextualSearchFilters();
|
|
11
11
|
// seems safe to convert locale->language, see AlgoliaSearchMetadata comment
|
|
12
12
|
const languageFilter = `language:${locale}`;
|
|
@@ -12,10 +12,9 @@ import { useHistory } from '@docusaurus/router';
|
|
|
12
12
|
import { useBaseUrlUtils } from '@docusaurus/useBaseUrl';
|
|
13
13
|
import Link from '@docusaurus/Link';
|
|
14
14
|
import Head from '@docusaurus/Head';
|
|
15
|
-
import
|
|
16
|
-
import { isRegexpStringMatch } from '@docusaurus/theme-common';
|
|
15
|
+
import { isRegexpStringMatch, useSearchPage } from '@docusaurus/theme-common';
|
|
17
16
|
import { DocSearchButton, useDocSearchKeyboardEvents } from '@docsearch/react';
|
|
18
|
-
import useAlgoliaContextualFacetFilters from '@theme/
|
|
17
|
+
import { useAlgoliaContextualFacetFilters } from '@docusaurus/theme-search-algolia/client';
|
|
19
18
|
import { translate } from '@docusaurus/Translate';
|
|
20
19
|
import styles from './styles.module.css';
|
|
21
20
|
let DocSearchModal = null;
|
|
@@ -23,7 +22,7 @@ function Hit({ hit, children, }) {
|
|
|
23
22
|
return <Link to={hit.url}>{children}</Link>;
|
|
24
23
|
}
|
|
25
24
|
function ResultsFooter({ state, onClose }) {
|
|
26
|
-
const { generateSearchPageLink } =
|
|
25
|
+
const { generateSearchPageLink } = useSearchPage();
|
|
27
26
|
return (<Link to={generateSearchPageLink(state.query)} onClick={onClose}>
|
|
28
27
|
See all {state.context.nbHits} results
|
|
29
28
|
</Link>);
|
|
@@ -13,10 +13,9 @@ import clsx from 'clsx';
|
|
|
13
13
|
import Head from '@docusaurus/Head';
|
|
14
14
|
import Link from '@docusaurus/Link';
|
|
15
15
|
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
|
|
16
|
-
import { useTitleFormatter, usePluralForm, isRegexpStringMatch, useDynamicCallback, } from '@docusaurus/theme-common';
|
|
16
|
+
import { useTitleFormatter, usePluralForm, isRegexpStringMatch, useDynamicCallback, useSearchPage, } from '@docusaurus/theme-common';
|
|
17
17
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
18
|
-
import { useAllDocsData } from '@
|
|
19
|
-
import useSearchQuery from '@theme/hooks/useSearchQuery';
|
|
18
|
+
import { useAllDocsData } from '@docusaurus/plugin-content-docs/client';
|
|
20
19
|
import Layout from '@theme/Layout';
|
|
21
20
|
import Translate, { translate } from '@docusaurus/Translate';
|
|
22
21
|
import styles from './styles.module.css';
|
|
@@ -67,7 +66,7 @@ function SearchPage() {
|
|
|
67
66
|
algolia: { appId, apiKey, indexName, externalUrlRegex }, }, }, i18n: { currentLocale }, } = useDocusaurusContext();
|
|
68
67
|
const documentsFoundPlural = useDocumentsFoundPlural();
|
|
69
68
|
const docsSearchVersionsHelpers = useDocsSearchVersionsHelpers();
|
|
70
|
-
const { searchQuery, setSearchQuery } =
|
|
69
|
+
const { searchQuery, setSearchQuery } = useSearchPage();
|
|
71
70
|
const initialSearchResultState = {
|
|
72
71
|
items: [],
|
|
73
72
|
query: null,
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/theme-search-algolia",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-4378",
|
|
4
4
|
"description": "Algolia search component for Docusaurus.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./client": "./lib/client/index.js",
|
|
8
|
+
".": "./lib/index.js"
|
|
9
|
+
},
|
|
6
10
|
"types": "src/theme-search-algolia.d.ts",
|
|
7
11
|
"publishConfig": {
|
|
8
12
|
"access": "public"
|
|
@@ -21,12 +25,12 @@
|
|
|
21
25
|
},
|
|
22
26
|
"dependencies": {
|
|
23
27
|
"@docsearch/react": "^3.0.0-alpha.39",
|
|
24
|
-
"@docusaurus/core": "0.0.0-
|
|
25
|
-
"@docusaurus/logger": "0.0.0-
|
|
26
|
-
"@docusaurus/theme-common": "0.0.0-
|
|
27
|
-
"@docusaurus/theme-translations": "0.0.0-
|
|
28
|
-
"@docusaurus/utils": "0.0.0-
|
|
29
|
-
"@docusaurus/utils-validation": "0.0.0-
|
|
28
|
+
"@docusaurus/core": "0.0.0-4378",
|
|
29
|
+
"@docusaurus/logger": "0.0.0-4378",
|
|
30
|
+
"@docusaurus/theme-common": "0.0.0-4378",
|
|
31
|
+
"@docusaurus/theme-translations": "0.0.0-4378",
|
|
32
|
+
"@docusaurus/utils": "0.0.0-4378",
|
|
33
|
+
"@docusaurus/utils-validation": "0.0.0-4378",
|
|
30
34
|
"algoliasearch": "^4.10.5",
|
|
31
35
|
"algoliasearch-helper": "^3.5.5",
|
|
32
36
|
"clsx": "^1.1.1",
|
|
@@ -35,7 +39,7 @@
|
|
|
35
39
|
"tslib": "^2.3.1"
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
|
-
"@docusaurus/module-type-aliases": "0.0.0-
|
|
42
|
+
"@docusaurus/module-type-aliases": "0.0.0-4378",
|
|
39
43
|
"fs-extra": "^10.0.0"
|
|
40
44
|
},
|
|
41
45
|
"peerDependencies": {
|
|
@@ -45,5 +49,5 @@
|
|
|
45
49
|
"engines": {
|
|
46
50
|
"node": ">=14"
|
|
47
51
|
},
|
|
48
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "bd7999376fa63feafe5b169296beb91dac362954"
|
|
49
53
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export {useAlgoliaContextualFacetFilters} from './useAlgoliaContextualFacetFilters';
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type {useAlgoliaContextualFacetFiltersReturns} from '@theme/hooks/useAlgoliaContextualFacetFilters';
|
|
9
8
|
import {useContextualSearchFilters} from '@docusaurus/theme-common';
|
|
10
9
|
|
|
11
10
|
// Translate search-engine agnostic search filters to Algolia search filters
|
|
12
|
-
export
|
|
11
|
+
export function useAlgoliaContextualFacetFilters() {
|
|
13
12
|
const {locale, tags} = useContextualSearchFilters();
|
|
14
13
|
|
|
15
14
|
// seems safe to convert locale->language, see AlgoliaSearchMetadata comment
|
|
@@ -13,10 +13,9 @@ import {useHistory} from '@docusaurus/router';
|
|
|
13
13
|
import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
|
|
14
14
|
import Link from '@docusaurus/Link';
|
|
15
15
|
import Head from '@docusaurus/Head';
|
|
16
|
-
import
|
|
17
|
-
import {isRegexpStringMatch} from '@docusaurus/theme-common';
|
|
16
|
+
import {isRegexpStringMatch, useSearchPage} from '@docusaurus/theme-common';
|
|
18
17
|
import {DocSearchButton, useDocSearchKeyboardEvents} from '@docsearch/react';
|
|
19
|
-
import useAlgoliaContextualFacetFilters from '@theme/
|
|
18
|
+
import {useAlgoliaContextualFacetFilters} from '@docusaurus/theme-search-algolia/client';
|
|
20
19
|
import {translate} from '@docusaurus/Translate';
|
|
21
20
|
import styles from './styles.module.css';
|
|
22
21
|
|
|
@@ -56,7 +55,7 @@ type ResultsFooterProps = {
|
|
|
56
55
|
};
|
|
57
56
|
|
|
58
57
|
function ResultsFooter({state, onClose}: ResultsFooterProps) {
|
|
59
|
-
const {generateSearchPageLink} =
|
|
58
|
+
const {generateSearchPageLink} = useSearchPage();
|
|
60
59
|
|
|
61
60
|
return (
|
|
62
61
|
<Link to={generateSearchPageLink(state.query)} onClick={onClose}>
|
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
usePluralForm,
|
|
23
23
|
isRegexpStringMatch,
|
|
24
24
|
useDynamicCallback,
|
|
25
|
+
useSearchPage,
|
|
25
26
|
} from '@docusaurus/theme-common';
|
|
26
27
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
27
|
-
import {useAllDocsData} from '@
|
|
28
|
-
import useSearchQuery from '@theme/hooks/useSearchQuery';
|
|
28
|
+
import {useAllDocsData} from '@docusaurus/plugin-content-docs/client';
|
|
29
29
|
import Layout from '@theme/Layout';
|
|
30
30
|
import Translate, {translate} from '@docusaurus/Translate';
|
|
31
31
|
import styles from './styles.module.css';
|
|
@@ -162,7 +162,7 @@ function SearchPage(): JSX.Element {
|
|
|
162
162
|
const documentsFoundPlural = useDocumentsFoundPlural();
|
|
163
163
|
|
|
164
164
|
const docsSearchVersionsHelpers = useDocsSearchVersionsHelpers();
|
|
165
|
-
const {searchQuery, setSearchQuery} =
|
|
165
|
+
const {searchQuery, setSearchQuery} = useSearchPage();
|
|
166
166
|
const initialSearchResultState: ResultDispatcherState = {
|
|
167
167
|
items: [],
|
|
168
168
|
query: null,
|
|
@@ -5,24 +5,8 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
declare module '@docusaurus/theme-search-algolia' {
|
|
9
|
-
export
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
declare module '@theme/hooks/useSearchQuery' {
|
|
13
|
-
export interface SearchQuery {
|
|
14
|
-
searchQuery: string;
|
|
15
|
-
setSearchQuery: (newSearchQuery: string) => void;
|
|
16
|
-
generateSearchPageLink: (targetSearchQuery: string) => string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default function useSearchQuery(): SearchQuery;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
declare module '@theme/hooks/useAlgoliaContextualFacetFilters' {
|
|
23
|
-
export type useAlgoliaContextualFacetFiltersReturns = [string, string[]];
|
|
24
|
-
|
|
25
|
-
export default function useAlgoliaContextualFacetFilters(): useAlgoliaContextualFacetFiltersReturns;
|
|
8
|
+
declare module '@docusaurus/theme-search-algolia/client' {
|
|
9
|
+
export function useAlgoliaContextualFacetFilters(): [string, string[]];
|
|
26
10
|
}
|
|
27
11
|
|
|
28
12
|
declare module '@theme/SearchPage' {
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
import type { useAlgoliaContextualFacetFiltersReturns } from '@theme/hooks/useAlgoliaContextualFacetFilters';
|
|
8
|
-
export default function useAlgoliaContextualFacetFilters(): useAlgoliaContextualFacetFiltersReturns;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
import { useHistory } from '@docusaurus/router';
|
|
8
|
-
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
9
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
10
|
-
const SEARCH_PARAM_QUERY = 'q';
|
|
11
|
-
function useSearchQuery() {
|
|
12
|
-
const history = useHistory();
|
|
13
|
-
const { siteConfig: { baseUrl }, } = useDocusaurusContext();
|
|
14
|
-
const [searchQuery, setSearchQueryState] = useState('');
|
|
15
|
-
// Init search query just after React hydration
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
var _a;
|
|
18
|
-
const searchQueryStringValue = (_a = new URLSearchParams(window.location.search).get(SEARCH_PARAM_QUERY)) !== null && _a !== void 0 ? _a : '';
|
|
19
|
-
setSearchQueryState(searchQueryStringValue);
|
|
20
|
-
}, []);
|
|
21
|
-
const setSearchQuery = useCallback((newSearchQuery) => {
|
|
22
|
-
const searchParams = new URLSearchParams(window.location.search);
|
|
23
|
-
if (newSearchQuery) {
|
|
24
|
-
searchParams.set(SEARCH_PARAM_QUERY, newSearchQuery);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
searchParams.delete(SEARCH_PARAM_QUERY);
|
|
28
|
-
}
|
|
29
|
-
history.replace({
|
|
30
|
-
search: searchParams.toString(),
|
|
31
|
-
});
|
|
32
|
-
setSearchQueryState(newSearchQuery);
|
|
33
|
-
}, [history]);
|
|
34
|
-
const generateSearchPageLink = useCallback((targetSearchQuery) =>
|
|
35
|
-
// Refer to https://github.com/facebook/docusaurus/pull/2838
|
|
36
|
-
`${baseUrl}search?q=${encodeURIComponent(targetSearchQuery)}`, [baseUrl]);
|
|
37
|
-
return {
|
|
38
|
-
searchQuery,
|
|
39
|
-
setSearchQuery,
|
|
40
|
-
generateSearchPageLink,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export default useSearchQuery;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {useHistory} from '@docusaurus/router';
|
|
9
|
-
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
10
|
-
import {useCallback, useEffect, useState} from 'react';
|
|
11
|
-
import type {SearchQuery} from '@theme/hooks/useSearchQuery';
|
|
12
|
-
|
|
13
|
-
const SEARCH_PARAM_QUERY = 'q';
|
|
14
|
-
|
|
15
|
-
function useSearchQuery(): SearchQuery {
|
|
16
|
-
const history = useHistory();
|
|
17
|
-
const {
|
|
18
|
-
siteConfig: {baseUrl},
|
|
19
|
-
} = useDocusaurusContext();
|
|
20
|
-
|
|
21
|
-
const [searchQuery, setSearchQueryState] = useState('');
|
|
22
|
-
|
|
23
|
-
// Init search query just after React hydration
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
const searchQueryStringValue =
|
|
26
|
-
new URLSearchParams(window.location.search).get(SEARCH_PARAM_QUERY) ?? '';
|
|
27
|
-
|
|
28
|
-
setSearchQueryState(searchQueryStringValue);
|
|
29
|
-
}, []);
|
|
30
|
-
|
|
31
|
-
const setSearchQuery = useCallback(
|
|
32
|
-
(newSearchQuery: string) => {
|
|
33
|
-
const searchParams = new URLSearchParams(window.location.search);
|
|
34
|
-
|
|
35
|
-
if (newSearchQuery) {
|
|
36
|
-
searchParams.set(SEARCH_PARAM_QUERY, newSearchQuery);
|
|
37
|
-
} else {
|
|
38
|
-
searchParams.delete(SEARCH_PARAM_QUERY);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
history.replace({
|
|
42
|
-
search: searchParams.toString(),
|
|
43
|
-
});
|
|
44
|
-
setSearchQueryState(newSearchQuery);
|
|
45
|
-
},
|
|
46
|
-
[history],
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
const generateSearchPageLink = useCallback(
|
|
50
|
-
(targetSearchQuery: string) =>
|
|
51
|
-
// Refer to https://github.com/facebook/docusaurus/pull/2838
|
|
52
|
-
`${baseUrl}search?q=${encodeURIComponent(targetSearchQuery)}`,
|
|
53
|
-
[baseUrl],
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
searchQuery,
|
|
58
|
-
setSearchQuery,
|
|
59
|
-
generateSearchPageLink,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export default useSearchQuery;
|