Skip to content

Commit 80df0c5

Browse files
committed
[fix] - Handle spread attributes in multiple rules.
May fix #59
1 parent b405786 commit 80df0c5

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

src/rules/aria-unsupported-elements.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ module.exports = context => ({
3030
const invalidAttributes = Object.keys(ARIA).concat('ROLE');
3131

3232
node.attributes.forEach(prop => {
33+
if (prop.type === 'JSXSpreadAttribute') {
34+
return;
35+
}
36+
3337
if (invalidAttributes.indexOf(prop.name.name.toUpperCase()) > -1) {
3438
context.report({
3539
node,

src/rules/role-supports-aria-props.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ module.exports = context => ({
4343
.filter(attribute => propertySet.indexOf(attribute) === -1);
4444

4545
node.attributes.forEach(prop => {
46+
if (prop.type === 'JSXSpreadAttribute') {
47+
return;
48+
}
49+
4650
if (invalidAriaPropsForRole.indexOf(prop.name.name.toUpperCase()) > -1) {
4751
context.report({
4852
node,

tests/src/rules/aria-unsupported-elements.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ const ariaValidityTests = Object.keys(DOM).map(element => {
5757
const invalidRoleValidityTests = Object.keys(DOM)
5858
.filter(element => Boolean(DOM[element].reserved))
5959
.map(reservedElem => ({
60-
code: `<${reservedElem} role />`,
60+
code: `<${reservedElem} role {...props} />`,
6161
errors: [errorMessage('role')],
6262
parserOptions,
6363
}));
6464

6565
const invalidAriaValidityTests = Object.keys(DOM)
6666
.filter(element => Boolean(DOM[element].reserved))
6767
.map(reservedElem => ({
68-
code: `<${reservedElem} aria-hidden />`,
68+
code: `<${reservedElem} aria-hidden {...props} />`,
6969
errors: [errorMessage('aria-hidden')],
7070
parserOptions,
7171
}));

tests/src/rules/role-supports-aria-props.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ ruleTester.run('role-supports-aria-props', rule, {
7070
{ code: '<Foo bar />', parserOptions },
7171
{ code: '<div />', parserOptions },
7272
{ code: '<div id="main" />', parserOptions },
73+
{ code: '<div role="presentation" {...props} />', parserOptions },
7374
{ code: '<Foo.Bar baz={true} />', parserOptions },
7475

7576
// IMPLICIT ROLE TESTS

0 commit comments

Comments
 (0)