PurePanel.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. "use client";
  2. var __rest = this && this.__rest || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  5. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  6. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  7. }
  8. return t;
  9. };
  10. import * as React from 'react';
  11. import classNames from 'classnames';
  12. import { Popup } from 'rc-tooltip';
  13. import { getRenderPropValue } from '../_util/getRenderPropValue';
  14. import { ConfigContext } from '../config-provider';
  15. import useStyle from './style';
  16. export const Overlay = ({
  17. title,
  18. content,
  19. prefixCls
  20. }) => {
  21. if (!title && !content) {
  22. return null;
  23. }
  24. return /*#__PURE__*/React.createElement(React.Fragment, null, title && /*#__PURE__*/React.createElement("div", {
  25. className: `${prefixCls}-title`
  26. }, title), content && /*#__PURE__*/React.createElement("div", {
  27. className: `${prefixCls}-inner-content`
  28. }, content));
  29. };
  30. export const RawPurePanel = props => {
  31. const {
  32. hashId,
  33. prefixCls,
  34. className,
  35. style,
  36. placement = 'top',
  37. title,
  38. content,
  39. children
  40. } = props;
  41. const titleNode = getRenderPropValue(title);
  42. const contentNode = getRenderPropValue(content);
  43. const cls = classNames(hashId, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className);
  44. return /*#__PURE__*/React.createElement("div", {
  45. className: cls,
  46. style: style
  47. }, /*#__PURE__*/React.createElement("div", {
  48. className: `${prefixCls}-arrow`
  49. }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {
  50. className: hashId,
  51. prefixCls: prefixCls
  52. }), children || /*#__PURE__*/React.createElement(Overlay, {
  53. prefixCls: prefixCls,
  54. title: titleNode,
  55. content: contentNode
  56. })));
  57. };
  58. const PurePanel = props => {
  59. const {
  60. prefixCls: customizePrefixCls,
  61. className
  62. } = props,
  63. restProps = __rest(props, ["prefixCls", "className"]);
  64. const {
  65. getPrefixCls
  66. } = React.useContext(ConfigContext);
  67. const prefixCls = getPrefixCls('popover', customizePrefixCls);
  68. const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);
  69. return wrapCSSVar(/*#__PURE__*/React.createElement(RawPurePanel, Object.assign({}, restProps, {
  70. prefixCls: prefixCls,
  71. hashId: hashId,
  72. className: classNames(className, cssVarCls)
  73. })));
  74. };
  75. export default PurePanel;