# DateTimeField: Доступность

## Подписи

`DateTimeField` нужна подпись, которая объясняет ожидания и к дате, и ко времени. Если важен часовой пояс, укажите его в тексте подсказки, а не рассчитывайте, что пользователь догадается сам.

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

| Клавиша | Действие |
| --- | --- |
| <kbd>↑</kbd> / <kbd>↓</kbd> | С кареткой в часах: меняет их на единицу. В минутах или секундах: меняет их на `timeStep`. Сегмент переходит по кругу, не затрагивая остальные; в части с датой стрелки не меняют значение. `timeStep={0}` выключает изменение стрелками. |
| <kbd>Enter</kbd> / <kbd>Space</kbd> | На кнопке-триггере: открывает или закрывает всплывающий календарь. Фокус остаётся на кнопке. |
| <kbd>Tab</kbd> | С открытого триггера: переносит фокус во всплывающий календарь, на первую кнопку шапки. |
| <kbd>Enter</kbd> | На дне во всплывающем календаре: записывает день в поле, сохраняя время. Остальные клавиши календаря работают как в Calendar. |
| <kbd>Escape</kbd> | Закрывает всплывающий календарь и возвращает фокус на кнопку-триггер. |

- Вводить можно, не открывая календарь. Внутри календаря навигация только перемещает фокус; значение меняется, только когда выбран день.
- Ввод проверяется в календарной системе поля: одиночная цифра, с которой не может начинаться двузначный сегмент, дополняется нулём, заполненные сегменты ограничиваются (день — длиной месяца), а полное значение ограничивается `min` / `max`.

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

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

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

- Поле должно сообщать ожидаемый формат даты и времени в подписи, подсказке или тексте ошибки.
- Кнопке-триггеру с иконкой всё равно нужно доступное имя, например «Open calendar».
- Смысл метки времени — например, часовой пояс рабочего пространства или время запланированного запуска — должен оставаться явным вне пикера.

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

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

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

- Отсутствие указаний о часовом поясе там, где продукт от него зависит.
- Плейсхолдер как единственное объяснение требуемого формата даты и времени.
- Композиция оверлеев, мешающая поведению клавиатуры или фокуса.
