Calendar

Компонент для выбора даты и времени, поддерживает различные режимы работы, настройку ограничений по датам и локализацию.

Загружается...

Данный компонент представляет собой непосредственно календарь, который необходимо встраивать в нужные части вашего приложения.

Если вам нужно поле ввода даты и времени (со всплывающим календарём), то используйте компонент DateInput.

Если вам нужен компонент для задания диапазона дат и времени, то используйте CalendarRange.

Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.

Для использования неконтролируемого режима достаточно просто не передавать value или передавать defaultValue, если требуется задать значение по умолчанию. Для контролируемого режима используйте связку свойств value/onChange для задания значения и его изменения.

// Неконтролируемое состояние
<Calendar defaultValue={new Date()} />;
 
// Контролируемое состояние
const [date, setDate] = React.useState(new Date());
 
<Calendar value={date} onChange={setDate} />;

Для включения выбора времени используйте свойство enableTime.

Загружается...

Компонент поддерживает работу с часовыми поясами через свойство timezone (принимает сроку в IANA ↗). При указании часового пояса все даты автоматически конвертируются в указанный часовой пояс.

Компонент поддерживает настройку текстов через changeDayLabel, changeHoursLabel и остальные *Label свойства.

Компонент обеспечивает базовую доступность через:

  • корректную семантическую разметку;
  • поддержку клавиатурной навигации;
  • aria-атрибуты для всех интерактивных элементов.

При использовании компонента убедитесь, что все текстовые метки (changeDayLabel, changeHoursLabel и остальные *Label свойства) корректно описывают действия для пользователей скринридеров.

СвойствоОписание
changeDayLabelstring

Deprecated: Будет удалeно в VKUI v8. Использовалось для задания aria-label для контейнера дней в календаре. Теперь этот контейнер является таблицей (с помощью role=“grid”) и в aria-label рендерится текущий открытый в календаре месяц и год.

По умолчанию: -
changeHoursLabelstring

Текст выпадающего списка с выбором часов. Делает его доступным для ассистивных технологий.

По умолчанию: Изменить час
changeMinutesLabelstring

Текст выпадающего списка с выбором минут. Делает его доступным для ассистивных технологий.

По умолчанию: Изменить минуту
changeMonthLabelstring

aria-label для селектора месяца.

По умолчанию: Изменить месяц
changeYearLabelstring

aria-label для селектора года.

По умолчанию: Изменить год
dayPropsCalendarDayElementProps

Дополнительные свойства для элементов дней.

По умолчанию: -
dayTestIdstring | ((day: Date) => string)

Передает атрибут data-testid для дня в календаре.

По умолчанию: -
defaultValueDate | null

Начальная дата при монтировании.

По умолчанию: -
disableFutureboolean

Запрещает выбор даты в будущем. Применяется, если не задано shouldDisableDate.

По умолчанию: -
disablePastboolean

Запрещает выбор даты в прошлом. Применяется, если не заданы shouldDisableDate и disableFuture.

По умолчанию: -
disablePickersboolean

Отключает селекторы выбора месяца/года.

По умолчанию: -
DoneButtonComponentType<ButtonProps>

Кастомное отображение кнопки "Done".

По умолчанию: -
doneButtonDisabledboolean

Блокировка взаимодействия с кнопкой “Done”.

По умолчанию: -
doneButtonShowboolean

Управление отображением кнопки "Done".

По умолчанию: -
doneButtonTestIdstring

Передает атрибут data-testid для кнопки “Готово” в календаре.

По умолчанию: -
doneButtonTextstring

Текст отображаемый в кнопке "Done".

По умолчанию: -
enableTimeboolean

Включает выбор времени.

По умолчанию: false
getRootRefRef<HTMLDivElement>
По умолчанию: -
hoursTestIdstring

Передает атрибут data-testid для дропдауна выбора часа в календаре.

По умолчанию: -
listenDayChangesForUpdateboolean

Следить за изменениями дней для обновления UI.

По умолчанию: -
maxDateTimeDate

Максимальные дата и время, которые можно выбрать. Применяется, если не заданы shouldDisableDate и disablePast/disableFuture.

По умолчанию: -
minDateTimeDate

Минимальные дата и время, которые можно выбрать. Применяется, если не заданы shouldDisableDate и disablePast/disableFuture.

По умолчанию: -
minutesTestIdstring

Передает атрибут data-testid для дропдауна выбора минут в календаре.

По умолчанию: -
monthDropdownTestIdstring | ((monthIndex: number) => string)

Передает атрибут data-testid для дропдауна выбора месяца в заголовке календаря.

По умолчанию: -
nextMonthButtonTestIdstring

Передает атрибут data-testid для кнопки перехода к следующему месяцу в заголовке календаря.

По умолчанию: -
nextMonthIconReactNode

Кастомная иконка для кнопки следующего месяца.

По умолчанию: -
nextMonthLabelstring

aria-label для кнопки следующего месяца.

По умолчанию: Следующий месяц
nextMonthPropsArrowMonthProps

Дополнительные свойства для кнопки следующего месяца.

По умолчанию: -
onChange((value?: Date) => void) | undefined

Обработчик изменения выбранной даты.

По умолчанию: -
onDoneButtonClick(() => void)

Обработки нажатия на кнопку "Done".

По умолчанию: -
onHeaderChange((value: Date) => void)

Обработчик изменения даты в шапке календаря.

По умолчанию: -
onNextMonth(() => void)

Нажатие на кнопку переключения на следующий месяц.

По умолчанию: -
onPrevMonth(() => void)

Нажатие на кнопку переключения на предыдущий месяц.

По умолчанию: -
prevMonthButtonTestIdstring

Передает атрибут data-testid для кнопки перехода к предыдущему месяцу в заголовке календаря.

По умолчанию: -
prevMonthIconReactNode

Кастомная иконка для кнопки предыдущего месяца.

По умолчанию: -
prevMonthLabelstring

aria-label для кнопки предыдущего месяца.

По умолчанию: Предыдущий месяц
prevMonthPropsArrowMonthProps

Дополнительные свойства для кнопки предыдущего месяца.

По умолчанию: -
renderDayContent((day: Date) => ReactNode)

Кастомизация отображения содержимого дня.

По умолчанию: -
shouldDisableDate((value: Date) => boolean)

Функция для проверки запрета выбора даты.

По умолчанию: -
showNeighboringMonthboolean

Показывать дни соседних месяцев.

По умолчанию: -
size"s" | "m"

Размер календаря.

По умолчанию: m
timezonestring

Часовой пояс для отображения даты.

По умолчанию: -
valueDate | null

Текущая выбранная дата.

По умолчанию: -
viewDateDate

Дата отображаемого месяца. При использовании обновление даты должно происходить вне компонента.

По умолчанию: -
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6

День недели, с которого начинается неделя.

По умолчанию: 1
yearDropdownTestIdstring | ((year: number) => string)

Передает атрибут data-testid для дропдауна выбора года в заголовке календаря.

По умолчанию: -