jqr-helpers 1.0.10 → 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
@@ -5,11 +5,12 @@
|
|
5
5
|
}
|
6
6
|
|
7
7
|
function hideThrobber(element) {
|
8
|
-
$(element).
|
8
|
+
$(element).nextAll('.throbber').remove();
|
9
9
|
$(element).removeAttr('disabled');
|
10
10
|
}
|
11
11
|
|
12
12
|
var ujsDialogElement = null; // the element that opened the dialog
|
13
|
+
var ujsSubmitElement = null; // the element that submitted a form
|
13
14
|
|
14
15
|
// called from dialog button value
|
15
16
|
function ujsSubmitDialogForm() {
|
@@ -47,11 +48,13 @@
|
|
47
48
|
if ($(this).data('close-x')) {
|
48
49
|
dialogElement.prepend('<span class="ujs-dialog-x"></span>');
|
49
50
|
}
|
51
|
+
var url = $(this).data('dialog-url');
|
50
52
|
var dialogOptions = $(this).data('dialog-options');
|
51
53
|
var open = dialogOptions['open'];
|
52
54
|
dialogOptions = $.extend(dialogOptions, {
|
53
55
|
'close': function() {
|
54
56
|
$(this).dialog('destroy').addClass('ujs-dialog-hidden');
|
57
|
+
if (url) $(this).remove();
|
55
58
|
},
|
56
59
|
'open': function() {
|
57
60
|
ujsDialogOpen.call(this);
|
@@ -77,7 +80,6 @@
|
|
77
80
|
}
|
78
81
|
});
|
79
82
|
}
|
80
|
-
var url = $(this).data('dialog-url');
|
81
83
|
if (url) {
|
82
84
|
$(this).trigger('jqr.beforedialogopen');
|
83
85
|
$(document.body).append('<div class="ui-widget-overlay ui-front">');
|
@@ -108,6 +110,10 @@
|
|
108
110
|
return false;
|
109
111
|
}
|
110
112
|
|
113
|
+
function ujsSubmitClick(event) {
|
114
|
+
ujsSubmitElement = event.target;
|
115
|
+
}
|
116
|
+
|
111
117
|
function ujsButtonClick(event) {
|
112
118
|
var element = $(this);
|
113
119
|
element.uniqueId(); // to store for later
|
@@ -142,19 +148,10 @@
|
|
142
148
|
if (element.data('real-element')) {
|
143
149
|
element = $('#' + element.data('real-element'));
|
144
150
|
}
|
145
|
-
if (element.is('form')
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
else
|
150
|
-
showThrobber(element);
|
151
|
-
}
|
152
|
-
else {
|
153
|
-
showThrobber(element);
|
154
|
-
}
|
155
|
-
if (element.is('form'))
|
156
|
-
element = $('button, input[type=submit]', element).first();
|
157
|
-
element.attr('disabled', 'disabled');
|
151
|
+
if (element.is('form') &&
|
152
|
+
$(ujsSubmitElement).parents('form').index(element) >= 0)
|
153
|
+
element = ujsSubmitElement;
|
154
|
+
showThrobber(element);
|
158
155
|
}
|
159
156
|
|
160
157
|
function ujsAjaxSuccess(evt, data, status, xhr) {
|
@@ -162,11 +159,11 @@
|
|
162
159
|
if (element.data('real-element')) {
|
163
160
|
element = $('#' + element.data('real-element'));
|
164
161
|
}
|
165
|
-
hideThrobber(element);
|
166
162
|
var disableElement = element;
|
167
|
-
if (element.is('form')
|
168
|
-
|
169
|
-
|
163
|
+
if (element.is('form') &&
|
164
|
+
$(ujsSubmitElement).parents('form').index(element) >= 0)
|
165
|
+
disableElement = ujsSubmitElement;
|
166
|
+
hideThrobber(disableElement);
|
170
167
|
var targetElement = element;
|
171
168
|
// if this was sent from a dialog, close the dialog and look at the
|
172
169
|
// element that opened it for update/append/delete callbacks.
|
@@ -180,7 +177,7 @@
|
|
180
177
|
var callback = eval(element.data('callback'));
|
181
178
|
callback.call(targetElement, data);
|
182
179
|
}
|
183
|
-
if (data && data.trim().charAt(0) != '<' && data != 'success') {
|
180
|
+
else if (data && data.trim().charAt(0) != '<' && data != 'success') {
|
184
181
|
alert(data);
|
185
182
|
return;
|
186
183
|
}
|
@@ -270,6 +267,7 @@
|
|
270
267
|
$(function() {
|
271
268
|
if ($().on) { // newer jQueries
|
272
269
|
$(document).on('jqr.load', ujsLoadPlugins);
|
270
|
+
$(document).on('click', 'input[type=submit]', ujsSubmitClick);
|
273
271
|
$(document).on('click', '.ujs-dialog', ujsDialogClick);
|
274
272
|
$(document).on('click', '.ujs-dialog-close, .ujs-dialog-x',
|
275
273
|
ujsDialogCloseClick);
|
@@ -281,6 +279,7 @@
|
|
281
279
|
}
|
282
280
|
else {
|
283
281
|
$('body').live('jqr.load', ujsLoadPlugins);
|
282
|
+
$('input[type=submit]').live('click', ujsSubmitClick);
|
284
283
|
$('.ujs-dialog').live('click', ujsDialogClick);
|
285
284
|
$('.ujs-dialog-close, .ujs-dialog-x').live('click', ujsDialogCloseClick);
|
286
285
|
$('.ujs-ajax-button').live('click', ujsButtonClick);
|
@@ -291,6 +290,13 @@
|
|
291
290
|
}
|
292
291
|
$('body').trigger('jqr.load');
|
293
292
|
|
293
|
+
// Derived from
|
294
|
+
// https://makandracards.com/makandra/3877-re-enable-submit-buttons-disabled-by-the-disabled_with-option
|
295
|
+
$(window).unload(function() {
|
296
|
+
$.rails.enableFormElements($($.rails.formSubmitSelector));
|
297
|
+
$('input[disabled],button[disabled],select[disabled]').prop('disabled', false);
|
298
|
+
});
|
299
|
+
|
294
300
|
});
|
295
301
|
|
296
302
|
}(jQuery));
|
data/jqr-helpers.gemspec
CHANGED
data/lib/jqr-helpers/version.rb
CHANGED