DropdownMenuItemTooltip.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { ComponentProps, ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'
  2. import { cn, DropdownMenuItem, Tooltip, TooltipContent, TooltipTrigger } from 'ui'
  3. export const DropdownMenuItemTooltip = forwardRef<
  4. ElementRef<typeof DropdownMenuItem>,
  5. ComponentPropsWithoutRef<typeof DropdownMenuItem> & {
  6. tooltip: {
  7. content: ComponentProps<typeof TooltipContent> & {
  8. text?: string
  9. }
  10. }
  11. }
  12. >(({ ...props }, ref) => {
  13. return (
  14. <Tooltip>
  15. <TooltipTrigger asChild>
  16. <DropdownMenuItem
  17. ref={ref}
  18. {...props}
  19. className={cn(props.className, 'pointer-events-auto!')}
  20. onClick={(e) => {
  21. if (!props.disabled && props.onClick) props.onClick(e)
  22. }}
  23. >
  24. {props.children}
  25. </DropdownMenuItem>
  26. </TooltipTrigger>
  27. {props.disabled && props.tooltip.content.text !== undefined && (
  28. <TooltipContent {...props.tooltip.content}>{props.tooltip.content.text}</TooltipContent>
  29. )}
  30. </Tooltip>
  31. )
  32. })
  33. DropdownMenuItemTooltip.displayName = 'DropdownMenuItemTooltip'