Библиотека Aria-query предназначена для работы с
ARIA-ролями и их свойствами в контексте веб-разработки. Одним из
ключевых компонентов модели ARIA в библиотеке является объект
relatedConcepts, который описывает связи
между ролями и HTML-элементами, а также другими ролями. Этот объект
играет центральную роль при построении инструментов для проверки
доступности интерфейсов и автогенерации ARIA-аннотаций.
relatedConceptsrelatedConcepts представляет собой массив объектов,
каждый из которых описывает связь конкретной роли с другим элементом или
концептом. Стандартная структура элемента массива выглядит следующим
образом:
{
module: 'html', // или 'aria'
concept: 'button', // название связанной концепции
attributes: { role: 'presentation' } // дополнительные свойства или ARIA-атрибуты
}
Основные поля:
module – указывает источник
концепта. Это может быть:
'html' – концепт представлен стандартным
HTML-элементом;'aria' – концепт относится к другой ARIA-роли.concept – имя HTML-элемента или
роли ARIA, с которой связана текущая роль. Например, роль
button может быть связана с тегом
<button> и с ARIA-атрибутами
aria-pressed.
attributes – объект, содержащий
дополнительные свойства или атрибуты, которые применяются к связанной
концепции. Чаще всего используется для уточнения состояния, например
{ 'aria-checked': 'true' } или
{ role: 'presentation' }.
Для роли checkbox объект relatedConcepts
может выглядеть так:
const checkboxConcepts = [
{ module: 'html', concept: 'input', attributes: { type: 'checkbox' } }
];
Это отражает прямое соответствие ARIA-ролей стандартным
HTML-элементам. В этом случае роль checkbox тесно связана с
<input type="checkbox">, и атрибуты ARIA должны
соответствовать его состояниям (aria-checked,
aria-disabled и т.д.).
Для более сложных ролей, например menuitemcheckbox,
relatedConcepts может включать несколько вариантов:
const menuItemCheckboxConcepts = [
{ module: 'html', concept: 'li' },
{ module: 'aria', concept: 'checkbox', attributes: { role: 'menuitemcheckbox' } }
];
Здесь показано, что menuitemcheckbox может быть
представлен как элемент <li> в HTML, при этом
наследуя свойства роли checkbox.
relatedConceptsМножественные связи: Одна роль может иметь
несколько связанных концепций. Это важно для инструментов тестирования
доступности, чтобы правильно интерпретировать контекст использования
роли. Например, роль alertdialog может быть связана как с
<div>, так и с <section> в
зависимости от семантики страницы.
Уточнение атрибутов: attributes
позволяет уточнять контекст. Например, роль toolbar может
ссылаться на <div> с атрибутом
role="toolbar" или на <nav> с
дополнительными ARIA-атрибутами для улучшенной доступности.
Модульная организация: Разделение на
html и aria позволяет библиотеке корректно
интерпретировать разницу между стандартными HTML-элементами и
абстрактными ARIA-ролями, которые могут быть реализованы на любом
элементе.
Aria-query экспортирует карты ролей, включая поле
relatedConcepts. Пример получения всех связанных концептов
для роли:
import { roles } from 'aria-query';
const checkboxRole = roles.get('checkbox');
console.log(checkboxRole.relatedConcepts);
Вывод будет массивом объектов с описанными выше полями. Это позволяет программно определять, каким HTML-элементам соответствует роль, и какие атрибуты следует применять для соблюдения стандартов ARIA.
relatedConceptsattributes, чтобы убедиться, что
дополнительные ARIA-атрибуты корректно применены.relatedConcepts как справочник для выбора базового
HTML-элемента.relatedConcepts в Aria-query представляет собой
детальную карту соответствий между ролями и элементами интерфейса,
обеспечивая основу для точной и безопасной работы с ARIA в
веб-разработке.