@@ -12,10 +12,20 @@ defineProps({
12
12
type: String ,
13
13
required: true ,
14
14
},
15
+ labelWidth: {
16
+ type: String ,
17
+ required: false ,
18
+ default: ' 2.5rem' ,
19
+ },
15
20
value: {
16
21
type: [String , Number , Boolean ],
17
22
required: false ,
18
23
},
24
+ flex: {
25
+ type: String ,
26
+ required: false ,
27
+ default: ' flex: 0 1 31.5%' ,
28
+ },
19
29
values: {
20
30
type: Array as PropType <TagLink []>,
21
31
required: false ,
@@ -28,6 +38,10 @@ defineProps({
28
38
type: Boolean ,
29
39
required: false ,
30
40
},
41
+ pre: {
42
+ type: Boolean ,
43
+ required: false ,
44
+ },
31
45
skeleton: {
32
46
type: Object as PropType <SkeletonProps >,
33
47
required: false ,
@@ -38,10 +52,16 @@ const { openTab } = useLinksStore();
38
52
</script >
39
53
40
54
<template >
41
- <NFlex class =" detail" :class =" { grow, array }" align =" center" >
55
+ <NFlex
56
+ class =" detail"
57
+ :class =" { grow, array }"
58
+ :style =" { '--prefix-min-width': labelWidth, '--text-flex': flex }"
59
+ align =" baseline"
60
+ :wrap =" false"
61
+ >
42
62
<span class =" prefix" >{{ label }}</span >
43
- <template v-if =" array " >
44
- <template v-if =" values " >
63
+ <NFlex v-if =" array" class = " value " >
64
+ <template v-if =" values !== undefined " >
45
65
<TagLinkComponent
46
66
v-for =" (tag, i) of values"
47
67
:key =" i"
@@ -54,24 +74,30 @@ const { openTab } = useLinksStore();
54
74
<NSkeleton round v-bind =" skeleton" />
55
75
<NSkeleton round v-bind =" skeleton" />
56
76
</template >
57
- </template >
77
+ </NFlex >
58
78
<template v-else >
59
- <span v-if =" value" >{{ value }}</span >
60
- <NSkeleton v-else round v-bind =" skeleton" />
79
+ <span v-if =" value !== undefined " class = " value " :class = " { pre } " >{{ value }}</span >
80
+ <NSkeleton v-else :repeat = " pre ? 3 : 0 " round v-bind =" skeleton" />
61
81
</template >
62
82
</NFlex >
63
83
</template >
64
84
65
85
<style lang="scss" scoped>
66
86
.prefix {
67
- min-width : 2.5rem ;
87
+ flex : 0 0 auto ;
88
+ min-width : var (--prefix-min-width );
68
89
color : var (--white-50 );
69
90
font-weight : 600 ;
70
91
transition : color 0.3s var (--n-bezier );
71
92
}
72
93
94
+ .value {
95
+ flex : 1 1 auto ;
96
+ }
97
+
73
98
.detail {
74
- flex : 0 1 31.5% ;
99
+ flex : var (--text-flex );
100
+ align-items : baseline ;
75
101
76
102
& :hover .prefix {
77
103
color : var (--white-70 );
@@ -85,5 +111,9 @@ const { openTab } = useLinksStore();
85
111
flex : 1 1 auto ;
86
112
width : 100% ;
87
113
}
114
+
115
+ .pre {
116
+ white-space : pre-wrap ;
117
+ }
88
118
}
89
119
</style >
0 commit comments