108f65c4261a655433f0119b5946e13685da2a70
[yaffs-website] / web / core / modules / toolbar / js / views / MenuVisualView.es6.js
1 /**
2  * @file
3  * A Backbone view for the collapsible menus.
4  */
5
6 (function ($, Backbone, Drupal) {
7   Drupal.toolbar.MenuVisualView = Backbone.View.extend(/** @lends Drupal.toolbar.MenuVisualView# */{
8
9     /**
10      * Backbone View for collapsible menus.
11      *
12      * @constructs
13      *
14      * @augments Backbone.View
15      */
16     initialize() {
17       this.listenTo(this.model, 'change:subtrees', this.render);
18     },
19
20     /**
21      * @inheritdoc
22      */
23     render() {
24       const subtrees = this.model.get('subtrees');
25       // Add subtrees.
26       Object.keys(subtrees || {}).forEach((id) => {
27         this.$el
28           .find(`#toolbar-link-${id}`)
29           .once('toolbar-subtrees')
30           .after(subtrees[id]);
31       });
32       // Render the main menu as a nested, collapsible accordion.
33       if ('drupalToolbarMenu' in $.fn) {
34         this.$el
35           .children('.toolbar-menu')
36           .drupalToolbarMenu();
37       }
38     },
39   });
40 }(jQuery, Backbone, Drupal));