Chris@0: /** Chris@0: * @file Chris@0: * A Backbone view for the body element. Chris@0: */ Chris@0: Chris@0: (function ($, Drupal, Backbone) { Chris@0: Drupal.toolbar.BodyVisualView = Backbone.View.extend(/** @lends Drupal.toolbar.BodyVisualView# */{ Chris@0: /** Chris@0: * Adjusts the body element with the toolbar position and dimension changes. Chris@0: * Chris@0: * @constructs Chris@0: * Chris@0: * @augments Backbone.View Chris@0: */ Chris@0: initialize() { Chris@0: this.listenTo(this.model, 'change:activeTray ', this.render); Chris@0: this.listenTo(this.model, 'change:isFixed change:isViewportOverflowConstrained', this.isToolbarFixed); Chris@0: }, Chris@0: Chris@0: isToolbarFixed() { Chris@0: // When the toolbar is fixed, it will not scroll with page scrolling. Chris@0: const isViewportOverflowConstrained = this.model.get('isViewportOverflowConstrained'); Chris@0: $('body').toggleClass('toolbar-fixed', (isViewportOverflowConstrained || this.model.get('isFixed'))); Chris@0: }, Chris@0: Chris@0: /** Chris@0: * @inheritdoc Chris@0: */ Chris@0: render() { Chris@0: $('body') Chris@0: // Toggle the toolbar-tray-open class on the body element. The class is Chris@0: // applied when a toolbar tray is active. Padding might be applied to Chris@0: // the body element to prevent the tray from overlapping content. Chris@0: .toggleClass('toolbar-tray-open', !!this.model.get('activeTray')); Chris@0: }, Chris@0: }); Chris@0: }(jQuery, Drupal, Backbone));