From dc6603a1b978122238108792c9de2d4f3b040396 Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 7 Feb 2024 03:45:16 +0000 Subject: [PATCH] Fix open-in-new-tab for TextLink (#2773) --- src/view/com/util/Link.tsx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index afbdeb8f..d52d3c0e 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -197,6 +197,15 @@ export const TextLink = memo(function TextLink({ href, }) } + if ( + isWeb && + href !== '#' && + e != null && + isModifiedEvent(e as React.MouseEvent) + ) { + // Let the browser handle opening in new tab etc. + return + } if (onPress) { e?.preventDefault?.() // @ts-ignore function signature differs by platform -prf @@ -382,3 +391,16 @@ function onPressInner( } } } + +function isModifiedEvent(e: React.MouseEvent): boolean { + const eventTarget = e.currentTarget as HTMLAnchorElement + const target = eventTarget.getAttribute('target') + return ( + (target && target !== '_self') || + e.metaKey || + e.ctrlKey || + e.shiftKey || + e.altKey || + (e.nativeEvent && e.nativeEvent.which === 2) + ) +}