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();
}
});
}
}
})();