fix(820): label has associated control

pull/5074/head
Bassam Ismail 5 years ago
parent 55c809624d
commit c623b33ea3

@ -507,6 +507,16 @@ export default class Element extends Node {
} }
} }
if (this.name === 'label') {
const has_input_child = this.children.some(i => (i instanceof Element && i.name === 'input' ));
if (!attribute_map.has('for') && !has_input_child) {
component.warn(this, {
code: `a11y-label-has-associated-control`,
message: `A11y: A form label must be associated with a control.`
});
}
}
if (a11y_no_onchange.has(this.name)) { if (a11y_no_onchange.has(this.name)) {
if (handlers_map.has('change') && !handlers_map.has('blur')) { if (handlers_map.has('change') && !handlers_map.has('blur')) {
component.warn(this, { component.warn(this, {

@ -0,0 +1,5 @@
<label>A</label>
<label for="id">B</label>
<label>C <input type="text" /></label>
<label>D <span></span></label>

@ -0,0 +1,32 @@
[
{
"code": "a11y-label-has-associated-control",
"end": {
"character": 16,
"column": 16,
"line": 1
},
"message": "A11y: A form label must be associated with a control.",
"pos": 0,
"start": {
"character": 0,
"column": 0,
"line": 1
}
},
{
"code": "a11y-label-has-associated-control",
"end": {
"character": 113,
"column": 30,
"line": 5
},
"message": "A11y: A form label must be associated with a control.",
"pos": 83,
"start": {
"character": 83,
"column": 0,
"line": 5
}
}
]
Loading…
Cancel
Save