index.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  2. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  3. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  4. var _excluded = ["placement", "overlayClassName"];
  5. import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
  6. import { computed, onMounted, ref, toRef, defineComponent } from 'vue';
  7. import Tooltip from '../tooltip';
  8. import abstractTooltipProps from '../tooltip/abstractTooltipProps';
  9. import PropTypes from '../_util/vue-types';
  10. import { initDefaultProps } from '../_util/props-util';
  11. import { convertLegacyProps } from '../button/buttonTypes';
  12. import ExclamationCircleFilled from "@ant-design/icons-vue/es/icons/ExclamationCircleFilled";
  13. import Button from '../button';
  14. import { useLocaleReceiver } from '../locale-provider/LocaleReceiver';
  15. import defaultLocale from '../locale-provider/default';
  16. import { withInstall } from '../_util/type';
  17. import useMergedState from '../_util/hooks/useMergedState';
  18. import devWarning from '../vc-util/devWarning';
  19. import KeyCode from '../_util/KeyCode';
  20. import useConfigInject from '../_util/hooks/useConfigInject';
  21. import classNames from '../_util/classNames';
  22. import { getTransitionName } from '../_util/transition';
  23. import { cloneVNodes } from '../_util/vnode';
  24. import omit from '../_util/omit';
  25. import { tooltipDefaultProps } from '../tooltip/Tooltip';
  26. import ActionButton from '../_util/ActionButton';
  27. export var popconfirmProps = function popconfirmProps() {
  28. return _objectSpread(_objectSpread({}, abstractTooltipProps()), {}, {
  29. prefixCls: String,
  30. content: PropTypes.any,
  31. title: PropTypes.any,
  32. okType: {
  33. type: String,
  34. default: 'primary'
  35. },
  36. disabled: {
  37. type: Boolean,
  38. default: false
  39. },
  40. okText: PropTypes.any,
  41. cancelText: PropTypes.any,
  42. icon: PropTypes.any,
  43. okButtonProps: {
  44. type: Object,
  45. default: undefined
  46. },
  47. cancelButtonProps: {
  48. type: Object,
  49. default: undefined
  50. },
  51. showCancel: {
  52. type: Boolean,
  53. default: true
  54. },
  55. onConfirm: Function,
  56. onCancel: Function
  57. });
  58. };
  59. var Popconfirm = defineComponent({
  60. compatConfig: {
  61. MODE: 3
  62. },
  63. name: 'APopconfirm',
  64. props: initDefaultProps(popconfirmProps(), _objectSpread(_objectSpread({}, tooltipDefaultProps()), {}, {
  65. trigger: 'click',
  66. transitionName: 'zoom-big',
  67. placement: 'top',
  68. mouseEnterDelay: 0.1,
  69. mouseLeaveDelay: 0.1,
  70. arrowPointAtCenter: false,
  71. autoAdjustOverflow: true,
  72. okType: 'primary',
  73. disabled: false
  74. })),
  75. slots: ['title', 'content', 'okText', 'icon', 'cancelText', 'cancelButton', 'okButton'],
  76. emits: ['update:visible', 'visibleChange'],
  77. setup: function setup(props, _ref) {
  78. var slots = _ref.slots,
  79. emit = _ref.emit,
  80. expose = _ref.expose;
  81. onMounted(function () {
  82. devWarning(props.defaultVisible === undefined, 'Popconfirm', "'defaultVisible' is deprecated, please use 'v-model:visible'");
  83. });
  84. var tooltipRef = ref();
  85. expose({
  86. getPopupDomNode: function getPopupDomNode() {
  87. var _tooltipRef$value, _tooltipRef$value$get;
  88. return (_tooltipRef$value = tooltipRef.value) === null || _tooltipRef$value === void 0 ? void 0 : (_tooltipRef$value$get = _tooltipRef$value.getPopupDomNode) === null || _tooltipRef$value$get === void 0 ? void 0 : _tooltipRef$value$get.call(_tooltipRef$value);
  89. }
  90. });
  91. var _useMergedState = useMergedState(false, {
  92. value: toRef(props, 'visible'),
  93. defaultValue: props.defaultVisible
  94. }),
  95. _useMergedState2 = _slicedToArray(_useMergedState, 2),
  96. visible = _useMergedState2[0],
  97. setVisible = _useMergedState2[1];
  98. var settingVisible = function settingVisible(value, e) {
  99. if (props.visible === undefined) {
  100. setVisible(value);
  101. }
  102. emit('update:visible', value);
  103. emit('visibleChange', value, e);
  104. };
  105. var close = function close(e) {
  106. settingVisible(false, e);
  107. };
  108. var onConfirm = function onConfirm(e) {
  109. var _props$onConfirm;
  110. return (_props$onConfirm = props.onConfirm) === null || _props$onConfirm === void 0 ? void 0 : _props$onConfirm.call(props, e);
  111. };
  112. var onCancel = function onCancel(e) {
  113. var _props$onCancel;
  114. settingVisible(false, e);
  115. (_props$onCancel = props.onCancel) === null || _props$onCancel === void 0 ? void 0 : _props$onCancel.call(props, e);
  116. };
  117. var onKeyDown = function onKeyDown(e) {
  118. if (e.keyCode === KeyCode.ESC && visible) {
  119. settingVisible(false, e);
  120. }
  121. };
  122. var onVisibleChange = function onVisibleChange(value) {
  123. var disabled = props.disabled;
  124. if (disabled) {
  125. return;
  126. }
  127. settingVisible(value);
  128. };
  129. var _useConfigInject = useConfigInject('popconfirm', props),
  130. prefixClsConfirm = _useConfigInject.prefixCls,
  131. getPrefixCls = _useConfigInject.getPrefixCls;
  132. var rootPrefixCls = computed(function () {
  133. return getPrefixCls();
  134. });
  135. var popoverPrefixCls = computed(function () {
  136. return getPrefixCls('popover');
  137. });
  138. var btnPrefixCls = computed(function () {
  139. return getPrefixCls('btn');
  140. });
  141. var _useLocaleReceiver = useLocaleReceiver('Popconfirm', defaultLocale.Popconfirm),
  142. _useLocaleReceiver2 = _slicedToArray(_useLocaleReceiver, 1),
  143. popconfirmLocale = _useLocaleReceiver2[0];
  144. var renderOverlay = function renderOverlay() {
  145. var _slots$title, _slots$cancel, _slots$okText, _slots$icon;
  146. var okButtonProps = props.okButtonProps,
  147. cancelButtonProps = props.cancelButtonProps,
  148. _props$title = props.title,
  149. title = _props$title === void 0 ? (_slots$title = slots.title) === null || _slots$title === void 0 ? void 0 : _slots$title.call(slots) : _props$title,
  150. _props$cancelText = props.cancelText,
  151. cancelText = _props$cancelText === void 0 ? (_slots$cancel = slots.cancel) === null || _slots$cancel === void 0 ? void 0 : _slots$cancel.call(slots) : _props$cancelText,
  152. _props$okText = props.okText,
  153. okText = _props$okText === void 0 ? (_slots$okText = slots.okText) === null || _slots$okText === void 0 ? void 0 : _slots$okText.call(slots) : _props$okText,
  154. okType = props.okType,
  155. _props$icon = props.icon,
  156. icon = _props$icon === void 0 ? (_slots$icon = slots.icon) === null || _slots$icon === void 0 ? void 0 : _slots$icon.call(slots) : _props$icon,
  157. _props$showCancel = props.showCancel,
  158. showCancel = _props$showCancel === void 0 ? true : _props$showCancel;
  159. var cancelButton = slots.cancelButton,
  160. okButton = slots.okButton;
  161. var cancelProps = _objectSpread({
  162. onClick: onCancel,
  163. size: 'small'
  164. }, cancelButtonProps);
  165. var okProps = _objectSpread(_objectSpread({
  166. onClick: onConfirm
  167. }, convertLegacyProps(okType)), {}, {
  168. size: 'small'
  169. }, okButtonProps);
  170. return _createVNode("div", {
  171. "class": "".concat(popoverPrefixCls.value, "-inner-content")
  172. }, [_createVNode("div", {
  173. "class": "".concat(popoverPrefixCls.value, "-message")
  174. }, [icon || _createVNode(ExclamationCircleFilled, null, null), _createVNode("div", {
  175. "class": "".concat(popoverPrefixCls.value, "-message-title")
  176. }, [title])]), _createVNode("div", {
  177. "class": "".concat(popoverPrefixCls.value, "-buttons")
  178. }, [showCancel ? cancelButton ? cancelButton(cancelProps) : _createVNode(Button, cancelProps, {
  179. default: function _default() {
  180. return [cancelText || popconfirmLocale.value.cancelText];
  181. }
  182. }) : null, okButton ? okButton(okProps) : _createVNode(ActionButton, {
  183. "buttonProps": _objectSpread(_objectSpread({
  184. size: 'small'
  185. }, convertLegacyProps(okType)), okButtonProps),
  186. "actionFn": onConfirm,
  187. "close": close,
  188. "prefixCls": btnPrefixCls.value,
  189. "quitOnNullishReturnValue": true,
  190. "emitEvent": true
  191. }, {
  192. default: function _default() {
  193. return [okText || popconfirmLocale.value.okText];
  194. }
  195. })])]);
  196. };
  197. return function () {
  198. var _slots$default;
  199. var placement = props.placement,
  200. overlayClassName = props.overlayClassName,
  201. restProps = _objectWithoutProperties(props, _excluded);
  202. var otherProps = omit(restProps, ['title', 'content', 'cancelText', 'okText', 'onUpdate:visible', 'onConfirm', 'onCancel']);
  203. var overlayClassNames = classNames(prefixClsConfirm.value, overlayClassName);
  204. return _createVNode(Tooltip, _objectSpread(_objectSpread({}, otherProps), {}, {
  205. "prefixCls": popoverPrefixCls.value,
  206. "placement": placement,
  207. "onVisibleChange": onVisibleChange,
  208. "visible": visible.value,
  209. "overlayClassName": overlayClassNames,
  210. "transitionName": getTransitionName(rootPrefixCls.value, 'zoom-big', props.transitionName),
  211. "ref": tooltipRef
  212. }), {
  213. default: function _default() {
  214. return [cloneVNodes(((_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)) || [], {
  215. onKeydown: function onKeydown(e) {
  216. onKeyDown(e);
  217. }
  218. }, false)];
  219. },
  220. title: renderOverlay
  221. });
  222. };
  223. }
  224. });
  225. export default withInstall(Popconfirm);