import { useEffect, useMemo, useState } from 'react' import { DragContextProvider } from '@/components/board/drag-context-provider' import { DomainGroupItem } from '@/components/groups-board/domain-group-item' import { DomainRow } from '@/components/groups-board/domain-row' import type { BoardState } from '@/components/groups-board/types' import type { DomainListItem, Group } from '@/lib/schemas' import { AppAccordion } from '@/components/app-accordion' interface GroupsBoardProps { board: BoardState activeDomain?: DomainListItem dragDisabled?: boolean onDragStart: Parameters[0]['onDragStart'] onDragEnd: Parameters[0]['onDragEnd'] onEditGroup?: (group: Group) => void onDeleteGroup?: (group: Group) => void serviceLabelsByDomain?: Map } export function GroupsBoard({ board, activeDomain, dragDisabled = false, onDragStart, onDragEnd, onEditGroup, onDeleteGroup, serviceLabelsByDomain, }: GroupsBoardProps) { const columnIds = useMemo( () => board.columns.map((column) => column.id), [board.columns], ) const columnIdsKey = columnIds.join(',') const [openColumns, setOpenColumns] = useState([]) useEffect(() => { setOpenColumns((prev) => { const preserved = prev.filter((id) => columnIds.includes(id)) const added = columnIds.filter((id) => !preserved.includes(id)) if (preserved.length === 0 && added.length > 0) { return columnIds } return [...preserved, ...added] }) }, [columnIdsKey, columnIds]) const isDragging = activeDomain != null function handleExpandColumn(columnId: string) { setOpenColumns((prev) => prev.includes(columnId) ? prev : [...prev, columnId], ) } return ( ) : null } > {board.columns.map((column) => ( ))} ) }