import debounce from '@/lib/debounce'; import { getQueryParams } from '@/lib/route'; import { cn } from '@/lib/utils'; import { SharedData } from '@/types/global'; import { usePage } from '@inertiajs/react'; import { Search } from 'lucide-react'; import { useEffect, useRef } from 'react'; interface SearchInputProps { className?: string; iconPosition?: 'left' | 'right'; placeholder?: string; onChangeValue: (value: string) => void; } const SearchInput = (props: SearchInputProps) => { const { className, iconPosition = 'left', placeholder = 'Search', onChangeValue } = props; const page = usePage(); const searchRef = useRef(null); const params = getQueryParams(page.url); const searchHandler = debounce(async (e: React.ChangeEvent) => { const query = e.target.value; onChangeValue(query); }, 300); useEffect(() => { if (params['search'] && searchRef.current) { searchRef.current.focus(); } }, [page, params]); return (
); }; export default SearchInput;