135 lines
3.8 KiB
JavaScript
135 lines
3.8 KiB
JavaScript
|
'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'];
|