import { useState, useRef, useEffect } from 'react' import { usePokemonList } from '../../hooks/useAdmin' interface PokemonSelectorProps { label: string selectedId: number | null initialName?: string onChange: (id: number | null) => void } export function PokemonSelector({ label, selectedId, initialName, onChange, }: PokemonSelectorProps) { const [search, setSearch] = useState(initialName ?? '') const [open, setOpen] = useState(false) const ref = useRef(null) const { data } = usePokemonList(search || undefined, 20, 0) const pokemon = data?.items ?? [] useEffect(() => { function handleClick(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) { setOpen(false) } } document.addEventListener('mousedown', handleClick) return () => document.removeEventListener('mousedown', handleClick) }, []) return (
{ setSearch(e.target.value) setOpen(true) if (!e.target.value) onChange(null) }} onFocus={() => setOpen(true)} placeholder="Search pokemon..." className="w-full px-3 py-2 border rounded-md dark:bg-gray-700 dark:border-gray-600" /> {selectedId && ( )} {open && pokemon.length > 0 && ( )}
) }