Подписи
Триггер должен оставаться понятным и без содержимого поповера. Плавающее содержимое должно добавлять контекст, а не подменять смысл триггера.
Поведение клавиатуры
ОбъявлениеПереведите фокус на демо и нажмите клавишу из таблицы.
| Клавиша | Действие |
|---|---|
| EnterSpace | На триггере: открывает или закрывает поповер. Фокус остаётся на триггере. |
| TabShift + Tab | С триггера открытого поповера Tab переносит фокус в его содержимое, которое идёт в порядке табуляции сразу за триггером. Уход фокуса из содержимого поповер не закрывает. |
| Escape | Закрывает поповер. Если фокус был внутри, он возвращается на триггер. |
Триггер обязательно должен быть кнопкой. Safari не переводит фокус с триггера в содержимое по Tab, поэтому проверяйте доступ с клавиатуры там отдельно.
Поведение фокуса
- Фокус должен предсказуемо перемещаться между триггером и содержимым.
- Вложенные поповеры образуют стек: открытие вложенного поповера оставляет родительский открытым.
- Вложенные поповеры нужно тестировать как настоящий интеграционный сценарий.
Семантика для скринридеров
- Содержимое должно оставаться контекстным и лаконичным.
- Смысл триггера не должен зависеть только от содержимого поповера.
Семантика форм
- Если поповер содержит маленькую форму, подписи и кнопки отправки всё равно должны находиться внутри самого содержимого поповера.
- Поповеры плохо подходят для длинных форм с большим количеством валидации.
Риски доступности
- Поповер как единственный источник критически важных инструкций.
- Модальные по сути задачи, спрятанные в немодальный поповер.
- Вложенные поповеры без повторной проверки порядка фокуса.