From 17f42039aaf2d6ed273d336b01e3b7a130976987 Mon Sep 17 00:00:00 2001 From: Jesse Renee Beach Date: Tue, 26 Nov 2019 15:40:46 -0800 Subject: [PATCH] Fix all inherent ARIA role to HTML mappings --- flow/aria.js | 14 +- scripts/roles.json | 257 ++++++++++++++++++--- src/etc/roles/literal/bannerRole.js | 12 +- src/etc/roles/literal/buttonRole.js | 93 ++++++++ src/etc/roles/literal/cellRole.js | 3 + src/etc/roles/literal/comboboxRole.js | 18 +- src/etc/roles/literal/complementaryRole.js | 9 +- src/etc/roles/literal/contentinfoRole.js | 12 +- src/etc/roles/literal/definitionRole.js | 6 - src/etc/roles/literal/dialogRole.js | 9 +- src/etc/roles/literal/documentRole.js | 6 + src/etc/roles/literal/formRole.js | 36 +++ src/etc/roles/literal/groupRole.js | 12 + src/etc/roles/literal/imgRole.js | 22 ++ src/etc/roles/literal/linkRole.js | 5 + src/etc/roles/literal/listRole.js | 6 + src/etc/roles/literal/listitemRole.js | 3 + src/etc/roles/literal/mathRole.js | 9 +- src/etc/roles/literal/progressbarRole.js | 6 + src/etc/roles/literal/regionRole.js | 22 ++ src/etc/roles/literal/searchboxRole.js | 6 + src/etc/roles/literal/sliderRole.js | 15 +- src/etc/roles/literal/spinbuttonRole.js | 15 +- src/etc/roles/literal/statusRole.js | 9 +- src/etc/roles/literal/textboxRole.js | 8 +- 25 files changed, 553 insertions(+), 60 deletions(-) diff --git a/flow/aria.js b/flow/aria.js index de08ff23..518258cf 100644 --- a/flow/aria.js +++ b/flow/aria.js @@ -308,6 +308,14 @@ type ARIARoleRelation = { type ARIARoleRelationConcept = { name: string, attributes?: Array, + // Make these explicit. These values represent quirks of the mapping betweent + // ARIA and other semantic ontological systems. + constraints?: Array< + 'direct descendant of document' + | 'direct descendant of ol, ul or menu' + | 'direct descendant of details element with the open attribute defined' + | 'descendant of table' + >, }; type ARIARoleRelationConceptAttribute = { @@ -315,5 +323,9 @@ type ARIARoleRelationConceptAttribute = { value?: string | number, // Make these explicit. These values represent quirks of the mapping betweent // ARIA and other semantic ontological systems. - constraints?: Array<'unset' | 'isset' | '>1'>, + constraints?: Array< + 'undefined' // The attribute does not exist on the node: + | 'set' // The attribute has a value: + | '>1' + >, }; diff --git a/scripts/roles.json b/scripts/roles.json index 5d122c6d..5c22d24b 100644 --- a/scripts/roles.json +++ b/scripts/roles.json @@ -169,7 +169,13 @@ ], "abstract": false, "childrenPresentational": false, - "relatedConcepts": [] + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "banner", + "constraints": ["direct descendant of document"] + } + }] }, "button": { "superClass": ["command"], @@ -205,6 +211,73 @@ "concept": { "name": "button" } + }, { + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "button" + }] + } + }, { + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "image" + }] + } + }, { + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "reset" + }] + } + }, { + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "submit" + }] + } + }, { + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "checkbox" + }, { + "name": "aria-pressed", + "constraints": ["set"] + }] + } + }, { + "module": "HTML", + "concept": { + "name": "summary", + "constraints": ["direct descendant of details element with the open attribute defined"], + "attributes": [{ + "name": "aria-expanded", + "value": "true" + }] + } + }, { + "module": "HTML", + "concept": { + "name": "summary", + "attributes": [{ + "name": "aria-expanded", + "value": "false" + }] + } }, { "module": "XForms", "concept": { @@ -251,7 +324,8 @@ "relatedConcepts": [{ "module": "HTML", "concept": { - "name": "td" + "name": "td", + "constraints": ["descendant of table"] } }], "childrenPresentational": false @@ -390,10 +464,10 @@ "name": "select", "attributes": [{ "name": "multiple", - "constraints": ["unset"] + "constraints": ["undefined"] }, { "name": "size", - "constraints": ["unset"] + "constraints": ["undefined"] }] } }, { @@ -402,7 +476,7 @@ "name": "select", "attributes": [{ "name": "multiple", - "constraints": ["unset"] + "constraints": ["undefined"] }, { "name": "size", "value": 1 @@ -417,7 +491,7 @@ "value": "text" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -429,7 +503,7 @@ "value": "search" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -441,7 +515,7 @@ "value": "url" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -453,7 +527,7 @@ "value": "tel" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -465,7 +539,7 @@ "value": "url" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -477,7 +551,7 @@ "value": "email" }, { "name": "list", - "constraints": ["isset"] + "constraints": ["set"] }] } }, { @@ -554,7 +628,12 @@ ], "abstract": false, "childrenPresentational": false, - "relatedConcepts": [] + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "aside" + } + }] }, "composite": { "superClass": ["widget"], @@ -619,7 +698,13 @@ ], "abstract": false, "childrenPresentational": false, - "relatedConcepts": [] + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "footer", + "constraints": ["direct descendant of document"] + } + }] }, "definition": { "superClass": ["section"], @@ -654,11 +739,6 @@ "concept": { "name": "dd" } - }, { - "module": "HTML", - "concept": { - "name": "dfn" - } }] }, "dialog": { @@ -690,7 +770,12 @@ ], "abstract": false, "childrenPresentational": false, - "relatedConcepts": [] + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "dialog" + } + }] }, "directory": { "superClass": ["list"], @@ -2282,6 +2367,11 @@ "concept": { "name": "Device Independence Delivery Unit" } + }, { + "module": "HTML", + "concept": { + "name": "body" + } }], "props": [ "aria-expanded", @@ -2392,7 +2482,29 @@ "relatedConcepts": [{ "module": "HTML", "concept": { - "name": "form" + "name": "form", + "attributes": [{ + "name": "name", + "constraints": ["set"] + }] + } + }, { + "module": "HTML", + "concept": { + "name": "form", + "attributes": [{ + "name": "aria-label", + "constraints": ["set"] + }] + } + }, { + "module": "HTML", + "concept": { + "name": "form", + "attributes": [{ + "name": "aria-labelledby", + "constraints": ["set"] + }] } }], "props": [ @@ -2520,6 +2632,16 @@ "concept": { "name": "fieldset" } + }, { + "module": "HTML", + "concept": { + "name": "details" + } + }, { + "module": "HTML", + "concept": { + "name": "optgroup" + } }], "props": [ "aria-activedescendant", @@ -2615,7 +2737,20 @@ "relatedConcepts": [{ "module": "HTML", "concept": { - "name": "img" + "name": "img", + "attributes": [{ + "name": "alt", + "constraints": ["set"] + }] + } + }, { + "module": "HTML", + "concept": { + "name": "img", + "attributes": [{ + "name": "alt", + "constraints": ["undefined"] + }] } }, { "module": "DTB", @@ -2735,7 +2870,10 @@ }, { "module": "HTML", "concept": { - "name": "link" + "name": "link", + "attributes": [{ + "name": "href" + }] } }], "props": [ @@ -2780,6 +2918,11 @@ "concept": { "name": "ul" } + }, { + "module": "HTML", + "concept": { + "name": "menu" + } }], "props": [ "aria-expanded", @@ -2896,7 +3039,8 @@ "relatedConcepts": [{ "module": "HTML", "concept": { - "name": "li" + "name": "li", + "constraints": ["direct descendant of ol, ul or menu"] } }, { "module": "XForms", @@ -3031,7 +3175,12 @@ "requiredOwnedElements": [], "requiredProps": [], "abstract": false, - "relatedConcepts": [], + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "math" + } + }], "props": [ "aria-expanded", "aria-atomic", @@ -3458,6 +3607,11 @@ "requiredProps": [], "abstract": false, "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "progress" + } + }, { "module": "ARIA", "concept": { "name": "status" @@ -3629,7 +3783,20 @@ }, { "module": "ARIA", "concept": { - "name": "section" + "name": "section", + "attributes": [{ + "name": "aria-label", + "constraints": ["set"] + }] + } + }, { + "module": "ARIA", + "concept": { + "name": "section", + "attributes": [{ + "name": "aria-labelledby", + "constraints": ["set"] + }] } }], "props": [ @@ -3942,6 +4109,9 @@ "attributes": [{ "name": "type", "value": "search" + }, { + "name": "list", + "constraints": ["undefined"] }] } }] @@ -4142,7 +4312,16 @@ ["aria-valuenow", "50"] ], "abstract": false, - "relatedConcepts": [], + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "range" + }] + } + }], "props": [ ["aria-orientation", "horizontal"], "aria-readonly", @@ -4164,7 +4343,16 @@ ["aria-valuenow", "0"] ], "abstract": false, - "relatedConcepts": [], + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "input", + "attributes": [{ + "name": "type", + "value": "number" + }] + } + }], "props": [ "aria-valuemax", "aria-valuemin", @@ -4199,7 +4387,12 @@ "requiredOwnedElements": [], "requiredProps": [], "abstract": false, - "relatedConcepts": [], + "relatedConcepts": [{ + "module": "HTML", + "concept": { + "name": "output" + } + }], "props": [ "aria-expanded", ["aria-atomic", "true"], @@ -4510,7 +4703,7 @@ "value": "text" }, { "name": "list", - "constraints": ["unset"] + "constraints": ["undefined"] }] } }, { @@ -4522,7 +4715,7 @@ "value": "email" }, { "name": "list", - "constraints": ["unset"] + "constraints": ["undefined"] }] } }, { @@ -4534,7 +4727,7 @@ "value": "tel" }, { "name": "list", - "constraints": ["unset"] + "constraints": ["undefined"] }] } }, { @@ -4546,7 +4739,7 @@ "value": "url" }, { "name": "list", - "constraints": ["unset"] + "constraints": ["undefined"] }] } }], diff --git a/src/etc/roles/literal/bannerRole.js b/src/etc/roles/literal/bannerRole.js index 6ddfd7db..27679fed 100644 --- a/src/etc/roles/literal/bannerRole.js +++ b/src/etc/roles/literal/bannerRole.js @@ -10,7 +10,17 @@ const bannerRole: ARIARoleDefinition = { 'author', ], props: {}, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'banner', + constraints: [ + 'direct descendant of document', + ], + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/buttonRole.js b/src/etc/roles/literal/buttonRole.js index 526a4156..29bab91c 100644 --- a/src/etc/roles/literal/buttonRole.js +++ b/src/etc/roles/literal/buttonRole.js @@ -21,6 +21,99 @@ const buttonRole: ARIARoleDefinition = { name: 'button', }, }, + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'button', + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'image', + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'reset', + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'submit', + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'checkbox', + }, + { + name: 'aria-pressed', + constraints: [ + 'set', + ], + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'summary', + constraints: [ + 'direct descendant of details element with the open attribute defined', + ], + attributes: [ + { + name: 'aria-expanded', + value: 'true', + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'summary', + attributes: [ + { + name: 'aria-expanded', + value: 'false', + }, + ], + }, + }, { module: 'XForms', concept: { diff --git a/src/etc/roles/literal/cellRole.js b/src/etc/roles/literal/cellRole.js index 91e8ee31..5c662498 100644 --- a/src/etc/roles/literal/cellRole.js +++ b/src/etc/roles/literal/cellRole.js @@ -21,6 +21,9 @@ const cellRole: ARIARoleDefinition = { module: 'HTML', concept: { name: 'td', + constraints: [ + 'descendant of table', + ], }, }, ], diff --git a/src/etc/roles/literal/comboboxRole.js b/src/etc/roles/literal/comboboxRole.js index 5bd61f03..81327d7d 100644 --- a/src/etc/roles/literal/comboboxRole.js +++ b/src/etc/roles/literal/comboboxRole.js @@ -25,13 +25,13 @@ const comboboxRole: ARIARoleDefinition = { { name: 'multiple', constraints: [ - 'unset', + 'undefined', ], }, { name: 'size', constraints: [ - 'unset', + 'undefined', ], }, ], @@ -45,7 +45,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'multiple', constraints: [ - 'unset', + 'undefined', ], }, { @@ -67,7 +67,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], @@ -85,7 +85,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], @@ -103,7 +103,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], @@ -121,7 +121,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], @@ -139,7 +139,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], @@ -157,7 +157,7 @@ const comboboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'isset', + 'set', ], }, ], diff --git a/src/etc/roles/literal/complementaryRole.js b/src/etc/roles/literal/complementaryRole.js index f6247ff6..fc0fe701 100644 --- a/src/etc/roles/literal/complementaryRole.js +++ b/src/etc/roles/literal/complementaryRole.js @@ -10,7 +10,14 @@ const complementaryRole: ARIARoleDefinition = { 'author', ], props: {}, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'aside', + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/contentinfoRole.js b/src/etc/roles/literal/contentinfoRole.js index f3015ebb..9cbc636f 100644 --- a/src/etc/roles/literal/contentinfoRole.js +++ b/src/etc/roles/literal/contentinfoRole.js @@ -10,7 +10,17 @@ const contentinfoRole: ARIARoleDefinition = { 'author', ], props: {}, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'footer', + constraints: [ + 'direct descendant of document', + ], + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/definitionRole.js b/src/etc/roles/literal/definitionRole.js index 7e680ab4..85317ebb 100644 --- a/src/etc/roles/literal/definitionRole.js +++ b/src/etc/roles/literal/definitionRole.js @@ -17,12 +17,6 @@ const definitionRole: ARIARoleDefinition = { name: 'dd', }, }, - { - module: 'HTML', - concept: { - name: 'dfn', - }, - }, ], requireContextRole: [], requiredContextRole: [], diff --git a/src/etc/roles/literal/dialogRole.js b/src/etc/roles/literal/dialogRole.js index ac60843e..e7986f18 100644 --- a/src/etc/roles/literal/dialogRole.js +++ b/src/etc/roles/literal/dialogRole.js @@ -10,7 +10,14 @@ const dialogRole: ARIARoleDefinition = { 'author', ], props: {}, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'dialog', + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/documentRole.js b/src/etc/roles/literal/documentRole.js index 13d25d1f..980b4efc 100644 --- a/src/etc/roles/literal/documentRole.js +++ b/src/etc/roles/literal/documentRole.js @@ -18,6 +18,12 @@ const documentRole: ARIARoleDefinition = { name: 'Device Independence Delivery Unit', }, }, + { + module: 'HTML', + concept: { + name: 'body', + }, + }, ], requireContextRole: [], requiredContextRole: [], diff --git a/src/etc/roles/literal/formRole.js b/src/etc/roles/literal/formRole.js index d55da10e..6f44bea3 100644 --- a/src/etc/roles/literal/formRole.js +++ b/src/etc/roles/literal/formRole.js @@ -15,6 +15,42 @@ const formRole: ARIARoleDefinition = { module: 'HTML', concept: { name: 'form', + attributes: [ + { + name: 'name', + constraints: [ + 'set', + ], + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'form', + attributes: [ + { + name: 'aria-label', + constraints: [ + 'set', + ], + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'form', + attributes: [ + { + name: 'aria-labelledby', + constraints: [ + 'set', + ], + }, + ], }, }, ], diff --git a/src/etc/roles/literal/groupRole.js b/src/etc/roles/literal/groupRole.js index 12b5d6aa..0f4c575d 100644 --- a/src/etc/roles/literal/groupRole.js +++ b/src/etc/roles/literal/groupRole.js @@ -19,6 +19,18 @@ const groupRole: ARIARoleDefinition = { name: 'fieldset', }, }, + { + module: 'HTML', + concept: { + name: 'details', + }, + }, + { + module: 'HTML', + concept: { + name: 'optgroup', + }, + }, ], requireContextRole: [], requiredContextRole: [], diff --git a/src/etc/roles/literal/imgRole.js b/src/etc/roles/literal/imgRole.js index 5a139e43..16de357d 100644 --- a/src/etc/roles/literal/imgRole.js +++ b/src/etc/roles/literal/imgRole.js @@ -15,6 +15,28 @@ const imgRole: ARIARoleDefinition = { module: 'HTML', concept: { name: 'img', + attributes: [ + { + name: 'alt', + constraints: [ + 'set', + ], + }, + ], + }, + }, + { + module: 'HTML', + concept: { + name: 'img', + attributes: [ + { + name: 'alt', + constraints: [ + 'undefined', + ], + }, + ], }, }, { diff --git a/src/etc/roles/literal/linkRole.js b/src/etc/roles/literal/linkRole.js index 5388c6cd..5bcc77e6 100644 --- a/src/etc/roles/literal/linkRole.js +++ b/src/etc/roles/literal/linkRole.js @@ -40,6 +40,11 @@ const linkRole: ARIARoleDefinition = { module: 'HTML', concept: { name: 'link', + attributes: [ + { + name: 'href', + }, + ], }, }, ], diff --git a/src/etc/roles/literal/listRole.js b/src/etc/roles/literal/listRole.js index 11f69a09..81684a4d 100644 --- a/src/etc/roles/literal/listRole.js +++ b/src/etc/roles/literal/listRole.js @@ -23,6 +23,12 @@ const listRole: ARIARoleDefinition = { name: 'ul', }, }, + { + module: 'HTML', + concept: { + name: 'menu', + }, + }, ], requireContextRole: [], requiredContextRole: [], diff --git a/src/etc/roles/literal/listitemRole.js b/src/etc/roles/literal/listitemRole.js index eeb76c66..d4b4e0f0 100644 --- a/src/etc/roles/literal/listitemRole.js +++ b/src/etc/roles/literal/listitemRole.js @@ -19,6 +19,9 @@ const listitemRole: ARIARoleDefinition = { module: 'HTML', concept: { name: 'li', + constraints: [ + 'direct descendant of ol, ul or menu', + ], }, }, { diff --git a/src/etc/roles/literal/mathRole.js b/src/etc/roles/literal/mathRole.js index bad7107d..6a769b06 100644 --- a/src/etc/roles/literal/mathRole.js +++ b/src/etc/roles/literal/mathRole.js @@ -10,7 +10,14 @@ const mathRole: ARIARoleDefinition = { 'author', ], props: {}, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'math', + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/progressbarRole.js b/src/etc/roles/literal/progressbarRole.js index adec4113..9712f92b 100644 --- a/src/etc/roles/literal/progressbarRole.js +++ b/src/etc/roles/literal/progressbarRole.js @@ -11,6 +11,12 @@ const progressbarRole: ARIARoleDefinition = { ], props: {}, relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'progress', + }, + }, { module: 'ARIA', concept: { diff --git a/src/etc/roles/literal/regionRole.js b/src/etc/roles/literal/regionRole.js index 424fe2d0..3f8a4ef1 100644 --- a/src/etc/roles/literal/regionRole.js +++ b/src/etc/roles/literal/regionRole.js @@ -26,6 +26,28 @@ const regionRole: ARIARoleDefinition = { module: 'ARIA', concept: { name: 'section', + attributes: [ + { + name: 'aria-label', + constraints: [ + 'set', + ], + }, + ], + }, + }, + { + module: 'ARIA', + concept: { + name: 'section', + attributes: [ + { + name: 'aria-labelledby', + constraints: [ + 'set', + ], + }, + ], }, }, ], diff --git a/src/etc/roles/literal/searchboxRole.js b/src/etc/roles/literal/searchboxRole.js index 244a8cba..1a174b92 100644 --- a/src/etc/roles/literal/searchboxRole.js +++ b/src/etc/roles/literal/searchboxRole.js @@ -20,6 +20,12 @@ const searchboxRole: ARIARoleDefinition = { name: 'type', value: 'search', }, + { + name: 'list', + constraints: [ + 'undefined', + ], + }, ], }, }, diff --git a/src/etc/roles/literal/sliderRole.js b/src/etc/roles/literal/sliderRole.js index 16051136..98864125 100644 --- a/src/etc/roles/literal/sliderRole.js +++ b/src/etc/roles/literal/sliderRole.js @@ -16,7 +16,20 @@ const sliderRole: ARIARoleDefinition = { 'aria-valuemin': '0', 'aria-valuenow': '50', }, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'range', + }, + ], + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/spinbuttonRole.js b/src/etc/roles/literal/spinbuttonRole.js index 2d43537b..dd4ff30a 100644 --- a/src/etc/roles/literal/spinbuttonRole.js +++ b/src/etc/roles/literal/spinbuttonRole.js @@ -14,7 +14,20 @@ const spinbuttonRole: ARIARoleDefinition = { 'aria-required': null, 'aria-readonly': null, }, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'input', + attributes: [ + { + name: 'type', + value: 'number', + }, + ], + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/statusRole.js b/src/etc/roles/literal/statusRole.js index daefa24f..c6fc9902 100644 --- a/src/etc/roles/literal/statusRole.js +++ b/src/etc/roles/literal/statusRole.js @@ -13,7 +13,14 @@ const statusRole: ARIARoleDefinition = { 'aria-atomic': 'true', 'aria-live': 'polite', }, - relatedConcepts: [], + relatedConcepts: [ + { + module: 'HTML', + concept: { + name: 'output', + }, + }, + ], requireContextRole: [], requiredContextRole: [], requiredOwnedElements: [], diff --git a/src/etc/roles/literal/textboxRole.js b/src/etc/roles/literal/textboxRole.js index eac45580..2f4bc0e5 100644 --- a/src/etc/roles/literal/textboxRole.js +++ b/src/etc/roles/literal/textboxRole.js @@ -42,7 +42,7 @@ const textboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'unset', + 'undefined', ], }, ], @@ -60,7 +60,7 @@ const textboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'unset', + 'undefined', ], }, ], @@ -78,7 +78,7 @@ const textboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'unset', + 'undefined', ], }, ], @@ -96,7 +96,7 @@ const textboxRole: ARIARoleDefinition = { { name: 'list', constraints: [ - 'unset', + 'undefined', ], }, ],