From 270a2bd4d0c7b2329155b57d4e6f1e43649457c6 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Tue, 30 Sep 2025 10:11:44 +0200 Subject: [PATCH] feat: enhance QuickAddTask component with new UI elements - Replaced input fields with `FormField`, `PrioritySelector`, and `DateTimeInput` for improved user experience and consistency. - Integrated `LoadingSpinner` to indicate submission state, enhancing feedback during task creation. - Streamlined state management for form fields, ensuring better data handling. --- src/components/kanban/QuickAddTask.tsx | 57 +++++++++------------- src/components/ui/DateTimeInput.tsx | 38 +++++++++++++++ src/components/ui/FormField.tsx | 67 ++++++++++++++++++++++++++ src/components/ui/LoadingSpinner.tsx | 32 ++++++++++++ src/components/ui/PrioritySelector.tsx | 42 ++++++++++++++++ 5 files changed, 202 insertions(+), 34 deletions(-) create mode 100644 src/components/ui/DateTimeInput.tsx create mode 100644 src/components/ui/FormField.tsx create mode 100644 src/components/ui/LoadingSpinner.tsx create mode 100644 src/components/ui/PrioritySelector.tsx diff --git a/src/components/kanban/QuickAddTask.tsx b/src/components/kanban/QuickAddTask.tsx index 0bb65e6..2561a64 100644 --- a/src/components/kanban/QuickAddTask.tsx +++ b/src/components/kanban/QuickAddTask.tsx @@ -3,10 +3,12 @@ import { useState, useRef, useEffect } from 'react'; import { Card } from '@/components/ui/Card'; import { TagInput } from '@/components/ui/TagInput'; +import { FormField } from '@/components/ui/FormField'; +import { PrioritySelector } from '@/components/ui/PrioritySelector'; +import { DateTimeInput } from '@/components/ui/DateTimeInput'; +import { LoadingSpinner } from '@/components/ui/LoadingSpinner'; import { TaskStatus, TaskPriority } from '@/lib/types'; import { CreateTaskData } from '@/clients/tasks-client'; -import { getAllPriorities } from '@/lib/status-config'; -import { formatDateForDateTimeInput, parseDateTimeInput } from '@/lib/date-utils'; interface QuickAddTaskProps { status: TaskStatus; @@ -133,44 +135,38 @@ export function QuickAddTask({ status, onSubmit, onCancel, swimlaneContext }: Qu {/* Header avec titre et priorité */}
- setFormData(prev => ({ ...prev, title: e.target.value }))} + onChange={(value) => setFormData(prev => ({ ...prev, title: value }))} onKeyDown={(e) => handleKeyDown(e, 'title')} onFocus={() => setActiveField('title')} placeholder="Titre de la tâche..." disabled={isSubmitting} - className="flex-1 min-w-0 bg-transparent border-none outline-none text-[var(--foreground)] font-mono text-sm font-medium placeholder-[var(--muted-foreground)] leading-tight" + className="flex-1 min-w-0" + autoFocus /> - {/* Indicateur de priorité */} - + className="flex-shrink-0 w-10" + />
{/* Description */} -