11import type { ExtractPropTypes , PropType } from 'vue' ;
2- import { nextTick , onUpdated , ref , watch , defineComponent } from 'vue' ;
2+ import { nextTick , onUpdated , ref , watch , defineComponent , computed } from 'vue' ;
33import debounce from 'lodash-es/debounce' ;
44import FolderOpenOutlined from '@ant-design/icons-vue/FolderOpenOutlined' ;
55import FolderOutlined from '@ant-design/icons-vue/FolderOutlined' ;
@@ -8,7 +8,11 @@ import classNames from '../_util/classNames';
88import type { AntdTreeNodeAttribute , TreeProps } from './Tree' ;
99import Tree , { treeProps } from './Tree' ;
1010import 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' ;
1216import type { DataNode , EventDataNode , Key } from '../vc-tree/interface' ;
1317import { conductExpandParent } from '../vc-tree/util' ;
1418import { calcRangeKeys , convertDirectoryKeysToNodes } from './utils/dictUtil' ;
@@ -168,7 +172,7 @@ export default defineComponent({
168172 emit ( 'doubleclick' , event , node ) ;
169173 emit ( 'dblclick' , event , node ) ;
170174 } ;
171-
175+ const fieldNames = computed ( ( ) => fillFieldNames ( props . fieldNames ) ) ;
172176 const onSelect = (
173177 keys : Key [ ] ,
174178 event : {
@@ -181,8 +185,7 @@ export default defineComponent({
181185 ) => {
182186 const { multiple } = props ;
183187 const { node, nativeEvent } = event ;
184- const { key = '' } = node ;
185-
188+ const key = node [ fieldNames . value . key ] ;
186189 // const newState: DirectoryTreeState = {};
187190
188191 // We need wrap this event since some value is not same
@@ -202,7 +205,11 @@ export default defineComponent({
202205 newSelectedKeys = keys ;
203206 lastSelectedKey . value = key ;
204207 cachedSelectedKeys . value = newSelectedKeys ;
205- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
208+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
209+ treeData . value ,
210+ newSelectedKeys ,
211+ fieldNames . value ,
212+ ) ;
206213 } else if ( multiple && shiftPick ) {
207214 // Shift click
208215 newSelectedKeys = Array . from (
@@ -213,16 +220,25 @@ export default defineComponent({
213220 expandedKeys : expandedKeys . value ,
214221 startKey : key ,
215222 endKey : lastSelectedKey . value ,
223+ fieldNames : fieldNames . value ,
216224 } ) ,
217225 ] ) ,
218226 ) ;
219- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
227+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
228+ treeData . value ,
229+ newSelectedKeys ,
230+ fieldNames . value ,
231+ ) ;
220232 } else {
221233 // Single click
222- newSelectedKeys = [ key ] ;
234+ newSelectedKeys = keys ;
223235 lastSelectedKey . value = key ;
224236 cachedSelectedKeys . value = newSelectedKeys ;
225- newEvent . selectedNodes = convertDirectoryKeysToNodes ( treeData . value , newSelectedKeys ) ;
237+ newEvent . selectedNodes = convertDirectoryKeysToNodes (
238+ treeData . value ,
239+ newSelectedKeys ,
240+ fieldNames . value ,
241+ ) ;
226242 }
227243
228244 emit ( 'update:selectedKeys' , newSelectedKeys ) ;
0 commit comments