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