Skip to content

Commit 83cdf19

Browse files
committed
Display confirmation
1 parent 9a6b852 commit 83cdf19

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

site/src/components/VersionsTable/VersionRow.tsx

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ import { combineClasses } from "util/combineClasses"
1515
export interface VersionRowProps {
1616
version: TemplateVersion
1717
isActive: boolean
18+
onPromoteClick?: () => void
1819
}
1920

2021
export const VersionRow: React.FC<VersionRowProps> = ({
2122
version,
2223
isActive,
24+
onPromoteClick,
2325
}) => {
2426
const styles = useStyles()
2527
const { t } = useTranslation("templatePage")
@@ -69,13 +71,20 @@ export const VersionRow: React.FC<VersionRowProps> = ({
6971
{isActive ? (
7072
<Pill text="Active version" type="success" />
7173
) : (
72-
<Button
73-
size="small"
74-
variant="outlined"
75-
className={styles.promoteButton}
76-
>
77-
Promote version
78-
</Button>
74+
onPromoteClick && (
75+
<Button
76+
size="small"
77+
variant="outlined"
78+
className={styles.promoteButton}
79+
onClick={(e) => {
80+
e.preventDefault()
81+
e.stopPropagation()
82+
onPromoteClick()
83+
}}
84+
>
85+
Promote version
86+
</Button>
87+
)
7988
)}
8089
</Stack>
8190
</TableCell>

site/src/components/VersionsTable/VersionsTable.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ export const Language = {
2020

2121
export interface VersionsTableProps {
2222
activeVersionId: string
23+
onPromoteClick?: () => void
2324
versions?: TypesGen.TemplateVersion[]
2425
}
2526

2627
export const VersionsTable: FC<React.PropsWithChildren<VersionsTableProps>> = ({
2728
versions,
29+
onPromoteClick,
2830
activeVersionId,
2931
}) => {
3032
return (
@@ -37,6 +39,7 @@ export const VersionsTable: FC<React.PropsWithChildren<VersionsTableProps>> = ({
3739
getDate={(version) => new Date(version.created_at)}
3840
row={(version) => (
3941
<VersionRow
42+
onPromoteClick={onPromoteClick}
4043
version={version}
4144
key={version.id}
4245
isActive={activeVersionId === version.id}

site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
import { useQuery } from "@tanstack/react-query"
22
import { getTemplateVersions } from "api/api"
3+
import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"
34
import { useTemplateLayoutContext } from "components/TemplateLayout/TemplateLayout"
45
import { VersionsTable } from "components/VersionsTable/VersionsTable"
6+
import { useState } from "react"
57
import { Helmet } from "react-helmet-async"
68
import { getTemplatePageTitle } from "../utils"
79

810
const TemplateVersionsPage = () => {
9-
const { template } = useTemplateLayoutContext()
11+
const { template, permissions } = useTemplateLayoutContext()
1012
const { data } = useQuery({
1113
queryKey: ["template", "versions", template.id],
1214
queryFn: () => getTemplateVersions(template.id),
1315
})
16+
const [promoteState, setPromoteState] = useState<
17+
"idle" | "confirming" | "promoting"
18+
>("idle")
1419

1520
return (
1621
<>
@@ -19,8 +24,24 @@ const TemplateVersionsPage = () => {
1924
</Helmet>
2025
<VersionsTable
2126
versions={data}
27+
onPromoteClick={
28+
permissions.canUpdateTemplate
29+
? () => setPromoteState("confirming")
30+
: undefined
31+
}
2232
activeVersionId={template.active_version_id}
2333
/>
34+
<ConfirmDialog
35+
type="info"
36+
hideCancel={false}
37+
open={promoteState !== "idle"}
38+
onConfirm={() => {}}
39+
onClose={() => setPromoteState("idle")}
40+
title="Promote version"
41+
confirmLoading={promoteState === "promoting"}
42+
confirmText="Promote"
43+
description="Are you sure you want to promote this version?"
44+
/>
2445
</>
2546
)
2647
}

0 commit comments

Comments
 (0)