dropdown-button.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _EllipsisOutlined = _interopRequireDefault(require("@ant-design/icons/EllipsisOutlined"));
  11. var _classnames = _interopRequireDefault(require("classnames"));
  12. var _button = _interopRequireDefault(require("../button"));
  13. var _configProvider = require("../config-provider");
  14. var _space = _interopRequireDefault(require("../space"));
  15. var _Compact = require("../space/Compact");
  16. var _dropdown = _interopRequireDefault(require("./dropdown"));
  17. var __rest = void 0 && (void 0).__rest || function (s, e) {
  18. var t = {};
  19. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  20. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  21. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  22. }
  23. return t;
  24. };
  25. const DropdownButton = props => {
  26. const {
  27. getPopupContainer: getContextPopupContainer,
  28. getPrefixCls,
  29. direction
  30. } = React.useContext(_configProvider.ConfigContext);
  31. const {
  32. prefixCls: customizePrefixCls,
  33. type = 'default',
  34. danger,
  35. disabled,
  36. loading,
  37. onClick,
  38. htmlType,
  39. children,
  40. className,
  41. menu,
  42. arrow,
  43. autoFocus,
  44. overlay,
  45. trigger,
  46. align,
  47. open,
  48. onOpenChange,
  49. placement,
  50. getPopupContainer,
  51. href,
  52. icon = /*#__PURE__*/React.createElement(_EllipsisOutlined.default, null),
  53. title,
  54. buttonsRender = buttons => buttons,
  55. mouseEnterDelay,
  56. mouseLeaveDelay,
  57. overlayClassName,
  58. overlayStyle,
  59. destroyOnHidden,
  60. destroyPopupOnHide,
  61. dropdownRender,
  62. popupRender
  63. } = props,
  64. restProps = __rest(props, ["prefixCls", "type", "danger", "disabled", "loading", "onClick", "htmlType", "children", "className", "menu", "arrow", "autoFocus", "overlay", "trigger", "align", "open", "onOpenChange", "placement", "getPopupContainer", "href", "icon", "title", "buttonsRender", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "overlayStyle", "destroyOnHidden", "destroyPopupOnHide", "dropdownRender", "popupRender"]);
  65. const prefixCls = getPrefixCls('dropdown', customizePrefixCls);
  66. const buttonPrefixCls = `${prefixCls}-button`;
  67. const mergedPopupRender = popupRender || dropdownRender;
  68. const dropdownProps = {
  69. menu,
  70. arrow,
  71. autoFocus,
  72. align,
  73. disabled,
  74. trigger: disabled ? [] : trigger,
  75. onOpenChange,
  76. getPopupContainer: getPopupContainer || getContextPopupContainer,
  77. mouseEnterDelay,
  78. mouseLeaveDelay,
  79. overlayClassName,
  80. overlayStyle,
  81. destroyOnHidden,
  82. popupRender: mergedPopupRender
  83. };
  84. const {
  85. compactSize,
  86. compactItemClassnames
  87. } = (0, _Compact.useCompactItemContext)(prefixCls, direction);
  88. const classes = (0, _classnames.default)(buttonPrefixCls, compactItemClassnames, className);
  89. if ('destroyPopupOnHide' in props) {
  90. dropdownProps.destroyPopupOnHide = destroyPopupOnHide;
  91. }
  92. if ('overlay' in props) {
  93. dropdownProps.overlay = overlay;
  94. }
  95. if ('open' in props) {
  96. dropdownProps.open = open;
  97. }
  98. if ('placement' in props) {
  99. dropdownProps.placement = placement;
  100. } else {
  101. dropdownProps.placement = direction === 'rtl' ? 'bottomLeft' : 'bottomRight';
  102. }
  103. const leftButton = /*#__PURE__*/React.createElement(_button.default, {
  104. type: type,
  105. danger: danger,
  106. disabled: disabled,
  107. loading: loading,
  108. onClick: onClick,
  109. htmlType: htmlType,
  110. href: href,
  111. title: title
  112. }, children);
  113. const rightButton = /*#__PURE__*/React.createElement(_button.default, {
  114. type: type,
  115. danger: danger,
  116. icon: icon
  117. });
  118. const [leftButtonToRender, rightButtonToRender] = buttonsRender([leftButton, rightButton]);
  119. return /*#__PURE__*/React.createElement(_space.default.Compact, Object.assign({
  120. className: classes,
  121. size: compactSize,
  122. block: true
  123. }, restProps), leftButtonToRender, /*#__PURE__*/React.createElement(_dropdown.default, Object.assign({}, dropdownProps), rightButtonToRender));
  124. };
  125. DropdownButton.__ANT_BUTTON = true;
  126. var _default = exports.default = DropdownButton;