import { useState } from "react"; import { Button, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@common/components"; interface UpperCodeSelectDialogProps { open: boolean; onOpenChange: (open: boolean) => void; candidates: Record[]; codeField: string; nameField: string; onSelect: (item: Record) => void; extraFields?: { field: string; header: string }[]; } export const UpperCodeSelectDialog = ({ open, onOpenChange, candidates, codeField, nameField, extraFields, onSelect, }: UpperCodeSelectDialogProps) => { const [selectedCode, setSelectedCode] = useState(null); const handleSelect = () => { const item = candidates.find((c) => c[codeField] === selectedCode); if (!item) return; onSelect(item); onOpenChange(false); setSelectedCode(null); }; const handleClose = () => { onOpenChange(false); setSelectedCode(null); }; return ( 상위 코드 리스트
{extraFields?.map((f) => ( ))}
코드 동명 {f.header}
{candidates.length === 0 ? ( ) : ( candidates.map((item,index) => ( setSelectedCode(item[codeField] ?? "")} className={`cursor-pointer border-b border-gray-200 transition-colors ${selectedCode === item[codeField] ? "bg-blue-100" : "hover:bg-gray-50" }`} > {extraFields?.map((f) => ( ))} )) )}
후보 코드가 없습니다.
{item[codeField]} {item[nameField]} {item[f.field]}
); };