Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

control-has-associated-label accepts whitespace as a label #918

Closed
wobo-nate opened this issue Jan 25, 2023 · 1 comment · Fixed by #919
Closed

control-has-associated-label accepts whitespace as a label #918

wobo-nate opened this issue Jan 25, 2023 · 1 comment · Fixed by #919

Comments

@wobo-nate
Copy link
Contributor

The problem

The control-has-associated-label rule currently accepts whitespace as an accessible label. This issue is exaggerated by the use of prettier which may introduce line breaks and other whitespace automatically, defeating the rule.

Examples

All of the below examples lack accessible labels.

<button></button>                <!-- rule correctly flags invalid markup -->
<button> </button>               <!-- rule fails to flag invalid markup -->

<button aria-label=""></button>  <!-- rule correctly flags invalid markup -->
<button aria-label=" "></button> <!-- rule fails to flag invalid markup -->

Suggested fix

Update mayHaveAccessibleLabel to .trim() the node's value before asserting truthiness.

@ljharb
Copy link
Member

ljharb commented Jan 25, 2023

Seems a reasonable bugfix; anyone relying on it shouldn't be :-)

@ljharb ljharb closed this as completed in 93f7885 Jan 25, 2023
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this issue Aug 15, 2024
| datasource | package                | from  | to    |
| ---------- | ---------------------- | ----- | ----- |
| npm        | eslint-plugin-jsx-a11y | 6.6.1 | 6.9.0 |


##### [\`v6.9.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)
##### [\`v6.8.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v680---2023-11-01)

##### Merged

-   Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](jsx-eslint/eslint-plugin-jsx-a11y#727)

##### Fixed

-   \[Docs] `aria-activedescendant-has-tabindex`: align with changes from [#708](jsx-eslint/eslint-plugin-jsx-a11y#708) [`#924`](jsx-eslint/eslint-plugin-jsx-a11y#924)
-   \[Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](jsx-eslint/eslint-plugin-jsx-a11y#918)

##### Commits

-   \[Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](jsx-eslint/eslint-plugin-jsx-a11y@ce4d57f)
-   \[Refactor] use `es-iterator-helpers` [`52de824`](jsx-eslint/eslint-plugin-jsx-a11y@52de824)
-   \[New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](jsx-eslint/eslint-plugin-jsx-a11y@db64898)
-   \[New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](jsx-eslint/eslint-plugin-jsx-a11y@fffb05b)
-   \[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](jsx-eslint/eslint-plugin-jsx-a11y@64bfea6)
-   \[Refactor] use `hasown` instead of `has` [`9a8edde`](jsx-eslint/eslint-plugin-jsx-a11y@9a8edde)
-   \[actions] update used actions [`10c061a`](jsx-eslint/eslint-plugin-jsx-a11y@10c061a)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](jsx-eslint/eslint-plugin-jsx-a11y@6d5022d)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](jsx-eslint/eslint-plugin-jsx-a11y@4dc7f1e)
-   \[New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](jsx-eslint/eslint-plugin-jsx-a11y@e6bfd5c)
-   \[patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](jsx-eslint/eslint-plugin-jsx-a11y@eadd70c)
-   \[Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](jsx-eslint/eslint-plugin-jsx-a11y@46ffbc3)
-   \[Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](jsx-eslint/eslint-plugin-jsx-a11y@5999555)
-   \[Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](jsx-eslint/eslint-plugin-jsx-a11y@8d8f016)
-   \[patch] move `semver` from Deps to Dev Deps [`4da13e7`](jsx-eslint/eslint-plugin-jsx-a11y@4da13e7)
-   \[Deps] update `ast-types-flow` [`b755318`](jsx-eslint/eslint-plugin-jsx-a11y@b755318)
-   \[Dev Deps] update `eslint-plugin-import` [`f1c976b`](jsx-eslint/eslint-plugin-jsx-a11y@f1c976b)
-   \[Deps] unpin `language-tags` [`3d1d26d`](jsx-eslint/eslint-plugin-jsx-a11y@3d1d26d)
-   \[Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](jsx-eslint/eslint-plugin-jsx-a11y@1271153)
-   \[Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](jsx-eslint/eslint-plugin-jsx-a11y@f0d2ddb)
-   \[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](jsx-eslint/eslint-plugin-jsx-a11y@0c278f4)
##### [\`v6.7.1\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v671---2023-01-11)

##### Commits

-   \[Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](ljharb/eslint-plugin-jsx-a11y@b01219e)
##### [\`v6.7.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v670---2023-01-09)

##### Merged

-   New rule: prefer-tag-over-role [`#833`](https://github.com/ljharb/eslint-plugin-jsx-a11y/pull/833)

##### Fixed

-   \[Tests] `aria-role`: add now-passing test [`#756`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/756)
-   \[Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/892)
-   \[New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/881)

##### Commits

-   \[Docs] automate docs with `eslint-doc-generator` [`6d7a857`](ljharb/eslint-plugin-jsx-a11y@6d7a857)
-   \[Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](ljharb/eslint-plugin-jsx-a11y@3d77c84)
-   \[New] add `anchor-ambiguous-text` rule [`7f6463e`](ljharb/eslint-plugin-jsx-a11y@7f6463e)
-   \[New] add `getAccessibleChildText` util [`630116b`](ljharb/eslint-plugin-jsx-a11y@630116b)
-   \[New] Add `isFocusable` utils method [`e199d17`](ljharb/eslint-plugin-jsx-a11y@e199d17)
-   \[Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](ljharb/eslint-plugin-jsx-a11y@6b9855b)
-   \[Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](ljharb/eslint-plugin-jsx-a11y@9aa878b)
-   \[New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](ljharb/eslint-plugin-jsx-a11y@bbae2c4)
-   \[New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `&lt;img /&gt;` elements [`bb84abc`](ljharb/eslint-plugin-jsx-a11y@bb84abc)
-   \[meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](ljharb/eslint-plugin-jsx-a11y@6ad2312)
-   \[meta] add `auto-changelog` [`283817b`](ljharb/eslint-plugin-jsx-a11y@283817b)
-   \[Docs] missing descriptions in some rules [`79b975a`](ljharb/eslint-plugin-jsx-a11y@79b975a)
-   \[Deps] update `aria-query`, `axobject-query` [`7b3cda3`](ljharb/eslint-plugin-jsx-a11y@7b3cda3)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](ljharb/eslint-plugin-jsx-a11y@0852947)
-   \[meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](ljharb/eslint-plugin-jsx-a11y@65be35b)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](ljharb/eslint-plugin-jsx-a11y@60c2df5)
-   \[Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](ljharb/eslint-plugin-jsx-a11y@4abc751)
-   \[Deps] update `@babel/runtime`, `axe-core` [`89f766c`](ljharb/eslint-plugin-jsx-a11y@89f766c)
-   \[meta] run the build in prepack, not prepublish [`e411ce3`](ljharb/eslint-plugin-jsx-a11y@e411ce3)
-   \[Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](ljharb/eslint-plugin-jsx-a11y@cccdb62)
-   \[Dev Deps] update `markdown-magic` [`3382059`](ljharb/eslint-plugin-jsx-a11y@3382059)
-   \[Fix] expose `prefer-tag-over-role` [`38d52f8`](ljharb/eslint-plugin-jsx-a11y@38d52f8)
-   \[Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](ljharb/eslint-plugin-jsx-a11y@9a2af01)
-   \[Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](ljharb/eslint-plugin-jsx-a11y@f84bb74)
-   \[Dev Deps] update `@babel/core` [`cf3f8d0`](ljharb/eslint-plugin-jsx-a11y@cf3f8d0)
-   \[Deps] update `axe-core` [`0a73cf4`](ljharb/eslint-plugin-jsx-a11y@0a73cf4)
-   \[Deps] update `@babel/runtime` [`053f04d`](ljharb/eslint-plugin-jsx-a11y@053f04d)
-   \[Deps] update `@babel/runtime` [`bccf0ae`](ljharb/eslint-plugin-jsx-a11y@bccf0ae)
-   \[Deps] update `jsx-ast-utils` [`c9687cc`](ljharb/eslint-plugin-jsx-a11y@c9687cc)
-   \[readme] Preventing code repetition in user's eslint config file [`8b889bf`](ljharb/eslint-plugin-jsx-a11y@8b889bf)
-   \[Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](ljharb/eslint-plugin-jsx-a11y@0bdf95b)

<!-- auto-changelog-above -->
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this issue Aug 15, 2024
| datasource | package                | from  | to    |
| ---------- | ---------------------- | ----- | ----- |
| npm        | eslint-plugin-jsx-a11y | 6.6.1 | 6.9.0 |


##### [\`v6.9.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)
##### [\`v6.8.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v680---2023-11-01)

##### Merged

-   Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](jsx-eslint/eslint-plugin-jsx-a11y#727)

##### Fixed

-   \[Docs] `aria-activedescendant-has-tabindex`: align with changes from [#708](jsx-eslint/eslint-plugin-jsx-a11y#708) [`#924`](jsx-eslint/eslint-plugin-jsx-a11y#924)
-   \[Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](jsx-eslint/eslint-plugin-jsx-a11y#918)

##### Commits

-   \[Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](jsx-eslint/eslint-plugin-jsx-a11y@ce4d57f)
-   \[Refactor] use `es-iterator-helpers` [`52de824`](jsx-eslint/eslint-plugin-jsx-a11y@52de824)
-   \[New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](jsx-eslint/eslint-plugin-jsx-a11y@db64898)
-   \[New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](jsx-eslint/eslint-plugin-jsx-a11y@fffb05b)
-   \[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](jsx-eslint/eslint-plugin-jsx-a11y@64bfea6)
-   \[Refactor] use `hasown` instead of `has` [`9a8edde`](jsx-eslint/eslint-plugin-jsx-a11y@9a8edde)
-   \[actions] update used actions [`10c061a`](jsx-eslint/eslint-plugin-jsx-a11y@10c061a)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](jsx-eslint/eslint-plugin-jsx-a11y@6d5022d)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](jsx-eslint/eslint-plugin-jsx-a11y@4dc7f1e)
-   \[New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](jsx-eslint/eslint-plugin-jsx-a11y@e6bfd5c)
-   \[patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](jsx-eslint/eslint-plugin-jsx-a11y@eadd70c)
-   \[Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](jsx-eslint/eslint-plugin-jsx-a11y@46ffbc3)
-   \[Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](jsx-eslint/eslint-plugin-jsx-a11y@5999555)
-   \[Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](jsx-eslint/eslint-plugin-jsx-a11y@8d8f016)
-   \[patch] move `semver` from Deps to Dev Deps [`4da13e7`](jsx-eslint/eslint-plugin-jsx-a11y@4da13e7)
-   \[Deps] update `ast-types-flow` [`b755318`](jsx-eslint/eslint-plugin-jsx-a11y@b755318)
-   \[Dev Deps] update `eslint-plugin-import` [`f1c976b`](jsx-eslint/eslint-plugin-jsx-a11y@f1c976b)
-   \[Deps] unpin `language-tags` [`3d1d26d`](jsx-eslint/eslint-plugin-jsx-a11y@3d1d26d)
-   \[Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](jsx-eslint/eslint-plugin-jsx-a11y@1271153)
-   \[Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](jsx-eslint/eslint-plugin-jsx-a11y@f0d2ddb)
-   \[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](jsx-eslint/eslint-plugin-jsx-a11y@0c278f4)
##### [\`v6.7.1\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v671---2023-01-11)

##### Commits

-   \[Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](ljharb/eslint-plugin-jsx-a11y@b01219e)
##### [\`v6.7.0\`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v670---2023-01-09)

##### Merged

-   New rule: prefer-tag-over-role [`#833`](https://github.com/ljharb/eslint-plugin-jsx-a11y/pull/833)

##### Fixed

-   \[Tests] `aria-role`: add now-passing test [`#756`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/756)
-   \[Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/892)
-   \[New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/881)

##### Commits

-   \[Docs] automate docs with `eslint-doc-generator` [`6d7a857`](ljharb/eslint-plugin-jsx-a11y@6d7a857)
-   \[Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](ljharb/eslint-plugin-jsx-a11y@3d77c84)
-   \[New] add `anchor-ambiguous-text` rule [`7f6463e`](ljharb/eslint-plugin-jsx-a11y@7f6463e)
-   \[New] add `getAccessibleChildText` util [`630116b`](ljharb/eslint-plugin-jsx-a11y@630116b)
-   \[New] Add `isFocusable` utils method [`e199d17`](ljharb/eslint-plugin-jsx-a11y@e199d17)
-   \[Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](ljharb/eslint-plugin-jsx-a11y@6b9855b)
-   \[Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](ljharb/eslint-plugin-jsx-a11y@9aa878b)
-   \[New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](ljharb/eslint-plugin-jsx-a11y@bbae2c4)
-   \[New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `&lt;img /&gt;` elements [`bb84abc`](ljharb/eslint-plugin-jsx-a11y@bb84abc)
-   \[meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](ljharb/eslint-plugin-jsx-a11y@6ad2312)
-   \[meta] add `auto-changelog` [`283817b`](ljharb/eslint-plugin-jsx-a11y@283817b)
-   \[Docs] missing descriptions in some rules [`79b975a`](ljharb/eslint-plugin-jsx-a11y@79b975a)
-   \[Deps] update `aria-query`, `axobject-query` [`7b3cda3`](ljharb/eslint-plugin-jsx-a11y@7b3cda3)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](ljharb/eslint-plugin-jsx-a11y@0852947)
-   \[meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](ljharb/eslint-plugin-jsx-a11y@65be35b)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](ljharb/eslint-plugin-jsx-a11y@60c2df5)
-   \[Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](ljharb/eslint-plugin-jsx-a11y@4abc751)
-   \[Deps] update `@babel/runtime`, `axe-core` [`89f766c`](ljharb/eslint-plugin-jsx-a11y@89f766c)
-   \[meta] run the build in prepack, not prepublish [`e411ce3`](ljharb/eslint-plugin-jsx-a11y@e411ce3)
-   \[Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](ljharb/eslint-plugin-jsx-a11y@cccdb62)
-   \[Dev Deps] update `markdown-magic` [`3382059`](ljharb/eslint-plugin-jsx-a11y@3382059)
-   \[Fix] expose `prefer-tag-over-role` [`38d52f8`](ljharb/eslint-plugin-jsx-a11y@38d52f8)
-   \[Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](ljharb/eslint-plugin-jsx-a11y@9a2af01)
-   \[Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](ljharb/eslint-plugin-jsx-a11y@f84bb74)
-   \[Dev Deps] update `@babel/core` [`cf3f8d0`](ljharb/eslint-plugin-jsx-a11y@cf3f8d0)
-   \[Deps] update `axe-core` [`0a73cf4`](ljharb/eslint-plugin-jsx-a11y@0a73cf4)
-   \[Deps] update `@babel/runtime` [`053f04d`](ljharb/eslint-plugin-jsx-a11y@053f04d)
-   \[Deps] update `@babel/runtime` [`bccf0ae`](ljharb/eslint-plugin-jsx-a11y@bccf0ae)
-   \[Deps] update `jsx-ast-utils` [`c9687cc`](ljharb/eslint-plugin-jsx-a11y@c9687cc)
-   \[readme] Preventing code repetition in user's eslint config file [`8b889bf`](ljharb/eslint-plugin-jsx-a11y@8b889bf)
-   \[Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](ljharb/eslint-plugin-jsx-a11y@0bdf95b)

<!-- auto-changelog-above -->
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this issue Aug 15, 2024
| datasource | package                | from  | to    |
| ---------- | ---------------------- | ----- | ----- |
| npm        | eslint-plugin-jsx-a11y | 6.6.1 | 6.9.0 |


## [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)


## [v6.8.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v680---2023-11-01)

##### Merged

-   Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](jsx-eslint/eslint-plugin-jsx-a11y#727)

##### Fixed

-   \[Docs] `aria-activedescendant-has-tabindex`: align with changes from [#708](jsx-eslint/eslint-plugin-jsx-a11y#708) [`#924`](jsx-eslint/eslint-plugin-jsx-a11y#924)
-   \[Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](jsx-eslint/eslint-plugin-jsx-a11y#918)

##### Commits

-   \[Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](jsx-eslint/eslint-plugin-jsx-a11y@ce4d57f)
-   \[Refactor] use `es-iterator-helpers` [`52de824`](jsx-eslint/eslint-plugin-jsx-a11y@52de824)
-   \[New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](jsx-eslint/eslint-plugin-jsx-a11y@db64898)
-   \[New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](jsx-eslint/eslint-plugin-jsx-a11y@fffb05b)
-   \[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](jsx-eslint/eslint-plugin-jsx-a11y@64bfea6)
-   \[Refactor] use `hasown` instead of `has` [`9a8edde`](jsx-eslint/eslint-plugin-jsx-a11y@9a8edde)
-   \[actions] update used actions [`10c061a`](jsx-eslint/eslint-plugin-jsx-a11y@10c061a)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](jsx-eslint/eslint-plugin-jsx-a11y@6d5022d)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](jsx-eslint/eslint-plugin-jsx-a11y@4dc7f1e)
-   \[New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](jsx-eslint/eslint-plugin-jsx-a11y@e6bfd5c)
-   \[patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](jsx-eslint/eslint-plugin-jsx-a11y@eadd70c)
-   \[Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](jsx-eslint/eslint-plugin-jsx-a11y@46ffbc3)
-   \[Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](jsx-eslint/eslint-plugin-jsx-a11y@5999555)
-   \[Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](jsx-eslint/eslint-plugin-jsx-a11y@8d8f016)
-   \[patch] move `semver` from Deps to Dev Deps [`4da13e7`](jsx-eslint/eslint-plugin-jsx-a11y@4da13e7)
-   \[Deps] update `ast-types-flow` [`b755318`](jsx-eslint/eslint-plugin-jsx-a11y@b755318)
-   \[Dev Deps] update `eslint-plugin-import` [`f1c976b`](jsx-eslint/eslint-plugin-jsx-a11y@f1c976b)
-   \[Deps] unpin `language-tags` [`3d1d26d`](jsx-eslint/eslint-plugin-jsx-a11y@3d1d26d)
-   \[Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](jsx-eslint/eslint-plugin-jsx-a11y@1271153)
-   \[Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](jsx-eslint/eslint-plugin-jsx-a11y@f0d2ddb)
-   \[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](jsx-eslint/eslint-plugin-jsx-a11y@0c278f4)


## [v6.7.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v671---2023-01-11)

##### Commits

-   \[Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](ljharb/eslint-plugin-jsx-a11y@b01219e)


## [v6.7.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v670---2023-01-09)

##### Merged

-   New rule: prefer-tag-over-role [`#833`](https://github.com/ljharb/eslint-plugin-jsx-a11y/pull/833)

##### Fixed

-   \[Tests] `aria-role`: add now-passing test [`#756`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/756)
-   \[Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/892)
-   \[New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/881)

##### Commits

-   \[Docs] automate docs with `eslint-doc-generator` [`6d7a857`](ljharb/eslint-plugin-jsx-a11y@6d7a857)
-   \[Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](ljharb/eslint-plugin-jsx-a11y@3d77c84)
-   \[New] add `anchor-ambiguous-text` rule [`7f6463e`](ljharb/eslint-plugin-jsx-a11y@7f6463e)
-   \[New] add `getAccessibleChildText` util [`630116b`](ljharb/eslint-plugin-jsx-a11y@630116b)
-   \[New] Add `isFocusable` utils method [`e199d17`](ljharb/eslint-plugin-jsx-a11y@e199d17)
-   \[Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](ljharb/eslint-plugin-jsx-a11y@6b9855b)
-   \[Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](ljharb/eslint-plugin-jsx-a11y@9aa878b)
-   \[New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](ljharb/eslint-plugin-jsx-a11y@bbae2c4)
-   \[New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `&lt;img /&gt;` elements [`bb84abc`](ljharb/eslint-plugin-jsx-a11y@bb84abc)
-   \[meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](ljharb/eslint-plugin-jsx-a11y@6ad2312)
-   \[meta] add `auto-changelog` [`283817b`](ljharb/eslint-plugin-jsx-a11y@283817b)
-   \[Docs] missing descriptions in some rules [`79b975a`](ljharb/eslint-plugin-jsx-a11y@79b975a)
-   \[Deps] update `aria-query`, `axobject-query` [`7b3cda3`](ljharb/eslint-plugin-jsx-a11y@7b3cda3)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](ljharb/eslint-plugin-jsx-a11y@0852947)
-   \[meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](ljharb/eslint-plugin-jsx-a11y@65be35b)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](ljharb/eslint-plugin-jsx-a11y@60c2df5)
-   \[Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](ljharb/eslint-plugin-jsx-a11y@4abc751)
-   \[Deps] update `@babel/runtime`, `axe-core` [`89f766c`](ljharb/eslint-plugin-jsx-a11y@89f766c)
-   \[meta] run the build in prepack, not prepublish [`e411ce3`](ljharb/eslint-plugin-jsx-a11y@e411ce3)
-   \[Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](ljharb/eslint-plugin-jsx-a11y@cccdb62)
-   \[Dev Deps] update `markdown-magic` [`3382059`](ljharb/eslint-plugin-jsx-a11y@3382059)
-   \[Fix] expose `prefer-tag-over-role` [`38d52f8`](ljharb/eslint-plugin-jsx-a11y@38d52f8)
-   \[Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](ljharb/eslint-plugin-jsx-a11y@9a2af01)
-   \[Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](ljharb/eslint-plugin-jsx-a11y@f84bb74)
-   \[Dev Deps] update `@babel/core` [`cf3f8d0`](ljharb/eslint-plugin-jsx-a11y@cf3f8d0)
-   \[Deps] update `axe-core` [`0a73cf4`](ljharb/eslint-plugin-jsx-a11y@0a73cf4)
-   \[Deps] update `@babel/runtime` [`053f04d`](ljharb/eslint-plugin-jsx-a11y@053f04d)
-   \[Deps] update `@babel/runtime` [`bccf0ae`](ljharb/eslint-plugin-jsx-a11y@bccf0ae)
-   \[Deps] update `jsx-ast-utils` [`c9687cc`](ljharb/eslint-plugin-jsx-a11y@c9687cc)
-   \[readme] Preventing code repetition in user's eslint config file [`8b889bf`](ljharb/eslint-plugin-jsx-a11y@8b889bf)
-   \[Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](ljharb/eslint-plugin-jsx-a11y@0bdf95b)

<!-- auto-changelog-above -->
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this issue Aug 15, 2024
| datasource | package                | from  | to    |
| ---------- | ---------------------- | ----- | ----- |
| npm        | eslint-plugin-jsx-a11y | 6.6.1 | 6.9.0 |


## [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)


## [v6.8.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v680---2023-11-01)

##### Merged

-   Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](jsx-eslint/eslint-plugin-jsx-a11y#727)

##### Fixed

-   \[Docs] `aria-activedescendant-has-tabindex`: align with changes from [#708](jsx-eslint/eslint-plugin-jsx-a11y#708) [`#924`](jsx-eslint/eslint-plugin-jsx-a11y#924)
-   \[Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](jsx-eslint/eslint-plugin-jsx-a11y#918)

##### Commits

-   \[Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](jsx-eslint/eslint-plugin-jsx-a11y@ce4d57f)
-   \[Refactor] use `es-iterator-helpers` [`52de824`](jsx-eslint/eslint-plugin-jsx-a11y@52de824)
-   \[New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](jsx-eslint/eslint-plugin-jsx-a11y@db64898)
-   \[New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](jsx-eslint/eslint-plugin-jsx-a11y@fffb05b)
-   \[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](jsx-eslint/eslint-plugin-jsx-a11y@64bfea6)
-   \[Refactor] use `hasown` instead of `has` [`9a8edde`](jsx-eslint/eslint-plugin-jsx-a11y@9a8edde)
-   \[actions] update used actions [`10c061a`](jsx-eslint/eslint-plugin-jsx-a11y@10c061a)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](jsx-eslint/eslint-plugin-jsx-a11y@6d5022d)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](jsx-eslint/eslint-plugin-jsx-a11y@4dc7f1e)
-   \[New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](jsx-eslint/eslint-plugin-jsx-a11y@e6bfd5c)
-   \[patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](jsx-eslint/eslint-plugin-jsx-a11y@eadd70c)
-   \[Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](jsx-eslint/eslint-plugin-jsx-a11y@46ffbc3)
-   \[Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](jsx-eslint/eslint-plugin-jsx-a11y@5999555)
-   \[Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](jsx-eslint/eslint-plugin-jsx-a11y@8d8f016)
-   \[patch] move `semver` from Deps to Dev Deps [`4da13e7`](jsx-eslint/eslint-plugin-jsx-a11y@4da13e7)
-   \[Deps] update `ast-types-flow` [`b755318`](jsx-eslint/eslint-plugin-jsx-a11y@b755318)
-   \[Dev Deps] update `eslint-plugin-import` [`f1c976b`](jsx-eslint/eslint-plugin-jsx-a11y@f1c976b)
-   \[Deps] unpin `language-tags` [`3d1d26d`](jsx-eslint/eslint-plugin-jsx-a11y@3d1d26d)
-   \[Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](jsx-eslint/eslint-plugin-jsx-a11y@1271153)
-   \[Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](jsx-eslint/eslint-plugin-jsx-a11y@f0d2ddb)
-   \[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](jsx-eslint/eslint-plugin-jsx-a11y@0c278f4)


## [v6.7.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v671---2023-01-11)

##### Commits

-   \[Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](ljharb/eslint-plugin-jsx-a11y@b01219e)


## [v6.7.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v670---2023-01-09)

##### Merged

-   New rule: prefer-tag-over-role [`#833`](https://github.com/ljharb/eslint-plugin-jsx-a11y/pull/833)

##### Fixed

-   \[Tests] `aria-role`: add now-passing test [`#756`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/756)
-   \[Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/892)
-   \[New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/881)

##### Commits

-   \[Docs] automate docs with `eslint-doc-generator` [`6d7a857`](ljharb/eslint-plugin-jsx-a11y@6d7a857)
-   \[Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](ljharb/eslint-plugin-jsx-a11y@3d77c84)
-   \[New] add `anchor-ambiguous-text` rule [`7f6463e`](ljharb/eslint-plugin-jsx-a11y@7f6463e)
-   \[New] add `getAccessibleChildText` util [`630116b`](ljharb/eslint-plugin-jsx-a11y@630116b)
-   \[New] Add `isFocusable` utils method [`e199d17`](ljharb/eslint-plugin-jsx-a11y@e199d17)
-   \[Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](ljharb/eslint-plugin-jsx-a11y@6b9855b)
-   \[Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](ljharb/eslint-plugin-jsx-a11y@9aa878b)
-   \[New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](ljharb/eslint-plugin-jsx-a11y@bbae2c4)
-   \[New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `&lt;img /&gt;` elements [`bb84abc`](ljharb/eslint-plugin-jsx-a11y@bb84abc)
-   \[meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](ljharb/eslint-plugin-jsx-a11y@6ad2312)
-   \[meta] add `auto-changelog` [`283817b`](ljharb/eslint-plugin-jsx-a11y@283817b)
-   \[Docs] missing descriptions in some rules [`79b975a`](ljharb/eslint-plugin-jsx-a11y@79b975a)
-   \[Deps] update `aria-query`, `axobject-query` [`7b3cda3`](ljharb/eslint-plugin-jsx-a11y@7b3cda3)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](ljharb/eslint-plugin-jsx-a11y@0852947)
-   \[meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](ljharb/eslint-plugin-jsx-a11y@65be35b)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](ljharb/eslint-plugin-jsx-a11y@60c2df5)
-   \[Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](ljharb/eslint-plugin-jsx-a11y@4abc751)
-   \[Deps] update `@babel/runtime`, `axe-core` [`89f766c`](ljharb/eslint-plugin-jsx-a11y@89f766c)
-   \[meta] run the build in prepack, not prepublish [`e411ce3`](ljharb/eslint-plugin-jsx-a11y@e411ce3)
-   \[Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](ljharb/eslint-plugin-jsx-a11y@cccdb62)
-   \[Dev Deps] update `markdown-magic` [`3382059`](ljharb/eslint-plugin-jsx-a11y@3382059)
-   \[Fix] expose `prefer-tag-over-role` [`38d52f8`](ljharb/eslint-plugin-jsx-a11y@38d52f8)
-   \[Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](ljharb/eslint-plugin-jsx-a11y@9a2af01)
-   \[Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](ljharb/eslint-plugin-jsx-a11y@f84bb74)
-   \[Dev Deps] update `@babel/core` [`cf3f8d0`](ljharb/eslint-plugin-jsx-a11y@cf3f8d0)
-   \[Deps] update `axe-core` [`0a73cf4`](ljharb/eslint-plugin-jsx-a11y@0a73cf4)
-   \[Deps] update `@babel/runtime` [`053f04d`](ljharb/eslint-plugin-jsx-a11y@053f04d)
-   \[Deps] update `@babel/runtime` [`bccf0ae`](ljharb/eslint-plugin-jsx-a11y@bccf0ae)
-   \[Deps] update `jsx-ast-utils` [`c9687cc`](ljharb/eslint-plugin-jsx-a11y@c9687cc)
-   \[readme] Preventing code repetition in user's eslint config file [`8b889bf`](ljharb/eslint-plugin-jsx-a11y@8b889bf)
-   \[Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](ljharb/eslint-plugin-jsx-a11y@0bdf95b)

<!-- auto-changelog-above -->
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this issue Aug 16, 2024
| datasource | package                | from  | to    |
| ---------- | ---------------------- | ----- | ----- |
| npm        | eslint-plugin-jsx-a11y | 6.6.1 | 6.9.0 |


## [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)


## [v6.8.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v680---2023-11-01)

##### Merged

-   Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](jsx-eslint/eslint-plugin-jsx-a11y#727)

##### Fixed

-   \[Docs] `aria-activedescendant-has-tabindex`: align with changes from [#708](jsx-eslint/eslint-plugin-jsx-a11y#708) [`#924`](jsx-eslint/eslint-plugin-jsx-a11y#924)
-   \[Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](jsx-eslint/eslint-plugin-jsx-a11y#918)

##### Commits

-   \[Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](jsx-eslint/eslint-plugin-jsx-a11y@ce4d57f)
-   \[Refactor] use `es-iterator-helpers` [`52de824`](jsx-eslint/eslint-plugin-jsx-a11y@52de824)
-   \[New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](jsx-eslint/eslint-plugin-jsx-a11y@db64898)
-   \[New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](jsx-eslint/eslint-plugin-jsx-a11y@fffb05b)
-   \[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](jsx-eslint/eslint-plugin-jsx-a11y@64bfea6)
-   \[Refactor] use `hasown` instead of `has` [`9a8edde`](jsx-eslint/eslint-plugin-jsx-a11y@9a8edde)
-   \[actions] update used actions [`10c061a`](jsx-eslint/eslint-plugin-jsx-a11y@10c061a)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](jsx-eslint/eslint-plugin-jsx-a11y@6d5022d)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](jsx-eslint/eslint-plugin-jsx-a11y@4dc7f1e)
-   \[New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](jsx-eslint/eslint-plugin-jsx-a11y@e6bfd5c)
-   \[patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](jsx-eslint/eslint-plugin-jsx-a11y@eadd70c)
-   \[Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](jsx-eslint/eslint-plugin-jsx-a11y@46ffbc3)
-   \[Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](jsx-eslint/eslint-plugin-jsx-a11y@5999555)
-   \[Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](jsx-eslint/eslint-plugin-jsx-a11y@8d8f016)
-   \[patch] move `semver` from Deps to Dev Deps [`4da13e7`](jsx-eslint/eslint-plugin-jsx-a11y@4da13e7)
-   \[Deps] update `ast-types-flow` [`b755318`](jsx-eslint/eslint-plugin-jsx-a11y@b755318)
-   \[Dev Deps] update `eslint-plugin-import` [`f1c976b`](jsx-eslint/eslint-plugin-jsx-a11y@f1c976b)
-   \[Deps] unpin `language-tags` [`3d1d26d`](jsx-eslint/eslint-plugin-jsx-a11y@3d1d26d)
-   \[Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](jsx-eslint/eslint-plugin-jsx-a11y@1271153)
-   \[Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](jsx-eslint/eslint-plugin-jsx-a11y@f0d2ddb)
-   \[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](jsx-eslint/eslint-plugin-jsx-a11y@0c278f4)


## [v6.7.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v671---2023-01-11)

##### Commits

-   \[Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](ljharb/eslint-plugin-jsx-a11y@b01219e)


## [v6.7.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v670---2023-01-09)

##### Merged

-   New rule: prefer-tag-over-role [`#833`](https://github.com/ljharb/eslint-plugin-jsx-a11y/pull/833)

##### Fixed

-   \[Tests] `aria-role`: add now-passing test [`#756`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/756)
-   \[Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/892)
-   \[New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/ljharb/eslint-plugin-jsx-a11y/issues/881)

##### Commits

-   \[Docs] automate docs with `eslint-doc-generator` [`6d7a857`](ljharb/eslint-plugin-jsx-a11y@6d7a857)
-   \[Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](ljharb/eslint-plugin-jsx-a11y@3d77c84)
-   \[New] add `anchor-ambiguous-text` rule [`7f6463e`](ljharb/eslint-plugin-jsx-a11y@7f6463e)
-   \[New] add `getAccessibleChildText` util [`630116b`](ljharb/eslint-plugin-jsx-a11y@630116b)
-   \[New] Add `isFocusable` utils method [`e199d17`](ljharb/eslint-plugin-jsx-a11y@e199d17)
-   \[Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](ljharb/eslint-plugin-jsx-a11y@6b9855b)
-   \[Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](ljharb/eslint-plugin-jsx-a11y@9aa878b)
-   \[New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](ljharb/eslint-plugin-jsx-a11y@bbae2c4)
-   \[New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `&lt;img /&gt;` elements [`bb84abc`](ljharb/eslint-plugin-jsx-a11y@bb84abc)
-   \[meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](ljharb/eslint-plugin-jsx-a11y@6ad2312)
-   \[meta] add `auto-changelog` [`283817b`](ljharb/eslint-plugin-jsx-a11y@283817b)
-   \[Docs] missing descriptions in some rules [`79b975a`](ljharb/eslint-plugin-jsx-a11y@79b975a)
-   \[Deps] update `aria-query`, `axobject-query` [`7b3cda3`](ljharb/eslint-plugin-jsx-a11y@7b3cda3)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](ljharb/eslint-plugin-jsx-a11y@0852947)
-   \[meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](ljharb/eslint-plugin-jsx-a11y@65be35b)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](ljharb/eslint-plugin-jsx-a11y@60c2df5)
-   \[Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](ljharb/eslint-plugin-jsx-a11y@4abc751)
-   \[Deps] update `@babel/runtime`, `axe-core` [`89f766c`](ljharb/eslint-plugin-jsx-a11y@89f766c)
-   \[meta] run the build in prepack, not prepublish [`e411ce3`](ljharb/eslint-plugin-jsx-a11y@e411ce3)
-   \[Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](ljharb/eslint-plugin-jsx-a11y@cccdb62)
-   \[Dev Deps] update `markdown-magic` [`3382059`](ljharb/eslint-plugin-jsx-a11y@3382059)
-   \[Fix] expose `prefer-tag-over-role` [`38d52f8`](ljharb/eslint-plugin-jsx-a11y@38d52f8)
-   \[Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](ljharb/eslint-plugin-jsx-a11y@9a2af01)
-   \[Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](ljharb/eslint-plugin-jsx-a11y@f84bb74)
-   \[Dev Deps] update `@babel/core` [`cf3f8d0`](ljharb/eslint-plugin-jsx-a11y@cf3f8d0)
-   \[Deps] update `axe-core` [`0a73cf4`](ljharb/eslint-plugin-jsx-a11y@0a73cf4)
-   \[Deps] update `@babel/runtime` [`053f04d`](ljharb/eslint-plugin-jsx-a11y@053f04d)
-   \[Deps] update `@babel/runtime` [`bccf0ae`](ljharb/eslint-plugin-jsx-a11y@bccf0ae)
-   \[Deps] update `jsx-ast-utils` [`c9687cc`](ljharb/eslint-plugin-jsx-a11y@c9687cc)
-   \[readme] Preventing code repetition in user's eslint config file [`8b889bf`](ljharb/eslint-plugin-jsx-a11y@8b889bf)
-   \[Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](ljharb/eslint-plugin-jsx-a11y@0bdf95b)

<!-- auto-changelog-above -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants