@@ -41,12 +41,12 @@ const closeButtonStyles = css({
41
41
right : spacing [ 2 ] ,
42
42
} ) ;
43
43
44
- type InteractivePopoverProps = {
44
+ type InteractivePopoverProps < TriggerElement extends HTMLElement > = {
45
45
className ?: string ;
46
46
children : React . ReactNode ;
47
47
trigger : ( triggerProps : {
48
- onClick : React . MouseEventHandler < HTMLButtonElement > ;
49
- ref : React . LegacyRef < HTMLButtonElement > ;
48
+ onClick : React . MouseEventHandler < TriggerElement > ;
49
+ ref : React . Ref < TriggerElement > ;
50
50
children : React . ReactNode ;
51
51
} ) => React . ReactElement ;
52
52
hideCloseButton ?: boolean ;
@@ -64,7 +64,7 @@ type InteractivePopoverProps = {
64
64
'align' | 'justify' | 'spacing' | 'popoverZIndex'
65
65
> ;
66
66
67
- function InteractivePopover ( {
67
+ function InteractivePopover < TriggerElement extends HTMLElement > ( {
68
68
className,
69
69
children,
70
70
trigger,
@@ -79,9 +79,9 @@ function InteractivePopover({
79
79
popoverZIndex,
80
80
containerClassName,
81
81
closeButtonClassName,
82
- } : InteractivePopoverProps ) : React . ReactElement {
82
+ } : InteractivePopoverProps < TriggerElement > ) : React . ReactElement {
83
83
const darkMode = useDarkMode ( ) ;
84
- const triggerRef = useRef < HTMLButtonElement > ( null ) ;
84
+ const triggerRef = useRef < TriggerElement > ( null ) ;
85
85
const closeButtonRef = useRef < HTMLButtonElement > ( null ) ;
86
86
const popoverContentContainerRef = useRef < HTMLDivElement > ( null ) ;
87
87
0 commit comments