11
11
*/
12
12
13
13
import { classNames , SlotProvider , unwrapDOMRef , useIsMobileDevice } from '@react-spectrum/utils' ;
14
+ import { DOMRefValue , ItemProps , Key } from '@react-types/shared' ;
14
15
import { FocusScope } from '@react-aria/focus' ;
15
16
import { getInteractionModality } from '@react-aria/interactions' ;
16
17
import helpStyles from '@adobe/spectrum-css-temp/components/contextualhelp/vars.css' ;
17
- import { ItemProps , Key } from '@react-types/shared' ;
18
18
import { Popover } from '@react-spectrum/overlays' ;
19
19
import React , { JSX , ReactElement , useEffect , useRef , useState } from 'react' ;
20
20
import ReactDOM from 'react-dom' ;
@@ -41,7 +41,7 @@ function ContextualHelpTrigger(props: InternalMenuDialogTriggerProps): ReactElem
41
41
let { isUnavailable = false , targetKey} = props ;
42
42
43
43
let triggerRef = useRef < HTMLLIElement > ( null ) ;
44
- let popoverRef = useRef ( null ) ;
44
+ let popoverRef = useRef < DOMRefValue < HTMLDivElement > | null > ( null ) ;
45
45
let { popoverContainer, trayContainerRef, rootMenuTriggerState, menu : parentMenuRef , state} = useMenuStateContext ( ) ! ;
46
46
let submenuTriggerState = useSubmenuTriggerState ( { triggerKey : targetKey } , { ...rootMenuTriggerState ! , ...state } ) ;
47
47
let submenuRef = unwrapDOMRef ( popoverRef ) ;
@@ -85,8 +85,7 @@ function ContextualHelpTrigger(props: InternalMenuDialogTriggerProps): ReactElem
85
85
let [ , content ] = props . children as [ ReactElement , ReactElement ] ;
86
86
87
87
let onBlurWithin = ( e ) => {
88
- // @ts -ignore - TODO refs strike again
89
- if ( e . relatedTarget && popoverRef . current && ( ! popoverRef . current . UNSAFE_getDOMNode ( ) . contains ( e . relatedTarget ) && ! ( e . relatedTarget === triggerRef . current && getInteractionModality ( ) === 'pointer' ) ) ) {
88
+ if ( e . relatedTarget && popoverRef . current && ( ! popoverRef . current . UNSAFE_getDOMNode ( ) ?. contains ( e . relatedTarget ) && ! ( e . relatedTarget === triggerRef . current && getInteractionModality ( ) === 'pointer' ) ) ) {
90
89
if ( submenuTriggerState . isOpen ) {
91
90
submenuTriggerState . close ( ) ;
92
91
}
0 commit comments