Chris@0: /** Chris@0: * @file Chris@0: * Attaches behaviors for the Contextual module's edit toolbar tab. Chris@0: */ Chris@0: Chris@17: (function($, Drupal, Backbone) { Chris@0: const strings = { Chris@17: tabbingReleased: Drupal.t( Chris@17: 'Tabbing is no longer constrained by the Contextual module.', Chris@17: ), Chris@17: tabbingConstrained: Drupal.t( Chris@17: 'Tabbing is constrained to a set of @contextualsCount and the edit mode toggle.', Chris@17: ), Chris@0: pressEsc: Drupal.t('Press the esc key to exit.'), Chris@0: }; Chris@0: Chris@0: /** Chris@0: * Initializes a contextual link: updates its DOM, sets up model and views. Chris@0: * Chris@0: * @param {HTMLElement} context Chris@0: * A contextual links DOM element as rendered by the server. Chris@0: */ Chris@0: function initContextualToolbar(context) { Chris@0: if (!Drupal.contextual || !Drupal.contextual.collection) { Chris@0: return; Chris@0: } Chris@0: Chris@0: const contextualToolbar = Drupal.contextualToolbar; Chris@17: contextualToolbar.model = new contextualToolbar.StateModel( Chris@17: { Chris@17: // Checks whether localStorage indicates we should start in edit mode Chris@17: // rather than view mode. Chris@17: // @see Drupal.contextualToolbar.VisualView.persist Chris@17: isViewing: Chris@17: localStorage.getItem('Drupal.contextualToolbar.isViewing') !== Chris@17: 'false', Chris@17: }, Chris@17: { Chris@17: contextualCollection: Drupal.contextual.collection, Chris@17: }, Chris@17: ); Chris@0: Chris@0: const viewOptions = { Chris@0: el: $('.toolbar .toolbar-bar .contextual-toolbar-tab'), Chris@14: model: contextualToolbar.model, Chris@0: strings, Chris@0: }; Chris@0: new contextualToolbar.VisualView(viewOptions); Chris@0: new contextualToolbar.AuralView(viewOptions); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Attaches contextual's edit toolbar tab behavior. Chris@0: * Chris@0: * @type {Drupal~behavior} Chris@0: * Chris@0: * @prop {Drupal~behaviorAttach} attach Chris@0: * Attaches contextual toolbar behavior on a contextualToolbar-init event. Chris@0: */ Chris@0: Drupal.behaviors.contextualToolbar = { Chris@0: attach(context) { Chris@0: if ($('body').once('contextualToolbar-init').length) { Chris@0: initContextualToolbar(context); Chris@0: } Chris@0: }, Chris@0: }; Chris@0: Chris@0: /** Chris@0: * Namespace for the contextual toolbar. Chris@0: * Chris@0: * @namespace Chris@0: */ Chris@0: Drupal.contextualToolbar = { Chris@0: /** Chris@0: * The {@link Drupal.contextualToolbar.StateModel} instance. Chris@0: * Chris@0: * @type {?Drupal.contextualToolbar.StateModel} Chris@0: */ Chris@0: model: null, Chris@0: }; Chris@17: })(jQuery, Drupal, Backbone);