ConfirmDialog.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CheckCircleFilled"));
  9. var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseCircleFilled"));
  10. var _ExclamationCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/ExclamationCircleFilled"));
  11. var _InfoCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/InfoCircleFilled"));
  12. var _classNames = _interopRequireDefault(require("../_util/classNames"));
  13. var _Modal = _interopRequireDefault(require("./Modal"));
  14. var _ActionButton = _interopRequireDefault(require("../_util/ActionButton"));
  15. var _LocaleReceiver = require("../locale-provider/LocaleReceiver");
  16. var _transition = require("../_util/transition");
  17. var _warning = _interopRequireDefault(require("../_util/warning"));
  18. function renderSomeContent(someContent) {
  19. if (typeof someContent === 'function') {
  20. return someContent();
  21. }
  22. return someContent;
  23. }
  24. var _default = exports.default = (0, _vue.defineComponent)({
  25. name: 'ConfirmDialog',
  26. inheritAttrs: false,
  27. props: ['icon', 'onCancel', 'onOk', 'close', 'closable', 'zIndex', 'afterClose', 'visible', 'open', 'keyboard', 'centered', 'getContainer', 'maskStyle', 'okButtonProps', 'cancelButtonProps', 'okType', 'prefixCls', 'okCancel', 'width', 'mask', 'maskClosable', 'okText', 'cancelText', 'autoFocusButton', 'transitionName', 'maskTransitionName', 'type', 'title', 'content', 'direction', 'rootPrefixCls', 'bodyStyle', 'closeIcon', 'modalRender', 'focusTriggerAfterClose', 'wrapClassName', 'confirmPrefixCls', 'footer'],
  28. setup(props, _ref) {
  29. let {
  30. attrs
  31. } = _ref;
  32. const [locale] = (0, _LocaleReceiver.useLocaleReceiver)('Modal');
  33. if (process.env.NODE_ENV !== 'production') {
  34. (0, _warning.default)(props.visible === undefined, 'Modal', `\`visible\` is deprecated, please use \`open\` instead.`);
  35. }
  36. return () => {
  37. const {
  38. icon,
  39. onCancel,
  40. onOk,
  41. close,
  42. okText,
  43. closable = false,
  44. zIndex,
  45. afterClose,
  46. keyboard,
  47. centered,
  48. getContainer,
  49. maskStyle,
  50. okButtonProps,
  51. cancelButtonProps,
  52. okCancel,
  53. width = 416,
  54. mask = true,
  55. maskClosable = false,
  56. type,
  57. open,
  58. title,
  59. content,
  60. direction,
  61. closeIcon,
  62. modalRender,
  63. focusTriggerAfterClose,
  64. rootPrefixCls,
  65. bodyStyle,
  66. wrapClassName,
  67. footer
  68. } = props;
  69. // Icon
  70. let mergedIcon = icon;
  71. // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon
  72. if (!icon && icon !== null) {
  73. switch (type) {
  74. case 'info':
  75. mergedIcon = (0, _vue.createVNode)(_InfoCircleFilled.default, null, null);
  76. break;
  77. case 'success':
  78. mergedIcon = (0, _vue.createVNode)(_CheckCircleFilled.default, null, null);
  79. break;
  80. case 'error':
  81. mergedIcon = (0, _vue.createVNode)(_CloseCircleFilled.default, null, null);
  82. break;
  83. default:
  84. mergedIcon = (0, _vue.createVNode)(_ExclamationCircleFilled.default, null, null);
  85. }
  86. }
  87. const okType = props.okType || 'primary';
  88. const prefixCls = props.prefixCls || 'ant-modal';
  89. const contentPrefixCls = `${prefixCls}-confirm`;
  90. const style = attrs.style || {};
  91. const mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';
  92. const autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';
  93. const confirmPrefixCls = `${prefixCls}-confirm`;
  94. const classString = (0, _classNames.default)(confirmPrefixCls, `${confirmPrefixCls}-${props.type}`, {
  95. [`${confirmPrefixCls}-rtl`]: direction === 'rtl'
  96. }, attrs.class);
  97. const mergedLocal = locale.value;
  98. const cancelButton = mergedOkCancel && (0, _vue.createVNode)(_ActionButton.default, {
  99. "actionFn": onCancel,
  100. "close": close,
  101. "autofocus": autoFocusButton === 'cancel',
  102. "buttonProps": cancelButtonProps,
  103. "prefixCls": `${rootPrefixCls}-btn`
  104. }, {
  105. default: () => [renderSomeContent(props.cancelText) || mergedLocal.cancelText]
  106. });
  107. return (0, _vue.createVNode)(_Modal.default, {
  108. "prefixCls": prefixCls,
  109. "class": classString,
  110. "wrapClassName": (0, _classNames.default)({
  111. [`${confirmPrefixCls}-centered`]: !!centered
  112. }, wrapClassName),
  113. "onCancel": e => close === null || close === void 0 ? void 0 : close({
  114. triggerCancel: true
  115. }, e),
  116. "open": open,
  117. "title": "",
  118. "footer": "",
  119. "transitionName": (0, _transition.getTransitionName)(rootPrefixCls, 'zoom', props.transitionName),
  120. "maskTransitionName": (0, _transition.getTransitionName)(rootPrefixCls, 'fade', props.maskTransitionName),
  121. "mask": mask,
  122. "maskClosable": maskClosable,
  123. "maskStyle": maskStyle,
  124. "style": style,
  125. "bodyStyle": bodyStyle,
  126. "width": width,
  127. "zIndex": zIndex,
  128. "afterClose": afterClose,
  129. "keyboard": keyboard,
  130. "centered": centered,
  131. "getContainer": getContainer,
  132. "closable": closable,
  133. "closeIcon": closeIcon,
  134. "modalRender": modalRender,
  135. "focusTriggerAfterClose": focusTriggerAfterClose
  136. }, {
  137. default: () => [(0, _vue.createVNode)("div", {
  138. "class": `${contentPrefixCls}-body-wrapper`
  139. }, [(0, _vue.createVNode)("div", {
  140. "class": `${contentPrefixCls}-body`
  141. }, [renderSomeContent(mergedIcon), title === undefined ? null : (0, _vue.createVNode)("span", {
  142. "class": `${contentPrefixCls}-title`
  143. }, [renderSomeContent(title)]), (0, _vue.createVNode)("div", {
  144. "class": `${contentPrefixCls}-content`
  145. }, [renderSomeContent(content)])]), footer !== undefined ? renderSomeContent(footer) : (0, _vue.createVNode)("div", {
  146. "class": `${contentPrefixCls}-btns`
  147. }, [cancelButton, (0, _vue.createVNode)(_ActionButton.default, {
  148. "type": okType,
  149. "actionFn": onOk,
  150. "close": close,
  151. "autofocus": autoFocusButton === 'ok',
  152. "buttonProps": okButtonProps,
  153. "prefixCls": `${rootPrefixCls}-btn`
  154. }, {
  155. default: () => [renderSomeContent(okText) || (mergedOkCancel ? mergedLocal.okText : mergedLocal.justOkText)]
  156. })])])]
  157. });
  158. };
  159. }
  160. });