import { useEffect, useState } from "react"; import {ButtonPrimary} from "../buttons/ButtonPrimary"; import { useSearchParams } from "next/navigation"; import { useApp } from "../../../hooks"; interface Props { onNew?: () => void; onNewRoute?: string; placeholder?: string; } export default function InputSearchWithURL({ onNew, onNewRoute, placeholder }: Props) { const [searchParams, setSearchParams] = useSearchParams(); const { t } = useApp(); const [search, setSearch] = useState(searchParams["q"]?.toString() ?? ""); const [debouncedSearch, setDebouncedSearch] = useState(searchParams["q"]?.toString() ?? ""); useEffect(() => { const timer = setTimeout(() => setDebouncedSearch(search), 500); return () => clearTimeout(timer); }, [search]); useEffect(() => { const query = searchParams["q"] ?? ""; if (query !== debouncedSearch) { //@ts-ignore searchParams.set("q", debouncedSearch); //@ts-ignore setSearchParams(searchParams); } }, [debouncedSearch, searchParams, setSearchParams]); return (
setSearch(e.target.value)} autoComplete="off" />
{onNew && {t("shared.new")}} {onNewRoute && {t("shared.new")}}
); }