dropdown-button.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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 _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  10. var _button = _interopRequireDefault(require("../button"));
  11. var _classNames = _interopRequireDefault(require("../_util/classNames"));
  12. var _dropdown = _interopRequireDefault(require("./dropdown"));
  13. var _propsUtil = require("../_util/props-util");
  14. var _props = require("./props");
  15. var _EllipsisOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/EllipsisOutlined"));
  16. var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  17. var _excluded = ["type", "disabled", "loading", "htmlType", "class", "overlay", "trigger", "align", "visible", "onVisibleChange", "placement", "href", "title", "icon", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "overlayStyle", "destroyPopupOnHide", "onClick", "onUpdate:visible"];
  18. var ButtonGroup = _button.default.Group;
  19. var _default2 = (0, _vue.defineComponent)({
  20. compatConfig: {
  21. MODE: 3
  22. },
  23. name: 'ADropdownButton',
  24. inheritAttrs: false,
  25. __ANT_BUTTON: true,
  26. props: (0, _propsUtil.initDefaultProps)((0, _props.dropdownButtonProps)(), {
  27. trigger: 'hover',
  28. placement: 'bottomRight',
  29. type: 'default'
  30. }),
  31. // emits: ['click', 'visibleChange', 'update:visible'],
  32. slots: ['icon', 'leftButton', 'rightButton', 'overlay'],
  33. setup: function setup(props, _ref) {
  34. var slots = _ref.slots,
  35. attrs = _ref.attrs,
  36. emit = _ref.emit;
  37. var handleVisibleChange = function handleVisibleChange(val) {
  38. emit('update:visible', val);
  39. emit('visibleChange', val);
  40. };
  41. var _useConfigInject = (0, _useConfigInject2.default)('dropdown-button', props),
  42. prefixCls = _useConfigInject.prefixCls,
  43. direction = _useConfigInject.direction,
  44. getPopupContainer = _useConfigInject.getPopupContainer;
  45. return function () {
  46. var _slots$overlay, _slots$icon;
  47. var _props$attrs = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), attrs),
  48. _props$attrs$type = _props$attrs.type,
  49. type = _props$attrs$type === void 0 ? 'default' : _props$attrs$type,
  50. disabled = _props$attrs.disabled,
  51. loading = _props$attrs.loading,
  52. htmlType = _props$attrs.htmlType,
  53. _props$attrs$class = _props$attrs.class,
  54. className = _props$attrs$class === void 0 ? '' : _props$attrs$class,
  55. _props$attrs$overlay = _props$attrs.overlay,
  56. _overlay = _props$attrs$overlay === void 0 ? (_slots$overlay = slots.overlay) === null || _slots$overlay === void 0 ? void 0 : _slots$overlay.call(slots) : _props$attrs$overlay,
  57. trigger = _props$attrs.trigger,
  58. align = _props$attrs.align,
  59. visible = _props$attrs.visible,
  60. _onVisibleChange = _props$attrs.onVisibleChange,
  61. _props$attrs$placemen = _props$attrs.placement,
  62. placement = _props$attrs$placemen === void 0 ? direction.value === 'rtl' ? 'bottomLeft' : 'bottomRight' : _props$attrs$placemen,
  63. href = _props$attrs.href,
  64. title = _props$attrs.title,
  65. _props$attrs$icon = _props$attrs.icon,
  66. icon = _props$attrs$icon === void 0 ? ((_slots$icon = slots.icon) === null || _slots$icon === void 0 ? void 0 : _slots$icon.call(slots)) || (0, _vue.createVNode)(_EllipsisOutlined.default, null, null) : _props$attrs$icon,
  67. mouseEnterDelay = _props$attrs.mouseEnterDelay,
  68. mouseLeaveDelay = _props$attrs.mouseLeaveDelay,
  69. overlayClassName = _props$attrs.overlayClassName,
  70. overlayStyle = _props$attrs.overlayStyle,
  71. destroyPopupOnHide = _props$attrs.destroyPopupOnHide,
  72. onClick = _props$attrs.onClick,
  73. _updateVisible = _props$attrs['onUpdate:visible'],
  74. restProps = (0, _objectWithoutProperties2.default)(_props$attrs, _excluded);
  75. var dropdownProps = {
  76. align: align,
  77. disabled: disabled,
  78. trigger: disabled ? [] : trigger,
  79. placement: placement,
  80. getPopupContainer: getPopupContainer.value,
  81. onVisibleChange: handleVisibleChange,
  82. mouseEnterDelay: mouseEnterDelay,
  83. mouseLeaveDelay: mouseLeaveDelay,
  84. visible: visible,
  85. overlayClassName: overlayClassName,
  86. overlayStyle: overlayStyle,
  87. destroyPopupOnHide: destroyPopupOnHide
  88. };
  89. var leftButton = (0, _vue.createVNode)(_button.default, {
  90. "type": type,
  91. "disabled": disabled,
  92. "loading": loading,
  93. "onClick": onClick,
  94. "htmlType": htmlType,
  95. "href": href,
  96. "title": title
  97. }, {
  98. default: slots.default
  99. });
  100. var rightButton = (0, _vue.createVNode)(_button.default, {
  101. "type": type,
  102. "icon": icon
  103. }, null);
  104. return (0, _vue.createVNode)(ButtonGroup, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
  105. "class": (0, _classNames.default)(prefixCls.value, className)
  106. }), {
  107. default: function _default() {
  108. return [slots.leftButton ? slots.leftButton({
  109. button: leftButton
  110. }) : leftButton, (0, _vue.createVNode)(_dropdown.default, dropdownProps, {
  111. default: function _default() {
  112. return [slots.rightButton ? slots.rightButton({
  113. button: rightButton
  114. }) : rightButton];
  115. },
  116. overlay: function overlay() {
  117. return _overlay;
  118. }
  119. })];
  120. }
  121. });
  122. };
  123. }
  124. });
  125. exports.default = _default2;