/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function ($, Drupal) { var blockConfigureSelector = '[data-settings-tray-edit]'; var toggleEditSelector = '[data-drupal-settingstray="toggle"]'; var itemsToToggleSelector = '[data-off-canvas-main-canvas], #toolbar-bar, [data-drupal-settingstray="editable"] a, [data-drupal-settingstray="editable"] button'; var contextualItemsSelector = '[data-contextual-id] a, [data-contextual-id] button'; var quickEditItemSelector = '[data-quickedit-entity-id]'; function preventClick(event) { if ($(event.target).closest('.contextual-links').length) { return; } event.preventDefault(); } function closeToolbarTrays() { $(Drupal.toolbar.models.toolbarModel.get('activeTab')).trigger('click'); } function disableQuickEdit() { $('.quickedit-toolbar button.action-cancel').trigger('click'); } function closeOffCanvas() { $('.ui-dialog-off-canvas .ui-dialog-titlebar-close').trigger('click'); } function getItemsToToggle() { return $(itemsToToggleSelector).not(contextualItemsSelector); } function setEditModeState(editMode) { if (!document.querySelector('[data-off-canvas-main-canvas]')) { throw new Error('data-off-canvas-main-canvas is missing from settings-tray-page-wrapper.html.twig'); } editMode = !!editMode; var $editButton = $(toggleEditSelector); var $editables = void 0; if (editMode) { $editButton.text(Drupal.t('Editing')); closeToolbarTrays(); $editables = $('[data-drupal-settingstray="editable"]').once('settingstray'); if ($editables.length) { document.querySelector('[data-off-canvas-main-canvas]').addEventListener('click', preventClick, true); $editables.not(contextualItemsSelector).on('click.settingstray', function (e) { if ($(e.target).closest('.contextual').length || !localStorage.getItem('Drupal.contextualToolbar.isViewing')) { return; } $(e.currentTarget).find(blockConfigureSelector).trigger('click'); disableQuickEdit(); }); $(quickEditItemSelector).not(contextualItemsSelector).on('click.settingstray', function (e) { if (!$(e.target).parent().hasClass('contextual') || $(e.target).parent().hasClass('quickedit')) { closeOffCanvas(); } if ($(e.target).parent().hasClass('contextual') || $(e.target).parent().hasClass('quickedit')) { return; } $(e.currentTarget).find('li.quickedit a').trigger('click'); }); } } else { $editables = $('[data-drupal-settingstray="editable"]').removeOnce('settingstray'); if ($editables.length) { document.querySelector('[data-off-canvas-main-canvas]').removeEventListener('click', preventClick, true); $editables.off('.settingstray'); $(quickEditItemSelector).off('.settingstray'); } $editButton.text(Drupal.t('Edit')); closeOffCanvas(); disableQuickEdit(); } getItemsToToggle().toggleClass('js-settings-tray-edit-mode', editMode); $('.edit-mode-inactive').toggleClass('visually-hidden', editMode); } function isInEditMode() { return $('#toolbar-bar').hasClass('js-settings-tray-edit-mode'); } function toggleEditMode() { setEditModeState(!isInEditMode()); } function prepareAjaxLinks() { Drupal.ajax.instances.filter(function (instance) { return instance && $(instance.element).attr('data-dialog-renderer') === 'off_canvas'; }).forEach(function (instance) { if (!instance.options.data.hasOwnProperty('dialogOptions')) { instance.options.data.dialogOptions = {}; } instance.options.data.dialogOptions.settingsTrayActiveEditableId = $(instance.element).parents('.settings-tray-editable').attr('id'); instance.progress = { type: 'fullscreen' }; }); } $(document).on('drupalContextualLinkAdded', function (event, data) { prepareAjaxLinks(); $('body').once('settings_tray.edit_mode_init').each(function () { var editMode = localStorage.getItem('Drupal.contextualToolbar.isViewing') === 'false'; if (editMode) { setEditModeState(true); } }); data.$el.find(blockConfigureSelector).on('click.settingstray', function () { if (!isInEditMode()) { $(toggleEditSelector).trigger('click').trigger('click.settings_tray'); } disableQuickEdit(); }); }); $(document).on('keyup.settingstray', function (e) { if (isInEditMode() && e.keyCode === 27) { Drupal.announce(Drupal.t('Exited edit mode.')); toggleEditMode(); } }); Drupal.behaviors.toggleEditMode = { attach: function attach() { $(toggleEditSelector).once('settingstray').on('click.settingstray', toggleEditMode); } }; $(window).on({ 'dialog:beforecreate': function dialogBeforecreate(event, dialog, $element, settings) { if ($element.is('#drupal-off-canvas')) { $('body .settings-tray-active-editable').removeClass('settings-tray-active-editable'); var $activeElement = $('#' + settings.settingsTrayActiveEditableId); if ($activeElement.length) { $activeElement.addClass('settings-tray-active-editable'); } } }, 'dialog:beforeclose': function dialogBeforeclose(event, dialog, $element) { if ($element.is('#drupal-off-canvas')) { $('body .settings-tray-active-editable').removeClass('settings-tray-active-editable'); } } }); })(jQuery, Drupal);