2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
8 (function ($, Drupal, Backbone, _) {
9 Drupal.contextualToolbar.AuralView = Backbone.View.extend({
12 initialize: function initialize(options) {
13 this.options = options;
15 this.listenTo(this.model, 'change', this.render);
16 this.listenTo(this.model, 'change:isViewing', this.manageTabbing);
18 $(document).on('keyup', _.bind(this.onKeypress, this));
20 render: function render() {
21 this.$el.find('button').attr('aria-pressed', !this.model.get('isViewing'));
25 manageTabbing: function manageTabbing() {
26 var tabbingContext = this.model.get('tabbingContext');
29 if (tabbingContext.active) {
30 Drupal.announce(this.options.strings.tabbingReleased);
32 tabbingContext.release();
35 if (!this.model.get('isViewing')) {
36 tabbingContext = Drupal.tabbingManager.constrain($('.contextual-toolbar-tab, .contextual'));
37 this.model.set('tabbingContext', tabbingContext);
38 this.announceTabbingConstraint();
39 this.announcedOnce = true;
42 announceTabbingConstraint: function announceTabbingConstraint() {
43 var strings = this.options.strings;
44 Drupal.announce(Drupal.formatString(strings.tabbingConstrained, {
45 '@contextualsCount': Drupal.formatPlural(Drupal.contextual.collection.length, '@count contextual link', '@count contextual links')
47 Drupal.announce(strings.pressEsc);
49 onKeypress: function onKeypress(event) {
50 if (!this.announcedOnce && event.keyCode === 9 && !this.model.get('isViewing')) {
51 this.announceTabbingConstraint();
53 this.announcedOnce = true;
56 if (event.keyCode === 27) {
57 this.model.set('isViewing', true);
61 })(jQuery, Drupal, Backbone, _);