feat: add task creation functionality to Kanban components

- Integrated `onCreateTask` prop into `PrioritySwimlanesBoard`, `SwimlanesBoard`, and `SwimlanesBase` for task creation support.
- Implemented quick add feature in `DroppableColumn` for streamlined task addition.
- Added modal for complete task creation in `SwimlanesBase`, enhancing user experience.
- Updated relevant components to handle loading state during task creation.
This commit is contained in:
Julien Froidefond
2025-09-15 11:16:32 +02:00
parent 1a21f9b88b
commit dce11e0569
4 changed files with 112 additions and 9 deletions

View File

@@ -1,28 +1,33 @@
'use client';
import { Task, TaskStatus } from '@/lib/types';
import { CreateTaskData } from '@/clients/tasks-client';
import { useMemo } from 'react';
import { useTasksContext } from '@/contexts/TasksContext';
import { SwimlanesBase, SwimlaneData } from './SwimlanesBase';
interface SwimlanesboardProps {
tasks: Task[];
onCreateTask?: (data: CreateTaskData) => Promise<Task | null>;
onDeleteTask?: (taskId: string) => Promise<void>;
onEditTask?: (task: Task) => void;
onUpdateTitle?: (taskId: string, newTitle: string) => Promise<void>;
onUpdateStatus?: (taskId: string, newStatus: TaskStatus) => Promise<void>;
compactView?: boolean;
visibleStatuses?: TaskStatus[];
loading?: boolean;
}
export function SwimlanesBoard({
tasks,
onCreateTask,
onDeleteTask,
onEditTask,
onUpdateTitle,
onUpdateStatus,
compactView = false,
visibleStatuses
visibleStatuses,
loading = false
}: SwimlanesboardProps) {
const { tags: availableTags } = useTasksContext();
@@ -77,12 +82,14 @@ export function SwimlanesBoard({
tasks={tasks}
title="Swimlanes par Tag"
swimlanes={swimlanesData}
onCreateTask={onCreateTask}
onDeleteTask={onDeleteTask}
onEditTask={onEditTask}
onUpdateTitle={onUpdateTitle}
onUpdateStatus={onUpdateStatus}
compactView={compactView}
visibleStatuses={visibleStatuses}
loading={loading}
/>
);
}