Chris@0: /** Chris@0: * @file Chris@0: * A Backbone view for the collapsible menus. Chris@0: */ Chris@0: Chris@0: (function ($, Backbone, Drupal) { Chris@0: Drupal.toolbar.MenuVisualView = Backbone.View.extend(/** @lends Drupal.toolbar.MenuVisualView# */{ Chris@0: Chris@0: /** Chris@0: * Backbone View for collapsible menus. Chris@0: * Chris@0: * @constructs Chris@0: * Chris@0: * @augments Backbone.View Chris@0: */ Chris@0: initialize() { Chris@0: this.listenTo(this.model, 'change:subtrees', this.render); Chris@0: }, Chris@0: Chris@0: /** Chris@0: * @inheritdoc Chris@0: */ Chris@0: render() { Chris@0: const subtrees = this.model.get('subtrees'); Chris@0: // Add subtrees. Chris@0: for (const id in subtrees) { Chris@0: if (subtrees.hasOwnProperty(id)) { Chris@0: this.$el Chris@0: .find(`#toolbar-link-${id}`) Chris@0: .once('toolbar-subtrees') Chris@0: .after(subtrees[id]); Chris@0: } Chris@0: } Chris@0: // Render the main menu as a nested, collapsible accordion. Chris@0: if ('drupalToolbarMenu' in $.fn) { Chris@0: this.$el Chris@0: .children('.toolbar-menu') Chris@0: .drupalToolbarMenu(); Chris@0: } Chris@0: }, Chris@0: }); Chris@0: }(jQuery, Backbone, Drupal));