Skip to content

Commit c8a29ad

Browse files
committed
feat: implement DeleteModeDialog component for mode deletion confirmation
1 parent b056895 commit c8a29ad

File tree

2 files changed

+72
-45
lines changed

2 files changed

+72
-45
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import React from "react"
2+
import { useAppTranslation } from "@src/i18n/TranslationContext"
3+
import {
4+
AlertDialog,
5+
AlertDialogAction,
6+
AlertDialogCancel,
7+
AlertDialogContent,
8+
AlertDialogDescription,
9+
AlertDialogFooter,
10+
AlertDialogHeader,
11+
AlertDialogTitle,
12+
} from "@src/components/ui"
13+
14+
interface DeleteModeDialogProps {
15+
open: boolean
16+
onOpenChange: (open: boolean) => void
17+
modeToDelete: {
18+
slug: string
19+
name: string
20+
source?: string
21+
rulesFolderPath?: string
22+
} | null
23+
onConfirm: () => void
24+
}
25+
26+
export const DeleteModeDialog: React.FC<DeleteModeDialogProps> = ({ open, onOpenChange, modeToDelete, onConfirm }) => {
27+
const { t } = useAppTranslation()
28+
29+
return (
30+
<AlertDialog open={open} onOpenChange={onOpenChange}>
31+
<AlertDialogContent>
32+
<AlertDialogHeader>
33+
<AlertDialogTitle>{t("prompts:deleteMode.title")}</AlertDialogTitle>
34+
<AlertDialogDescription>
35+
{modeToDelete && (
36+
<>
37+
{t("prompts:deleteMode.message", { modeName: modeToDelete.name })}
38+
{modeToDelete.rulesFolderPath && (
39+
<div className="mt-2">
40+
{t("prompts:deleteMode.rulesFolder", {
41+
folderPath: modeToDelete.rulesFolderPath,
42+
})}
43+
</div>
44+
)}
45+
</>
46+
)}
47+
</AlertDialogDescription>
48+
</AlertDialogHeader>
49+
<AlertDialogFooter>
50+
<AlertDialogCancel>{t("prompts:deleteMode.cancel")}</AlertDialogCancel>
51+
<AlertDialogAction onClick={onConfirm}>{t("prompts:deleteMode.confirm")}</AlertDialogAction>
52+
</AlertDialogFooter>
53+
</AlertDialogContent>
54+
</AlertDialog>
55+
)
56+
}

webview-ui/src/components/modes/ModesView.tsx

Lines changed: 16 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,8 @@ import {
4646
CommandGroup,
4747
Input,
4848
StandardTooltip,
49-
AlertDialog,
50-
AlertDialogAction,
51-
AlertDialogCancel,
52-
AlertDialogContent,
53-
AlertDialogDescription,
54-
AlertDialogFooter,
55-
AlertDialogHeader,
56-
AlertDialogTitle,
5749
} from "@src/components/ui"
50+
import { DeleteModeDialog } from "@src/components/modes/DeleteModeDialog"
5851

5952
// Get all available groups that should show in prompts view
6053
const availableGroups = (Object.keys(TOOL_GROUPS) as ToolGroup[]).filter((group) => !TOOL_GROUPS[group].alwaysAvailable)
@@ -1430,43 +1423,21 @@ const ModesView = ({ onDone }: ModesViewProps) => {
14301423
)}
14311424

14321425
{/* Delete Mode Confirmation Dialog */}
1433-
<AlertDialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>
1434-
<AlertDialogContent>
1435-
<AlertDialogHeader>
1436-
<AlertDialogTitle>{t("prompts:deleteMode.title")}</AlertDialogTitle>
1437-
<AlertDialogDescription>
1438-
{modeToDelete && (
1439-
<>
1440-
{t("prompts:deleteMode.message", { modeName: modeToDelete.name })}
1441-
{modeToDelete.rulesFolderPath && (
1442-
<div className="mt-2">
1443-
{t("prompts:deleteMode.rulesFolder", {
1444-
folderPath: modeToDelete.rulesFolderPath,
1445-
})}
1446-
</div>
1447-
)}
1448-
</>
1449-
)}
1450-
</AlertDialogDescription>
1451-
</AlertDialogHeader>
1452-
<AlertDialogFooter>
1453-
<AlertDialogCancel>{t("prompts:deleteMode.cancel")}</AlertDialogCancel>
1454-
<AlertDialogAction
1455-
onClick={() => {
1456-
if (modeToDelete) {
1457-
vscode.postMessage({
1458-
type: "deleteCustomMode",
1459-
slug: modeToDelete.slug,
1460-
})
1461-
setShowDeleteConfirm(false)
1462-
setModeToDelete(null)
1463-
}
1464-
}}>
1465-
{t("prompts:deleteMode.confirm")}
1466-
</AlertDialogAction>
1467-
</AlertDialogFooter>
1468-
</AlertDialogContent>
1469-
</AlertDialog>
1426+
<DeleteModeDialog
1427+
open={showDeleteConfirm}
1428+
onOpenChange={setShowDeleteConfirm}
1429+
modeToDelete={modeToDelete}
1430+
onConfirm={() => {
1431+
if (modeToDelete) {
1432+
vscode.postMessage({
1433+
type: "deleteCustomMode",
1434+
slug: modeToDelete.slug,
1435+
})
1436+
setShowDeleteConfirm(false)
1437+
setModeToDelete(null)
1438+
}
1439+
}}
1440+
/>
14701441
</Tab>
14711442
)
14721443
}

0 commit comments

Comments
 (0)