diff --git a/__tests__/src/rules/label-has-for-test.js b/__tests__/src/rules/label-has-for-test.js
index aeb536c0..d476d1d6 100644
--- a/__tests__/src/rules/label-has-for-test.js
+++ b/__tests__/src/rules/label-has-for-test.js
@@ -96,7 +96,7 @@ ruleTester.run('label-has-for', rule, {
{ code: '', options: optionsRequiredNesting },
{ code: '', options: optionsRequiredEvery },
{ code: '', options: optionsChildrenAllowed },
- { code: 'Test!', options: [assign({}, optionsComponents, optionsChildrenAllowed)] },
+ { code: 'Test!', options: [assign({}, optionsComponents[0], optionsChildrenAllowed[0])] },
{ code: '', options: optionsChildrenAllowed },
{ code: '', options: optionsChildrenAllowed },
{ code: '', options: optionsChildrenAllowed },
diff --git a/src/index.js b/src/index.js
index 980081e6..9619a61c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -81,7 +81,6 @@ const recommendedRules = {
'tree',
'treegrid',
],
- includeRoles: ['alert', 'dialog'],
},
],
'jsx-a11y/heading-has-content': 'error',
@@ -235,7 +234,6 @@ const strictRules = {
'tree',
'treegrid',
],
- includeRoles: ['alert', 'dialog'],
},
],
'jsx-a11y/heading-has-content': 'error',
diff --git a/src/rules/label-has-for.js b/src/rules/label-has-for.js
index 46081c97..f2d8eb95 100644
--- a/src/rules/label-has-for.js
+++ b/src/rules/label-has-for.js
@@ -26,6 +26,7 @@ const schema = {
},
allowChildren: { type: 'boolean' },
},
+ additionalProperties: false,
};
// Breadth-first search, assuming that HTML for forms is shallow.
function validateNesting(node) {
diff --git a/src/rules/no-noninteractive-element-interactions.js b/src/rules/no-noninteractive-element-interactions.js
index f31c0cdd..cf4131f7 100644
--- a/src/rules/no-noninteractive-element-interactions.js
+++ b/src/rules/no-noninteractive-element-interactions.js
@@ -48,7 +48,16 @@ export default ({
url: 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md',
description: 'Non-interactive elements should not be assigned mouse or keyboard event listeners.',
},
- schema: [schema],
+ schema: [{
+ ...schema,
+ additionalProperties: {
+ type: 'array',
+ items: {
+ type: 'string',
+ },
+ uniqueItems: true,
+ },
+ }],
},
create: (context: ESLintContext): ESLintVisitorSelectorConfig => {
diff --git a/src/rules/no-noninteractive-tabindex.js b/src/rules/no-noninteractive-tabindex.js
index 796b44cd..60a3fe38 100644
--- a/src/rules/no-noninteractive-tabindex.js
+++ b/src/rules/no-noninteractive-tabindex.js
@@ -34,6 +34,9 @@ const schema = generateObjSchema({
...arraySchema,
description: 'An array of HTML tag names',
},
+ allowExpressionValues: {
+ type: 'boolean',
+ },
});
export default ({
diff --git a/src/rules/no-static-element-interactions.js b/src/rules/no-static-element-interactions.js
index 038d7c1e..6a3d186d 100644
--- a/src/rules/no-static-element-interactions.js
+++ b/src/rules/no-static-element-interactions.js
@@ -37,6 +37,9 @@ const defaultInteractiveProps = [].concat(
);
const schema = generateObjSchema({
handlers: arraySchema,
+ allowExpressionValues: {
+ type: 'boolean',
+ },
});
export default ({
diff --git a/src/util/schemas.js b/src/util/schemas.js
index ba41df63..6c822670 100644
--- a/src/util/schemas.js
+++ b/src/util/schemas.js
@@ -30,4 +30,5 @@ export const generateObjSchema = (properties = {}, required = undefined) => ({
type: 'object',
properties,
required,
+ additionalProperties: false,
});