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