@douyinfe/semi-foundation 2.46.2 → 2.47.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.
@@ -106,25 +106,34 @@ export default class InputFoundation extends BaseFoundation {
106
106
  } = options;
107
107
  const {
108
108
  format,
109
- type
109
+ type,
110
+ rangeSeparator
110
111
  } = this._adapter.getProps();
111
112
  const insetFormatToken = getInsetInputFormatToken({
112
113
  type,
113
114
  format
114
115
  });
115
- let newInsetInputValue = _set(_cloneDeep(insetInputValue), valuePath, value);
116
- newInsetInputValue = this._autoFillTimeToInsetInputValue({
117
- insetInputValue: newInsetInputValue,
116
+ const newInsetInputValue = _set(_cloneDeep(insetInputValue), valuePath, value);
117
+ const insetInputStr = this.concatInsetInputValue({
118
+ insetInputValue: newInsetInputValue
119
+ });
120
+ const parsedInsetInputValueFromInputStr = getInsetInputValueFromInsetInputStr({
121
+ inputValue: insetInputStr,
122
+ type,
123
+ rangeSeparator
124
+ });
125
+ const filledTimeInsetInputValue = this._autoFillTimeToInsetInputValue({
126
+ insetInputValue: parsedInsetInputValueFromInputStr,
118
127
  valuePath,
119
128
  format: insetFormatToken
120
129
  });
121
- const newInputValue = this.concatInsetInputValue({
122
- insetInputValue: newInsetInputValue
130
+ const finalInsetInputStr = this.concatInsetInputValue({
131
+ insetInputValue: filledTimeInsetInputValue
123
132
  });
124
133
  this._adapter.notifyInsetInputChange({
125
- insetInputValue: newInsetInputValue,
134
+ insetInputValue: filledTimeInsetInputValue,
126
135
  format: insetFormatToken,
127
- insetInputStr: newInputValue
136
+ insetInputStr: finalInsetInputStr
128
137
  });
129
138
  }
130
139
  _autoFillTimeToInsetInputValue(options) {
@@ -385,9 +385,9 @@ class TableFoundation extends BaseFoundation {
385
385
  }, pagination);
386
386
  if (!this._pagerIsControlled()) {
387
387
  const total = _get(propPagination, 'total', dataSource.length);
388
- const pageSize = _get(propPagination, 'pageSize', pagination.pageSize);
389
388
  const {
390
- currentPage
389
+ currentPage,
390
+ pageSize
391
391
  } = pagination;
392
392
  const realTotalPage = Math.ceil(total / pageSize);
393
393
  pagination.total = total;
@@ -3,6 +3,7 @@
3
3
  * https://github.com/react-component/tree
4
4
  */
5
5
  import BaseFoundation, { DefaultAdapter } from '../base/foundation';
6
+ export { KeyMapProps } from './treeUtil';
6
7
  export interface BasicTreeNodeProps {
7
8
  [x: string]: any;
8
9
  expanded?: boolean;
@@ -24,7 +25,7 @@ export interface BasicTreeNodeProps {
24
25
  }
25
26
  export interface BasicTreeNodeData {
26
27
  [x: string]: any;
27
- key: string;
28
+ key?: string;
28
29
  value?: number | string;
29
30
  label?: any;
30
31
  icon?: any;
@@ -121,7 +121,8 @@ export default class TreeFoundation extends BaseFoundation {
121
121
  } = this.getStates();
122
122
  const {
123
123
  leafOnly,
124
- checkRelation
124
+ checkRelation,
125
+ keyMaps
125
126
  } = this.getProps();
126
127
  let value;
127
128
  let keyList = [];
@@ -133,12 +134,15 @@ export default class TreeFoundation extends BaseFoundation {
133
134
  if (this.getProp('onChangeWithObject')) {
134
135
  value = keyList.map(itemKey => keyEntities[itemKey].data);
135
136
  } else {
136
- value = getValueOrKey(keyList.map(itemKey => keyEntities[itemKey].data));
137
+ value = getValueOrKey(keyList.map(itemKey => keyEntities[itemKey].data), keyMaps);
137
138
  }
138
139
  this._adapter.notifyChange(value);
139
140
  }
140
141
  notifyChange(key, e) {
141
142
  const isMultiple = this._isMultiple();
143
+ const {
144
+ keyMaps
145
+ } = this.getProps();
142
146
  const {
143
147
  keyEntities
144
148
  } = this.getStates();
@@ -154,7 +158,7 @@ export default class TreeFoundation extends BaseFoundation {
154
158
  const {
155
159
  data
156
160
  } = _get(keyEntities, key);
157
- value = getValueOrKey(data);
161
+ value = getValueOrKey(data, keyMaps);
158
162
  }
159
163
  this._adapter.notifyChange(value);
160
164
  }
@@ -171,8 +175,10 @@ export default class TreeFoundation extends BaseFoundation {
171
175
  const {
172
176
  showFilteredOnly,
173
177
  filterTreeNode,
174
- treeNodeFilterProp
178
+ treeNodeFilterProp,
179
+ keyMaps
175
180
  } = this.getProps();
181
+ const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : _get(keyMaps, 'label', 'label');
176
182
  let filteredOptsKeys = [];
177
183
  let expandedOptsKeys = [];
178
184
  let flattenNodes = [];
@@ -180,13 +186,13 @@ export default class TreeFoundation extends BaseFoundation {
180
186
  if (!sugInput) {
181
187
  expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
182
188
  expandedOptsKeys.forEach(item => expandedKeys.add(item));
183
- flattenNodes = flattenTreeData(treeData, expandedKeys);
189
+ flattenNodes = flattenTreeData(treeData, expandedKeys, keyMaps);
184
190
  } else {
185
- filteredOptsKeys = Object.values(keyEntities).filter(item => filter(sugInput, item.data, filterTreeNode, treeNodeFilterProp)).map(item => item.key);
191
+ filteredOptsKeys = Object.values(keyEntities).filter(item => filter(sugInput, item.data, filterTreeNode, realFilterProp)).map(item => item.key);
186
192
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
187
193
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
188
194
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
189
- flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), showFilteredOnly && filteredShownKeys);
195
+ flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
190
196
  }
191
197
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
192
198
  this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
@@ -354,6 +360,9 @@ export default class TreeFoundation extends BaseFoundation {
354
360
  filteredShownKeys,
355
361
  keyEntities
356
362
  } = this.getStates();
363
+ const {
364
+ keyMaps
365
+ } = this.getProps();
357
366
  const isSearching = Boolean(inputValue);
358
367
  const showFilteredOnly = this._showFilteredOnly();
359
368
  const expandedStateKey = isSearching ? 'filteredExpandedKeys' : 'expandedKeys';
@@ -372,7 +381,7 @@ export default class TreeFoundation extends BaseFoundation {
372
381
  }
373
382
  this._adapter.cacheFlattenNodes(motionType === 'hide' && this._isAnimated());
374
383
  if (!this._isExpandControlled()) {
375
- const flattenNodes = flattenTreeData(treeData, expandedKeys, isSearching && showFilteredOnly && filteredShownKeys);
384
+ const flattenNodes = flattenTreeData(treeData, expandedKeys, keyMaps, isSearching && showFilteredOnly && filteredShownKeys);
376
385
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, expandedKeys, keyEntities) : [];
377
386
  const newState = {
378
387
  [expandedStateKey]: expandedKeys,
@@ -14,6 +14,15 @@ export interface NodeData {
14
14
  value: any;
15
15
  children?: any;
16
16
  }
17
+ export interface KeyMapProps {
18
+ key?: string;
19
+ label?: string;
20
+ value?: string;
21
+ disabled?: string;
22
+ children?: string;
23
+ isLeaf?: string;
24
+ icon?: string;
25
+ }
17
26
  /**
18
27
  * Flat nest tree data into flatten list. This is used for virtual list render.
19
28
  * @param treeNodeList Origin data node list
@@ -21,13 +30,13 @@ export interface NodeData {
21
30
  * @param filteredShownKeys
22
31
  * need expanded keys, provides `true` means all expanded
23
32
  */
24
- export declare function flattenTreeData(treeNodeList: any[], expandedKeys: Set<string>, filteredShownKeys?: boolean | Set<any>): any[];
33
+ export declare function flattenTreeData(treeNodeList: any[], expandedKeys: Set<string>, keyMaps: KeyMapProps, filteredShownKeys?: boolean | Set<any>): any[];
25
34
  export declare function convertJsonToData(treeJson: TreeDataSimpleJson): any[];
26
35
  /**
27
36
  * Traverse all the data by `treeData`.
28
37
  */
29
- export declare function traverseDataNodes(treeNodes: any[], callback: (data: any) => void): void;
30
- export declare function convertDataToEntities(dataNodes: any[]): {
38
+ export declare function traverseDataNodes(treeNodes: any[], callback: (data: any) => void, keyMaps: KeyMapProps): void;
39
+ export declare function convertDataToEntities(dataNodes: any[], keyMaps?: KeyMapProps): {
31
40
  posEntities: {};
32
41
  keyEntities: {};
33
42
  valueEntities: {};
@@ -71,10 +80,10 @@ export declare function filterTreeData(info: any): {
71
80
  filteredExpandedKeys: Set<any>;
72
81
  filteredShownKeys: Set<any>;
73
82
  };
74
- export declare function getValueOrKey(data: any): any;
75
- export declare function normalizeValue(value: any, withObject: boolean): any;
83
+ export declare function getValueOrKey(data: any, keyMaps?: KeyMapProps): any;
84
+ export declare function normalizeValue(value: any, withObject: boolean, keyMaps?: KeyMapProps): any;
76
85
  export declare function updateKeys(keySet: Set<string> | string[], keyEntities: KeyEntities): string[];
77
- export declare function calcDisabledKeys(keyEntities: KeyEntities): Set<string>;
86
+ export declare function calcDisabledKeys(keyEntities: KeyEntities, keyMaps?: KeyMapProps): Set<string>;
78
87
  export declare function calcDropRelativePosition(event: any, treeNode: any): 1 | -1 | 0;
79
88
  export declare function getDragNodesKeys(key: string, keyEntities: KeyEntities): string[];
80
89
  export declare function calcDropActualPosition(pos: string, relativeDropPos: any): any;
@@ -1,3 +1,4 @@
1
+ import _omit from "lodash/omit";
1
2
  import _get from "lodash/get";
2
3
  import _pick from "lodash/pick";
3
4
  import _isEmpty from "lodash/isEmpty";
@@ -25,17 +26,27 @@ function isValid(val) {
25
26
  * @param filteredShownKeys
26
27
  * need expanded keys, provides `true` means all expanded
27
28
  */
28
- export function flattenTreeData(treeNodeList, expandedKeys) {
29
- let filteredShownKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
29
+ export function flattenTreeData(treeNodeList, expandedKeys, keyMaps) {
30
+ let filteredShownKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
30
31
  const flattenList = [];
31
32
  const filterSearch = Boolean(filteredShownKeys);
33
+ const realKeyName = _get(keyMaps, 'key', 'key');
34
+ const realChildrenName = _get(keyMaps, 'children', 'children');
32
35
  function flatten(list) {
33
36
  let parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
34
37
  return list.map((treeNode, index) => {
35
38
  const pos = getPosition(parent ? parent.pos : '0', index);
36
- const mergedKey = treeNode.key;
39
+ const mergedKey = treeNode[realKeyName];
40
+ const otherData = {};
41
+ if (keyMaps) {
42
+ Object.entries(_omit(keyMaps, 'children')).forEach(_ref => {
43
+ let [key, value] = _ref;
44
+ const result = treeNode[value];
45
+ !_isUndefined(result) && (otherData[key] = result);
46
+ });
47
+ }
37
48
  // Add FlattenDataNode into list
38
- const flattenNode = Object.assign(Object.assign({}, _pick(treeNode, ['key', 'label', 'value', 'icon', 'disabled', 'isLeaf'])), {
49
+ const flattenNode = Object.assign(Object.assign(Object.assign({}, _pick(treeNode, ['key', 'label', 'value', 'icon', 'disabled', 'isLeaf'])), otherData), {
39
50
  parent,
40
51
  pos,
41
52
  children: null,
@@ -48,7 +59,7 @@ export function flattenTreeData(treeNodeList, expandedKeys) {
48
59
  }
49
60
  // Loop treeNode children
50
61
  if (expandedKeys.has(mergedKey) && (!filterSearch || !isBooleanFilteredShownKeys && filteredShownKeys.has(mergedKey))) {
51
- flattenNode.children = flatten(treeNode.children || [], flattenNode);
62
+ flattenNode.children = flatten(treeNode[realChildrenName] || [], flattenNode);
52
63
  } else {
53
64
  flattenNode.children = [];
54
65
  }
@@ -83,17 +94,20 @@ export function convertJsonToData(treeJson) {
83
94
  /**
84
95
  * Traverse all the data by `treeData`.
85
96
  */
86
- export function traverseDataNodes(treeNodes, callback) {
97
+ export function traverseDataNodes(treeNodes, callback, keyMaps) {
98
+ const realKeyName = _get(keyMaps, 'key', 'key');
99
+ const realChildrenName = _get(keyMaps, 'children', 'children');
87
100
  const processNode = (node, ind, parent) => {
88
- const children = node ? node.children : treeNodes;
101
+ const children = node ? node[realChildrenName] : treeNodes;
89
102
  const pos = node ? getPosition(parent.pos, ind) : '0';
90
103
  // Process node if is not root
91
104
  if (node) {
105
+ const nodeKey = _get(node, realKeyName, null);
92
106
  const data = {
93
107
  data: Object.assign({}, node),
94
108
  ind,
95
109
  pos,
96
- key: node.key !== null ? node.key : pos,
110
+ key: nodeKey !== null ? nodeKey : pos,
97
111
  parentPos: parent.node ? parent.pos : null,
98
112
  level: Number(parent.level) + 1
99
113
  };
@@ -113,7 +127,7 @@ export function traverseDataNodes(treeNodes, callback) {
113
127
  processNode(null);
114
128
  }
115
129
  /* Convert data to entities map */
116
- export function convertDataToEntities(dataNodes) {
130
+ export function convertDataToEntities(dataNodes, keyMaps) {
117
131
  const posEntities = {};
118
132
  const keyEntities = {};
119
133
  const valueEntities = {};
@@ -122,6 +136,7 @@ export function convertDataToEntities(dataNodes) {
122
136
  keyEntities,
123
137
  valueEntities
124
138
  };
139
+ const realValueName = _get(keyMaps, 'value', 'value');
125
140
  traverseDataNodes(dataNodes, data => {
126
141
  const {
127
142
  pos,
@@ -129,7 +144,7 @@ export function convertDataToEntities(dataNodes) {
129
144
  parentPos
130
145
  } = data;
131
146
  const entity = Object.assign({}, data);
132
- const value = _get(entity, 'data.value', null);
147
+ const value = _get(entity, `data.${realValueName}`, null);
133
148
  if (value !== null) {
134
149
  valueEntities[value] = key;
135
150
  }
@@ -141,7 +156,7 @@ export function convertDataToEntities(dataNodes) {
141
156
  entity.parent.children = entity.parent.children || [];
142
157
  entity.parent.children.push(entity);
143
158
  }
144
- });
159
+ }, keyMaps);
145
160
  return wrapper;
146
161
  }
147
162
  /* Get key by value */
@@ -539,7 +554,8 @@ export function filterTreeData(info) {
539
554
  treeData,
540
555
  filterTreeNode,
541
556
  filterProps,
542
- prevExpandedKeys
557
+ prevExpandedKeys,
558
+ keyMaps
543
559
  } = info;
544
560
  let filteredOptsKeys = [];
545
561
  filteredOptsKeys = Object.values(keyEntities).filter(item => filter(inputValue, item.data, filterTreeNode, filterProps)).map(item => item.key);
@@ -550,7 +566,7 @@ export function filterTreeData(info) {
550
566
  }
551
567
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
552
568
  const filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
553
- const flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), showFilteredOnly && filteredShownKeys);
569
+ const flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
554
570
  return {
555
571
  flattenNodes,
556
572
  filteredKeys: new Set(filteredOptsKeys),
@@ -559,16 +575,18 @@ export function filterTreeData(info) {
559
575
  };
560
576
  }
561
577
  // return data.value if data.value exist else fall back to key
562
- export function getValueOrKey(data) {
578
+ export function getValueOrKey(data, keyMaps) {
579
+ const valueName = _get(keyMaps, 'value', 'value');
580
+ const keyName = _get(keyMaps, 'key', 'key');
563
581
  if (Array.isArray(data)) {
564
- return data.map(item => _get(item, 'value', item.key));
582
+ return data.map(item => _get(item, valueName, item[keyName]));
565
583
  }
566
- return _get(data, 'value', data.key);
584
+ return _get(data, valueName, data[keyName]);
567
585
  }
568
586
  /* Convert value to string */
569
- export function normalizeValue(value, withObject) {
587
+ export function normalizeValue(value, withObject, keyMaps) {
570
588
  if (withObject && isValid(value)) {
571
- return getValueOrKey(value);
589
+ return getValueOrKey(value, keyMaps);
572
590
  } else {
573
591
  return value;
574
592
  }
@@ -577,8 +595,9 @@ export function updateKeys(keySet, keyEntities) {
577
595
  const keyArr = [...keySet];
578
596
  return keyArr.filter(key => key in keyEntities);
579
597
  }
580
- export function calcDisabledKeys(keyEntities) {
581
- const disabledKeys = Object.keys(keyEntities).filter(key => keyEntities[key].data.disabled);
598
+ export function calcDisabledKeys(keyEntities, keyMaps) {
599
+ const disabledName = _get(keyMaps, 'disabled', 'disabled');
600
+ const disabledKeys = Object.keys(keyEntities).filter(key => keyEntities[key].data[disabledName]);
582
601
  const {
583
602
  checkedKeys
584
603
  } = calcCheckedKeys(disabledKeys, keyEntities);
@@ -122,7 +122,6 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
122
122
  findDataForValue(findValue: string): any;
123
123
  constructDataForValue(value: string): {
124
124
  [x: number]: string;
125
- key: string;
126
125
  };
127
126
  getDataForKeyNotInKeyEntities(value: string): any;
128
127
  getCopyFromState(items: string | string[]): BasicTreeInnerData;
@@ -89,8 +89,11 @@ export default class TreeSelectFoundation extends BaseFoundation {
89
89
  findDataForValue(findValue) {
90
90
  const {
91
91
  value,
92
- defaultValue
92
+ defaultValue,
93
+ keyMaps
93
94
  } = this.getProps();
95
+ const realValueName = _get(keyMaps, 'value', 'value');
96
+ const realKeyName = _get(keyMaps, 'key', 'key');
94
97
  let valueArr = [];
95
98
  if (value) {
96
99
  valueArr = Array.isArray(value) ? value : [value];
@@ -98,16 +101,19 @@ export default class TreeSelectFoundation extends BaseFoundation {
98
101
  valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
99
102
  }
100
103
  return valueArr.find(item => {
101
- return item.value === findValue || item.key === findValue;
104
+ return item[realValueName] === findValue || item[realKeyName] === findValue;
102
105
  });
103
106
  }
104
107
  constructDataForValue(value) {
105
108
  const {
106
- treeNodeLabelProp
109
+ treeNodeLabelProp,
110
+ keyMaps
107
111
  } = this.getProps();
112
+ const keyName = _get(keyMaps, 'key', 'key');
113
+ const labelName = _get(keyMaps, 'label', treeNodeLabelProp);
108
114
  return {
109
- key: value,
110
- [treeNodeLabelProp]: value
115
+ [keyName]: value,
116
+ [labelName]: value
111
117
  };
112
118
  }
113
119
  getDataForKeyNotInKeyEntities(value) {
@@ -224,7 +230,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
224
230
  } = this.getStates();
225
231
  const {
226
232
  leafOnly,
227
- checkRelation
233
+ checkRelation,
234
+ keyMaps
228
235
  } = this.getProps();
229
236
  let keyList = [];
230
237
  if (checkRelation === 'related') {
@@ -232,11 +239,11 @@ export default class TreeSelectFoundation extends BaseFoundation {
232
239
  } else if (checkRelation === 'unRelated') {
233
240
  keyList = key;
234
241
  }
235
- const nodes = keyList.map(key => keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
242
+ const nodes = keyList.map(key => keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
236
243
  if (this.getProp('onChangeWithObject')) {
237
244
  this._adapter.notifyChangeWithObject(nodes, e);
238
245
  } else {
239
- const value = getValueOrKey(nodes);
246
+ const value = getValueOrKey(nodes, keyMaps);
240
247
  this._adapter.notifyChange(value, nodes, e);
241
248
  }
242
249
  }
@@ -244,11 +251,14 @@ export default class TreeSelectFoundation extends BaseFoundation {
244
251
  const {
245
252
  keyEntities
246
253
  } = this.getStates();
254
+ const {
255
+ keyMaps
256
+ } = this.getProps();
247
257
  if (this._isMultiple() && Array.isArray(key)) {
248
258
  this._notifyMultipleChange(key, e);
249
259
  } else {
250
260
  const nodes = _isUndefined(key) ? key : keyEntities[key].data;
251
- const value = _isUndefined(key) ? key : getValueOrKey(nodes);
261
+ const value = _isUndefined(key) ? key : getValueOrKey(nodes, keyMaps);
252
262
  if (this.getProp('onChangeWithObject')) {
253
263
  this._adapter.notifyChangeWithObject(nodes, e);
254
264
  } else {
@@ -375,15 +385,17 @@ export default class TreeSelectFoundation extends BaseFoundation {
375
385
  removeTag(eventKey) {
376
386
  const {
377
387
  disableStrictly,
378
- checkRelation
388
+ checkRelation,
389
+ keyMaps
379
390
  } = this.getProps();
380
391
  const {
381
392
  keyEntities,
382
393
  disabledKeys,
383
394
  realCheckedKeys
384
395
  } = this.getStates();
385
- const item = keyEntities[eventKey] && keyEntities[eventKey].data.key === eventKey ? keyEntities[eventKey].data : this.getDataForKeyNotInKeyEntities(eventKey);
386
- if (item.disabled || disableStrictly && disabledKeys.has(eventKey)) {
396
+ const item = keyEntities[eventKey] && keyEntities[eventKey].key === eventKey ? keyEntities[eventKey].data : this.getDataForKeyNotInKeyEntities(eventKey);
397
+ const disabledName = _get(keyMaps, 'disabled', 'disabled');
398
+ if (item[disabledName] || disableStrictly && disabledKeys.has(eventKey)) {
387
399
  return;
388
400
  }
389
401
  if (checkRelation === 'unRelated') {
@@ -422,11 +434,14 @@ export default class TreeSelectFoundation extends BaseFoundation {
422
434
  keyEntities,
423
435
  treeData
424
436
  } = this.getStates();
437
+ const {
438
+ keyMaps
439
+ } = this.getProps();
425
440
  const newExpandedKeys = new Set(expandedKeys);
426
441
  const isExpandControlled = this._isExpandControlled();
427
442
  const expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
428
443
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
429
- const newFlattenNodes = flattenTreeData(treeData, newExpandedKeys);
444
+ const newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
430
445
  this._adapter.updateState({
431
446
  expandedKeys: isExpandControlled ? expandedKeys : newExpandedKeys,
432
447
  flattenNodes: isExpandControlled ? flattenNodes : newFlattenNodes,
@@ -450,8 +465,10 @@ export default class TreeSelectFoundation extends BaseFoundation {
450
465
  const {
451
466
  showFilteredOnly,
452
467
  filterTreeNode,
453
- treeNodeFilterProp
468
+ treeNodeFilterProp,
469
+ keyMaps
454
470
  } = this.getProps();
471
+ const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : _get(keyMaps, 'label', 'label');
455
472
  const newExpandedKeys = new Set(expandedKeys);
456
473
  let filteredOptsKeys = [];
457
474
  let expandedOptsKeys = [];
@@ -460,18 +477,18 @@ export default class TreeSelectFoundation extends BaseFoundation {
460
477
  if (!sugInput) {
461
478
  expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
462
479
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
463
- newFlattenNodes = flattenTreeData(treeData, newExpandedKeys);
480
+ newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
464
481
  } else {
465
482
  filteredOptsKeys = Object.values(keyEntities).filter(item => {
466
483
  const {
467
484
  data
468
485
  } = item;
469
- return filter(sugInput, data, filterTreeNode, treeNodeFilterProp);
486
+ return filter(sugInput, data, filterTreeNode, realFilterProp);
470
487
  }).map(item => item.key);
471
488
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
472
489
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
473
490
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
474
- newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), showFilteredOnly && filteredShownKeys);
491
+ newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
475
492
  }
476
493
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
477
494
  this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
@@ -605,7 +622,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
605
622
  return this.calcCheckedKeys(eventKey, targetStatus);
606
623
  }
607
624
  const nonDisabled = descendantKeys.filter(key => !disabledKeys.has(key));
608
- const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true), nonDisabled);
625
+ const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true, true), nonDisabled);
609
626
  return calcCheckedKeys(newCheckedKeys, keyEntities);
610
627
  }
611
628
  calcCheckedStatus(targetStatus, eventKey) {
@@ -630,7 +647,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
630
647
  const {
631
648
  treeData,
632
649
  filteredShownKeys,
633
- keyEntities
650
+ keyEntities,
651
+ keyMaps
634
652
  } = this.getStates();
635
653
  const showFilteredOnly = this._showFilteredOnly();
636
654
  // clone otherwise will be modified unexpectedly
@@ -654,7 +672,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
654
672
  this._adapter.cacheFlattenNodes(motionType === 'hide' && this._isAnimated());
655
673
  if (!this._isExpandControlled()) {
656
674
  // debugger;
657
- const flattenNodes = flattenTreeData(treeData, filteredExpandedKeys, showFilteredOnly && filteredShownKeys);
675
+ const flattenNodes = flattenTreeData(treeData, filteredExpandedKeys, keyMaps, showFilteredOnly && filteredShownKeys);
658
676
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, filteredExpandedKeys, keyEntities) : [];
659
677
  const newState = {
660
678
  filteredExpandedKeys,
@@ -672,7 +690,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
672
690
  handleNodeExpand(e, treeNode) {
673
691
  // debugger;
674
692
  const {
675
- loadData
693
+ loadData,
694
+ keyMaps
676
695
  } = this.getProps();
677
696
  const {
678
697
  inputValue,
@@ -709,7 +728,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
709
728
  this._adapter.cacheFlattenNodes(motionType === 'hide' && this._isAnimated());
710
729
  if (!isExpandControlled) {
711
730
  // debugger;
712
- const flattenNodes = flattenTreeData(treeData, expandedKeys);
731
+ const flattenNodes = flattenTreeData(treeData, expandedKeys, keyMaps);
713
732
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, expandedKeys, keyEntities) : [];
714
733
  const newState = {
715
734
  expandedKeys,
@@ -730,19 +749,21 @@ export default class TreeSelectFoundation extends BaseFoundation {
730
749
  getRenderTextInSingle() {
731
750
  const {
732
751
  renderSelectedItem: propRenderSelectedItem,
733
- treeNodeLabelProp
752
+ treeNodeLabelProp,
753
+ keyMaps
734
754
  } = this.getProps();
735
755
  const {
736
756
  selectedKeys,
737
757
  keyEntities
738
758
  } = this.getStates();
739
- const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : item => _get(item, treeNodeLabelProp, null);
759
+ const realLabelName = _get(keyMaps, 'label', treeNodeLabelProp);
760
+ const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : item => _get(item, realLabelName, null);
740
761
  let item;
741
762
  if (selectedKeys.length) {
742
763
  const key = selectedKeys[0];
743
- item = keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
764
+ item = keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
744
765
  }
745
- const renderText = item && treeNodeLabelProp in item ? renderSelectedItem(item) : null;
766
+ const renderText = item ? renderSelectedItem(item) : null;
746
767
  return renderText;
747
768
  }
748
769
  /**
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.46.2",
3
+ "version": "2.47.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build:lib": "node ./scripts/compileLib.js",
7
7
  "prepublishOnly": "npm run build:lib"
8
8
  },
9
9
  "dependencies": {
10
- "@douyinfe/semi-animation": "2.46.2",
10
+ "@douyinfe/semi-animation": "2.47.0",
11
11
  "async-validator": "^3.5.0",
12
12
  "classnames": "^2.2.6",
13
13
  "date-fns": "^2.29.3",
@@ -23,7 +23,7 @@
23
23
  "*.scss",
24
24
  "*.css"
25
25
  ],
26
- "gitHead": "15459d2c4d4676b50723442966990fb1f5414d89",
26
+ "gitHead": "6ec26559221487884e981fe44daa300af1a336f6",
27
27
  "devDependencies": {
28
28
  "@babel/plugin-transform-runtime": "^7.15.8",
29
29
  "@babel/preset-env": "^7.15.8",
@@ -511,8 +511,7 @@ class TableFoundation<RecordType> extends BaseFoundation<TableAdapter<RecordType
511
511
 
512
512
  if (!this._pagerIsControlled()) {
513
513
  const total = get(propPagination, 'total', dataSource.length);
514
- const pageSize = get(propPagination, 'pageSize', pagination.pageSize);
515
- const { currentPage } = pagination;
514
+ const { currentPage, pageSize } = pagination;
516
515
 
517
516
  const realTotalPage = Math.ceil(total / pageSize);
518
517