onEventDragOverTime(event, day) : undefined}
+ onDragLeave={canWrite ? onDropTargetLeave : undefined}
+ onDrop={canWrite ? (event) => onEventDropOnTime(event, day, dropSlotMinuteOfDay(event)) : undefined}
+ >
+ {dropTarget && (
+
+ {minuteOfDayLabel(dropTarget.minuteOfDay)}
+
+ )}
+ {layout.items.map((item) => (
+
onEventHover(item.event.id)}
+ onMouseLeave={() => onEventHover("")}
+ onDragStart={canWrite ? (event) => onEventDragStart(event, item.event) : undefined}
+ onDragEnd={canWrite ? onEventDragEnd : undefined}
+ title={`Edit ${item.event.summary}`}
+ >
+ {canWrite && (
+ onEventResizeDragStart(event, item.event, "start")}
+ onDragEnd={onEventDragEnd}
+ />
+ )}
+
+ {canWrite && (
+ onEventResizeDragStart(event, item.event, "end")}
+ onDragEnd={onEventDragEnd}
+ />
+ )}
+
+ ))}
+ {layout.overflows.map((overflow) => (
+
+ ))}
+
);
}
-type QuickCreatePayload = {
- calendar_id: string;
- summary: string;
- location?: string | null;
- start_at: string;
- end_at?: string | null;
- all_day: boolean;
-};
+function CalendarEventChip({
+ event,
+ color,
+ compact = false,
+ canDrag = false,
+ dragging = false,
+ linkedHover = false,
+ onSelect,
+ onHover,
+ onDragStart,
+ onDragEnd
+}: {
+ event: CalendarEvent;
+ color?: string | null;
+ compact?: boolean;
+ canDrag?: boolean;
+ dragging?: boolean;
+ linkedHover?: boolean;
+ onSelect: (event: CalendarEvent) => void;
+ onHover?: (eventId: string) => void;
+ onDragStart?: (dragEvent: ReactDragEvent