From 20b48a4110fef62165148a43269d955d82882cbc Mon Sep 17 00:00:00 2001 From: Karl Horky Date: Tue, 17 Nov 2020 20:04:49 +0100 Subject: [PATCH] [patch] `no-onchange`: Remove rule from recommended/strict configs, and deprecate See https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/398#issuecomment-729113622 --- docs/rules/no-onchange.md | 4 +++- src/index.js | 2 -- src/rules/no-onchange.js | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/rules/no-onchange.md b/docs/rules/no-onchange.md index 5c4875c77..01eedd100 100644 --- a/docs/rules/no-onchange.md +++ b/docs/rules/no-onchange.md @@ -1,4 +1,6 @@ -# no-onchange +# [Deprecated] no-onchange + +⚠️ **Deprecated:** This rule is based on reports of behavior of [old browsers (eg. IE 10 and below)](https://www.quirksmode.org/dom/events/change.html#t05). In the meantime, this behavior has been corrected, both in newer versions of browsers as well as [in the DOM spec](https://bugzilla.mozilla.org/show_bug.cgi?id=969068#c2). Enforce usage of `onBlur` over/in parallel with `onChange` on select menu elements for accessibility. `onBlur` **should** be used instead of `onChange`, unless absolutely necessary and it causes no negative consequences for keyboard only or screen reader users. `onBlur` is a more declarative action by the user: for instance in a dropdown, using the arrow keys to toggle between options will trigger the `onChange` event in some browsers. Regardless, when a change of context results from an `onBlur` event or an `onChange` event, the user should be notified of the change unless it occurs below the currently focused element. diff --git a/src/index.js b/src/index.js index 4bec05cb5..2b1f4c4c8 100644 --- a/src/index.js +++ b/src/index.js @@ -175,7 +175,6 @@ module.exports = { allowExpressionValues: true, }, ], - 'jsx-a11y/no-onchange': 'error', 'jsx-a11y/no-redundant-roles': 'error', 'jsx-a11y/no-static-element-interactions': [ 'error', @@ -283,7 +282,6 @@ module.exports = { ], 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error', 'jsx-a11y/no-noninteractive-tabindex': 'error', - 'jsx-a11y/no-onchange': 'error', 'jsx-a11y/no-redundant-roles': 'error', 'jsx-a11y/no-static-element-interactions': 'error', 'jsx-a11y/role-has-required-aria-props': 'error', diff --git a/src/rules/no-onchange.js b/src/rules/no-onchange.js index 9451b57d0..06486bf7c 100644 --- a/src/rules/no-onchange.js +++ b/src/rules/no-onchange.js @@ -24,6 +24,7 @@ module.exports = { docs: { url: 'https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules/no-onchange.md', }, + deprecated: true, schema: [schema], },