1/*! 2 * sweetalert2 v7.12.15 3 * Released under the MIT License. 4 */ 5(function (global, factory) { 6 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 7 typeof define === 'function' && define.amd ? define(factory) : 8 (global.Sweetalert2 = factory()); 9}(this, (function () { 'use strict'; 10 11var styles = "@-webkit-keyframes swal2-show {\n 0% {\n -webkit-transform: scale(0.7);\n transform: scale(0.7); }\n 45% {\n -webkit-transform: scale(1.05);\n transform: scale(1.05); }\n 80% {\n -webkit-transform: scale(0.95);\n transform: scale(0.95); }\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1); } }\n\n@keyframes swal2-show {\n 0% {\n -webkit-transform: scale(0.7);\n transform: scale(0.7); }\n 45% {\n -webkit-transform: scale(1.05);\n transform: scale(1.05); }\n 80% {\n -webkit-transform: scale(0.95);\n transform: scale(0.95); }\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1); } }\n\n@-webkit-keyframes swal2-hide {\n 0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; }\n 100% {\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n opacity: 0; } }\n\n@keyframes swal2-hide {\n 0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; }\n 100% {\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n opacity: 0; } }\n\n@-webkit-keyframes swal2-animate-success-line-tip {\n 0% {\n top: 19px;\n left: 1px;\n width: 0; }\n 54% {\n top: 17px;\n left: 2px;\n width: 0; }\n 70% {\n top: 35px;\n left: -6px;\n width: 50px; }\n 84% {\n top: 48px;\n left: 21px;\n width: 17px; }\n 100% {\n top: 45px;\n left: 14px;\n width: 25px; } }\n\n@keyframes swal2-animate-success-line-tip {\n 0% {\n top: 19px;\n left: 1px;\n width: 0; }\n 54% {\n top: 17px;\n left: 2px;\n width: 0; }\n 70% {\n top: 35px;\n left: -6px;\n width: 50px; }\n 84% {\n top: 48px;\n left: 21px;\n width: 17px; }\n 100% {\n top: 45px;\n left: 14px;\n width: 25px; } }\n\n@-webkit-keyframes swal2-animate-success-line-long {\n 0% {\n top: 54px;\n right: 46px;\n width: 0; }\n 65% {\n top: 54px;\n right: 46px;\n width: 0; }\n 84% {\n top: 35px;\n right: 0;\n width: 55px; }\n 100% {\n top: 38px;\n right: 8px;\n width: 47px; } }\n\n@keyframes swal2-animate-success-line-long {\n 0% {\n top: 54px;\n right: 46px;\n width: 0; }\n 65% {\n top: 54px;\n right: 46px;\n width: 0; }\n 84% {\n top: 35px;\n right: 0;\n width: 55px; }\n 100% {\n top: 38px;\n right: 8px;\n width: 47px; } }\n\n@-webkit-keyframes swal2-rotate-success-circular-line {\n 0% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 5% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 12% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); }\n 100% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); } }\n\n@keyframes swal2-rotate-success-circular-line {\n 0% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 5% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 12% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); }\n 100% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); } }\n\n@-webkit-keyframes swal2-animate-error-x-mark {\n 0% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 50% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 80% {\n margin-top: -6px;\n -webkit-transform: scale(1.15);\n transform: scale(1.15); }\n 100% {\n margin-top: 0;\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; } }\n\n@keyframes swal2-animate-error-x-mark {\n 0% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 50% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 80% {\n margin-top: -6px;\n -webkit-transform: scale(1.15);\n transform: scale(1.15); }\n 100% {\n margin-top: 0;\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; } }\n\n@-webkit-keyframes swal2-animate-error-icon {\n 0% {\n -webkit-transform: rotateX(100deg);\n transform: rotateX(100deg);\n opacity: 0; }\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n opacity: 1; } }\n\n@keyframes swal2-animate-error-icon {\n 0% {\n -webkit-transform: rotateX(100deg);\n transform: rotateX(100deg);\n opacity: 0; }\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n opacity: 1; } }\n\nbody.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-actions {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: stretch;\n align-self: stretch;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n height: 2.2em; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-loading {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-input {\n height: 2em;\n margin: .3125em auto;\n font-size: 1em; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-validationerror {\n font-size: 1em; }\n\nbody.swal2-toast-shown > .swal2-container {\n position: fixed;\n background-color: transparent; }\n body.swal2-toast-shown > .swal2-container.swal2-shown {\n background-color: transparent; }\n body.swal2-toast-shown > .swal2-container.swal2-top {\n top: 0;\n right: auto;\n bottom: auto;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-top-end, body.swal2-toast-shown > .swal2-container.swal2-top-right {\n top: 0;\n right: 0;\n bottom: auto;\n left: auto; }\n body.swal2-toast-shown > .swal2-container.swal2-top-start, body.swal2-toast-shown > .swal2-container.swal2-top-left {\n top: 0;\n right: auto;\n bottom: auto;\n left: 0; }\n body.swal2-toast-shown > .swal2-container.swal2-center-start, body.swal2-toast-shown > .swal2-container.swal2-center-left {\n top: 50%;\n right: auto;\n bottom: auto;\n left: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-center {\n top: 50%;\n right: auto;\n bottom: auto;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%); }\n body.swal2-toast-shown > .swal2-container.swal2-center-end, body.swal2-toast-shown > .swal2-container.swal2-center-right {\n top: 50%;\n right: 0;\n bottom: auto;\n left: auto;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-bottom-start, body.swal2-toast-shown > .swal2-container.swal2-bottom-left {\n top: auto;\n right: auto;\n bottom: 0;\n left: 0; }\n body.swal2-toast-shown > .swal2-container.swal2-bottom {\n top: auto;\n right: auto;\n bottom: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-bottom-end, body.swal2-toast-shown > .swal2-container.swal2-bottom-right {\n top: auto;\n right: 0;\n bottom: 0;\n left: auto; }\n\n.swal2-popup.swal2-toast {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: auto;\n padding: 0.625em;\n -webkit-box-shadow: 0 0 10px #d9d9d9;\n box-shadow: 0 0 10px #d9d9d9;\n overflow-y: hidden; }\n .swal2-popup.swal2-toast .swal2-header {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .swal2-popup.swal2-toast .swal2-title {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n margin: 0 .6em;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-close {\n position: initial; }\n .swal2-popup.swal2-toast .swal2-content {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-icon {\n width: 32px;\n min-width: 32px;\n height: 32px;\n margin: 0; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring {\n width: 32px;\n height: 32px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-info, .swal2-popup.swal2-toast .swal2-icon.swal2-warning, .swal2-popup.swal2-toast .swal2-icon.swal2-question {\n font-size: 26px;\n line-height: 32px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'] {\n top: 14px;\n width: 22px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='left'] {\n left: 5px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='right'] {\n right: 5px; }\n .swal2-popup.swal2-toast .swal2-actions {\n height: auto;\n margin: 0 .3125em; }\n .swal2-popup.swal2-toast .swal2-styled {\n margin: 0 .3125em;\n padding: .3125em .625em;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-styled:focus {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(50, 100, 150, 0.4);\n box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(50, 100, 150, 0.4); }\n .swal2-popup.swal2-toast .swal2-success {\n border-color: #a5dc86; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'] {\n position: absolute;\n width: 32px;\n height: 45px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n border-radius: 50%; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'][class$='left'] {\n top: -4px;\n left: -15px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 32px 32px;\n transform-origin: 32px 32px;\n border-radius: 64px 0 0 64px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'][class$='right'] {\n top: -4px;\n left: 15px;\n -webkit-transform-origin: 0 32px;\n transform-origin: 0 32px;\n border-radius: 0 64px 64px 0; }\n .swal2-popup.swal2-toast .swal2-success .swal2-success-ring {\n width: 32px;\n height: 32px; }\n .swal2-popup.swal2-toast .swal2-success .swal2-success-fix {\n top: 0;\n left: 7px;\n width: 7px;\n height: 43px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'] {\n height: 5px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'][class$='tip'] {\n top: 18px;\n left: 3px;\n width: 12px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'][class$='long'] {\n top: 15px;\n right: 3px;\n width: 22px; }\n .swal2-popup.swal2-toast.swal2-show {\n -webkit-animation: showSweetToast .5s;\n animation: showSweetToast .5s; }\n .swal2-popup.swal2-toast.swal2-hide {\n -webkit-animation: hideSweetToast .2s forwards;\n animation: hideSweetToast .2s forwards; }\n .swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-tip {\n -webkit-animation: animate-toast-success-tip .75s;\n animation: animate-toast-success-tip .75s; }\n .swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-long {\n -webkit-animation: animate-toast-success-long .75s;\n animation: animate-toast-success-long .75s; }\n\n@-webkit-keyframes showSweetToast {\n 0% {\n -webkit-transform: translateY(-10px) rotateZ(2deg);\n transform: translateY(-10px) rotateZ(2deg);\n opacity: 0; }\n 33% {\n -webkit-transform: translateY(0) rotateZ(-2deg);\n transform: translateY(0) rotateZ(-2deg);\n opacity: .5; }\n 66% {\n -webkit-transform: translateY(5px) rotateZ(2deg);\n transform: translateY(5px) rotateZ(2deg);\n opacity: .7; }\n 100% {\n -webkit-transform: translateY(0) rotateZ(0);\n transform: translateY(0) rotateZ(0);\n opacity: 1; } }\n\n@keyframes showSweetToast {\n 0% {\n -webkit-transform: translateY(-10px) rotateZ(2deg);\n transform: translateY(-10px) rotateZ(2deg);\n opacity: 0; }\n 33% {\n -webkit-transform: translateY(0) rotateZ(-2deg);\n transform: translateY(0) rotateZ(-2deg);\n opacity: .5; }\n 66% {\n -webkit-transform: translateY(5px) rotateZ(2deg);\n transform: translateY(5px) rotateZ(2deg);\n opacity: .7; }\n 100% {\n -webkit-transform: translateY(0) rotateZ(0);\n transform: translateY(0) rotateZ(0);\n opacity: 1; } }\n\n@-webkit-keyframes hideSweetToast {\n 0% {\n opacity: 1; }\n 33% {\n opacity: .5; }\n 100% {\n -webkit-transform: rotateZ(1deg);\n transform: rotateZ(1deg);\n opacity: 0; } }\n\n@keyframes hideSweetToast {\n 0% {\n opacity: 1; }\n 33% {\n opacity: .5; }\n 100% {\n -webkit-transform: rotateZ(1deg);\n transform: rotateZ(1deg);\n opacity: 0; } }\n\n@-webkit-keyframes animate-toast-success-tip {\n 0% {\n top: 9px;\n left: 1px;\n width: 0; }\n 54% {\n top: 2px;\n left: 2px;\n width: 0; }\n 70% {\n top: 10px;\n left: -4px;\n width: 26px; }
11\n 84% {\n top: 17px;\n left: 12px;\n width: 8px; }\n 100% {\n top: 18px;\n left: 3px;\n width: 12px; } }\n\n@keyframes animate-toast-success-tip {\n 0% {\n top: 9px;\n left: 1px;\n width: 0; }\n 54% {\n top: 2px;\n left: 2px;\n width: 0; }\n 70% {\n top: 10px;\n left: -4px;\n width: 26px; }\n 84% {\n top: 17px;\n left: 12px;\n width: 8px; }\n 100% {\n top: 18px;\n left: 3px;\n width: 12px; } }\n\n@-webkit-keyframes animate-toast-success-long {\n 0% {\n top: 26px;\n right: 22px;\n width: 0; }\n 65% {\n top: 20px;\n right: 15px;\n width: 0; }\n 84% {\n top: 15px;\n right: 0;\n width: 18px; }\n 100% {\n top: 15px;\n right: 3px;\n width: 22px; } }\n\n@keyframes animate-toast-success-long {\n 0% {\n top: 26px;\n right: 22px;\n width: 0; }\n 65% {\n top: 20px;\n right: 15px;\n width: 0; }\n 84% {\n top: 15px;\n right: 0;\n width: 18px; }\n 100% {\n top: 15px;\n right: 3px;\n width: 22px; } }\n\nhtml.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown),\nbody.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {\n height: auto;\n overflow-y: hidden; }\n\nbody.swal2-no-backdrop .swal2-shown {\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n background-color: transparent; }\n body.swal2-no-backdrop .swal2-shown > .swal2-modal {\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); }\n body.swal2-no-backdrop .swal2-shown.swal2-top {\n top: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-top-start, body.swal2-no-backdrop .swal2-shown.swal2-top-left {\n top: 0;\n left: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-top-end, body.swal2-no-backdrop .swal2-shown.swal2-top-right {\n top: 0;\n right: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-center {\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-center-start, body.swal2-no-backdrop .swal2-shown.swal2-center-left {\n top: 50%;\n left: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-center-end, body.swal2-no-backdrop .swal2-shown.swal2-center-right {\n top: 50%;\n right: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom {\n bottom: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom-start, body.swal2-no-backdrop .swal2-shown.swal2-bottom-left {\n bottom: 0;\n left: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom-end, body.swal2-no-backdrop .swal2-shown.swal2-bottom-right {\n right: 0;\n bottom: 0; }\n\n.swal2-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 10px;\n background-color: transparent;\n z-index: 1060;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch; }\n .swal2-container.swal2-top {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n .swal2-container.swal2-top-start, .swal2-container.swal2-top-left {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-top-end, .swal2-container.swal2-top-right {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-center {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-container.swal2-center-start, .swal2-container.swal2-center-left {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-center-end, .swal2-container.swal2-center-right {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-bottom {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end; }\n .swal2-container.swal2-bottom-start, .swal2-container.swal2-bottom-left {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-bottom-end, .swal2-container.swal2-bottom-right {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-grow-fullscreen > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: stretch;\n align-self: stretch;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container.swal2-grow-row > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-line-pack: center;\n align-content: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container.swal2-grow-column {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n .swal2-container.swal2-grow-column.swal2-top, .swal2-container.swal2-grow-column.swal2-center, .swal2-container.swal2-grow-column.swal2-bottom {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-container.swal2-grow-column.swal2-top-start, .swal2-container.swal2-grow-column.swal2-center-start, .swal2-container.swal2-grow-column.swal2-bottom-start, .swal2-container.swal2-grow-column.swal2-top-left, .swal2-container.swal2-grow-column.swal2-center-left, .swal2-container.swal2-grow-column.swal2-bottom-left {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n .swal2-container.swal2-grow-column.swal2-top-end, .swal2-container.swal2-grow-column.swal2-center-end, .swal2-container.swal2-grow-column.swal2-bottom-end, .swal2-container.swal2-grow-column.swal2-top-right, .swal2-container.swal2-grow-column.swal2-center-right, .swal2-container.swal2-grow-column.swal2-bottom-right {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end; }\n .swal2-container.swal2-grow-column > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-line-pack: center;\n align-content: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not
11(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right) > .swal2-modal {\n margin: auto; }\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .swal2-container .swal2-modal {\n margin: 0 !important; } }\n .swal2-container.swal2-fade {\n -webkit-transition: background-color .1s;\n transition: background-color .1s; }\n .swal2-container.swal2-shown {\n background-color: rgba(0, 0, 0, 0.4); }\n\n.swal2-popup {\n display: none;\n position: relative;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 32em;\n max-width: 100%;\n padding: 1.25em;\n border-radius: 0.3125em;\n background: #fff;\n font-family: inherit;\n font-size: 1rem;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .swal2-popup:focus {\n outline: none; }\n .swal2-popup.swal2-loading {\n overflow-y: hidden; }\n .swal2-popup .swal2-header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-popup .swal2-title {\n display: block;\n position: relative;\n max-width: 100%;\n margin: 0 0 0.4em;\n padding: 0;\n color: #595959;\n font-size: 1.875em;\n font-weight: 600;\n text-align: center;\n text-transform: none;\n word-wrap: break-word; }\n .swal2-popup .swal2-actions {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 1.25em auto 0; }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled[disabled] {\n opacity: .4; }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:hover {\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.1)));\n background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:active {\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.2)), to(rgba(0, 0, 0, 0.2)));\n background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); }\n .swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-confirm {\n width: 2.5em;\n height: 2.5em;\n margin: .46875em;\n padding: 0;\n border: .25em solid transparent;\n border-radius: 100%;\n border-color: transparent;\n background-color: transparent !important;\n color: transparent;\n cursor: default;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal;\n animation: swal2-rotate-loading 1.5s linear 0s infinite normal;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n .swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-cancel {\n margin-right: 30px;\n margin-left: 30px; }\n .swal2-popup .swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after {\n display: inline-block;\n width: 15px;\n height: 15px;\n margin-left: 5px;\n border: 3px solid #999999;\n border-radius: 50%;\n border-right-color: transparent;\n -webkit-box-shadow: 1px 1px 1px #fff;\n box-shadow: 1px 1px 1px #fff;\n content: '';\n -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal;\n animation: swal2-rotate-loading 1.5s linear 0s infinite normal; }\n .swal2-popup .swal2-styled {\n margin: 0 .3125em;\n padding: .625em 2em;\n font-weight: 500;\n -webkit-box-shadow: none;\n box-shadow: none; }\n .swal2-popup .swal2-styled:not([disabled]) {\n cursor: pointer; }\n .swal2-popup .swal2-styled.swal2-confirm {\n border: 0;\n border-radius: 0.25em;\n background-color: #3085d6;\n color: #fff;\n font-size: 1.0625em; }\n .swal2-popup .swal2-styled.swal2-cancel {\n border: 0;\n border-radius: 0.25em;\n background-color: #aaa;\n color: #fff;\n font-size: 1.0625em; }\n .swal2-popup .swal2-styled:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(50, 100, 150, 0.4);\n box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(50, 100, 150, 0.4); }\n .swal2-popup .swal2-styled::-moz-focus-inner {\n border: 0; }\n .swal2-popup .swal2-footer {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 1.25em 0 0;\n padding-top: 1em;\n border-top: 1px solid #eee;\n color: #545454;\n font-size: 1em; }\n .swal2-popup .swal2-image {\n max-width: 100%;\n margin: 1.25em auto; }\n .swal2-popup .swal2-close {\n position: absolute;\n top: 0;\n right: 0;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 1.2em;\n min-width: 1.2em;\n height: 1.2em;\n margin: 0;\n padding: 0;\n -webkit-transition: color 0.1s ease-out;\n transition: color 0.1s ease-out;\n border: none;\n border-radius: 0;\n background: transparent;\n color: #cccccc;\n font-family: serif;\n font-size: calc(2.5em - 0.25em);\n line-height: 1.2em;\n cursor: pointer; }\n .swal2-popup .swal2-close:hover {\n -webkit-transform: none;\n transform: none;\n color: #f27474; }\n .swal2-popup > .swal2-input,\n .swal2-popup > .swal2-file,\n .swal2-popup > .swal2-textarea,\n .swal2-popup > .swal2-select,\n .swal2-popup > .swal2-radio,\n .swal2-popup > .swal2-checkbox {\n display: none; }\n .swal2-popup .swal2-content {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n color: #545454;\n font-size: 1.125em;\n font-weight: 300;\n line-height: normal;\n word-wrap: break-word; }\n .swal2-popup #swal2-content {\n text-align: center; }\n .swal2-popup .swal2-input,\n .swal2-popup .swal2-file,\n .swal2-popup .swal2-textarea,\n .swal2-popup .swal2-select,\n .swal2-popup .swal2-radio,\n .swal2-popup .swal2-checkbox {\n margin: 1em auto; }\n .swal2-popup .swal2-input,\n .swal2-popup .swal2-file,\n .swal2-popup .swal2-textarea {\n width: 100%;\n -webkit-transition: border-color .3s, -webkit-box-shadow .3s;\n transition: border-color .3s, -webkit-box-shadow .3s;\n transition: border-color .3s, box-shadow .3s;\n transition: border-color .3s, box-shadow .3s, -webkit-box-shadow .3s;\n border: 1px solid #d9d9d9;\n border-radius: 0.1875em;\n font-size: 1.125em;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .swal2-popup .swal2-input.swal2-inputerror,\n .swal2-popup .swal2-file.swal2-inputerror,\n .swal2-popup .swal2-textarea.swal2-inputerror {\n border-color: #f27474 !important;\n -webkit-box-shadow: 0 0 2px #f27474 !important;\n box-shadow: 0 0 2px #f27474 !important; }\n .swal2-popup .swal2-input:focus,\n .swal2-popup .swal2-file:focus,\n .swal2-popup .swal2-textarea:focus {\n border: 1px solid #b4dbed;\n outline: none;\n -webkit-box-shadow: 0 0 3px #c4e6f5;\n box-shadow: 0 0 3px #c4e6f5; }\n .swal2-popup .swal2-input::-webkit-input-placeholder,\n .swal2-popup .swal2-file::-webkit-input-placeholder,\n .swal2-popup .swal2-textarea::-webkit-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input:-ms-input-placeholder,\n .swal2-popup .swal2-file:-ms-input-placeholder,\n .swal2-popup .swal2-textarea:-ms-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input::-ms-input-placeholder,\n .swal2-popup .swal2-file::-ms-input-placeholder,\n .swal2-popup .swal2-textarea::-ms-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input::placeholder,\n .swal2-popup .swal2-file::placeholder,\n .swal2-popup .swal2-textarea::placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-range input {\n width: 80%; }\n .swal2-popup .swal2-range output {\n width: 20%;\n font-weight: 600;\n text-align: center; }\n .swal2-popup .swal2-range input,\n .swal2-popup .swal2-range output {\n height: 2.625em;\n margin: 1em auto;\n padding: 0;\n font-size: 1.125em;\n line-height: 2.625em; }\n .swal2-popup .swal2-input {\n height: 2.625em;\n padding: 0.75em; }\n .swal2-popup .swal2-input[type='number'] {\n max-width: 10em; }\n .swal2-popup .swal2-file {\n font-size: 1.125em; }\n .swal2-popup .swal2-textarea {\n height: 6.75em;\n padding: 0.75em; }\n .swal2-popup .swal2-select {\n min-width: 50%;\n max-width: 100%;\n padding: .375em .625em;\n color: #545454;\n font-size: 1.125em; }\n .swal2-popup .swal2-radio,\n .swal2-popup .swal2-checkbox {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-popup .swal2-radio label,\n .swal2-popup .swal2-checkbox label {\n margin: 0 .6em;\n font-size: 1.125em; }\n .swal2-popup .swal2-radio input,\n .swal2-popup .swal2-checkbox input {\n margin: 0 .4em; }\n .swal2-popup .swal2-validationerror {\n display: none;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0.625em;\n background: #f0f0f0;\n color: #666666;\n font-size: 1em;\n font-weight: 300;\n overflow: hidden; }\n .swal2-popup .swal2-validationerror::before {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n margin: 0 .625em;\n border-radius: 50%;\n background-color: #f27474;\n color: #fff;\n font-weight: 600;\n line-height: 1.5em;\n text-align: center;\n content: '!';\n zoom: normal; }\n\n@supports (-ms-accelerator: true) {\n .swal2-range input {\n width: 100% !important; }\n .swal2-range output {\n display: none; } }\n\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .swal2-range input {\n width: 100% !important; }\n .swal2-range output {\n display: none; } }\n\n.swal2-icon {\n position: relative;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 80px;\n height: 80px;\n margin: 1.25em auto 1.875em;\n border: 4px solid transparent;\n border-radius: 50%;\n line-height: 80px;\n cursor: default;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-user-select: none;\n -moz-user-select: none;
11\n -ms-user-select: none;\n user-select: none;\n zoom: normal; }\n .swal2-icon.swal2-error {\n border-color: #f27474; }\n .swal2-icon.swal2-error .swal2-x-mark {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1; }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'] {\n display: block;\n position: absolute;\n top: 37px;\n width: 47px;\n height: 5px;\n border-radius: 2px;\n background-color: #f27474; }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='left'] {\n left: 17px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg); }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='right'] {\n right: 16px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n .swal2-icon.swal2-warning, .swal2-icon.swal2-info, .swal2-icon.swal2-question {\n margin: .333333em auto .5em;\n font-family: inherit;\n font-size: 3.75em; }\n .swal2-icon.swal2-warning {\n border-color: #facea8;\n color: #f8bb86; }\n .swal2-icon.swal2-info {\n border-color: #9de0f6;\n color: #3fc3ee; }\n .swal2-icon.swal2-question {\n border-color: #c9dae1;\n color: #87adbd; }\n .swal2-icon.swal2-success {\n border-color: #a5dc86; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'] {\n position: absolute;\n width: 60px;\n height: 120px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n border-radius: 50%; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='left'] {\n top: -7px;\n left: -33px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 60px 60px;\n transform-origin: 60px 60px;\n border-radius: 120px 0 0 120px; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='right'] {\n top: -11px;\n left: 30px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 0 60px;\n transform-origin: 0 60px;\n border-radius: 0 120px 120px 0; }\n .swal2-icon.swal2-success .swal2-success-ring {\n position: absolute;\n top: -4px;\n left: -4px;\n width: 80px;\n height: 80px;
11\n border: 4px solid rgba(165, 220, 134, 0.3);\n border-radius: 50%;\n z-index: 2;\n -webkit-box-sizing: content-box;\n box-sizing: content-box; }\n .swal2-icon.swal2-success .swal2-success-fix {\n position: absolute;\n top: 8px;\n left: 26px;\n width: 7px;\n height: 90px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n z-index: 1; }\n .swal2-icon.swal2-success [class^='swal2-success-line'] {\n display: block;\n position: absolute;\n height: 5px;\n border-radius: 2px;\n background-color: #a5dc86;\n z-index: 2; }\n .swal2-icon.swal2-success [class^='swal2-success-line'][class$='tip'] {\n top: 46px;\n left: 14px;\n width: 25px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg); }\n .swal2-icon.swal2-success [class^='swal2-success-line'][class$='long'] {\n top: 38px;\n right: 8px;\n width: 47px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n\n.swal2-progresssteps {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin: 0 0 1.25em;\n padding: 0;\n font-weight: 600; }\n .swal2-progresssteps li {\n display: inline-block;\n position: relative; }\n .swal2-progresssteps .swal2-progresscircle {\n width: 2em;\n height: 2em;\n border-radius: 2em;\n background: #3085d6;\n color: #fff;\n line-height: 2em;\n text-align: center;\n z-index: 20; }\n .swal2-progresssteps .swal2-progresscircle:first-child {\n margin-left: 0; }\n .swal2-progresssteps .swal2-progresscircle:last-child {\n margin-right: 0; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep {\n background: #3085d6; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle {\n background: #add8e6; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline {\n background: #add8e6; }\n .swal2-progresssteps .swal2-progressline {\n width: 2.5em;\n height: .4em;\n margin: 0 -1px;\n background: #3085d6;\n z-index: 10; }\n\n[class^='swal2'] {\n -webkit-tap-highlight-color: transparent; }\n\n.swal2-show {\n -webkit-animation: swal2-show 0.3s;\n animation: swal2-show 0.3s; }\n .swal2-show.swal2-noanimation {\n -webkit-animation: none;\n animation: none; }\n\n.swal2-hide {\n -webkit-animation: swal2-hide 0.15s forwards;\n animation: swal2-hide 0.15s forwards; }\n .swal2-hide.swal2-noanimation {\n -webkit-animation: none;\n animation: none; }\n\n[dir='rtl'] .swal2-close {\n right: auto;\n left: 0; }\n\n.swal2-animate-success-icon .swal2-success-line-tip {\n -webkit-animation: swal2-animate-success-line-tip 0.75s;\n animation: swal2-animate-success-line-tip 0.75s; }\n\n.swal2-animate-success-icon .swal2-success-line-long {\n -webkit-animation: swal2-animate-success-line-long 0.75s;\n animation: swal2-animate-success-line-long 0.75s; }\n\n.swal2-animate-success-icon .swal2-success-circular-line-right {\n -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in;\n animation: swal2-rotate-success-circular-line 4.25s ease-in; }\n\n.swal2-animate-error-icon {\n -webkit-animation: swal2-animate-error-icon 0.5s;\n animation: swal2-animate-error-icon 0.5s; }\n .swal2-animate-error-icon .swal2-x-mark {\n -webkit-animation: swal2-animate-error-x-mark 0.5s;\n animation: swal2-animate-error-x-mark 0.5s; }\n\n@-webkit-keyframes swal2-rotate-loading {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes swal2-rotate-loading {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n"; 12 13var defaultParams = { 14 title: '', 15 titleText: '', 16 text: '', 17 html: '', 18 footer: '', 19 type: null, 20 toast: false, 21 customClass: '', 22 target: 'body', 23 backdrop: true, 24 animation: true, 25 allowOutsideClick: true, 26 allowEscapeKey: true, 27 allowEnterKey: true, 28 showConfirmButton: true,
29 showCancelButton: false, 30 preConfirm: null, 31 confirmButtonText: 'OK', 32 confirmButtonAriaLabel: '', 33 confirmButtonColor: null, 34 confirmButtonClass: null, 35 cancelButtonText: 'Cancel', 36 cancelButtonAriaLabel: '', 37 cancelButtonColor: null, 38 cancelButtonClass: null, 39 buttonsStyling: true, 40 reverseButtons: false, 41 focusConfirm: true, 42 focusCancel: false, 43 showCloseButton: false, 44 closeButtonAriaLabel: 'Close this dialog', 45 showLoaderOnConfirm: false, 46 imageUrl: null, 47 imageWidth: null, 48 imageHeight: null, 49 imageAlt: '', 50 imageClass: null, 51 timer: null, 52 width: null, 53 padding: null, 54 background: null, 55 input: null, 56 inputPlaceholder: '', 57 inputValue: '', 58 inputOptions: {}, 59 inputAutoTrim: true, 60 inputClass: null, 61 inputAttributes: {}, 62 inputValidator: null, 63 grow: false, 64 position: 'center', 65 progressSteps: [], 66 currentProgressStep: null, 67 progressStepsDistance: null, 68 onBeforeOpen: null, 69 onOpen: null, 70 onClose: null, 71 useRejections: false, 72 expectRejections: false 73}; 74 75var deprecatedParams = ['useRejections', 'expectRejections']; 76 77var swalPrefix = 'swal2-'; 78 79var prefix = function prefix(items) { 80 var result = {}; 81 for (var i in items) { 82 result[items[i]] = swalPrefix + items[i]; 83 } 84 return result; 85}; 86 87var swalClasses = prefix(['container', 'shown', 'iosfix', 'popup', 'modal', 'no-backdrop', 'toast', 'toast-shown', 'fade', 'show', 'hide', 'noanimation', 'close', 'title', 'header', 'content', 'actions', 'confirm', 'cancel', 'footer', 'icon', 'image', 'input', 'has-input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea', 'inputerror', 'validationerror', 'progresssteps', 'activeprogressstep', 'progresscircle', 'progressline', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen']); 88 89var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); 90 91var consolePrefix = 'SweetAlert2:'; 92 93/** 94 * Filter the unique values into a new array 95 * @param arr 96 */ 97var uniqueArray = function uniqueArray(arr) { 98 var result = []; 99 for (var i = 0; i < arr.length; i++) { 100 if (result.indexOf(arr[i]) === -1) { 101 result.push(arr[i]); 102 } 103 } 104 return result; 105}; 106 107/** 108 * Converts `inputOptions` into an array of `[value, label]`s 109 * @param inputOptions 110 */ 111var formatInputOptions = function formatInputOptions(inputOptions) { 112 var result = []; 113 if (inputOptions instanceof Map) { 114 inputOptions.forEach(function (value, key) { 115 result.push([key, value]); 116 }); 117 } else { 118 Object.keys(inputOptions).forEach(function (key) { 119 result.push([key, inputOptions[key]]); 120 }); 121 } 122 return result; 123}; 124 125/** 126 * Standardise console warnings 127 * @param message 128 */ 129var warn = function warn(message) { 130 console.warn(consolePrefix + ' ' + message); 131}; 132 133/** 134 * Standardise console errors 135 * @param message 136 */ 137var error = function error(message) { 138 console.error(consolePrefix + ' ' + message); 139}; 140 141/** 142 * Private global state for `warnOnce` 143 * @type {Array} 144 * @private 145 */ 146var previousWarnOnceMessages = []; 147 148/** 149 * Show a console warning, but only if it hasn't already been shown 150 * @param message 151 */ 152var warnOnce = function warnOnce(message) { 153 if (!(previousWarnOnceMessages.indexOf(message) !== -1)) { 154 previousWarnOnceMessages.push(message); 155 warn(message); 156 } 157}; 158 159/** 160 * If `arg` is a function, call it (with no arguments or context) and return the result. 161 * Otherwise, just pass the value through 162 * @param arg 163 */ 164var callIfFunction = function callIfFunction(arg) { 165 return typeof arg === 'function' ? arg() : arg; 166}; 167 168var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { 169 return typeof obj; 170} : function (obj) { 171 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 172}; 173 174var _extends = Object.assign || function (target) { 175 for (var i = 1; i < arguments.length; i++) { 176 var source = arguments[i]; 177 178 for (var key in source) { 179 if (Object.prototype.hasOwnProperty.call(source, key)) { 180 target[key] = source[key]; 181 } 182 } 183 } 184 185 return target; 186}; 187 188var slicedToArray = function () { 189 function sliceIterator(arr, i) { 190 var _arr = []; 191 var _n = true; 192 var _d = false;
193 var _e = undefined; 194 195 try { 196 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 197 _arr.push(_s.value); 198 199 if (i && _arr.length === i) break; 200 } 201 } catch (err) { 202 _d = true; 203 _e = err; 204 } finally { 205 try { 206 if (!_n && _i["return"]) _i["return"](); 207 } finally { 208 if (_d) throw _e; 209 } 210 } 211 212 return _arr; 213 } 214 215 return function (arr, i) { 216 if (Array.isArray(arr)) { 217 return arr; 218 } else if (Symbol.iterator in Object(arr)) { 219 return sliceIterator(arr, i); 220 } else { 221 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 222 } 223 }; 224}(); 225 226var popupParams = _extends({}, defaultParams); 227var queue = []; 228 229var previousWindowKeyDown = void 0, 230 windowOnkeydownOverridden = void 0; 231 232/** 233 * Show relevant warnings for given params 234 * 235 * @param params 236 */ 237var showWarningsForParams = function showWarningsForParams(params) { 238 for (var param in params) { 239 if (!sweetAlert.isValidParameter(param)) { 240 warn('Unknown parameter "' + param + '"'); 241 } 242 if (sweetAlert.isDeprecatedParameter(param)) { 243 warnOnce('The parameter "' + param + '" is deprecated and will be removed in the next major release.'); 244 } 245 } 246}; 247 248/** 249 * Set type, text and actions on popup 250 * 251 * @param params 252 * @returns {boolean} 253 */ 254var setParameters = function setParameters(params) { 255 // Determine if the custom target element is valid 256 if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { 257 warn('Target parameter is not valid, defaulting to "body"'); 258 params.target = 'body'; 259 } 260 261 var popup = void 0; 262 var oldPopup = getPopup(); 263 var targetElement = typeof params.target === 'string' ? document.querySelector(params.target) : params.target; 264 // If the model target has changed, refresh the popup 265 if (oldPopup && targetElement && oldPopup.parentNode !== targetElement.parentNode) { 266 popup = init(params); 267 } else { 268 popup = oldPopup || init(params); 269 } 270 271 // Set popup width 272 if (params.width) { 273 popup.style.width = typeof params.width === 'number' ? params.width + 'px' : params.width; 274 } 275 276 // Set popup padding 277 if (params.padding) { 278 popup.style.padding = typeof params.padding === 'number' ? params.padding + 'px' : params.padding; 279 } 280 281 // Set popup background 282 if (params.background) { 283 popup.style.background = params.background; 284 } 285 var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); 286 var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); 287 for (var i = 0; i < successIconParts.length; i++) { 288 successIconParts[i].style.backgroundColor = popupBackgroundColor; 289 } 290 291 var container = getContainer(); 292 var title = getTitle(); 293 var content = getContent().querySelector('#' + swalClasses.content); 294 var actions = getActions(); 295 var confirmButton = getConfirmButton(); 296 var cancelButton = getCancelButton(); 297 var closeButton = getCloseButton(); 298 var footer = getFooter(); 299 300 // Title 301 if (params.titleText) { 302 title.innerText = params.titleText; 303 } else if (params.title) { 304 title.innerHTML = params.title.split('\n').join('<br />'); 305 } 306 307 if (typeof params.backdrop === 'string') { 308 getContainer().style.background = params.backdrop; 309 } else if (!params.backdrop) { 310 addClass([document.documentElement, document.body], swalClasses['no-backdrop']); 311 } 312 313 // Content as HTML 314 if (params.html) { 315 parseHtmlToContainer(params.html, content); 316 317 // Content as plain text 318 } else if (params.text) { 319 content.textContent = params.text; 320 show(content); 321 } else { 322 hide(content); 323 } 324 325 // Position 326 if (params.position in swalClasses) { 327 addClass(container, swalClasses[params.position]); 328 } else { 329 warn('The "position" parameter is not valid, defaulting to "center"'); 330 addClass(container, swalClasses.center); 331 } 332 333 // Grow 334 if (params.grow && typeof params.grow === 'string') { 335 var growClass = 'grow-' + params.grow; 336 if (growClass in swalClasses) { 337 addClass(container, swalClasses[growClass]); 338 } 339 } 340 341 // Animation 342 if (typeof params.animation === 'function') { 343 params.animation = params.animation.call(); 344 } 345 346 // Close button 347 if (params.showCloseButton) { 348 closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); 349 show(closeButton); 350 } else { 351 hide(closeButton); 352 } 353 354 // Default Class 355 popup.className = swalClasses.popup; 356 if (params.toast) { 357 addClass([document.documentElement, document.body], swalClasses['toast-shown']); 358 addClass(popup, swalClasses.toast); 359 } else { 360 addClass(popup, swalClasses.modal); 361 } 362 363 // Custom Class 364 if (params.customClass) { 365 addClass(popup, params.customClass); 366 } 367 368 // Progress steps 369 var progressStepsContainer = getProgressSteps(); 370 var currentProgressStep = parseInt(params.currentProgressStep === null ? sweetAlert.getQueueStep() : params.currentProgressStep, 10); 371 if (params.progressSteps && params.progressSteps.length) { 372 show(progressStepsContainer); 373 empty(progressStepsContainer); 374 if (currentProgressStep >= params.progressSteps.length) { 375 warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); 376 } 377 params.progressSteps.forEach(function (step, index) { 378 var circle = document.createElement('li'); 379 addClass(circle, swalClasses.progresscircle); 380 circle.innerHTML = step; 381 if (index === currentProgressStep) { 382 addClass(circle, swalClasses.activeprogressstep); 383 } 384 progressStepsContainer.appendChild(circle); 385 if (index !== params.progressSteps.length - 1) { 386 var line = document.createElement('li'); 387 addClass(line, swalClasses.progressline); 388 if (params.progressStepsDistance) { 389 line.style.width = params.progressStepsDistance; 390 } 391 progressStepsContainer.appendChild(line); 392 } 393 }); 394 } else { 395 hide(progressStepsContainer); 396 } 397 398 // Icon 399 var icons = getIcons(); 400 for (var _i = 0; _i < icons.length; _i++) { 401 hide(icons[_i]); 402 } 403 if (params.type) {
404 var validType = false; 405 for (var iconType in iconTypes) { 406 if (params.type === iconType) { 407 validType = true; 408 break; 409 } 410 } 411 if (!validType) { 412 error('Unknown alert type: ' + params.type); 413 return false; 414 } 415 var icon = popup.querySelector('.' + swalClasses.icon + '.' + iconTypes[params.type]); 416 show(icon); 417 418 // Animate icon 419 if (params.animation) { 420 addClass(icon, 'swal2-animate-' + params.type + '-icon'); 421 } 422 } 423 424 // Custom image 425 var image = getImage(); 426 if (params.imageUrl) { 427 image.setAttribute('src', params.imageUrl); 428 image.setAttribute('alt', params.imageAlt); 429 show(image); 430 431 if (params.imageWidth) { 432 image.setAttribute('width', params.imageWidth); 433 } else { 434 image.removeAttribute('width'); 435 } 436 437 if (params.imageHeight) { 438 image.setAttribute('height', params.imageHeight); 439 } else { 440 image.removeAttribute('height'); 441 } 442 443 image.className = swalClasses.image; 444 if (params.imageClass) { 445 addClass(image, params.imageClass); 446 } 447 } else { 448 hide(image); 449 } 450 451 // Cancel button 452 if (params.showCancelButton) { 453 cancelButton.style.display = 'inline-block'; 454 } else { 455 hide(cancelButton); 456 } 457 458 // Confirm button 459 if (params.showConfirmButton) { 460 removeStyleProperty(confirmButton, 'display'); 461 } else { 462 hide(confirmButton); 463 } 464 465 // Actions (buttons) wrapper 466 if (!params.showConfirmButton && !params.showCancelButton) { 467 hide(actions); 468 } else { 469 show(actions); 470 } 471 472 // Edit text on confirm and cancel buttons 473 confirmButton.innerHTML = params.confirmButtonText; 474 cancelButton.innerHTML = params.cancelButtonText; 475 476 // ARIA labels for confirm and cancel buttons 477 confirmButton.setAttribute('aria-label', params.confirmButtonAriaLabel); 478 cancelButton.setAttribute('aria-label', params.cancelButtonAriaLabel); 479 480 // Add buttons custom classes 481 confirmButton.className = swalClasses.confirm; 482 addClass(confirmButton, params.confirmButtonClass); 483 cancelButton.className = swalClasses.cancel; 484 addClass(cancelButton, params.cancelButtonClass); 485 486 // Buttons styling 487 if (params.buttonsStyling) { 488 addClass([confirmButton, cancelButton], swalClasses.styled); 489 490 // Buttons background colors 491 if (params.confirmButtonColor) { 492 confirmButton.style.backgroundColor = params.confirmButtonColor; 493 } 494 if (params.cancelButtonColor) { 495 cancelButton.style.backgroundColor = params.cancelButtonColor; 496 } 497 498 // Loading state 499 var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color'); 500 confirmButton.style.borderLeftColor = confirmButtonBackgroundColor; 501 confirmButton.style.borderRightColor = confirmButtonBackgroundColor; 502 } else { 503 removeClass([confirmButton, cancelButton], swalClasses.styled); 504 505 confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = ''; 506 cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = ''; 507 } 508 509 // Footer 510 parseHtmlToContainer(params.footer, footer); 511 512 // CSS animation 513 if (params.animation === true) { 514 removeClass(popup, swalClasses.noanimation); 515 } else { 516 addClass(popup, swalClasses.noanimation); 517 } 518 519 // showLoaderOnConfirm && preConfirm 520 if (params.showLoaderOnConfirm && !params.preConfirm) { 521 warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request'); 522 } 523}; 524 525/** 526 * Animations 527 * 528 * @param animation 529 * @param onBeforeOpen 530 * @param onComplete 531 */ 532var openPopup = function openPopup(animation, onBeforeOpen, onComplete) { 533 var container = getContainer(); 534 var popup = getPopup(); 535 536 if (onBeforeOpen !== null && typeof onBeforeOpen === 'function') { 537 onBeforeOpen(popup); 538 } 539 540 if (animation) { 541 addClass(popup, swalClasses.show); 542 addClass(container, swalClasses.fade); 543 removeClass(popup, swalClasses.hide); 544 } else { 545 removeClass(popup, swalClasses.fade); 546 } 547 show(popup); 548 549 // scrolling is 'hidden' until animation is done, after that 'auto' 550 container.style.overflowY = 'hidden'; 551 if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) { 552 popup.addEventListener(animationEndEvent, function swalCloseEventFinished() { 553 popup.removeEventListener(animationEndEvent, swalCloseEventFinished); 554 container.style.overflowY = 'auto'; 555 }); 556 } else { 557 container.style.overflowY = 'auto'; 558 } 559 560 addClass([document.documentElement, document.body, container], swalClasses.shown); 561 if (isModal()) { 562 fixScrollbar(); 563 iOSfix(); 564 } 565 states.previousActiveElement = document.activeElement; 566 if (onComplete !== null && typeof onComplete === 'function') { 567 setTimeout(function () { 568 onComplete(popup); 569 }); 570 } 571}; 572 573var fixScrollbar = function fixScrollbar() { 574 // for queues, do not do this more than once 575 if (states.previousBodyPadding !== null) { 576 return; 577 } 578 // if the body has overflow 579 if (document.body.scrollHeight > window.innerHeight) { 580 // add padding so the content doesn't shift after removal of scrollbar 581 states.previousBodyPadding = document.body.style.paddingRight; 582 document.body.style.paddingRight = measureScrollbar() + 'px'; 583 } 584}; 585 586var undoScrollbar = function undoScrollbar() { 587 if (states.previousBodyPadding !== null) { 588 document.body.style.paddingRight = states.previousBodyPadding; 589 states.previousBodyPadding = null; 590 } 591}; 592 593// Fix iOS scrolling http://stackoverflow.com/q/39626302/1331425 594var iOSfix = function iOSfix() { 595 var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 596 if (iOS && !hasClass(document.body, swalClasses.iosfix)) { 597 var offset = document.body.scrollTop; 598 document.body.style.top = offset * -1 + 'px'; 599 addClass(document.body, swalClasses.iosfix); 600 } 601}; 602 603var undoIOSfix = function undoIOSfix() { 604 if (hasClass(document.body, swalClasses.iosfix)) { 605 var offset = parseInt(document.body.style.top, 10); 606 removeClass(document.body, swalClasses.iosfix); 607 document.body.style.top = ''; 608 document.body.scrollTop = offset * -1; 609 } 610}; 611 612// SweetAlert entry point 613var sweetAlert = function sweetAlert() { 614 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 615 args[_key] = arguments[_key]; 616 } 617 618 // Prevent run in Node env 619 if (typeof window === 'undefined') { 620 return; 621 } 622 623 // Check for the existence of Promise 624 if (typeof Promise === 'undefined') { 625 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)'); 626 } 627 628 if (typeof args[0] === 'undefined') { 629 error('SweetAlert2 expects at least 1 attribute!'); 630 return false;
631 } 632 633 var params = _extends({}, popupParams); 634 635 switch (_typeof(args[0])) { 636 case 'string': 637 params.title = args[0]; 638 params.html = args[1]; 639 params.type = args[2]; 640 641 break; 642 643 case 'object': 644 showWarningsForParams(args[0]); 645 _extends(params, args[0]); 646 params.extraParams = args[0].extraParams; 647 648 if (params.input === 'email' && params.inputValidator === null) { 649 var inputValidator = function inputValidator(email) { 650 return new Promise(function (resolve, reject) { 651 var emailRegex = /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/; 652 if (emailRegex.test(email)) { 653 resolve(); 654 } else { 655 reject('Invalid email address'); 656 } 657 }); 658 }; 659 params.inputValidator = params.expectRejections ? inputValidator : sweetAlert.adaptInputValidator(inputValidator); 660 } 661 662 if (params.input === 'url' && params.inputValidator === null) { 663 var _inputValidator = function _inputValidator(url) { 664 return new Promise(function (resolve, reject) { 665 // taken from https://stackoverflow.com/a/3809435/1331425 666 var urlRegex = /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/; 667 if (urlRegex.test(url)) { 668 resolve(); 669 } else { 670 reject('Invalid URL'); 671 } 672 }); 673 }; 674 params.inputValidator = params.expectRejections ? _inputValidator : sweetAlert.adaptInputValidator(_inputValidator); 675 } 676 break; 677 678 default: 679 error('Unexpected type of argument! Expected "string" or "object", got ' + _typeof(args[0])); 680 return false; 681 } 682 683 setParameters(params); 684 685 var container = getContainer(); 686 var popup = getPopup(); 687 688 return new Promise(function (resolve, reject) { 689 // functions to handle all resolving/rejecting/settling 690 var succeedWith = function succeedWith(value) { 691 sweetAlert.closePopup(params.onClose); 692 if (params.useRejections) { 693 resolve(value); 694 } else { 695 resolve({ value: value }); 696 } 697 }; 698 var dismissWith = function dismissWith(dismiss) { 699 sweetAlert.closePopup(params.onClose); 700 if (params.useRejections) { 701 reject(dismiss); 702 } else { 703 resolve({ dismiss: dismiss }); 704 } 705 }; 706 var errorWith = function errorWith(error$$1) { 707 sweetAlert.closePopup(params.onClose); 708 reject(error$$1); 709 }; 710 711 // Close on timer 712 if (params.timer) { 713 popup.timeout = setTimeout(function () { 714 return dismissWith('timer'); 715 }, params.timer); 716 } 717 718 // Get input element by specified type or, if type isn't specified, by params.input 719 var getInput = function getInput(inputType) { 720 inputType = inputType || params.input; 721 if (!inputType) { 722 return null; 723 } 724 switch (inputType) { 725 case 'select': 726 case 'textarea': 727 case 'file': 728 return getChildByClass(content, swalClasses[inputType]); 729 case 'checkbox': 730 return popup.querySelector('.' + swalClasses.checkbox + ' input'); 731 case 'radio': 732 return popup.querySelector('.' + swalClasses.radio + ' input:checked') || popup.querySelector('.' + swalClasses.radio + ' input:first-child'); 733 case 'range': 734 return popup.querySelector('.' + swalClasses.range + ' input'); 735 default: 736 return getChildByClass(content, swalClasses.input); 737 } 738 }; 739 740 // Get the value of the popup input 741 var getInputValue = function getInputValue() { 742 var input = getInput(); 743 if (!input) { 744 return null; 745 } 746 switch (params.input) { 747 case 'checkbox': 748 return input.checked ? 1 : 0; 749 case 'radio': 750 return input.checked ? input.value : null; 751 case 'file': 752 return input.files.length ? input.files[0] : null; 753 default: 754 return params.inputAutoTrim ? input.value.trim() : input.value; 755 } 756 }; 757 758 // input autofocus 759 if (params.input) { 760 setTimeout(function () { 761 var input = getInput(); 762 if (input) { 763 focusInput(input); 764 } 765 }, 0); 766 } 767 768 var confirm = function confirm(value) { 769 if (params.showLoaderOnConfirm) { 770 sweetAlert.showLoading(); 771 } 772 773 if (params.preConfirm) { 774 sweetAlert.resetValidationError(); 775 var preConfirmPromise = Promise.resolve().then(function () { 776 return params.preConfirm(value, params.extraParams); 777 }); 778 if (params.expectRejections) { 779 preConfirmPromise.then(function (preConfirmValue) { 780 return succeedWith(preConfirmValue || value); 781 }, function (validationError) { 782 sweetAlert.hideLoading(); 783 if (validationError) { 784 sweetAlert.showValidationError(validationError); 785 } 786 }); 787 } else { 788 preConfirmPromise.then(function (preConfirmValue) { 789 if (isVisible(getValidationError()) || preConfirmValue === false) { 790 sweetAlert.hideLoading(); 791 } else { 792 succeedWith(preConfirmValue || value); 793 } 794 }, function (error$$1) { 795 return errorWith(error$$1); 796 }); 797 } 798 } else { 799 succeedWith(value); 800 } 801 }; 802 803 // Mouse interactions 804 var onButtonEvent = function onButtonEvent(event) { 805 var e = event || window.event; 806 var target = e.target || e.srcElement; 807 var confirmButton = getConfirmButton(); 808 var cancelButton = getCancelButton(); 809 var targetedConfirm = confirmButton && (confirmButton === target || confirmButton.contains(target)); 810 var targetedCancel = cancelButton && (cancelButton === target || cancelButton.contains(target)); 811 812 switch (e.type) { 813 case 'click': 814 // Clicked 'confirm' 815 if (targetedConfirm && sweetAlert.isVisible()) { 816 sweetAlert.disableButtons(); 817 if (params.input) { 818 var inputValue = getInputValue(); 819 820 if (params.inputValidator) { 821 sweetAlert.disableInput();
822 var validationPromise = Promise.resolve().then(function () { 823 return params.inputValidator(inputValue, params.extraParams); 824 }); 825 if (params.expectRejections) { 826 validationPromise.then(function () { 827 sweetAlert.enableButtons(); 828 sweetAlert.enableInput(); 829 confirm(inputValue); 830 }, function (validationError) { 831 sweetAlert.enableButtons(); 832 sweetAlert.enableInput(); 833 if (validationError) { 834 sweetAlert.showValidationError(validationError); 835 } 836 }); 837 } else { 838 validationPromise.then(function (validationError) { 839 sweetAlert.enableButtons(); 840 sweetAlert.enableInput(); 841 if (validationError) { 842 sweetAlert.showValidationError(validationError); 843 } else { 844 confirm(inputValue); 845 } 846 }, function (error$$1) { 847 return errorWith(error$$1); 848 }); 849 } 850 } else { 851 confirm(inputValue); 852 } 853 } else { 854 confirm(true); 855 } 856 857 // Clicked 'cancel' 858 } else if (targetedCancel && sweetAlert.isVisible()) { 859 sweetAlert.disableButtons(); 860 dismissWith(sweetAlert.DismissReason.cancel); 861 } 862 break; 863 default: 864 } 865 }; 866 867 var buttons = popup.querySelectorAll('button'); 868 for (var i = 0; i < buttons.length; i++) { 869 buttons[i].onclick = onButtonEvent; 870 buttons[i].onmouseover = onButtonEvent; 871 buttons[i].onmouseout = onButtonEvent; 872 buttons[i].onmousedown = onButtonEvent; 873 } 874 875 // Closing popup by close button 876 getCloseButton().onclick = function () { 877 dismissWith(sweetAlert.DismissReason.close); 878 }; 879 880 if (params.toast) { 881 // Closing popup by backdrop click 882 popup.onclick = function (e) { 883 if (e.target !== popup || params.showConfirmButton || params.showCancelButton) { 884 return; 885 } 886 if (params.allowOutsideClick) { 887 sweetAlert.closePopup(params.onClose); 888 dismissWith(sweetAlert.DismissReason.backdrop); 889 } 890 }; 891 } else { 892 var ignoreOutsideClick = false; 893 894 // Ignore click events that had mousedown on the popup but mouseup on the container 895 // This can happen when the user drags a slider 896 popup.onmousedown = function () { 897 container.onmouseup = function (e) { 898 container.onmouseup = undefined; 899 // We only check if the mouseup target is the container because usually it doesn't 900 // have any other direct children aside of the popup 901 if (e.target === container) { 902 ignoreOutsideClick = true; 903 } 904 }; 905 }; 906 907 // Ignore click events that had mousedown on the container but mouseup on the popup 908 container.onmousedown = function () { 909 popup.onmouseup = function (e) { 910 popup.onmouseup = undefined; 911 // We also need to check if the mouseup target is a child of the popup 912 if (e.target === popup || popup.contains(e.target)) { 913 ignoreOutsideClick = true; 914 } 915 }; 916 }; 917 918 container.onclick = function (e) { 919 if (ignoreOutsideClick) { 920 ignoreOutsideClick = false; 921 return; 922 } 923 if (e.target !== container) { 924 return; 925 } 926 if (callIfFunction(params.allowOutsideClick)) { 927 dismissWith(sweetAlert.DismissReason.backdrop); 928 } 929 }; 930 } 931 932 var content = getContent(); 933 var actions = getActions(); 934 var confirmButton = getConfirmButton(); 935 var cancelButton = getCancelButton(); 936 937 // Reverse buttons (Confirm on the right side) 938 if (params.reverseButtons) { 939 confirmButton.parentNode.insertBefore(cancelButton, confirmButton); 940 } else { 941 confirmButton.parentNode.insertBefore(confirmButton, cancelButton); 942 } 943 944 // Focus handling 945 var setFocus = function setFocus(index, increment) { 946 var focusableElements = getFocusableElements(params.focusCancel); 947 // search for visible elements and select the next possible match 948 for (var _i2 = 0;
948 _i2 < focusableElements.length; _i2++) { 949 index = index + increment; 950 951 // rollover to first item 952 if (index === focusableElements.length) { 953 index = 0; 954 955 // go to last item 956 } else if (index === -1) { 957 index = focusableElements.length - 1; 958 } 959 960 // determine if element is visible 961 var el = focusableElements[index]; 962 if (isVisible(el)) { 963 return el.focus(); 964 } 965 } 966 }; 967 968 var handleKeyDown = function handleKeyDown(event) { 969 var e = event || window.event; 970 971 var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11 972 ]; 973 974 if (e.key === 'Enter' && !e.isComposing) { 975 if (e.target === getInput()) { 976 if (['textarea', 'file'].indexOf(params.input) !== -1) { 977 return; // do not submit 978 } 979 980 sweetAlert.clickConfirm(); 981 e.preventDefault(); 982 } 983 984 // TAB 985 } else if (e.key === 'Tab') { 986 var targetElement = e.target || e.srcElement; 987 988 var focusableElements = getFocusableElements(params.focusCancel); 989 var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. 990 for (var _i3 = 0; _i3 < focusableElements.length; _i3++) { 991 if (targetElement === focusableElements[_i3]) { 992 btnIndex = _i3; 993 break; 994 } 995 } 996 997 if (!e.shiftKey) { 998 // Cycle to the next button 999 setFocus(btnIndex, 1); 1000 } else { 1001 // Cycle to the prev button 1002 setFocus(btnIndex, -1); 1003 } 1004 e.stopPropagation(); 1005 e.preventDefault(); 1006 1007 // ARROWS - switch focus between buttons 1008 } else if (arrowKeys.indexOf(e.key) !== -1) { 1009 // focus Cancel button if Confirm button is currently focused 1010 if (document.activeElement === confirmButton && isVisible(cancelButton)) { 1011 cancelButton.focus(); 1012 // and vice versa 1013 } else if (document.activeElement === cancelButton && isVisible(confirmButton)) { 1014 confirmButton.focus(); 1015 } 1016 1017 // ESC 1018 } else if ((e.key === 'Escape' || e.key === 'Esc') && callIfFunction(params.allowEscapeKey) === true) { 1019 dismissWith(sweetAlert.DismissReason.esc); 1020 } 1021 }; 1022
1023 if (params.toast && windowOnkeydownOverridden) { 1024 window.onkeydown = previousWindowKeyDown; 1025 windowOnkeydownOverridden = false; 1026 } 1027 1028 if (!params.toast && !windowOnkeydownOverridden) { 1029 previousWindowKeyDown = window.onkeydown; 1030 windowOnkeydownOverridden = true; 1031 window.onkeydown = handleKeyDown; 1032 } 1033 1034 /** 1035 * Show spinner instead of Confirm button and disable Cancel button 1036 */ 1037 sweetAlert.hideLoading = sweetAlert.disableLoading = function () { 1038 if (!params.showConfirmButton) { 1039 hide(confirmButton); 1040 if (!params.showCancelButton) { 1041 hide(getActions()); 1042 } 1043 } 1044 removeClass([popup, actions], swalClasses.loading); 1045 popup.removeAttribute('aria-busy'); 1046 popup.removeAttribute('data-loading'); 1047 confirmButton.disabled = false; 1048 cancelButton.disabled = false; 1049 }; 1050 1051 sweetAlert.getTitle = function () { 1052 return getTitle(); 1053 }; 1054 sweetAlert.getContent = function () { 1055 return getContent(); 1056 }; 1057 sweetAlert.getInput = function () { 1058 return getInput(); 1059 }; 1060 sweetAlert.getImage = function () { 1061 return getImage(); 1062 }; 1063 sweetAlert.getButtonsWrapper = function () { 1064 return getButtonsWrapper(); 1065 }; 1066 sweetAlert.getActions = function () { 1067 return getActions(); 1068 }; 1069 sweetAlert.getConfirmButton = function () { 1070 return getConfirmButton(); 1071 }; 1072 sweetAlert.getCancelButton = function () { 1073 return getCancelButton(); 1074 }; 1075 sweetAlert.getFooter = function () { 1076 return getFooter(); 1077 }; 1078 sweetAlert.isLoading = function () { 1079 return isLoading(); 1080 }; 1081 1082 sweetAlert.enableButtons = function () { 1083 confirmButton.disabled = false; 1084 cancelButton.disabled = false; 1085 }; 1086 1087 sweetAlert.disableButtons = function () { 1088 confirmButton.disabled = true; 1089 cancelButton.disabled = true; 1090 }; 1091 1092 sweetAlert.enableConfirmButton = function () { 1093 confirmButton.disabled = false; 1094 }; 1095 1096 sweetAlert.disableConfirmButton = function () { 1097 confirmButton.disabled = true; 1098 }; 1099 1100 sweetAlert.enableInput = function () { 1101 var input = getInput(); 1102 if (!input) { 1103 return false; 1104 } 1105 if (input.type === 'radio') { 1106 var radiosContainer = input.parentNode.parentNode; 1107 var radios = radiosContainer.querySelectorAll('input'); 1108 for (var _i4 = 0; _i4 < radios.length; _i4++) { 1109 radios[_i4].disabled = false; 1110 } 1111 } else { 1112 input.disabled = false; 1113 } 1114 }; 1115 1116 sweetAlert.disableInput = function () { 1117 var input = getInput(); 1118 if (!input) { 1119 return false; 1120 } 1121 if (input && input.type === 'radio') { 1122 var radiosContainer = input.parentNode.parentNode; 1123 var radios = radiosContainer.querySelectorAll('input'); 1124 for (var _i5 = 0; _i5 < radios.length; _i5++) { 1125 radios[_i5].disabled = true; 1126 } 1127 } else { 1128 input.disabled = true; 1129 } 1130 }; 1131 1132 // Show block with validation error 1133 sweetAlert.showValidationError = function (error$$1) { 1134 var validationError = getValidationError(); 1135 validationError.innerHTML = error$$1; 1136 var popupComputedStyle = window.getComputedStyle(popup); 1137 validationError.style.marginLeft = '-' + popupComputedStyle.getPropertyValue('padding-left'); 1138 validationError.style.marginRight = '-' + popupComputedStyle.getPropertyValue('padding-right'); 1139 show(validationError); 1140 1141 var input = getInput(); 1142 if (input) { 1143 input.setAttribute('aria-invalid', true); 1144 input.setAttribute('aria-describedBy', swalClasses.validationerror); 1145 focusInput(input); 1146 addClass(input, swalClasses.inputerror); 1147 } 1148 }; 1149 1150 // Hide block with validation error 1151 sweetAlert.resetValidationError = function () { 1152 var validationError = getValidationError(); 1153 hide(validationError); 1154 1155 var input = getInput(); 1156 if (input) { 1157 input.removeAttribute('aria-invalid'); 1158 input.removeAttribute('aria-describedBy'); 1159 removeClass(input, swalClasses.inputerror); 1160 } 1161 }; 1162 1163 sweetAlert.getProgressSteps = function () { 1164 return params.progressSteps; 1165 }; 1166 1167 sweetAlert.setProgressSteps = function (progressSteps) { 1168 params.progressSteps = progressSteps; 1169 setParameters(params); 1170 }; 1171 1172 sweetAlert.showProgressSteps = function () { 1173 show(getProgressSteps()); 1174 }; 1175 1176 sweetAlert.hideProgressSteps = function () { 1177 hide(getProgressSteps()); 1178 }; 1179 1180 sweetAlert.enableButtons(); 1181 sweetAlert.hideLoading(); 1182 sweetAlert.resetValidationError(); 1183 1184 if (params.input) { 1185 addClass(document.body, swalClasses['has-input']); 1186 } 1187 1188 // inputs 1189 var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; 1190 var input = void 0; 1191 for (var _i6 = 0; _i6 < inputTypes.length; _i6++) { 1192 var inputClass = swalClasses[inputTypes[_i6]]; 1193 var inputContainer = getChildByClass(content, inputClass); 1194 input = getInput(inputTypes[_i6]); 1195 1196 // set attributes 1197 if (input) { 1198 for (var j in input.attributes) { 1199 if (input.attributes.hasOwnProperty(j)) { 1200 var attrName = input.attributes[j].name; 1201 if (attrName !== 'type' && attrName !== 'value') { 1202 input.removeAttribute(attrName); 1203 } 1204 } 1205 } 1206 for (var attr in params.inputAttributes) { 1207 input.setAttribute(attr, params.inputAttributes[attr]); 1208 } 1209 } 1210 1211 // set class 1212 inputContainer.className = inputClass; 1213 if (params.inputClass) { 1214 addClass(inputContainer, params.inputClass); 1215 } 1216 1217 hide(inputContainer); 1218 } 1219 1220 var populateInputOptions = void 0; 1221 switch (params.input) { 1222 case 'text': 1223 case 'email': 1224 case 'password': 1225 case 'number': 1226 case 'tel': 1227 case 'url': 1228 input = getChildByClass(content, swalClasses.input); 1229 input.value = params.inputValue; 1230 input.placeholder = params.inputPlaceholder; 1231 input.type = params.input; 1232 show(input); 1233 break; 1234 case 'file': 1235 input = getChildByClass(content, swalClasses.file); 1236 input.placeholder = params.inputPlaceholder; 1237 input.type = params.input; 1238 show(input); 1239 break; 1240 case 'range': 1241 var range = getChildByClass(content, swalClasses.range); 1242 var rangeInput = range.querySelector('input'); 1243 var rangeOutput = range.querySelector('output'); 1244 rangeInput.value = params.inputValue; 1245 rangeInput.type = params.input; 1246 rangeOutput.value = params.inputValue; 1247 show(range); 1248 break; 1249 case 'select': 1250 var select = getChildByClass(content, swalClasses.select); 1251 select.innerHTML = ''; 1252 if (params.inputPlaceholder) { 1253 var placeholder = document.createElement('option'); 1254 placeholder.innerHTML = params.inputPlaceholder; 1255 placeholder.value = ''; 1256 placeholder.disabled = true; 1257 placeholder.selected = true; 1258 select.appendChild(placeholder); 1259 } 1260 populateInputOptions = function populateInputOptions(inputOptions) { 1261 inputOptions.forEach(function (_ref) { 1262 var _ref2 = slicedToArray(_ref, 2), 1263 optionValue = _ref2[0], 1264 optionLabel = _ref2[1]; 1265 1266 var option = document.createElement('option'); 1267 option.value = optionValue; 1268 option.innerHTML = optionLabel; 1269 if (params.inputValue.toString() === optionValue.toString()) { 1270 option.selected = true; 1271 } 1272 select.appendChild(option); 1273 }); 1274 show(select); 1275 select.focus(); 1276 }; 1277 break; 1278 case 'radio': 1279 var radio = getChildByClass(content, swalClasses.radio); 1280 radio.innerHTML = ''; 1281 populateInputOptions = function populateInputOptions(inputOptions) { 1282 inputOptions.forEach(function (_ref3) { 1283 var _ref4 = slicedToArray(_ref3, 2), 1284 radioValue = _ref4[0], 1285 radioLabel = _ref4[1]; 1286 1287 var radioInput = document.createElement('input'); 1288 var radioLabelElement = document.createElement('label'); 1289 radioInput.type = 'radio'; 1290 radioInput.name = swalClasses.radio; 1291 radioInput.value = radioValue; 1292 if (params.inputValue.toString() === radioValue.toString()) { 1293 radioInput.checked = true; 1294 } 1295 radioLabelElement.innerHTML = radioLabel; 1296 radioLabelElement.insertBefore(radioInput, radioLabelElement.firstChild); 1297 radio.appendChild(radioLabelElement); 1298 }); 1299 show(radio); 1300 var radios = radio.querySelectorAll('input'); 1301 if (radios.length) { 1302 radios[0].focus(); 1303 } 1304 }; 1305 break; 1306 case 'checkbox': 1307 var checkbox = getChildByClass(content, swalClasses.checkbox); 1308 var checkboxInput = getInput('checkbox'); 1309 checkboxInput.type = 'checkbox'; 1310 checkboxInput.value = 1; 1311 checkboxInput.id = swalClasses.checkbox; 1312 checkboxInput.checked = Boolean(params.inputValue); 1313 var label = checkbox.getElementsByTagName('span'); 1314 if (label.length) { 1315 checkbox.removeChild(label[0]); 1316 } 1317 label = document.createElement('span'); 1318 label.innerHTML = params.inputPlaceholder; 1319 checkbox.appendChild(label); 1320 show(checkbox); 1321 break; 1322 case 'textarea': 1323 var textarea = getChildByClass(content, swalClasses.textarea); 1324 textarea.value = params.inputValue; 1325 textarea.placeholder = params.inputPlaceholder; 1326 show(textarea); 1327 break; 1328 case null: 1329 break; 1330 default: 1331 error('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "' + params.input + '"'); 1332 break; 1333 } 1334 1335 if (params.input === 'select' || params.input === 'radio') { 1336 var processInputOptions = function processInputOptions(inputOptions) { 1337 return populateInputOptions(formatInputOptions(inputOptions)); 1338 }; 1339 if (params.inputOptions instanceof Promise) { 1340 sweetAlert.showLoading(); 1341 params.inputOptions.then(function (inputOptions) { 1342 sweetAlert.hideLoading(); 1343 processInputOptions(inputOptions); 1344 }); 1345 } else if (_typeof(params.inputOptions) === 'object') { 1346 processInputOptions(params.inputOptions); 1347 } else { 1348 error('Unexpected type of inputOptions! Expected object, Map or Promise, got ' + _typeof(params.inputOptions)); 1349 } 1350 } 1351 1352 openPopup(params.animation, params.onBeforeOpen, params.onOpen); 1353 1354 if (!params.toast) { 1355 if (!callIfFunction(params.allowEnterKey)) { 1356 if (document.activeElement) { 1357 document.activeElement.blur(); 1358 } 1359 } else if (params.focusCancel && isVisible(cancelButton)) { 1360 cancelButton.focus(); 1361 } else if (params.focusConfirm && isVisible(confirmButton)) { 1362 confirmButton.focus(); 1363 } else { 1364 setFocus(-1, 1); 1365 } 1366 } 1367 1368 // fix scroll 1369 getContainer().scrollTop = 0; 1370 }); 1371}; 1372 1373/* 1374 * Global function to determine if swal2 popup is shown 1375 */ 1376sweetAlert.isVisible = function () { 1377 return !!getPopup(); 1378}; 1379 1380/* 1381 * Global function for chaining sweetAlert popups 1382 */ 1383sweetAlert.queue = function (steps) { 1384 queue = steps; 1385 var resetQueue = function resetQueue() { 1386 queue = []; 1387 document.body.removeAttribute('data-swal2-queue-step'); 1388 }; 1389 var queueResult = []; 1390 return new Promise(function (resolve, reject) { 1391 (function step(i, callback) { 1392 if (i < queue.length) { 1393 document.body.setAttribute('data-swal2-queue-step', i); 1394 1395 sweetAlert(queue[i]).then(function (result) { 1396 if (typeof result.value !== 'undefined') { 1397 queueResult.push(result.value); 1398 step(i + 1, callback); 1399 } else { 1400 resetQueue(); 1401 resolve({ dismiss: result.dismiss }); 1402 } 1403 }); 1404 } else { 1405 resetQueue(); 1406 resolve({ value: queueResult }); 1407 } 1408 })(0); 1409 }); 1410}; 1411 1412/* 1413 * Global function for getting the index of current popup in queue 1414 */ 1415sweetAlert.getQueueStep = function () { 1416 return document.body.getAttribute('data-swal2-queue-step'); 1417}; 1418 1419/* 1420 * Global function for inserting a popup to the queue 1421 */ 1422sweetAlert.insertQueueStep = function (step, index) { 1423 if (index && index < queue.length) { 1424 return queue.splice(index, 0, step); 1425 } 1426 return queue.push(step); 1427}; 1428 1429/* 1430 * Global function for deleting a popup from the queue 1431 */ 1432sweetAlert.deleteQueueStep = function (index) { 1433 if (typeof queue[index] !== 'undefined') { 1434 queue.splice(index, 1); 1435 } 1436}; 1437 1438/* 1439 * Global function to close sweetAlert 1440 */ 1441sweetAlert.close = sweetAlert.closePopup = sweetAlert.closeModal = sweetAlert.closeToast = function (onComplete) { 1442 var container = getContainer(); 1443 var popup = getPopup(); 1444 if (!popup) { 1445 return; 1446 } 1447 removeClass(popup, swalClasses.show); 1448 addClass(popup, swalClasses.hide); 1449 clearTimeout(popup.timeout); 1450 1451 if (!isToast()) { 1452 resetPrevState(); 1453 window.onkeydown = previousWindowKeyDown;
1454 windowOnkeydownOverridden = false; 1455 } 1456 1457 var removePopupAndResetState = function removePopupAndResetState() { 1458 if (container.parentNode) { 1459 container.parentNode.removeChild(container); 1460 } 1461 removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['no-backdrop'], swalClasses['has-input'], swalClasses['toast-shown']]); 1462 1463 if (isModal()) { 1464 undoScrollbar(); 1465 undoIOSfix(); 1466 } 1467 }; 1468 1469 // If animation is supported, animate 1470 if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) { 1471 popup.addEventListener(animationEndEvent, function swalCloseEventFinished() { 1472 popup.removeEventListener(animationEndEvent, swalCloseEventFinished); 1473 if (hasClass(popup, swalClasses.hide)) { 1474 removePopupAndResetState(); 1475 } 1476 }); 1477 } else { 1478 // Otherwise, remove immediately 1479 removePopupAndResetState(); 1480 } 1481 if (onComplete !== null && typeof onComplete === 'function') { 1482 setTimeout(function () { 1483 onComplete(popup); 1484 }); 1485 } 1486}; 1487 1488/* 1489 * Global function to click 'Confirm' button 1490 */ 1491sweetAlert.clickConfirm = function () { 1492 return getConfirmButton().click(); 1493}; 1494 1495/* 1496 * Global function to click 'Cancel' button 1497 */ 1498sweetAlert.clickCancel = function () { 1499 return getCancelButton().click(); 1500}; 1501 1502/** 1503 * Show spinner instead of Confirm button and disable Cancel button 1504 */ 1505sweetAlert.showLoading = sweetAlert.enableLoading = function () { 1506 var popup = getPopup(); 1507 if (!popup) { 1508 sweetAlert(''); 1509 } 1510 popup = getPopup(); 1511 var actions = getActions(); 1512 var confirmButton = getConfirmButton(); 1513 var cancelButton = getCancelButton(); 1514 1515 show(actions); 1516 show(confirmButton); 1517 addClass([popup, actions], swalClasses.loading); 1518 confirmButton.disabled = true; 1519 cancelButton.disabled = true; 1520 1521 popup.setAttribute('data-loading', true); 1522 popup.setAttribute('aria-busy', true); 1523 popup.focus(); 1524}; 1525 1526/** 1527 * Is valid parameter 1528 * @param {String} paramName 1529 */ 1530sweetAlert.isValidParameter = function (paramName) { 1531 return defaultParams.hasOwnProperty(paramName) || paramName === 'extraParams'; 1532}; 1533 1534/** 1535 * Is deprecated parameter 1536 * @param {String} paramName 1537 */ 1538sweetAlert.isDeprecatedParameter = function (paramName) { 1539 return deprecatedParams.indexOf(paramName) !== -1; 1540}; 1541 1542/** 1543 * Set default params for each popup 1544 * @param {Object} userParams 1545 */ 1546sweetAlert.setDefaults = function (userParams) { 1547 if (!userParams || (typeof userParams === 'undefined' ? 'undefined' : _typeof(userParams)) !== 'object') { 1548 return error('the argument for setDefaults() is required and has to be a object'); 1549 } 1550 1551 showWarningsForParams(userParams); 1552 1553 // assign valid params from userParams to popupParams 1554 for (var param in userParams) { 1555 if (sweetAlert.isValidParameter(param)) { 1556 popupParams[param] = userParams[param]; 1557 } 1558 } 1559}; 1560 1561/** 1562 * Reset default params for each popup 1563 */ 1564sweetAlert.resetDefaults = function () { 1565 popupParams = _extends({}, defaultParams); 1566}; 1567 1568/** 1569 * Adapt a legacy inputValidator for use with expectRejections=false 1570 */ 1571sweetAlert.adaptInputValidator = function (legacyValidator) { 1572 return function adaptedInputValidator(inputValue, extraParams) { 1573 return legacyValidator.call(this, inputValue, extraParams).then(function () { 1574 return undefined; 1575 }, function (validationError) { 1576 return validationError; 1577 }); 1578 }; 1579}; 1580 1581sweetAlert.DismissReason = Object.freeze({ 1582 cancel: 'cancel', 1583 backdrop: 'overlay', 1584 close: 'close', 1585 esc: 'esc', 1586 timer: 'timer' 1587}); 1588 1589sweetAlert.noop = function () {}; 1590 1591sweetAlert.version = '7.12.15'; 1592 1593sweetAlert.default = sweetAlert; 1594 1595/** 1596 * Set default params if `window._swalDefaults` is an object 1597 */ 1598if (typeof window !== 'undefined' && _typeof(window._swalDefaults) === 'object') { 1599 sweetAlert.setDefaults(window._swalDefaults); 1600} 1601 1602// Remember state in cases where opening and handling a modal will fiddle with it. 1603var states = { 1604 previousActiveElement: null, 1605 previousBodyPadding: null 1606 1607 // Detect Node env 1608};var isNodeEnv = function isNodeEnv() { 1609 return typeof window === 'undefined' || typeof document === 'undefined'; 1610}; 1611 1612/* 1613 * Add modal + backdrop to DOM 1614 */ 1615var init = function init(params) {
1616 // Clean up the old popup if it exists 1617 var c = getContainer(); 1618 if (c) { 1619 c.parentNode.removeChild(c); 1620 removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['has-input'], swalClasses['toast-shown']]); 1621 } 1622 1623 if (isNodeEnv()) { 1624 error('SweetAlert2 requires document to initialize'); 1625 return; 1626 } 1627 1628 var container = document.createElement('div'); 1629 container.className = swalClasses.container; 1630 container.innerHTML = sweetHTML; 1631 1632 var targetElement = typeof params.target === 'string' ? document.querySelector(params.target) : params.target; 1633 targetElement.appendChild(container); 1634 1635 var popup = getPopup(); 1636 var content = getContent(); 1637 var input = getChildByClass(content, swalClasses.input); 1638 var file = getChildByClass(content, swalClasses.file); 1639 var range = content.querySelector('.' + swalClasses.range + ' input'); 1640 var rangeOutput = content.querySelector('.' + swalClasses.range + ' output'); 1641 var select = getChildByClass(content, swalClasses.select); 1642 var checkbox = content.querySelector('.' + swalClasses.checkbox + ' input'); 1643 var textarea = getChildByClass(content, swalClasses.textarea); 1644 1645 // a11y 1646 popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); 1647 popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); 1648 if (!params.toast) { 1649 popup.setAttribute('aria-modal', 'true'); 1650 } 1651 1652 var resetValidationError = function resetValidationError() { 1653 sweetAlert.isVisible() && sweetAlert.resetValidationError(); 1654 }; 1655 1656 input.oninput = resetValidationError; 1657 file.onchange = resetValidationError; 1658 select.onchange = resetValidationError; 1659 checkbox.onchange = resetValidationError; 1660 textarea.oninput = resetValidationError; 1661 1662 range.oninput = function () { 1663 resetValidationError(); 1664 rangeOutput.value = range.value; 1665 }; 1666 1667 range.onchange = function () { 1668 resetValidationError(); 1669 range.nextSibling.value = range.value; 1670 }; 1671 1672 return popup; 1673}; 1674 1675/* 1676 * Manipulate DOM 1677 */ 1678 1679var sweetHTML = ('\n <div aria-labelledby="' + swalClasses.title + '" aria-describedby="' + swalClasses.content + '" class="' + swalClasses.popup + '" tabindex="-1">\n <div class="' + swalClasses.header + '">\n <ul class="' + swalClasses.progresssteps + '"></ul>\n <div class="' + swalClasses.icon + ' ' + iconTypes.error + '">\n <span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span>\n </div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.question + '">?</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.warning + '">!</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.info + '">i</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.success + '">\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n </div>\n <img class="' + swalClasses.image + '" />\n <h2 class="' + swalClasses.title + '" id="' + swalClasses.title + '"></h2>\n <button type="button" class="' + swalClasses.close + '">\xD7</button>\n </div>\n <div class="' + swalClasses.content + '">\n <div id="' + swalClasses.content + '"></div>\n <input class="' + swalClasses.input + '" />\n <input type="file" class="' + swalClasses.file + '" />\n <div class="' + swalClasses.range + '">\n <input type="range" />\n <output></output>\n </div>\n <select class="' + swalClasses.select + '"></select>\n <div class="' + swalClasses.radio + '"></div>\n <label for="' + swalClasses.checkbox + '" class="' + swalClasses.checkbox + '">\n <input type="checkbox" />\n </label>\n <textarea class="' + swalClasses.textarea + '"></textarea>\n <div class="' + swalClasses.validationerror + '" id="' + swalClasses.validationerror + '"></div>\n </div>\n <div class="' + swalClasses.actions + '">\n <button type="button" class="' + swalClasses.confirm + '">OK</button>\n <button type="button" class="' + swalClasses.cancel + '">Cancel</button>\n </div>\n <div class="' + swalClasses.footer + '">\n </div>\n </div>\n').replace(/(^|\n)\s*/g, ''); 1680 1681var getContainer = function getContainer() { 1682 return document.body.querySelector('.' + swalClasses.container); 1683}; 1684 1685var getPopup = function getPopup() { 1686 return getContainer() ? getContainer().querySelector('.' + swalClasses.popup) : null; 1687}; 1688 1689var getIcons = function getIcons() { 1690 var popup = getPopup(); 1691 return popup.querySelectorAll('.' + swalClasses.icon); 1692}; 1693 1694var elementByClass = function elementByClass(className) { 1695 return getContainer() ? getContainer().querySelector('.' + className) : null; 1696}; 1697 1698var getTitle = function getTitle() { 1699 return elementByClass(swalClasses.title); 1700}; 1701 1702var getContent = function getContent() { 1703 return elementByClass(swalClasses.content); 1704}; 1705 1706var getImage = function getImage() { 1707 return elementByClass(swalClasses.image); 1708}; 1709 1710var getProgressSteps = function getProgressSteps() { 1711 return elementByClass(swalClasses.progresssteps); 1712}; 1713 1714var getValidationError = function getValidationError() { 1715 return elementByClass(swalClasses.validationerror); 1716}; 1717 1718var getConfirmButton = function getConfirmButton() { 1719 return elementByClass(swalClasses.confirm); 1720}; 1721 1722var getCancelButton = function getCancelButton() { 1723 return elementByClass(swalClasses.cancel); 1724}; 1725 1726var getButtonsWrapper = function getButtonsWrapper() { 1727 warnOnce('swal.getButtonsWrapper() is deprecated and will be removed in the next major release, use swal.getActions() instead'); 1728 return elementByClass(swalClasses.actions); 1729}; 1730 1731var getActions = function getActions() { 1732 return elementByClass(swalClasses.actions); 1733}; 1734 1735var getFooter = function getFooter() { 1736 return elementByClass(swalClasses.footer); 1737}; 1738 1739var getCloseButton = function getCloseButton() { 1740 return elementByClass(swalClasses.close); 1741}; 1742 1743var getFocusableElements = function getFocusableElements() { 1744 var focusableElementsWithTabindex = Array.prototype.slice.call(getPopup().querySelectorAll('[tabindex]:not
1744([tabindex="-1"]):not([tabindex="0"])')) 1745 // sort according to tabindex 1746 .sort(function (a, b) { 1747 a = parseInt(a.getAttribute('tabindex')); 1748 b = parseInt(b.getAttribute('tabindex')); 1749 if (a > b) { 1750 return 1; 1751 } else if (a < b) { 1752 return -1; 1753 } 1754 return 0; 1755 }); 1756 1757 var otherFocusableElements = Array.prototype.slice.call(getPopup().querySelectorAll('button, input:not([type=hidden]), textarea, select, a, [tabindex="0"]')); 1758 1759 return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)); 1760}; 1761 1762var parseHtmlToContainer = function parseHtmlToContainer(param, target) { 1763 if (!param) { 1764 return hide(target); 1765 } 1766 1767 if ((typeof param === 'undefined' ? 'undefined' : _typeof(param)) === 'object') { 1768 target.innerHTML = ''; 1769 if (0 in param) { 1770 for (var i = 0; i in param; i++) { 1771 target.appendChild(param[i].cloneNode(true)); 1772 } 1773 } else { 1774 target.appendChild(param.cloneNode(true)); 1775 } 1776 } else if (param) { 1777 target.innerHTML = param; 1778 } else {} 1779 show(target); 1780}; 1781 1782var isModal = function isModal() { 1783 return !document.body.classList.contains(swalClasses['toast-shown']); 1784}; 1785 1786var isToast = function isToast() { 1787 return document.body.classList.contains(swalClasses['toast-shown']); 1788}; 1789 1790var isLoading = function isLoading() { 1791 return getPopup().hasAttribute('data-loading'); 1792}; 1793 1794var hasClass = function hasClass(elem, className) { 1795 if (elem.classList) { 1796 return elem.classList.contains(className); 1797 } 1798 return false; 1799}; 1800 1801var focusInput = function focusInput(input) { 1802 input.focus(); 1803 1804 // place cursor at end of text in text input 1805 if (input.type !== 'file') { 1806 // http://stackoverflow.com/a/2345915/1331425 1807 var val = input.value; 1808 input.value = ''; 1809 input.value = val; 1810 } 1811}; 1812 1813var addOrRemoveClass = function addOrRemoveClass(target, classList, add) { 1814 if (!target || !classList) { 1815 return; 1816 } 1817 if (typeof classList === 'string') { 1818 classList = classList.split(/\s+/).filter(Boolean); 1819 } 1820 classList.forEach(function (className) { 1821 if (target.forEach) { 1822 target.forEach(function (elem) { 1823 add ? elem.classList.add(className) : elem.classList.remove(className); 1824 }); 1825 } else { 1826 add ? target.classList.add(className) : target.classList.remove(className); 1827 } 1828 }); 1829}; 1830 1831var addClass = function addClass(target, classList) { 1832 addOrRemoveClass(target, classList, true); 1833}; 1834 1835var removeClass = function removeClass(target, classList) { 1836 addOrRemoveClass(target, classList, false); 1837}; 1838 1839var getChildByClass = function getChildByClass(elem, className) { 1840 for (var i = 0; i < elem.childNodes.length; i++) { 1841 if (hasClass(elem.childNodes[i], className)) { 1842 return elem.childNodes[i]; 1843 } 1844 } 1845}; 1846 1847var show = function show(elem) { 1848 elem.style.opacity = ''; 1849 elem.style.display = elem.id === swalClasses.content ? 'block' : 'flex'; 1850}; 1851 1852var hide = function hide(elem) { 1853 elem.style.opacity = ''; 1854 elem.style.display = 'none'; 1855}; 1856 1857var empty = function empty(elem) { 1858 while (elem.firstChild) { 1859 elem.removeChild(elem.firstChild); 1860 } 1861}; 1862 1863// borrowed from jquery $(elem).is(':visible') implementation 1864var isVisible = function isVisible(elem) { 1865 return elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 1866}; 1867 1868var removeStyleProperty = function removeStyleProperty(elem, property) { 1869 if (elem.style.removeProperty) { 1870 elem.style.removeProperty(property); 1871 } else { 1872 elem.style.removeAttribute(property); 1873 } 1874}; 1875 1876var animationEndEvent = function () { 1877 // Prevent run in Node env 1878 if (isNodeEnv()) { 1879 return false; 1880 } 1881 1882 var testEl = document.createElement('div'); 1883 var transEndEventNames = { 1884 'WebkitAnimation': 'webkitAnimationEnd', 1885 'OAnimation': 'oAnimationEnd oanimationend', 1886 'animation': 'animationend' 1887 }; 1888 for (var i in transEndEventNames) { 1889 if (transEndEventNames.hasOwnProperty(i) && typeof testEl.style[i] !== 'undefined') { 1890 return transEndEventNames[i]; 1891 } 1892 } 1893 1894 return false; 1895}(); 1896 1897// Reset previous window keydown handler and focued element 1898var resetPrevState = function resetPrevState() { 1899 if (states.previousActiveElement && states.previousActiveElement.focus) { 1900 var x = window.scrollX; 1901 var y = window.scrollY; 1902 states.previousActiveElement.focus(); 1903 if (typeof x !== 'undefined' && typeof y !== 'undefined') { 1904 // IE doesn't have scrollX/scrollY support 1905 window.scrollTo(x, y); 1906 } 1907 } 1908}; 1909 1910// Measure width of scrollbar 1911// https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286 1912var measureScrollbar = function measureScrollbar() { 1913 var supportsTouch = 'ontouchstart' in window || navigator.msMaxTouchPoints; 1914 if (supportsTouch) { 1915 return 0; 1916 } 1917 var scrollDiv = document.createElement('div'); 1918 scrollDiv.style.width = '50px'; 1919 scrollDiv.style.height = '50px'; 1920 scrollDiv.style.overflow = 'scroll'; 1921 document.body.appendChild(scrollDiv); 1922 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; 1923 document.body.removeChild(scrollDiv); 1924 return scrollbarWidth; 1925}; 1926 1927/** 1928 * Inject a string of CSS into the page header 1929 * 1930 * @param {String} css 1931 */ 1932var injectCSS = function injectCSS() { 1933 var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; 1934 1935 // Prevent run in Node env 1936 if (isNodeEnv()) { 1937 return false;
1938 } 1939 1940 var head = document.head || document.getElementsByTagName('head')[0]; 1941 var style = document.createElement('style'); 1942 style.type = 'text/css'; 1943 head.appendChild(style); 1944 1945 if (style.styleSheet) { 1946 style.styleSheet.cssText = css; 1947 } else { 1948 style.appendChild(document.createTextNode(css)); 1949 } 1950}; 1951 1952injectCSS(styles); 1953 1954return sweetAlert; 1955 1956}))); 1957if (typeof window !== 'undefined' && window.Sweetalert2) window.sweetAlert = window.swal = window.Sweetalert2;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.