feat: add column visibility toggle to Kanban and Swimlanes boards

- Integrated `useColumnVisibility` hook for managing column visibility states.
- Added `ColumnVisibilityToggle` component to both `KanbanBoard` and `SwimlanesBoard` for user control over visible columns.
- Updated rendering logic to filter and display only visible columns, enhancing user experience and task organization.
This commit is contained in:
Julien Froidefond
2025-09-14 22:34:51 +02:00
parent 86920d1056
commit 1597f0fea1
4 changed files with 121 additions and 7 deletions

View File

@@ -0,0 +1,35 @@
import { useState } from 'react';
import { TaskStatus } from '@/lib/types';
export function useColumnVisibility(initialHidden: TaskStatus[] = []) {
const [hiddenStatuses, setHiddenStatuses] = useState<Set<TaskStatus>>(
new Set(initialHidden)
);
const toggleStatusVisibility = (status: TaskStatus) => {
setHiddenStatuses(prev => {
const newSet = new Set(prev);
if (newSet.has(status)) {
newSet.delete(status);
} else {
newSet.add(status);
}
return newSet;
});
};
const getVisibleStatuses = <T extends { id: TaskStatus }>(statuses: T[]): T[] => {
return statuses.filter(status => !hiddenStatuses.has(status.id));
};
const isStatusVisible = (status: TaskStatus): boolean => {
return !hiddenStatuses.has(status);
};
return {
hiddenStatuses,
toggleStatusVisibility,
getVisibleStatuses,
isStatusVisible
};
}