Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / toolbar / js / views / ToolbarAuralView.es6.js
diff --git a/web/core/modules/toolbar/js/views/ToolbarAuralView.es6.js b/web/core/modules/toolbar/js/views/ToolbarAuralView.es6.js
new file mode 100644 (file)
index 0000000..c27b864
--- /dev/null
@@ -0,0 +1,71 @@
+/**
+ * @file
+ * A Backbone view for the aural feedback of the toolbar.
+ */
+
+(function (Backbone, Drupal) {
+  Drupal.toolbar.ToolbarAuralView = Backbone.View.extend(/** @lends Drupal.toolbar.ToolbarAuralView# */{
+
+    /**
+     * Backbone view for the aural feedback of the toolbar.
+     *
+     * @constructs
+     *
+     * @augments Backbone.View
+     *
+     * @param {object} options
+     *   Options for the view.
+     * @param {object} options.strings
+     *   Various strings to use in the view.
+     */
+    initialize(options) {
+      this.strings = options.strings;
+
+      this.listenTo(this.model, 'change:orientation', this.onOrientationChange);
+      this.listenTo(this.model, 'change:activeTray', this.onActiveTrayChange);
+    },
+
+    /**
+     * Announces an orientation change.
+     *
+     * @param {Drupal.toolbar.ToolbarModel} model
+     *   The toolbar model in question.
+     * @param {string} orientation
+     *   The new value of the orientation attribute in the model.
+     */
+    onOrientationChange(model, orientation) {
+      Drupal.announce(Drupal.t('Tray orientation changed to @orientation.', {
+        '@orientation': orientation,
+      }));
+    },
+
+    /**
+     * Announces a changed active tray.
+     *
+     * @param {Drupal.toolbar.ToolbarModel} model
+     *   The toolbar model in question.
+     * @param {HTMLElement} tray
+     *   The new value of the tray attribute in the model.
+     */
+    onActiveTrayChange(model, tray) {
+      const relevantTray = (tray === null) ? model.previous('activeTray') : tray;
+      // Current activeTray and previous activeTray are empty, no state change
+      // to announce.
+      if (!relevantTray) {
+        return;
+      }
+      const action = (tray === null) ? Drupal.t('closed') : Drupal.t('opened');
+      const trayNameElement = relevantTray.querySelector('.toolbar-tray-name');
+      let text;
+      if (trayNameElement !== null) {
+        text = Drupal.t('Tray "@tray" @action.', {
+          '@tray': trayNameElement.textContent, '@action': action,
+        });
+      }
+      else {
+        text = Drupal.t('Tray @action.', { '@action': action });
+      }
+      Drupal.announce(text);
+    },
+  });
+}(Backbone, Drupal));