aria-data

1.0.0 • Public • Published

aria-data

Raw JSON data for WAI-ARIA 1.1 roles, attributes (states & properties), and value types

Install

yarn add aria-data

Usage

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:

{
  "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:

export default interface {
  roles: {
    [ref: string]: {
      ref: string,
      name: string,
      description?: string,
      abstract: boolean,
      superClassRoles: Array<Ref>,
      attributes: Array<Ref>,
    },
  },
  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

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', ...]

Package Sidebar

Install

npm i aria-data

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

80.1 kB

Total Files

4

Last publish

Collaborators

  • thejameskyle