annotate core/misc/dialog/dialog.ajax.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
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) {
Chris@0 9 Drupal.behaviors.dialog = {
Chris@0 10 attach: function attach(context, settings) {
Chris@0 11 var $context = $(context);
Chris@0 12
Chris@0 13 if (!$('#drupal-modal').length) {
Chris@0 14 $('<div id="drupal-modal" class="ui-front"/>').hide().appendTo('body');
Chris@0 15 }
Chris@0 16
Chris@0 17 var $dialog = $context.closest('.ui-dialog-content');
Chris@0 18 if ($dialog.length) {
Chris@0 19 if ($dialog.dialog('option', 'drupalAutoButtons')) {
Chris@0 20 $dialog.trigger('dialogButtonsChange');
Chris@0 21 }
Chris@0 22
Chris@0 23 $dialog.dialog('widget').trigger('focus');
Chris@0 24 }
Chris@0 25
Chris@0 26 var originalClose = settings.dialog.close;
Chris@0 27
Chris@0 28 settings.dialog.close = function (event) {
Chris@14 29 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
Chris@14 30 args[_key - 1] = arguments[_key];
Chris@14 31 }
Chris@14 32
Chris@14 33 originalClose.apply(settings.dialog, [event].concat(args));
Chris@0 34 $(event.target).remove();
Chris@0 35 };
Chris@0 36 },
Chris@0 37 prepareDialogButtons: function prepareDialogButtons($dialog) {
Chris@0 38 var buttons = [];
Chris@0 39 var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions a.button');
Chris@0 40 $buttons.each(function () {
Chris@0 41 var $originalButton = $(this).css({
Chris@0 42 display: 'block',
Chris@0 43 width: 0,
Chris@0 44 height: 0,
Chris@0 45 padding: 0,
Chris@0 46 border: 0,
Chris@0 47 overflow: 'hidden'
Chris@0 48 });
Chris@0 49 buttons.push({
Chris@0 50 text: $originalButton.html() || $originalButton.attr('value'),
Chris@0 51 class: $originalButton.attr('class'),
Chris@0 52 click: function click(e) {
Chris@0 53 if ($originalButton.is('a')) {
Chris@0 54 $originalButton[0].click();
Chris@0 55 } else {
Chris@0 56 $originalButton.trigger('mousedown').trigger('mouseup').trigger('click');
Chris@0 57 e.preventDefault();
Chris@0 58 }
Chris@0 59 }
Chris@0 60 });
Chris@0 61 });
Chris@0 62 return buttons;
Chris@0 63 }
Chris@0 64 };
Chris@0 65
Chris@0 66 Drupal.AjaxCommands.prototype.openDialog = function (ajax, response, status) {
Chris@0 67 if (!response.selector) {
Chris@0 68 return false;
Chris@0 69 }
Chris@0 70 var $dialog = $(response.selector);
Chris@0 71 if (!$dialog.length) {
Chris@0 72 $dialog = $('<div id="' + response.selector.replace(/^#/, '') + '" class="ui-front"/>').appendTo('body');
Chris@0 73 }
Chris@0 74
Chris@0 75 if (!ajax.wrapper) {
Chris@0 76 ajax.wrapper = $dialog.attr('id');
Chris@0 77 }
Chris@0 78
Chris@0 79 response.command = 'insert';
Chris@0 80 response.method = 'html';
Chris@0 81 ajax.commands.insert(ajax, response, status);
Chris@0 82
Chris@0 83 if (!response.dialogOptions.buttons) {
Chris@0 84 response.dialogOptions.drupalAutoButtons = true;
Chris@0 85 response.dialogOptions.buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog);
Chris@0 86 }
Chris@0 87
Chris@0 88 $dialog.on('dialogButtonsChange', function () {
Chris@0 89 var buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog);
Chris@0 90 $dialog.dialog('option', 'buttons', buttons);
Chris@0 91 });
Chris@0 92
Chris@0 93 response.dialogOptions = response.dialogOptions || {};
Chris@0 94 var dialog = Drupal.dialog($dialog.get(0), response.dialogOptions);
Chris@0 95 if (response.dialogOptions.modal) {
Chris@0 96 dialog.showModal();
Chris@0 97 } else {
Chris@0 98 dialog.show();
Chris@0 99 }
Chris@0 100
Chris@0 101 $dialog.parent().find('.ui-dialog-buttonset').addClass('form-actions');
Chris@0 102 };
Chris@0 103
Chris@0 104 Drupal.AjaxCommands.prototype.closeDialog = function (ajax, response, status) {
Chris@0 105 var $dialog = $(response.selector);
Chris@0 106 if ($dialog.length) {
Chris@0 107 Drupal.dialog($dialog.get(0)).close();
Chris@0 108 if (!response.persist) {
Chris@0 109 $dialog.remove();
Chris@0 110 }
Chris@0 111 }
Chris@0 112
Chris@0 113 $dialog.off('dialogButtonsChange');
Chris@0 114 };
Chris@0 115
Chris@0 116 Drupal.AjaxCommands.prototype.setDialogOption = function (ajax, response, status) {
Chris@0 117 var $dialog = $(response.selector);
Chris@0 118 if ($dialog.length) {
Chris@0 119 $dialog.dialog('option', response.optionName, response.optionValue);
Chris@0 120 }
Chris@0 121 };
Chris@0 122
Chris@0 123 $(window).on('dialog:aftercreate', function (e, dialog, $element, settings) {
Chris@0 124 $element.on('click.dialog', '.dialog-cancel', function (e) {
Chris@0 125 dialog.close('cancel');
Chris@0 126 e.preventDefault();
Chris@0 127 e.stopPropagation();
Chris@0 128 });
Chris@0 129 });
Chris@0 130
Chris@0 131 $(window).on('dialog:beforeclose', function (e, dialog, $element) {
Chris@0 132 $element.off('.dialog');
Chris@0 133 });
Chris@0 134 })(jQuery, Drupal);