Mercurial > hg > isophonics-drupal-site
annotate core/modules/contextual/js/views/KeyboardView.es6.js @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
rev | line source |
---|---|
Chris@0 | 1 /** |
Chris@0 | 2 * @file |
Chris@0 | 3 * A Backbone View that provides keyboard interaction for a contextual link. |
Chris@0 | 4 */ |
Chris@0 | 5 |
Chris@17 | 6 (function(Drupal, Backbone) { |
Chris@17 | 7 Drupal.contextual.KeyboardView = Backbone.View.extend( |
Chris@17 | 8 /** @lends Drupal.contextual.KeyboardView# */ { |
Chris@17 | 9 /** |
Chris@17 | 10 * @type {object} |
Chris@17 | 11 */ |
Chris@17 | 12 events: { |
Chris@17 | 13 'focus .trigger': 'focus', |
Chris@17 | 14 'focus .contextual-links a': 'focus', |
Chris@17 | 15 'blur .trigger': function() { |
Chris@17 | 16 this.model.blur(); |
Chris@17 | 17 }, |
Chris@17 | 18 'blur .contextual-links a': function() { |
Chris@17 | 19 // Set up a timeout to allow a user to tab between the trigger and the |
Chris@17 | 20 // contextual links without the menu dismissing. |
Chris@17 | 21 const that = this; |
Chris@17 | 22 this.timer = window.setTimeout(() => { |
Chris@17 | 23 that.model.close().blur(); |
Chris@17 | 24 }, 150); |
Chris@17 | 25 }, |
Chris@17 | 26 }, |
Chris@0 | 27 |
Chris@17 | 28 /** |
Chris@17 | 29 * Provides keyboard interaction for a contextual link. |
Chris@17 | 30 * |
Chris@17 | 31 * @constructs |
Chris@17 | 32 * |
Chris@17 | 33 * @augments Backbone.View |
Chris@17 | 34 */ |
Chris@17 | 35 initialize() { |
Chris@17 | 36 /** |
Chris@17 | 37 * The timer is used to create a delay before dismissing the contextual |
Chris@17 | 38 * links on blur. This is only necessary when keyboard users tab into |
Chris@17 | 39 * contextual links without edit mode (i.e. without TabbingManager). |
Chris@17 | 40 * That means that if we decide to disable tabbing of contextual links |
Chris@17 | 41 * without edit mode, all this timer logic can go away. |
Chris@17 | 42 * |
Chris@17 | 43 * @type {NaN|number} |
Chris@17 | 44 */ |
Chris@17 | 45 this.timer = NaN; |
Chris@0 | 46 }, |
Chris@17 | 47 |
Chris@17 | 48 /** |
Chris@17 | 49 * Sets focus on the model; Clears the timer that dismisses the links. |
Chris@17 | 50 */ |
Chris@17 | 51 focus() { |
Chris@17 | 52 // Clear the timeout that might have been set by blurring a link. |
Chris@17 | 53 window.clearTimeout(this.timer); |
Chris@17 | 54 this.model.focus(); |
Chris@0 | 55 }, |
Chris@0 | 56 }, |
Chris@17 | 57 ); |
Chris@17 | 58 })(Drupal, Backbone); |