Calendar / All-day and multi-day events
All-day and multi-day events
All-day events are calendar dates, shown as bars above the grid and across the month.
const events = [
// All-day: the end is exclusive, this offsite covers 12–14 October
{ id: 'offsite', title: 'Offsite', start: new Date(2026, 9, 12), end: new Date(2026, 9, 15), allDay: true },
// Timed events of 24 hours or more are shown with the all-day events
{ id: 'flight', title: 'Flight', start: new Date(2026, 9, 14, 22), end: new Date(2026, 9, 16, 4) },
];
- All-day events are calendar dates:
timezone never shifts them. The end is exclusive (midnight after the last day); an end at 23:59 on the same day, or equal to the start, means one day. Date-only values such as new Date('2026-10-12') keep their date in every timezone.
- The week and day views show them in a collapsible row above the grid (2 lanes, then "+N more"). The month view draws continuous bars (up to 3 lanes per week); its "+N more" counts the hidden bars and events of the day.
- Drag a bar to move it by whole days, or stretch its right edge to change its last day.
onEventDrop / onEventResize then onEventUpdate fire as for timed events; draggable: false, resizable: false and readOnly apply.
- Click an empty day of the all-day row to create an all-day event. The event form has an All Day switch and shows the last day included.
Props
| Prop | Type | Description |
|---|
onEventDrop | (event, start, end) => void | Called when an event is dropped (with the event before the move and its new dates), alongside onEventUpdate |
onEventResize | (event, start, end) => void | Called when an event is resized, alongside onEventUpdate (both fire, so update your state in only one of them) |