eslint-plugin-jsx-a11y
Advanced tools
Changelog
v6.10.2 - 2024-10-25
no-redundandant-roles
: allow <img src="*.svg" role="img" />
#936
0d01a1a
es-iterator-helpers
aa075bd
d15d3ab
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
5dad7c4
aria-role
: Add valid test for <svg role="img" />
daba189
label-has-associated-control
: add line breaks for readability 0bc6378
label-has-associated-control
: add additional test cases 30d2318
d92446c
Changelog
v6.10.1 - 2024-10-20
4925ba8
cb6788c
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
, auto-changelog
, eslint-plugin-import
, tape
518a77e
es-iterator-helpers
, string.prototype.includes
eed03a3
2ee940c
a262131
aria-query
e517937
Changelog
v6.10.0 - 2024-09-03
label-has-associated-control
: add additional error message #1005
label-has-associated-control
: ignore undetermined label text #966
a284cbf
deac4fd
attributes
setting a1ee7f8
6cd1a70
74d5dec
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
6eca235
0be7ea9
npm audit
instead of aud
05a5e49
axobject-query
912e98c
axobject-query
75147aa
axe-core
27ff7cb
ce846e0
cca288b
Changelog
v6.9.0 - 2024-06-19
6b5f096
isNonInteractiveElement
: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" 75d5dd7
safe-regex-test
4c7e781
51a1ca7
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
, eslint-doc-generator
, object.entries
1271ac1
@babel/cli
, @babel/core
, @babel/register
, aud
, eslint-plugin-import
, npmignore
, object.assign
540cb7a
@babel/runtime
, array-includes
, es-iterator-helpers
, hasown
, object.fromentries
, safe-regex-test
5d14408
aria-query
and axobject-query
, add ls-engines
test to CI 32fd82c
@babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, eslint-doc-generator
d1b4114
summary
remains non-interactive 6a048da
@babel/runtime
0a98ad8
no-noninteractive-element-to-interactive-role
: allow menuitemradio
and menuitemcheckbox
on <li> c0733f9
@babel/runtime
, safe-regex-test
0d5321a
961817f
axe-core
b3559cf
object.entries
to dev deps 1be7b70
@babel/runtime
2a48abb
@babel/runtime
1adec35
Changelog
v6.8.0 - 2023-11-01
title
attribute or aria-label
attribute instead of accessible child in the "anchor-has-content" rule #727
aria-activedescendant-has-tabindex
: align with changes from #708 #924
control-has-associated-label
: don't accept whitespace as an accessible label #918
eslint-plugin-react
ce4d57f
es-iterator-helpers
52de824
mouse-events-have-key-events
: add hoverInHandlers
/hoverOutHandlers
config db64898
polymorphicPropName
setting for polymorphic components fffb05b
isNonInteractiveElement
: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 64bfea6
hasown
instead of has
9a8edde
10c061a
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
, aud
, eslint-doc-generator
, eslint-plugin-import
, minimist
6d5022d
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/register
, eslint-doc-generator
, eslint-plugin-import
4dc7f1e
anchor-has-content
: Allow title attribute OR aria-label attribute e6bfd5c
mouse-events-have-key-events
: rport the attribute, not the node eadd70c
@babel/runtime
, array-includes
, array.prototype.flatmap
, object.entries
, object.fromentries
46ffbc3
@babel/runtime
, axobject-query
, jsx-ast-utils
, semver
5999555
aria-query
and axe-core
to fix failing tests on main 8d8f016
semver
from Deps to Dev Deps 4da13e7
ast-types-flow
b755318
eslint-plugin-import
f1c976b
language-tags
3d1d26d
no-static-element-interactions
: tabIndex is written tabindex 1271153
f0d2ddb
jackspeak
since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 0c278f4
Changelog
v6.7.0 - 2023-01-09
#833
aria-role
: add now-passing test #756
control-has-associated-label
: fix metadata #892
no-aria-hidden-on-focusable
rule #881
eslint-doc-generator
6d7a857
3d77c84
anchor-ambiguous-text
rule 7f6463e
getAccessibleChildText
util 630116b
isFocusable
utils method e199d17
eslint-doc-generator
to v1.0.0 6b9855b
no-noninteractive-element-interactions
: Ignore contenteditable elements in no-noninteractive-element-interactions 9aa878b
anchor-ambiguous-text
: ignore punctuation bbae2c4
anchor-ambiguous-text
, getAccessibleChildText
: Implements check for alt
tags on <img />
elements bb84abc
npmignore
to autogenerate an npmignore file 6ad2312
auto-changelog
283817b
79b975a
aria-query
, axobject-query
7b3cda3
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, aud
, object.assign
0852947
.eslintignore
to ignorePatterns
65be35b
@babel/cli
, @babel/core
, aud
, eslint-doc-generator
60c2df5
@babel/runtime
, array-includes
, axe-core
4abc751
@babel/runtime
, axe-core
89f766c
e411ce3
@babel/core
, minimist
cccdb62
markdown-magic
3382059
prefer-tag-over-role
38d52f8
label-has-for
: reran generate-list-of-rules 9a2af01
language-tags
to v1.0.5
f84bb74
@babel/core
cf3f8d0
axe-core
0a73cf4
@babel/runtime
053f04d
@babel/runtime
bccf0ae
jsx-ast-utils
c9687cc
8b889bf
prefer-tag-over-role
: rename docs file 0bdf95b
no-interactive-tabindex
: allow role assignments using a ternary with literals on both sidesno-static-element-interactions
: allow role assignments using a ternary with literals on both sides (#865)no-noninteractive-tabindex
, no-static-element-interactions
: document allowExpressionValues
(#870)axe-core
axe-core
to v4.4.1, due to a breaking change in a patch@babel/runtime
@babel/runtime
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, @babel/register
no-noninteractive-element-interactions
: add passing test cases (#876)no-noninteractive-element-interactions
: add passing tests for form with onSubmit (#871)no-static-element-interactions
: add passing test casesaria-role
: add allowedInvalidRoles
option (#828)no-redundant-roles
, role-supports-aria-props
: Remove implicit role from dl element (#848)role-supports-aria-props
: clean up the logic a bit[].concat
idiomno-static-element-interactions
: Update error message (#843)@babel/runtime
, array-includes
, axe-core
, jsx-ast-utils
jsx-ast-utils
@babel/runtime
, jsx-ast-utils
@babel/runtime
, axe-core
, minimatch
@babel/runtime
, minimatch
, semver
@babel/runtime
, axe-core
, damerau-levenshtein
export default
instead of module.exports
(#861)@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-eslint-plugin
, eslint-plugin-flowtype
, eslint-plugin-import
@babel/core
, @babel/register
, eslint-plugin-import
, minimist
@technote-space/doctoc
because v2.5 is a breaking change@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, eslint-plugin-eslint-plugin
@babel/cli
@babel/cli
, @babel/core
, @babel/eslint-parser
npm run flow
(#856)img-redundant-alt-test
: add passing tests (#832)module.exports
(#824)eslint-plugin-import
@babel/runtime
, axe-core
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, eslint-config-airbnb-base
anchor-has-content
: add missing close / for jsx succeed example (#821)master
references in URLs to HEAD
eslint-plugin-eslint-plugin
(#818)export default
syntax for exporting rules (#819)@babel/runtime
, array-includes
, axe-core
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/eslint-parser
, eslint-plugin-import
, estraverse
, safe-publish-latest
@babel/eslint-parser
instead of babel-eslint
(#811).github
reposcope
: replace duplicate scope
word (#799)no-access-key
: Fix wording and grammar (#800)@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-flowtype
, eslint-plugin-import
@babel/runtime
, axe-core
, damerau-levenshtein
src/util/getComputedRole-test.js
test in node 6autocomplete-valid
: move some failed tests to passingimport type
prepublishOnly
script for npm 7+flow-bin
to support aarch64 (#784)@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-flowtype
, jscodeshift
@babel/runtime
, array-includes
, axe-core
, emoji-regex
node/install
actionanchor-is-valid
: general cleanup (#728)no-redundant-roles
: Adds missing closing square bracket (#775)anchor-is-valid
: Add Next.js case (#769)no-noninteractive-tabindex
: Add example for tabIndex on seemingly non-interactive element (#760)aud
in posttest
label-has-associated-control
: Add glob support (#749)strict
config: Turn off label-has-for
(#734)no-onchange
: Remove rule from recommended/strict configs, and deprecate (#757)axe-core
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, eslint-plugin-flowtype
, eslint-plugin-import
, estraverse
, expect
, object.assign
@babel/runtime
, axe-core
no-static-element-interactions
: Fixed rule name in commentsautocomplete-valid
: workaround for axe not being able to handle null
img-redundant-alt
: removing a use of some
label-has-associated-control
: add test for <div><label /><input /></div>@babel/runtime
, array-includes
, axe-core
, axobject-query
, damerau-levenshtein
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-types
, babel-eslint
, babel-jest
, coveralls
, eslint-config-airbnb-base
, eslint-plugin-flowtype
, eslint-plugin-import
, estraverse
, in-publish
, jest
, minimist
, rimraf
, safe-publish-latest
language-tags
package to check the lang
ruleimg
<img>
with alt=""
plugin:jsx-a11y/{recommended,strict}
configslabel-has-for
: textarea
s are inputs too #470.npmignore
with /
so it only matches the top-level directorysrc
and flow
from package to resolve flow issues for consuming packages.anchor-is-valid
. See documentation for configuration options. Thanks @AlmeroSteyn.href-no-hash
replaced with anchor-is-valid
in the recommended and strict configs. Use the invalidHref
aspect (active by default) in anchor-is-valid
to continue to apply the behavior provided by href-no-hash
.label-has-for
now allows inputs nested in label tags. Previously it was strict about requiring a for
attribute. Thanks @ignatiusreza and @mjaltamirano.interactive-supports-focus
. Recommended and strict configs for now contain a trimmed-down whitelist of roles that will be checked.media-has-caption
. Thanks @ismail-syed.aria-props
rule incorrectly threw errors for these new properties.label-has-for
: add "required" option to allow customization (#240)anchor-is-valid
(#224)interactive-supports-focus
: Split interactive supports focus into tabbable and focusable cases (#236)anchor-is-valid
: add aspects
option (#251)flow
directory from .npmignore
to accommodate explicit imports from v5.0.2
.img-has-alt
rule into alt-text
ruleonclick-has-role
is removed. Replaced with no-static-element-interactions
and no-noninteractive-element-interactions
.onclick-has-focus
is removed. Replaced with interactive-supports-focus
.media-has-caption
ruleignoreNonDOM
option to no-autofocus
.no-interactive-element-to-noninteractive-role
no-noninteractive-element-to-interactive-role
no-noninteractive-tabindex
no-static-element-interactions
and no-noninteractive-element-interactions
. Options allow for fine-tuning of elements and event handlers to check.Add new rules:
jsx-a11y/accessible-emoji
jsx-a11y/aria-activedescendant-has-tabindex
jsx-a11y/iframe-has-title
jsx-a11y/no-autofocus
jsx-a11y/no-distracting-elements
(breaking: consolidated no-marquee and no-blink into this rule.)jsx-a11y/no-redundant-roles
ignoreNonDom
aria-invalid
values true and false pass for rule aria-proptypes
href-no-hash
accepts new schema property specialLink
to check for custom href
properties on elements. (fixes #76)img-has-alt
now prefers alt=""
over role="presentation"
. You can set both, but not just role="presentation"
by itself to ensure a11y across all devices.Note - see rule documentation for updated schemas.
switch
aria role.x-has-content
rules now pass with children prop set.tablist
role to include missing property aria-multiselectable
.click-events-have-key-events
rule.no-static-element-interactions
rule.eslint
, eslint-config-airbnb
, mocha
to latest.error
syntax over 2
syntax in recommended config.aria-checked
for roles that are subclasses of checkbox
anchor-has-content
rule.img-redundant-alt
(mainly for i18n).heading-has-content
: dangerouslySetInnerHTML will pass.no-onchange
rule to select menu elements only.eslint
v3 as a peerDependency
.eslint
as a peerDependency
.<ELEMENT role />
for role-supports-aria-props
.img-redundant-alt
rule to use getLiteralPropValue
from jsx-ast-utils
.heading-has-content
for children content.jsx-ast-utils
to use propName
function. More support for namespaced names on attributes and elements.aria-unsupported-elements
and role-supports-aria-props
when reporting.aria-*
propsrole
value is a string before converting to lowercase in img-has-alt
rule.tabIndex
expression values, but still retain validation logic for literal tabIndex
values.Button
vs button
).BinaryExpression
type.NewExpression
type.ObjectExpression
type.ConditionalExpression
type.onclick-has-focus
.ThisExpression
type.[breaking] Rename img-uses-alt
to img-has-alt
[breaking] Rename onlick-uses-role
to onclick-has-role
[breaking] Rename mouse-events-map-to-key-events
to mouse-events-have-key-events
[breaking] Rename use-onblur-not-onchange
to no-onchange
[breaking] Rename label-uses-for
to label-has-for
[breaking] Rename redundant-alt
to img-redundant-alt
[breaking] Rename no-hash-href
to href-no-hash
[breaking] Rename valid-aria-role
to aria-role
[new] Implement aria-props
rule
[new] Implement aria-proptypes
rule
[new] Implement aria-unsupported-elements
rule
[new] Implement onclick-has-focus
rule
[new] Implement role-has-required-aria-props
rule
[new] Implement role-supports-aria-props
rule
[new] Implement tabindex-no-positive
rule
<Component prop={foo || "foobar"} />
Object.Property
i.e. UX.Layout
Changelog
v6.7.0 - 2023-01-09
#833
aria-role
: add now-passing test #756
control-has-associated-label
: fix metadata #892
no-aria-hidden-on-focusable
rule #881
eslint-doc-generator
6d7a857
3d77c84
anchor-ambiguous-text
rule 7f6463e
getAccessibleChildText
util 630116b
isFocusable
utils method e199d17
eslint-doc-generator
to v1.0.0 6b9855b
no-noninteractive-element-interactions
: Ignore contenteditable elements in no-noninteractive-element-interactions 9aa878b
anchor-ambiguous-text
: ignore punctuation bbae2c4
anchor-ambiguous-text
, getAccessibleChildText
: Implements check for alt
tags on <img />
elements bb84abc
npmignore
to autogenerate an npmignore file 6ad2312
auto-changelog
283817b
79b975a
aria-query
, axobject-query
7b3cda3
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, aud
, object.assign
0852947
.eslintignore
to ignorePatterns
65be35b
@babel/cli
, @babel/core
, aud
, eslint-doc-generator
60c2df5
@babel/runtime
, array-includes
, axe-core
4abc751
@babel/runtime
, axe-core
89f766c
e411ce3
@babel/core
, minimist
cccdb62
markdown-magic
3382059
prefer-tag-over-role
38d52f8
label-has-for
: reran generate-list-of-rules 9a2af01
language-tags
to v1.0.5
f84bb74
@babel/core
cf3f8d0
axe-core
0a73cf4
@babel/runtime
053f04d
@babel/runtime
bccf0ae
jsx-ast-utils
c9687cc
8b889bf
prefer-tag-over-role
: rename docs file 0bdf95b
no-interactive-tabindex
: allow role assignments using a ternary with literals on both sidesno-static-element-interactions
: allow role assignments using a ternary with literals on both sides (#865)no-noninteractive-tabindex
, no-static-element-interactions
: document allowExpressionValues
(#870)axe-core
axe-core
to v4.4.1, due to a breaking change in a patch@babel/runtime
@babel/runtime
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, @babel/register
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, @babel/register
no-noninteractive-element-interactions
: add passing test cases (#876)no-noninteractive-element-interactions
: add passing tests for form with onSubmit (#871)no-static-element-interactions
: add passing test casesaria-role
: add allowedInvalidRoles
option (#828)no-redundant-roles
, role-supports-aria-props
: Remove implicit role from dl element (#848)role-supports-aria-props
: clean up the logic a bit[].concat
idiomno-static-element-interactions
: Update error message (#843)@babel/runtime
, array-includes
, axe-core
, jsx-ast-utils
jsx-ast-utils
@babel/runtime
, jsx-ast-utils
@babel/runtime
, axe-core
, minimatch
@babel/runtime
, minimatch
, semver
@babel/runtime
, axe-core
, damerau-levenshtein
export default
instead of module.exports
(#861)@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-eslint-plugin
, eslint-plugin-flowtype
, eslint-plugin-import
@babel/core
, @babel/register
, eslint-plugin-import
, minimist
@technote-space/doctoc
because v2.5 is a breaking change@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, eslint-plugin-eslint-plugin
@babel/cli
@babel/cli
, @babel/core
, @babel/eslint-parser
npm run flow
(#856)img-redundant-alt-test
: add passing tests (#832)module.exports
(#824)eslint-plugin-import
@babel/runtime
, axe-core
@babel/cli
, @babel/core
, @babel/eslint-parser
, @babel/plugin-transform-flow-strip-types
, eslint-config-airbnb-base
anchor-has-content
: add missing close / for jsx succeed example (#821)master
references in URLs to HEAD
eslint-plugin-eslint-plugin
(#818)export default
syntax for exporting rules (#819)@babel/runtime
, array-includes
, axe-core
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/eslint-parser
, eslint-plugin-import
, estraverse
, safe-publish-latest
@babel/eslint-parser
instead of babel-eslint
(#811).github
reposcope
: replace duplicate scope
word (#799)no-access-key
: Fix wording and grammar (#800)@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-flowtype
, eslint-plugin-import
@babel/runtime
, axe-core
, damerau-levenshtein
src/util/getComputedRole-test.js
test in node 6autocomplete-valid
: move some failed tests to passingimport type
prepublishOnly
script for npm 7+flow-bin
to support aarch64 (#784)@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, aud
, eslint-plugin-flowtype
, jscodeshift
@babel/runtime
, array-includes
, axe-core
, emoji-regex
node/install
actionanchor-is-valid
: general cleanup (#728)no-redundant-roles
: Adds missing closing square bracket (#775)anchor-is-valid
: Add Next.js case (#769)no-noninteractive-tabindex
: Add example for tabIndex on seemingly non-interactive element (#760)aud
in posttest
label-has-associated-control
: Add glob support (#749)strict
config: Turn off label-has-for
(#734)no-onchange
: Remove rule from recommended/strict configs, and deprecate (#757)axe-core
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-strip-types
, eslint-plugin-flowtype
, eslint-plugin-import
, estraverse
, expect
, object.assign
@babel/runtime
, axe-core
no-static-element-interactions
: Fixed rule name in commentsautocomplete-valid
: workaround for axe not being able to handle null
img-redundant-alt
: removing a use of some
label-has-associated-control
: add test for <div><label /><input /></div>@babel/runtime
, array-includes
, axe-core
, axobject-query
, damerau-levenshtein
, jsx-ast-utils
@babel/cli
, @babel/core
, @babel/plugin-transform-flow-types
, babel-eslint
, babel-jest
, coveralls
, eslint-config-airbnb-base
, eslint-plugin-flowtype
, eslint-plugin-import
, estraverse
, in-publish
, jest
, minimist
, rimraf
, safe-publish-latest
language-tags
package to check the lang
ruleimg
<img>
with alt=""
plugin:jsx-a11y/{recommended,strict}
configslabel-has-for
: textarea
s are inputs too #470.npmignore
with /
so it only matches the top-level directorysrc
and flow
from package to resolve flow issues for consuming packages.anchor-is-valid
. See documentation for configuration options. Thanks @AlmeroSteyn.href-no-hash
replaced with anchor-is-valid
in the recommended and strict configs. Use the invalidHref
aspect (active by default) in anchor-is-valid
to continue to apply the behavior provided by href-no-hash
.label-has-for
now allows inputs nested in label tags. Previously it was strict about requiring a for
attribute. Thanks @ignatiusreza and @mjaltamirano.interactive-supports-focus
. Recommended and strict configs for now contain a trimmed-down whitelist of roles that will be checked.media-has-caption
. Thanks @ismail-syed.aria-props
rule incorrectly threw errors for these new properties.label-has-for
: add "required" option to allow customization (#240)anchor-is-valid
(#224)interactive-supports-focus
: Split interactive supports focus into tabbable and focusable cases (#236)anchor-is-valid
: add aspects
option (#251)flow
directory from .npmignore
to accommodate explicit imports from v5.0.2
.img-has-alt
rule into alt-text
ruleonclick-has-role
is removed. Replaced with no-static-element-interactions
and no-noninteractive-element-interactions
.onclick-has-focus
is removed. Replaced with interactive-supports-focus
.media-has-caption
ruleignoreNonDOM
option to no-autofocus
.no-interactive-element-to-noninteractive-role
no-noninteractive-element-to-interactive-role
no-noninteractive-tabindex
no-static-element-interactions
and no-noninteractive-element-interactions
. Options allow for fine-tuning of elements and event handlers to check.Add new rules:
jsx-a11y/accessible-emoji
jsx-a11y/aria-activedescendant-has-tabindex
jsx-a11y/iframe-has-title
jsx-a11y/no-autofocus
jsx-a11y/no-distracting-elements
(breaking: consolidated no-marquee and no-blink into this rule.)jsx-a11y/no-redundant-roles
ignoreNonDom
aria-invalid
values true and false pass for rule aria-proptypes
href-no-hash
accepts new schema property specialLink
to check for custom href
properties on elements. (fixes #76)img-has-alt
now prefers alt=""
over role="presentation"
. You can set both, but not just role="presentation"
by itself to ensure a11y across all devices.Note - see rule documentation for updated schemas.
switch
aria role.x-has-content
rules now pass with children prop set.tablist
role to include missing property aria-multiselectable
.click-events-have-key-events
rule.no-static-element-interactions
rule.eslint
, eslint-config-airbnb
, mocha
to latest.error
syntax over 2
syntax in recommended config.aria-checked
for roles that are subclasses of checkbox
anchor-has-content
rule.img-redundant-alt
(mainly for i18n).heading-has-content
: dangerouslySetInnerHTML will pass.no-onchange
rule to select menu elements only.eslint
v3 as a peerDependency
.eslint
as a peerDependency
.<ELEMENT role />
for role-supports-aria-props
.img-redundant-alt
rule to use getLiteralPropValue
from jsx-ast-utils
.heading-has-content
for children content.jsx-ast-utils
to use propName
function. More support for namespaced names on attributes and elements.aria-unsupported-elements
and role-supports-aria-props
when reporting.aria-*
propsrole
value is a string before converting to lowercase in img-has-alt
rule.tabIndex
expression values, but still retain validation logic for literal tabIndex
values.Button
vs button
).BinaryExpression
type.NewExpression
type.ObjectExpression
type.ConditionalExpression
type.onclick-has-focus
.ThisExpression
type.[breaking] Rename img-uses-alt
to img-has-alt
[breaking] Rename onlick-uses-role
to onclick-has-role
[breaking] Rename mouse-events-map-to-key-events
to mouse-events-have-key-events
[breaking] Rename use-onblur-not-onchange
to no-onchange
[breaking] Rename label-uses-for
to label-has-for
[breaking] Rename redundant-alt
to img-redundant-alt
[breaking] Rename no-hash-href
to href-no-hash
[breaking] Rename valid-aria-role
to aria-role
[new] Implement aria-props
rule
[new] Implement aria-proptypes
rule
[new] Implement aria-unsupported-elements
rule
[new] Implement onclick-has-focus
rule
[new] Implement role-has-required-aria-props
rule
[new] Implement role-supports-aria-props
rule
[new] Implement tabindex-no-positive
rule
<Component prop={foo || "foobar"} />
Object.Property
i.e. UX.Layout