import { use, useEffect, useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Trash2 } from "lucide-react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; interface ColumnDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSubmit: (data: { name: string; position?: number }) => Promise; onDelete?: () => void; columns: number; initialData?: { name?: string; position?: number; }; isEditing?: boolean; } export function ColumnDialog({ open, onOpenChange, onSubmit, onDelete, initialData, columns, isEditing = false }: ColumnDialogProps) { const [name, setName] = useState(initialData?.name || ""); const [position, setPosition] = useState(initialData?.position?.toString() || "0"); const [isSubmitting, setIsSubmitting] = useState(false); useEffect(() => { if (initialData?.name) { setName(initialData.name); } if (initialData?.position !== undefined) { setPosition(initialData.position.toString()); } }, [initialData?.name, initialData?.position, setName]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) return; setIsSubmitting(true); try { await onSubmit({ name: name.trim(), position: parseInt(position) || 0 }); onOpenChange(false); // Reset form setName(""); } finally { setIsSubmitting(false); } }; const handleDelete = () => { if (!onDelete) { return; } setIsSubmitting(true); try { onDelete(); onOpenChange(false); } finally { setIsSubmitting(false); } }; return ( {isEditing ? "Edit Column" : "Create New Column"}
setName(e.target.value)} placeholder="Enter column name" required />
{isEditing && (
)}
{isEditing && onDelete && ( )}
); }