UNPKG

@obatfr/sweetalert2

Version:

A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes, supported fork of sweetalert

70 lines (54 loc) 2.01 kB
import { error } from './utils/utils.js' import { DismissReason } from './utils/DismissReason.js' import * as staticMethods from './staticMethods.js' import * as instanceMethods from './instanceMethods.js' import privateProps from './privateProps.js' let currentInstance class SweetAlert { constructor (...args) { // Prevent run in Node env if (typeof window === 'undefined') { return } // Check for the existence of Promise if (typeof Promise === 'undefined') { error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)') } currentInstance = this const outerParams = Object.freeze(this.constructor.argsToParams(args)) Object.defineProperties(this, { params: { value: outerParams, writable: false, enumerable: true, configurable: true } }) const promise = this._main(this.params) privateProps.promise.set(this, promise) } // `catch` cannot be the name of a module export, so we define our thenable methods here instead then (onFulfilled) { const promise = privateProps.promise.get(this) return promise.then(onFulfilled) } finally (onFinally) { const promise = privateProps.promise.get(this) return promise.finally(onFinally) } } // Assign instance methods from src/instanceMethods/*.js to prototype Object.assign(SweetAlert.prototype, instanceMethods) // Assign static methods from src/staticMethods/*.js to constructor Object.assign(SweetAlert, staticMethods) // Proxy to instance methods to constructor, for now, for backwards compatibility Object.keys(instanceMethods).forEach(key => { SweetAlert[key] = function (...args) { if (currentInstance) { return currentInstance[key](...args) } } }) SweetAlert.DismissReason = DismissReason SweetAlert.version = '9.15.2' export default SweetAlert