'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')}
)}
))}
))}
)
}