import { SortableContext, useSortable } from "@dnd-kit/sortable"; import { Column, TaskCard as Task } from "@/types"; import { CSS } from "@dnd-kit/utilities"; import { useMemo, useState } from "react"; import { PlusIcon, TrashIcon } from "@radix-ui/react-icons"; import TaskCard from "@/components/kanban/task"; interface Props { column: Column; deleteColumn: (id: string) => void; updateColumn: (id: string, title: string) => void; createTask: (columnId: string) => void; updateTask: (id: string, content: string) => void; deleteTask: (id: string) => void; tasks: Task[]; } function ColumnContainer({ column, deleteColumn, updateColumn, createTask, tasks, deleteTask, updateTask, }: Props) { const [editMode, setEditMode] = useState(false); const tasksIds = useMemo(() => { return tasks.map((task) => task.id); }, [tasks]); const { setNodeRef, attributes, listeners, transform, transition, isDragging, } = useSortable({ id: column.id, data: { type: "Column", column, }, disabled: editMode, }); const style = { transition, transform: CSS.Transform.toString(transform), }; if (isDragging) { return (
); } return (
{/* Column title */}
{ setEditMode(true); }} className=" bg-mainBackgroundColor text-md h-[60px] cursor-grab rounded-md rounded-b-none p-3 font-bold border-columnBackgroundColor border-4 flex items-center justify-between " >
0
{!editMode && column.title} {editMode && ( updateColumn(column.id, e.target.value)} autoFocus onBlur={() => { setEditMode(false); }} onKeyDown={(e) => { if (e.key !== "Enter") return; setEditMode(false); }} /> )}
{/* Column task container */}
{tasks.map((task) => ( ))}
{/* Column footer */}
); } export default ColumnContainer;