FloatButton.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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.floatButtonPrefixCls = exports.default = void 0;
  9. var _react = _interopRequireWildcard(require("react"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
  12. var _convertToTooltipProps = _interopRequireDefault(require("../_util/convertToTooltipProps"));
  13. var _useZIndex = require("../_util/hooks/useZIndex");
  14. var _warning = require("../_util/warning");
  15. var _badge = _interopRequireDefault(require("../badge"));
  16. var _configProvider = require("../config-provider");
  17. var _useCSSVarCls = _interopRequireDefault(require("../config-provider/hooks/useCSSVarCls"));
  18. var _tooltip = _interopRequireDefault(require("../tooltip"));
  19. var _context = _interopRequireDefault(require("./context"));
  20. var _FloatButtonContent = _interopRequireDefault(require("./FloatButtonContent"));
  21. var _style = _interopRequireDefault(require("./style"));
  22. var __rest = void 0 && (void 0).__rest || function (s, e) {
  23. var t = {};
  24. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  25. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  26. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  27. }
  28. return t;
  29. };
  30. const floatButtonPrefixCls = exports.floatButtonPrefixCls = 'float-btn';
  31. const InternalFloatButton = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
  32. const {
  33. prefixCls: customizePrefixCls,
  34. className,
  35. rootClassName,
  36. style,
  37. type = 'default',
  38. shape = 'circle',
  39. icon,
  40. description,
  41. tooltip,
  42. htmlType = 'button',
  43. badge = {}
  44. } = props,
  45. restProps = __rest(props, ["prefixCls", "className", "rootClassName", "style", "type", "shape", "icon", "description", "tooltip", "htmlType", "badge"]);
  46. const {
  47. getPrefixCls,
  48. direction
  49. } = (0, _react.useContext)(_configProvider.ConfigContext);
  50. const groupShape = (0, _react.useContext)(_context.default);
  51. const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
  52. const rootCls = (0, _useCSSVarCls.default)(prefixCls);
  53. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls, rootCls);
  54. const mergedShape = groupShape || shape;
  55. const classString = (0, _classnames.default)(hashId, cssVarCls, rootCls, prefixCls, className, rootClassName, `${prefixCls}-${type}`, `${prefixCls}-${mergedShape}`, {
  56. [`${prefixCls}-rtl`]: direction === 'rtl'
  57. });
  58. // ============================ zIndex ============================
  59. const [zIndex] = (0, _useZIndex.useZIndex)('FloatButton', style === null || style === void 0 ? void 0 : style.zIndex);
  60. const mergedStyle = Object.assign(Object.assign({}, style), {
  61. zIndex
  62. });
  63. // 虽然在 ts 中已经 omit 过了,但是为了防止多余的属性被透传进来,这里再 omit 一遍,以防万一
  64. const badgeProps = (0, _omit.default)(badge, ['title', 'children', 'status', 'text']);
  65. let buttonNode = /*#__PURE__*/_react.default.createElement("div", {
  66. className: `${prefixCls}-body`
  67. }, /*#__PURE__*/_react.default.createElement(_FloatButtonContent.default, {
  68. prefixCls: prefixCls,
  69. description: description,
  70. icon: icon
  71. }));
  72. if ('badge' in props) {
  73. buttonNode = /*#__PURE__*/_react.default.createElement(_badge.default, Object.assign({}, badgeProps), buttonNode);
  74. }
  75. // ============================ Tooltip ============================
  76. const tooltipProps = (0, _convertToTooltipProps.default)(tooltip);
  77. if (tooltipProps) {
  78. buttonNode = /*#__PURE__*/_react.default.createElement(_tooltip.default, Object.assign({}, tooltipProps), buttonNode);
  79. }
  80. if (process.env.NODE_ENV !== 'production') {
  81. const warning = (0, _warning.devUseWarning)('FloatButton');
  82. process.env.NODE_ENV !== "production" ? warning(!(mergedShape === 'circle' && description), 'usage', 'supported only when `shape` is `square`. Due to narrow space for text, short sentence is recommended.') : void 0;
  83. }
  84. return wrapCSSVar(props.href ? (/*#__PURE__*/_react.default.createElement("a", Object.assign({
  85. ref: ref
  86. }, restProps, {
  87. className: classString,
  88. style: mergedStyle
  89. }), buttonNode)) : (/*#__PURE__*/_react.default.createElement("button", Object.assign({
  90. ref: ref
  91. }, restProps, {
  92. className: classString,
  93. style: mergedStyle,
  94. type: htmlType
  95. }), buttonNode)));
  96. });
  97. const FloatButton = InternalFloatButton;
  98. if (process.env.NODE_ENV !== 'production') {
  99. FloatButton.displayName = 'FloatButton';
  100. }
  101. var _default = exports.default = FloatButton;