A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes. Zero dependencies.
π Upgrading from v6.x to v7.x? Read the release notes!
π Migrating from SweetAlert? SweetAlert 1.x to SweetAlert2 migration guide
npm install --save sweetalert2
Or:
bower install --save sweetalert2
Or download from CDN: unpkg.com/sweetalert2 | jsdelivr.net/npm/sweetalert2
<script src="sweetalert2/dist/sweetalert2.all.min.js"></script>
<!-- Include a polyfill for ES6 Promises (optional) for IE11, UC Browser and Android browser support -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>
You can also include the stylesheet separately if desired:
<script src="sweetalert2/dist/sweetalert2.min.js"></script>
<link rel="stylesheet" href="sweetalert2/dist/sweetalert2.min.css">
Or:
// ES6 Modules or TypeScript
import swal from 'sweetalert2'
// CommonJS
const swal = require('sweetalert2')
Please note that TypeScript is supported, so you don't have to install a third-party declaration file.
The most basic message:
swal('Hello world!')
A message signaling an error:
swal('Oops...', 'Something went wrong!', 'error')
Handling the result of SweetAlert2 modal:
swal({
title: 'Are you sure?',
text: 'You will not be able to recover this imaginary file!',
type: 'warning',
showCancelButton: true,
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'No, keep it'
}).then((result) => {
if (result.value) {
swal(
'Deleted!',
'Your imaginary file has been deleted.',
'success'
)
// For more information about handling dismissals please visit
// https://sweetalert2.github.io/#handling-dismissals
} else if (result.dismiss === swal.DismissReason.cancel) {
swal(
'Cancelled',
'Your imaginary file is safe :)',
'error'
)
}
})
IE11* | Edge | Chrome | Firefox | Safari | Opera | Android Browser* | UC Browser* |
---|---|---|---|---|---|---|---|
β | β | β | β | β | β | β | β |
* ES6 Promise polyfill should be included, see usage example.
Note that SweetAlert2 does not and will not provide support or functionality of any kind on IE10 and lower.
- ngx-sweetalert2 - Angular 4+ integration
- sweetalert2-adonisjs-nuxtjs - AdonisJS + Nuxt.js demo
- sweetalert2-webpack-demo - webpack demo
- avil13/vue-sweetalert2 - Vue.js wrapper
- softon/sweetalert - Laravel 5 Package
- alex-shamshurin/sweetalert2-react - React component
@toverux | @birjolaxew | @samturrell | @acupajoe | @zenflow | @patrickhlauke |
This project exists thanks to all the people who contribute.
If you would like to contribute enhancements or fixes, please do the following:
-
Fork the
sweetalert2
repository and clone it locally. -
When in the SweetAlert2 directory, run
npm install
oryarn install
to install dependencies. -
To begin active development, run
npm start
. This does several things for you:
- Lints your code
- Builds the
dist
folder - Serves sandbox.html @ http://localhost:8080/ (browser-sync ui: http://localhost:8081/)
- Serves unit tests @ http://localhost:3000
- Re-lints, re-builds, re-loads and re-tests as necessary when files change
Has SweetAlert2 helped you create an amazing application? You can show your support by making a donation in one of several ways:
- Donate via PayPal
- Donate via Patreon
- Become a backer on OpenCollective
- Become a sponsor on OpenCollective
Thank you to all our backers! π
If you support this project by becoming a sponsor, your logo will show up here with a link to your website.