diff --git a/packages/core/src/shouldIntercept.ts b/packages/core/src/shouldIntercept.ts index 42c61fb40..43d1dddba 100644 --- a/packages/core/src/shouldIntercept.ts +++ b/packages/core/src/shouldIntercept.ts @@ -1,4 +1,13 @@ -export default function shouldIntercept(event: MouseEvent | KeyboardEvent): boolean { +// The actual event passed to this function could be a native JavaScript event +// or a React synthetic event, so we are picking just the keys needed here (that +// are present in both types). + +export default function shouldIntercept( + event: Pick< + MouseEvent, + 'altKey' | 'ctrlKey' | 'defaultPrevented' | 'target' | 'currentTarget' | 'metaKey' | 'shiftKey' | 'button' + >, +): boolean { const isLink = (event.currentTarget as HTMLElement).tagName.toLowerCase() === 'a' return !( (event.target && (event?.target as HTMLElement).isContentEditable) || diff --git a/packages/react/src/Link.ts b/packages/react/src/Link.ts index 5d29b01f8..8180e5fbb 100755 --- a/packages/react/src/Link.ts +++ b/packages/react/src/Link.ts @@ -70,7 +70,7 @@ const Link = forwardRef( (event: React.MouseEvent) => { onClick(event) - if (shouldIntercept(event.nativeEvent)) { + if (shouldIntercept(event)) { event.preventDefault() router.visit(href, {