@@ -4,6 +4,7 @@ import { MenuList } from './MenuList.mjs';
4
4
import { jsxs , jsx } from 'react/jsx-runtime' ;
5
5
import { withHovering } from '../utils/withHovering.mjs' ;
6
6
import { useMenuStateAndFocus } from '../hooks/useMenuStateAndFocus.mjs' ;
7
+ import { useMouseOver } from '../hooks/useMouseOver.mjs' ;
7
8
import { useItemEffect } from '../hooks/useItemEffect.mjs' ;
8
9
import { SettingsContext , MenuListContext , MenuListItemContext , roleNone , roleMenuitem , menuClass , menuItemClass , subMenuClass , HoverActionTypes , Keys , FocusPositions } from '../utils/constants.mjs' ;
9
10
import { useBEM } from '../hooks/useBEM.mjs' ;
@@ -48,6 +49,7 @@ const SubMenu = /*#__PURE__*/withHovering('SubMenu', function SubMenu({
48
49
...settings ,
49
50
onMenuChange
50
51
} ) ;
52
+ const [ mouseOver , mouseOverStart , mouseOverEnd ] = useMouseOver ( isHovering ) ;
51
53
const {
52
54
state
53
55
} = stateProps ;
@@ -77,10 +79,12 @@ const SubMenu = /*#__PURE__*/withHovering('SubMenu', function SubMenu({
77
79
const onPointerMove = e => {
78
80
if ( isDisabled ) return ;
79
81
e . stopPropagation ( ) ;
82
+ mouseOverStart ( ) ;
80
83
if ( timerId . v || isOpen ) return ;
81
84
submenuCtx . on ( submenuCloseDelay , ( ) => delayOpen ( submenuOpenDelay - submenuCloseDelay ) , ( ) => delayOpen ( submenuOpenDelay ) ) ;
82
85
} ;
83
86
const onPointerLeave = ( ) => {
87
+ mouseOverEnd ( ) ;
84
88
stopTimer ( ) ;
85
89
if ( ! isOpen ) dispatch ( HoverActionTypes . UNSET , itemRef . current ) ;
86
90
} ;
@@ -139,10 +143,10 @@ const SubMenu = /*#__PURE__*/withHovering('SubMenu', function SubMenu({
139
143
} ) ) ;
140
144
const modifiers = useMemo ( ( ) => ( {
141
145
open : isOpen ,
142
- hover : isHovering ,
146
+ hover : mouseOver || isHovering ,
143
147
disabled : isDisabled ,
144
148
submenu : true
145
- } ) , [ isOpen , isHovering , isDisabled ] ) ;
149
+ } ) , [ isOpen , isHovering , isDisabled , mouseOver ] ) ;
146
150
const {
147
151
ref : externalItemRef ,
148
152
className : itemClassName ,
0 commit comments