calendar 28
This commit is contained in:
parent
0dd6980218
commit
0a982dd218
@ -786,7 +786,11 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleEventDelete = async () => {
|
const handleEventDelete = async () => {
|
||||||
if (!selectedEvent) return;
|
if (!selectedEvent?.id) return;
|
||||||
|
|
||||||
|
if (!confirm("Êtes-vous sûr de vouloir supprimer cet événement ?")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@ -795,12 +799,35 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error("Failed to delete event");
|
const error = await response.json();
|
||||||
|
throw new Error(error.message || "Failed to delete event");
|
||||||
}
|
}
|
||||||
|
|
||||||
await fetchCalendars();
|
// Remove the event from local state
|
||||||
|
const updatedCalendars = calendars.map(cal => ({
|
||||||
|
...cal,
|
||||||
|
events: cal.events.filter(e => e.id !== selectedEvent.id)
|
||||||
|
}));
|
||||||
|
setCalendars(updatedCalendars);
|
||||||
|
|
||||||
|
// Close modal and reset form
|
||||||
setIsEventModalOpen(false);
|
setIsEventModalOpen(false);
|
||||||
setSelectedEvent(null);
|
setSelectedEvent(null);
|
||||||
|
setEventForm({
|
||||||
|
title: "",
|
||||||
|
description: null,
|
||||||
|
start: "",
|
||||||
|
end: "",
|
||||||
|
allDay: false,
|
||||||
|
location: null,
|
||||||
|
calendarId: selectedCalendarId
|
||||||
|
});
|
||||||
|
|
||||||
|
// Force calendar refresh
|
||||||
|
if (calendarRef.current) {
|
||||||
|
const calendarApi = calendarRef.current.getApi();
|
||||||
|
calendarApi.refetchEvents();
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error deleting event:", error);
|
console.error("Error deleting event:", error);
|
||||||
setError(error instanceof Error ? error.message : "Failed to delete event");
|
setError(error instanceof Error ? error.message : "Failed to delete event");
|
||||||
@ -1003,19 +1030,40 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
backgroundColor: cal.color,
|
backgroundColor: cal.color,
|
||||||
borderColor: cal.color,
|
borderColor: cal.color,
|
||||||
textColor: '#ffffff',
|
textColor: '#ffffff',
|
||||||
|
extendedProps: {
|
||||||
|
location: event.location,
|
||||||
|
description: event.description,
|
||||||
|
calendarId: event.calendarId,
|
||||||
|
originalEvent: event
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
)}
|
)}
|
||||||
eventContent={(arg) => (
|
eventContent={(arg) => (
|
||||||
<div className="p-1">
|
<div className="p-1 overflow-hidden">
|
||||||
<div className="font-semibold">{arg.event.title}</div>
|
<div className="font-semibold truncate">{arg.event.title}</div>
|
||||||
|
{!arg.event.allDay && (
|
||||||
|
<div className="text-xs opacity-90">
|
||||||
|
{new Date(arg.event.start).toLocaleTimeString('fr-FR', {
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit'
|
||||||
|
})}
|
||||||
|
{arg.event.end && (
|
||||||
|
<> - {new Date(arg.event.end).toLocaleTimeString('fr-FR', {
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit'
|
||||||
|
})}</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{arg.event.extendedProps.location && (
|
{arg.event.extendedProps.location && (
|
||||||
<div className="text-xs opacity-75">
|
<div className="text-xs opacity-75 truncate">
|
||||||
<MapPin className="inline-block w-3 h-3 mr-1" />
|
<MapPin className="inline-block w-3 h-3 mr-1" />
|
||||||
{arg.event.extendedProps.location}
|
{arg.event.extendedProps.location}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
eventClassNames="rounded-md shadow-sm hover:shadow-md transition-shadow cursor-pointer"
|
||||||
locale={frLocale}
|
locale={frLocale}
|
||||||
selectable={true}
|
selectable={true}
|
||||||
selectMirror={true}
|
selectMirror={true}
|
||||||
@ -1025,6 +1073,15 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
eventClick={handleEventClick}
|
eventClick={handleEventClick}
|
||||||
height="auto"
|
height="auto"
|
||||||
aspectRatio={1.8}
|
aspectRatio={1.8}
|
||||||
|
slotMinTime="06:00:00"
|
||||||
|
slotMaxTime="22:00:00"
|
||||||
|
allDaySlot={true}
|
||||||
|
allDayText="Toute la journée"
|
||||||
|
slotLabelFormat={{
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit',
|
||||||
|
hour12: false
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user