import { usePlanning } from '@/context/PlanningContext'; import { format } from 'date-fns'; import React from 'react'; export default function EventModal({ isOpen, onClose, eventData, setEventData, }) { const { addEvent, handleUpdateEvent, handleDeleteEvent, schedules } = usePlanning(); // S'assurer que planning est défini lors du premier rendu React.useEffect(() => { if (!eventData.planning && schedules.length > 0) { setEventData((prev) => ({ ...prev, planning: schedules[0].id, color: schedules[0].color, })); } }, [schedules, eventData.planning]); 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.planning) { alert('Veuillez sélectionner un planning'); return; } const selectedSchedule = schedules.find((s) => s.id === eventData.planning); if (eventData.id) { handleUpdateEvent(eventData.id, { ...eventData, planning: eventData.planning, // S'assurer que planning est bien défini color: eventData.color || selectedSchedule?.color, }); } else { addEvent({ ...eventData, id: `event-${Date.now()}`, planning: eventData.planning, // S'assurer que planning 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 ?') ) { handleDeleteEvent(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 */}