├── src ├── images │ ├── a11yfav.png │ └── demoapp.png ├── fonts │ ├── Inter-Black.woff │ ├── Inter-Black.woff2 │ ├── work-sans-v4-latin-600.woff │ ├── work-sans-v4-latin-800.woff │ ├── work-sans-v4-latin-600.woff2 │ ├── work-sans-v4-latin-800.woff2 │ ├── merriweather-v19-latin-300.woff │ ├── merriweather-v19-latin-300.woff2 │ ├── merriweather-v19-latin-300italic.woff │ └── merriweather-v19-latin-300italic.woff2 ├── components │ ├── stage.js │ ├── editText.js │ ├── pattern-details.js │ ├── image.js │ ├── about.js │ ├── arrow.js │ ├── demoApp.js │ ├── challenges.js │ ├── Intro.js │ ├── newsletterSignup.js │ ├── header.js │ ├── patterns-all.js │ ├── patterns.js │ ├── layout.js │ ├── seo.js │ └── layout.css ├── pages │ ├── 404.js │ ├── patterns.js │ └── index.js ├── html.js └── templates │ ├── longread.js │ └── pattern.js ├── gatsby-browser.js ├── static └── images │ ├── a11yappscreenshot.png │ └── a11yappscreenshot_larger.png ├── content ├── demo-app.md ├── intro.md ├── patterns │ ├── teaser-progress.md │ ├── teaser-routing.md │ ├── teaser-animation.md │ ├── teaser-menu.md │ ├── teaser-notifications.md │ ├── teaser-modals.md │ └── vue │ │ ├── animation.md │ │ ├── notifications.md │ │ ├── menu.md │ │ ├── progress.md │ │ ├── modals.md │ │ └── routing.md ├── about.md └── longreads │ ├── contribute.md │ ├── people.md │ └── a11y-challenges.md ├── README.md ├── gatsby-ssr.js ├── .gitignore ├── package.json ├── gatsby-config.js ├── gatsby-node.js └── .eslintrc /src/images/a11yfav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/images/a11yfav.png -------------------------------------------------------------------------------- /src/images/demoapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/images/demoapp.png -------------------------------------------------------------------------------- /src/fonts/Inter-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/Inter-Black.woff -------------------------------------------------------------------------------- /src/fonts/Inter-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/Inter-Black.woff2 -------------------------------------------------------------------------------- /gatsby-browser.js: -------------------------------------------------------------------------------- 1 | // gatsby-browser.js 2 | 3 | export const onClientEntry = async () => { 4 | await import(`focus-visible`); 5 | }; 6 | -------------------------------------------------------------------------------- /src/fonts/work-sans-v4-latin-600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/work-sans-v4-latin-600.woff -------------------------------------------------------------------------------- /src/fonts/work-sans-v4-latin-800.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/work-sans-v4-latin-800.woff -------------------------------------------------------------------------------- /static/images/a11yappscreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/static/images/a11yappscreenshot.png -------------------------------------------------------------------------------- /src/fonts/work-sans-v4-latin-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/work-sans-v4-latin-600.woff2 -------------------------------------------------------------------------------- /src/fonts/work-sans-v4-latin-800.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/work-sans-v4-latin-800.woff2 -------------------------------------------------------------------------------- /src/fonts/merriweather-v19-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/merriweather-v19-latin-300.woff -------------------------------------------------------------------------------- /src/fonts/merriweather-v19-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/merriweather-v19-latin-300.woff2 -------------------------------------------------------------------------------- /static/images/a11yappscreenshot_larger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/static/images/a11yappscreenshot_larger.png -------------------------------------------------------------------------------- /src/fonts/merriweather-v19-latin-300italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/merriweather-v19-latin-300italic.woff -------------------------------------------------------------------------------- /src/fonts/merriweather-v19-latin-300italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accessible-app/accessible-app_com/HEAD/src/fonts/merriweather-v19-latin-300italic.woff2 -------------------------------------------------------------------------------- /src/components/stage.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Stage = props => ( 4 |
You just hit a route that doesn't exist... the sadness.
11 |26 | 27 | Read more about accessibility challenges in web apps 28 | 29 |
30 |{data.markdownRemark.frontmatter.intro}
19 | 20 |tutorials and resources for developers seeking to build accessible web experiences. Currently it has a focus on React. I think it is a good complement to the current (involuntary) focus on Vue.js on [accessible-app.com](https://accessible-app.com)! 49 | 50 | ### [Updates/Changelog] 51 | * 2020-05-18: Added ChakraUI Vue 52 | * 2020-04-15: Moved this list over to acessible-app.com, fixed typos 53 | * 2019-01-17: 54 | * Added designsystem.gov.au / React 55 | * Added Deque's ressources / General 56 | * 2019-01-23 57 | * Added Scott Vinkle & Demo App / React 58 | * 2019-01-28 59 | * Added Lindsey Kopacz / General 60 | * 2020-02-20 61 | * Added Melanie Sumner / EmberJS 62 | * Added Maria Lamardo / Vue 63 | * Added Oscar Braunert / Vue 64 | * Added Austin Gil / Vue 65 | * 2020-02-21 66 | * Added Suzanne Aitchison / General 67 | * Added VueVixens' a11y workshop 68 | -------------------------------------------------------------------------------- /content/patterns/vue/menu.md: -------------------------------------------------------------------------------- 1 | --- 2 | path: /pattern/vue/menu 3 | title: Menus & Dropdowns 4 | type: pattern 5 | edittext: https://github.com/accessible-app/accessible-app_com/edit/master/content/patterns/vue/menu.md 6 | --- 7 | Heydon Pickering open his [inclusive-components article on menus and menu buttons](https://inclusive-components.design/menus-menu-buttons/) with: 8 | 9 | > Classification is hard 10 | 11 | And he's incredibly right about that. In order to add accessible menu buttons and menu constructs to your web-app it is necessary to put the expression "menu" and "application" in context. 12 | 13 | ### Menus and Dropdowns 14 | 15 | Menus are known from your operating system. On the desktop their are mostly at the upper edge of your application chrome on Windows, or fixed at the upper edge of your screen if you use Mac OS. A dropdown is mostly the container that appears when you click the first level, like "File" and "Edit". If you click on something inside that dropdown, for example "Undo" it triggers an action in your application. 16 | 17 | In web design, on the other hand, the expression "menu" and "dropdown" are often used differently: a menu could be a horizontally displayed list of links and the dropdown could contain further links in a navigation section, this time possibly displayed vertically. 18 | 19 | ### Applications 20 | 21 | When you do your research about building your web-app with accessibility in mind and reach [WAI-ARIA Authoring Practices (AP)](https://www.w3.org/TR/wai-aria-practices-1.1/) and its patterns you will stumble over the expression "application". Please consider that the authors of the AP could have had something else in mind when the wrote it that you, a Vue, React or Angular developer. The practices frequently use the "application" term for desktop-like application. It is for you as the web-app author to judge whether you are building something desktop like - of if you rather make some links to routes, inputs or buttons visible, items appear or disappear after an user interaction. 22 | 23 | One further issue about "application" in the sense of ARIA is that screen readers have an "application mode". Once this mode is activated by an ARIA attribute that triggers it, application mode changes usage patterns and keyboard shortcuts. Since we are still talking about a web-app you really have to check if this rather brutal change of input mode is intentionally the the thing you are aiming for. 24 | 25 | The tip here is, as well as in general with accessibility advice: Test with real users. 26 | 27 | ### Best practice 28 | 29 | 30 |