dropdown-toggle-with-tooltip.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { forwardRef } from 'react'
  2. import Tooltip from '../tooltip'
  3. import classnames from 'classnames'
  4. import { DropdownProps } from 'react-bootstrap'
  5. import { MergeAndOverride } from '../../../../../types/utils'
  6. type CustomToggleProps = MergeAndOverride<
  7. Pick<DropdownProps, 'bsClass'>,
  8. {
  9. children: React.ReactNode
  10. bsRole: 'toggle'
  11. className?: string
  12. tooltipProps: Omit<React.ComponentProps<typeof Tooltip>, 'children'>
  13. }
  14. >
  15. const DropdownToggleWithTooltip = forwardRef<
  16. HTMLButtonElement,
  17. CustomToggleProps
  18. >(function (props, ref) {
  19. const {
  20. tooltipProps,
  21. children,
  22. bsClass,
  23. className,
  24. bsRole: _bsRole,
  25. ...rest
  26. } = props
  27. return (
  28. <Tooltip {...tooltipProps}>
  29. <button
  30. type="button"
  31. ref={ref}
  32. className={classnames(bsClass, 'btn', className)}
  33. {...rest}
  34. >
  35. {children}
  36. </button>
  37. </Tooltip>
  38. )
  39. })
  40. DropdownToggleWithTooltip.displayName = 'DropdownToggleWithTooltip'
  41. export default DropdownToggleWithTooltip