@douyinfe/semi-ui 2.46.0 → 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.
- package/dist/css/semi.css +75 -2
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +204 -122
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/_base/base.css +40 -0
- package/lib/cjs/button/Button.js +2 -1
- package/lib/cjs/collapse/item.d.ts +1 -0
- package/lib/cjs/collapse/item.js +1 -0
- package/lib/cjs/pagination/index.js +3 -1
- package/lib/cjs/popconfirm/index.d.ts +3 -0
- package/lib/cjs/popconfirm/index.js +6 -3
- package/lib/cjs/tree/index.d.ts +2 -1
- package/lib/cjs/tree/index.js +29 -19
- package/lib/cjs/tree/interface.d.ts +2 -1
- package/lib/cjs/tree/nodeList.js +1 -7
- package/lib/cjs/treeSelect/index.d.ts +3 -2
- package/lib/cjs/treeSelect/index.js +39 -27
- package/lib/es/_base/base.css +40 -0
- package/lib/es/button/Button.js +2 -1
- package/lib/es/collapse/item.d.ts +1 -0
- package/lib/es/collapse/item.js +1 -0
- package/lib/es/pagination/index.js +3 -1
- package/lib/es/popconfirm/index.d.ts +3 -0
- package/lib/es/popconfirm/index.js +6 -3
- package/lib/es/tree/index.d.ts +2 -1
- package/lib/es/tree/index.js +29 -19
- package/lib/es/tree/interface.d.ts +2 -1
- package/lib/es/tree/nodeList.js +1 -7
- package/lib/es/treeSelect/index.d.ts +3 -2
- package/lib/es/treeSelect/index.js +39 -27
- package/package.json +8 -8
package/lib/es/collapse/item.js
CHANGED
|
@@ -111,6 +111,7 @@ export default class CollapsePanel extends PureComponent {
|
|
|
111
111
|
isOpen: active,
|
|
112
112
|
keepDOM: keepDOM,
|
|
113
113
|
motion: motion,
|
|
114
|
+
onMotionEnd: this.props.onMotionEnd,
|
|
114
115
|
reCalcKey: reCalcKey
|
|
115
116
|
}, /*#__PURE__*/React.createElement("div", {
|
|
116
117
|
className: contentCls,
|
|
@@ -202,7 +202,8 @@ export default class Pagination extends BaseComponent {
|
|
|
202
202
|
const {
|
|
203
203
|
showSizeChanger,
|
|
204
204
|
popoverPosition = defaultPopoverPosition,
|
|
205
|
-
disabled
|
|
205
|
+
disabled,
|
|
206
|
+
popoverZIndex
|
|
206
207
|
} = this.props;
|
|
207
208
|
const {
|
|
208
209
|
pageSize
|
|
@@ -228,6 +229,7 @@ export default class Pagination extends BaseComponent {
|
|
|
228
229
|
key: pageSize,
|
|
229
230
|
position: popoverPosition || 'bottomRight',
|
|
230
231
|
clickToHide: true,
|
|
232
|
+
zIndex: popoverZIndex,
|
|
231
233
|
dropdownClassName: `${prefixCls}-select-dropdown`
|
|
232
234
|
}, options));
|
|
233
235
|
}
|
|
@@ -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
|
package/lib/es/tree/index.d.ts
CHANGED
|
@@ -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.
|
|
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>>;
|
package/lib/es/tree/index.js
CHANGED
|
@@ -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
|
-
} =
|
|
150
|
+
} = treeNode;
|
|
151
151
|
const treeNodeProps = this.foundation.getTreeNodeProps(key);
|
|
152
152
|
if (!treeNodeProps) {
|
|
153
153
|
return null;
|
|
154
154
|
}
|
|
155
|
-
|
|
156
|
-
|
|
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
|
|
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;
|
package/lib/es/tree/nodeList.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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,
|
|
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].
|
|
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
|
|
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].
|
|
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,
|
|
486
|
+
content: _get(selectedItem, realLabelName, null)
|
|
482
487
|
});
|
|
483
488
|
if (_isFunction(renderSelectedItem)) {
|
|
484
489
|
const {
|
|
485
490
|
content,
|
|
486
491
|
isRenderInTag
|
|
487
|
-
} = 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
|
-
} =
|
|
694
|
+
} = treeNode;
|
|
692
695
|
const treeNodeProps = this.foundation.getTreeNodeProps(key);
|
|
693
696
|
if (!treeNodeProps) {
|
|
694
697
|
return null;
|
|
695
698
|
}
|
|
696
|
-
|
|
697
|
-
|
|
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
|
|
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.
|
|
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.
|
|
24
|
-
"@douyinfe/semi-animation-react": "2.
|
|
25
|
-
"@douyinfe/semi-foundation": "2.
|
|
26
|
-
"@douyinfe/semi-icons": "2.
|
|
27
|
-
"@douyinfe/semi-illustrations": "2.
|
|
28
|
-
"@douyinfe/semi-theme-default": "2.
|
|
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": "
|
|
78
|
+
"gitHead": "201c3696de1cfe4686903a3a50c68ca07272742a",
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
81
81
|
"@babel/plugin-transform-runtime": "^7.15.8",
|