123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /**
- * 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);
|