feat: enhance column visibility toggle with task counts

- Added `tasks` prop to `ColumnVisibilityToggle` for displaying task counts per status.
- Updated `KanbanFilters` to calculate and show counts for priorities and tags, improving filter visibility.
- Integrated task counts into UI elements for better user feedback on task distribution across statuses, priorities, and tags.
This commit is contained in:
Julien Froidefond
2025-09-15 08:35:55 +02:00
parent c8cacf1714
commit 165d414fef
4 changed files with 40 additions and 7 deletions

View File

@@ -1,21 +1,33 @@
'use client';
import { TaskStatus } from '@/lib/types';
import { useMemo } from 'react';
import { Task, TaskStatus } from '@/lib/types';
import { getAllStatuses } from '@/lib/status-config';
interface ColumnVisibilityToggleProps {
hiddenStatuses: Set<TaskStatus>;
onToggleStatus: (status: TaskStatus) => void;
tasks: Task[];
className?: string;
}
export function ColumnVisibilityToggle({
hiddenStatuses,
onToggleStatus,
tasks,
className = ""
}: ColumnVisibilityToggleProps) {
const statuses = getAllStatuses();
// Calculer les compteurs pour chaque statut
const statusCounts = useMemo(() => {
const counts: Record<string, number> = {};
statuses.forEach(status => {
counts[status.key] = tasks.filter(task => task.status === status.key).length;
});
return counts;
}, [tasks, statuses]);
return (
<div className={`flex items-center gap-2 ${className}`}>
<span className="text-sm font-mono font-medium text-slate-400">
@@ -32,7 +44,7 @@ export function ColumnVisibilityToggle({
}`}
title={hiddenStatuses.has(statusConfig.key) ? `Afficher ${statusConfig.label}` : `Masquer ${statusConfig.label}`}
>
{hiddenStatuses.has(statusConfig.key) ? '👁️‍🗨️' : '👁️'} {statusConfig.label}
{hiddenStatuses.has(statusConfig.key) ? '👁️‍🗨️' : '👁️'} {statusConfig.label} ({statusCounts[statusConfig.key] || 0})
</button>
))}
</div>