UNPKG

sweetalert

Version:

A beautiful replacement for JavaScript's "alert"

1,266 lines (1,028 loc) 122 kB
;(function(window, document, undefined) { "use strict"; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 'use strict'; var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; // SweetAlert // 2014-2015 (c) - Tristan Edwards // github.com/t4t5/sweetalert /* * jQuery-like functions for manipulating the DOM */ var _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation = require('./modules/handle-dom'); /* * Handy utilities */ var _extend$hexToRgb$isIE8$logStr$colorLuminance = require('./modules/utils'); /* * Handle sweetAlert's DOM elements */ var _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition = require('./modules/handle-swal-dom'); // Handle button events and keyboard events var _handleButton$handleConfirm$handleCancel = require('./modules/handle-click'); var _handleKeyDown = require('./modules/handle-key'); var _handleKeyDown2 = _interopRequireWildcard(_handleKeyDown); // Default values var _defaultParams = require('./modules/default-params'); var _defaultParams2 = _interopRequireWildcard(_defaultParams); var _setParameters = require('./modules/set-params'); var _setParameters2 = _interopRequireWildcard(_setParameters); /* * Remember state in cases where opening and handling a modal will fiddle with it. * (We also use window.previousActiveElement as a global variable) */ var previousWindowKeyDown; var lastFocusedButton; /* * Global sweetAlert function * (this is what the user calls) */ var sweetAlert, swal; sweetAlert = swal = function () { var customizations = arguments[0]; _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass(document.body, 'stop-scrolling'); _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.resetInput(); /* * Use argument if defined or default value from params object otherwise. * Supports the case where a default value is boolean true and should be * overridden by a corresponding explicit argument which is boolean false. */ function argumentOrDefault(key) { var args = customizations; return args[key] === undefined ? _defaultParams2['default'][key] : args[key]; } if (customizations === undefined) { _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('SweetAlert expects at least 1 attribute!'); return false; } var params = _extend$hexToRgb$isIE8$logStr$colorLuminance.extend({}, _defaultParams2['default']); switch (typeof customizations) { // Ex: swal("Hello", "Just testing", "info"); case 'string': params.title = customizations; params.text = arguments[1] || ''; params.type = arguments[2] || ''; break; // Ex: swal({ title:"Hello", text: "Just testing", type: "info" }); case 'object': if (customizations.title === undefined) { _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('Missing "title" argument!'); return false; } params.title = customizations.title; for (var customName in _defaultParams2['default']) { params[customName] = argumentOrDefault(customName); } // Show "Confirm" instead of "OK" if cancel button is visible params.confirmButtonText = params.showCancelButton ? 'Confirm' : _defaultParams2['default'].confirmButtonText; params.confirmButtonText = argumentOrDefault('confirmButtonText'); // Callback function when clicking on "OK"/"Cancel" params.doneFunction = arguments[1] || null; break; default: _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('Unexpected type of argument! Expected "string" or "object", got ' + typeof customizations); return false; } _setParameters2['default'](params); _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.fixVerticalPosition(); _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.openModal(arguments[1]); // Modal interactions var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); /* * Make sure all modal buttons respond to all events */ var $buttons = modal.querySelectorAll('button'); var buttonEvents = ['onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'onfocus']; var onButtonEvent = function onButtonEvent(e) { return _handleButton$handleConfirm$handleCancel.handleButton(e, params, modal); }; for (var btnIndex = 0; btnIndex < $buttons.length; btnIndex++) { for (var evtIndex = 0; evtIndex < buttonEvents.length; evtIndex++) { var btnEvt = buttonEvents[evtIndex]; $buttons[btnIndex][btnEvt] = onButtonEvent; } } // Clicking outside the modal dismisses it (if allowed by user) _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getOverlay().onclick = onButtonEvent; previousWindowKeyDown = window.onkeydown; var onKeyEvent = function onKeyEvent(e) { return _handleKeyDown2['default'](e, params, modal); }; window.onkeydown = onKeyEvent; window.onfocus = function () { // When the user has focused away and focused back from the whole window. setTimeout(function () { // Put in a timeout to jump out of the event sequence. // Calling focus() in the event sequence confuses things. if (lastFocusedButton !== undefined) { lastFocusedButton.focus(); lastFocusedButton = undefined; } }, 0); }; // Show alert with enabled buttons always swal.enableButtons(); }; /* * Set default params for each popup * @param {Object} userParams */ sweetAlert.setDefaults = swal.setDefaults = function (userParams) { if (!userParams) { throw new Error('userParams is required'); } if (typeof userParams !== 'object') { throw new Error('userParams has to be a object'); } _extend$hexToRgb$isIE8$logStr$colorLuminance.extend(_defaultParams2['default'], userParams); }; /* * Animation when closing modal */ sweetAlert.close = swal.close = function () { var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.fadeOut(_sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getOverlay(), 5); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.fadeOut(modal, 5); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, 'showSweetAlert'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass(modal, 'hideSweetAlert'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, 'visible'); /* * Reset icon animations */ var $successIcon = modal.querySelector('.sa-icon.sa-success'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon, 'animate'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon.querySelector('.sa-tip'), 'animateSuccessTip'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon.querySelector('.sa-long'), 'animateSuccessLong'); var $errorIcon = modal.querySelector('.sa-icon.sa-error'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon, 'animateErrorIcon'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon.querySelector('.sa-x-mark'), 'animateXMark'); var $warningIcon = modal.querySelector('.sa-icon.sa-warning'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon, 'pulseWarning'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon.querySelector('.sa-body'), 'pulseWarningIns'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon.querySelector('.sa-dot'), 'pulseWarningIns'); // Reset custom class (delay so that UI changes aren't visible) setTimeout(function () { var customClass = modal.getAttribute('data-custom-class'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, customClass); }, 300); // Make page scrollable again _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(document.body, 'stop-scrolling'); // Reset the page to its previous state window.onkeydown = previousWindowKeyDown; if (window.previousActiveElement) { window.previousActiveElement.focus(); } lastFocusedButton = undefined; clearTimeout(modal.timeout); return true; }; /* * Validation of the input field is done by user * If something is wrong => call showInputError with errorMessage */ sweetAlert.showInputError = swal.showInputError = function (errorMessage) { var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); var $errorIcon = modal.querySelector('.sa-input-error'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorIcon, 'show'); var $errorContainer = modal.querySelector('.sa-error-container'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorContainer, 'show'); $errorContainer.querySelector('p').innerHTML = errorMessage; setTimeout(function () { sweetAlert.enableButtons(); }, 1); modal.querySelector('input').focus(); }; /* * Reset input error DOM elements */ sweetAlert.resetInputError = swal.resetInputError = function (event) { // If press enter => ignore if (event && event.keyCode === 13) { return false; } var $modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); var $errorIcon = $modal.querySelector('.sa-input-error'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon, 'show'); var $errorContainer = $modal.querySelector('.sa-error-container'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorContainer, 'show'); }; /* * Disable confirm and cancel buttons */ sweetAlert.disableButtons = swal.disableButtons = function (event) { var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); var $confirmButton = modal.querySelector('button.confirm'); var $cancelButton = modal.querySelector('button.cancel'); $confirmButton.disabled = true; $cancelButton.disabled = true; }; /* * Enable confirm and cancel buttons */ sweetAlert.enableButtons = swal.enableButtons = function (event) { var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); var $confirmButton = modal.querySelector('button.confirm'); var $cancelButton = modal.querySelector('button.cancel'); $confirmButton.disabled = false; $cancelButton.disabled = false; }; if (typeof window !== 'undefined') { // The 'handle-click' module requires // that 'sweetAlert' was set as global. window.sweetAlert = window.swal = sweetAlert; } else { _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('SweetAlert is a frontend module!'); } },{"./modules/default-params":2,"./modules/handle-click":3,"./modules/handle-dom":4,"./modules/handle-key":5,"./modules/handle-swal-dom":6,"./modules/set-params":8,"./modules/utils":9}],2:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defaultParams = { title: '', text: '', type: null, allowOutsideClick: false, showConfirmButton: true, showCancelButton: false, closeOnConfirm: true, closeOnCancel: true, confirmButtonText: 'OK', confirmButtonColor: '#8CD4F5', cancelButtonText: 'Cancel', imageUrl: null, imageSize: null, timer: null, customClass: '', html: false, animation: true, allowEscapeKey: true, inputType: 'text', inputPlaceholder: '', inputValue: '', showLoaderOnConfirm: false }; exports['default'] = defaultParams; module.exports = exports['default']; },{}],3:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _colorLuminance = require('./utils'); var _getModal = require('./handle-swal-dom'); var _hasClass$isDescendant = require('./handle-dom'); /* * User clicked on "Confirm"/"OK" or "Cancel" */ var handleButton = function handleButton(event, params, modal) { var e = event || window.event; var target = e.target || e.srcElement; var targetedConfirm = target.className.indexOf('confirm') !== -1; var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1; var modalIsVisible = _hasClass$isDescendant.hasClass(modal, 'visible'); var doneFunctionExists = params.doneFunction && modal.getAttribute('data-has-done-function') === 'true'; // Since the user can change the background-color of the confirm button programmatically, // we must calculate what the color should be on hover/active var normalColor, hoverColor, activeColor; if (targetedConfirm && params.confirmButtonColor) { normalColor = params.confirmButtonColor; hoverColor = _colorLuminance.colorLuminance(normalColor, -0.04); activeColor = _colorLuminance.colorLuminance(normalColor, -0.14); } function shouldSetConfirmButtonColor(color) { if (targetedConfirm && params.confirmButtonColor) { target.style.backgroundColor = color; } } switch (e.type) { case 'mouseover': shouldSetConfirmButtonColor(hoverColor); break; case 'mouseout': shouldSetConfirmButtonColor(normalColor); break; case 'mousedown': shouldSetConfirmButtonColor(activeColor); break; case 'mouseup': shouldSetConfirmButtonColor(hoverColor); break; case 'focus': var $confirmButton = modal.querySelector('button.confirm'); var $cancelButton = modal.querySelector('button.cancel'); if (targetedConfirm) { $cancelButton.style.boxShadow = 'none'; } else { $confirmButton.style.boxShadow = 'none'; } break; case 'click': var clickedOnModal = modal === target; var clickedOnModalChild = _hasClass$isDescendant.isDescendant(modal, target); // Ignore click outside if allowOutsideClick is false if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) { break; } if (targetedConfirm && doneFunctionExists && modalIsVisible) { handleConfirm(modal, params); } else if (doneFunctionExists && modalIsVisible || targetedOverlay) { handleCancel(modal, params); } else if (_hasClass$isDescendant.isDescendant(modal, target) && target.tagName === 'BUTTON') { sweetAlert.close(); } break; } }; /* * User clicked on "Confirm"/"OK" */ var handleConfirm = function handleConfirm(modal, params) { var callbackValue = true; if (_hasClass$isDescendant.hasClass(modal, 'show-input')) { callbackValue = modal.querySelector('input').value; if (!callbackValue) { callbackValue = ''; } } params.doneFunction(callbackValue); if (params.closeOnConfirm) { sweetAlert.close(); } // Disable cancel and confirm button if the parameter is true if (params.showLoaderOnConfirm) { sweetAlert.disableButtons(); } }; /* * User clicked on "Cancel" */ var handleCancel = function handleCancel(modal, params) { // Check if callback function expects a parameter (to track cancel actions) var functionAsStr = String(params.doneFunction).replace(/\s/g, ''); var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')'; if (functionHandlesCancel) { params.doneFunction(false); } if (params.closeOnCancel) { sweetAlert.close(); } }; exports['default'] = { handleButton: handleButton, handleConfirm: handleConfirm, handleCancel: handleCancel }; module.exports = exports['default']; },{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],4:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var hasClass = function hasClass(elem, className) { return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' '); }; var addClass = function addClass(elem, className) { if (!hasClass(elem, className)) { elem.className += ' ' + className; } }; var removeClass = function removeClass(elem, className) { var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' '; if (hasClass(elem, className)) { while (newClass.indexOf(' ' + className + ' ') >= 0) { newClass = newClass.replace(' ' + className + ' ', ' '); } elem.className = newClass.replace(/^\s+|\s+$/g, ''); } }; var escapeHtml = function escapeHtml(str) { var div = document.createElement('div'); div.appendChild(document.createTextNode(str)); return div.innerHTML; }; var _show = function _show(elem) { elem.style.opacity = ''; elem.style.display = 'block'; }; var show = function show(elems) { if (elems && !elems.length) { return _show(elems); } for (var i = 0; i < elems.length; ++i) { _show(elems[i]); } }; var _hide = function _hide(elem) { elem.style.opacity = ''; elem.style.display = 'none'; }; var hide = function hide(elems) { if (elems && !elems.length) { return _hide(elems); } for (var i = 0; i < elems.length; ++i) { _hide(elems[i]); } }; var isDescendant = function isDescendant(parent, child) { var node = child.parentNode; while (node !== null) { if (node === parent) { return true; } node = node.parentNode; } return false; }; var getTopMargin = function getTopMargin(elem) { elem.style.left = '-9999px'; elem.style.display = 'block'; var height = elem.clientHeight, padding; if (typeof getComputedStyle !== 'undefined') { // IE 8 padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10); } else { padding = parseInt(elem.currentStyle.padding); } elem.style.left = ''; elem.style.display = 'none'; return '-' + parseInt((height + padding) / 2) + 'px'; }; var fadeIn = function fadeIn(elem, interval) { if (+elem.style.opacity < 1) { interval = interval || 16; elem.style.opacity = 0; elem.style.display = 'block'; var last = +new Date(); var tick = (function (_tick) { function tick() { return _tick.apply(this, arguments); } tick.toString = function () { return _tick.toString(); }; return tick; })(function () { elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100; last = +new Date(); if (+elem.style.opacity < 1) { setTimeout(tick, interval); } }); tick(); } elem.style.display = 'block'; //fallback IE8 }; var fadeOut = function fadeOut(elem, interval) { interval = interval || 16; elem.style.opacity = 1; var last = +new Date(); var tick = (function (_tick2) { function tick() { return _tick2.apply(this, arguments); } tick.toString = function () { return _tick2.toString(); }; return tick; })(function () { elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100; last = +new Date(); if (+elem.style.opacity > 0) { setTimeout(tick, interval); } else { elem.style.display = 'none'; } }); tick(); }; var fireClick = function fireClick(node) { // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/ // Then fixed for today's Chrome browser. if (typeof MouseEvent === 'function') { // Up-to-date approach var mevt = new MouseEvent('click', { view: window, bubbles: false, cancelable: true }); node.dispatchEvent(mevt); } else if (document.createEvent) { // Fallback var evt = document.createEvent('MouseEvents'); evt.initEvent('click', false, false); node.dispatchEvent(evt); } else if (document.createEventObject) { node.fireEvent('onclick'); } else if (typeof node.onclick === 'function') { node.onclick(); } }; var stopEventPropagation = function stopEventPropagation(e) { // In particular, make sure the space bar doesn't scroll the main window. if (typeof e.stopPropagation === 'function') { e.stopPropagation(); e.preventDefault(); } else if (window.event && window.event.hasOwnProperty('cancelBubble')) { window.event.cancelBubble = true; } }; exports.hasClass = hasClass; exports.addClass = addClass; exports.removeClass = removeClass; exports.escapeHtml = escapeHtml; exports._show = _show; exports.show = show; exports._hide = _hide; exports.hide = hide; exports.isDescendant = isDescendant; exports.getTopMargin = getTopMargin; exports.fadeIn = fadeIn; exports.fadeOut = fadeOut; exports.fireClick = fireClick; exports.stopEventPropagation = stopEventPropagation; },{}],5:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _stopEventPropagation$fireClick = require('./handle-dom'); var _setFocusStyle = require('./handle-swal-dom'); var handleKeyDown = function handleKeyDown(event, params, modal) { var e = event || window.event; var keyCode = e.keyCode || e.which; var $okButton = modal.querySelector('button.confirm'); var $cancelButton = modal.querySelector('button.cancel'); var $modalButtons = modal.querySelectorAll('button[tabindex]'); if ([9, 13, 32, 27].indexOf(keyCode) === -1) { // Don't do work on keys we don't care about. return; } var $targetElement = e.target || e.srcElement; var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. for (var i = 0; i < $modalButtons.length; i++) { if ($targetElement === $modalButtons[i]) { btnIndex = i; break; } } if (keyCode === 9) { // TAB if (btnIndex === -1) { // No button focused. Jump to the confirm button. $targetElement = $okButton; } else { // Cycle to the next button if (btnIndex === $modalButtons.length - 1) { $targetElement = $modalButtons[0]; } else { $targetElement = $modalButtons[btnIndex + 1]; } } _stopEventPropagation$fireClick.stopEventPropagation(e); $targetElement.focus(); if (params.confirmButtonColor) { _setFocusStyle.setFocusStyle($targetElement, params.confirmButtonColor); } } else { if (keyCode === 13) { if ($targetElement.tagName === 'INPUT') { $targetElement = $okButton; $okButton.focus(); } if (btnIndex === -1) { // ENTER/SPACE clicked outside of a button. $targetElement = $okButton; } else { // Do nothing - let the browser handle it. $targetElement = undefined; } } else if (keyCode === 27 && params.allowEscapeKey === true) { $targetElement = $cancelButton; _stopEventPropagation$fireClick.fireClick($targetElement, e); } else { // Fallback - let the browser handle it. $targetElement = undefined; } } }; exports['default'] = handleKeyDown; module.exports = exports['default']; },{"./handle-dom":4,"./handle-swal-dom":6}],6:[function(require,module,exports){ 'use strict'; var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; Object.defineProperty(exports, '__esModule', { value: true }); var _hexToRgb = require('./utils'); var _removeClass$getTopMargin$fadeIn$show$addClass = require('./handle-dom'); var _defaultParams = require('./default-params'); var _defaultParams2 = _interopRequireWildcard(_defaultParams); /* * Add modal + overlay to DOM */ var _injectedHTML = require('./injected-html'); var _injectedHTML2 = _interopRequireWildcard(_injectedHTML); var modalClass = '.sweet-alert'; var overlayClass = '.sweet-overlay'; var sweetAlertInitialize = function sweetAlertInitialize() { var sweetWrap = document.createElement('div'); sweetWrap.innerHTML = _injectedHTML2['default']; // Append elements to body while (sweetWrap.firstChild) { document.body.appendChild(sweetWrap.firstChild); } }; /* * Get DOM element of modal */ var getModal = (function (_getModal) { function getModal() { return _getModal.apply(this, arguments); } getModal.toString = function () { return _getModal.toString(); }; return getModal; })(function () { var $modal = document.querySelector(modalClass); if (!$modal) { sweetAlertInitialize(); $modal = getModal(); } return $modal; }); /* * Get DOM element of input (in modal) */ var getInput = function getInput() { var $modal = getModal(); if ($modal) { return $modal.querySelector('input'); } }; /* * Get DOM element of overlay */ var getOverlay = function getOverlay() { return document.querySelector(overlayClass); }; /* * Add box-shadow style to button (depending on its chosen bg-color) */ var setFocusStyle = function setFocusStyle($button, bgColor) { var rgbColor = _hexToRgb.hexToRgb(bgColor); $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)'; }; /* * Animation when opening modal */ var openModal = function openModal(callback) { var $modal = getModal(); _removeClass$getTopMargin$fadeIn$show$addClass.fadeIn(getOverlay(), 10); _removeClass$getTopMargin$fadeIn$show$addClass.show($modal); _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'showSweetAlert'); _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'hideSweetAlert'); window.previousActiveElement = document.activeElement; var $okButton = $modal.querySelector('button.confirm'); $okButton.focus(); setTimeout(function () { _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'visible'); }, 500); var timer = $modal.getAttribute('data-timer'); if (timer !== 'null' && timer !== '') { var timerCallback = callback; $modal.timeout = setTimeout(function () { var doneFunctionExists = (timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true'; if (doneFunctionExists) { timerCallback(null); } else { sweetAlert.close(); } }, timer); } }; /* * Reset the styling of the input * (for example if errors have been shown) */ var resetInput = function resetInput() { var $modal = getModal(); var $input = getInput(); _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'show-input'); $input.value = _defaultParams2['default'].inputValue; $input.setAttribute('type', _defaultParams2['default'].inputType); $input.setAttribute('placeholder', _defaultParams2['default'].inputPlaceholder); resetInputError(); }; var resetInputError = function resetInputError(event) { // If press enter => ignore if (event && event.keyCode === 13) { return false; } var $modal = getModal(); var $errorIcon = $modal.querySelector('.sa-input-error'); _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorIcon, 'show'); var $errorContainer = $modal.querySelector('.sa-error-container'); _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorContainer, 'show'); }; /* * Set "margin-top"-property on modal based on its computed height */ var fixVerticalPosition = function fixVerticalPosition() { var $modal = getModal(); $modal.style.marginTop = _removeClass$getTopMargin$fadeIn$show$addClass.getTopMargin(getModal()); }; exports.sweetAlertInitialize = sweetAlertInitialize; exports.getModal = getModal; exports.getOverlay = getOverlay; exports.getInput = getInput; exports.setFocusStyle = setFocusStyle; exports.openModal = openModal; exports.resetInput = resetInput; exports.resetInputError = resetInputError; exports.fixVerticalPosition = fixVerticalPosition; },{"./default-params":2,"./handle-dom":4,"./injected-html":7,"./utils":9}],7:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var injectedHTML = // Dark overlay "<div class=\"sweet-overlay\" tabIndex=\"-1\"></div>" + // Modal "<div class=\"sweet-alert\">" + // Error icon "<div class=\"sa-icon sa-error\">\n <span class=\"sa-x-mark\">\n <span class=\"sa-line sa-left\"></span>\n <span class=\"sa-line sa-right\"></span>\n </span>\n </div>" + // Warning icon "<div class=\"sa-icon sa-warning\">\n <span class=\"sa-body\"></span>\n <span class=\"sa-dot\"></span>\n </div>" + // Info icon "<div class=\"sa-icon sa-info\"></div>" + // Success icon "<div class=\"sa-icon sa-success\">\n <span class=\"sa-line sa-tip\"></span>\n <span class=\"sa-line sa-long\"></span>\n\n <div class=\"sa-placeholder\"></div>\n <div class=\"sa-fix\"></div>\n </div>" + "<div class=\"sa-icon sa-custom\"></div>" + // Title, text and input "<h2>Title</h2>\n <p>Text</p>\n <fieldset>\n <input type=\"text\" tabIndex=\"3\" />\n <div class=\"sa-input-error\"></div>\n </fieldset>" + // Input errors "<div class=\"sa-error-container\">\n <div class=\"icon\">!</div>\n <p>Not valid!</p>\n </div>" + // Cancel and confirm buttons "<div class=\"sa-button-container\">\n <button class=\"cancel\" tabIndex=\"2\">Cancel</button>\n <div class=\"sa-confirm-button-container\">\n <button class=\"confirm\" tabIndex=\"1\">OK</button>" + // Loading animation "<div class=\"la-ball-fall\">\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n </div>" + // End of modal "</div>"; exports["default"] = injectedHTML; module.exports = exports["default"]; },{}],8:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _isIE8 = require('./utils'); var _getModal$getInput$setFocusStyle = require('./handle-swal-dom'); var _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide = require('./handle-dom'); var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt']; /* * Set type, text and actions on modal */ var setParameters = function setParameters(params) { var modal = _getModal$getInput$setFocusStyle.getModal(); var $title = modal.querySelector('h2'); var $text = modal.querySelector('p'); var $cancelBtn = modal.querySelector('button.cancel'); var $confirmBtn = modal.querySelector('button.confirm'); /* * Title */ $title.innerHTML = params.html ? params.title : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.title).split('\n').join('<br>'); /* * Text */ $text.innerHTML = params.html ? params.text : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.text || '').split('\n').join('<br>'); if (params.text) _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($text); /* * Custom class */ if (params.customClass) { _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, params.customClass); modal.setAttribute('data-custom-class', params.customClass); } else { // Find previously set classes and remove them var customClass = modal.getAttribute('data-custom-class'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.removeClass(modal, customClass); modal.setAttribute('data-custom-class', ''); } /* * Icon */ _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide(modal.querySelectorAll('.sa-icon')); if (params.type && !_isIE8.isIE8()) { var _ret = (function () { var validType = false; for (var i = 0; i < alertTypes.length; i++) { if (params.type === alertTypes[i]) { validType = true; break; } } if (!validType) { logStr('Unknown alert type: ' + params.type); return { v: false }; } var typesWithIcons = ['success', 'error', 'warning', 'info']; var $icon = undefined; if (typesWithIcons.indexOf(params.type) !== -1) { $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($icon); } var $input = _getModal$getInput$setFocusStyle.getInput(); // Animate icon switch (params.type) { case 'success': _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animate'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-tip'), 'animateSuccessTip'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-long'), 'animateSuccessLong'); break; case 'error': _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animateErrorIcon'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-x-mark'), 'animateXMark'); break; case 'warning': _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'pulseWarning'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-body'), 'pulseWarningIns'); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-dot'), 'pulseWarningIns'); break; case 'input': case 'prompt': $input.setAttribute('type', params.inputType); $input.value = params.inputValue; $input.setAttribute('placeholder', params.inputPlaceholder); _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, 'show-input'); setTimeout(function () { $input.focus(); $input.addEventListener('keyup', swal.resetInputError); }, 400); break; } })(); if (typeof _ret === 'object') { return _ret.v; } } /* * Custom image */ if (params.imageUrl) { var $customIcon = modal.querySelector('.sa-icon.sa-custom'); $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')'; _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($customIcon); var _imgWidth = 80; var _imgHeight = 80; if (params.imageSize) { var dimensions = params.imageSize.toString().split('x'); var imgWidth = dimensions[0]; var imgHeight = dimensions[1]; if (!imgWidth || !imgHeight) { logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize); } else { _imgWidth = imgWidth; _imgHeight = imgHeight; } } $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px'); } /* * Show cancel button? */ modal.setAttribute('data-has-cancel-button', params.showCancelButton); if (params.showCancelButton) { $cancelBtn.style.display = 'inline-block'; } else { _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($cancelBtn); } /* * Show confirm button? */ modal.setAttribute('data-has-confirm-button', params.showConfirmButton); if (params.showConfirmButton) { $confirmBtn.style.display = 'inline-block'; } else { _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($confirmBtn); } /* * Custom text on cancel/confirm buttons */ if (params.cancelButtonText) { $cancelBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.cancelButtonText); } if (params.confirmButtonText) { $confirmBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.confirmButtonText); } /* * Custom color on confirm button */ if (params.confirmButtonColor) { // Set confirm button to selected background color $confirmBtn.style.backgroundColor = params.confirmButtonColor; // Set the confirm button color to the loading ring $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor; $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor; // Set box-shadow to default focused button _getModal$getInput$setFocusStyle.setFocusStyle($confirmBtn, params.confirmButtonColor); } /* * Allow outside click */ modal.setAttribute('data-allow-outside-click', params.allowOutsideClick); /* * Callback function */ var hasDoneFunction = params.doneFunction ? true : false; modal.setAttribute('data-has-done-function', hasDoneFunction); /* * Animation */ if (!params.animation) { modal.setAttribute('data-animation', 'none'); } else if (typeof params.animation === 'string') { modal.setAttribute('data-animation', params.animation); // Custom animation } else { modal.setAttribute('data-animation', 'pop'); } /* * Timer */ modal.setAttribute('data-timer', params.timer); }; exports['default'] = setParameters; module.exports = exports['default']; },{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],9:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); /* * Allow user to pass their own params */ var extend = function extend(a, b) { for (var key in b) { if (b.hasOwnProperty(key)) { a[key] = b[key]; } } return a; }; /* * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0)) */ var hexToRgb = function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null; }; /* * Check if the user is using Internet Explorer 8 (for fallbacks) */ var isIE8 = function isIE8() { return window.attachEvent && !window.addEventListener; }; /* * IE compatible logging for developers */ var logStr = function logStr(string) { if (window.console) { // IE... window.console.log('SweetAlert: ' + string); } }; /* * Set hover, active and focus-states for buttons * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color) */ var colorLuminance = function colorLuminance(hex, lum) { // Validate hex string hex = String(hex).replace(/[^0-9a-f]/gi, ''); if (hex.length < 6) { hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; } lum = lum || 0; // Convert to decimal and change luminosity var rgb = '#'; var c; var i; for (i = 0; i < 3; i++) { c = parseInt(hex.substr(i * 2, 2), 16); c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16); rgb += ('00' + c).substr(c.length); } return rgb; }; exports.extend = extend; exports.hexToRgb = hexToRgb; exports.isIE8 = isIE8; exports.logStr = logStr; exports.colorLuminance = colorLuminance; },{}]},{},[1]) //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvc3dlZXRhbGVydC5lczYuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy9kZWZhdWx0LXBhcmFtcy5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL2hhbmRsZS1jbGljay5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL2hhbmRsZS1kb20uanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy9oYW5kbGUta2V5LmpzIiwiL1VzZXJzL1RyaXN0YW4vZGV2L1N3ZWV0QWxlcnQvZGV2L21vZHVsZXMvaGFuZGxlLXN3YWwtZG9tLmpzIiwiL1VzZXJzL1RyaXN0YW4vZGV2L1N3ZWV0QWxlcnQvZGV2L21vZHVsZXMvaW5qZWN0ZWQtaHRtbC5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL3NldC1wYXJhbXMuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztzSkNnQk8sc0JBQXNCOzs7Ozs7MkRBV3RCLGlCQUFpQjs7Ozs7O3dIQWNqQiwyQkFBMkI7Ozs7dURBSXdCLHdCQUF3Qjs7NkJBQ3hELHNCQUFzQjs7Ozs7OzZCQUl0QiwwQkFBMEI7Ozs7NkJBQzFCLHNCQUFzQjs7Ozs7Ozs7QUFNaEQsSUFBSSxxQkFBcUIsQ0FBQztBQUMxQixJQUFJLGlCQUFpQixDQUFDOzs7Ozs7QUFPdEIsSUFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDOztBQUVyQixVQUFVLEdBQUcsSUFBSSxHQUFHLFlBQVc7QUFD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