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@0
|
29 var model = Drupal.toolbar.models.toolbarModel = 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@0
|
35 for (var label in options.breakpoints) {
|
Chris@0
|
36 if (options.breakpoints.hasOwnProperty(label)) {
|
Chris@0
|
37 var mq = options.breakpoints[label];
|
Chris@0
|
38 var mql = Drupal.toolbar.mql[label] = window.matchMedia(mq);
|
Chris@0
|
39
|
Chris@0
|
40 mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label));
|
Chris@0
|
41
|
Chris@0
|
42 Drupal.toolbar.mediaQueryChangeHandler.call(null, model, label, mql);
|
Chris@0
|
43 }
|
Chris@0
|
44 }
|
Chris@0
|
45
|
Chris@0
|
46 Drupal.toolbar.views.toolbarVisualView = new Drupal.toolbar.ToolbarVisualView({
|
Chris@0
|
47 el: this,
|
Chris@0
|
48 model: model,
|
Chris@0
|
49 strings: options.strings
|
Chris@0
|
50 });
|
Chris@0
|
51 Drupal.toolbar.views.toolbarAuralView = new Drupal.toolbar.ToolbarAuralView({
|
Chris@0
|
52 el: this,
|
Chris@0
|
53 model: model,
|
Chris@0
|
54 strings: options.strings
|
Chris@0
|
55 });
|
Chris@0
|
56 Drupal.toolbar.views.bodyVisualView = new Drupal.toolbar.BodyVisualView({
|
Chris@0
|
57 el: this,
|
Chris@0
|
58 model: model
|
Chris@0
|
59 });
|
Chris@0
|
60
|
Chris@0
|
61 model.trigger('change:isFixed', model, model.get('isFixed'));
|
Chris@0
|
62 model.trigger('change:activeTray', model, model.get('activeTray'));
|
Chris@0
|
63
|
Chris@0
|
64 var menuModel = Drupal.toolbar.models.menuModel = new Drupal.toolbar.MenuModel();
|
Chris@0
|
65 Drupal.toolbar.views.menuVisualView = new Drupal.toolbar.MenuVisualView({
|
Chris@0
|
66 el: $(this).find('.toolbar-menu-administration').get(0),
|
Chris@0
|
67 model: menuModel,
|
Chris@0
|
68 strings: options.strings
|
Chris@0
|
69 });
|
Chris@0
|
70
|
Chris@0
|
71 Drupal.toolbar.setSubtrees.done(function (subtrees) {
|
Chris@0
|
72 menuModel.set('subtrees', subtrees);
|
Chris@0
|
73 var theme = drupalSettings.ajaxPageState.theme;
|
Chris@0
|
74 localStorage.setItem('Drupal.toolbar.subtrees.' + theme, JSON.stringify(subtrees));
|
Chris@0
|
75
|
Chris@0
|
76 model.set('areSubtreesLoaded', true);
|
Chris@0
|
77 });
|
Chris@0
|
78
|
Chris@0
|
79 Drupal.toolbar.views.toolbarVisualView.loadSubtrees();
|
Chris@0
|
80
|
Chris@0
|
81 $(document).on('drupalViewportOffsetChange.toolbar', function (event, offsets) {
|
Chris@0
|
82 model.set('offsets', offsets);
|
Chris@0
|
83 });
|
Chris@0
|
84
|
Chris@0
|
85 model.on('change:orientation', function (model, orientation) {
|
Chris@0
|
86 $(document).trigger('drupalToolbarOrientationChange', orientation);
|
Chris@0
|
87 }).on('change:activeTab', function (model, tab) {
|
Chris@0
|
88 $(document).trigger('drupalToolbarTabChange', tab);
|
Chris@0
|
89 }).on('change:activeTray', function (model, tray) {
|
Chris@0
|
90 $(document).trigger('drupalToolbarTrayChange', tray);
|
Chris@0
|
91 });
|
Chris@0
|
92
|
Chris@0
|
93 if (Drupal.toolbar.models.toolbarModel.get('orientation') === 'horizontal' && Drupal.toolbar.models.toolbarModel.get('activeTab') === null) {
|
Chris@0
|
94 Drupal.toolbar.models.toolbarModel.set({
|
Chris@0
|
95 activeTab: $('.toolbar-bar .toolbar-tab:not(.home-toolbar-tab) a').get(0)
|
Chris@0
|
96 });
|
Chris@0
|
97 }
|
Chris@0
|
98 });
|
Chris@0
|
99 }
|
Chris@0
|
100 };
|
Chris@0
|
101
|
Chris@0
|
102 Drupal.toolbar = {
|
Chris@0
|
103 views: {},
|
Chris@0
|
104
|
Chris@0
|
105 models: {},
|
Chris@0
|
106
|
Chris@0
|
107 mql: {},
|
Chris@0
|
108
|
Chris@0
|
109 setSubtrees: new $.Deferred(),
|
Chris@0
|
110
|
Chris@0
|
111 mediaQueryChangeHandler: function mediaQueryChangeHandler(model, label, mql) {
|
Chris@0
|
112 switch (label) {
|
Chris@0
|
113 case 'toolbar.narrow':
|
Chris@0
|
114 model.set({
|
Chris@0
|
115 isOriented: mql.matches,
|
Chris@0
|
116 isTrayToggleVisible: false
|
Chris@0
|
117 });
|
Chris@0
|
118
|
Chris@0
|
119 if (!mql.matches || !model.get('orientation')) {
|
Chris@0
|
120 model.set({ orientation: 'vertical' }, { validate: true });
|
Chris@0
|
121 }
|
Chris@0
|
122 break;
|
Chris@0
|
123
|
Chris@0
|
124 case 'toolbar.standard':
|
Chris@0
|
125 model.set({
|
Chris@0
|
126 isFixed: mql.matches
|
Chris@0
|
127 });
|
Chris@0
|
128 break;
|
Chris@0
|
129
|
Chris@0
|
130 case 'toolbar.wide':
|
Chris@0
|
131 model.set({
|
Chris@0
|
132 orientation: mql.matches && !model.get('locked') ? 'horizontal' : 'vertical'
|
Chris@0
|
133 }, { validate: true });
|
Chris@0
|
134
|
Chris@0
|
135 model.set({
|
Chris@0
|
136 isTrayToggleVisible: mql.matches
|
Chris@0
|
137 });
|
Chris@0
|
138 break;
|
Chris@0
|
139
|
Chris@0
|
140 default:
|
Chris@0
|
141 break;
|
Chris@0
|
142 }
|
Chris@0
|
143 }
|
Chris@0
|
144 };
|
Chris@0
|
145
|
Chris@0
|
146 Drupal.theme.toolbarOrientationToggle = function () {
|
Chris@0
|
147 return '<div class="toolbar-toggle-orientation"><div class="toolbar-lining">' + '<button class="toolbar-icon" type="button"></button>' + '</div></div>';
|
Chris@0
|
148 };
|
Chris@0
|
149
|
Chris@0
|
150 Drupal.AjaxCommands.prototype.setToolbarSubtrees = function (ajax, response, status) {
|
Chris@0
|
151 Drupal.toolbar.setSubtrees.resolve(response.subtrees);
|
Chris@0
|
152 };
|
Chris@0
|
153 })(jQuery, Drupal, drupalSettings); |