import * as React from 'react'; import classNames from 'classnames'; import Tooltip, { AbstractTooltipProps, TooltipPlacement } from '../tooltip'; import { ConfigContext } from '../config-provider'; import { getRenderPropValue, RenderFunction } from '../_util/getRenderPropValue'; import { getTransitionName } from '../_util/motion'; // CSSINJS import useStyle from './style'; export interface PopoverProps extends AbstractTooltipProps { title?: React.ReactNode | RenderFunction; content?: React.ReactNode | RenderFunction; } const Popover = React.forwardRef( ({ prefixCls: customizePrefixCls, title, content, overlayClassName, ...otherProps }, ref) => { const { getPrefixCls, iconPrefixCls } = React.useContext(ConfigContext); const getOverlay = (prefixCls: string) => { if (!title && !content) return undefined; return ( <> {title &&
{getRenderPropValue(title)}
}
{getRenderPropValue(content)}
); }; const prefixCls = getPrefixCls('popover', customizePrefixCls); const [wrapSSR, hashId] = useStyle(prefixCls, iconPrefixCls); const rootPrefixCls = getPrefixCls(); const overlayCls = classNames( overlayClassName, hashId, ); return wrapSSR( , ); }, ); Popover.displayName = 'Popover'; Popover.defaultProps = { placement: 'top' as TooltipPlacement, trigger: 'hover', mouseEnterDelay: 0.1, mouseLeaveDelay: 0.1, overlayStyle: {}, }; export default Popover;