summaryrefslogtreecommitdiffstatshomepage
path: root/core/modules/contextual/js/contextual.toolbar.es6.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/contextual/js/contextual.toolbar.es6.js')
-rw-r--r--core/modules/contextual/js/contextual.toolbar.es6.js77
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);