175 lines
5.8 KiB
JavaScript
175 lines
5.8 KiB
JavaScript
/**
|
|
* DO NOT EDIT THIS FILE.
|
|
* See the following change record for more information,
|
|
* https://www.drupal.org/node/2815083
|
|
* @preserve
|
|
**/
|
|
|
|
(function ($, Drupal, drupalSettings) {
|
|
var 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: function attach(context) {
|
|
if (!window.matchMedia('only screen').matches) {
|
|
return;
|
|
}
|
|
|
|
$(context).find('#toolbar-administration').once('toolbar').each(function () {
|
|
var 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(function (label) {
|
|
var mq = options.breakpoints[label];
|
|
var 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: this,
|
|
model: model,
|
|
strings: options.strings
|
|
});
|
|
Drupal.toolbar.views.toolbarAuralView = new Drupal.toolbar.ToolbarAuralView({
|
|
el: this,
|
|
model: model,
|
|
strings: options.strings
|
|
});
|
|
Drupal.toolbar.views.bodyVisualView = new Drupal.toolbar.BodyVisualView({
|
|
el: this,
|
|
model: model
|
|
});
|
|
|
|
model.trigger('change:isFixed', model, model.get('isFixed'));
|
|
model.trigger('change:activeTray', model, model.get('activeTray'));
|
|
|
|
var menuModel = new Drupal.toolbar.MenuModel();
|
|
Drupal.toolbar.models.menuModel = menuModel;
|
|
Drupal.toolbar.views.menuVisualView = new Drupal.toolbar.MenuVisualView({
|
|
el: $(this).find('.toolbar-menu-administration').get(0),
|
|
model: menuModel,
|
|
strings: options.strings
|
|
});
|
|
|
|
Drupal.toolbar.setSubtrees.done(function (subtrees) {
|
|
menuModel.set('subtrees', subtrees);
|
|
var 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', function (event, offsets) {
|
|
model.set('offsets', offsets);
|
|
});
|
|
|
|
model.on('change:orientation', function (model, orientation) {
|
|
$(document).trigger('drupalToolbarOrientationChange', orientation);
|
|
}).on('change:activeTab', function (model, tab) {
|
|
$(document).trigger('drupalToolbarTabChange', tab);
|
|
}).on('change:activeTray', function (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': function dialogAftercreate(event, dialog, $element, settings) {
|
|
var $toolbar = $('#toolbar-bar');
|
|
$toolbar.css('margin-top', '0');
|
|
|
|
if (settings.drupalOffCanvasPosition === 'top') {
|
|
var height = Drupal.offCanvas.getContainer($element).outerHeight();
|
|
$toolbar.css('margin-top', height + 'px');
|
|
|
|
$element.on('dialogContentResize.off-canvas', function () {
|
|
var newHeight = Drupal.offCanvas.getContainer($element).outerHeight();
|
|
$toolbar.css('margin-top', newHeight + 'px');
|
|
});
|
|
}
|
|
},
|
|
'dialog:beforeclose': function dialogBeforeclose() {
|
|
$('#toolbar-bar').css('margin-top', '0');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
Drupal.toolbar = {
|
|
views: {},
|
|
|
|
models: {},
|
|
|
|
mql: {},
|
|
|
|
setSubtrees: new $.Deferred(),
|
|
|
|
mediaQueryChangeHandler: function 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 '<div class="toolbar-toggle-orientation"><div class="toolbar-lining">' + '<button class="toolbar-icon" type="button"></button>' + '</div></div>';
|
|
};
|
|
|
|
Drupal.AjaxCommands.prototype.setToolbarSubtrees = function (ajax, response, status) {
|
|
Drupal.toolbar.setSubtrees.resolve(response.subtrees);
|
|
};
|
|
})(jQuery, Drupal, drupalSettings); |