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