MenuVisualView.es6.js 970 B

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