Skip to content

Commit ed8a4ad

Browse files
committed
feat: 新增 val slot
1 parent 9155c57 commit ed8a4ad

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

src/json-tree/JsonTreeNode.vue

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@
1919
'json-tree__content--collapse': localCollapse
2020
}" @click.stop="onNodeClick">
2121
<div class="json-tree__content__header">
22+
<!-- jsonKey: -->
2223
<span v-if="showJsonKey">
2324
<span v-text="jsonKey" :class="[
2425
'json-tree__key',
2526
`json-tree__key--${typeof jsonKey}`
2627
]"></span>
2728
<span class="json-tree__colon">:</span>
2829
</span>
30+
31+
<!-- json value collapsed -->
2932
<template v-if="localCollapse">
33+
34+
<!-- collapse: array -->
3035
<template v-if="jsonDataType === 'array'">
3136
<span v-text="shouldHideToggle ? '[]' : '[...]'"
3237
class="json-tree__bracket json-tree__bracket--collapse"
@@ -42,6 +47,7 @@
4247
</span>
4348
</template>
4449

50+
<!-- collapse: object -->
4551
<template v-else-if="jsonDataType === 'object'">
4652
<span v-text="shouldHideToggle ? '{}' : '{...}'"
4753
class="json-tree__brace json-tree__brace--collapse"
@@ -56,14 +62,23 @@
5662
</slot>
5763
</span>
5864
</template>
59-
<span v-else v-text="displayedJsonVal"
65+
66+
<!-- collapse: string / number -->
67+
<span v-else
6068
:class="[
6169
'json-tree__val',
6270
`json-tree__val--${jsonDataType}`
6371
]">
72+
<slot name="val"
73+
v-bind:val="jsonData"
74+
v-bind:type="jsonDataType">{{ displayedJsonVal }}</slot>
6475
</span>
6576
</template>
77+
78+
<!-- json value expanded -->
6679
<template v-else>
80+
81+
<!-- expand: array -->
6782
<span v-if="jsonDataType === 'array'">
6883
<span class="json-tree__bracket--left">[</span>
6984
<span class="json-tree__cnt-tips">
@@ -74,6 +89,8 @@
7489
</slot>
7590
</span>
7691
</span>
92+
93+
<!-- expand: object -->
7794
<span v-else-if="jsonDataType === 'object'">
7895
<span v-text="'{'" class="json-tree__brace--left"></span>
7996
<span class="json-tree__cnt-tips">
@@ -84,11 +101,16 @@
84101
</slot>
85102
</span>
86103
</span>
87-
<span v-else v-text="displayedJsonVal"
104+
105+
<!-- expand: string / number -->
106+
<span v-else
88107
:class="[
89108
'json-tree__val',
90109
`json-tree__val--${jsonDataType}`
91110
]">
111+
<slot name="val"
112+
v-bind:val="jsonData"
113+
v-bind:type="jsonDataType">{{ displayedJsonVal }}</slot>
92114
</span>
93115
</template>
94116
</div>
@@ -110,6 +132,11 @@
110132
</template>
111133
</JsonTreeNode>
112134
</template>
135+
136+
<!--
137+
当且仅当值类型是 array 或 object 且是展开的时候
138+
显示一个收尾的符号: ] 或 }
139+
-->
113140
<div v-if="!localCollapse && ['array', 'object'].includes(jsonDataType)"
114141
class="json-tree__content__footer">
115142
<span v-if="jsonDataType === 'array'"
@@ -121,6 +148,8 @@
121148
class="json-tree__brace--right">
122149
</span>
123150
</div>
151+
152+
<!-- 层级的连接线 -->
124153
<div v-if="showLine" class="json-tree__connector-line"></div>
125154
</div>
126155
</div>

0 commit comments

Comments
 (0)