Skip to content
+

Scheduler - Event Calendar

A collection of React UI components to schedule your events.

Full example

All day

Out of office

Alice's Birthday

Running

Team Retrospective

Evening Gym Class

Running

Remote work

Daily Standup

Dental Checkup

Daily Standup

1-on-1 with Abigail

Client Call

Evening Gym Class

Daily Standup

Weekly planning

Dinner with Friends

All day events

You can use the allDay property on your event model to define it as all-day:

const event = {
  // ...other even properties
  allDay: true,
};
All day

Event 4

Event 6

Event 3

Event 1

Event 2

Event 5

Event 7

Event 8

Customization

Available views

<EventCalendar views={['week', 'month']} />
Sun29
Mon30
Tue1
Wed2
Thu3
Fri4
Sat5
All day

Out of office

Alice's Birthday

Running

Team Retrospective

Evening Gym Class

Running

Remote work

Daily Standup

Dental Checkup

Daily Standup

1-on-1 with Abigail

Client Call

Evening Gym Class

Daily Standup

Weekly planning

Dinner with Friends

Default view

<EventCalendar defaultView="month" />
Sun
Mon
Tue
Wed
Thu
Fri
Sat

Out of office

Running

Team Retrospective

Evening Gym Class

Running

Remote work

Daily Standup

Dental Checkup

Alice's Birthday

Daily Standup

1-on-1 with Abigail

Daily Standup

Weekly planning

Dinner with Friends

Long run

Running

Daily Standup

1-on-1 with Hailey

Client Call

Daily Standup

Weekly planning

Design review Scheduler

Evening Gym Class

Running

Daily Standup

1-on-1 with John

Backlog Grooming

Daily Standup

Client Call

Evening Gym Class

Daily Standup

Long run

Running

Daily Standup

Daily Standup

Team Retrospective

Evening Gym Class

Dinner with Friends

Running

Daily Standup

Daily Standup

Physical Therapy

Evening Gym Class

Bob's Birthday

Daily Standup

Weekly planning

Client Call

Prescription Pickup

Shopping

Long run

Running

Daily Standup

Daily Standup

Weekly planning

Evening Gym Class

Running

Daily Standup

Backlog Grooming

Daily Standup

1-on-1 with Abigail

Client Call

Evening Gym Class

Richard's Birthday

Daily Standup

Community Workshop

Shopping

Long run

Running

Daily Standup

1-on-1 with Hailey

Dinner with Friends

Daily Standup

Team Retrospective

Evening Gym Class

Running

Daily Standup

1-on-1 with John

Daily Standup

Evening Gym Class

Daily Standup

Weekly planning

Add custom view

In your custom view, you have to use the useEventCalendarView() hook to register your view in the parent component.

import { addDays } from 'date-fns';
import { useEventCalendarView } from '@mui/x-scheduler-headless/use-event-calendar-view';

function CustomView() {
  const adapter = useAdapter();

  useEventCalendarView(() => ({
    siblingVisibleDateGetter: (date, delta) => addDays(date, delta),
  }));
}

Default visible date

const defaultVisibleDate = DateTime.fromISO('2025-11-01');

<EventCalendar defaultVisibleDate={defaultVisibleDate} />;
All day

Long run

Running

Daily Standup

Daily Standup

Weekly planning

Evening Gym Class

Running

Daily Standup

Backlog Grooming

Daily Standup

Evening Gym Class

Daily Standup

Initialize / control the preferences

const defaultPreferences = {
  ampm: false,
  showWeekends: false,
  isSidePanelOpen: false,
}

<EventCalendar defaultPreferences={defaultPreferences} />;
All day

Running

Daily Standup

1-on-1 with Hailey

Daily Standup

Weekly planning

Evening Gym Class

Running

Daily Standup

1-on-1 with John

Backlog Grooming

Daily Standup

Evening Gym Class

Daily Standup

Preferences menu

You can customize the preferences menu using the preferencesMenuConfig prop:

Available properties:

  • toggleWeekendVisibility: show/hide the menu item that toggles weekend visibility.
  • toggleWeekNumberVisibility: show/hide the menu item that toggles week number visibility.
  • toggleAmpm: show/hide the menu item that toggles 12/24‑hour time format.
  • toggleEmptyDaysInAgenda: show/hide the menu item that toggles the visibility of days with no events in the Agenda view.
// will hide the menu
preferencesMenuConfig={false}

// will hide the menu item responsible for toggling the weekend visibility
// the other preferences remain visible
preferencesMenuConfig={{ toggleWeekendVisibility: false }}

// will hide the menu items for toggling weekend and week number visibility
preferencesMenuConfig={{ toggleWeekendVisibility: false, toggleWeekNumberVisibility: false }}
All day

Out of office

Alice's Birthday

Running

Team Retrospective

Evening Gym Class

Running

Remote work

Daily Standup

Dental Checkup

Daily Standup

1-on-1 with Abigail

Client Call

Evening Gym Class

Daily Standup

Weekly planning

Dinner with Friends

Color palettes

The Event Calendar supports several color palettes.

Event colors can be set at two levels. The effective color resolves in the following order:

  1. The color assigned to the event
<EventCalendar events={[{ id: '1', title: 'Event 1', color: 'pink' }]} />
  1. The eventColor assigned to the event's resource
<EventCalendar resources={[{ id: '1', title: 'Resource 1', eventColor: 'pink' }]} />
  1. The eventColor assigned to the Event Calendar
<EventCalendar eventColor="pink" />
  1. The default color palette, "jade"

The following demo shows one event for each palette:

All day

violet

jade

lime

orange

cyan

pink

indigo

yellow

blue

Translations

import { frFR } from '@mui/x-scheduler/translations';

<EventCalendar translations={frFR} />;
Toute la journée

violet

jade

lime

orange

cyan

pink

indigo

yellow

blue