'use client'; import { useState, useEffect } from 'react'; import { Task } from '@/lib/types'; import { tasksClient } from '@/clients/tasks-client'; import { Button } from '@/components/ui/Button'; interface TaskSelectorProps { selectedTaskId?: string; onTaskSelect: (taskId: string | undefined) => void; disabled?: boolean; } export function TaskSelector({ selectedTaskId, onTaskSelect, disabled }: TaskSelectorProps) { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(false); const [isOpen, setIsOpen] = useState(false); const [search, setSearch] = useState(''); const selectedTask = tasks.find(task => task.id === selectedTaskId); useEffect(() => { if (isOpen && tasks.length === 0) { loadTasks(); } }, [isOpen]); const loadTasks = async () => { setLoading(true); try { const response = await tasksClient.getTasks({ status: ['todo', 'in_progress', 'backlog'], limit: 100 }); setTasks(response.data); } catch (error) { console.error('Erreur lors du chargement des tâches:', error); } finally { setLoading(false); } }; const filteredTasks = tasks.filter(task => task.title.toLowerCase().includes(search.toLowerCase()) || task.description?.toLowerCase().includes(search.toLowerCase()) ); const handleTaskSelect = (taskId: string) => { onTaskSelect(taskId); setIsOpen(false); setSearch(''); }; const handleClear = () => { onTaskSelect(undefined); setIsOpen(false); setSearch(''); }; if (!isOpen) { return (
{selectedTask && ( )}
); } return (

Lier à une tâche

setSearch(e.target.value)} className="w-full mb-2 px-2 py-1 text-xs border border-[var(--border)] rounded bg-[var(--background)] text-[var(--foreground)]" autoFocus />
{loading ? (
Chargement...
) : filteredTasks.length === 0 ? (
Aucune tâche trouvée
) : ( filteredTasks.map((task) => ( )) )}
); }