import { useDroppable } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { ListWithCards, Card as CardType } from '../../types/kanban'; import { KanbanCard } from './KanbanCard'; import { CreateCardModal } from './CreateCardModal'; import { EditListModal } from './EditListModal'; import { DeleteListModal } from './DeleteListModal'; import Edit2Icon from '../icons/Edit2Icon'; import Trash2Icon from '../icons/Trash2Icon'; import { useModal } from '../../context/modals/useModal'; export interface KanbanColumnProps { list: ListWithCards; cards: CardType[]; onOpenCardModal: (card: CardType) => void; onCardCreate: (data: { name: string; description?: string }) => Promise; onListEdit?: (name: string) => Promise; onListDelete?: () => Promise; dragHandleProps?: { attributes: any; listeners: any; }; } export function KanbanColumn({ list, cards, onOpenCardModal, onCardCreate, onListEdit, onListDelete, dragHandleProps, }: KanbanColumnProps) { const { setNodeRef, isOver } = useDroppable({ id: `LIST_${list.id}`, }); const { openModal } = useModal(); const handleAddCard = () => { openModal((props) => ); }; const handleEditList = () => { if (!onListEdit) return; openModal((props) => ( { await onListEdit(name); }} /> )); }; const handleDeleteList = () => { if (!onListDelete) return; openModal((props) => ( { await onListDelete(); }} /> )); }; return (
{/* Drag Handle Icon */}

{list.name}

{onListEdit && ( )} {onListDelete && ( )}
{cards.length} cards
card.id.toString())} strategy={verticalListSortingStrategy} >
{cards.map((card) => ( onOpenCardModal(card)} /> ))}
); }