app/assets/javascripts/sweet-alert/sweet-alert.js in sweet-alert-0.0.4 vs app/assets/javascripts/sweet-alert/sweet-alert.js in sweet-alert-0.0.5

- old
+ new

@@ -1,9 +1,9 @@ // SweetAlert // 2014 (c) - Tristan Edwards // github.com/t4t5/sweetalert -(function(window, document) { +;(function(window, document) { var modalClass = '.sweet-alert', overlayClass = '.sweet-overlay', alertTypes = ['error', 'warning', 'info', 'success'], defaultParams = { @@ -91,19 +91,24 @@ }, getTopMargin = function(elem) { elem.style.left = '-9999px'; elem.style.display = 'block'; - var height = elem.clientHeight; - var padding = parseInt(getComputedStyle(elem).getPropertyValue('padding'), 10); + var height = elem.clientHeight, + padding; + if (typeof getComputedStyle !== "undefined") { /* IE 8 */ + padding = parseInt(getComputedStyle(elem).getPropertyValue('padding'), 10); + } else{ + padding = parseInt(elem.currentStyle.padding); + } elem.style.left = ''; elem.style.display = 'none'; return ('-' + parseInt(height / 2 + padding) + 'px'); }, fadeIn = function(elem, interval) { - if(+elem.style.opacity < 1) { + if (+elem.style.opacity < 1) { interval = interval || 16; elem.style.opacity = 0; elem.style.display = 'block'; var last = +new Date(); var tick = function() { @@ -114,10 +119,11 @@ setTimeout(tick, interval); } }; tick(); } + elem.style.display = 'block'; //fallback IE8 }, fadeOut = function(elem, interval) { interval = interval || 16; elem.style.opacity = 1; var last = +new Date(); @@ -181,21 +187,12 @@ sweetWrap.innerHTML = sweetHTML; // For readability: check sweet-alert.html document.body.appendChild(sweetWrap); + }; - // For development use only! - /*jQuery.ajax({ - url: '../lib/sweet-alert.html', // Change path depending on file location - dataType: 'html' - }) - .done(function(html) { - jQuery('body').append(html); - });*/ - } - /* * Global sweetAlert function */ window.sweetAlert = window.swal = function() { @@ -254,36 +251,36 @@ // Modal interactions var modal = getModal(); // Mouse interactions - var onButtonEvent = function(e) { - + var onButtonEvent = function(event) { + var e = event || window.event; var target = e.target || e.srcElement, targetedConfirm = (target.className === 'confirm'), modalIsVisible = hasClass(modal, 'visible'), doneFunctionExists = (params.doneFunction && modal.getAttribute('data-has-done-function') === 'true'); switch (e.type) { case ("mouseover"): if (targetedConfirm) { - e.target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.04); + target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.04); } break; case ("mouseout"): if (targetedConfirm) { - e.target.style.backgroundColor = params.confirmButtonColor; + target.style.backgroundColor = params.confirmButtonColor; } break; case ("mousedown"): if (targetedConfirm) { - e.target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.14); + target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.14); } break; case ("mouseup"): if (targetedConfirm) { - e.target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.04); + target.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.04); } break; case ("focus"): var $confirmButton = modal.querySelector('button.confirm'), $cancelButton = modal.querySelector('button.cancel'); @@ -333,15 +330,16 @@ $buttons[i].onfocus = onButtonEvent; } // Remember the current document.onclick event. previousDocumentClick = document.onclick; - document.onclick = function(e) { + document.onclick = function(event) { + var e = event || window.event; var target = e.target || e.srcElement; var clickedOnModal = (modal === target), - clickedOnModalChild = isDescendant(modal, e.target), + clickedOnModalChild = isDescendant(modal, target), modalIsVisible = hasClass(modal, 'visible'), outsideClickIsAllowed = modal.getAttribute('data-allow-ouside-click') === 'true'; if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && outsideClickIsAllowed) { closeModal(); @@ -353,11 +351,12 @@ var $okButton = modal.querySelector('button.confirm'), $cancelButton = modal.querySelector('button.cancel'), $modalButtons = modal.querySelectorAll('button:not([type=hidden])'); - function handleKeyDown(e) { + function handleKeyDown(event) { + var e = event || window.event; var keyCode = e.keyCode || e.which; if ([9,13,32,27].indexOf(keyCode) === -1) { // Don't do work on keys we don't care about. return; @@ -415,11 +414,12 @@ } previousWindowKeyDown = window.onkeydown; window.onkeydown = handleKeyDown; - function handleOnBlur(e) { + function handleOnBlur(event) { + var e = event || window.event; var $targetElement = e.target || e.srcElement, $focusElement = e.relatedTarget, modalIsVisible = hasClass(modal, 'visible'); if (modalIsVisible) { @@ -661,12 +661,13 @@ setTimeout(function() { addClass(modal, 'visible'); }, 500); var timer = modal.getAttribute('data-timer'); - if (timer !== "null") { - setTimeout(function() { + + if (timer !== "null" && timer !== "") { + modal.timeout = setTimeout(function() { closeModal(); }, timer); } } @@ -701,10 +702,11 @@ document.onclick = previousDocumentClick; if (previousActiveElement) { previousActiveElement.focus(); } lastFocusedButton = undefined; + clearTimeout(modal.timeout); } /* * Set "margin-top"-property on modal based on its computed height @@ -722,21 +724,21 @@ * If library is injected after page has loaded */ (function () { if (document.readyState === "complete" || document.readyState === "interactive" && document.body) { - sweetAlertInitialize(); + window.sweetAlertInitialize(); } else { if (document.addEventListener) { document.addEventListener('DOMContentLoaded', function factorial() { document.removeEventListener('DOMContentLoaded', arguments.callee, false); - sweetAlertInitialize(); + window.sweetAlertInitialize(); }, false); } else if (document.attachEvent) { document.attachEvent('onreadystatechange', function() { if (document.readyState === 'complete') { document.detachEvent('onreadystatechange', arguments.callee); - sweetAlertInitialize(); + window.sweetAlertInitialize(); } }); } } })();