|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- [](https://travis-ci.org/A11yance/aria-query)
-
- CDN URL: https://npm-cdn.com/pkg/aria-query/
-
- # ARIA Query
-
- Programmatic access to the [WAI-ARIA 1.1 Roles Model](https://www.w3.org/TR/wai-aria-1.1/#roles).
-
- ## Utilities
-
- ### Roles
-
- ```
- import { roles } from 'aria-query';
- ```
-
- A [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of
- role names to the role definition. For example:
-
- ```
- let alertRole = roles.get('alert');
- /**
- * Value of alertRole
- * {
- * "requiredProps": [],
- * "props": [
- * "aria-expanded",
- * "aria-atomic",
- * "aria-busy",
- * "aria-controls",
- * "aria-describedby",
- * "aria-disabled",
- * "aria-dropeffect",
- * "aria-flowto",
- * "aria-grabbed",
- * "aria-haspopup",
- * "aria-hidden",
- * "aria-invalid",
- * "aria-label",
- * "aria-labelledby",
- * "aria-live",
- * "aria-owns",
- * "aria-relevant"
- * ],
- * "abstract": false,
- * "interactive": false,
- * "childrenPresentational": false,
- * "baseConcepts": [],
- * "relatedConcepts": [ {
- * "module": "XForms",
- * "concept": {
- * "name": "alert"
- * }
- * }]
- * }
- ```
-
- ### Elements to Roles
-
- ```
- import { elementRoles } from 'aria-query';
- ```
-
- HTML Elements with inherent roles are mapped to those roles. In the case of an element like `<input>`, the element often requires a `type` attribute to map to an ARIA role.
-
- ```
- Map {
- '{"name": "article"}' => Set { 'article' },
- '{"name": "button"}' => Set { 'button' },
- '{"name": "td"}' => Set { 'cell', 'gridcell' },
- '{"name": "input", "attributes": [ {"name": "type", "value": "checkbox"}] }' => Set { 'checkbox' },
- '{"name": "th"}' => Set { 'columnheader' },
- '{"name": "select"}' => Set { 'combobox', 'listbox' },
- '{"name": "menuitem"}' => Set { 'command', 'menuitem' },
- '{"name": "dd"}' => Set { 'definition' },
- '{"name": "dfn"}' => Set { 'definition' },
- '{"name": "figure"}' => Set { 'figure' },
- '{"name": "form"}' => Set { 'form' },
- '{"name": "table"}' => Set { 'grid', 'table' },
- '{"name": "fieldset"}' => Set { 'group' },
- '{"name": "h1"}' => Set { 'heading' },
- '{"name": "h2"}' => Set { 'heading' },
- '{"name": "h3"}' => Set { 'heading' },
- '{"name": "h4"}' => Set { 'heading' },
- '{"name": "h5"}' => Set { 'heading' },
- '{"name": "h6"}' => Set { 'heading' },
- '{"name": "img"}' => Set { 'img' },
- '{"name": "a"}' => Set { 'link' },
- '{"name": "link"}' => Set { 'link' },
- '{"name": "ol"}' => Set { 'list' },
- '{"name": "ul"}' => Set { 'list' },
- '{"name": "li"}' => Set { 'listitem' },
- '{"name": "nav"}' => Set { 'navigation' },
- '{"name": "option"}' => Set { 'option' },
- '{"name": "input", "attributes": [ {"name": "type", "value": "radio"}] }' => Set { 'radio' },
- '{"name": "frame"}' => Set { 'region' },
- '{"name": "rel"}' => Set { 'roletype' },
- '{"name": "tr"}' => Set { 'row' },
- '{"name": "tbody"}' => Set { 'rowgroup' },
- '{"name": "tfoot"}' => Set { 'rowgroup' },
- '{"name": "thead"}' => Set { 'rowgroup' },
- '{"name": "th", "attributes": [ {"name": "scope", "value": "row"}] }' => Set { 'rowheader' },
- '{"name": "input", "attributes": [ {"name": "type", "value": "search"}] }' => Set { 'searchbox' },
- '{"name": "hr"}' => Set { 'separator' },
- '{"name": "dt"}' => Set { 'term' },
- '{"name": "textarea"}' => Set { 'textbox' },
- '{"name": "input", "attributes": [ {"name": "type", "value": "text"}] }' => Set { 'textbox' }
- }
- ```
-
- The map of elements to roles is keyed by an HTML concept. An HTML concept corresponds to the `baseConcepts` and `relatedConcepts` of an ARIA role. Concepts exist in the context of a `module`: HTML, XForms, Dublin Core, for example. The concept representation is an object literal with a name property (the element name) and an optional attributes array.
-
- The roles are provided in a [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set).
-
- ### Role to element
-
- ```
- import { roleElements } from 'aria-query';
- ```
-
- ARIA roles are mapped to the HTML Elements with the same inherent role. Some roles, such as `columnheader` are only mapped to an HMTL element that expresses specific attributes. In the case of `<input>`, the element often requires a `type` attribute to map to an ARIA role.
-
- ```
- Map {
- 'article' => Set { '{"name": "article"}' },
- 'button' => Set { '{"name": "button"}' },
- 'cell' => Set { '{"name": "td"}' },
- 'checkbox' => Set { '{"name": "input", "attributes": [ {"name": "type", "value": "checkbox"}] }' },
- 'columnheader' => Set { '{"name": "th"}' },
- 'combobox' => Set { '{"name": "select"}' },
- 'command' => Set { '{"name": "menuitem"}' },
- 'definition' => Set { '{"name": "dd"}', '{"name": "dfn"}' },
- 'figure' => Set { '{"name": "figure"}' },
- 'form' => Set { '{"name": "form"}' },
- 'grid' => Set { '{"name": "table"}' },
- 'gridcell' => Set { '{"name": "td"}' },
- 'group' => Set { '{"name": "fieldset"}' },
- 'heading' => Set { '{"name": "h1"}', '{"name": "h2"}', '{"name": "h3"}', '{"name": "h4"}', '{"name": "h5"}', '{"name": "h6"}' },
- 'img' => Set { '{"name": "img"}' },
- 'link' => Set { '{"name": "a"}', '{"name": "link"}' },
- 'list' => Set { '{"name": "ol"}', '{"name": "ul"}' },
- 'listbox' => Set { '{"name": "select"}' },
- 'listitem' => Set { '{"name": "li"}' },
- 'menuitem' => Set { '{"name": "menuitem"}' },
- 'navigation' => Set { '{"name": "nav"}' },
- 'option' => Set { '{"name": "option"}' },
- 'radio' => Set { '{"name": "input", "attributes": [ {"name": "type", "value": "radio"}] }' },
- 'region' => Set { '{"name": "frame"}' },
- 'roletype' => Set { '{"name": "rel"}' },
- 'row' => Set { '{"name": "tr"}' },
- 'rowgroup' => Set { '{"name": "tbody"}', '{"name": "tfoot"}', '{"name": "thead"}' },
- 'rowheader' => Set { '{"name": "th", "attributes": [ {"name": "scope", "value": "row"}] }' },
- 'searchbox' => Set { '{"name": "input", "attributes": [ {"name": "type", "value": "search"}] }' },
- 'separator' => Set { '{"name": "hr"}' },
- 'table' => Set { '{"name": "table"}' },
- 'term' => Set { '{"name": "dt"}' },
- 'textbox' => Set { '{"name": "textarea"}', '{"name": "input", "attributes": [ {"name": "type", "value": "text"}] }' }
- }
- ```
-
- The HTML concept values are provided in a [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set).
|