diff --git a/app/[locale]/calendar/page.tsx b/app/[locale]/calendar/page.tsx index ed252007..df64b196 100644 --- a/app/[locale]/calendar/page.tsx +++ b/app/[locale]/calendar/page.tsx @@ -236,10 +236,12 @@ export default function CalendarPage() { const openCreateModal = useCallback((date?: Date, endDate?: Date) => { setEditEvent(null); - setDefaultModalDate(date || selectedDate); + const d = date || selectedDate; + setDefaultModalDate(d); setDefaultModalEndDate(endDate); + setSelectedDate(d); setShowEventModal(true); - }, [selectedDate]); + }, [selectedDate, setSelectedDate]); const openEditModal = useCallback((event: CalendarEvent) => { setEditEvent(event); @@ -638,6 +640,7 @@ export default function CalendarPage() { onSelectEvent={handleSelectEvent} onHoverEvent={handleHoverEvent} onHoverLeave={handleHoverLeave} + onCreateAtTime={openCreateModal} firstDayOfWeek={firstDayOfWeek} isMobile={isMobile} /> @@ -690,7 +693,7 @@ export default function CalendarPage() { return (
{viewContent} - {isLoadingEvents && calendars.length > 0 && ( + {isLoadingEvents && calendars.length > 0 && events.length === 0 && (
@@ -791,6 +794,7 @@ export default function CalendarPage() { {!isMobile && showEventModal && (
void; onHoverEvent?: (event: CalendarEvent, anchorRect: DOMRect) => void; onHoverLeave?: () => void; + onCreateAtTime?: (date: Date) => void; firstDayOfWeek?: number; isMobile?: boolean; } @@ -34,6 +35,7 @@ export function CalendarMonthView({ onSelectEvent, onHoverEvent, onHoverLeave, + onCreateAtTime, firstDayOfWeek = 1, isMobile, }: CalendarMonthViewProps) { @@ -165,6 +167,7 @@ export function CalendarMonthView({ aria-selected={selected} aria-label={fullDateLabel} onClick={() => onSelectDate(day)} + onDoubleClick={() => onCreateAtTime?.(day)} onDragOver={(e) => handleCellDragOver(e, key)} onDragLeave={handleCellDragLeave} onDrop={(e) => handleCellDrop(e, day)} diff --git a/hooks/use-time-grid-interactions.ts b/hooks/use-time-grid-interactions.ts index fb2f55f2..675628cc 100644 --- a/hooks/use-time-grid-interactions.ts +++ b/hooks/use-time-grid-interactions.ts @@ -239,9 +239,10 @@ export function useTimeGridInteractions({ clearTimeout(clickTimerRef.current); clickTimerRef.current = null; } - const key = format(day, "yyyy-MM-dd"); - setQuickCreate({ dayKey: key, day, hour, top: hour * hourHeight }); - }, [hourHeight]); + const d = new Date(day); + d.setHours(hour, 0, 0, 0); + onCreateRange(d); + }, [onCreateRange]); const handleQuickCreateSubmit = useCallback(async (title: string) => { if (!quickCreate) return;