2017-02-17 9 views
1

ich sweetAlert2 bin mit und ich versuche Bootstrap 4 Schaltflächen zu verwenden, um die Eigenschaften einstellen:Mit sweetalert2 mit Bootstrap 4

buttonsStyling: false, 
confirmButtonClass: 'btn btn-primary btn-lg', 
cancelButtonClass: 'btn btn-lg' 

Es funktioniert, aber die showLoaderOnConfirm Option in einem sehr wird gezeigt hässlicher Stil, wenn ich diese Eigenschaften oben setze.

Sie können die Beispiele überprüfen unten:

Schritte zum Reproduzieren:

  • Geben Sie eine gültige E-Mail;
  • Drücken Sie Senden;
  • Sehen Sie den Lader (Stil) für die erste (die mit BS4 und für die zweite, mit dem Standard-Stil von swal2).

$(function() { 
 
    $('#button').click(() => { 
 
    swal({ 
 
     title: 'Submit email to run ajax request', 
 
     input: 'email', 
 
     showCancelButton: true, 
 
     confirmButtonText: 'Submit', 
 
     showLoaderOnConfirm: true, 
 
     buttonsStyling: false, 
 
     confirmButtonClass: 'btn btn-primary btn-lg', 
 
     cancelButtonClass: 'btn btn-lg', 
 
     preConfirm: function(email) { 
 
     return new Promise(function(resolve, reject) { 
 
      setTimeout(function() { 
 
      if (email === '[email protected]') { 
 
       reject('This email is already taken.') 
 
      } else { 
 
       resolve() 
 
      } 
 
      }, 2000) 
 
     }) 
 
     }, 
 
     allowOutsideClick: false 
 
    }).then(function(email) { 
 
     swal({ 
 
     type: 'success', 
 
     title: 'Ajax request finished!', 
 
     html: 'Submitted email: ' + email 
 
     }) 
 
    }).catch(swal.noop) 
 
    }); 
 

 
    $('#button1').click(() => { 
 
    swal({ 
 
     title: 'Submit email to run ajax request', 
 
     input: 'email', 
 
     showCancelButton: true, 
 
     confirmButtonText: 'Submit', 
 
     showLoaderOnConfirm: true, 
 
     preConfirm: function(email) { 
 
     return new Promise(function(resolve, reject) { 
 
      setTimeout(function() { 
 
      if (email === '[email protected]') { 
 
       reject('This email is already taken.') 
 
      } else { 
 
       resolve() 
 
      } 
 
      }, 2000) 
 
     }) 
 
     }, 
 
     allowOutsideClick: false 
 
    }).then(function(email) { 
 
     swal({ 
 
     type: 'success', 
 
     title: 'Ajax request finished!', 
 
     html: 'Submitted email: ' + email 
 
     }) 
 
    }).catch(swal.noop) 
 
    }); 
 
});
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" /> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.4.2/sweetalert2.min.js"></script> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.4.2/sweetalert2.min.css" /> 
 
</head> 
 

 
<body> 
 
    <button id="button">Show (Bootstrap)</button> 
 
    <hr /> 
 
    <button id="button1">Show (w/o bootstrap)</button> 
 
</body> 
 

 
</html>

Die Frage ist: Wie kann ich den Standardstil für den Lader (mit BS4) lassen? Oder fertigen Sie vielleicht den Stil für die showLoaderOnConfirm Option ...

Antwort

1

Leider gibt es derzeit keinen schönen Weg, dies zu tun. Wir arbeiten daran, wenn Sie den Fortschritt abonnieren verfolgen möchten https://github.com/limonte/sweetalert2/issues/410

Vorerst können Sie Standard Spinner Styling auf diese Weise außer Kraft setzen:

swal({ 
 
    title: 'Submit email to run ajax request', 
 
    input: 'email', 
 
    showCancelButton: true, 
 
    confirmButtonText: 'Submit', 
 
    showLoaderOnConfirm: true, 
 
    buttonsStyling: false, 
 
    confirmButtonClass: 'btn btn-primary btn-lg', 
 
    cancelButtonClass: 'btn btn-lg', 
 
    preConfirm: function(email) { 
 
    return new Promise(function(resolve, reject) { 
 
     setTimeout(function() { 
 
     if (email === '[email protected]') { 
 
      reject('This email is already taken.') 
 
     } else { 
 
      resolve() 
 
     } 
 
     }, 200000) 
 
    }) 
 
    }, 
 
    allowOutsideClick: false 
 
}).then(function(email) { 
 
    swal({ 
 
    type: 'success', 
 
    title: 'Ajax request finished!', 
 
    html: 'Submitted email: ' + email 
 
    }) 
 
}).catch(swal.noop)
.swal2-loading::after { 
 
    width: 20px !important; 
 
    height: 20px !important; 
 
    border-left-color: #fff !important; 
 
    border-top-color: #fff !important; 
 
    border-bottom-color: #fff !important; 
 
}
<link href="https://cdn.jsdelivr.net/sweetalert2/6.4.1/sweetalert2.css" rel="stylesheet"/> 
 
<script src="https://cdn.jsdelivr.net/sweetalert2/6.4.1/sweetalert2.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" />

+0

Vielen Dank für Ihre Antwort :) –

-1

Wie Sie einstellen verwendet `

ButtonStyling auf false

` gleiche verwenden

LoaderStyling zu setzen: falsch

Es wird den Loader deaktivieren und dann Ihren eigenen Stil verwenden.

0

Wenn die modale don 't show, einfach zu Ihrem CSS hinzufügen:

<style> 
    .swal2-container.fade { 
     opacity: 1 
    } 
</style>