From b4de33dd5f513b75eb886f058fe8bde8698073b2 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Thu, 15 Aug 2019 12:09:55 +0100 Subject: [PATCH 01/14] worked on the navbar to resolve some a11y issues --- addon/components/es-navbar.js | 2 +- addon/components/es-navbar/link/component.js | 14 +-- addon/components/es-navbar/link/template.hbs | 21 ++-- addon/styles/components/es-navbar.css | 105 +++++++++++-------- addon/templates/components/es-navbar.hbs | 45 +------- 5 files changed, 83 insertions(+), 104 deletions(-) diff --git a/addon/components/es-navbar.js b/addon/components/es-navbar.js index d7d591cf..a2ffbe51 100644 --- a/addon/components/es-navbar.js +++ b/addon/components/es-navbar.js @@ -20,7 +20,7 @@ export default class EsNavbar extends Component { } toggleMenu() { - let menu = this.element.querySelector('ul[role="menubar"]'); + let menu = this.element.querySelector('.navbar-list'); menu.setAttribute('aria-expanded', menu.getAttribute('aria-expanded') !== 'true'); } diff --git a/addon/components/es-navbar/link/component.js b/addon/components/es-navbar/link/component.js index 57c4abfb..e4909b8e 100644 --- a/addon/components/es-navbar/link/component.js +++ b/addon/components/es-navbar/link/component.js @@ -8,11 +8,7 @@ import { next } from '@ember/runloop'; export default Component.extend({ layout, tagName: 'li', - tabIndex: 0, - - role: 'menuitem', - - attributeBindings: ['role'], + classNames: ['navbar-list-item'], classNameBindings: ['isDropdown:dropdown'], isDropdown: equal('link.type', 'dropdown'), @@ -34,7 +30,7 @@ export default Component.extend({ navbar: service(), didInsertElement() { - this.element.tabIndex = -1; + // this.element.tabIndex = -1; this.get('navbar').register(this); this.domNode = this.element.querySelector('ul[role="menu"]'); @@ -51,8 +47,8 @@ export default Component.extend({ handleBlur() { next(this, function() { - let subItems = Array.from(this.element.querySelectorAll('ul[role="menu"] li')); - let focused = subItems.find(item => document.activeElement === item.querySelector('a')); + let subItems = Array.from(this.element.querySelectorAll('.navbar-dropdown-list-item')); + let focused = subItems.find(item => document.activeElement === item.querySelector('button')); // debugger if(!focused) { @@ -103,7 +99,7 @@ export default Component.extend({ }).volatile(), setFocusToFirstItem() { - let element = this.element.querySelector('ul[role="menu"] li a') + let element = this.element.querySelector('.navbar-dropdown-list-item-link') if (element) { element.focus(); } diff --git a/addon/components/es-navbar/link/template.hbs b/addon/components/es-navbar/link/template.hbs index fb7f6f1e..46cfc2d4 100644 --- a/addon/components/es-navbar/link/template.hbs +++ b/addon/components/es-navbar/link/template.hbs @@ -1,30 +1,25 @@ {{#if (eq link.type "link")}} {{/if}} {{#if (eq link.type "dropdown")}} - -