annotate core/modules/toolbar/js/toolbar.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 /**
Chris@0 2 * DO NOT EDIT THIS FILE.
Chris@0 3 * See the following change record for more information,
Chris@0 4 * https://www.drupal.org/node/2815083
Chris@0 5 * @preserve
Chris@0 6 **/
Chris@0 7
Chris@0 8 (function ($, Drupal, drupalSettings) {
Chris@0 9 var options = $.extend({
Chris@0 10 breakpoints: {
Chris@0 11 'toolbar.narrow': '',
Chris@0 12 'toolbar.standard': '',
Chris@0 13 'toolbar.wide': ''
Chris@0 14 }
Chris@0 15 }, drupalSettings.toolbar, {
Chris@0 16 strings: {
Chris@0 17 horizontal: Drupal.t('Horizontal orientation'),
Chris@0 18 vertical: Drupal.t('Vertical orientation')
Chris@0 19 }
Chris@0 20 });
Chris@0 21
Chris@0 22 Drupal.behaviors.toolbar = {
Chris@0 23 attach: function attach(context) {
Chris@0 24 if (!window.matchMedia('only screen').matches) {
Chris@0 25 return;
Chris@0 26 }
Chris@0 27
Chris@0 28 $(context).find('#toolbar-administration').once('toolbar').each(function () {
Chris@14 29 var model = new Drupal.toolbar.ToolbarModel({
Chris@0 30 locked: JSON.parse(localStorage.getItem('Drupal.toolbar.trayVerticalLocked')),
Chris@0 31 activeTab: document.getElementById(JSON.parse(localStorage.getItem('Drupal.toolbar.activeTabID'))),
Chris@0 32 height: $('#toolbar-administration').outerHeight()
Chris@0 33 });
Chris@0 34
Chris@14 35 Drupal.toolbar.models.toolbarModel = model;
Chris@0 36
Chris@14 37 Object.keys(options.breakpoints).forEach(function (label) {
Chris@14 38 var mq = options.breakpoints[label];
Chris@14 39 var mql = window.matchMedia(mq);
Chris@14 40 Drupal.toolbar.mql[label] = mql;
Chris@0 41
Chris@14 42 mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label));
Chris@14 43
Chris@14 44 Drupal.toolbar.mediaQueryChangeHandler.call(null, model, label, mql);
Chris@14 45 });
Chris@0 46
Chris@0 47 Drupal.toolbar.views.toolbarVisualView = new Drupal.toolbar.ToolbarVisualView({
Chris@0 48 el: this,
Chris@0 49 model: model,
Chris@0 50 strings: options.strings
Chris@0 51 });
Chris@0 52 Drupal.toolbar.views.toolbarAuralView = new Drupal.toolbar.ToolbarAuralView({
Chris@0 53 el: this,
Chris@0 54 model: model,
Chris@0 55 strings: options.strings
Chris@0 56 });
Chris@0 57 Drupal.toolbar.views.bodyVisualView = new Drupal.toolbar.BodyVisualView({
Chris@0 58 el: this,
Chris@0 59 model: model
Chris@0 60 });
Chris@0 61
Chris@0 62 model.trigger('change:isFixed', model, model.get('isFixed'));
Chris@0 63 model.trigger('change:activeTray', model, model.get('activeTray'));
Chris@0 64
Chris@14 65 var menuModel = new Drupal.toolbar.MenuModel();
Chris@14 66 Drupal.toolbar.models.menuModel = menuModel;
Chris@0 67 Drupal.toolbar.views.menuVisualView = new Drupal.toolbar.MenuVisualView({
Chris@0 68 el: $(this).find('.toolbar-menu-administration').get(0),
Chris@0 69 model: menuModel,
Chris@0 70 strings: options.strings
Chris@0 71 });
Chris@0 72
Chris@0 73 Drupal.toolbar.setSubtrees.done(function (subtrees) {
Chris@0 74 menuModel.set('subtrees', subtrees);
Chris@0 75 var theme = drupalSettings.ajaxPageState.theme;
Chris@0 76 localStorage.setItem('Drupal.toolbar.subtrees.' + theme, JSON.stringify(subtrees));
Chris@0 77
Chris@0 78 model.set('areSubtreesLoaded', true);
Chris@0 79 });
Chris@0 80
Chris@0 81 Drupal.toolbar.views.toolbarVisualView.loadSubtrees();
Chris@0 82
Chris@0 83 $(document).on('drupalViewportOffsetChange.toolbar', function (event, offsets) {
Chris@0 84 model.set('offsets', offsets);
Chris@0 85 });
Chris@0 86
Chris@0 87 model.on('change:orientation', function (model, orientation) {
Chris@0 88 $(document).trigger('drupalToolbarOrientationChange', orientation);
Chris@0 89 }).on('change:activeTab', function (model, tab) {
Chris@0 90 $(document).trigger('drupalToolbarTabChange', tab);
Chris@0 91 }).on('change:activeTray', function (model, tray) {
Chris@0 92 $(document).trigger('drupalToolbarTrayChange', tray);
Chris@0 93 });
Chris@0 94
Chris@0 95 if (Drupal.toolbar.models.toolbarModel.get('orientation') === 'horizontal' && Drupal.toolbar.models.toolbarModel.get('activeTab') === null) {
Chris@0 96 Drupal.toolbar.models.toolbarModel.set({
Chris@0 97 activeTab: $('.toolbar-bar .toolbar-tab:not(.home-toolbar-tab) a').get(0)
Chris@0 98 });
Chris@0 99 }
Chris@17 100
Chris@17 101 $(window).on({
Chris@17 102 'dialog:aftercreate': function dialogAftercreate(event, dialog, $element, settings) {
Chris@17 103 var $toolbar = $('#toolbar-bar');
Chris@17 104 $toolbar.css('margin-top', '0');
Chris@17 105
Chris@17 106 if (settings.drupalOffCanvasPosition === 'top') {
Chris@17 107 var height = Drupal.offCanvas.getContainer($element).outerHeight();
Chris@17 108 $toolbar.css('margin-top', height + 'px');
Chris@17 109
Chris@17 110 $element.on('dialogContentResize.off-canvas', function () {
Chris@17 111 var newHeight = Drupal.offCanvas.getContainer($element).outerHeight();
Chris@17 112 $toolbar.css('margin-top', newHeight + 'px');
Chris@17 113 });
Chris@17 114 }
Chris@17 115 },
Chris@17 116 'dialog:beforeclose': function dialogBeforeclose() {
Chris@17 117 $('#toolbar-bar').css('margin-top', '0');
Chris@17 118 }
Chris@17 119 });
Chris@0 120 });
Chris@0 121 }
Chris@0 122 };
Chris@0 123
Chris@0 124 Drupal.toolbar = {
Chris@0 125 views: {},
Chris@0 126
Chris@0 127 models: {},
Chris@0 128
Chris@0 129 mql: {},
Chris@0 130
Chris@0 131 setSubtrees: new $.Deferred(),
Chris@0 132
Chris@0 133 mediaQueryChangeHandler: function mediaQueryChangeHandler(model, label, mql) {
Chris@0 134 switch (label) {
Chris@0 135 case 'toolbar.narrow':
Chris@0 136 model.set({
Chris@0 137 isOriented: mql.matches,
Chris@0 138 isTrayToggleVisible: false
Chris@0 139 });
Chris@0 140
Chris@0 141 if (!mql.matches || !model.get('orientation')) {
Chris@0 142 model.set({ orientation: 'vertical' }, { validate: true });
Chris@0 143 }
Chris@0 144 break;
Chris@0 145
Chris@0 146 case 'toolbar.standard':
Chris@0 147 model.set({
Chris@0 148 isFixed: mql.matches
Chris@0 149 });
Chris@0 150 break;
Chris@0 151
Chris@0 152 case 'toolbar.wide':
Chris@0 153 model.set({
Chris@0 154 orientation: mql.matches && !model.get('locked') ? 'horizontal' : 'vertical'
Chris@0 155 }, { validate: true });
Chris@0 156
Chris@0 157 model.set({
Chris@0 158 isTrayToggleVisible: mql.matches
Chris@0 159 });
Chris@0 160 break;
Chris@0 161
Chris@0 162 default:
Chris@0 163 break;
Chris@0 164 }
Chris@0 165 }
Chris@0 166 };
Chris@0 167
Chris@0 168 Drupal.theme.toolbarOrientationToggle = function () {
Chris@0 169 return '<div class="toolbar-toggle-orientation"><div class="toolbar-lining">' + '<button class="toolbar-icon" type="button"></button>' + '</div></div>';
Chris@0 170 };
Chris@0 171
Chris@0 172 Drupal.AjaxCommands.prototype.setToolbarSubtrees = function (ajax, response, status) {
Chris@0 173 Drupal.toolbar.setSubtrees.resolve(response.subtrees);
Chris@0 174 };
Chris@0 175 })(jQuery, Drupal, drupalSettings);