sudara/alonetone

View on GitHub
app/javascript/controllers/save_controller.js

Summary

Maintainability
A
0 mins
Test Coverage
import { Controller } from '@hotwired/stimulus'
import { gsap } from 'gsap'

export default class extends Controller {
  static targets = ['response', 'spinner']

  spin() {
    this.responseTarget.classList.remove('ajax_success', 'ajax_fail')
    this.responseTarget.innerHTML = ''
    this.spinnerTarget.style.display = 'block'
    gsap.to(this.spinnerTarget, 0, { autoAlpha: 1 })
    gsap.to(this.responseTarget, 0, { autoAlpha: 1 })
  }

  complete() {
    gsap.to(this.spinnerTarget, 0.25, { autoAlpha: 0 }).delay(0.25)
    gsap.to(this.responseTarget, 1, { autoAlpha: 0 }).delay(4)
  }

  success() {
    this.responseTarget.innerHTML = '<div><span>Saved!</span></div>'
    this.responseTarget.classList.add('ajax_success')
  }

  error() {
    this.responseTarget.innerHTML = '<div><span>Sorry, that didn\'t work</span></div>'
    this.responseTarget.classList.add('ajax_fail')
  }
}