diff options
Diffstat (limited to 'core/modules/contextual/js/contextual.toolbar.es6.js')
-rw-r--r-- | core/modules/contextual/js/contextual.toolbar.es6.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/core/modules/contextual/js/contextual.toolbar.es6.js b/core/modules/contextual/js/contextual.toolbar.es6.js new file mode 100644 index 000000000000..b5a9053490c0 --- /dev/null +++ b/core/modules/contextual/js/contextual.toolbar.es6.js @@ -0,0 +1,77 @@ +/** + * @file + * Attaches behaviors for the Contextual module's edit toolbar tab. + */ + +(function ($, Drupal, Backbone) { + + 'use strict'; + + var strings = { + tabbingReleased: Drupal.t('Tabbing is no longer constrained by the Contextual module.'), + tabbingConstrained: Drupal.t('Tabbing is constrained to a set of @contextualsCount and the edit mode toggle.'), + pressEsc: Drupal.t('Press the esc key to exit.') + }; + + /** + * Initializes a contextual link: updates its DOM, sets up model and views. + * + * @param {HTMLElement} context + * A contextual links DOM element as rendered by the server. + */ + function initContextualToolbar(context) { + if (!Drupal.contextual || !Drupal.contextual.collection) { + return; + } + + var contextualToolbar = Drupal.contextualToolbar; + var model = contextualToolbar.model = new contextualToolbar.StateModel({ + // Checks whether localStorage indicates we should start in edit mode + // rather than view mode. + // @see Drupal.contextualToolbar.VisualView.persist + isViewing: localStorage.getItem('Drupal.contextualToolbar.isViewing') !== 'false' + }, { + contextualCollection: Drupal.contextual.collection + }); + + var viewOptions = { + el: $('.toolbar .toolbar-bar .contextual-toolbar-tab'), + model: model, + strings: strings + }; + new contextualToolbar.VisualView(viewOptions); + new contextualToolbar.AuralView(viewOptions); + } + + /** + * Attaches contextual's edit toolbar tab behavior. + * + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches contextual toolbar behavior on a contextualToolbar-init event. + */ + Drupal.behaviors.contextualToolbar = { + attach: function (context) { + if ($('body').once('contextualToolbar-init').length) { + initContextualToolbar(context); + } + } + }; + + /** + * Namespace for the contextual toolbar. + * + * @namespace + */ + Drupal.contextualToolbar = { + + /** + * The {@link Drupal.contextualToolbar.StateModel} instance. + * + * @type {?Drupal.contextualToolbar.StateModel} + */ + model: null + }; + +})(jQuery, Drupal, Backbone); |