'use client'; /* IMPORT */ import { Button } from '@/components/ui/button'; import { Check, ChevronsUpDown } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, } from '@/components/ui/command'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { useMemo, useState } from 'react'; import { User } from '@/db/schema'; // ---------------------------------------------------------------------------------------------------- /* TYPES */ interface UserComboBoxProps { users: Partial[]; value: number | null; onChange: (value: number) => void; placeholder?: string; disabled?: boolean; } // ---------------------------------------------------------------------------------------------------- /* User Combo Box Component */ function UserComboBox(props: UserComboBoxProps) { const { users, value, onChange, placeholder = '담당자 선택...', disabled = false, } = props; const [open, setOpen] = useState(false); const [inputValue, setInputValue] = useState(''); const selectedUser = useMemo(() => { return users.find(user => user.id === value) }, [users, value]); return ( 검색 결과가 존재하지 않습니다. {users.map((user) => ( { onChange(user.id!) setOpen(false) }} >
{user.name} {user.deptName && ( ({user.deptName}) )}
{user.email}
))}
) } // ---------------------------------------------------------------------------------------------------- /* EXPORT */ export default UserComboBox;