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);