Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / toolbar / js / views / MenuVisualView.es6.js
diff --git a/web/core/modules/toolbar/js/views/MenuVisualView.es6.js b/web/core/modules/toolbar/js/views/MenuVisualView.es6.js
new file mode 100644 (file)
index 0000000..e956112
--- /dev/null
@@ -0,0 +1,42 @@
+/**
+ * @file
+ * A Backbone view for the collapsible menus.
+ */
+
+(function ($, Backbone, Drupal) {
+  Drupal.toolbar.MenuVisualView = Backbone.View.extend(/** @lends Drupal.toolbar.MenuVisualView# */{
+
+    /**
+     * Backbone View for collapsible menus.
+     *
+     * @constructs
+     *
+     * @augments Backbone.View
+     */
+    initialize() {
+      this.listenTo(this.model, 'change:subtrees', this.render);
+    },
+
+    /**
+     * @inheritdoc
+     */
+    render() {
+      const subtrees = this.model.get('subtrees');
+      // Add subtrees.
+      for (const id in subtrees) {
+        if (subtrees.hasOwnProperty(id)) {
+          this.$el
+            .find(`#toolbar-link-${id}`)
+            .once('toolbar-subtrees')
+            .after(subtrees[id]);
+        }
+      }
+      // Render the main menu as a nested, collapsible accordion.
+      if ('drupalToolbarMenu' in $.fn) {
+        this.$el
+          .children('.toolbar-menu')
+          .drupalToolbarMenu();
+      }
+    },
+  });
+}(jQuery, Backbone, Drupal));