@@ -54,18 +54,7 @@ import {
54
54
} from "components/FullPageLayout/Topbar" ;
55
55
import { Sidebar } from "components/FullPageLayout/Sidebar" ;
56
56
import ButtonGroup from "@mui/material/ButtonGroup" ;
57
- import {
58
- Popover ,
59
- PopoverContent ,
60
- PopoverTrigger ,
61
- } from "components/Popover/Popover" ;
62
- import { HelpTooltipTitle , HelpTooltipText , } from "components/HelpTooltip/HelpTooltip" ;
63
- import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined" ;
64
- import { ProvisionerTag } from "pages/HealthPage/ProvisionerDaemonsPage" ;
65
- import { Stack } from "components/Stack/Stack" ;
66
- import { additionalTags } from "utils/provisionertags" ;
67
- import TextField from "@mui/material/TextField" ;
68
- import AddIcon from '@mui/icons-material/Add' ;
57
+ import { ProviderTagsPopover } from "./ProvisionerTagsPopover" ;
69
58
70
59
type Tab = "logs" | "resources" | undefined ; // Undefined is to hide the tab
71
60
@@ -91,6 +80,8 @@ export interface TemplateVersionEditorProps {
91
80
onSubmitMissingVariableValues : ( values : VariableValue [ ] ) => void ;
92
81
onCancelSubmitMissingVariableValues : ( ) => void ;
93
82
defaultTab ?: Tab ;
83
+ provisionerTags : Record < string , string > ;
84
+ onUpdateProvisionerTags : ( tags : Record < string , string > ) => void ;
94
85
}
95
86
96
87
const findInitialFile = ( fileTree : FileTree ) : string | undefined => {
@@ -127,6 +118,8 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
127
118
onSubmitMissingVariableValues,
128
119
onCancelSubmitMissingVariableValues,
129
120
defaultTab,
121
+ provisionerTags,
122
+ onUpdateProvisionerTags,
130
123
} ) => {
131
124
const theme = useTheme ( ) ;
132
125
const [ selectedTab , setSelectedTab ] = useState < Tab > ( defaultTab ) ;
@@ -194,18 +187,6 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
194
187
}
195
188
} , [ buildLogs ] ) ;
196
189
197
- const disabled = false ;
198
- const [ extraTags , setExtraTags ] = useState ( additionalTags ( templateVersion . job . tags ) ) ;
199
- const [ keyInput , setKeyInput ] = useState ( "" ) ;
200
- const [ valueInput , setValueInput ] = useState ( "" ) ;
201
- // extraTags = {
202
- // "key1": "value1",
203
- // "1": "2",
204
- // "3": "true",
205
- // "5": "6",
206
- // "seven": "0",
207
- // } as Record<string,string>;
208
-
209
190
return (
210
191
< >
211
192
< div css = { { height : "100%" , display : "flex" , flexDirection : "column" } } >
@@ -269,7 +250,7 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
269
250
borderLeft : "1px solid #FFF" ,
270
251
} ,
271
252
} }
272
- disabled = { disabled }
253
+ disabled = { disablePreview }
273
254
>
274
255
< TopbarButton
275
256
startIcon = {
@@ -285,85 +266,20 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
285
266
>
286
267
Build
287
268
</ TopbarButton >
288
- < Popover isDefaultOpen = { false } >
289
- < PopoverTrigger >
290
- < TopbarButton
291
- data-testid = "build-parameters-button"
292
- disabled = { disabled }
293
- color = "neutral"
294
- css = { { paddingLeft : 0 , paddingRight : 0 , minWidth : "28px !important" } }
295
- >
296
- < ExpandMoreOutlined css = { { fontSize : 14 } } />
297
- </ TopbarButton >
298
- </ PopoverTrigger >
299
- < PopoverContent
300
- horizontal = "right"
301
- css = { { ".MuiPaper-root" : { width : 300 } } }
302
- >
303
- < div
304
- css = { {
305
- color : theme . palette . text . secondary ,
306
- padding : 20 ,
307
- borderBottom : `1px solid ${ theme . palette . divider } ` ,
308
- } }
309
- >
310
- < HelpTooltipTitle > Provisioner Tags</ HelpTooltipTitle >
311
- < HelpTooltipText >
312
- < Stack >
313
- { Object . keys ( extraTags ) . length > 0 ? (
314
- < Stack direction = "row" spacing = { 1 } wrap = "wrap" >
315
- { Object . keys ( extraTags ) . map ( ( k ) =>
316
- < ProvisionerTag key = { k } k = { k } v = { extraTags [ k ] } onDelete = { ( ) => {
317
- return
318
- } } />
319
- ) }
320
- </ Stack >
321
- ) : ( "No tags" ) }
322
-
323
- < Stack direction = "row" >
324
- < TextField
325
- size = "small"
326
- name = "key-input"
327
- autoComplete = "off"
328
- id = "key-input"
329
- value = { keyInput }
330
- onChange = { ( event ) => {
331
- setKeyInput ( event . target . value ) ;
332
- } }
333
- label = "Key"
334
- />
335
- < TextField
336
- size = "small"
337
- name = "value-input"
338
- autoComplete = "off"
339
- id = "value-input"
340
- value = { valueInput }
341
- onChange = { ( event ) => {
342
- setValueInput ( event . target . value ) ;
343
- } }
344
- label = "Value"
345
- />
346
- < Button
347
- onClick = { ( ) => {
348
- if ( keyInput && valueInput ) {
349
- const newTags = { ...extraTags } ;
350
- newTags [ keyInput ] = valueInput ;
351
- setExtraTags ( newTags ) ;
352
- setKeyInput ( "" ) ;
353
- setValueInput ( "" ) ;
354
- }
355
- } }
356
- variant = "contained"
357
- color = "secondary"
358
- >
359
- < AddIcon />
360
- </ Button >
361
- </ Stack >
362
- </ Stack >
363
- </ HelpTooltipText >
364
- </ div >
365
- </ PopoverContent >
366
- </ Popover >
269
+ < ProviderTagsPopover
270
+ tags = { provisionerTags }
271
+ onSubmit = { ( { key, value } ) => {
272
+ onUpdateProvisionerTags ( {
273
+ ...provisionerTags ,
274
+ [ key ] : value ,
275
+ } ) ;
276
+ } }
277
+ onDelete = { ( key ) => {
278
+ const newTags = { ...provisionerTags } ;
279
+ delete newTags [ key ] ;
280
+ onUpdateProvisionerTags ( newTags ) ;
281
+ } }
282
+ />
367
283
</ ButtonGroup >
368
284
369
285
< TopbarButton
0 commit comments