diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 01:45:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 01:45:44 +0000 |
commit | 85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch) | |
tree | 9160f299afd8c80c038f08e1545be119f5e3f1e1 /app/assets/javascripts/branches | |
parent | 15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff) | |
download | gitlab-ce-85dc423f7090da0a52c73eb66faf22ddb20efff9.tar.gz |
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'app/assets/javascripts/branches')
-rw-r--r-- | app/assets/javascripts/branches/ajax_loading_spinner.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/assets/javascripts/branches/ajax_loading_spinner.js b/app/assets/javascripts/branches/ajax_loading_spinner.js new file mode 100644 index 00000000000..79f4f919f3d --- /dev/null +++ b/app/assets/javascripts/branches/ajax_loading_spinner.js @@ -0,0 +1,31 @@ +import $ from 'jquery'; + +export default class AjaxLoadingSpinner { + static init() { + const $elements = $('.js-ajax-loading-spinner'); + $elements.on('ajax:beforeSend', AjaxLoadingSpinner.ajaxBeforeSend); + } + + static ajaxBeforeSend(e) { + const button = e.target; + const newButton = document.createElement('button'); + newButton.classList.add('btn', 'btn-default', 'disabled', 'gl-button'); + newButton.setAttribute('disabled', 'disabled'); + + const spinner = document.createElement('span'); + spinner.classList.add('align-text-bottom', 'gl-spinner', 'gl-spinner-sm', 'gl-spinner-orange'); + newButton.appendChild(spinner); + + button.classList.add('hidden'); + button.parentNode.insertBefore(newButton, button.nextSibling); + + $(button).one('ajax:error', () => { + newButton.remove(); + button.classList.remove('hidden'); + }); + + $(button).one('ajax:success', () => { + $(button).off('ajax:beforeSend', AjaxLoadingSpinner.ajaxBeforeSend); + }); + } +} |