import { User } from '@/types/user'; import { useEffect, useState } from 'react'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { Button } from '@/components/ui/button'; import { CheckIcon, ChevronsUpDownIcon } from 'lucide-react'; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; import { cn } from '@/lib/utils'; import axios from 'axios'; export default function UserSelect({ onChange }: { onChange: (selectedUser: User) => void }) { const [query, setQuery] = useState(''); const [users, setUsers] = useState([]); const [open, setOpen] = useState(false); const [value, setValue] = useState(); const fetchUsers = async () => { const response = await axios.get(route('users', { query: query })); if (response.status === 200) { setUsers(response.data as User[]); return; } setUsers([]); }; useEffect(() => { fetchUsers(); }, [query]); return ( {query === '' ? 'Start typing to load results' : 'No results found.'} {users.map((user) => ( { setValue(currentValue === value ? '' : currentValue); setOpen(false); onChange(users.find((u) => u.id.toString() === currentValue) as User); }} className="truncate" > {user.name} ({user.email}) ))} ); }