Sweetalert2 disableButtons()

by cormip

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/sweetalert2/latest/sweetalert2.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/sweetalert2/latest/sweetalert2.min.css">
<button id="button">SHOW SWAL2 MODAL</button>

CSS

#button {
  font-size: 2em; 
  padding: .5em 1em;
}

JavaScript

//import Swal from './sweetalert2'

$('#button').click(() => {
  
  const promise1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(false)
        }, 2000)
    })
  
  swal.fire({
    title: 'Input something',
    input: 'text',
    showCancelButton: true,
    preConfirm: async function(code) {
            const el = Swal.getHtmlContainer()
            Swal.showLoading()
            await promise1
                .then (result => {
                    Swal.hideLoading()
                    throw new Error('Invalid 2FA Code...')
                })
                .catch(err => {
                    Swal.disableButtons()
                    Swal.hideLoading()
                    Swal.showValidationMessage(err.message)
                    let timeLeft = 10
                    timerId = setInterval(function() {
                        if (timeLeft < 0) {
                            clearTimeout(timerId)
                            el.innerHTML = 'Enter the code from your Authenticator App:'
                            Swal.enableButtons()
                        } else {
                            el.innerHTML = 'Retry in <span class="badge bg-warning text-dark">' + timeLeft + '</span> seconds...'
                            timeLeft--
                        }
                    }, 1000)
                })
        }
  }).then(function(result) {
    if (result) {
      Swal.fire({
        type: 'success',
        html: 'You entered: <strong>' + result + '</strong>'
      });
    }
  }).done();
});