From 0221d7a9504fac27c6fbfd3d68901e2386f70774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lehoczky=20Zolt=C3=A1n?= Date: Wed, 7 Jun 2023 17:06:00 +0200 Subject: [PATCH 01/35] docs: create vitepress site --- .gitignore | 2 + README.md | 42 +- docs/.vitepress/config.ts | 53 + docs/.vitepress/rulesForSidebar.ts | 34 + docs/aria-role.md | 43 - docs/iframe-has-title.md | 25 - docs/index.md | 49 + docs/rule-overview/RuleTable.vue | 40 + docs/rule-overview/index.md | 16 + docs/rule-overview/rule-overview.data.ts | 34 + docs/{ => rules}/alt-text.md | 90 +- docs/{ => rules}/anchor-has-content.md | 40 +- docs/{ => rules}/aria-props.md | 14 +- docs/rules/aria-role.md | 47 + docs/{ => rules}/aria-unsupported-elements.md | 18 +- .../click-events-have-key-events.md | 18 +- docs/{ => rules}/form-control-has-label.md | 36 +- docs/{ => rules}/heading-has-content.md | 36 +- docs/rules/iframe-has-title.md | 29 + .../{ => rules}/interactive-supports-focus.md | 74 +- docs/{ => rules}/label-has-for.md | 34 +- docs/{ => rules}/media-has-caption.md | 30 +- .../mouse-events-have-key-events.md | 16 +- docs/{ => rules}/no-access-key.md | 24 +- docs/{ => rules}/no-autofocus.md | 30 +- docs/{ => rules}/no-distracting-elements.md | 26 +- docs/{ => rules}/no-onchange.md | 38 +- docs/{ => rules}/no-redundant-roles.md | 26 +- .../no-static-element-interactions.md | 63 +- .../role-has-required-aria-props.md | 34 +- docs/{ => rules}/tabindex-no-positive.md | 14 +- package.json | 7 +- src/utils/makeDocsURL.ts | 1 + yarn.lock | 1864 +++++++++++++---- 34 files changed, 2082 insertions(+), 865 deletions(-) create mode 100644 docs/.vitepress/config.ts create mode 100644 docs/.vitepress/rulesForSidebar.ts delete mode 100644 docs/aria-role.md delete mode 100644 docs/iframe-has-title.md create mode 100644 docs/index.md create mode 100644 docs/rule-overview/RuleTable.vue create mode 100644 docs/rule-overview/index.md create mode 100644 docs/rule-overview/rule-overview.data.ts rename docs/{ => rules}/alt-text.md (65%) rename docs/{ => rules}/anchor-has-content.md (76%) rename docs/{ => rules}/aria-props.md (62%) create mode 100644 docs/rules/aria-role.md rename docs/{ => rules}/aria-unsupported-elements.md (68%) rename docs/{ => rules}/click-events-have-key-events.md (59%) rename docs/{ => rules}/form-control-has-label.md (68%) rename docs/{ => rules}/heading-has-content.md (79%) create mode 100644 docs/rules/iframe-has-title.md rename docs/{ => rules}/interactive-supports-focus.md (60%) rename docs/{ => rules}/label-has-for.md (84%) rename docs/{ => rules}/media-has-caption.md (77%) rename docs/{ => rules}/mouse-events-have-key-events.md (63%) rename docs/{ => rules}/no-access-key.md (59%) rename docs/{ => rules}/no-autofocus.md (55%) rename docs/{ => rules}/no-distracting-elements.md (73%) rename docs/{ => rules}/no-onchange.md (58%) rename docs/{ => rules}/no-redundant-roles.md (74%) rename docs/{ => rules}/no-static-element-interactions.md (79%) rename docs/{ => rules}/role-has-required-aria-props.md (53%) rename docs/{ => rules}/tabindex-no-positive.md (71%) diff --git a/.gitignore b/.gitignore index 29efe008..9b367a65 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /.idea/ /dist/ /node_modules/ +/docs/.vitepress/dist +/docs/.vitepress/cache \ No newline at end of file diff --git a/README.md b/README.md index a3660b36..ad6983bd 100644 --- a/README.md +++ b/README.md @@ -5,47 +5,11 @@ An `eslint` plugin for checking accessibility rules from within `.vue` files. -## Installation +## Documentation -If you're using `yarn`: + -```bash -yarn add --dev eslint-plugin-vuejs-accessibility -``` - -or if you're using `npm`: - -```bash -npm install --save-dev eslint-plugin-vuejs-accessibility -``` - -## Usage - -Add `vuejs-accessibility` to the plugins section of your `eslint` configuration. You can omit the `eslint-plugin-` prefix: - -```json -{ - "plugins": ["vuejs-accessibility"] -} -``` - -Then configure the rules you want to use under the rules section. - -```json -{ - "rules": { - "vuejs-accessibility/rule-name": "error" - } -} -``` - -You can also enable all the recommended rules at once. Add `plugin:vuejs-accessibility/recommended` in extends: - -```json -{ - "extends": ["plugin:vuejs-accessibility/recommended"] -} -``` +Please refer to the [official website](). ## Development diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 00000000..ddcf045e --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,53 @@ +import { defineConfig } from "vitepress"; +import { rules } from "./rulesForSidebar"; +import { version } from "../../package.json"; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "vuejs-accessibility", + description: + "An eslint plugin for checking accessibility rules from within .vue files.", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { + text: version, + items: [ + { + text: "Changelog", + link: "https://github.com/Lehoczky/vue-keycloak/blob/master/CHANGELOG.md" + } + ] + } + ], + + sidebar: [ + { + text: "Introduction", + items: [ + { text: "Getting Started", link: "/" }, + { text: "Rule Overview", link: "/rule-overview/index" } + ] + }, + { + text: "Rules", + items: rules + } + ], + + editLink: { + pattern: "https://github.com/vue-a11y/edit/master/docs/:path" + }, + + socialLinks: [ + { + icon: "github", + link: "https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility" + } + ], + + search: { + provider: "local" + } + } +}); diff --git a/docs/.vitepress/rulesForSidebar.ts b/docs/.vitepress/rulesForSidebar.ts new file mode 100644 index 00000000..ca78e3ef --- /dev/null +++ b/docs/.vitepress/rulesForSidebar.ts @@ -0,0 +1,34 @@ +import { join, parse } from "node:path"; +import { Dirent, readdirSync } from "node:fs"; + +export const rules = getRulesForSideBar(); + +function getRulesForSideBar() { + const rulesDirectory = join(__dirname, "../", "rules"); + return readdirSync(rulesDirectory, { withFileTypes: true }) + .filter(isFile) + .filter(isMarkdown) + .map(fileNameWithoutExtension) + .map(ruleToSidebarItem); +} + +function isFile(dirent: Dirent) { + return !dirent.isDirectory(); +} + +function isMarkdown(dirent: Dirent) { + return dirent.name.endsWith(".md"); +} + +function fileNameWithoutExtension(file: Dirent) { + const parsedFileName = parse(file.name); + const nameWithoutExtension = parsedFileName.name; + return nameWithoutExtension; +} + +function ruleToSidebarItem(ruleName: string) { + return { + text: ruleName, + link: `/rules/${ruleName}` + }; +} diff --git a/docs/aria-role.md b/docs/aria-role.md deleted file mode 100644 index 74d13de7..00000000 --- a/docs/aria-role.md +++ /dev/null @@ -1,43 +0,0 @@ -# aria-role - -Elements with ARIA roles must use a valid, non-abstract ARIA role. - -_References:_ - -1. [WAI-ARIA](https://www.w3.org/TR/wai-aria/#role_definitions) site. -2. [AX_ARIA_01](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01) -3. [DPUB-ARIA roles](https://www.w3.org/TR/dpub-aria-1.0/) - -## Rule details - -This rule takes one optional object argument of type object: - -```json -{ - "rules": { - "vuejs-accessibility/aria-role": ["error", { "ignoreNonDOM": true }] - } -} -``` - -### Succeed - -```vue -
- -
- -
- - - -``` - -### Fail - -```vue -
- -
- -``` diff --git a/docs/iframe-has-title.md b/docs/iframe-has-title.md deleted file mode 100644 index 7140d544..00000000 --- a/docs/iframe-has-title.md +++ /dev/null @@ -1,25 +0,0 @@ -# iframe-has-title - -`