- commit
- 8201a5e538ce6f9c4678ee2f960f6d2bab6818a5
- parent
- 18eee65d74f442228f8090b0363190d8cfea1a55
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-06-22 20:34
name: fix ongoing labelledby
Diffstat
| M | lib/name.js | 20 | ++++++++++---------- |
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/name.js b/lib/name.js
@@ -38,7 +38,7 @@ const getPseudoContent = function(el, pseudoSelector) {
38 38 return addSpaces(ret.join(''), el, pseudoSelector);
39 39 };
40 40
41 -1 const getContent = function(root, visited) {
-1 41 const getContent = function(root, ongoingLabelledBy, visited) {
42 42 const children = atree.getChildNodes(root);
43 43
44 44 let ret = '';
@@ -50,7 +50,7 @@ const getContent = function(root, visited) {
50 50 if (node.tagName.toLowerCase() === 'br') {
51 51 ret += '\n';
52 52 } else {
53 -1 ret += getName(node, true, visited);
-1 53 ret += getName(node, true, ongoingLabelledBy, visited);
54 54 }
55 55 }
56 56 }
@@ -65,7 +65,7 @@ const allowNameFromContent = function(el) {
65 65 }
66 66 };
67 67
68 -1 const getName = function(el, recursive, visited, directReference) {
-1 68 const getName = function(el, recursive, ongoingLabelledBy, visited, directReference) {
69 69 let ret = '';
70 70
71 71 visited = visited || [];
@@ -81,11 +81,11 @@ const getName = function(el, recursive, visited, directReference) {
81 81 // handled in atree
82 82
83 83 // B
84 -1 if (!recursive && el.matches('[aria-labelledby]')) {
-1 84 if (!ongoingLabelledBy && el.matches('[aria-labelledby]')) {
85 85 const ids = el.getAttribute('aria-labelledby').split(/\s+/);
86 86 const strings = ids.map(id => {
87 87 const label = document.getElementById(id);
88 -1 return label ? getName(label, true, visited, true) : '';
-1 88 return label ? getName(label, true, true, visited, true) : '';
89 89 });
90 90 ret = strings.join(' ');
91 91 }
@@ -97,7 +97,7 @@ const getName = function(el, recursive, visited, directReference) {
97 97 } else if (query.matches(el, 'combobox,listbox')) {
98 98 const selected = query.querySelector(el, ':selected') || query.querySelector(el, 'option');
99 99 if (selected) {
100 -1 ret = getName(selected, recursive, visited);
-1 100 ret = getName(selected, recursive, ongoingLabelledBy, visited);
101 101 } else {
102 102 ret = el.value || '';
103 103 }
@@ -115,7 +115,7 @@ const getName = function(el, recursive, visited, directReference) {
115 115 // D
116 116 if (!ret.trim() && !recursive && el.labels) {
117 117 const strings = Array.prototype.map.call(el.labels, label => {
118 -1 return getName(label, true, visited);
-1 118 return getName(label, true, ongoingLabelledBy, visited);
119 119 });
120 120 ret = strings.join(' ');
121 121 }
@@ -130,7 +130,7 @@ const getName = function(el, recursive, visited, directReference) {
130 130 if (el.matches(selector)) {
131 131 const descendant = el.querySelector(constants.nameFromDescendant[selector]);
132 132 if (descendant) {
133 -1 ret = getName(descendant, true, visited);
-1 133 ret = getName(descendant, true, ongoingLabelledBy, visited);
134 134 }
135 135 }
136 136 }
@@ -148,7 +148,7 @@ const getName = function(el, recursive, visited, directReference) {
148 148 // F
149 149 // FIXME: menu is not mentioned in the spec
150 150 if (!ret.trim() && (recursive || allowNameFromContent(el) || el.closest('label')) && !query.matches(el, 'menu')) {
151 -1 ret = getContent(el, visited);
-1 151 ret = getContent(el, ongoingLabelledBy, visited);
152 152 }
153 153
154 154 if (!ret.trim() && query.matches(el, 'button')) {
@@ -196,7 +196,7 @@ const getDescription = function(el) {
196 196 const ids = el.getAttribute('aria-describedby').split(/\s+/);
197 197 const strings = ids.map(id => {
198 198 const label = document.getElementById(id);
199 -1 return label ? getName(label, true) : '';
-1 199 return label ? getName(label, true, true) : '';
200 200 });
201 201 ret = strings.join(' ');
202 202 } else if (el.matches('[aria-description]')) {