isprambiente/Domando

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

Summary

Maintainability
A
25 mins
Test Coverage
import { Controller } from "@hotwired/stimulus";
import Swal from 'sweetalert2';

export default class extends Controller {
  static targets = [ 'text' ]

  connect() {
    if (this.hasTextTarget) {
      this.send(this.textTarget.innerHTML, this.element.dataset.messageStatus || 'success');
      return this.element.outerHTML = '';
    }
  }

  disconnect() {
    return this.outerHTML = '';
  }

  send(message, level = 'success', timeout = 2000, toast = true) {
    var options;
    options = {
      toast: level === 'error' ? false : toast,
      icon: level,
      timerProgressBar: true,
      position: level === 'error' ? 'center' : 'top-end',
      text: message,
      timer: level === 'error' ? false : timeout,
      showConfirmButton: level === 'error' ? true : false,
      didOpen: (toast) => {
        toast.addEventListener('mouseenter', Swal.stopTimer);
        return toast.addEventListener('mouseleave', Swal.resumeTimer);
      },
      showClass: {
        popup: level === 'error' ? '' : 'animate__animated animate__bounceInRight'
      },
      hideClass: {
        popup: level === 'error' ? '' : 'animate__animated animate__bounceOutRight'
      }
    };
    return Swal.fire(options);
  }
}