import searchSuggestApi from "@/core/api/searchSuggestApi" import { MagnifyingGlassIcon } from "@heroicons/react/24/outline" import { useCallback, useEffect, useRef, useState } from "react" import Link from "../Link/Link" import { useRouter } from "next/router" const Search = () => { const router = useRouter() const queryRef = useRef() const [ query, setQuery ] = useState('') const [ suggestions, setSuggestions ] = useState([]) useEffect(() => { setQuery(router.query.q) }, [router.query]) const loadSuggestion = useCallback(() => { if (query && document.activeElement == queryRef.current) { (async () => { const dataSuggestion = await searchSuggestApi({ query }) setSuggestions(dataSuggestion.data.suggestions) })() return } else { setSuggestions([]) } }, [ query ]) useEffect(() => { if (query && document.activeElement == queryRef.current) { loadSuggestion() } else { setSuggestions([]) } }, [ loadSuggestion, query ]) const handleSubmit = (e) => { e.preventDefault() if (query) { router.push(`/shop/search?q=${query}`) } else { queryRef.current.focus() } } const onInputBlur = () => { setTimeout(() => { setSuggestions([]) }, 100) } return (
) } export default Search