@douyinfe/semi-ui 2.46.1 → 2.47.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,6 +24,7 @@ export interface PopconfirmProps extends PopoverProps {
24
24
  prefixCls?: string;
25
25
  zIndex?: number;
26
26
  trigger?: Trigger;
27
+ showCloseIcon?: boolean;
27
28
  position?: Position;
28
29
  onCancel?: (e: React.MouseEvent) => Promise<any> | void;
29
30
  onConfirm?: (e: React.MouseEvent) => Promise<any> | void;
@@ -59,6 +60,7 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
59
60
  okButtonProps: PropTypes.Requireable<object>;
60
61
  cancelButtonProps: PropTypes.Requireable<object>;
61
62
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
63
+ showCloseIcon: PropTypes.Requireable<boolean>;
62
64
  zIndex: PropTypes.Requireable<number>;
63
65
  trigger: PropTypes.Requireable<string>;
64
66
  position: PropTypes.Requireable<string>;
@@ -73,6 +75,7 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
73
75
  cancelType: string;
74
76
  prefixCls: string;
75
77
  zIndex: number;
78
+ showCloseIcon: boolean;
76
79
  onCancel: (...args: any[]) => void;
77
80
  onConfirm: (...args: any[]) => void;
78
81
  onClickOutSide: (...args: any[]) => void;
@@ -41,7 +41,8 @@ export default class Popconfirm extends BaseComponent {
41
41
  style,
42
42
  cancelType,
43
43
  icon,
44
- prefixCls
44
+ prefixCls,
45
+ showCloseIcon
45
46
  } = this.props;
46
47
  const {
47
48
  direction
@@ -75,14 +76,14 @@ export default class Popconfirm extends BaseComponent {
75
76
  }, showTitle ? /*#__PURE__*/React.createElement("div", {
76
77
  className: `${prefixCls}-header-title`,
77
78
  "x-semi-prop": "title"
78
- }, title) : null), /*#__PURE__*/React.createElement(Button, {
79
+ }, title) : null), showCloseIcon ? /*#__PURE__*/React.createElement(Button, {
79
80
  className: `${prefixCls}-btn-close`,
80
81
  icon: /*#__PURE__*/React.createElement(IconClose, null),
81
82
  size: "small",
82
83
  theme: 'borderless',
83
84
  type: cancelType,
84
85
  onClick: this.handleCancel
85
- })), showContent ? /*#__PURE__*/React.createElement("div", {
86
+ }) : null), showContent ? /*#__PURE__*/React.createElement("div", {
86
87
  className: bodyCls,
87
88
  "x-semi-prop": "content"
88
89
  }, _isFunction(content) ? content({
@@ -246,6 +247,7 @@ Popconfirm.propTypes = {
246
247
  okButtonProps: PropTypes.object,
247
248
  cancelButtonProps: PropTypes.object,
248
249
  stopPropagation: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
250
+ showCloseIcon: PropTypes.bool,
249
251
  zIndex: PropTypes.number,
250
252
  // private
251
253
  trigger: PropTypes.string,
@@ -264,6 +266,7 @@ Popconfirm.defaultProps = {
264
266
  cancelType: 'tertiary',
265
267
  prefixCls: cssClasses.PREFIX,
266
268
  zIndex: numbers.DEFAULT_Z_INDEX,
269
+ showCloseIcon: true,
267
270
  onCancel: _noop,
268
271
  onConfirm: _noop,
269
272
  onClickOutSide: _noop
@@ -41,11 +41,12 @@ declare class Tree extends BaseComponent<TreeProps, TreeState> {
41
41
  showFilteredOnly: PropTypes.Requireable<boolean>;
42
42
  style: PropTypes.Requireable<object>;
43
43
  treeData: PropTypes.Requireable<PropTypes.InferProps<{
44
- key: PropTypes.Validator<string>;
44
+ key: PropTypes.Requireable<string>;
45
45
  value: PropTypes.Requireable<NonNullable<string | number>>;
46
46
  label: PropTypes.Requireable<any>;
47
47
  isLeaf: PropTypes.Requireable<boolean>;
48
48
  }>[]>;
49
+ keyMaps: PropTypes.Requireable<object>;
49
50
  treeDataSimpleJson: PropTypes.Requireable<object>;
50
51
  treeNodeFilterProp: PropTypes.Requireable<string>;
51
52
  value: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -1,3 +1,5 @@
1
+ import _isUndefined from "lodash/isUndefined";
2
+ import _pick from "lodash/pick";
1
3
  import _isFunction from "lodash/isFunction";
2
4
  import _get from "lodash/get";
3
5
  import _isEqual from "lodash/isEqual";
@@ -143,17 +145,20 @@ class Tree extends BaseComponent {
143
145
  };
144
146
  this.renderTreeNode = (treeNode, ind, style) => {
145
147
  const {
146
- data
147
- } = treeNode;
148
- const {
148
+ data,
149
149
  key
150
- } = data;
150
+ } = treeNode;
151
151
  const treeNodeProps = this.foundation.getTreeNodeProps(key);
152
152
  if (!treeNodeProps) {
153
153
  return null;
154
154
  }
155
- return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, {
156
- key: key,
155
+ const {
156
+ keyMaps
157
+ } = this.props;
158
+ const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon']);
159
+ const children = data[_get(keyMaps, 'children', 'children')];
160
+ !_isUndefined(children) && (props.children = children);
161
+ return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, props, {
157
162
  data: data,
158
163
  style: _isEmpty(style) ? {} : style
159
164
  }));
@@ -213,6 +218,9 @@ class Tree extends BaseComponent {
213
218
  const {
214
219
  prevProps
215
220
  } = prevState;
221
+ const {
222
+ keyMaps
223
+ } = props;
216
224
  let treeData;
217
225
  let keyEntities = prevState.keyEntities || {};
218
226
  let valueEntities = prevState.cachedKeyValuePairs || {};
@@ -239,7 +247,7 @@ class Tree extends BaseComponent {
239
247
  if (needUpdateTreeData || props.draggable && needUpdateData()) {
240
248
  treeData = props.treeData;
241
249
  newState.treeData = treeData;
242
- const entitiesMap = convertDataToEntities(treeData);
250
+ const entitiesMap = convertDataToEntities(treeData, keyMaps);
243
251
  newState.keyEntities = Object.assign({}, entitiesMap.keyEntities);
244
252
  keyEntities = newState.keyEntities;
245
253
  newState.cachedKeyValuePairs = Object.assign({}, entitiesMap.valueEntities);
@@ -248,7 +256,7 @@ class Tree extends BaseComponent {
248
256
  // Convert treeDataSimpleJson to treeData
249
257
  treeData = convertJsonToData(props.treeDataSimpleJson);
250
258
  newState.treeData = treeData;
251
- const entitiesMap = convertDataToEntities(treeData);
259
+ const entitiesMap = convertDataToEntities(treeData, keyMaps);
252
260
  newState.keyEntities = Object.assign({}, entitiesMap.keyEntities);
253
261
  keyEntities = newState.keyEntities;
254
262
  newState.cachedKeyValuePairs = Object.assign({}, entitiesMap.valueEntities);
@@ -304,7 +312,7 @@ class Tree extends BaseComponent {
304
312
  }
305
313
  // Update flattenNodes
306
314
  if (treeData || newState.expandedKeys) {
307
- const flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys);
315
+ const flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, keyMaps);
308
316
  newState.flattenNodes = flattenNodes;
309
317
  }
310
318
  } else {
@@ -319,7 +327,8 @@ class Tree extends BaseComponent {
319
327
  filterProps: props.treeNodeFilterProp,
320
328
  showFilteredOnly: props.showFilteredOnly,
321
329
  keyEntities: newState.keyEntities,
322
- prevExpandedKeys: [...prevState.filteredExpandedKeys]
330
+ prevExpandedKeys: [...prevState.filteredExpandedKeys],
331
+ keyMaps: keyMaps
323
332
  });
324
333
  newState.flattenNodes = filteredState.flattenNodes;
325
334
  newState.motionKeys = new Set([]);
@@ -352,7 +361,7 @@ class Tree extends BaseComponent {
352
361
  newState.motionType = motionType;
353
362
  }
354
363
  }
355
- newState.flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.filteredExpandedKeys || prevState.filteredExpandedKeys, props.showFilteredOnly && prevState.filteredShownKeys);
364
+ newState.flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.filteredExpandedKeys || prevState.filteredExpandedKeys, keyMaps, props.showFilteredOnly && prevState.filteredShownKeys);
356
365
  }
357
366
  }
358
367
  // Handle single selection and multiple selection in controlled mode
@@ -363,26 +372,26 @@ class Tree extends BaseComponent {
363
372
  if (needUpdate('value')) {
364
373
  newState.selectedKeys = findKeysForValues(
365
374
  // In both cases whether withObject is turned on, the value is standardized to string
366
- normalizeValue(props.value, withObject), valueEntities, isMultiple);
375
+ normalizeValue(props.value, withObject, keyMaps), valueEntities, isMultiple);
367
376
  } else if (!prevProps && props.defaultValue) {
368
- newState.selectedKeys = findKeysForValues(normalizeValue(props.defaultValue, withObject), valueEntities, isMultiple);
377
+ newState.selectedKeys = findKeysForValues(normalizeValue(props.defaultValue, withObject, keyMaps), valueEntities, isMultiple);
369
378
  } else if (treeData) {
370
379
  // If `treeData` changed, we also need check it
371
380
  if (props.value) {
372
- newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject) || '', valueEntities, isMultiple);
381
+ newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject, keyMaps) || '', valueEntities, isMultiple);
373
382
  }
374
383
  }
375
384
  } else {
376
385
  let checkedKeyValues;
377
386
  // Get the selected node during multiple selection
378
387
  if (needUpdate('value')) {
379
- checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject), valueEntities, isMultiple);
388
+ checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject, keyMaps), valueEntities, isMultiple);
380
389
  } else if (!prevProps && props.defaultValue) {
381
- checkedKeyValues = findKeysForValues(normalizeValue(props.defaultValue, withObject), valueEntities, isMultiple);
390
+ checkedKeyValues = findKeysForValues(normalizeValue(props.defaultValue, withObject, keyMaps), valueEntities, isMultiple);
382
391
  } else if (treeData) {
383
392
  // If `treeData` changed, we also need check it
384
393
  if (props.value) {
385
- checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject) || [], valueEntities, isMultiple);
394
+ checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject, keyMaps) || [], valueEntities, isMultiple);
386
395
  } else {
387
396
  checkedKeyValues = updateKeys(props.checkRelation === 'related' ? prevState.checkedKeys : prevState.realCheckedKeys, keyEntities);
388
397
  }
@@ -406,7 +415,7 @@ class Tree extends BaseComponent {
406
415
  }
407
416
  // update disableStrictly
408
417
  if (treeData && props.disableStrictly && props.checkRelation === 'related') {
409
- newState.disabledKeys = calcDisabledKeys(keyEntities);
418
+ newState.disabledKeys = calcDisabledKeys(keyEntities, keyMaps);
410
419
  }
411
420
  return newState;
412
421
  }
@@ -684,11 +693,12 @@ Tree.propTypes = {
684
693
  showFilteredOnly: PropTypes.bool,
685
694
  style: PropTypes.object,
686
695
  treeData: PropTypes.arrayOf(PropTypes.shape({
687
- key: PropTypes.string.isRequired,
696
+ key: PropTypes.string,
688
697
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
689
698
  label: PropTypes.any,
690
699
  isLeaf: PropTypes.bool
691
700
  })),
701
+ keyMaps: PropTypes.object,
692
702
  treeDataSimpleJson: PropTypes.object,
693
703
  treeNodeFilterProp: PropTypes.string,
694
704
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array, PropTypes.object]),
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode, MouseEvent } from 'react';
2
- import { BasicTreeProps, BasicExpandedOtherProps, BasicRenderFullLabelProps, BasicSearchRenderProps, BasicTreeInnerData, BasicKeyEntities, BasicKeyEntity, BasicTreeNodeProps, BasicFlattenNode, BasicTreeNodeData, BasicOnDragProps } from '@douyinfe/semi-foundation/lib/es/tree/foundation';
2
+ import { BasicTreeProps, BasicExpandedOtherProps, BasicRenderFullLabelProps, BasicSearchRenderProps, BasicTreeInnerData, BasicKeyEntities, BasicKeyEntity, BasicTreeNodeProps, BasicFlattenNode, BasicTreeNodeData, BasicOnDragProps, KeyMapProps } from '@douyinfe/semi-foundation/lib/es/tree/foundation';
3
3
  export type Value = string | number | TreeNodeData | Array<TreeNodeData | number | string>;
4
4
  export interface DragTreeNode extends TreeNodeData {
5
5
  expanded: boolean;
@@ -49,6 +49,7 @@ export interface TreeProps extends BasicTreeProps {
49
49
  treeData?: TreeNodeData[];
50
50
  value?: Value;
51
51
  icon?: ReactNode;
52
+ keyMaps?: KeyMapProps;
52
53
  loadData?: (treeNode?: TreeNodeData) => Promise<void>;
53
54
  onChange?: (value?: Value) => void;
54
55
  onDoubleClick?: (e: MouseEvent, node: TreeNodeData) => void;
@@ -3,13 +3,7 @@ import React, { PureComponent } from 'react';
3
3
  import TreeContext from './treeContext';
4
4
  import NodeCollapsible from './nodeCollapsible';
5
5
  const getTreeNodeKey = treeNode => {
6
- const {
7
- data
8
- } = treeNode;
9
- const {
10
- key
11
- } = data;
12
- return key;
6
+ return treeNode.key;
13
7
  };
14
8
  export default class NodeList extends PureComponent {
15
9
  constructor(props) {
@@ -29,7 +29,7 @@ export type RenderSelectedItemInMultiple = (treeNode: TreeNodeData, otherProps:
29
29
  content: React.ReactNode;
30
30
  };
31
31
  export type RenderSelectedItem = RenderSelectedItemInSingle | RenderSelectedItemInMultiple;
32
- export type OverrideCommonProps = 'renderFullLabel' | 'renderLabel' | 'defaultValue' | 'emptyContent' | 'filterTreeNode' | 'style' | 'treeData' | 'value' | 'onExpand';
32
+ export type OverrideCommonProps = 'renderFullLabel' | 'renderLabel' | 'defaultValue' | 'emptyContent' | 'filterTreeNode' | 'style' | 'treeData' | 'value' | 'onExpand' | 'keyMaps';
33
33
  /**
34
34
  * Type definition description:
35
35
  * TreeSelectProps inherits some properties from BasicTreeSelectProps (from foundation) and TreeProps (from semi-ui-react).
@@ -136,9 +136,10 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
136
136
  showFilteredOnly: PropTypes.Requireable<boolean>;
137
137
  motionExpand: PropTypes.Requireable<boolean>;
138
138
  emptyContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
139
+ keyMaps: PropTypes.Requireable<object>;
139
140
  leafOnly: PropTypes.Requireable<boolean>;
140
141
  treeData: PropTypes.Requireable<PropTypes.InferProps<{
141
- key: PropTypes.Validator<string>;
142
+ key: PropTypes.Requireable<string>;
142
143
  value: PropTypes.Requireable<NonNullable<string | number>>;
143
144
  label: PropTypes.Requireable<any>;
144
145
  }>[]>;
@@ -1,3 +1,4 @@
1
+ import _pick from "lodash/pick";
1
2
  import _isNull from "lodash/isNull";
2
3
  import _isUndefined from "lodash/isUndefined";
3
4
  import _isFunction from "lodash/isFunction";
@@ -163,11 +164,13 @@ class TreeSelect extends BaseComponent {
163
164
  disableStrictly,
164
165
  size,
165
166
  checkRelation,
166
- renderSelectedItem: propRenderSelectedItem
167
+ renderSelectedItem: propRenderSelectedItem,
168
+ keyMaps
167
169
  } = this.props;
170
+ const realLabelName = _get(keyMaps, 'label', treeNodeLabelProp);
168
171
  const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : item => ({
169
172
  isRenderInTag: true,
170
- content: _get(item, treeNodeLabelProp, null)
173
+ content: _get(item, realLabelName, null)
171
174
  });
172
175
  let renderKeys = [];
173
176
  if (checkRelation === 'related') {
@@ -177,7 +180,7 @@ class TreeSelect extends BaseComponent {
177
180
  }
178
181
  const tagList = [];
179
182
  renderKeys.forEach((key, index) => {
180
- const item = keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
183
+ const item = keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
181
184
  const onClose = (tagContent, e) => {
182
185
  if (e && typeof e.preventDefault === 'function') {
183
186
  // make sure that tag will not hidden immediately in controlled mode
@@ -188,7 +191,7 @@ class TreeSelect extends BaseComponent {
188
191
  const {
189
192
  content,
190
193
  isRenderInTag
191
- } = item && treeNodeLabelProp in item ? renderSelectedItem(item, {
194
+ } = item ? renderSelectedItem(item, {
192
195
  index,
193
196
  onClose
194
197
  }) : {};
@@ -451,11 +454,13 @@ class TreeSelect extends BaseComponent {
451
454
  disabled,
452
455
  disableStrictly,
453
456
  renderSelectedItem: propRenderSelectedItem,
454
- treeNodeLabelProp
457
+ treeNodeLabelProp,
458
+ keyMaps
455
459
  } = this.props;
460
+ const realLabelName = _get(keyMaps, 'label', treeNodeLabelProp);
456
461
  const keyList = normalizeKeyList([key], keyEntities, leafOnly, true);
457
- const nodes = keyList.map(i => keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
458
- const value = getValueOrKey(nodes);
462
+ const nodes = keyList.map(i => keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
463
+ const value = getValueOrKey(nodes, keyMaps);
459
464
  const tagCls = cls(`${prefixcls}-selection-tag`, {
460
465
  [`${prefixcls}-selection-tag-disabled`]: disabled
461
466
  });
@@ -478,13 +483,13 @@ class TreeSelect extends BaseComponent {
478
483
  const item = nodes[0];
479
484
  const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : selectedItem => ({
480
485
  isRenderInTag: true,
481
- content: _get(selectedItem, treeNodeLabelProp, null)
486
+ content: _get(selectedItem, realLabelName, null)
482
487
  });
483
488
  if (_isFunction(renderSelectedItem)) {
484
489
  const {
485
490
  content,
486
491
  isRenderInTag
487
- } = item && treeNodeLabelProp in item ? renderSelectedItem(item, {
492
+ } = item ? renderSelectedItem(item, {
488
493
  index: idx,
489
494
  onClose
490
495
  }) : {};
@@ -684,17 +689,20 @@ class TreeSelect extends BaseComponent {
684
689
  };
685
690
  this.renderTreeNode = (treeNode, ind, style) => {
686
691
  const {
687
- data
688
- } = treeNode;
689
- const {
692
+ data,
690
693
  key
691
- } = data;
694
+ } = treeNode;
692
695
  const treeNodeProps = this.foundation.getTreeNodeProps(key);
693
696
  if (!treeNodeProps) {
694
697
  return null;
695
698
  }
696
- return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, {
697
- key: key,
699
+ const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon']);
700
+ const {
701
+ keyMaps
702
+ } = this.props;
703
+ const children = data[_get(keyMaps, 'children', 'children')];
704
+ !_isUndefined(children) && (props.children = children);
705
+ return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, props, {
698
706
  data: data,
699
707
  style: style
700
708
  }));
@@ -878,6 +886,9 @@ class TreeSelect extends BaseComponent {
878
886
  prevProps,
879
887
  rePosKey
880
888
  } = prevState;
889
+ const {
890
+ keyMaps
891
+ } = props;
881
892
  const needUpdate = name => !prevProps && name in props || prevProps && !_isEqual(prevProps[name], props[name]);
882
893
  let treeData;
883
894
  const withObject = props.onChangeWithObject;
@@ -892,7 +903,7 @@ class TreeSelect extends BaseComponent {
892
903
  if (needUpdateTreeData) {
893
904
  treeData = props.treeData;
894
905
  newState.treeData = treeData;
895
- const entitiesMap = convertDataToEntities(treeData);
906
+ const entitiesMap = convertDataToEntities(treeData, keyMaps);
896
907
  newState.keyEntities = Object.assign({}, entitiesMap.keyEntities);
897
908
  keyEntities = newState.keyEntities;
898
909
  newState.cachedKeyValuePairs = Object.assign({}, entitiesMap.valueEntities);
@@ -923,26 +934,26 @@ class TreeSelect extends BaseComponent {
923
934
  } else if (!prevProps && props.defaultExpandedKeys) {
924
935
  newState.expandedKeys = calcExpandedKeys(props.defaultExpandedKeys, keyEntities);
925
936
  } else if (!prevProps && props.defaultValue) {
926
- newState.expandedKeys = calcExpandedKeysForValues(normalizeValue(props.defaultValue, withObject), keyEntities, props.multiple, valueEntities);
937
+ newState.expandedKeys = calcExpandedKeysForValues(normalizeValue(props.defaultValue, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
927
938
  } else if (!prevProps && props.value) {
928
- newState.expandedKeys = calcExpandedKeysForValues(normalizeValue(props.value, withObject), keyEntities, props.multiple, valueEntities);
939
+ newState.expandedKeys = calcExpandedKeysForValues(normalizeValue(props.value, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
929
940
  }
930
941
  // flattenNodes
931
942
  if (treeData || needUpdateExpandedKeys) {
932
- const flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys);
943
+ const flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, keyMaps);
933
944
  newState.flattenNodes = flattenNodes;
934
945
  }
935
946
  // selectedKeys: single mode controlled
936
947
  const isMultiple = props.multiple;
937
948
  if (!isMultiple) {
938
949
  if (needUpdate('value')) {
939
- newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject), valueEntities, isMultiple);
950
+ newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject, keyMaps), valueEntities, isMultiple);
940
951
  } else if (!prevProps && props.defaultValue) {
941
- newState.selectedKeys = findKeysForValues(normalizeValue(props.defaultValue, withObject), valueEntities, isMultiple);
952
+ newState.selectedKeys = findKeysForValues(normalizeValue(props.defaultValue, withObject, keyMaps), valueEntities, isMultiple);
942
953
  } else if (treeData) {
943
954
  // If `treeData` changed, we also need check it
944
955
  if (props.value) {
945
- newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject) || '', valueEntities, isMultiple);
956
+ newState.selectedKeys = findKeysForValues(normalizeValue(props.value, withObject, keyMaps) || '', valueEntities, isMultiple);
946
957
  } else {
947
958
  newState.selectedKeys = updateKeys(prevState.selectedKeys, keyEntities);
948
959
  }
@@ -951,13 +962,13 @@ class TreeSelect extends BaseComponent {
951
962
  // checkedKeys: multiple mode controlled || data changed
952
963
  let checkedKeyValues;
953
964
  if (needUpdate('value')) {
954
- checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject), valueEntities, isMultiple);
965
+ checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject, keyMaps), valueEntities, isMultiple);
955
966
  } else if (!prevProps && props.defaultValue) {
956
- checkedKeyValues = findKeysForValues(normalizeValue(props.defaultValue, withObject), valueEntities, isMultiple);
967
+ checkedKeyValues = findKeysForValues(normalizeValue(props.defaultValue, withObject, keyMaps), valueEntities, isMultiple);
957
968
  } else if (treeData) {
958
969
  // If `treeData` changed, we also need check it
959
970
  if (props.value) {
960
- checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject) || [], valueEntities, isMultiple);
971
+ checkedKeyValues = findKeysForValues(normalizeValue(props.value, withObject, keyMaps) || [], valueEntities, isMultiple);
961
972
  } else {
962
973
  checkedKeyValues = updateKeys(props.checkRelation === 'related' ? prevState.checkedKeys : prevState.realCheckedKeys, keyEntities);
963
974
  }
@@ -985,7 +996,7 @@ class TreeSelect extends BaseComponent {
985
996
  }
986
997
  // ================ disableStrictly =================
987
998
  if (treeData && props.disableStrictly && props.checkRelation === 'related') {
988
- newState.disabledKeys = calcDisabledKeys(keyEntities);
999
+ newState.disabledKeys = calcDisabledKeys(keyEntities, keyMaps);
989
1000
  }
990
1001
  return newState;
991
1002
  }
@@ -1229,9 +1240,10 @@ TreeSelect.propTypes = {
1229
1240
  showFilteredOnly: PropTypes.bool,
1230
1241
  motionExpand: PropTypes.bool,
1231
1242
  emptyContent: PropTypes.node,
1243
+ keyMaps: PropTypes.object,
1232
1244
  leafOnly: PropTypes.bool,
1233
1245
  treeData: PropTypes.arrayOf(PropTypes.shape({
1234
- key: PropTypes.string.isRequired,
1246
+ key: PropTypes.string,
1235
1247
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
1236
1248
  label: PropTypes.any
1237
1249
  })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.46.1",
3
+ "version": "2.47.0-beta.0",
4
4
  "description": "A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es/index.js",
@@ -20,12 +20,12 @@
20
20
  "@dnd-kit/core": "^6.0.8",
21
21
  "@dnd-kit/sortable": "^7.0.2",
22
22
  "@dnd-kit/utilities": "^3.2.1",
23
- "@douyinfe/semi-animation": "2.46.1",
24
- "@douyinfe/semi-animation-react": "2.46.1",
25
- "@douyinfe/semi-foundation": "2.46.1",
26
- "@douyinfe/semi-icons": "2.46.1",
27
- "@douyinfe/semi-illustrations": "2.46.1",
28
- "@douyinfe/semi-theme-default": "2.46.1",
23
+ "@douyinfe/semi-animation": "2.47.0-beta.0",
24
+ "@douyinfe/semi-animation-react": "2.47.0-beta.0",
25
+ "@douyinfe/semi-foundation": "2.47.0-beta.0",
26
+ "@douyinfe/semi-icons": "2.47.0-beta.0",
27
+ "@douyinfe/semi-illustrations": "2.47.0-beta.0",
28
+ "@douyinfe/semi-theme-default": "2.47.0-beta.0",
29
29
  "async-validator": "^3.5.0",
30
30
  "classnames": "^2.2.6",
31
31
  "copy-text-to-clipboard": "^2.1.1",
@@ -75,7 +75,7 @@
75
75
  ],
76
76
  "author": "",
77
77
  "license": "MIT",
78
- "gitHead": "11cc57786fbf20f83242a7ccebf62c8874f03057",
78
+ "gitHead": "201c3696de1cfe4686903a3a50c68ca07272742a",
79
79
  "devDependencies": {
80
80
  "@babel/plugin-proposal-decorators": "^7.15.8",
81
81
  "@babel/plugin-transform-runtime": "^7.15.8",