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

Popover

Popover — составной компонент для немодального плавающего содержимого, привязанного к триггеру.

Подписи

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

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

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

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

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

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

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

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

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

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

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

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