docusaurus/packages/docusaurus-theme-search-algolia/src/theme/hooks/useSearchQuery.js
tetunori e63c468b0f
fix(v2): use base url to navigate to search page (#2838)
* fix: consider baseUrl

Add baseUrl to search page query URL.

* fix: use `useBaseUrl()`

* Revert "fix: use `useBaseUrl()`"

This reverts commit 72b319a293.

* fix: add link to PR
2020-06-02 10:51:54 +03:00

44 lines
1.3 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {useHistory, useLocation} from '@docusaurus/router';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
const SEARCH_PARAM_QUERY = 'q';
function useSearchQuery() {
const history = useHistory();
const location = useLocation();
const {siteConfig: {baseUrl} = {}} = useDocusaurusContext();
return {
searchValue:
(ExecutionEnvironment.canUseDOM &&
new URLSearchParams(location.search).get(SEARCH_PARAM_QUERY)) ||
'',
updateSearchPath: (searchValue) => {
const searchParams = new URLSearchParams(location.search);
if (searchValue) {
searchParams.set(SEARCH_PARAM_QUERY, searchValue);
} else {
searchParams.delete(SEARCH_PARAM_QUERY);
}
history.replace({
search: searchParams.toString(),
});
},
navigateToSearchPage: (searchValue) => {
// Refer to https://github.com/facebook/docusaurus/pull/2838
history.push(`${baseUrl}search?q=${searchValue}`);
},
};
}
export default useSearchQuery;