@@ -10,13 +10,13 @@ export function connect<T extends PropTypes>(
10
10
) : NavigationMenuApi < T > {
11
11
const { context, send, prop, scope, computed } = service
12
12
13
- const activeTriggerRect = context . get ( "triggerRect" )
13
+ const triggerRect = context . get ( "triggerRect" )
14
14
const viewportSize = context . get ( "viewportSize" )
15
15
16
16
const value = context . get ( "value" )
17
+ const previousValue = context . get ( "previousValue" )
17
18
const open = Boolean ( value )
18
19
19
- const previousValue = context . get ( "previousValue" )
20
20
const isViewportRendered = context . get ( "isViewportRendered" )
21
21
const preventTransition = value && ! previousValue
22
22
@@ -44,7 +44,7 @@ export function connect<T extends PropTypes>(
44
44
send ( { type : "PARENT.SET" , parent } )
45
45
} ,
46
46
setChild ( child ) {
47
- send ( { type : "CHILD.SET" , value : child , id : child . prop ( "id" ) ! } )
47
+ send ( { type : "CHILD.SET" , value : child , id : child . prop ( "id" ) } )
48
48
} ,
49
49
50
50
getRootProps ( ) {
@@ -56,10 +56,10 @@ export function connect<T extends PropTypes>(
56
56
"data-type" : computed ( "isSubmenu" ) ? "submenu" : "root" ,
57
57
dir : prop ( "dir" ) ,
58
58
style : {
59
- "--trigger-width" : activeTriggerRect != null ? activeTriggerRect . width + "px" : undefined ,
60
- "--trigger-height" : activeTriggerRect != null ? activeTriggerRect . height + "px" : undefined ,
61
- "--trigger-x" : activeTriggerRect != null ? activeTriggerRect . x + "px" : undefined ,
62
- "--trigger-y" : activeTriggerRect != null ? activeTriggerRect . y + "px" : undefined ,
59
+ "--trigger-width" : triggerRect != null ? triggerRect . width + "px" : undefined ,
60
+ "--trigger-height" : triggerRect != null ? triggerRect . height + "px" : undefined ,
61
+ "--trigger-x" : triggerRect != null ? triggerRect . x + "px" : undefined ,
62
+ "--trigger-y" : triggerRect != null ? triggerRect . y + "px" : undefined ,
63
63
"--viewport-width" : viewportSize != null ? viewportSize . width + "px" : undefined ,
64
64
"--viewport-height" : viewportSize != null ? viewportSize . height + "px" : undefined ,
65
65
} ,
@@ -128,7 +128,7 @@ export function connect<T extends PropTypes>(
128
128
return normalize . button ( {
129
129
...parts . trigger . attrs ,
130
130
id : itemState . triggerId ,
131
- "data-uid" : prop ( "id" ) ! ,
131
+ "data-uid" : prop ( "id" ) ,
132
132
dir : prop ( "dir" ) ,
133
133
disabled : props . disabled ,
134
134
"data-value" : props . value ,
@@ -137,10 +137,15 @@ export function connect<T extends PropTypes>(
137
137
"data-disabled" : dataAttr ( props . disabled ) ,
138
138
"aria-controls" : itemState . contentId ,
139
139
"aria-expanded" : itemState . selected ,
140
+ onPointerDown ( ) {
141
+ send ( { type : "TRIGGER.POINTERDOWN" } )
142
+ } ,
140
143
onPointerEnter ( ) {
144
+ if ( prop ( "disableHoverTrigger" ) ) return
141
145
send ( { type : "TRIGGER.ENTER" , value : props . value } )
142
146
} ,
143
147
onPointerMove ( event ) {
148
+ if ( prop ( "disableHoverTrigger" ) ) return
144
149
if ( event . pointerType !== "mouse" ) return
145
150
if ( itemState . disabled ) return
146
151
if ( context . get ( "hasPointerMoveOpened" ) === props . value ) return
@@ -149,12 +154,14 @@ export function connect<T extends PropTypes>(
149
154
send ( { type : "TRIGGER.MOVE" , value : props . value } )
150
155
} ,
151
156
onPointerLeave ( event ) {
157
+ if ( prop ( "disableHoverTrigger" ) ) return
152
158
if ( event . pointerType !== "mouse" ) return
153
159
if ( props . disabled ) return
154
160
if ( computed ( "isSubmenu" ) ) return
155
161
send ( { type : "TRIGGER.LEAVE" , value : props . value } )
156
162
} ,
157
163
onClick ( ) {
164
+ if ( prop ( "disableClickTrigger" ) ) return
158
165
send ( { type : "TRIGGER.CLICK" , value : props . value } )
159
166
} ,
160
167
onKeyDown ( event ) {
@@ -195,8 +202,8 @@ export function connect<T extends PropTypes>(
195
202
...parts . link . attrs ,
196
203
dir : prop ( "dir" ) ,
197
204
"data-value" : props . value ,
198
- "data-current" : dataAttr ( props . current ) ,
199
- "aria-current" : props . current ? "page" : undefined ,
205
+ "data-current" : dataAttr ( props . active ) ,
206
+ "aria-current" : props . active ? "page" : undefined ,
200
207
"data-ownedby" : dom . getContentId ( scope , props . value ) ,
201
208
onClick ( event ) {
202
209
const { currentTarget } = event
@@ -275,7 +282,7 @@ export function connect<T extends PropTypes>(
275
282
dir : prop ( "dir" ) ,
276
283
hidden : ! selected ,
277
284
"aria-labelledby" : itemState . triggerId ,
278
- "data-uid" : prop ( "id" ) ! ,
285
+ "data-uid" : prop ( "id" ) ,
279
286
"data-state" : selected ? "open" : "closed" ,
280
287
"data-type" : computed ( "isSubmenu" ) ? "submenu" : "root" ,
281
288
"data-value" : props . value ,
0 commit comments