Angular Aria
Что такое Angular Aria?
Создание доступных компонентов кажется простым, но реализация по W3C Accessibility Guidelines требует значительных усилий и экспертизы в accessibility.
Angular Aria — набор headless, доступных директив, реализующих распространённые паттерны WAI-ARIA. Директивы обрабатывают клавиатурные взаимодействия, ARIA-атрибуты, управление фокусом и поддержку screen reader. Вам остаётся предоставить HTML-структуру, CSS-стили и бизнес-логику!
Установка
Showcase
Например, возьмём toolbar menu. На вид это «простой» ряд кнопок со связанной логикой, но клавиатурная навигация и screen reader добавляют много неожиданной сложности для тех, кто мало знаком с accessibility.
В этом сценарии разработчикам нужно учесть:
- Клавиатурную навигацию. Пользователи должны открывать меню Enter или Space, перемещаться по опциям стрелками, выбирать Enter и закрывать Escape.
- Screen readers должны объявлять состояние меню, число опций и какая опция в фокусе.
- Управление фокусом должно логично перемещаться между trigger и пунктами меню.
- Языки справа налево требуют возможности навигации в обратном направлении.
Что входит в комплект?
Angular Aria включает директивы с подробной документацией, рабочими примерами и API reference для распространённых интерактивных паттернов:
Поиск и выбор
| Компонент | Описание |
|---|---|
| Autocomplete | Текстовый ввод с отфильтрованными подсказками по мере ввода |
| Listbox | Списки опций с одиночным или множественным выбором и клавиатурой |
| Select | Паттерн dropdown с одиночным выбором и клавиатурной навигацией |
| Multiselect | Паттерн dropdown с множественным выбором и компактным отображением |
| Combobox | Примитивная директива, координирующая текстовый ввод с popup |
Навигация и действия
| Компонент | Описание |
|---|---|
| Menu | Выпадающие меню со вложенными подменю и горячими клавишами |
| Menubar | Горизонтальная панель навигации для постоянных меню приложения |
| Toolbar | Группы элементов управления с логичной клавиатурной навигацией |
Организация контента
| Компонент | Описание |
|---|---|
| Accordion | Сворачиваемые панели контента — по одной или взаимоисключающе |
| Tabs | Вкладки с режимами автоматической или ручной активации |
| Tree | Иерархические списки с раскрытием/сворачиванием |
| Grid | Двумерное отображение данных с клавиатурной навигацией по ячейкам |
Когда использовать Angular Aria
Angular Aria хорошо подходит, когда нужны доступные интерактивные компоненты, соответствующие WCAG, с кастомными стилями. Примеры:
- Создание дизайн-системы — команда поддерживает библиотеку компонентов с конкретными визуальными стандартами и нуждается в доступных реализациях
- Корпоративные библиотеки компонентов — вы создаёте переиспользуемые компоненты для нескольких приложений в организации
- Требования бренда — интерфейс должен точно соответствовать дизайн-спецификациям, которые готовые стилизованные библиотеки плохо покрывают
Когда не использовать Angular Aria
Angular Aria подходит не для каждого сценария:
- Готовые стилизованные компоненты — если нужны компоненты, которые выглядят завершённо без кастомных стилей, используйте Angular Material
- Простые формы — нативные HTML-контролы вроде
<button>и<input type="radio">дают встроенную доступность для простых случаев - Быстрое прототипирование — при быстрой проверке идей готовые стилизованные библиотеки сокращают начальное время разработки
Следующие шаги
Выберите компонент в боковой навигации или в списке выше, либо начните с Toolbar, чтобы увидеть полный пример работы директив Angular Aria!