From 8683b577beddf3cd76c9c44b7d0d1bd2b16cb1f4 Mon Sep 17 00:00:00 2001 From: huangkairan <18757128360@163.com> Date: Fri, 28 Jun 2024 15:02:42 +0800 Subject: [PATCH 1/3] fix: render correct label with `fieldNames`(#49631) --- examples/fieldNames.tsx | 78 ++++++++++++++++++++++++++------------ src/TreeSelect.tsx | 12 ++++-- tests/Select.props.spec.js | 33 ++++++++++++++++ 3 files changed, 95 insertions(+), 28 deletions(-) diff --git a/examples/fieldNames.tsx b/examples/fieldNames.tsx index be636993..6b20325e 100644 --- a/examples/fieldNames.tsx +++ b/examples/fieldNames.tsx @@ -5,29 +5,59 @@ import TreeSelect from '../src'; export default () => { return ( - +
+

basic

+ + +

title render

+ {node.myLabel}} + treeData={[ + { + myLabel: 'Parent', + myValue: 'parent', + myChildren: [ + { + myLabel: 'Sub 1', + myValue: 'sub_1', + }, + { + myLabel: 'Sub 2', + myValue: 'sub_2', + }, + ], + }, + ]} + fieldNames={{ + label: 'myLabel', + value: 'myValue', + children: 'myChildren', + }} + /> +
); }; diff --git a/src/TreeSelect.tsx b/src/TreeSelect.tsx index c949f120..1153becb 100644 --- a/src/TreeSelect.tsx +++ b/src/TreeSelect.tsx @@ -368,7 +368,11 @@ const TreeSelect = React.forwardRef((props, ref) // Fill missing label & status if (entity) { - rawLabel = rawLabel ?? getLabel(entity.node); + if (treeTitleRender) { + rawLabel = treeTitleRender(entity.node); + } else { + rawLabel = rawLabel ?? getLabel(entity.node); + } rawDisabled = entity.node.disabled; } else if (rawLabel === undefined) { // We try to find in current `labelInValue` value @@ -377,7 +381,6 @@ const TreeSelect = React.forwardRef((props, ref) ); rawLabel = labelInValueItem.label; } - return { label: rawLabel, value: rawValue, @@ -446,7 +449,9 @@ const TreeSelect = React.forwardRef((props, ref) if (labelInValue && targetItem.label !== undefined) { label = targetItem.label; } else if (!labelInValue && treeTitleRender) { - label = treeTitleRender(targetItem); + if (!fieldNames) { + label = treeTitleRender(targetItem); + } } return { value: val, @@ -455,7 +460,6 @@ const TreeSelect = React.forwardRef((props, ref) }); const rawDisplayValues = convert2LabelValues(labeledValues); - const firstVal = rawDisplayValues[0]; if (!mergedMultiple && firstVal && isNil(firstVal.value) && isNil(firstVal.label)) { diff --git a/tests/Select.props.spec.js b/tests/Select.props.spec.js index d9b40225..30e16972 100644 --- a/tests/Select.props.spec.js +++ b/tests/Select.props.spec.js @@ -660,6 +660,39 @@ describe('TreeSelect.props', () => { ); expect(wrapper.getSelection(0).text()).toBe('Value 0-0'); }); + + it('with fieldNames', () => { + const wrapper = mount( +
+ node.myLabel} + fieldNames={{ + label: 'myLabel', + value: 'myValue', + children: 'myChildren', + }} + treeData={[ + { + myLabel: 'Parent', + myValue: 'parent', + myChildren: [ + { + myLabel: 'Sub 1', + myValue: 'sub_1', + }, + { + myLabel: 'Sub 2', + myValue: 'sub_2', + }, + ], + }, + ]} + /> +
, + ); + expect(wrapper.getSelection(0).text()).toBe('Parent'); + }); }); }); }); From 0e152ce8431df70eac7d8e72c84691a33734a16f Mon Sep 17 00:00:00 2001 From: huangkairan <18757128360@163.com> Date: Fri, 28 Jun 2024 15:11:00 +0800 Subject: [PATCH 2/3] fix: update --- src/TreeSelect.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/TreeSelect.tsx b/src/TreeSelect.tsx index 1153becb..a35e8b23 100644 --- a/src/TreeSelect.tsx +++ b/src/TreeSelect.tsx @@ -449,9 +449,7 @@ const TreeSelect = React.forwardRef((props, ref) if (labelInValue && targetItem.label !== undefined) { label = targetItem.label; } else if (!labelInValue && treeTitleRender) { - if (!fieldNames) { - label = treeTitleRender(targetItem); - } + label = treeTitleRender(targetItem); } return { value: val, @@ -460,6 +458,7 @@ const TreeSelect = React.forwardRef((props, ref) }); const rawDisplayValues = convert2LabelValues(labeledValues); + const firstVal = rawDisplayValues[0]; if (!mergedMultiple && firstVal && isNil(firstVal.value) && isNil(firstVal.label)) { From ababe7943ba827a47618de1421a0e35f74a6afc4 Mon Sep 17 00:00:00 2001 From: huangkairan <56213366+huangkairan@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:22:18 +0800 Subject: [PATCH 3/3] Update src/TreeSelect.tsx Co-authored-by: afc163 --- src/TreeSelect.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/TreeSelect.tsx b/src/TreeSelect.tsx index a35e8b23..b71102b8 100644 --- a/src/TreeSelect.tsx +++ b/src/TreeSelect.tsx @@ -368,11 +368,7 @@ const TreeSelect = React.forwardRef((props, ref) // Fill missing label & status if (entity) { - if (treeTitleRender) { - rawLabel = treeTitleRender(entity.node); - } else { - rawLabel = rawLabel ?? getLabel(entity.node); - } + rawLabel = treeTitleRender ? treeTitleRender(entity.node) : rawLabel ?? getLabel(entity.node); rawDisabled = entity.node.disabled; } else if (rawLabel === undefined) { // We try to find in current `labelInValue` value