@@ -10,8 +10,9 @@ import {
10
10
} from "components/HelpTooltip/HelpTooltip" ;
11
11
import { Stack } from "components/Stack/Stack" ;
12
12
import { RotateCcwIcon } from "lucide-react" ;
13
- import type { FC } from "react" ;
13
+ import { useState , type FC } from "react" ;
14
14
import { agentVersionStatus } from "../../utils/workspace" ;
15
+ import { TooltipProvider , TooltipTrigger } from "components/Tooltip/Tooltip" ;
15
16
16
17
type AgentOutdatedTooltipProps = {
17
18
agent : WorkspaceAgent ;
@@ -26,6 +27,8 @@ export const AgentOutdatedTooltip: FC<AgentOutdatedTooltipProps> = ({
26
27
status,
27
28
onUpdate,
28
29
} ) => {
30
+ const [ isOpen , setIsOpen ] = useState ( false ) ;
31
+
29
32
const title =
30
33
status === agentVersionStatus . Outdated
31
34
? "Agent Outdated"
@@ -37,44 +40,50 @@ export const AgentOutdatedTooltip: FC<AgentOutdatedTooltipProps> = ({
37
40
const text = `${ opener } This can happen after you update Coder with running workspaces. To fix this, you can stop and start the workspace.` ;
38
41
39
42
return (
40
- < HelpTooltip >
41
- < PopoverTrigger >
42
- < span role = "status" className = "cursor-pointer" >
43
- { status === agentVersionStatus . Outdated ? "Outdated" : "Deprecated" }
44
- </ span >
45
- </ PopoverTrigger >
46
- < HelpTooltipContent >
47
- < Stack spacing = { 1 } >
48
- < div >
49
- < HelpTooltipTitle > { title } </ HelpTooltipTitle >
50
- < HelpTooltipText > { text } </ HelpTooltipText >
51
- </ div >
43
+ < TooltipProvider >
44
+ < HelpTooltip open = { isOpen } onOpenChange = { setIsOpen } >
45
+ < TooltipTrigger asChild >
46
+ < span role = "status" className = "cursor-pointer" >
47
+ { status === agentVersionStatus . Outdated ? "Outdated" : "Deprecated" }
48
+ </ span >
49
+ </ TooltipTrigger >
50
+ < HelpTooltipContent >
51
+ < Stack spacing = { 1 } >
52
+ < div >
53
+ < HelpTooltipTitle > { title } </ HelpTooltipTitle >
54
+ < HelpTooltipText > { text } </ HelpTooltipText >
55
+ </ div >
52
56
53
- < Stack spacing = { 0.5 } >
54
- < span className = "font-semibold text-content-primary" >
55
- Agent version
56
- </ span >
57
- < span > { agent . version } </ span >
58
- </ Stack >
57
+ < Stack spacing = { 0.5 } >
58
+ < span className = "font-semibold text-content-primary" >
59
+ Agent version
60
+ </ span >
61
+ < span > { agent . version } </ span >
62
+ </ Stack >
59
63
60
- < Stack spacing = { 0.5 } >
61
- < span className = "font-semibold text-content-primary" >
62
- Server version
63
- </ span >
64
- < span > { serverVersion } </ span >
65
- </ Stack >
64
+ < Stack spacing = { 0.5 } >
65
+ < span className = "font-semibold text-content-primary" >
66
+ Server version
67
+ </ span >
68
+ < span > { serverVersion } </ span >
69
+ </ Stack >
66
70
67
- < HelpTooltipLinksGroup >
68
- < HelpTooltipAction
69
- icon = { RotateCcwIcon }
70
- onClick = { onUpdate }
71
- ariaLabel = "Update workspace"
72
- >
73
- Update workspace
74
- </ HelpTooltipAction >
75
- </ HelpTooltipLinksGroup >
76
- </ Stack >
77
- </ HelpTooltipContent >
78
- </ HelpTooltip >
71
+ < HelpTooltipLinksGroup >
72
+ < HelpTooltipAction
73
+ icon = { RotateCcwIcon }
74
+ onClick = { ( ) => {
75
+ onUpdate ( ) ;
76
+ // TODO can we move this tooltip-closing logic to the definition of HelpTooltipAction?
77
+ setIsOpen ( false ) ;
78
+ } }
79
+ ariaLabel = "Update workspace"
80
+ >
81
+ Update workspace
82
+ </ HelpTooltipAction >
83
+ </ HelpTooltipLinksGroup >
84
+ </ Stack >
85
+ </ HelpTooltipContent >
86
+ </ HelpTooltip >
87
+ </ TooltipProvider >
79
88
) ;
80
89
} ;
0 commit comments