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