handle-click.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. var _colorLuminance = require('./utils');
  6. var _getModal = require('./handle-swal-dom');
  7. var _hasClass$isDescendant = require('./handle-dom');
  8. /*
  9. * User clicked on "Confirm"/"OK" or "Cancel"
  10. */
  11. var handleButton = function handleButton(event, params, modal) {
  12. var e = event || window.event;
  13. var target = e.target || e.srcElement;
  14. var targetedConfirm = target.className.indexOf('confirm') !== -1;
  15. var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1;
  16. var modalIsVisible = _hasClass$isDescendant.hasClass(modal, 'visible');
  17. var doneFunctionExists = params.doneFunction && modal.getAttribute('data-has-done-function') === 'true';
  18. // Since the user can change the background-color of the confirm button programmatically,
  19. // we must calculate what the color should be on hover/active
  20. var normalColor, hoverColor, activeColor;
  21. if (targetedConfirm && params.confirmButtonColor) {
  22. normalColor = params.confirmButtonColor;
  23. hoverColor = _colorLuminance.colorLuminance(normalColor, -0.04);
  24. activeColor = _colorLuminance.colorLuminance(normalColor, -0.14);
  25. }
  26. function shouldSetConfirmButtonColor(color) {
  27. if (targetedConfirm && params.confirmButtonColor) {
  28. target.style.backgroundColor = color;
  29. }
  30. }
  31. switch (e.type) {
  32. case 'mouseover':
  33. shouldSetConfirmButtonColor(hoverColor);
  34. break;
  35. case 'mouseout':
  36. shouldSetConfirmButtonColor(normalColor);
  37. break;
  38. case 'mousedown':
  39. shouldSetConfirmButtonColor(activeColor);
  40. break;
  41. case 'mouseup':
  42. shouldSetConfirmButtonColor(hoverColor);
  43. break;
  44. case 'focus':
  45. var $confirmButton = modal.querySelector('button.confirm');
  46. var $cancelButton = modal.querySelector('button.cancel');
  47. if (targetedConfirm) {
  48. $cancelButton.style.boxShadow = 'none';
  49. } else {
  50. $confirmButton.style.boxShadow = 'none';
  51. }
  52. break;
  53. case 'click':
  54. var clickedOnModal = modal === target;
  55. var clickedOnModalChild = _hasClass$isDescendant.isDescendant(modal, target);
  56. // Ignore click outside if allowOutsideClick is false
  57. if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) {
  58. break;
  59. }
  60. if (targetedConfirm && doneFunctionExists && modalIsVisible) {
  61. handleConfirm(modal, params);
  62. } else if (doneFunctionExists && modalIsVisible || targetedOverlay) {
  63. handleCancel(modal, params);
  64. } else if (_hasClass$isDescendant.isDescendant(modal, target) && target.tagName === 'BUTTON') {
  65. sweetAlert.close();
  66. }
  67. break;
  68. }
  69. };
  70. /*
  71. * User clicked on "Confirm"/"OK"
  72. */
  73. var handleConfirm = function handleConfirm(modal, params) {
  74. var callbackValue = true;
  75. if (_hasClass$isDescendant.hasClass(modal, 'show-input')) {
  76. callbackValue = modal.querySelector('input').value;
  77. if (!callbackValue) {
  78. callbackValue = '';
  79. }
  80. }
  81. params.doneFunction(callbackValue);
  82. if (params.closeOnConfirm) {
  83. sweetAlert.close();
  84. }
  85. // Disable cancel and confirm button if the parameter is true
  86. if (params.showLoaderOnConfirm) {
  87. sweetAlert.disableButtons();
  88. }
  89. };
  90. /*
  91. * User clicked on "Cancel"
  92. */
  93. var handleCancel = function handleCancel(modal, params) {
  94. // Check if callback function expects a parameter (to track cancel actions)
  95. var functionAsStr = String(params.doneFunction).replace(/\s/g, '');
  96. var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')';
  97. if (functionHandlesCancel) {
  98. params.doneFunction(false);
  99. }
  100. if (params.closeOnCancel) {
  101. sweetAlert.close();
  102. }
  103. };
  104. exports['default'] = {
  105. handleButton: handleButton,
  106. handleConfirm: handleConfirm,
  107. handleCancel: handleCancel
  108. };
  109. module.exports = exports['default'];