'use client'; import { useState } from 'react'; import Link from 'next/link'; import { DailyCheckbox, DailyCheckboxType } from '@/lib/types'; import { Input } from '@/components/ui/Input'; import { EditCheckboxModal } from './EditCheckboxModal'; interface DailyCheckboxItemProps { checkbox: DailyCheckbox; onToggle: (checkboxId: string) => Promise; onUpdate: (checkboxId: string, text: string, type: DailyCheckboxType, taskId?: string) => Promise; onDelete: (checkboxId: string) => Promise; saving?: boolean; } export function DailyCheckboxItem({ checkbox, onToggle, onUpdate, onDelete, saving = false }: DailyCheckboxItemProps) { const [inlineEditingId, setInlineEditingId] = useState(null); const [inlineEditingText, setInlineEditingText] = useState(''); const [editingCheckbox, setEditingCheckbox] = useState(null); // Édition inline simple const handleStartInlineEdit = () => { setInlineEditingId(checkbox.id); setInlineEditingText(checkbox.text); }; const handleSaveInlineEdit = async () => { if (!inlineEditingText.trim()) return; try { await onUpdate(checkbox.id, inlineEditingText.trim(), checkbox.type, checkbox.taskId); setInlineEditingId(null); setInlineEditingText(''); } catch (error) { console.error('Erreur lors de la modification:', error); } }; const handleCancelInlineEdit = () => { setInlineEditingId(null); setInlineEditingText(''); }; const handleInlineEditKeyPress = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault(); handleSaveInlineEdit(); } else if (e.key === 'Escape') { e.preventDefault(); handleCancelInlineEdit(); } }; // Modal d'édition avancée const handleStartAdvancedEdit = () => { setEditingCheckbox(checkbox); }; const handleSaveAdvancedEdit = async (text: string, type: DailyCheckboxType, taskId?: string) => { await onUpdate(checkbox.id, text, type, taskId); setEditingCheckbox(null); }; const handleCloseAdvancedEdit = () => { setEditingCheckbox(null); }; return ( <>
{/* Checkbox */} onToggle(checkbox.id)} disabled={saving} className="w-3.5 h-3.5 rounded border border-[var(--border)] text-[var(--primary)] focus:ring-[var(--primary)]/20 focus:ring-1" /> {/* Contenu principal */} {inlineEditingId === checkbox.id ? ( setInlineEditingText(e.target.value)} onKeyDown={handleInlineEditKeyPress} onBlur={handleSaveInlineEdit} autoFocus className="flex-1 h-7 text-sm" /> ) : (
{/* Texte cliquable pour édition inline */} {checkbox.text} {/* Icône d'édition avancée */}
)} {/* Lien vers la tâche si liée */} {checkbox.task && ( {checkbox.task.title} )} {/* Bouton de suppression */}
{/* Modal d'édition avancée */} {editingCheckbox && ( )} ); }