"use client"; import React, { useState, useEffect } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Badge } from "@/components/ui/badge"; import { TableCategoryValue } from "@/types/tableCategoryValue"; interface CategoryValueEditDialogProps { open: boolean; onOpenChange: (open: boolean) => void; value: TableCategoryValue; onUpdate: (valueId: number, updates: Partial) => void; columnLabel: string; } // 기본 색상 팔레트 const DEFAULT_COLORS = [ "#ef4444", // red "#f97316", // orange "#f59e0b", // amber "#eab308", // yellow "#84cc16", // lime "#22c55e", // green "#10b981", // emerald "#14b8a6", // teal "#06b6d4", // cyan "#0ea5e9", // sky "#3b82f6", // blue "#6366f1", // indigo "#8b5cf6", // violet "#a855f7", // purple "#d946ef", // fuchsia "#ec4899", // pink "#64748b", // slate "#6b7280", // gray ]; export const CategoryValueEditDialog: React.FC< CategoryValueEditDialogProps > = ({ open, onOpenChange, value, onUpdate, columnLabel }) => { const [valueLabel, setValueLabel] = useState(value.valueLabel); const [description, setDescription] = useState(value.description || ""); const [color, setColor] = useState(value.color || "none"); useEffect(() => { setValueLabel(value.valueLabel); setDescription(value.description || ""); setColor(value.color || "none"); }, [value]); const handleSubmit = () => { if (!valueLabel.trim()) { return; } onUpdate(value.valueId!, { valueLabel: valueLabel.trim(), description: description.trim() || undefined, // 빈 문자열 대신 undefined color: color === "none" ? null : color, // "none"은 null로 (배지 없음) }); }; return ( 카테고리 값 편집 {columnLabel} - {value.valueCode}
setValueLabel(e.target.value)} className="h-8 text-xs sm:h-10 sm:text-sm mt-1.5" autoFocus />
{DEFAULT_COLORS.map((c) => (
{color && color !== "none" ? ( 미리보기 ) : ( 배지 없음 )}