Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function ($, Drupal, Backbone, _) { Chris@0: Drupal.contextualToolbar.AuralView = Backbone.View.extend({ Chris@0: announcedOnce: false, Chris@0: Chris@0: initialize: function initialize(options) { Chris@0: this.options = options; Chris@0: Chris@0: this.listenTo(this.model, 'change', this.render); Chris@0: this.listenTo(this.model, 'change:isViewing', this.manageTabbing); Chris@0: Chris@0: $(document).on('keyup', _.bind(this.onKeypress, this)); Chris@14: this.manageTabbing(); Chris@0: }, Chris@0: render: function render() { Chris@0: this.$el.find('button').attr('aria-pressed', !this.model.get('isViewing')); Chris@0: Chris@0: return this; Chris@0: }, Chris@0: manageTabbing: function manageTabbing() { Chris@0: var tabbingContext = this.model.get('tabbingContext'); Chris@0: Chris@0: if (tabbingContext) { Chris@0: if (tabbingContext.active) { Chris@0: Drupal.announce(this.options.strings.tabbingReleased); Chris@0: } Chris@0: tabbingContext.release(); Chris@0: } Chris@0: Chris@0: if (!this.model.get('isViewing')) { Chris@0: tabbingContext = Drupal.tabbingManager.constrain($('.contextual-toolbar-tab, .contextual')); Chris@0: this.model.set('tabbingContext', tabbingContext); Chris@0: this.announceTabbingConstraint(); Chris@0: this.announcedOnce = true; Chris@0: } Chris@0: }, Chris@0: announceTabbingConstraint: function announceTabbingConstraint() { Chris@0: var strings = this.options.strings; Chris@0: Drupal.announce(Drupal.formatString(strings.tabbingConstrained, { Chris@0: '@contextualsCount': Drupal.formatPlural(Drupal.contextual.collection.length, '@count contextual link', '@count contextual links') Chris@0: })); Chris@0: Drupal.announce(strings.pressEsc); Chris@0: }, Chris@0: onKeypress: function onKeypress(event) { Chris@0: if (!this.announcedOnce && event.keyCode === 9 && !this.model.get('isViewing')) { Chris@0: this.announceTabbingConstraint(); Chris@0: Chris@0: this.announcedOnce = true; Chris@0: } Chris@0: Chris@0: if (event.keyCode === 27) { Chris@0: this.model.set('isViewing', true); Chris@0: } Chris@0: } Chris@0: }); Chris@0: })(jQuery, Drupal, Backbone, _);