import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Calendar } from "@/components/ui/calendar"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { CalendarIcon, Trash2, X, Flag } from "lucide-react"; import { format } from "date-fns"; import { cn } from "@/lib/utils"; interface TaskFormProps { columns: Array<{ id: string; name: string }>; onSubmit: (data: { title: string; description: string; columnId: string; priority: "low" | "medium" | "high"; dueDate?: Date; }) => Promise; onDelete: () => void; initialData?: { title?: string; description?: string; columnId?: string; priority?: "low" | "medium" | "high"; dueDate?: Date; }; isEditing?: boolean; canEdit?: boolean; } export function TaskForm({ columns, onSubmit, onDelete, initialData, isEditing = false, canEdit = true }: TaskFormProps) { const [title, setTitle] = useState(initialData?.title || ""); const [description, setDescription] = useState(initialData?.description || ""); const [columnId, setColumnId] = useState(initialData?.columnId || columns[0]?.id || ""); const [priority, setPriority] = useState<"low" | "medium" | "high">( initialData?.priority || "medium" ); const [dueDate, setDueDate] = useState(initialData?.dueDate); const [isSubmitting, setIsSubmitting] = useState(false); const currentColumn = columns.find((col) => col.id === columnId); const priorityLabel = { low: "Low", medium: "Medium", high: "High" }[priority]; const priorityColor = { low: "bg-green-100 text-green-800", medium: "bg-yellow-100 text-yellow-800", high: "bg-red-100 text-red-800" }[priority]; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!title.trim() || !columnId) { return; } setIsSubmitting(true); try { await onSubmit({ title: title.trim(), description: description.trim(), columnId, priority, dueDate }); } finally { setIsSubmitting(false); } }; return (
{canEdit ? ( setTitle(e.target.value)} placeholder="Enter task title" required className="w-full" /> ) : (
{title || No title}
)}
{canEdit ? (