@@ -7,12 +7,6 @@ import type {
7
7
WorkspaceBuildParameter ,
8
8
} from "api/typesGenerated" ;
9
9
import { Button } from "components/Button/Button" ;
10
- import {
11
- Popover ,
12
- PopoverContent ,
13
- PopoverTrigger ,
14
- usePopover ,
15
- } from "components/deprecated/Popover/Popover" ;
16
10
import { FormFields } from "components/Form/Form" ;
17
11
import { TopbarButton } from "components/FullPageLayout/Topbar" ;
18
12
import {
@@ -21,13 +15,18 @@ import {
21
15
HelpTooltipText ,
22
16
HelpTooltipTitle ,
23
17
} from "components/HelpTooltip/HelpTooltip" ;
18
+ import { Link } from "components/Link/Link" ;
24
19
import { Loader } from "components/Loader/Loader" ;
20
+ import {
21
+ Popover ,
22
+ PopoverContent ,
23
+ PopoverTrigger ,
24
+ } from "components/Popover/Popover" ;
25
25
import { RichParameterInput } from "components/RichParameterInput/RichParameterInput" ;
26
26
import { useFormik } from "formik" ;
27
27
import { ChevronDownIcon } from "lucide-react" ;
28
- import type { FC } from "react" ;
28
+ import { useState , type FC } from "react" ;
29
29
import { useQuery } from "react-query" ;
30
- import { useNavigate } from "react-router" ;
31
30
import { docs } from "utils/docs" ;
32
31
import { getFormHelpers } from "utils/formUtils" ;
33
32
import {
@@ -48,6 +47,7 @@ export const BuildParametersPopover: FC<BuildParametersPopoverProps> = ({
48
47
label,
49
48
onSubmit,
50
49
} ) => {
50
+ const [ isOpen , setIsOpen ] = useState ( false ) ;
51
51
const { data : parameters } = useQuery ( {
52
52
queryKey : [ "workspace" , workspace . id , "parameters" ] ,
53
53
queryFn : ( ) => API . getWorkspaceParameters ( workspace ) ,
@@ -57,8 +57,8 @@ export const BuildParametersPopover: FC<BuildParametersPopoverProps> = ({
57
57
: undefined ;
58
58
59
59
return (
60
- < Popover >
61
- < PopoverTrigger >
60
+ < Popover open = { isOpen } onOpenChange = { setIsOpen } >
61
+ < PopoverTrigger asChild >
62
62
< TopbarButton
63
63
data-testid = "build-parameters-button"
64
64
disabled = { disabled }
@@ -68,15 +68,13 @@ export const BuildParametersPopover: FC<BuildParametersPopoverProps> = ({
68
68
< span css = { { ...visuallyHidden } } > { label } </ span >
69
69
</ TopbarButton >
70
70
</ PopoverTrigger >
71
- < PopoverContent
72
- horizontal = "right"
73
- css = { { ".MuiPaper-root" : { width : 304 } } }
74
- >
71
+ < PopoverContent align = "end" className = "w-[304px]" >
75
72
< BuildParametersPopoverContent
76
73
workspace = { workspace }
77
74
ephemeralParameters = { ephemeralParameters }
78
75
buildParameters = { parameters ?. buildParameters }
79
76
onSubmit = { onSubmit }
77
+ setIsOpen = { setIsOpen }
80
78
/>
81
79
</ PopoverContent >
82
80
</ Popover >
@@ -88,30 +86,23 @@ interface BuildParametersPopoverContentProps {
88
86
ephemeralParameters ?: TemplateVersionParameter [ ] ;
89
87
buildParameters ?: WorkspaceBuildParameter [ ] ;
90
88
onSubmit : ( buildParameters : WorkspaceBuildParameter [ ] ) => void ;
89
+ setIsOpen : React . Dispatch < React . SetStateAction < boolean > > ;
91
90
}
92
91
93
92
const BuildParametersPopoverContent : FC < BuildParametersPopoverContentProps > = ( {
94
93
workspace,
95
94
ephemeralParameters,
96
95
buildParameters,
97
96
onSubmit,
97
+ setIsOpen,
98
98
} ) => {
99
99
const theme = useTheme ( ) ;
100
- const popover = usePopover ( ) ;
101
- const navigate = useNavigate ( ) ;
102
100
103
101
if (
104
102
! workspace . template_use_classic_parameter_flow &&
105
103
ephemeralParameters &&
106
104
ephemeralParameters . length > 0
107
105
) {
108
- const handleGoToParameters = ( ) => {
109
- popover . setOpen ( false ) ;
110
- navigate (
111
- `/@${ workspace . owner_name } /${ workspace . name } /settings/parameters` ,
112
- ) ;
113
- } ;
114
-
115
106
return (
116
107
< div className = "flex flex-col gap-4 p-5" >
117
108
< p className = "m-0 text-sm text-content-secondary" >
@@ -137,9 +128,12 @@ const BuildParametersPopoverContent: FC<BuildParametersPopoverContentProps> = ({
137
128
</ ul >
138
129
</ div >
139
130
140
- < Button className = "w-full" onClick = { handleGoToParameters } >
131
+ < Link
132
+ href = { `/@${ workspace . owner_name } /${ workspace . name } /settings/parameters` }
133
+ className = "self-start"
134
+ >
141
135
Go to workspace parameters
142
- </ Button >
136
+ </ Link >
143
137
</ div >
144
138
) ;
145
139
}
@@ -165,7 +159,7 @@ const BuildParametersPopoverContent: FC<BuildParametersPopoverContentProps> = ({
165
159
< Form
166
160
onSubmit = { ( buildParameters ) => {
167
161
onSubmit ( buildParameters ) ;
168
- popover . setOpen ( false ) ;
162
+ setIsOpen ( false ) ;
169
163
} }
170
164
ephemeralParameters = { ephemeralParameters }
171
165
buildParameters = { buildParameters . map (
0 commit comments