123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- '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'];
|