Calendar month

A calendar month component allows users to select and navigate between days, months, and years.

Examples

Selectable date

Select your favorite date

SundayMondayTuesdayWednesdayThursdayFridaySaturday
Selected date: Tue Nov 24 2020 00:00:00 GMT+0000 (Coordinated Universal Time)

Date range

In this example, there are 2 dates selected: a range start date (via the rangeStart prop) and a range end date (via the date prop). Additionally, any dates prior to the range start date are disabled by passing in an array of functions to the validators prop. In this case a single function is passed in, which checks whether a date is greater than or equal to the range start date.

For this example, these dates are static and cannot be updated. For an interactive demo, see our Date picker demos.

Calendar month displaying a range

SundayMondayTuesdayWednesdayThursdayFridaySaturday

Props

CalendarMonth

The main calendar month component.
*required
NameTypeDefaultDescription
cellAriaLabel(date: Date) => stringAccessible label for the date cells.
classNamestringAdditional classes to add to the outer div of the calendar month.
dateDateMonth/year to base other dates around.
dayFormat(date: Date) => React.ReactNode(date) => date.getDate()How to format days in buttons in table cells.
inlinePropsCalendarMonthInlinePropsProps used to ensure accessibility when displaying the calendar month inline.
isDateFocusedbooleanfalseFlag to set browser focus on the passed date. *
localestringundefinedIf using the default formatters which locale to use. Undefined defaults to current locale. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation
longWeekdayFormat(date: Date) => React.ReactNode(date) => date.toLocaleDateString(locale, { weekday: 'long' })How to format days in header for screen readers.
monthFormat(date: Date) => React.ReactNode(date) => date.toLocaleDateString(locale, { month: 'long' })How to format months in month select.
nextMonthAriaLabelstring'Next month'Accessible label for the next month button.
onChange(event: React.MouseEvent<HTMLButtonElement, MouseEvent>, date: Date) => void() => {}Callback when date is selected.
onMonthChange( event?: React.MouseEvent | React.ChangeEvent | React.FormEvent<HTMLInputElement>, newDate?: Date ) => void() => {}Callback when month or year is changed.
prevMonthAriaLabelstring'Previous month'Accessible label for the previous month button.
rangeStartDateWhich date to start range styles from.
validators((date: Date) => boolean)[][() => true]Functions that returns if a date is valid and selectable.
weekdayFormat(date: Date) => React.ReactNode(date) => date.toLocaleDateString(locale, { weekday: 'narrow' })How to format week days in header.
weekStart0 | 1 | 2 | 3 | 4 | 5 | 6 | Weekday0Day of week that starts the week. 0 is Sunday, 6 is Saturday.
yearInputAriaLabelstring'Select year'Accessible label for the year input.

CalendarFormat

Additional properties that extend from and can be passed to the main component. These properties allow customizing the calendar formatting and aria-labels.
*required
NameTypeDefaultDescription
cellAriaLabel(date: Date) => stringAccessible label for the date cells.
dayFormat(date: Date) => React.ReactNodeHow to format days in buttons in table cells.
inlinePropsCalendarMonthInlinePropsProps used to ensure accessibility when displaying the calendar month inline.
localestringIf using the default formatters which locale to use. Undefined defaults to current locale. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation
longWeekdayFormat(date: Date) => React.ReactNodeHow to format days in header for screen readers.
monthFormat(date: Date) => React.ReactNodeHow to format months in month select.
nextMonthAriaLabelstringAccessible label for the next month button.
prevMonthAriaLabelstringAccessible label for the previous month button.
rangeStartDateWhich date to start range styles from.
weekdayFormat(date: Date) => React.ReactNodeHow to format week days in header.
weekStart0 | 1 | 2 | 3 | 4 | 5 | 6 | WeekdayDay of week that starts the week. 0 is Sunday, 6 is Saturday.
yearInputAriaLabelstringAccessible label for the year input.

CalendarMonthInlineProps

*required
NameTypeDefaultDescription
ariaLabelledbystringId of the accessible label of the calendar month. Recommended to map to the title.
componentkeyof JSX.IntrinsicElementsComponent wrapping the calendar month when used inline. Recommended to be 'article'.
titleReact.ReactNodeTitle of the calendar rendered above the inline calendar month. Recommended to be a 'title' component.

CSS variables

Expand or collapse columnSelectorVariableValue