import { useEffect, useState } from 'react'; import { Flex, Select, Box, Text, Input, Spinner, Icon, Button } from '@chakra-ui/react'; import { useRouter } from 'next/router'; import { MdCancel } from 'react-icons/md'; import Image from 'next/image'; import { filterData, getFilterValues } from '../utils/filterData'; import { baseUrl, fetchApi } from '../utils/fetchApi'; import noresult from '../assets/images/noresult.svg'; export default function SearchFilters() { const [filters] = useState(filterData); const [searchTerm, setSearchTerm] = useState(''); const [locationData, setLocationData] = useState(); const [showLocations, setShowLocations] = useState(false); const [loading, setLoading] = useState(false); const router = useRouter(); const searchProperties = (filterValues) => { const path = router.pathname; const { query } = router; const values = getFilterValues(filterValues) values.forEach((item) => { if(item.value && filterValues?.[item.name]) { query[item.name] = item.value } }) router.push({ pathname: path, query: query }); }; useEffect(() => { if (searchTerm !== '') { const fetchData = async () => { setLoading(true); const data = await fetchApi(`${baseUrl}/auto-complete?query=${searchTerm}`); setLoading(false); setLocationData(data?.hits); }; fetchData(); } }, [searchTerm]); return ( {filters?.map((filter) => ( ))} {showLocations && ( setSearchTerm(e.target.value)} /> {searchTerm !== '' && ( setSearchTerm('')} /> )} {loading && } {showLocations && ( {locationData?.map((location) => ( { searchProperties({ locationExternalIDs: location.externalID }); setShowLocations(false); setSearchTerm(location.name); }} > {location.name} ))} {!loading && !locationData?.length && ( Waiting to search! )} )} )} ); }