Skip to content

Commit 0eb927c

Browse files
authored
FIX form submission button state (#1866)
1 parent 1229d0f commit 0eb927c

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

client/dist/js/bundle.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/src/legacy/LeftAndMain.js

+31-25
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,24 @@ $.entwine('ss', function($) {
460460
// default to first button if none given - simulates browser behaviour
461461
if(!button) button = this.find('.btn-toolbar :submit:first');
462462

463+
// set button to "submitting" state
464+
$(button).addClass('btn--loading loading');
465+
$(button).prop('disabled', true);
466+
467+
if ($(button).is('button')) {
468+
$(button).append(
469+
$(
470+
'<div class="btn__loading-icon">' +
471+
'<span class="btn__circle btn__circle--1"></span>' +
472+
'<span class="btn__circle btn__circle--2"></span>' +
473+
'<span class="btn__circle btn__circle--3"></span>' +
474+
'</div>'
475+
)
476+
);
477+
478+
$(button).css($(button).outerWidth() + 'px');
479+
}
480+
463481
var beforeSubmitFormEventData = {
464482
// array of promises that must resolve({success:true}) before the form is submitted
465483
// result of each promise must be an object of
@@ -470,6 +488,14 @@ $.entwine('ss', function($) {
470488
};
471489
form.trigger('beforesubmitform', beforeSubmitFormEventData);
472490

491+
var clearButton = function() {
492+
$(button).removeClass('btn--loading loading');
493+
$(button).prop('disabled', false);
494+
$(button).find('.btn__loading-icon').remove();
495+
$(button).css('width', 'auto');
496+
$(button).text($(button).data('original-text'));
497+
}
498+
473499
Promise.all(beforeSubmitFormEventData.promises).then(function(results) {
474500

475501
let success = true;
@@ -499,38 +525,15 @@ $.entwine('ss', function($) {
499525
}
500526
});
501527
}
528+
clearButton();
502529
return false;
503530
}
504531

505532
self.trigger('submitform', {form: form, button: button});
506533

507-
// set button to "submitting" state
508-
$(button).addClass('btn--loading loading');
509-
$(button).prop('disabled', true);
510-
511-
if($(button).is('button')) {
512-
513-
$(button).append($(
514-
'<div class="btn__loading-icon">'+
515-
'<span class="btn__circle btn__circle--1"></span>'+
516-
'<span class="btn__circle btn__circle--2"></span>'+
517-
'<span class="btn__circle btn__circle--3"></span>'+
518-
'</div>'));
519-
520-
$(button).css($(button).outerWidth() + 'px');
521-
}
522-
523534
// validate if required
524535
var validationResult = form.validate();
525536

526-
var clearButton = function() {
527-
$(button).removeClass('btn--loading loading');
528-
$(button).prop('disabled', false);
529-
$(button).find('.btn__loading-icon').remove();
530-
$(button).css('width', 'auto');
531-
$(button).text($(button).data('original-text'));
532-
}
533-
534537
if(typeof validationResult!=='undefined' && !validationResult) {
535538
statusMessage("Validation failed.", "bad");
536539
clearButton();
@@ -572,7 +575,10 @@ $.entwine('ss', function($) {
572575
newContentEls.filter('form').trigger('aftersubmitform', {status: status, xhr: xhr, formData: formData});
573576
}
574577
}, ajaxOptions));
575-
});
578+
}).catch(function() {
579+
// Handle errors from the promises
580+
clearButton();
581+
});;
576582

577583
return false;
578584
},

0 commit comments

Comments
 (0)