1
1
import type { ExtractPropTypes , PropType } from 'vue' ;
2
- import { nextTick , onUpdated , ref , watch , defineComponent } from 'vue' ;
2
+ import { nextTick , onUpdated , ref , watch , defineComponent , computed } from 'vue' ;
3
3
import debounce from 'lodash-es/debounce' ;
4
4
import FolderOpenOutlined from '@ant-design/icons-vue/FolderOpenOutlined' ;
5
5
import FolderOutlined from '@ant-design/icons-vue/FolderOutlined' ;
@@ -8,7 +8,11 @@ import classNames from '../_util/classNames';
8
8
import type { AntdTreeNodeAttribute , TreeProps } from './Tree' ;
9
9
import Tree , { treeProps } from './Tree' ;
10
10
import initDefaultProps from '../_util/props-util/initDefaultProps' ;
11
- import { convertDataToEntities , convertTreeToData } from '../vc-tree/utils/treeUtil' ;
11
+ import {
12
+ convertDataToEntities ,
13
+ convertTreeToData ,
14
+ fillFieldNames ,
15
+ } from '../vc-tree/utils/treeUtil' ;
12
16
import type { DataNode , EventDataNode , Key } from '../vc-tree/interface' ;
13
17
import { conductExpandParent } from '../vc-tree/util' ;
14
18
import { calcRangeKeys , convertDirectoryKeysToNodes } from './utils/dictUtil' ;
@@ -168,7 +172,7 @@ export default defineComponent({
168
172
emit ( 'doubleclick' , event , node ) ;
169
173
emit ( 'dblclick' , event , node ) ;
170
174
} ;
171
-
175
+ const fieldNames = computed ( ( ) => fillFieldNames ( props . fieldNames ) ) ;
172
176
const onSelect = (
173
177
keys : Key [ ] ,
174
178
event : {
@@ -181,8 +185,7 @@ export default defineComponent({
181
185
) => {
182
186
const { multiple } = props ;
183
187
const { node, nativeEvent } = event ;
184
- const { key = '' } = node ;
185
-
188
+ const key = node [ fieldNames . value . key ] ;
186
189
// const newState: DirectoryTreeState = {};
187
190
188
191
// We need wrap this event since some value is not same
@@ -202,7 +205,11 @@ export default defineComponent({
202
205
newSelectedKeys = keys ;
203
206
lastSelectedKey . value = key ;
204
207
cachedSelectedKeys . value = newSelectedKeys ;
205
- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
208
+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
209
+ treeData . value ,
210
+ newSelectedKeys ,
211
+ fieldNames . value ,
212
+ ) ;
206
213
} else if ( multiple && shiftPick ) {
207
214
// Shift click
208
215
newSelectedKeys = Array . from (
@@ -213,16 +220,25 @@ export default defineComponent({
213
220
expandedKeys : expandedKeys . value ,
214
221
startKey : key ,
215
222
endKey : lastSelectedKey . value ,
223
+ fieldNames : fieldNames . value ,
216
224
} ) ,
217
225
] ) ,
218
226
) ;
219
- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
227
+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
228
+ treeData . value ,
229
+ newSelectedKeys ,
230
+ fieldNames . value ,
231
+ ) ;
220
232
} else {
221
233
// Single click
222
- newSelectedKeys = [ key ] ;
234
+ newSelectedKeys = keys ;
223
235
lastSelectedKey . value = key ;
224
236
cachedSelectedKeys . value = newSelectedKeys ;
225
- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
237
+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
238
+ treeData . value ,
239
+ newSelectedKeys ,
240
+ fieldNames . value ,
241
+ ) ;
226
242
}
227
243
228
244
emit ( 'update:selectedKeys' , newSelectedKeys ) ;
0 commit comments