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) {
|
Chris@0
|
9 var blockConfigureSelector = '[data-settings-tray-edit]';
|
Chris@0
|
10 var toggleEditSelector = '[data-drupal-settingstray="toggle"]';
|
Chris@0
|
11 var itemsToToggleSelector = '[data-off-canvas-main-canvas], #toolbar-bar, [data-drupal-settingstray="editable"] a, [data-drupal-settingstray="editable"] button';
|
Chris@0
|
12 var contextualItemsSelector = '[data-contextual-id] a, [data-contextual-id] button';
|
Chris@0
|
13 var quickEditItemSelector = '[data-quickedit-entity-id]';
|
Chris@0
|
14
|
Chris@0
|
15 function preventClick(event) {
|
Chris@0
|
16 if ($(event.target).closest('.contextual-links').length) {
|
Chris@0
|
17 return;
|
Chris@0
|
18 }
|
Chris@0
|
19 event.preventDefault();
|
Chris@0
|
20 }
|
Chris@0
|
21
|
Chris@0
|
22 function closeToolbarTrays() {
|
Chris@0
|
23 $(Drupal.toolbar.models.toolbarModel.get('activeTab')).trigger('click');
|
Chris@0
|
24 }
|
Chris@0
|
25
|
Chris@0
|
26 function disableQuickEdit() {
|
Chris@0
|
27 $('.quickedit-toolbar button.action-cancel').trigger('click');
|
Chris@0
|
28 }
|
Chris@0
|
29
|
Chris@0
|
30 function closeOffCanvas() {
|
Chris@0
|
31 $('.ui-dialog-off-canvas .ui-dialog-titlebar-close').trigger('click');
|
Chris@0
|
32 }
|
Chris@0
|
33
|
Chris@0
|
34 function getItemsToToggle() {
|
Chris@0
|
35 return $(itemsToToggleSelector).not(contextualItemsSelector);
|
Chris@0
|
36 }
|
Chris@0
|
37
|
Chris@0
|
38 function setEditModeState(editMode) {
|
Chris@0
|
39 if (!document.querySelector('[data-off-canvas-main-canvas]')) {
|
Chris@0
|
40 throw new Error('data-off-canvas-main-canvas is missing from settings-tray-page-wrapper.html.twig');
|
Chris@0
|
41 }
|
Chris@0
|
42 editMode = !!editMode;
|
Chris@0
|
43 var $editButton = $(toggleEditSelector);
|
Chris@0
|
44 var $editables = void 0;
|
Chris@0
|
45
|
Chris@0
|
46 if (editMode) {
|
Chris@0
|
47 $editButton.text(Drupal.t('Editing'));
|
Chris@0
|
48 closeToolbarTrays();
|
Chris@0
|
49
|
Chris@0
|
50 $editables = $('[data-drupal-settingstray="editable"]').once('settingstray');
|
Chris@0
|
51 if ($editables.length) {
|
Chris@0
|
52 document.querySelector('[data-off-canvas-main-canvas]').addEventListener('click', preventClick, true);
|
Chris@0
|
53
|
Chris@0
|
54 $editables.not(contextualItemsSelector).on('click.settingstray', function (e) {
|
Chris@0
|
55 if ($(e.target).closest('.contextual').length || !localStorage.getItem('Drupal.contextualToolbar.isViewing')) {
|
Chris@0
|
56 return;
|
Chris@0
|
57 }
|
Chris@0
|
58 $(e.currentTarget).find(blockConfigureSelector).trigger('click');
|
Chris@0
|
59 disableQuickEdit();
|
Chris@0
|
60 });
|
Chris@0
|
61 $(quickEditItemSelector).not(contextualItemsSelector).on('click.settingstray', function (e) {
|
Chris@0
|
62 if (!$(e.target).parent().hasClass('contextual') || $(e.target).parent().hasClass('quickedit')) {
|
Chris@0
|
63 closeOffCanvas();
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 if ($(e.target).parent().hasClass('contextual') || $(e.target).parent().hasClass('quickedit')) {
|
Chris@0
|
67 return;
|
Chris@0
|
68 }
|
Chris@0
|
69 $(e.currentTarget).find('li.quickedit a').trigger('click');
|
Chris@0
|
70 });
|
Chris@0
|
71 }
|
Chris@0
|
72 } else {
|
Chris@0
|
73 $editables = $('[data-drupal-settingstray="editable"]').removeOnce('settingstray');
|
Chris@0
|
74 if ($editables.length) {
|
Chris@0
|
75 document.querySelector('[data-off-canvas-main-canvas]').removeEventListener('click', preventClick, true);
|
Chris@0
|
76 $editables.off('.settingstray');
|
Chris@0
|
77 $(quickEditItemSelector).off('.settingstray');
|
Chris@0
|
78 }
|
Chris@0
|
79
|
Chris@0
|
80 $editButton.text(Drupal.t('Edit'));
|
Chris@0
|
81 closeOffCanvas();
|
Chris@0
|
82 disableQuickEdit();
|
Chris@0
|
83 }
|
Chris@0
|
84 getItemsToToggle().toggleClass('js-settings-tray-edit-mode', editMode);
|
Chris@0
|
85 $('.edit-mode-inactive').toggleClass('visually-hidden', editMode);
|
Chris@0
|
86 }
|
Chris@0
|
87
|
Chris@0
|
88 function isInEditMode() {
|
Chris@0
|
89 return $('#toolbar-bar').hasClass('js-settings-tray-edit-mode');
|
Chris@0
|
90 }
|
Chris@0
|
91
|
Chris@0
|
92 function toggleEditMode() {
|
Chris@0
|
93 setEditModeState(!isInEditMode());
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@14
|
96 function prepareAjaxLinks() {
|
Chris@14
|
97 Drupal.ajax.instances.filter(function (instance) {
|
Chris@14
|
98 return instance && $(instance.element).attr('data-dialog-renderer') === 'off_canvas';
|
Chris@14
|
99 }).forEach(function (instance) {
|
Chris@14
|
100 if (!instance.options.data.hasOwnProperty('dialogOptions')) {
|
Chris@14
|
101 instance.options.data.dialogOptions = {};
|
Chris@14
|
102 }
|
Chris@14
|
103 instance.options.data.dialogOptions.settingsTrayActiveEditableId = $(instance.element).parents('.settings-tray-editable').attr('id');
|
Chris@14
|
104 instance.progress = { type: 'fullscreen' };
|
Chris@14
|
105 });
|
Chris@14
|
106 }
|
Chris@14
|
107
|
Chris@0
|
108 $(document).on('drupalContextualLinkAdded', function (event, data) {
|
Chris@14
|
109 prepareAjaxLinks();
|
Chris@14
|
110
|
Chris@0
|
111 $('body').once('settings_tray.edit_mode_init').each(function () {
|
Chris@0
|
112 var editMode = localStorage.getItem('Drupal.contextualToolbar.isViewing') === 'false';
|
Chris@0
|
113 if (editMode) {
|
Chris@0
|
114 setEditModeState(true);
|
Chris@0
|
115 }
|
Chris@0
|
116 });
|
Chris@0
|
117
|
Chris@0
|
118 data.$el.find(blockConfigureSelector).on('click.settingstray', function () {
|
Chris@0
|
119 if (!isInEditMode()) {
|
Chris@0
|
120 $(toggleEditSelector).trigger('click').trigger('click.settings_tray');
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 disableQuickEdit();
|
Chris@0
|
124 });
|
Chris@0
|
125 });
|
Chris@0
|
126
|
Chris@0
|
127 $(document).on('keyup.settingstray', function (e) {
|
Chris@0
|
128 if (isInEditMode() && e.keyCode === 27) {
|
Chris@0
|
129 Drupal.announce(Drupal.t('Exited edit mode.'));
|
Chris@0
|
130 toggleEditMode();
|
Chris@0
|
131 }
|
Chris@0
|
132 });
|
Chris@0
|
133
|
Chris@0
|
134 Drupal.behaviors.toggleEditMode = {
|
Chris@0
|
135 attach: function attach() {
|
Chris@0
|
136 $(toggleEditSelector).once('settingstray').on('click.settingstray', toggleEditMode);
|
Chris@0
|
137 }
|
Chris@0
|
138 };
|
Chris@0
|
139
|
Chris@0
|
140 $(window).on({
|
Chris@0
|
141 'dialog:beforecreate': function dialogBeforecreate(event, dialog, $element, settings) {
|
Chris@0
|
142 if ($element.is('#drupal-off-canvas')) {
|
Chris@0
|
143 $('body .settings-tray-active-editable').removeClass('settings-tray-active-editable');
|
Chris@0
|
144 var $activeElement = $('#' + settings.settingsTrayActiveEditableId);
|
Chris@0
|
145 if ($activeElement.length) {
|
Chris@0
|
146 $activeElement.addClass('settings-tray-active-editable');
|
Chris@0
|
147 }
|
Chris@0
|
148 }
|
Chris@0
|
149 },
|
Chris@0
|
150 'dialog:beforeclose': function dialogBeforeclose(event, dialog, $element) {
|
Chris@0
|
151 if ($element.is('#drupal-off-canvas')) {
|
Chris@0
|
152 $('body .settings-tray-active-editable').removeClass('settings-tray-active-editable');
|
Chris@0
|
153 }
|
Chris@0
|
154 }
|
Chris@0
|
155 });
|
Chris@0
|
156 })(jQuery, Drupal); |