diff --git a/themes/gitbook/components/NavPostList.js b/themes/gitbook/components/NavPostList.js index 6ad7fd94..6fbf92b5 100644 --- a/themes/gitbook/components/NavPostList.js +++ b/themes/gitbook/components/NavPostList.js @@ -20,7 +20,7 @@ const NavPostList = (props) => { let existingGroup = null // 开启自动分组排序 - if (JSON.parse(siteConfig('GITBOOK_AUTO_SORT', true, CONFIG))) { + if (siteConfig('GITBOOK_AUTO_SORT', true, CONFIG)) { existingGroup = groups.find(group => group.category === categoryName) // 搜索同名的最后一个分组 } else { existingGroup = groups[groups.length - 1] // 获取最后一个分组 diff --git a/themes/gitbook/components/SearchInput.js b/themes/gitbook/components/SearchInput.js index bad985da..cab041fe 100644 --- a/themes/gitbook/components/SearchInput.js +++ b/themes/gitbook/components/SearchInput.js @@ -1,11 +1,15 @@ import { useImperativeHandle, useRef, useState } from 'react' import { deepClone } from '@/lib/utils' import { useGitBookGlobal } from '@/themes/gitbook' +import { siteConfig } from '@/lib/config' let lock = false +/** + * 搜索栏 + */ const SearchInput = ({ currentSearch, cRef, className }) => { const searchInputRef = useRef() - const { setFilteredNavPages, allNavPages } = useGitBookGlobal() + const { searchModal, setFilteredNavPages, allNavPages } = useGitBookGlobal() useImperativeHandle(cRef, () => { return { @@ -16,6 +20,10 @@ const SearchInput = ({ currentSearch, cRef, className }) => { }) const handleSearch = () => { + // 使用Algolia + if (siteConfig('ALGOLIA_APP_ID')) { + searchModal?.current?.openSearch() + } let keyword = searchInputRef.current.value if (keyword) { keyword = keyword.trim() @@ -23,20 +31,7 @@ const SearchInput = ({ currentSearch, cRef, className }) => { setFilteredNavPages(allNavPages) } const filterAllNavPages = deepClone(allNavPages) - // for (const filterGroup of filterAllNavPages) { - // for (let i = filterGroup.items.length - 1; i >= 0; i--) { - // const post = filterGroup.items[i] - // const articleInfo = post.title + '' - // const hit = articleInfo.toLowerCase().indexOf(keyword.toLowerCase()) > -1 - // if (!hit) { - // // 删除 - // filterGroup.items.splice(i, 1) - // } - // } - // if (filterGroup.items && filterGroup.items.length > 0) { - // filterPosts.push(filterGroup) - // } - // } + for (let i = filterAllNavPages.length - 1; i >= 0; i--) { const post = filterAllNavPages[i] const articleInfo = post.title + '' @@ -56,6 +51,12 @@ const SearchInput = ({ currentSearch, cRef, className }) => { * @param {*} e */ const handleKeyUp = (e) => { + // 使用Algolia + if (siteConfig('ALGOLIA_APP_ID')) { + searchModal?.current?.openSearch() + return + } + if (e.keyCode === 13) { // 回车 handleSearch(searchInputRef.current.value) } else if (e.keyCode === 27) { // ESC @@ -63,6 +64,13 @@ const SearchInput = ({ currentSearch, cRef, className }) => { } } + const handleFocus = () => { + // 使用Algolia + if (siteConfig('ALGOLIA_APP_ID')) { + searchModal?.current?.openSearch() + } + } + /** * 清理搜索 */ @@ -77,7 +85,6 @@ const SearchInput = ({ currentSearch, cRef, className }) => { return } searchInputRef.current.value = val - if (val) { setShowClean(true) } else { @@ -97,6 +104,7 @@ const SearchInput = ({ currentSearch, cRef, className }) => { ref={searchInputRef} type='text' className={`${className} outline-none w-full text-sm pl-2 transition focus:shadow-lg font-light leading-10 text-black bg-gray-100 dark:bg-gray-900 dark:text-white`} + onFocus={handleFocus} onKeyUp={handleKeyUp} onCompositionStart={lockSearchInput} onCompositionUpdate={lockSearchInput} @@ -111,7 +119,7 @@ const SearchInput = ({ currentSearch, cRef, className }) => { {(showClean && -