Skip to content

Commit 758a8cd

Browse files
authored
Story: Add loading spinner and disable button on recaptcha function (#697)
1 parent dcbd888 commit 758a8cd

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

coderedcms/templates/coderedcms/includes/form_button.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,15 @@
1616
<input type="hidden" name="g-recaptcha-response">
1717
<button
1818
type="button"
19+
id="{{page.get_form_id}}Button"
1920
class="btn {{page.button_size}} {{page.button_style}} {{page.button_css_class}}"
2021
onclick="recaptchaSubmit('{{ page.get_form_id }}')"
2122
>
2223
{{ button_text|default:page.button_text }}
24+
<span class="d-none ps-1" id="{{page.get_form_id}}ButtonSpinner">
25+
<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
26+
<span class="visually-hidden" role="status">Submitting...</span>
27+
</span>
2328
</button>
2429
{% else %}
2530
<button type="submit" class="btn {{page.button_size}} {{page.button_style}} {{page.button_css_class}}">

coderedcms/templates/coderedcms/pages/base.html

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,13 @@ <h2 class="text-center my-5">{% trans "Related" %}</h2>
193193
<script src="https://www.google.com/recaptcha/api.js?render={{ ls.recaptcha_public_key }}"></script>
194194
<script>
195195
function recaptchaSubmit(formId) {
196-
var form = document.getElementById(formId);
196+
let form = document.getElementById(formId);
197+
let spinner = document.getElementById(`${formId}ButtonSpinner`);
198+
let button = document.getElementById(`${formId}Button`)
197199
if (form.reportValidity()) {
198200
grecaptcha.ready(function() {
201+
button.disabled = true;
202+
spinner.classList.remove("d-none");
199203
grecaptcha.execute(
200204
'{{ ls.recaptcha_public_key }}',
201205
{action: 'submit'}
@@ -205,7 +209,10 @@ <h2 class="text-center my-5">{% trans "Related" %}</h2>
205209
function(el) {el.value = token}
206210
);
207211
document.getElementById(formId).submit();
208-
});
212+
}).finally(function() {
213+
button.disabled = false;
214+
spinner.classList.add('d-none')
215+
})
209216
});
210217
}
211218
}

0 commit comments

Comments
 (0)