import { usePlanning } from '@/context/PlanningContext'; import { format } from 'date-fns'; import React from 'react'; export default function EventModal({ isOpen, onClose, eventData, setEventData }) { const { addEvent, updateEvent, deleteEvent, schedules } = usePlanning(); // S'assurer que scheduleId est défini lors du premier rendu React.useEffect(() => { if (!eventData.scheduleId && schedules.length > 0) { setEventData(prev => ({ ...prev, scheduleId: schedules[0].id, color: schedules[0].color })); } }, [schedules, eventData.scheduleId]); if (!isOpen) return null; const recurrenceOptions = [ { value: 'none', label: 'Aucune' }, { value: 'daily', label: 'Quotidienne' }, { value: 'weekly', label: 'Hebdomadaire' }, { value: 'monthly', label: 'Mensuelle' }, { value: 'custom', label: 'Personnalisée' } // Nouvelle option ]; const daysOfWeek = [ { value: 1, label: 'Lun' }, { value: 2, label: 'Mar' }, { value: 3, label: 'Mer' }, { value: 4, label: 'Jeu' }, { value: 5, label: 'Ven' }, { value: 6, label: 'Sam' }, { value: 0, label: 'Dim' } ]; const handleSubmit = (e) => { e.preventDefault(); if (!eventData.scheduleId) { alert('Veuillez sélectionner un planning'); return; } const selectedSchedule = schedules.find(s => s.id === eventData.scheduleId); if (eventData.id) { updateEvent(eventData.id, { ...eventData, scheduleId: eventData.scheduleId, // S'assurer que scheduleId est bien défini color: eventData.color || selectedSchedule?.color }); } else { addEvent({ ...eventData, id: `event-${Date.now()}`, scheduleId: eventData.scheduleId, // S'assurer que scheduleId est bien défini color: eventData.color || selectedSchedule?.color }); } onClose(); }; const handleDelete = () => { if (eventData.id && confirm('Êtes-vous sûr de vouloir supprimer cet événement ?')) { deleteEvent(eventData.id); onClose(); } }; return (

{eventData.id ? 'Modifier l\'événement' : 'Nouvel événement'}

{/* Titre */}
setEventData({ ...eventData, title: e.target.value })} className="w-full p-2 border rounded focus:outline-none focus:ring-2 focus:ring-emerald-500" required />
{/* Description */}