import React, { HTMLAttributes, useState } from "react"; export interface TooltipProps { placement?: 'top' | 'right' | 'bottom' | 'left'; tooltip?: string; } const Tooltip: React.FC> = ({ children, placement, tooltip, className, ...props }) => { const [_tooltip, setTooltip] = useState(); const classes = [ 'btn', className, ].filter(Boolean).join(' '); const onMouseEnter = (ev: React.MouseEvent) => { const { onMouseEnter: _onMouseEnter } = props; setTooltip( {placement === 'top' && } {tooltip} {placement === 'bottom' && } ) if (_onMouseEnter) { return _onMouseEnter(ev); } } const onMouseLeave = (ev: React.MouseEvent) => { const { onMouseLeave: _onMouseLeave } = props; // setTooltip(null); if (_onMouseLeave) { return _onMouseLeave(ev); } } return ( <> {placement === 'top' && _tooltip} {children} {placement === 'bottom' && _tooltip} > ) } export default Tooltip;