Add no-drag
to Toolbar tooltips in Desktop, open links in default browser (#3800)
Fixes #3781
This commit is contained in:
@ -20,6 +20,8 @@ import {
|
|||||||
ToolbarItemResolved,
|
ToolbarItemResolved,
|
||||||
ToolbarModeName,
|
ToolbarModeName,
|
||||||
} from 'lib/toolbar'
|
} from 'lib/toolbar'
|
||||||
|
import { isDesktop } from 'lib/isDesktop'
|
||||||
|
import { openExternalBrowserIfDesktop } from 'lib/openWindow'
|
||||||
|
|
||||||
export function Toolbar({
|
export function Toolbar({
|
||||||
className = '',
|
className = '',
|
||||||
@ -288,6 +290,11 @@ const ToolbarItemTooltip = memo(function ToolbarItemContents({
|
|||||||
return (
|
return (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
inert={false}
|
inert={false}
|
||||||
|
wrapperStyle={
|
||||||
|
isDesktop()
|
||||||
|
? ({ '-webkit-app-region': 'no-drag' } as React.CSSProperties)
|
||||||
|
: {}
|
||||||
|
}
|
||||||
position="bottom"
|
position="bottom"
|
||||||
wrapperClassName="!p-4 !pointer-events-auto"
|
wrapperClassName="!p-4 !pointer-events-auto"
|
||||||
contentClassName="!text-left text-wrap !text-xs !p-0 !pb-2 flex gap-2 !max-w-none !w-72 flex-col items-stretch"
|
contentClassName="!text-left text-wrap !text-xs !p-0 !pb-2 flex gap-2 !max-w-none !w-72 flex-col items-stretch"
|
||||||
@ -337,6 +344,7 @@ const ToolbarItemTooltip = memo(function ToolbarItemContents({
|
|||||||
<li key={link.label} className="contents">
|
<li key={link.label} className="contents">
|
||||||
<a
|
<a
|
||||||
href={link.url}
|
href={link.url}
|
||||||
|
onClick={openExternalBrowserIfDesktop(link.url)}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
className="flex items-center rounded-sm p-1 no-underline text-inherit hover:bg-primary/10 hover:text-primary dark:hover:bg-chalkboard-70 dark:hover:text-inherit"
|
className="flex items-center rounded-sm p-1 no-underline text-inherit hover:bg-primary/10 hover:text-primary dark:hover:bg-chalkboard-70 dark:hover:text-inherit"
|
||||||
|
@ -12,6 +12,7 @@ interface TooltipProps extends React.PropsWithChildren {
|
|||||||
position?: TooltipPosition
|
position?: TooltipPosition
|
||||||
wrapperClassName?: string
|
wrapperClassName?: string
|
||||||
contentClassName?: string
|
contentClassName?: string
|
||||||
|
wrapperStyle?: React.CSSProperties
|
||||||
delay?: number
|
delay?: number
|
||||||
hoverOnly?: boolean
|
hoverOnly?: boolean
|
||||||
inert?: boolean
|
inert?: boolean
|
||||||
@ -22,6 +23,7 @@ export default function Tooltip({
|
|||||||
position = 'top',
|
position = 'top',
|
||||||
wrapperClassName: className,
|
wrapperClassName: className,
|
||||||
contentClassName,
|
contentClassName,
|
||||||
|
wrapperStyle = {},
|
||||||
delay = 200,
|
delay = 200,
|
||||||
hoverOnly = false,
|
hoverOnly = false,
|
||||||
inert = true,
|
inert = true,
|
||||||
@ -36,7 +38,10 @@ export default function Tooltip({
|
|||||||
} ${styles.tooltipWrapper} ${hoverOnly ? '' : styles.withFocus} ${
|
} ${styles.tooltipWrapper} ${hoverOnly ? '' : styles.withFocus} ${
|
||||||
styles[position]
|
styles[position]
|
||||||
} ${className}`}
|
} ${className}`}
|
||||||
style={{ '--_delay': delay + 'ms' } as React.CSSProperties}
|
style={Object.assign(
|
||||||
|
{ '--_delay': delay + 'ms' } as React.CSSProperties,
|
||||||
|
wrapperStyle
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
<div className={`rounded ${styles.tooltip} ${contentClassName || ''}`}>
|
<div className={`rounded ${styles.tooltip} ${contentClassName || ''}`}>
|
||||||
{children}
|
{children}
|
||||||
|
Reference in New Issue
Block a user