Skip to content

Commit 4913516

Browse files
committed
do not run a11y validation on child component elements (#1110)
1 parent 8057884 commit 4913516

File tree

5 files changed

+40
-8
lines changed

5 files changed

+40
-8
lines changed

src/validate/html/index.ts

+18-3
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,29 @@ export default function validateHtml(validator: Validator, html: Node) {
1919
const elementStack: Node[] = [];
2020

2121
function visit(node: Node) {
22-
a11y(validator, node, elementStack);
23-
2422
if (node.type === 'Element') {
2523
if (meta.has(node.name)) {
2624
return meta.get(node.name)(validator, node, refs, refCallees);
2725
}
2826

29-
validateElement(validator, node, refs, refCallees, stack, elementStack);
27+
const isComponent =
28+
node.name === ':Self' ||
29+
node.name === ':Component' ||
30+
validator.components.has(node.name);
31+
32+
validateElement(
33+
validator,
34+
node,
35+
refs,
36+
refCallees,
37+
stack,
38+
elementStack,
39+
isComponent
40+
);
41+
42+
if (!isComponent) {
43+
a11y(validator, node, elementStack);
44+
}
3045
} else if (node.type === 'EachBlock') {
3146
if (validator.helpers.has(node.context)) {
3247
let c = node.expression.end;

src/validate/html/validateElement.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@ export default function validateElement(
1111
refs: Map<string, Node[]>,
1212
refCallees: Node[],
1313
stack: Node[],
14-
elementStack: Node[]
14+
elementStack: Node[],
15+
isComponent: Boolean
1516
) {
16-
const isComponent =
17-
node.name === ':Self' || node.name === ':Component' || validator.components.has(node.name);
18-
1917
if (isComponent) {
2018
validator.used.components.add(node.name);
2119
}

src/validate/html/validateHead.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ export default function validateHead(validator: Validator, node: Node, refs: Map
1111

1212
node.children.forEach(node => {
1313
if (node.type !== 'Element') return; // TODO handle {{#if}} and friends?
14-
validateElement(validator, node, refs, refCallees, [], []);
14+
validateElement(validator, node, refs, refCallees, [], [], false);
1515
});
1616
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Widget scope="foo">
2+
<input autofocus>
3+
</Widget>
4+
5+
<script>
6+
export default {
7+
components: { Widget },
8+
};
9+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[
2+
{
3+
"message": "A11y: Avoid using autofocus",
4+
"loc": {
5+
"column": 8,
6+
"line": 2
7+
},
8+
"pos": 29
9+
}
10+
]

0 commit comments

Comments
 (0)