diff --git a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.scss b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.scss index dc3e8eb66b..bf9c42fc6d 100644 --- a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.scss +++ b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.scss @@ -81,6 +81,13 @@ } } +.loading-results { + &:hover { + background-color: $panel-inner !important; + cursor: default !important; + } +} + @media (max-width: 992px) { .search-bar-container { width: 100%; diff --git a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx index f69a167dbf..46b9928ea7 100644 --- a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx +++ b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx @@ -8,6 +8,8 @@ import { import SearchResultsDropdown from "./SearchResultsDropdown"; import SearchField from "./SearchField"; import "./SearchBar.scss"; +import { useHistory, useLocation } from "react-router-dom"; +import { useSearch } from "context/SearchContext"; interface SearchBarProps { autoFocus?: boolean; @@ -22,13 +24,20 @@ export default function SearchBar({ onFocus, isFocused, }: SearchBarProps) { - const [searchTerm, setSearchTerm] = useState(""); + let history = useHistory(); + let location = useLocation(); + + const { searchTerm, setSearchTerm } = useSearch(); const [foundTtsModels, setFoundTtsModels] = useState([]); const [isLoading, setIsLoading] = useState(false); + const isOnSearchPage = location.pathname.startsWith("/search"); - const maybeSearch = useCallback(async (value: string) => { - setSearchTerm(value); - }, []); + const maybeSearch = useCallback( + async (value: string) => { + setSearchTerm(value); + }, + [setSearchTerm] + ); const doSearch = useCallback( async (value: string) => { @@ -53,8 +62,34 @@ export default function SearchBar({ ); useEffect(() => { - doSearch(searchTerm); - }, [doSearch, searchTerm]); + if (isOnSearchPage) { + const query = new URLSearchParams(location.search).get("query"); + if (query) { + setSearchTerm(query); + } + } + }, [isOnSearchPage, location.search, setSearchTerm]); + + useEffect(() => { + if (isOnSearchPage) { + history.push(`/search/weights?query=${encodeURIComponent(searchTerm)}`); + } else { + doSearch(searchTerm); + } + }, [searchTerm, history, location.pathname, doSearch, isOnSearchPage]); + + const handleSearchButtonClick = useCallback(() => { + history.push(`/search/weights?query=${encodeURIComponent(searchTerm)}`); + }, [searchTerm, history]); + + const handleKeyPress = useCallback( + (e: React.KeyboardEvent) => { + if (e.key === "Enter") { + handleSearchButtonClick(); + } + }, + [handleSearchButtonClick] + ); return (
@@ -62,22 +97,24 @@ export default function SearchBar({ - {isFocused && ( + {isFocused && !isOnSearchPage && ( )}