overleaf/services/web/frontend/js/shared/components/tooltip.tsx
Alf Eaton e95ad3e71b Tidy up shared React components (#9509)
GitOrigin-RevId: b8029b65c95ccdac89587d484e2599e25fe44302
2023-01-06 09:03:47 +00:00

33 lines
813 B
TypeScript

import type { FC, ReactNode } from 'react'
import {
OverlayTrigger,
OverlayTriggerProps,
Tooltip as BSTooltip,
} from 'react-bootstrap'
type OverlayProps = Omit<OverlayTriggerProps, 'overlay'> & {
shouldUpdatePosition?: boolean // Not officially documented https://stackoverflow.com/a/43138470
}
const Tooltip: FC<{
description: ReactNode
id: string
overlayProps?: OverlayProps
tooltipProps?: BSTooltip.TooltipProps
}> = ({ id, description, children, tooltipProps, overlayProps }) => {
return (
<OverlayTrigger
overlay={
<BSTooltip id={`${id}-tooltip`} {...tooltipProps}>
{description}
</BSTooltip>
}
{...overlayProps}
placement={overlayProps?.placement || 'top'}
>
{children}
</OverlayTrigger>
)
}
export default Tooltip