'use client' import { format } from 'date-fns' import type { TimelineItem } from './types' import type { UseGanttStateReturn } from './hooks/useGanttState' export interface GanttBoardViewProps { boardColumns: UseGanttStateReturn['boardColumns'] boardDragItem: UseGanttStateReturn['boardDragItem'] setBoardDragItem: UseGanttStateReturn['setBoardDragItem'] onStatusChange: UseGanttStateReturn['onStatusChange'] categoryColors: UseGanttStateReturn['categoryColors'] handleItemClick: UseGanttStateReturn['handleItemClick'] } export function GanttBoardView({ boardColumns, boardDragItem, setBoardDragItem, onStatusChange, categoryColors, handleItemClick, }: GanttBoardViewProps) { return (
{boardColumns.map((col) => (
{ e.preventDefault(); e.currentTarget.classList.add('gantt-board-drag-over') }} onDragLeave={(e) => { e.currentTarget.classList.remove('gantt-board-drag-over') }} onDrop={(e) => { e.preventDefault() e.currentTarget.classList.remove('gantt-board-drag-over') if (boardDragItem && onStatusChange) { onStatusChange(boardDragItem, col.status) } setBoardDragItem(null) }} >
{col.status.replace(/_/g, ' ')} {col.items.length}
{col.items.map((item) => (
setBoardDragItem(item.id)} onDragEnd={() => setBoardDragItem(null)} onClick={() => handleItemClick(item)} >
{item.title}
{item.category && ( {item.category} )} {item.endDate && ( {format(new Date(item.endDate), 'MMM d')} )}
))}
))}
) }