File tree Expand file tree Collapse file tree 5 files changed +32
-2
lines changed Expand file tree Collapse file tree 5 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -126,6 +126,7 @@ plugins: [
126
126
| selectOnClickNode | Trigger select when click node | boolean | true |
127
127
| highlightSelectedNode | Support highlighting selected nodes | boolean | true |
128
128
| collapsedOnClickBrackets | Support click brackets to collapse | boolean | true |
129
+ | renderNodeKey | render node key, or use slot #renderNodeKey | ({ node, defaultKey }) => vNode | - |
129
130
| renderNodeValue | render node value, or use slot #renderNodeValue | ({ node, defaultValue }) => vNode | - |
130
131
| editable | Support editable | boolean | false |
131
132
| editableTrigger | Trigger | ` click ` \| ` dblclick ` | ` click ` |
@@ -143,6 +144,7 @@ plugins: [
143
144
144
145
| Slot Name | Description | Parameters |
145
146
| --------------- | ----------------- | ---------------------- |
147
+ | renderNodeKey | render node key | { node, defaultKey } |
146
148
| renderNodeValue | render node value | { node, defaultValue } |
147
149
148
150
## Contributors
Original file line number Diff line number Diff line change 30
30
| selectOnClickNode | 支持点击节点的时候触发选择 | boolean | true |
31
31
| highlightSelectedNode | 支持高亮已选择节点 | boolean | true |
32
32
| collapsedOnClickBrackets | 支持点击括号折叠 | boolean | true |
33
+ | renderNodeKey | 渲染节点键,也可使用 #renderNodeKey | ({ node, defaultKey }) => vNode | - |
33
34
| renderNodeValue | 自定义渲染节点值,也可使用 #renderNodeValue | ({ node, defaultValue }) => vNode | - |
34
35
| editable | 支持可编辑 | boolean | false |
35
36
| editableTrigger | 触发编辑的时机 | ` click ` \| ` dblclick ` | ` click ` |
47
48
48
49
| 插槽名 | 描述 | 参数 |
49
50
| --------------- | ---------- | ---------------------- |
51
+ | renderNodeKey | 渲染节点键 | { node, defaultKey } |
50
52
| renderNodeValue | 渲染节点值 | { node, defaultValue } |
Original file line number Diff line number Diff line change 46
46
47
47
<h3 >Slots:</h3 >
48
48
<div class =" options" >
49
+ <div >
50
+ <label >renderNodeKey</label >
51
+ <input v-model =" state.useRenderNodeKeySlot" type =" checkbox" />
52
+ </div >
49
53
<div >
50
54
<label >renderNodeValue</label >
51
55
<input v-model =" state.useRenderNodeValueSlot" type =" checkbox" />
66
70
:show-icon =" state.showIcon"
67
71
style =" position : relative "
68
72
>
73
+ <template v-if =" state .useRenderNodeKeySlot " #renderNodeKey =" { node , defaultKey } " >
74
+ <template v-if =" node .key === ' title' " >
75
+ <a >"{{ node.key }}":</a >
76
+ </template >
77
+ <template v-else >{{ defaultKey }}:</template >
78
+ </template >
79
+
69
80
<template v-if =" state .useRenderNodeValueSlot " #renderNodeValue =" { node , defaultValue } " >
70
81
<template v-if =" typeof node .content === ' string' && node .content .startsWith (' http://' )" >
71
82
<a :href =" node.content" target =" _blank" >{{ node.content }}</a >
@@ -121,6 +132,7 @@ export default defineComponent({
121
132
showLineNumber: false ,
122
133
showDoubleQuotes: true ,
123
134
collapsedOnClickBrackets: true ,
135
+ useRenderNodeKeySlot: false ,
124
136
useRenderNodeValueSlot: false ,
125
137
deep: 4 ,
126
138
setPathCollapsible: false ,
Original file line number Diff line number Diff line change @@ -67,7 +67,7 @@ export default defineComponent({
67
67
} ,
68
68
} ,
69
69
70
- slots : [ 'renderNodeValue' ] ,
70
+ slots : [ 'renderNodeKey' , ' renderNodeValue'] ,
71
71
72
72
emits : [
73
73
'nodeClick' ,
@@ -248,6 +248,7 @@ export default defineComponent({
248
248
} ) ;
249
249
250
250
return ( ) => {
251
+ const renderNodeKey = props . renderNodeKey ?? slots . renderNodeKey ;
251
252
const renderNodeValue = props . renderNodeValue ?? slots . renderNodeValue ;
252
253
253
254
const nodeContent =
@@ -270,6 +271,7 @@ export default defineComponent({
270
271
editable = { props . editable }
271
272
editableTrigger = { props . editableTrigger }
272
273
showIcon = { props . showIcon }
274
+ renderNodeKey = { renderNodeKey }
273
275
renderNodeValue = { renderNodeValue }
274
276
onNodeClick = { handleNodeClick }
275
277
onBracketsClick = { handleBracketsClick }
Original file line number Diff line number Diff line change @@ -21,6 +21,10 @@ export const treeNodePropsPass = {
21
21
type : Boolean ,
22
22
default : true ,
23
23
} ,
24
+ // Custom render for key.
25
+ renderNodeKey : Function as PropType <
26
+ ( opt : { node : NodeDataType ; defaultKey : string | JSX . Element } ) => unknown
27
+ > ,
24
28
// Custom render for value.
25
29
renderNodeValue : Function as PropType <
26
30
( opt : { node : NodeDataType ; defaultValue : string | JSX . Element } ) => unknown
@@ -113,6 +117,14 @@ export default defineComponent({
113
117
props . showDoubleQuotes ? `"${ props . node . key } "` : props . node . key ,
114
118
) ;
115
119
120
+ const renderKey = ( ) => {
121
+ const render = props . renderNodeKey ;
122
+
123
+ return render
124
+ ? render ( { node : props . node , defaultKey : prettyKey . value || '' } )
125
+ : < span class = "vjs-key" > { `${ prettyKey . value } : ` } </ span > ;
126
+ } ;
127
+
116
128
const isMultiple = computed ( ( ) => props . selectableType === 'multiple' ) ;
117
129
118
130
const isSingle = computed ( ( ) => props . selectableType === 'single' ) ;
@@ -223,7 +235,7 @@ export default defineComponent({
223
235
{ props . showIcon && < Carets nodeType = { node . type } onClick = { handleIconClick } /> }
224
236
</ div >
225
237
226
- { node . key && < span class = "vjs-key" > { ` ${ prettyKey . value } : ` } </ span > }
238
+ { node . key && renderKey ( ) }
227
239
228
240
< span >
229
241
{ node . type !== 'content' && node . content ? (
You can’t perform that action at this time.
0 commit comments