"use client"; import "./MapSearch.scss"; import Image from "next/image"; import search from "./icons/search.svg"; import { useMapStore } from "../mapSectionStore"; import { useEffect, useState } from "react"; import { useDebounce } from "use-debounce"; import { useRouter } from "next/navigation"; interface IMapSearchProps extends React.InputHTMLAttributes { searchParams: { ["тип-дороги"]: string; ["поиск-на-карте"]: string; ["поиск-рейтинг"]: string; ["страница-рейтинга"]: string; }; } const MapSearch: React.FC = ({ searchParams, }: IMapSearchProps) => { const router = useRouter(); const [searchMap, setSearchMap] = useState( searchParams["поиск-на-карте"] || "" ); const [query] = useDebounce(searchMap, 500); const { setLatLng, searchData: options, getLocations, setDisplayLocation, } = useMapStore(); const handleSubmit = ( display_name: string, latLng: { lat: number; lng: number } ) => { setSearchMap(display_name); setDisplayLocation(display_name); setLatLng(latLng); window.scrollTo({ top: 1400, behavior: "smooth", }); }; useEffect(() => { getLocations(searchMap); router.push( `?тип-дороги=${ searchParams["тип-дороги"] || "1,2,3,4,5,6" }&поиск-на-карте=${searchMap}&поиск-рейтинг=${ searchParams["поиск-рейтинг"] || "" }&страница-рейтинга=${searchParams["страница-рейтинга"] || ""}`, { scroll: false } ); }, [query]); return (
) => { e.preventDefault(); handleSubmit(options[0].display_name, { lat: +options[0].lat, lng: +options[0].lon, }); }} >
Search Icon setSearchMap(e.target.value)} name="map-search" type="text" />
{options.length !== 0 ? (
    {options.map((opt) => (
  • ))}
) : null}
); }; export default MapSearch;