Skip to content

Commit 5c8d46b

Browse files
committed
Prevent navigation when clicking button/svg/path in LinkItem
1 parent e2d01ea commit 5c8d46b

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

packages/react/src/ActionList/Item.tsx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,30 @@ const LinkItemContainerNoBox = React.forwardRef<HTMLAnchorElement, LinkItemConta
6565
hasUserOnClick: !!userOnClick,
6666
event: event.type,
6767
target: (event.target as HTMLElement)?.tagName,
68+
defaultPrevented: event.defaultPrevented,
69+
timestamp: Date.now(),
6870
})
69-
onClick && onClick(event)
70-
console.log('[LinkItemContainerNoBox] After Item onClick', {defaultPrevented: event.defaultPrevented})
71-
userOnClick && userOnClick(event as React.MouseEvent<HTMLAnchorElement>)
72-
console.log('[LinkItemContainerNoBox] After userOnClick', {defaultPrevented: event.defaultPrevented})
71+
72+
// Check if click is on a button/svg/path (menu trigger) and prevent navigation immediately
73+
const targetTag = (event.target as HTMLElement)?.tagName?.toLowerCase()
74+
if (['button', 'svg', 'path'].includes(targetTag)) {
75+
console.log('[LinkItemContainerNoBox] Click on button/svg/path detected, preventing default')
76+
event.preventDefault()
77+
}
78+
79+
// Call Item's onClick first (handles selection logic)
80+
if (onClick) {
81+
console.log('[LinkItemContainerNoBox] Calling Item onClick')
82+
onClick(event)
83+
console.log('[LinkItemContainerNoBox] After Item onClick', {defaultPrevented: event.defaultPrevented})
84+
}
85+
86+
// Call user's onClick (NavList's onClick) if event not prevented
87+
if (userOnClick) {
88+
console.log('[LinkItemContainerNoBox] Calling userOnClick (NavList handler)')
89+
userOnClick(event as React.MouseEvent<HTMLAnchorElement>)
90+
console.log('[LinkItemContainerNoBox] After userOnClick', {defaultPrevented: event.defaultPrevented})
91+
}
7392
}
7493
if (inactiveText) {
7594
return (

0 commit comments

Comments
 (0)