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