mirror of
https://github.com/abhinavxd/libredesk.git
synced 2025-10-23 05:11:57 +00:00
97 lines
2.7 KiB
Vue
97 lines
2.7 KiB
Vue
<template>
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger as-child>
|
|
<Button variant="ghost" class="w-8 h-8 p-0">
|
|
<span class="sr-only"></span>
|
|
<MoreHorizontal class="w-4 h-4" />
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent>
|
|
<DropdownMenuItem @click="editAIAssistant(props.assistant.id)">{{
|
|
$t('globals.messages.edit')
|
|
}}</DropdownMenuItem>
|
|
<DropdownMenuItem @click="() => (alertOpen = true)">{{
|
|
$t('globals.messages.delete')
|
|
}}</DropdownMenuItem>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
|
|
<AlertDialog :open="alertOpen" @update:open="alertOpen = $event">
|
|
<AlertDialogContent>
|
|
<AlertDialogHeader>
|
|
<AlertDialogTitle>{{ $t('globals.messages.areYouAbsolutelySure') }}</AlertDialogTitle>
|
|
<AlertDialogDescription>{{ $t('ai.assistant.deleteConfirmation') }}</AlertDialogDescription>
|
|
</AlertDialogHeader>
|
|
<AlertDialogFooter>
|
|
<AlertDialogCancel>{{ $t('globals.messages.cancel') }}</AlertDialogCancel>
|
|
<AlertDialogAction @click="handleDelete">{{
|
|
$t('globals.messages.delete')
|
|
}}</AlertDialogAction>
|
|
</AlertDialogFooter>
|
|
</AlertDialogContent>
|
|
</AlertDialog>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { ref } from 'vue'
|
|
import { MoreHorizontal } from 'lucide-vue-next'
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger
|
|
} from '@shared-ui/components/ui/dropdown-menu'
|
|
import {
|
|
AlertDialog,
|
|
AlertDialogAction,
|
|
AlertDialogCancel,
|
|
AlertDialogContent,
|
|
AlertDialogDescription,
|
|
AlertDialogFooter,
|
|
AlertDialogHeader,
|
|
AlertDialogTitle
|
|
} from '@shared-ui/components/ui/alert-dialog'
|
|
import { Button } from '@shared-ui/components/ui/button'
|
|
import { useRouter } from 'vue-router'
|
|
import { useEmitter } from '../../../composables/useEmitter'
|
|
import { handleHTTPError } from '../../../utils/http'
|
|
import { EMITTER_EVENTS } from '../../../constants/emitterEvents.js'
|
|
import api from '../../../api'
|
|
|
|
const alertOpen = ref(false)
|
|
const emit = useEmitter()
|
|
const router = useRouter()
|
|
|
|
const props = defineProps({
|
|
assistant: {
|
|
type: Object,
|
|
required: true,
|
|
default: () => ({
|
|
id: ''
|
|
})
|
|
}
|
|
})
|
|
|
|
function editAIAssistant(id) {
|
|
router.push({ path: `/admin/ai/assistants/${id}/edit` })
|
|
}
|
|
|
|
async function handleDelete() {
|
|
try {
|
|
await api.deleteAIAssistant(props.assistant.id)
|
|
alertOpen.value = false
|
|
emitRefreshAssistantList()
|
|
} catch (error) {
|
|
emit.emit(EMITTER_EVENTS.SHOW_TOAST, {
|
|
variant: 'destructive',
|
|
description: handleHTTPError(error).message
|
|
})
|
|
}
|
|
}
|
|
|
|
const emitRefreshAssistantList = () => {
|
|
emit.emit(EMITTER_EVENTS.REFRESH_LIST, {
|
|
model: 'ai_assistant'
|
|
})
|
|
}
|
|
</script> |