main
vue 77 lines 2 KB
Raw
1 <template>
2 <div>
3 <CardEntity :embedded clickable hoverable @click.stop="openForm()">
4 <template #headerMain>AI Trigger</template>
5 <template #headerExtra>
6 <div class="flex items-center gap-2">
7 <span :class="{ 'text-default': aiTrigger.enabled }">
8 {{ aiTrigger.enabled ? "Enabled" : "Disabled" }}
9 </span>
10 <Icon v-if="aiTrigger.enabled" :name="EnabledIcon" :size="14" class="text-success" />
11 <Icon v-else :name="DisabledIcon" :size="14" class="text-secondary" />
12 </div>
13 </template>
14 <template #default>
15 {{ aiTrigger.customer_code }}
16 </template>
17 </CardEntity>
18
19 <n-modal
20 v-model:show="showForm"
21 preset="card"
22 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(200px, 90vh)', overflow: 'hidden' }"
23 title="AI Trigger"
24 :bordered="false"
25 display-directive="show"
26 segmented
27 >
28 <CustomerAITriggersForm
29 :ai-trigger
30 :customer-code="aiTrigger.customer_code"
31 @mounted="formCTX = $event"
32 @submitted="emitUpdate"
33 />
34 </n-modal>
35 </div>
36 </template>
37
38 <script setup lang="ts">
39 import type { AITrigger } from "@/types/incidentManagement/aiTriggers.d"
40 import { NModal } from "naive-ui"
41 import { defineAsyncComponent, ref, toRefs, watch } from "vue"
42 import CardEntity from "@/components/common/cards/CardEntity.vue"
43 import Icon from "@/components/common/Icon.vue"
44
45 const props = defineProps<{
46 aiTrigger: AITrigger
47 embedded?: boolean
48 }>()
49
50 const emit = defineEmits<{
51 (e: "updated", value: AITrigger): void
52 }>()
53
54 const CustomerAITriggersForm = defineAsyncComponent(() => import("./CustomerAITriggersForm.vue"))
55
56 const { aiTrigger } = toRefs(props)
57
58 const EnabledIcon = "carbon:circle-solid"
59 const DisabledIcon = "carbon:subtract-alt"
60
61 const formCTX = ref<{ reset: (aiTrigger?: AITrigger) => void } | null>(null)
62 const showForm = ref(false)
63
64 watch(showForm, val => {
65 if (val) {
66 formCTX.value?.reset(aiTrigger.value)
67 }
68 })
69
70 function openForm() {
71 showForm.value = true
72 }
73
74 function emitUpdate(aiTrigger: AITrigger) {
75 emit("updated", aiTrigger)
76 }
77 </script>