refactor: userpreferences are now in the DB
This commit is contained in:
@@ -4,16 +4,14 @@ import { Task, TaskStatus } from '@/lib/types';
|
||||
import { KanbanColumn } from './Column';
|
||||
import { CreateTaskData } from '@/clients/tasks-client';
|
||||
import { useMemo, useState } from 'react';
|
||||
import { useColumnVisibility } from '@/hooks/useColumnVisibility';
|
||||
import { useUserPreferences } from '@/contexts/UserPreferencesContext';
|
||||
import { useDragAndDrop } from '@/hooks/useDragAndDrop';
|
||||
import { getAllStatuses } from '@/lib/status-config';
|
||||
import {
|
||||
DndContext,
|
||||
DragEndEvent,
|
||||
DragOverlay,
|
||||
DragStartEvent,
|
||||
PointerSensor,
|
||||
useSensor,
|
||||
useSensors,
|
||||
DragStartEvent
|
||||
} from '@dnd-kit/core';
|
||||
import { TaskCard } from './TaskCard';
|
||||
|
||||
@@ -30,18 +28,8 @@ interface KanbanBoardProps {
|
||||
|
||||
export function KanbanBoard({ tasks, onCreateTask, onDeleteTask, onEditTask, onUpdateTitle, onUpdateStatus, compactView = false, visibleStatuses }: KanbanBoardProps) {
|
||||
const [activeTask, setActiveTask] = useState<Task | null>(null);
|
||||
|
||||
// Gestion de la visibilité des colonnes (utilise les props si disponibles)
|
||||
const { getVisibleStatuses } = useColumnVisibility();
|
||||
|
||||
// Configuration des capteurs pour le drag & drop
|
||||
const sensors = useSensors(
|
||||
useSensor(PointerSensor, {
|
||||
activationConstraint: {
|
||||
distance: 8, // Évite les clics accidentels
|
||||
},
|
||||
})
|
||||
);
|
||||
const { isColumnVisible } = useUserPreferences();
|
||||
const { isMounted, sensors } = useDragAndDrop();
|
||||
// Organiser les tâches par statut
|
||||
const tasksByStatus = useMemo(() => {
|
||||
const grouped = tasks.reduce((acc, task) => {
|
||||
@@ -66,7 +54,7 @@ export function KanbanBoard({ tasks, onCreateTask, onDeleteTask, onEditTask, onU
|
||||
// Filtrer les colonnes visibles
|
||||
const visibleColumns = visibleStatuses ?
|
||||
allColumns.filter(column => visibleStatuses.includes(column.id)) :
|
||||
getVisibleStatuses(allColumns);
|
||||
allColumns.filter(column => isColumnVisible(column.id));
|
||||
|
||||
|
||||
// Gestion du début du drag
|
||||
@@ -94,17 +82,10 @@ export function KanbanBoard({ tasks, onCreateTask, onDeleteTask, onEditTask, onU
|
||||
await onUpdateStatus(taskId, newStatus);
|
||||
};
|
||||
|
||||
return (
|
||||
<DndContext
|
||||
id="kanban-board"
|
||||
sensors={sensors}
|
||||
onDragStart={handleDragStart}
|
||||
onDragEnd={handleDragEnd}
|
||||
>
|
||||
<div className="h-full flex flex-col bg-[var(--background)]">
|
||||
{/* Espacement supérieur */}
|
||||
<div className="pt-4"></div>
|
||||
|
||||
const content = (
|
||||
<div className="h-full flex flex-col bg-[var(--background)]">
|
||||
{/* Espacement supérieur */}
|
||||
<div className="pt-4"></div>
|
||||
|
||||
{/* Board tech dark */}
|
||||
<div className="flex-1 flex gap-6 overflow-x-auto p-6">
|
||||
@@ -121,9 +102,22 @@ export function KanbanBoard({ tasks, onCreateTask, onDeleteTask, onEditTask, onU
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
</div>
|
||||
if (!isMounted) {
|
||||
return content;
|
||||
}
|
||||
|
||||
return (
|
||||
<DndContext
|
||||
id="kanban-board"
|
||||
sensors={sensors}
|
||||
onDragStart={handleDragStart}
|
||||
onDragEnd={handleDragEnd}
|
||||
>
|
||||
{content}
|
||||
|
||||
{/* Overlay pour le drag & drop */}
|
||||
<DragOverlay>
|
||||
{activeTask ? (
|
||||
|
||||
Reference in New Issue
Block a user