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

PropTypeDescription
onEventDrop(event, start, end) => voidCalled when an event is dropped (with the event before the move and its new dates), alongside onEventUpdate
onEventResize(event, start, end) => voidCalled when an event is resized, alongside onEventUpdate (both fire, so update your state in only one of them)
From docs/guide.md at v2.0.0 · Last updated 2026-10-24Edit on GitHub