Библиотека Aria-query в JavaScript предназначена для работы с ARIA-ролями, состояниями и свойствами, обеспечивая доступ к спецификации ARIA и поддерживая проверку соответствия стандартам доступности. Основные типы данных в библиотеке отражают структуру ARIA и позволяют удобно использовать роли, состояния и свойства в приложениях.
Roles — центральный тип данных в Aria-query. Он представляет семантическую роль элемента в пользовательском интерфейсе и определяет, как элемент будет интерпретироваться вспомогательными технологиями.
Структура роли:
"button", "checkbox",
"dialog").tabindex для интерактивных элементов.Пример получения роли:
import { roles } from 'aria-query';
const buttonRole = roles.get('button');
console.log(buttonRole.props); // выводит список ARIA-свойств роли "button"
Особенности работы с ролями:
roles.keys() возвращает массив всех доступных имен
ролей.roles.has(name) проверяет существование роли.roles.get(name) возвращает объект роли с полным
описанием.ARIA properties and states описывают состояние или поведение элемента. В библиотеке они представлены отдельной структурой, которая разделяет свойства (properties) и состояния (states).
Основные характеристики:
"string",
"boolean", "integer",
"token").Пример работы со свойствами:
import { aria } from 'aria-query';
const disabledProp = aria.get('aria-disabled');
console.log(disabledProp.type); // "boolean"
console.log(disabledProp.forRoles); // список ролей, для которых допустимо использование
Особенности:
aria-checked, aria-expanded)
помогают интерактивным элементам корректно взаимодействовать с
ассистивными технологиями.Aria-query использует карты соответствий, чтобы сопоставлять роли с допустимыми свойствами и состояниями. Основные структуры:
Пример использования карты ролей для проверки:
import { roles } from 'aria-query';
if (roles.has('checkbox')) {
const checkboxRole = roles.get('checkbox');
console.log(checkboxRole.requiredProps); // ["aria-checked"]
}
Для ARIA-свойств библиотека определяет строгие типы данных, которые гарантируют корректное использование:
true или
false.true, false,
"mixed"."horizontal" | "vertical").id.Особенности:
Роли и свойства в Aria-query тесно связаны. Каждая роль может иметь обязательные свойства и рекомендованные свойства, а свойства знают, для каких ролей они применимы. Это обеспечивает двухстороннюю проверку:
Пример проверки соответствия:
import { roles, aria } from 'aria-query';
const role = roles.get('switch');
const prop = aria.get('aria-checked');
if (role.props.has('aria-checked')) {
console.log('Свойство aria-checked допустимо для роли switch');
}
Основные структуры Aria-query можно визуализировать так:
Map{ name, abstract, superClass, props, requiredProps, domProps }Map{ type, values, defaultValue, mutable, forRoles }Map> — для HTML-элементов и
рекомендуемых ролей.Эта организация позволяет строить надежные проверки ARIA, формировать динамические интерфейсы с корректными ролями и свойствами и обеспечивать доступность веб-приложений.