Sha256: 5444ef227661c21213df580228ac061bbd682fe085f066c4d5116ef1aff7ccfd

Contents?: true

Size: 1.35 KB

Versions: 44

Compression:

Stored size: 1.35 KB

Contents

/* eslint-disable no-alert */
import { Controller } from '@hotwired/stimulus'

export default class extends Controller {
  spinnerMarkup = `
    <div class="button-spinner">
      <div class="double-bounce1"></div>
      <div class="double-bounce2"></div>
    </div>`

  static values = {
    confirmationMessage: String,
    confirmed: Boolean,
  }

  connect() {
    this.button.setAttribute('data-original-content', this.button.innerHTML)
    this.dialog = document.getElementById('turbo-confirm')
    this.dialogCloseHandler = this.handleDialogClose.bind(this)

    this.dialog.addEventListener('close', this.dialogCloseHandler)
  }

  disconnect() {
    this.dialog.removeEventListener('close', this.dialogCloseHandler)
  }

  attemptSubmit() {
    this.applyLoader()
  }

  get button() {
    return this.context.scope.element
  }

  applyLoader() {
    const { button } = this

    button.style.width = `${button.getBoundingClientRect().width}px`
    button.style.height = `${button.getBoundingClientRect().height}px`
    button.innerHTML = this.spinnerMarkup
    button.classList.add('justify-center')
  }

  handleDialogClose() {
    if (this.dialog.returnValue !== 'confirm') {
      this.resetButton()
    }
  }

  resetButton() {
    const { button } = this

    button.innerHTML = button.getAttribute('data-original-content')
    button.removeAttribute('disabled')
  }
}

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
avo-3.18.1.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.18.1 app/javascript/js/controllers/loading_button_controller.js
avo-3.18.0.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.18.0 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.9.beta2 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.9.beta1 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.9.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.9 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.8.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.8 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.7 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.6.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.6 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.5 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.3 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.5.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.4.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.3.tw4 app/javascript/js/controllers/loading_button_controller.js
avo-3.17.2.tw4 app/javascript/js/controllers/loading_button_controller.js