main
vue 53 lines 1005 Bytes
Raw
1 <template>
2 <n-tag :type="tagType" size="small" round :bordered="false" class="priority-badge">
3 {{ label }}
4 </n-tag>
5 </template>
6
7 <script setup lang="ts">
8 // TODO-FE: refactor
9 import { NTag } from "naive-ui"
10 import { computed } from "vue"
11 import { PriorityLevel } from "@/types/patchTuesday.d"
12
13 const props = defineProps<{
14 priority: PriorityLevel | string
15 }>()
16
17 const tagType = computed(() => {
18 switch (props.priority) {
19 case PriorityLevel.P0:
20 return "error"
21 case PriorityLevel.P1:
22 return "warning"
23 case PriorityLevel.P2:
24 return "info"
25 case PriorityLevel.P3:
26 return "success"
27 default:
28 return "default"
29 }
30 })
31
32 const label = computed(() => {
33 switch (props.priority) {
34 case PriorityLevel.P0:
35 return "P0"
36 case PriorityLevel.P1:
37 return "P1"
38 case PriorityLevel.P2:
39 return "P2"
40 case PriorityLevel.P3:
41 return "P3"
42 default:
43 return props.priority
44 }
45 })
46 </script>
47
48 <style scoped lang="scss">
49 .priority-badge {
50 font-weight: 600;
51 font-size: 0.7rem;
52 }
53 </style>