import Component from '@ember/component'; import {htmlSafe} from '@ember/string'; export default Component.extend({ tagName: 'a', anchor: '', classNames: ['sr-only', 'sr-only-focusable'], // Add attributes to component for href // href should be set to retain anchor properties // such as pointer cursor and text underline attributeBindings: ['href'], // Used so that upon clicking on the link // anchor behaviors or ignored href: htmlSafe('javascript:;'), click() { let el = document.querySelector(this.anchor); if (el) { // Scrolls to the top of main content or whatever // is passed to the anchor attribute document.body.scrollTop = el.getBoundingClientRect().top; let removeTabindex = function () { el.removeAttribute('tabindex'); }; // This sets focus on the content which was skipped to // upon losing focus, the tabindex should be removed // so that normal keyboard navigation picks up from focused // element el.setAttribute('tabindex', -1); el.focus(); el.addEventListener('blur', removeTabindex); el.addEventListener('focusout', removeTabindex); } } });