diff options
| author | Brendan Allan <[email protected]> | 2026-04-15 14:03:29 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-15 06:03:29 +0000 |
| commit | 8d89c3417bcfb6bb29793a640a37686957e82692 (patch) | |
| tree | 1e37ddb78bb1a777aeaf0dcd5ccb121146d8ff87 /packages/ui/src | |
| parent | c48a4cc05b610043d82333d7791be41bcf6c850d (diff) | |
| download | opencode-8d89c3417bcfb6bb29793a640a37686957e82692.tar.gz opencode-8d89c3417bcfb6bb29793a640a37686957e82692.zip | |
fix: prevent tooltip reopen on trigger click (#22571)
Diffstat (limited to 'packages/ui/src')
| -rw-r--r-- | packages/ui/src/components/tooltip.tsx | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/packages/ui/src/components/tooltip.tsx b/packages/ui/src/components/tooltip.tsx index ada597d0f..4366651d2 100644 --- a/packages/ui/src/components/tooltip.tsx +++ b/packages/ui/src/components/tooltip.tsx @@ -99,6 +99,8 @@ export function Tooltip(props: TooltipProps) { onCleanup(() => obs.disconnect()) }) + let justClickedTrigger = false + return ( <Switch> <Match when={local.inactive}>{local.children}</Match> @@ -112,6 +114,10 @@ export function Tooltip(props: TooltipProps) { onOpenChange={(open) => { if (local.forceOpen) return if (state.block && open) return + if (justClickedTrigger) { + justClickedTrigger = false + return + } setState("open", open) }} > @@ -137,6 +143,12 @@ export function Tooltip(props: TooltipProps) { data-force-open={local.forceOpen} class={local.contentClass} style={local.contentStyle} + onPointerDownOutside={(e) => { + if (ref === e.target || (e.target instanceof Node && ref?.contains(e.target))) { + justClickedTrigger = true + } + e.preventDefault() + }} > {local.value} {/* <KobalteTooltip.Arrow data-slot="tooltip-arrow" /> */} |
