@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.
- package/datePicker/inputFoundation.ts +7 -5
- package/lib/cjs/cascader/foundation.d.ts +1 -4
- package/lib/cjs/datePicker/inputFoundation.js +17 -8
- package/lib/cjs/table/foundation.js +2 -2
- package/lib/cjs/tree/foundation.d.ts +2 -1
- package/lib/cjs/tree/foundation.js +17 -8
- package/lib/cjs/tree/treeUtil.d.ts +15 -6
- package/lib/cjs/tree/treeUtil.js +39 -20
- package/lib/cjs/treeSelect/foundation.d.ts +0 -1
- package/lib/cjs/treeSelect/foundation.js +47 -26
- package/lib/es/cascader/foundation.d.ts +1 -4
- package/lib/es/datePicker/inputFoundation.js +17 -8
- package/lib/es/table/foundation.js +2 -2
- package/lib/es/tree/foundation.d.ts +2 -1
- package/lib/es/tree/foundation.js +17 -8
- package/lib/es/tree/treeUtil.d.ts +15 -6
- package/lib/es/tree/treeUtil.js +39 -20
- package/lib/es/treeSelect/foundation.d.ts +0 -1
- package/lib/es/treeSelect/foundation.js +47 -26
- package/package.json +3 -3
- package/table/foundation.ts +1 -2
- package/tree/foundation.ts +14 -7
- package/tree/treeUtil.ts +47 -18
- package/treeSelect/foundation.ts +35 -26
|
@@ -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
|
-
|
|
116
|
-
|
|
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
|
|
122
|
-
insetInputValue:
|
|
130
|
+
const finalInsetInputStr = this.concatInsetInputValue({
|
|
131
|
+
insetInputValue: filledTimeInsetInputValue
|
|
123
132
|
});
|
|
124
133
|
this._adapter.notifyInsetInputChange({
|
|
125
|
-
insetInputValue:
|
|
134
|
+
insetInputValue: filledTimeInsetInputValue,
|
|
126
135
|
format: insetFormatToken,
|
|
127
|
-
insetInputStr:
|
|
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
|
|
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,
|
|
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;
|
package/lib/es/tree/treeUtil.js
CHANGED
|
@@ -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 >
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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,
|
|
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,
|
|
582
|
+
return data.map(item => _get(item, valueName, item[keyName]));
|
|
565
583
|
}
|
|
566
|
-
return _get(data,
|
|
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
|
|
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
|
|
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
|
-
|
|
110
|
-
[
|
|
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].
|
|
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].
|
|
386
|
-
|
|
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,
|
|
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
|
|
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].
|
|
764
|
+
item = keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
|
|
744
765
|
}
|
|
745
|
-
const renderText = item
|
|
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.
|
|
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.
|
|
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": "
|
|
26
|
+
"gitHead": "6ec26559221487884e981fe44daa300af1a336f6",
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
29
29
|
"@babel/preset-env": "^7.15.8",
|
package/table/foundation.ts
CHANGED
|
@@ -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
|
|
515
|
-
const { currentPage } = pagination;
|
|
514
|
+
const { currentPage, pageSize } = pagination;
|
|
516
515
|
|
|
517
516
|
const realTotalPage = Math.ceil(total / pageSize);
|
|
518
517
|
|