From 82376125017f51e54211a9a7148aee54e7898f5e Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Thu, 27 Aug 2015 18:41:14 +0100 Subject: [PATCH] Make skip link work with Ember refs #5652 - handles the skip link using js so that ember doesn't interfere with the anchor - uses the code suggested here: https://www.codehive.io/boards/pZUuwIk --- core/client/app/components/gh-skip-link.js | 34 ++++++++++++++++++++++ core/client/app/templates/application.hbs | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 core/client/app/components/gh-skip-link.js diff --git a/core/client/app/components/gh-skip-link.js b/core/client/app/components/gh-skip-link.js new file mode 100644 index 0000000000..9c8f0880d9 --- /dev/null +++ b/core/client/app/components/gh-skip-link.js @@ -0,0 +1,34 @@ +/*jshint scripturl:true*/ +import Ember from 'ember'; + +export default Ember.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: Ember.String.htmlSafe('javascript:;'), + + scrollTo: function () { + var anchor = this.get('anchor'), + $el = Ember.$(anchor); + + if ($el) { + // Scrolls to the top of main content or whatever + // is passed to the anchor attribute + Ember.$('body').scrollTop($el.offset().top); + + // 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 + Ember.$($el).attr('tabindex', -1).on('blur focusout', function () { + $(this).removeAttr('tabindex'); + }).focus(); + } + }.on('click') +}); diff --git a/core/client/app/templates/application.hbs b/core/client/app/templates/application.hbs index 256fbf3e4d..9db29c335c 100644 --- a/core/client/app/templates/application.hbs +++ b/core/client/app/templates/application.hbs @@ -1,5 +1,5 @@ {{#gh-app showSettingsMenu=showSettingsMenu}} - Skip to main content + {{#gh-skip-link anchor=".gh-main"}}Skip to main content{{/gh-skip-link}} {{gh-alerts notify="topNotificationChange"}}