- commit
- e21f6d62795dfcee089a5ea25817518c6082f82b
- parent
- d07b2afed95eccf343fc6bf2ae19fd01004cdf3b
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-01-30 08:43
change how aliases work
Diffstat
| M | lib/attrs.js | 9 | +++++++-- |
| M | lib/constants.js | 15 | +++++++-------- |
| M | test/test-role.js | 6 | ++++++ |
3 files changed, 20 insertions, 10 deletions
diff --git a/lib/attrs.js b/lib/attrs.js
@@ -8,10 +8,15 @@ var flatten = function(arr) {
8 8 return [].concat.apply([], arr);
9 9 };
10 10
-1 11 var normalizeRoles = function(roles) {
-1 12 return unique(roles.map(r => constants.aliases[r] || r));
-1 13 };
-1 14
11 15 // candidates can be passed for performance optimization
12 16 const getRole = function(el, candidates) {
13 17 if (el.hasAttribute('role')) {
14 -1 const roles = el.getAttribute('role').toLowerCase().split(/\s+/);
-1 18 let roles = el.getAttribute('role').toLowerCase().split(/\s+/);
-1 19 roles = normalizeRoles(roles);
15 20 if (roles.length > 1 && candidates) {
16 21 return [roles, candidates];
17 22 }
@@ -35,7 +40,7 @@ const getRole = function(el, candidates) {
35 40 };
36 41
37 42 const hasRole = function(el, roles) {
38 -1 const subRoles = roles.map(role => {
-1 43 const subRoles = normalizeRoles(roles).map(role => {
39 44 return (constants.roles[role] || {}).subRoles || [role];
40 45 });
41 46 return !!getRole(el, unique(flatten(subRoles)));
diff --git a/lib/constants.js b/lib/constants.js
@@ -348,6 +348,9 @@ exports.roles = {
348 348 selectors: ['nav'],
349 349 childRoles: ['doc-index', 'doc-pagelist', 'doc-toc'],
350 350 },
-1 351 none: {
-1 352 selectors: ['img[alt=""]'],
-1 353 },
351 354 note: {
352 355 childRoles: ['doc-notice', 'doc-tip'],
353 356 },
@@ -362,9 +365,6 @@ exports.roles = {
362 365 paragraph: {
363 366 selectors: ['p'],
364 367 },
365 -1 presentation: {
366 -1 selectors: ['img[alt=""]'],
367 -1 },
368 368 progressbar: {
369 369 selectors: ['progress'],
370 370 defaults: {
@@ -512,7 +512,6 @@ exports.roles = {
512 512 'document',
513 513 'none',
514 514 'generic',
515 -1 'presentation',
516 515 'range',
517 516 'rowgroup',
518 517 'section',
@@ -631,10 +630,10 @@ for (const role in exports.roles) {
631 630 }
632 631 }
633 632 }
634 -1 exports.roles['none'] = exports.roles['none'] || {};
635 -1 exports.roles['none'].subRoles = ['none', 'presentation'];
636 -1 exports.roles['presentation'] = exports.roles['presentation'] || {};
637 -1 exports.roles['presentation'].subRoles = ['presentation', 'none'];
-1 633
-1 634 exports.aliases = {
-1 635 'presentation': 'none',
-1 636 };
638 637
639 638 exports.nameFromDescendant = {
640 639 'figure': 'figcaption',
diff --git a/test/test-role.js b/test/test-role.js
@@ -74,6 +74,12 @@ describe('query', () => {
74 74 var actual = aria.getRole(testbed.children[0]);
75 75 expect(actual).toEqual('link');
76 76 });
-1 77
-1 78 it('does treat presentation as alias of none', () => {
-1 79 testbed.innerHTML = '<a role="presentation">';
-1 80 var actual = aria.getRole(testbed.children[0]);
-1 81 expect(actual).toEqual('none');
-1 82 });
77 83 });
78 84
79 85 describe('closest', () => {