import React, { HTMLAttributes, ReactNode, useState } from 'react'; import classNames from 'classnames'; import { CSSTransition } from 'react-transition-group'; import './index.scss'; type Position = | 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight' | 'leftTop' | 'leftCenter' | 'leftBottom' | 'rightTop' | 'rightCenter' | 'rightBottom'; export interface PopoverProps extends HTMLAttributes { position?: Position; content: ReactNode; title: string; trigger?: 'hover' | 'click'; children?: React.ReactNode; } const Popover: React.FC = (props) => { const { children, position, content, title, trigger, ...rest } = props; const [isShow, setShow] = useState(false); return ( { if (trigger === 'click') setShow(true); }} onBlur={() => { if (trigger === 'click') setShow(false); }} onMouseOver={() => { if (trigger === 'hover') setShow(true); }} onMouseOut={() => { if (trigger === 'hover') setShow(false); }} > {title} {content} {children} ); }; Popover.defaultProps = { position: 'topCenter', trigger: 'click', children: '' }; export default Popover;
{title}