tooltip.tsx 813 B

123456789101112131415161718192021222324252627282930313233
  1. import type { FC, ReactNode } from 'react'
  2. import {
  3. OverlayTrigger,
  4. OverlayTriggerProps,
  5. Tooltip as BSTooltip,
  6. } from 'react-bootstrap'
  7. type OverlayProps = Omit<OverlayTriggerProps, 'overlay'> & {
  8. shouldUpdatePosition?: boolean // Not officially documented https://stackoverflow.com/a/43138470
  9. }
  10. const Tooltip: FC<{
  11. description: ReactNode
  12. id: string
  13. overlayProps?: OverlayProps
  14. tooltipProps?: BSTooltip.TooltipProps
  15. }> = ({ id, description, children, tooltipProps, overlayProps }) => {
  16. return (
  17. <OverlayTrigger
  18. overlay={
  19. <BSTooltip id={`${id}-tooltip`} {...tooltipProps}>
  20. {description}
  21. </BSTooltip>
  22. }
  23. {...overlayProps}
  24. placement={overlayProps?.placement || 'top'}
  25. >
  26. {children}
  27. </OverlayTrigger>
  28. )
  29. }
  30. export default Tooltip