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@0: var model = Drupal.toolbar.models.toolbarModel = 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@0: for (var label in options.breakpoints) { Chris@0: if (options.breakpoints.hasOwnProperty(label)) { Chris@0: var mq = options.breakpoints[label]; Chris@0: var mql = Drupal.toolbar.mql[label] = window.matchMedia(mq); Chris@0: Chris@0: mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label)); Chris@0: Chris@0: Drupal.toolbar.mediaQueryChangeHandler.call(null, model, label, mql); Chris@0: } Chris@0: } 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@0: var menuModel = Drupal.toolbar.models.menuModel = new Drupal.toolbar.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@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);