Skip to content

Commit dedf87a

Browse files
authored
Merge pull request #144 from vue-a11y/fix-84
Fix for #84
2 parents b66749e + 8191a2b commit dedf87a

File tree

6 files changed

+25
-10
lines changed

6 files changed

+25
-10
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
99
### Changed
1010

1111
- Fix `iframe-has-title` such that if the attribute is ommitted completely that it fires correctly.
12+
- Fix `form-control-has-label` to ignore form controls nested inside `aria-hidden` elements.
1213

1314
## [0.6.1] - 2021-01-21
1415

src/rules/__tests__/form-control-has-label.test.js

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ makeRuleTester("form-control-has-label", rule, {
1616
<slot />
1717
</div>
1818
</label>
19+
`,
20+
`
21+
<div aria-hidden="true">
22+
<input value="1" type="text" />
23+
</div>
1924
`
2025
],
2126
invalid: ["<input type='text' />", "<textarea type='text'></textarea>"]

src/rules/accessible-emoji.js

+1-9
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,10 @@ const {
44
getElementAttributeValue,
55
getElementType,
66
hasAriaLabel,
7-
isHiddenFromScreenReader,
7+
isAriaHidden,
88
makeDocsURL
99
} = require("../utils");
1010

11-
const isAriaHidden = (node) => {
12-
if (!node || node.type !== "VElement") {
13-
return false;
14-
}
15-
16-
return isHiddenFromScreenReader(node) || isAriaHidden(node.parent);
17-
};
18-
1911
module.exports = {
2012
meta: {
2113
docs: {

src/rules/form-control-has-label.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const {
33
getElementAttributeValue,
44
getElementType,
55
hasAriaLabel,
6+
isAriaHidden,
67
makeDocsURL
78
} = require("../utils");
89

@@ -47,7 +48,11 @@ module.exports = {
4748
}
4849
}
4950

50-
if (!hasAriaLabel(node) && !hasLabelElement(node)) {
51+
if (
52+
!isAriaHidden(node) &&
53+
!hasAriaLabel(node) &&
54+
!hasLabelElement(node)
55+
) {
5156
context.report({ node, messageId: "default" });
5257
}
5358
}

src/utils.js

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = {
1111
hasContent: require("./utils/hasContent"),
1212
hasOnDirective: require("./utils/hasOnDirective"),
1313
hasOnDirectives: require("./utils/hasOnDirectives"),
14+
isAriaHidden: require("./utils/isAriaHidden"),
1415
isAttribute: require("./utils/isAttribute"),
1516
isHiddenFromScreenReader: require("./utils/isHiddenFromScreenReader"),
1617
isInteractiveElement: require("./utils/isInteractiveElement"),

src/utils/isAriaHidden.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const isHiddenFromScreenReader = require("./isHiddenFromScreenReader");
2+
3+
const isAriaHidden = (node) => {
4+
if (!node || node.type !== "VElement") {
5+
return false;
6+
}
7+
8+
return isHiddenFromScreenReader(node) || isAriaHidden(node.parent);
9+
};
10+
11+
module.exports = isAriaHidden;

0 commit comments

Comments
 (0)