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

## Подписи

Триггер должен оставаться понятным и без содержимого поповера. Плавающее содержимое должно добавлять контекст, а не подменять смысл триггера.

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

| Клавиша | Действие |
| --- | --- |
| <kbd>Enter</kbd> / <kbd>Space</kbd> | На триггере: открывает или закрывает поповер. Фокус остаётся на триггере. |
| <kbd>Tab</kbd> / <kbd>Shift</kbd> + <kbd>Tab</kbd> | С триггера открытого поповера `Tab` переносит фокус в его содержимое, которое идёт в порядке табуляции сразу за триггером. Уход фокуса из содержимого поповер не закрывает. |
| <kbd>Escape</kbd> | Закрывает поповер. Если фокус был внутри, он возвращается на триггер. |

Триггер обязательно должен быть кнопкой. Safari не переводит фокус с триггера в содержимое по `Tab`, поэтому проверяйте доступ с клавиатуры там отдельно.

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

- Фокус должен предсказуемо перемещаться между триггером и содержимым.
- Вложенные поповеры образуют стек: открытие вложенного поповера оставляет родительский открытым.
- Вложенные поповеры нужно тестировать как настоящий интеграционный сценарий.

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

- Содержимое должно оставаться контекстным и лаконичным.
- Смысл триггера не должен зависеть только от содержимого поповера.

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

- Если поповер содержит маленькую форму, подписи и кнопки отправки всё равно должны находиться внутри самого содержимого поповера.
- Поповеры плохо подходят для длинных форм с большим количеством валидации.

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

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