Перейти к содержимому
v2.5.0
English
Русский
Документация

DateRangeField

DateRangeField — составной компонент для ввода связанных дат начала и окончания, который объединяет ввод диапазона с клавиатуры, необязательный выбор в календаре и общую валидацию диапазона.

Подписи

DateRangeField нужна подпись, которая объясняет и бизнес-смысл, и то, включает ли диапазон границы или ограничен иначе. Одного плейсхолдера недостаточно.

Поведение клавиатуры

ОбъявлениеПереведите фокус на демо и нажмите клавишу из таблицы.
КлавишаДействие
EnterSpaceНа кнопке-триггере: открывает или закрывает всплывающий календарь. Фокус остаётся на кнопке.
TabС открытого триггера: переносит фокус во всплывающий календарь, на первую кнопку шапки.
EnterНа дне во всплывающем календаре: первое нажатие начинает новый диапазон, второе завершает его, и диапазон записывается в поле. Остальные клавиши календаря работают как в Calendar.
Shift + ←Shift + →Shift + ↑Shift + ↓На первом или последнем дне диапазона: двигает этот край диапазона вместе с фокусом.
EscapeЗакрывает всплывающий календарь и возвращает фокус на кнопку-триггер.
Каждая строка проверена в настоящем браузере: Playwright нажимает клавишу в Chromium и смотрит, где оказались фокус и активный элемент.
  • Вводить можно, не открывая календарь. Внутри календаря навигация только перемещает фокус; значение меняется, только когда выбран день.
  • Ввод проверяется в календарной системе поля: одиночная цифра, с которой не может начаться двузначный сегмент, дополняется нулём, полные сегменты ограничиваются (день — длиной месяца), а полное значение ограничивается min / max.
  • Введённый в обратном порядке диапазон переставляется так, чтобы более ранняя дата шла первой.

Поведение фокуса

  • Обычно фокус начинается в поле ввода.
  • Открытие и закрытие календаря не должны уводить фокус от поля диапазона.
  • Использование во вложенных оверлеях нужно проверять на восстановление фокуса и закрытие.

Семантика для скринридеров

  • Поле должно сообщать, что оно принимает дату начала и дату окончания, а не одну непрозрачную строку.
  • Вспомогательный текст должен объяснять формат диапазона и любые правила бронирования или отчётности.
  • Иконке-кнопке триггера всё равно нужна доступная подпись, например «Открыть календарь диапазона дат».

Семантика формы

  • DateRangeField ведёт себя как поле формы через нижележащий input.
  • Сообщения об ошибках должны явно покрывать неполные и перевёрнутые диапазоны.

Риски доступности

  • Неоднозначная подпись, которая не объясняет смысл диапазона.
  • Текст ошибки помечает поле как невалидное, но не объясняет, какой стороны не хватает.
  • Композиция оверлея скрывает выбор дат из-за обрезки или проблем с фокусом.