@@ -4,7 +4,6 @@ import Skeleton from "@mui/material/Skeleton";
4
4
import { getErrorDetail , getErrorMessage } from "api/errors" ;
5
5
import { templateVersion } from "api/queries/templates" ;
6
6
import type { Workspace } from "api/typesGenerated" ;
7
- import { usePopover } from "components/deprecated/Popover/Popover" ;
8
7
import { displayError } from "components/GlobalSnackbar/utils" ;
9
8
import {
10
9
HelpTooltip ,
@@ -17,36 +16,46 @@ import {
17
16
} from "components/HelpTooltip/HelpTooltip" ;
18
17
import { InfoIcon , RotateCcwIcon } from "lucide-react" ;
19
18
import { linkToTemplate , useLinks } from "modules/navigation" ;
20
- import type { FC } from "react" ;
19
+ import { useState , type FC } from "react" ;
21
20
import { useQuery } from "react-query" ;
22
21
import {
23
22
useWorkspaceUpdate ,
24
23
WorkspaceUpdateDialogs ,
25
24
} from "../WorkspaceUpdateDialogs" ;
25
+ import { TooltipProvider } from "components/Tooltip/Tooltip" ;
26
26
27
27
interface TooltipProps {
28
28
workspace : Workspace ;
29
29
}
30
30
31
31
export const WorkspaceOutdatedTooltip : FC < TooltipProps > = ( props ) => {
32
+ const [ isOpen , setIsOpen ] = useState ( false ) ;
33
+
32
34
return (
33
- < HelpTooltip >
34
- < HelpTooltipTrigger size = "small" hoverEffect = { false } >
35
- < InfoIcon css = { styles . icon } />
36
- < span className = "sr-only" > Outdated info</ span >
37
- </ HelpTooltipTrigger >
38
- < WorkspaceOutdatedTooltipContent { ...props } />
39
- </ HelpTooltip >
35
+ < TooltipProvider >
36
+ < HelpTooltip open = { isOpen } onOpenChange = { setIsOpen } >
37
+ < HelpTooltipTrigger size = "small" hoverEffect = { false } >
38
+ < InfoIcon css = { styles . icon } />
39
+ < span className = "sr-only" > Outdated info</ span >
40
+ </ HelpTooltipTrigger >
41
+ < WorkspaceOutdatedTooltipContent isOpen = { isOpen } { ...props } />
42
+ </ HelpTooltip >
43
+ </ TooltipProvider >
40
44
) ;
41
45
} ;
42
46
43
- const WorkspaceOutdatedTooltipContent : FC < TooltipProps > = ( { workspace } ) => {
47
+ type TooltipContentProps = TooltipProps & { isOpen : boolean } ;
48
+
49
+ const WorkspaceOutdatedTooltipContent : FC < TooltipContentProps > = ( {
50
+ workspace,
51
+ isOpen,
52
+ } ) => {
44
53
const getLink = useLinks ( ) ;
45
54
const theme = useTheme ( ) ;
46
- const popover = usePopover ( ) ;
47
55
const { data : activeVersion } = useQuery ( {
48
56
...templateVersion ( workspace . template_active_version_id ) ,
49
- enabled : popover . open ,
57
+ // TODO is making the parent HelpTooltip a controlled component the only way to track whether the tooltip is open?
58
+ enabled : isOpen ,
50
59
} ) ;
51
60
const updateWorkspace = useWorkspaceUpdate ( {
52
61
workspace,
0 commit comments