'use client'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Switch } from '@/components/ui/switch'; const INPUT_TYPE_OPTIONS = [ { value: 'textbox', label: '텍스트 입력' }, { value: 'number', label: '숫자 입력' }, { value: 'dropdown', label: '드롭다운' }, { value: 'checkbox', label: '체크박스' }, { value: 'date', label: '날짜' }, { value: 'textarea', label: '긴 텍스트' }, ]; interface TemplateFieldDialogProps { isTemplateFieldDialogOpen: boolean; setIsTemplateFieldDialogOpen: (open: boolean) => void; editingTemplateFieldId: number | null; setEditingTemplateFieldId: (id: number | null) => void; templateFieldName: string; setTemplateFieldName: (name: string) => void; templateFieldKey: string; setTemplateFieldKey: (key: string) => void; templateFieldInputType: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea'; setTemplateFieldInputType: (type: any) => void; templateFieldRequired: boolean; setTemplateFieldRequired: (required: boolean) => void; templateFieldOptions: string; setTemplateFieldOptions: (options: string) => void; templateFieldDescription: string; setTemplateFieldDescription: (description: string) => void; templateFieldMultiColumn: boolean; setTemplateFieldMultiColumn: (multi: boolean) => void; templateFieldColumnCount: number; setTemplateFieldColumnCount: (count: number) => void; templateFieldColumnNames: string[]; setTemplateFieldColumnNames: (names: string[]) => void; handleAddTemplateField: () => void; } export function TemplateFieldDialog({ isTemplateFieldDialogOpen, setIsTemplateFieldDialogOpen, editingTemplateFieldId, setEditingTemplateFieldId, templateFieldName, setTemplateFieldName, templateFieldKey, setTemplateFieldKey, templateFieldInputType, setTemplateFieldInputType, templateFieldRequired, setTemplateFieldRequired, templateFieldOptions, setTemplateFieldOptions, templateFieldDescription, setTemplateFieldDescription, templateFieldMultiColumn, setTemplateFieldMultiColumn, templateFieldColumnCount, setTemplateFieldColumnCount, templateFieldColumnNames, setTemplateFieldColumnNames, handleAddTemplateField, }: TemplateFieldDialogProps) { return ( { setIsTemplateFieldDialogOpen(open); if (!open) { setEditingTemplateFieldId(null); setTemplateFieldName(''); setTemplateFieldKey(''); setTemplateFieldInputType('textbox'); setTemplateFieldRequired(false); setTemplateFieldOptions(''); setTemplateFieldDescription(''); setTemplateFieldMultiColumn(false); setTemplateFieldColumnCount(2); setTemplateFieldColumnNames(['컬럼1', '컬럼2']); } }}> {editingTemplateFieldId ? '항목 수정' : '항목 추가'} 섹션에 포함될 항목을 설정합니다
setTemplateFieldName(e.target.value)} placeholder="예: 품목명" />
setTemplateFieldKey(e.target.value)} placeholder="예: itemName" />
{templateFieldInputType === 'dropdown' && (
setTemplateFieldOptions(e.target.value)} placeholder="옵션1, 옵션2, 옵션3 (쉼표로 구분)" />
)} {(templateFieldInputType === 'textbox' || templateFieldInputType === 'textarea') && (
{templateFieldMultiColumn && ( <>
{ const count = parseInt(e.target.value) || 2; setTemplateFieldColumnCount(count); const newNames = Array.from({ length: count }, (_, i) => templateFieldColumnNames[i] || `컬럼${i + 1}` ); setTemplateFieldColumnNames(newNames); }} />
{Array.from({ length: templateFieldColumnCount }).map((_, idx) => ( { const newNames = [...templateFieldColumnNames]; newNames[idx] = e.target.value; setTemplateFieldColumnNames(newNames); }} /> ))}
)}
)}