https://github.com/jamiebuilds/aria-data
Raw JSON data for WAI-ARIA 1.1 roles, attributes (states & properties), and value types
https://github.com/jamiebuilds/aria-data
a11y aria dataset json spec standards w3c
Last synced: 7 months ago
JSON representation
Raw JSON data for WAI-ARIA 1.1 roles, attributes (states & properties), and value types
- Host: GitHub
- URL: https://github.com/jamiebuilds/aria-data
- Owner: jamiebuilds
- License: mit
- Created: 2018-07-13T18:41:40.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-09-04T02:33:29.000Z (about 5 years ago)
- Last Synced: 2025-03-12T21:02:34.483Z (7 months ago)
- Topics: a11y, aria, dataset, json, spec, standards, w3c
- Language: JavaScript
- Homepage:
- Size: 162 KB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# aria-data
> Raw JSON data for [WAI-ARIA 1.1](https://www.w3.org/TR/wai-aria-1.1/) roles, attributes (states & properties), and value types
## Install
```sh
yarn add aria-data
```## Usage
```js
const ariaData = require('aria-data');
// {
// roles: {...},
// valueTypes: {...},
// attributes: {...}
// }
```## Guide
### References
This dataset uses URLs such as `https://www.w3.org/TR/wai-aria-1.1/#alert` as
reference IDs for entities. For example:```json
{
"ref": "https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant",
"name": "aria-activedescendant",
"description": "Identifies the currently active element (...)",
"valueType": "https://www.w3.org/TR/wai-aria-1.1/#valuetype_idref"
}
```### Interface
This dataset has the following interface:
```ts
export default interface {
roles: {
[ref: string]: {
ref: string,
name: string,
description?: string,
abstract: boolean,
superClassRoles: Array,
attributes: Array,
},
},
valueTypes: {
[ref: string]: {
ref: string,
name: string,
description?: string,
},
},
attributes: {
[ref: string]: {
ref: string,
name: string,
description?: string,
valueType: Ref,
values?: Array<{
value: string,
isDefault: boolean,
description?: string,
}>
},
},
}
```## Example
```js
const { roles, valueTypes, attributes } = require('aria-data');
const ROLES_ARR = Object.keys(roles).map(ref => roles[ref]);function findRole(roleName) {
return ROLES_ARR.find(role => role.name === roleName);
}function getAttrs(role) {
function traverse(role) {
return role.superClassRoles.reduce((attrs, ref) => {
return attrs.concat(traverse(roles[ref]));
}, role.attributes);
}return traverse(role).map(ref => attributes[ref].name);
}let alert = findRole('alert');
let alertAttrs = getAttrs(alert);
// ['aria-expanded', 'aria-atomic', 'aria-busy', 'aria-controls', ...]
// ['aria-atomic', 'aria-busy', ...]
```