diff --git a/packages/pro/transfer/__tests__/proTransfer.spec.ts b/packages/pro/transfer/__tests__/proTransfer.spec.ts index 9438b6623..5df31ed00 100644 --- a/packages/pro/transfer/__tests__/proTransfer.spec.ts +++ b/packages/pro/transfer/__tests__/proTransfer.spec.ts @@ -202,14 +202,14 @@ describe('ProTransfer', () => { await sourceTree.findAll('.ix-tree-node')[0].find('input').setValue(true) await appendTrigger.trigger('click') - expect(onChange).toBeCalledWith(['1-2-2', '1', '1-2', '1-2-1', '1-1', '1-3'], ['1-2-2']) + expect(onChange).toBeCalledWith(['1-2-2', '1', '1-1', '1-2', '1-2-1', '1-3'], ['1-2-2']) - await wrapper.setProps({ value: ['1-2-2', '1', '1-2', '1-2-1', '1-1', '1-3'] }) + await wrapper.setProps({ value: ['1-2-2', '1', '1-1', '1-2', '1-2-1', '1-3'] }) await targetTree.findAll('.ix-tree-node')[0].find('input').setValue(true) await removeTrigger.trigger('click') - expect(onChange).toBeCalledWith(['1-2-2'], ['1-2-2', '1', '1-2', '1-2-1', '1-1', '1-3']) + expect(onChange).toBeCalledWith(['1-2-2'], ['1-2-2', '1', '1-1', '1-2', '1-2-1', '1-3']) }) test('table immediate work', async () => { diff --git a/packages/pro/transfer/src/composables/useTreeDataStrategy.ts b/packages/pro/transfer/src/composables/useTreeDataStrategy.ts index 43e8903a0..93f0cca7b 100644 --- a/packages/pro/transfer/src/composables/useTreeDataStrategy.ts +++ b/packages/pro/transfer/src/composables/useTreeDataStrategy.ts @@ -90,8 +90,8 @@ const genDisabledKeys = , C extends string>( } function createSeparateDataSourceFn, C extends string>( - childrenKey: ComputedRef, - cachedTargetData: Ref, + childrenKey: C, + cachedTargetData: { value: V[] }, cascaderStrategy: CascaderStrategy, targetDataCount: Ref, dataMap: Map, @@ -108,8 +108,7 @@ function createSeparateDataSourceFn, C extends case 'off': return (item, _, isSource) => selectedKeySet.has(getKey(item)) !== isSource case 'child': - return (item, _, isSource) => - selectedKeySet.has(getKey(item)) !== isSource && !item[childrenKey.value]?.length + return (item, _, isSource) => selectedKeySet.has(getKey(item)) !== isSource && !item[childrenKey]?.length case 'parent': return (item, parent, isSource) => [item, ...parent].map(getKey).some(key => selectedKeySet.has(key)) !== isSource @@ -120,7 +119,7 @@ function createSeparateDataSourceFn, C extends if (isSource || cascaderStrategy !== 'off') { return filterTree( data, - childrenKey.value, + childrenKey, (item, parent, filteredChildren) => { const filterRes = filterFn(item, parent, isSource) @@ -137,9 +136,9 @@ function createSeparateDataSourceFn, C extends } const res: V[] = [] - traverseTree(data, childrenKey.value, (item, parent) => { + traverseTree(data, childrenKey, (item, parent) => { if (filterFn(item, parent, isSource)) { - res.push({ ...item, [childrenKey.value]: undefined }) + res.push({ ...item, [childrenKey]: undefined }) } }) return res @@ -157,15 +156,14 @@ function createSeparateDataSourceFn, C extends // merge new data with previous data // beacause we intend to cache selected data after dataSource changes - const targetData = mergeTree(previousTargetData, newTargetData, childrenKey.value, getKey) + const targetData = mergeTree(previousTargetData, newTargetData, childrenKey, getKey) cachedTargetData.value = targetData targetDataCount.value = cascaderStrategy === 'off' ? targetData.length : dataMap.size - sourceDataKeySet.size return { sourceData, - targetData: - cascaderStrategy === 'off' ? targetData : flattenTargetTree(targetData, childrenKey.value, flatTargetData), + targetData: cascaderStrategy === 'off' ? targetData : flattenTargetTree(targetData, childrenKey, flatTargetData), } } } @@ -194,7 +192,7 @@ function createStrategy, C extends string>( getAllSelectedKeys: (selected, data, selectedKeySet, disabledKeySet) => getAllSelectedKeys(selected, checkStateResolver, data, selectedKeySet, disabledKeySet), separateDataSource: createSeparateDataSourceFn( - childrenKey, + childrenKey.value, cachedTargetData, cascaderStrategy, targetDataCount, diff --git a/packages/pro/transfer/src/composables/useTreeDataStrategyContext.ts b/packages/pro/transfer/src/composables/useTreeDataStrategyContext.ts index 70af3e205..83f4d8bed 100644 --- a/packages/pro/transfer/src/composables/useTreeDataStrategyContext.ts +++ b/packages/pro/transfer/src/composables/useTreeDataStrategyContext.ts @@ -29,7 +29,7 @@ export interface TreeDataStrategyContext< parentKeyMap: Map getKey: ComputedRef childrenKey: ComputedRef - cachedTargetData: Ref + cachedTargetData: { value: V[] } targetDataCount: Ref } @@ -39,7 +39,7 @@ export function useTreeDataStrategyContext, C e getKey: ComputedRef, cascadeStrategy: ComputedRef, ): TreeDataStrategyContext { - const cachedTargetData = ref(props.defaultTargetData ?? []) as Ref + const cachedTargetData = { value: props.defaultTargetData ?? [] } as { value: V[] } const targetDataCount = ref(0) const dataMap: Map = new Map() const parentKeyMap: Map = new Map()