From ebb2a5d545fae5f309dbc1efa2780e89d29e6597 Mon Sep 17 00:00:00 2001 From: Wilco Fiers Date: Mon, 7 Aug 2017 17:47:13 +0200 Subject: [PATCH] feat(aria): Support progressive ARIA 1.1 attributes / roles (#468) Add support for role=feed, role=term, aria-placeholder, aria-modal, aria-current, aria-keyshortcuts --- lib/commons/aria/index.js | 58 +++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/lib/commons/aria/index.js b/lib/commons/aria/index.js index 5805de6747..3a67810fe3 100644 --- a/lib/commons/aria/index.js +++ b/lib/commons/aria/index.js @@ -71,6 +71,9 @@ lookupTables.attributes = { type: 'nmtoken', values: ['true', 'false', 'spelling', 'grammar'] }, + 'aria-keyshortcuts': { + type: 'string' + }, 'aria-label': { type: 'string' }, @@ -84,6 +87,10 @@ lookupTables.attributes = { type: 'nmtoken', values: ['off', 'polite', 'assertive'] }, + 'aria-modal': { + type: 'boolean', + values: ['true', 'false'] + }, 'aria-multiline': { type: 'boolean', values: ['true', 'false'] @@ -99,6 +106,9 @@ lookupTables.attributes = { 'aria-owns': { type: 'idrefs' }, + 'aria-placeholder': { + type: 'string' + }, 'aria-posinset': { type: 'int' }, @@ -155,7 +165,7 @@ lookupTables.attributes = { lookupTables.globalAttributes = [ 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', - 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-label', + 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant' ]; @@ -172,7 +182,7 @@ lookupTables.role = { 'alertdialog': { type: 'widget', attributes: { - allowed: ['aria-expanded'] + allowed: ['aria-expanded', 'aria-modal'] }, owned: null, nameFrom: ['author'], @@ -240,7 +250,8 @@ lookupTables.role = { 'columnheader': { type: 'structure', attributes: { - allowed: ['aria-expanded', 'aria-sort', 'aria-readonly', 'aria-selected', 'aria-required'] + allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', + 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort'] }, owned: null, nameFrom: ['author', 'contents'], @@ -294,12 +305,12 @@ lookupTables.role = { owned: null, nameFrom: ['author'], context: null, - implicit: ['dd'] + implicit: ['dd', 'dfn'] }, 'dialog': { type: 'widget', attributes: { - allowed: ['aria-expanded'] + allowed: ['aria-expanded', 'aria-modal'] }, owned: null, nameFrom: ['author'], @@ -325,6 +336,17 @@ lookupTables.role = { context: null, implicit: ['body'] }, + 'feed': { + type: 'structure', + attributes: { + allowed: ['aria-expanded'] + }, + owned: { + one: ['article'] + }, + nameFrom: ['author'], + context: null + }, 'form': { type: 'landmark', attributes: { @@ -350,7 +372,8 @@ lookupTables.role = { 'gridcell': { type: 'widget', attributes: { - allowed: ['aria-selected', 'aria-readonly', 'aria-expanded', 'aria-required'] + allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', + 'aria-rowspan', 'aria-selected', 'aria-readonly', 'aria-required'] }, owned: null, nameFrom: ['author', 'contents'], @@ -620,7 +643,7 @@ lookupTables.role = { 'row': { type: 'structure', attributes: { - allowed: ['aria-level', 'aria-selected', 'aria-activedescendant', 'aria-expanded'] + allowed: ['aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-level', 'aria-selected', 'aria-rowcount'] }, owned: { one: ['cell', 'columnheader', 'rowheader', 'gridcell'] @@ -644,7 +667,8 @@ lookupTables.role = { 'rowheader': { type: 'structure', attributes: { - allowed: ['aria-sort', 'aria-required', 'aria-readonly', 'aria-expanded', 'aria-selected'] + allowed: ['aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', + 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort'] }, owned: null, nameFrom: ['author', 'contents'], @@ -673,7 +697,7 @@ lookupTables.role = { 'searchbox': { type: 'widget', attributes: { - allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required'] + allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder'] }, owned: null, nameFrom: ['author'], @@ -787,6 +811,16 @@ lookupTables.role = { nameFrom: ['author'], context: null }, + 'term': { + type: 'structure', + attributes: { + allowed: ['aria-expanded'] + }, + owned: null, + nameFrom: ['author', 'contents'], + context: null, + implicit: ['dt'] + }, 'text': { type: 'structure', owned: null, @@ -796,7 +830,7 @@ lookupTables.role = { 'textbox': { type: 'widget', attributes: { - allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required'] + allowed: ['aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder'] }, owned: null, nameFrom: ['author'], @@ -847,8 +881,8 @@ lookupTables.role = { 'treegrid': { type: 'composite', attributes: { - allowed: ['aria-activedescendant', 'aria-expanded', 'aria-level', 'aria-multiselectable', - 'aria-readonly', 'aria-required'] + allowed: ['aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-level', 'aria-multiselectable', + 'aria-readonly', 'aria-required', 'aria-rowcount'] }, owned: { all: ['treeitem']