From 5bdc92eca497601577f7cab3d288036873d96ab8 Mon Sep 17 00:00:00 2001 From: tanhauhau Date: Mon, 11 Jul 2022 13:09:07 +0800 Subject: [PATCH] refactor to match the eslint-plugin-jsx-a11y implementation --- package-lock.json | 16 + package.json | 1 + .../content/docs/05-accessibility-warnings.md | 11 + src/compiler/compile/compiler_warnings.ts | 4 + src/compiler/compile/nodes/Element.ts | 31 +- src/compiler/compile/utils/a11y.ts | 137 ++ src/compiler/compile/utils/aria_roles.ts | 9 - src/compiler/compile/utils/elements.ts | 5 - .../input.svelte | 98 +- .../warnings.json | 1307 +++++++++-------- 10 files changed, 986 insertions(+), 633 deletions(-) create mode 100644 src/compiler/compile/utils/a11y.ts delete mode 100644 src/compiler/compile/utils/aria_roles.ts delete mode 100644 src/compiler/compile/utils/elements.ts diff --git a/package-lock.json b/package-lock.json index ab4b20ed5940..01e23422bbe0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "acorn": "^8.4.1", "agadoo": "^1.1.0", "aria-query": "^5.0.0", + "axobject-query": "^3.0.1", "code-red": "^0.2.5", "css-tree": "^1.1.2", "eslint": "^8.0.0", @@ -812,6 +813,15 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, + "node_modules/axobject-query": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -5313,6 +5323,12 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, + "axobject-query": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", diff --git a/package.json b/package.json index ade713f4e3fc..9bdf7b3089d9 100644 --- a/package.json +++ b/package.json @@ -132,6 +132,7 @@ "acorn": "^8.4.1", "agadoo": "^1.1.0", "aria-query": "^5.0.0", + "axobject-query": "^3.0.1", "code-red": "^0.2.5", "css-tree": "^1.1.2", "eslint": "^8.0.0", diff --git a/site/content/docs/05-accessibility-warnings.md b/site/content/docs/05-accessibility-warnings.md index 438f2e474379..495d0107c4d2 100644 --- a/site/content/docs/05-accessibility-warnings.md +++ b/site/content/docs/05-accessibility-warnings.md @@ -250,6 +250,17 @@ Some HTML elements have default ARIA roles. Giving these elements an ARIA role t --- +### `a11y-no-interactive-element-to-noninteractive-role` + +[WAI-ARIA](https://www.w3.org/TR/wai-aria-1.1/#usage_intro) roles should not be used to convert an interactive element to a non-interactive element. Non-interactive ARIA roles include `article`, `banner`, `complementary`, `img`, `listitem`, `main`, `region` and `tooltip`. + +```sv + +