index.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _extends2 = require('babel-runtime/helpers/extends');
  6. var _extends3 = _interopRequireDefault(_extends2);
  7. var _omit = require('omit.js');
  8. var _omit2 = _interopRequireDefault(_omit);
  9. var _tooltip = require('../tooltip');
  10. var _tooltip2 = _interopRequireDefault(_tooltip);
  11. var _abstractTooltipProps = require('../tooltip/abstractTooltipProps');
  12. var _abstractTooltipProps2 = _interopRequireDefault(_abstractTooltipProps);
  13. var _vueTypes = require('../_util/vue-types');
  14. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  15. var _propsUtil = require('../_util/props-util');
  16. var _BaseMixin = require('../_util/BaseMixin');
  17. var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
  18. var _buttonTypes = require('../button/buttonTypes');
  19. var _buttonTypes2 = _interopRequireDefault(_buttonTypes);
  20. var _icon = require('../icon');
  21. var _icon2 = _interopRequireDefault(_icon);
  22. var _button = require('../button');
  23. var _button2 = _interopRequireDefault(_button);
  24. var _LocaleReceiver = require('../locale-provider/LocaleReceiver');
  25. var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver);
  26. var _default2 = require('../locale-provider/default');
  27. var _default3 = _interopRequireDefault(_default2);
  28. var _configConsumerProps = require('../config-provider/configConsumerProps');
  29. var _base = require('../base');
  30. var _base2 = _interopRequireDefault(_base);
  31. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  32. var tooltipProps = (0, _abstractTooltipProps2['default'])();
  33. var btnProps = (0, _buttonTypes2['default'])();
  34. var Popconfirm = {
  35. name: 'APopconfirm',
  36. props: (0, _extends3['default'])({}, tooltipProps, {
  37. prefixCls: _vueTypes2['default'].string,
  38. transitionName: _vueTypes2['default'].string.def('zoom-big'),
  39. content: _vueTypes2['default'].any,
  40. title: _vueTypes2['default'].any,
  41. trigger: tooltipProps.trigger.def('click'),
  42. okType: btnProps.type.def('primary'),
  43. disabled: _vueTypes2['default'].bool.def(false),
  44. okText: _vueTypes2['default'].any,
  45. cancelText: _vueTypes2['default'].any,
  46. icon: _vueTypes2['default'].any,
  47. okButtonProps: _vueTypes2['default'].object,
  48. cancelButtonProps: _vueTypes2['default'].object
  49. }),
  50. mixins: [_BaseMixin2['default']],
  51. model: {
  52. prop: 'visible',
  53. event: 'visibleChange'
  54. },
  55. watch: {
  56. visible: function visible(val) {
  57. this.sVisible = val;
  58. }
  59. },
  60. inject: {
  61. configProvider: { 'default': function _default() {
  62. return _configConsumerProps.ConfigConsumerProps;
  63. } }
  64. },
  65. data: function data() {
  66. var props = (0, _propsUtil.getOptionProps)(this);
  67. var state = { sVisible: false };
  68. if ('visible' in props) {
  69. state.sVisible = props.visible;
  70. }
  71. if ('defaultVisible' in props) {
  72. state.sVisible = props.defaultVisible;
  73. }
  74. return state;
  75. },
  76. methods: {
  77. onConfirm: function onConfirm(e) {
  78. this.setVisible(false, e);
  79. this.$emit('confirm', e);
  80. },
  81. onCancel: function onCancel(e) {
  82. this.setVisible(false, e);
  83. this.$emit('cancel', e);
  84. },
  85. onVisibleChange: function onVisibleChange(sVisible) {
  86. var disabled = this.$props.disabled;
  87. if (disabled) {
  88. return;
  89. }
  90. this.setVisible(sVisible);
  91. },
  92. setVisible: function setVisible(sVisible, e) {
  93. if (!(0, _propsUtil.hasProp)(this, 'visible')) {
  94. this.setState({ sVisible: sVisible });
  95. }
  96. this.$emit('visibleChange', sVisible, e);
  97. },
  98. getPopupDomNode: function getPopupDomNode() {
  99. return this.$refs.tooltip.getPopupDomNode();
  100. },
  101. renderOverlay: function renderOverlay(prefixCls, popconfirmLocale) {
  102. var h = this.$createElement;
  103. var okType = this.okType,
  104. okButtonProps = this.okButtonProps,
  105. cancelButtonProps = this.cancelButtonProps;
  106. var icon = (0, _propsUtil.getComponentFromProp)(this, 'icon') || h(_icon2['default'], {
  107. attrs: { type: 'exclamation-circle', theme: 'filled' }
  108. });
  109. var cancelBtnProps = (0, _propsUtil.mergeProps)({
  110. props: {
  111. size: 'small'
  112. },
  113. on: {
  114. click: this.onCancel
  115. }
  116. }, cancelButtonProps);
  117. var okBtnProps = (0, _propsUtil.mergeProps)({
  118. props: {
  119. type: okType,
  120. size: 'small'
  121. },
  122. on: {
  123. click: this.onConfirm
  124. }
  125. }, okButtonProps);
  126. return h(
  127. 'div',
  128. { 'class': prefixCls + '-inner-content' },
  129. [h(
  130. 'div',
  131. { 'class': prefixCls + '-message' },
  132. [icon, h(
  133. 'div',
  134. { 'class': prefixCls + '-message-title' },
  135. [(0, _propsUtil.getComponentFromProp)(this, 'title')]
  136. )]
  137. ), h(
  138. 'div',
  139. { 'class': prefixCls + '-buttons' },
  140. [h(
  141. _button2['default'],
  142. cancelBtnProps,
  143. [(0, _propsUtil.getComponentFromProp)(this, 'cancelText') || popconfirmLocale.cancelText]
  144. ), h(
  145. _button2['default'],
  146. okBtnProps,
  147. [(0, _propsUtil.getComponentFromProp)(this, 'okText') || popconfirmLocale.okText]
  148. )]
  149. )]
  150. );
  151. }
  152. },
  153. render: function render() {
  154. var _this = this;
  155. var h = arguments[0];
  156. var props = (0, _propsUtil.getOptionProps)(this);
  157. var customizePrefixCls = props.prefixCls;
  158. var getPrefixCls = this.configProvider.getPrefixCls;
  159. var prefixCls = getPrefixCls('popover', customizePrefixCls);
  160. var otherProps = (0, _omit2['default'])(props, ['title', 'content', 'cancelText', 'okText']);
  161. var tooltipProps = {
  162. props: (0, _extends3['default'])({}, otherProps, {
  163. prefixCls: prefixCls,
  164. visible: this.sVisible
  165. }),
  166. ref: 'tooltip',
  167. on: {
  168. visibleChange: this.onVisibleChange
  169. }
  170. };
  171. var overlay = h(_LocaleReceiver2['default'], {
  172. attrs: {
  173. componentName: 'Popconfirm',
  174. defaultLocale: _default3['default'].Popconfirm
  175. },
  176. scopedSlots: {
  177. 'default': function _default(popconfirmLocale) {
  178. return _this.renderOverlay(prefixCls, popconfirmLocale);
  179. }
  180. }
  181. });
  182. return h(
  183. _tooltip2['default'],
  184. tooltipProps,
  185. [h(
  186. 'template',
  187. { slot: 'title' },
  188. [overlay]
  189. ), this.$slots['default']]
  190. );
  191. }
  192. };
  193. /* istanbul ignore next */
  194. Popconfirm.install = function (Vue) {
  195. Vue.use(_base2['default']);
  196. Vue.component(Popconfirm.name, Popconfirm);
  197. };
  198. exports['default'] = Popconfirm;