index.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.popconfirmProps = exports.default = void 0;
  7. var _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  10. var _popover = _interopRequireDefault(require("../popover"));
  11. var _abstractTooltipProps = _interopRequireDefault(require("../tooltip/abstractTooltipProps"));
  12. var _propsUtil = require("../_util/props-util");
  13. var _buttonTypes = require("../button/buttonTypes");
  14. var _ExclamationCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/ExclamationCircleFilled"));
  15. var _button = _interopRequireDefault(require("../button"));
  16. var _LocaleReceiver = require("../locale-provider/LocaleReceiver");
  17. var _en_US = _interopRequireDefault(require("../locale/en_US"));
  18. var _type = require("../_util/type");
  19. var _useMergedState = _interopRequireDefault(require("../_util/hooks/useMergedState"));
  20. var _KeyCode = _interopRequireDefault(require("../_util/KeyCode"));
  21. var _useConfigInject = _interopRequireDefault(require("../config-provider/hooks/useConfigInject"));
  22. var _classNames = _interopRequireDefault(require("../_util/classNames"));
  23. var _transition = require("../_util/transition");
  24. var _vnode = require("../_util/vnode");
  25. var _omit = _interopRequireDefault(require("../_util/omit"));
  26. var _Tooltip = require("../tooltip/Tooltip");
  27. var _ActionButton = _interopRequireDefault(require("../_util/ActionButton"));
  28. var _style = _interopRequireDefault(require("./style"));
  29. var _warning = _interopRequireDefault(require("../_util/warning"));
  30. var __rest = void 0 && (void 0).__rest || function (s, e) {
  31. var t = {};
  32. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  33. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  34. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  35. }
  36. return t;
  37. };
  38. const popconfirmProps = () => (0, _extends2.default)((0, _extends2.default)({}, (0, _abstractTooltipProps.default)()), {
  39. prefixCls: String,
  40. content: (0, _type.anyType)(),
  41. title: (0, _type.anyType)(),
  42. description: (0, _type.anyType)(),
  43. okType: (0, _type.stringType)('primary'),
  44. disabled: {
  45. type: Boolean,
  46. default: false
  47. },
  48. okText: (0, _type.anyType)(),
  49. cancelText: (0, _type.anyType)(),
  50. icon: (0, _type.anyType)(),
  51. okButtonProps: (0, _type.objectType)(),
  52. cancelButtonProps: (0, _type.objectType)(),
  53. showCancel: {
  54. type: Boolean,
  55. default: true
  56. },
  57. onConfirm: Function,
  58. onCancel: Function
  59. });
  60. exports.popconfirmProps = popconfirmProps;
  61. const Popconfirm = (0, _vue.defineComponent)({
  62. compatConfig: {
  63. MODE: 3
  64. },
  65. name: 'APopconfirm',
  66. inheritAttrs: false,
  67. props: (0, _propsUtil.initDefaultProps)(popconfirmProps(), (0, _extends2.default)((0, _extends2.default)({}, (0, _Tooltip.tooltipDefaultProps)()), {
  68. trigger: 'click',
  69. placement: 'top',
  70. mouseEnterDelay: 0.1,
  71. mouseLeaveDelay: 0.1,
  72. arrowPointAtCenter: false,
  73. autoAdjustOverflow: true,
  74. okType: 'primary',
  75. disabled: false
  76. })),
  77. slots: Object,
  78. // emits: ['update:open', 'visibleChange'],
  79. setup(props, _ref) {
  80. let {
  81. slots,
  82. emit,
  83. expose,
  84. attrs
  85. } = _ref;
  86. const rootRef = (0, _vue.ref)();
  87. (0, _warning.default)(props.visible === undefined, 'Popconfirm', `\`visible\` will be removed in next major version, please use \`open\` instead.`);
  88. expose({
  89. getPopupDomNode: () => {
  90. var _a, _b;
  91. return (_b = (_a = rootRef.value) === null || _a === void 0 ? void 0 : _a.getPopupDomNode) === null || _b === void 0 ? void 0 : _b.call(_a);
  92. }
  93. });
  94. const [open, setOpen] = (0, _useMergedState.default)(false, {
  95. value: (0, _vue.toRef)(props, 'open')
  96. });
  97. const settingOpen = (value, e) => {
  98. if (props.open === undefined) {
  99. setOpen(value);
  100. }
  101. emit('update:open', value);
  102. emit('openChange', value, e);
  103. };
  104. const close = e => {
  105. settingOpen(false, e);
  106. };
  107. const onConfirm = e => {
  108. var _a;
  109. return (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(props, e);
  110. };
  111. const onCancel = e => {
  112. var _a;
  113. settingOpen(false, e);
  114. (_a = props.onCancel) === null || _a === void 0 ? void 0 : _a.call(props, e);
  115. };
  116. const onKeyDown = e => {
  117. if (e.keyCode === _KeyCode.default.ESC && open) {
  118. settingOpen(false, e);
  119. }
  120. };
  121. const onOpenChange = value => {
  122. const {
  123. disabled
  124. } = props;
  125. if (disabled) {
  126. return;
  127. }
  128. settingOpen(value);
  129. };
  130. const {
  131. prefixCls: prefixClsConfirm,
  132. getPrefixCls
  133. } = (0, _useConfigInject.default)('popconfirm', props);
  134. const rootPrefixCls = (0, _vue.computed)(() => getPrefixCls());
  135. const btnPrefixCls = (0, _vue.computed)(() => getPrefixCls('btn'));
  136. const [wrapSSR] = (0, _style.default)(prefixClsConfirm);
  137. const [popconfirmLocale] = (0, _LocaleReceiver.useLocaleReceiver)('Popconfirm', _en_US.default.Popconfirm);
  138. const renderOverlay = () => {
  139. var _a, _b, _c, _d, _e;
  140. const {
  141. okButtonProps,
  142. cancelButtonProps,
  143. title = (_a = slots.title) === null || _a === void 0 ? void 0 : _a.call(slots),
  144. description = (_b = slots.description) === null || _b === void 0 ? void 0 : _b.call(slots),
  145. cancelText = (_c = slots.cancel) === null || _c === void 0 ? void 0 : _c.call(slots),
  146. okText = (_d = slots.okText) === null || _d === void 0 ? void 0 : _d.call(slots),
  147. okType,
  148. icon = ((_e = slots.icon) === null || _e === void 0 ? void 0 : _e.call(slots)) || (0, _vue.createVNode)(_ExclamationCircleFilled.default, null, null),
  149. showCancel = true
  150. } = props;
  151. const {
  152. cancelButton,
  153. okButton
  154. } = slots;
  155. const cancelProps = (0, _extends2.default)({
  156. onClick: onCancel,
  157. size: 'small'
  158. }, cancelButtonProps);
  159. const okProps = (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
  160. onClick: onConfirm
  161. }, (0, _buttonTypes.convertLegacyProps)(okType)), {
  162. size: 'small'
  163. }), okButtonProps);
  164. return (0, _vue.createVNode)("div", {
  165. "class": `${prefixClsConfirm.value}-inner-content`
  166. }, [(0, _vue.createVNode)("div", {
  167. "class": `${prefixClsConfirm.value}-message`
  168. }, [icon && (0, _vue.createVNode)("span", {
  169. "class": `${prefixClsConfirm.value}-message-icon`
  170. }, [icon]), (0, _vue.createVNode)("div", {
  171. "class": [`${prefixClsConfirm.value}-message-title`, {
  172. [`${prefixClsConfirm.value}-message-title-only`]: !!description
  173. }]
  174. }, [title])]), description && (0, _vue.createVNode)("div", {
  175. "class": `${prefixClsConfirm.value}-description`
  176. }, [description]), (0, _vue.createVNode)("div", {
  177. "class": `${prefixClsConfirm.value}-buttons`
  178. }, [showCancel ? cancelButton ? cancelButton(cancelProps) : (0, _vue.createVNode)(_button.default, cancelProps, {
  179. default: () => [cancelText || popconfirmLocale.value.cancelText]
  180. }) : null, okButton ? okButton(okProps) : (0, _vue.createVNode)(_ActionButton.default, {
  181. "buttonProps": (0, _extends2.default)((0, _extends2.default)({
  182. size: 'small'
  183. }, (0, _buttonTypes.convertLegacyProps)(okType)), okButtonProps),
  184. "actionFn": onConfirm,
  185. "close": close,
  186. "prefixCls": btnPrefixCls.value,
  187. "quitOnNullishReturnValue": true,
  188. "emitEvent": true
  189. }, {
  190. default: () => [okText || popconfirmLocale.value.okText]
  191. })])]);
  192. };
  193. return () => {
  194. var _a;
  195. const {
  196. placement,
  197. overlayClassName,
  198. trigger = 'click'
  199. } = props,
  200. restProps = __rest(props, ["placement", "overlayClassName", "trigger"]);
  201. const otherProps = (0, _omit.default)(restProps, ['title', 'content', 'cancelText', 'okText', 'onUpdate:open', 'onConfirm', 'onCancel', 'prefixCls']);
  202. const overlayClassNames = (0, _classNames.default)(prefixClsConfirm.value, overlayClassName);
  203. return wrapSSR((0, _vue.createVNode)(_popover.default, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, otherProps), attrs), {}, {
  204. "trigger": trigger,
  205. "placement": placement,
  206. "onOpenChange": onOpenChange,
  207. "open": open.value,
  208. "overlayClassName": overlayClassNames,
  209. "transitionName": (0, _transition.getTransitionName)(rootPrefixCls.value, 'zoom-big', props.transitionName),
  210. "ref": rootRef,
  211. "data-popover-inject": true
  212. }), {
  213. default: () => [(0, _vnode.cloneVNodes)(((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)) || [], {
  214. onKeydown: e => {
  215. onKeyDown(e);
  216. }
  217. }, false)],
  218. content: renderOverlay
  219. }));
  220. };
  221. }
  222. });
  223. var _default = exports.default = (0, _type.withInstall)(Popconfirm);