summaryrefslogtreecommitdiff
path: root/assets/js/components/confirm-buttons.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/components/confirm-buttons.js')
-rw-r--r--assets/js/components/confirm-buttons.js55
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);
+ };
+});