tooltip.tsx 865 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. export type TooltipProps = {
  11. description: ReactNode
  12. id: string
  13. overlayProps?: OverlayProps
  14. tooltipProps?: BSTooltip.TooltipProps
  15. }
  16. const Tooltip: FC<TooltipProps> = ({
  17. id,
  18. description,
  19. children,
  20. tooltipProps,
  21. overlayProps,
  22. }) => {
  23. return (
  24. <OverlayTrigger
  25. overlay={
  26. <BSTooltip id={`${id}-tooltip`} {...tooltipProps}>
  27. {description}
  28. </BSTooltip>
  29. }
  30. {...overlayProps}
  31. placement={overlayProps?.placement || 'top'}
  32. >
  33. {children}
  34. </OverlayTrigger>
  35. )
  36. }
  37. export default Tooltip