Библиотека Aria-query предназначена для работы с ARIA-ролями и их свойствами в контексте веб-разработки. Она предоставляет структурированные данные о поддерживаемых ролях, их атрибутах и взаимодействиях, позволяя создавать инструменты для проверки доступности и генерации валидного ARIA-кода.
Aria-query содержит три ключевых структуры:
Эти структуры реализованы как карты (Map) и позволяют
быстро получать данные о роли или атрибуте.
Пример импорта в Jav * aScript:
import { roles, elementRoles, aria } from 'aria-query';
Роли делятся на структурные и видовые. Структурные роли описывают организацию страницы или документа, видовые — конкретные интерактивные элементы.
Использование в коде:
const docRole = roles.get('document');
console.log(docRole.abstract); // false
console.log(docRole.requiredContext); // []
console.log(docRole.props); // свойства роли, например aria-label
Каждая роль в roles имеет набор свойств:
Пример анализа:
const articleRole = roles.get('article');
console.log(articleRole.superClass); // ['section', 'landmark']
console.log(articleRole.props); // Map { 'aria-label' => {}, 'aria-labelledby' => {} }
Aria-query поддерживает отображение ролей на HTML-элементы через
elementRoles. Это важно для проверки соответствия ARIA и
стандартного HTML.
Пример:
const buttonElements = elementRoles.get('button');
console.log(buttonElements); // Set { 'button', 'input', 'a' }
Для структурных ролей также можно определить допустимые теги:
const regionElements = elementRoles.get('region');
console.log(regionElements); // Set { 'section', 'aside', 'div' }
Это позволяет создавать динамическую проверку соответствия роли и элемента.
Библиотека содержит карту всех свойств ARIA (aria).
Каждое свойство описано объектом с типом значения и допустимыми
вариантами.
Пример:
const ariaLabel = aria.get('aria-label');
console.log(ariaLabel.type); // 'string'
console.log(ariaLabel.values); // undefined, так как любое строковое значение допустимо
Это используется для валидации и автогенерации кода с ARIA.
Aria-query позволяет:
Пример проверки абстрактной роли:
roles.forEach((value, key) => {
if (value.abstract) {
console.log(`${key} является абстрактной ролью`);
}
});
Aria-query позволяет автоматизировать все эти процессы без ручного сопоставления HTML и ARIA, обеспечивая точное соответствие стандарту.
Map-структуры для быстрого поиска ролей и
свойств.abstract перед применением роли в HTML.superClass для понимания наследуемых
свойств.roles и elementRoles для
валидации и генерации интерфейсов.Библиотека обеспечивает полное покрытие ARIA-ролей и их атрибутов, делая работу с доступностью в JavaScript систематичной и безопасной.