Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function ($, Drupal, drupalSettings) { Chris@0: var options = $.extend({ Chris@0: breakpoints: { Chris@0: 'toolbar.narrow': '', Chris@0: 'toolbar.standard': '', Chris@0: 'toolbar.wide': '' Chris@0: } Chris@0: }, drupalSettings.toolbar, { Chris@0: strings: { Chris@0: horizontal: Drupal.t('Horizontal orientation'), Chris@0: vertical: Drupal.t('Vertical orientation') Chris@0: } Chris@0: }); Chris@0: Chris@0: Drupal.behaviors.toolbar = { Chris@0: attach: function attach(context) { Chris@0: if (!window.matchMedia('only screen').matches) { Chris@0: return; Chris@0: } Chris@0: Chris@0: $(context).find('#toolbar-administration').once('toolbar').each(function () { Chris@14: var model = new Drupal.toolbar.ToolbarModel({ Chris@0: locked: JSON.parse(localStorage.getItem('Drupal.toolbar.trayVerticalLocked')), Chris@0: activeTab: document.getElementById(JSON.parse(localStorage.getItem('Drupal.toolbar.activeTabID'))), Chris@0: height: $('#toolbar-administration').outerHeight() Chris@0: }); Chris@0: Chris@14: Drupal.toolbar.models.toolbarModel = model; Chris@0: Chris@14: Object.keys(options.breakpoints).forEach(function (label) { Chris@14: var mq = options.breakpoints[label]; Chris@14: var mql = window.matchMedia(mq); Chris@14: Drupal.toolbar.mql[label] = mql; Chris@0: Chris@14: mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label)); Chris@14: Chris@14: Drupal.toolbar.mediaQueryChangeHandler.call(null, model, label, mql); Chris@14: }); Chris@0: Chris@0: Drupal.toolbar.views.toolbarVisualView = new Drupal.toolbar.ToolbarVisualView({ Chris@0: el: this, Chris@0: model: model, Chris@0: strings: options.strings Chris@0: }); Chris@0: Drupal.toolbar.views.toolbarAuralView = new Drupal.toolbar.ToolbarAuralView({ Chris@0: el: this, Chris@0: model: model, Chris@0: strings: options.strings Chris@0: }); Chris@0: Drupal.toolbar.views.bodyVisualView = new Drupal.toolbar.BodyVisualView({ Chris@0: el: this, Chris@0: model: model Chris@0: }); Chris@0: Chris@0: model.trigger('change:isFixed', model, model.get('isFixed')); Chris@0: model.trigger('change:activeTray', model, model.get('activeTray')); Chris@0: Chris@14: var menuModel = new Drupal.toolbar.MenuModel(); Chris@14: Drupal.toolbar.models.menuModel = menuModel; Chris@0: Drupal.toolbar.views.menuVisualView = new Drupal.toolbar.MenuVisualView({ Chris@0: el: $(this).find('.toolbar-menu-administration').get(0), Chris@0: model: menuModel, Chris@0: strings: options.strings Chris@0: }); Chris@0: Chris@0: Drupal.toolbar.setSubtrees.done(function (subtrees) { Chris@0: menuModel.set('subtrees', subtrees); Chris@0: var theme = drupalSettings.ajaxPageState.theme; Chris@0: localStorage.setItem('Drupal.toolbar.subtrees.' + theme, JSON.stringify(subtrees)); Chris@0: Chris@0: model.set('areSubtreesLoaded', true); Chris@0: }); Chris@0: Chris@0: Drupal.toolbar.views.toolbarVisualView.loadSubtrees(); Chris@0: Chris@0: $(document).on('drupalViewportOffsetChange.toolbar', function (event, offsets) { Chris@0: model.set('offsets', offsets); Chris@0: }); Chris@0: Chris@0: model.on('change:orientation', function (model, orientation) { Chris@0: $(document).trigger('drupalToolbarOrientationChange', orientation); Chris@0: }).on('change:activeTab', function (model, tab) { Chris@0: $(document).trigger('drupalToolbarTabChange', tab); Chris@0: }).on('change:activeTray', function (model, tray) { Chris@0: $(document).trigger('drupalToolbarTrayChange', tray); Chris@0: }); Chris@0: Chris@0: if (Drupal.toolbar.models.toolbarModel.get('orientation') === 'horizontal' && Drupal.toolbar.models.toolbarModel.get('activeTab') === null) { Chris@0: Drupal.toolbar.models.toolbarModel.set({ Chris@0: activeTab: $('.toolbar-bar .toolbar-tab:not(.home-toolbar-tab) a').get(0) Chris@0: }); Chris@0: } Chris@17: Chris@17: $(window).on({ Chris@17: 'dialog:aftercreate': function dialogAftercreate(event, dialog, $element, settings) { Chris@17: var $toolbar = $('#toolbar-bar'); Chris@17: $toolbar.css('margin-top', '0'); Chris@17: Chris@17: if (settings.drupalOffCanvasPosition === 'top') { Chris@17: var height = Drupal.offCanvas.getContainer($element).outerHeight(); Chris@17: $toolbar.css('margin-top', height + 'px'); Chris@17: Chris@17: $element.on('dialogContentResize.off-canvas', function () { Chris@17: var newHeight = Drupal.offCanvas.getContainer($element).outerHeight(); Chris@17: $toolbar.css('margin-top', newHeight + 'px'); Chris@17: }); Chris@17: } Chris@17: }, Chris@17: 'dialog:beforeclose': function dialogBeforeclose() { Chris@17: $('#toolbar-bar').css('margin-top', '0'); Chris@17: } Chris@17: }); Chris@0: }); Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.toolbar = { Chris@0: views: {}, Chris@0: Chris@0: models: {}, Chris@0: Chris@0: mql: {}, Chris@0: Chris@0: setSubtrees: new $.Deferred(), Chris@0: Chris@0: mediaQueryChangeHandler: function mediaQueryChangeHandler(model, label, mql) { Chris@0: switch (label) { Chris@0: case 'toolbar.narrow': Chris@0: model.set({ Chris@0: isOriented: mql.matches, Chris@0: isTrayToggleVisible: false Chris@0: }); Chris@0: Chris@0: if (!mql.matches || !model.get('orientation')) { Chris@0: model.set({ orientation: 'vertical' }, { validate: true }); Chris@0: } Chris@0: break; Chris@0: Chris@0: case 'toolbar.standard': Chris@0: model.set({ Chris@0: isFixed: mql.matches Chris@0: }); Chris@0: break; Chris@0: Chris@0: case 'toolbar.wide': Chris@0: model.set({ Chris@0: orientation: mql.matches && !model.get('locked') ? 'horizontal' : 'vertical' Chris@0: }, { validate: true }); Chris@0: Chris@0: model.set({ Chris@0: isTrayToggleVisible: mql.matches Chris@0: }); Chris@0: break; Chris@0: Chris@0: default: Chris@0: break; Chris@0: } Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.theme.toolbarOrientationToggle = function () { Chris@0: return '
' + '' + '
'; Chris@0: }; Chris@0: Chris@0: Drupal.AjaxCommands.prototype.setToolbarSubtrees = function (ajax, response, status) { Chris@0: Drupal.toolbar.setSubtrees.resolve(response.subtrees); Chris@0: }; Chris@0: })(jQuery, Drupal, drupalSettings);