Skip to content

Commit 1e7dd6f

Browse files
author
Lasim
committed
feat(mcp-catalog): add manage server dropdown with edit and delete actions
1 parent f5565c1 commit 1e7dd6f

File tree

2 files changed

+41
-11
lines changed

2 files changed

+41
-11
lines changed

services/frontend/src/i18n/locales/en/mcp-catalog.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,12 @@ export default {
336336
serverInformation: 'Server Information',
337337
serverDetails: 'Detailed information about this MCP server',
338338

339+
actions: {
340+
manageServer: 'Manage Server',
341+
editServer: 'Edit MCP Server',
342+
deleteServer: 'Delete MCP Server'
343+
},
344+
339345
fields: {
340346
name: 'Server Name',
341347
description: 'Description',

services/frontend/src/views/admin/mcp-server-catalog/view/[id].vue

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useRoute, useRouter } from 'vue-router'
44
import { useI18n } from 'vue-i18n'
55
import { Button } from '@/components/ui/button'
66
import { Badge } from '@/components/ui/badge'
7-
import { ArrowLeft, Github, ExternalLink, Star, Package, Code, Settings, Calendar, Tag, Trash2, AlertTriangle } from 'lucide-vue-next'
7+
import { ArrowLeft, Github, ExternalLink, Star, Package, Code, Settings, Calendar, Tag, Trash2, AlertTriangle, Edit } from 'lucide-vue-next'
88
import DashboardLayout from '@/components/DashboardLayout.vue'
99
import { McpCatalogService } from '@/services/mcpCatalogService'
1010
import type { McpServer } from '../types'
@@ -18,6 +18,13 @@ import {
1818
AlertDialogHeader,
1919
AlertDialogTitle,
2020
} from '@/components/ui/alert-dialog'
21+
import {
22+
DropdownMenu,
23+
DropdownMenuContent,
24+
DropdownMenuItem,
25+
DropdownMenuSeparator,
26+
DropdownMenuTrigger,
27+
} from '@/components/ui/dropdown-menu'
2128
2229
const { t } = useI18n()
2330
const route = useRoute()
@@ -175,6 +182,12 @@ const deleteServer = async () => {
175182
}
176183
}
177184
185+
// Placeholder function for edit functionality (not implemented yet)
186+
const handleEditServer = () => {
187+
// TODO: Implement edit functionality
188+
console.log('Edit server functionality not implemented yet')
189+
}
190+
178191
const goBack = () => {
179192
router.push('/admin/mcp-server-catalog')
180193
}
@@ -183,7 +196,7 @@ const goBack = () => {
183196
<template>
184197
<DashboardLayout :title="server ? t('mcpCatalog.edit.title', { name: server.name }) : t('mcpCatalog.edit.titleLoading')">
185198
<div class="space-y-6">
186-
<!-- Header with Back and Delete Buttons -->
199+
<!-- Header with Back and Manage Dropdown -->
187200
<div class="flex items-center justify-between">
188201
<Button
189202
variant="outline"
@@ -193,15 +206,26 @@ const goBack = () => {
193206
{{ t('mcpCatalog.edit.backToCatalog') }}
194207
</Button>
195208

196-
<Button
197-
v-if="server"
198-
variant="destructive"
199-
@click="showDeleteDialog = true"
200-
class="flex items-center gap-2"
201-
>
202-
<Trash2 class="h-4 w-4" />
203-
{{ t('mcpCatalog.edit.deleteButton') }}
204-
</Button>
209+
<!-- Manage Server Dropdown -->
210+
<DropdownMenu v-if="server">
211+
<DropdownMenuTrigger asChild>
212+
<Button variant="outline" :disabled="isDeleting">
213+
<Settings class="h-4 w-4 mr-2" />
214+
{{ t('mcpCatalog.edit.actions.manageServer') }}
215+
</Button>
216+
</DropdownMenuTrigger>
217+
<DropdownMenuContent align="end">
218+
<DropdownMenuItem @click="handleEditServer">
219+
<Edit class="h-4 w-4 mr-2" />
220+
{{ t('mcpCatalog.edit.actions.editServer') }}
221+
</DropdownMenuItem>
222+
<DropdownMenuSeparator />
223+
<DropdownMenuItem @click="showDeleteDialog = true" class="text-red-600 focus:text-red-600">
224+
<Trash2 class="h-4 w-4 mr-2" />
225+
{{ t('mcpCatalog.edit.actions.deleteServer') }}
226+
</DropdownMenuItem>
227+
</DropdownMenuContent>
228+
</DropdownMenu>
205229
</div>
206230

207231
<!-- Loading State -->

0 commit comments

Comments
 (0)