diff options
Diffstat (limited to 'assets/js/components/confirm-buttons.js')
-rw-r--r-- | assets/js/components/confirm-buttons.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/assets/js/components/confirm-buttons.js b/assets/js/components/confirm-buttons.js new file mode 100644 index 00000000..81abe016 --- /dev/null +++ b/assets/js/components/confirm-buttons.js @@ -0,0 +1,55 @@ +KB.component('confirm-buttons', function (containerElement, options) { + var isLoading = false; + + function onSubmit() { + isLoading = true; + KB.find('#modal-confirm-button').replace(buildButton()); + window.location.href = options.url; + } + + function onCancel() { + KB.trigger('modal.close'); + } + + function onStop() { + isLoading = false; + KB.find('#modal-confirm-button').replace(buildButton()); + } + + function buildButton() { + var button = KB.dom('button') + .click(onSubmit) + .attr('id', 'modal-confirm-button') + .attr('type', 'button') + .attr('class', 'btn btn-red'); + + if (isLoading) { + button + .disable() + .add(KB.dom('i').attr('class', 'fa fa-spinner fa-pulse').build()) + .text(' ') + ; + } + + if (options.tabindex) { + button.attr('tabindex', options.tabindex); + } + + return button + .text(options.submitLabel) + .build(); + } + + this.render = function () { + KB.on('modal.stop', onStop); + + var element = KB.dom('div') + .attr('class', 'form-actions') + .add(buildButton()) + .text(' ' + options.orLabel + ' ') + .add(KB.dom('a').attr('href', '#').click(onCancel).text(options.cancelLabel).build()) + .build(); + + containerElement.appendChild(element); + }; +}); |