@douyinfe/semi-ui 2.48.0-alpha.0 → 2.48.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/umd/semi-ui.js +99 -140
- 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/avatar/index.d.ts +4 -0
- package/lib/cjs/avatar/index.js +27 -5
- package/lib/cjs/avatar/interface.d.ts +1 -0
- package/lib/cjs/slider/index.js +15 -2
- package/lib/cjs/treeSelect/index.d.ts +1 -1
- package/lib/cjs/treeSelect/index.js +29 -117
- package/lib/es/avatar/index.d.ts +4 -0
- package/lib/es/avatar/index.js +27 -5
- package/lib/es/avatar/interface.d.ts +1 -0
- package/lib/es/slider/index.js +15 -2
- package/lib/es/treeSelect/index.d.ts +1 -1
- package/lib/es/treeSelect/index.js +30 -118
- package/package.json +8 -8
|
@@ -10,12 +10,14 @@ export interface AvatarState {
|
|
|
10
10
|
isImgExist: boolean;
|
|
11
11
|
hoverContent: React.ReactNode;
|
|
12
12
|
focusVisible: boolean;
|
|
13
|
+
scale: number;
|
|
13
14
|
}
|
|
14
15
|
export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
15
16
|
static defaultProps: {
|
|
16
17
|
size: string;
|
|
17
18
|
color: string;
|
|
18
19
|
shape: string;
|
|
20
|
+
gap: number;
|
|
19
21
|
onClick: typeof noop;
|
|
20
22
|
onMouseEnter: typeof noop;
|
|
21
23
|
onMouseLeave: typeof noop;
|
|
@@ -29,6 +31,7 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
|
29
31
|
hoverMask: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
30
32
|
className: PropTypes.Requireable<string>;
|
|
31
33
|
style: PropTypes.Requireable<object>;
|
|
34
|
+
gap: PropTypes.Requireable<number>;
|
|
32
35
|
imgAttr: PropTypes.Requireable<object>;
|
|
33
36
|
src: PropTypes.Requireable<string>;
|
|
34
37
|
srcSet: PropTypes.Requireable<string>;
|
|
@@ -39,6 +42,7 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
|
39
42
|
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
40
43
|
};
|
|
41
44
|
foundation: AvatarFoundation;
|
|
45
|
+
avatarRef: React.RefObject<HTMLElement | null>;
|
|
42
46
|
constructor(props: AvatarProps);
|
|
43
47
|
get adapter(): AvatarAdapter<AvatarProps, AvatarState>;
|
|
44
48
|
componentDidMount(): void;
|
package/lib/cjs/avatar/index.js
CHANGED
|
@@ -95,8 +95,12 @@ class Avatar extends _baseComponent.default {
|
|
|
95
95
|
})
|
|
96
96
|
};
|
|
97
97
|
const finalProps = clickable ? Object.assign(Object.assign({}, props), a11yFocusProps) : props;
|
|
98
|
+
const stringStyle = {
|
|
99
|
+
transform: `scale(${this.state.scale})`
|
|
100
|
+
};
|
|
98
101
|
content = /*#__PURE__*/_react.default.createElement("span", {
|
|
99
|
-
className: `${prefixCls}-content
|
|
102
|
+
className: `${prefixCls}-content`,
|
|
103
|
+
style: stringStyle
|
|
100
104
|
}, /*#__PURE__*/_react.default.createElement("span", Object.assign({}, finalProps, {
|
|
101
105
|
"x-semi-prop": "children"
|
|
102
106
|
}), children));
|
|
@@ -106,13 +110,15 @@ class Avatar extends _baseComponent.default {
|
|
|
106
110
|
this.state = {
|
|
107
111
|
isImgExist: true,
|
|
108
112
|
hoverContent: '',
|
|
109
|
-
focusVisible: false
|
|
113
|
+
focusVisible: false,
|
|
114
|
+
scale: 1
|
|
110
115
|
};
|
|
111
116
|
this.onEnter = this.onEnter.bind(this);
|
|
112
117
|
this.onLeave = this.onLeave.bind(this);
|
|
113
118
|
this.handleError = this.handleError.bind(this);
|
|
114
119
|
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
115
120
|
this.getContent = this.getContent.bind(this);
|
|
121
|
+
this.avatarRef = /*#__PURE__*/_react.default.createRef();
|
|
116
122
|
}
|
|
117
123
|
get adapter() {
|
|
118
124
|
return Object.assign(Object.assign({}, super.adapter), {
|
|
@@ -149,6 +155,15 @@ class Avatar extends _baseComponent.default {
|
|
|
149
155
|
this.setState({
|
|
150
156
|
focusVisible
|
|
151
157
|
});
|
|
158
|
+
},
|
|
159
|
+
setScale: scale => {
|
|
160
|
+
this.setState({
|
|
161
|
+
scale
|
|
162
|
+
});
|
|
163
|
+
},
|
|
164
|
+
getAvatarNode: () => {
|
|
165
|
+
var _a;
|
|
166
|
+
return (_a = this.avatarRef) === null || _a === void 0 ? void 0 : _a.current;
|
|
152
167
|
}
|
|
153
168
|
});
|
|
154
169
|
}
|
|
@@ -176,6 +191,9 @@ class Avatar extends _baseComponent.default {
|
|
|
176
191
|
});
|
|
177
192
|
};
|
|
178
193
|
}
|
|
194
|
+
if (typeof this.props.children === "string" && this.props.children !== prevProps.children) {
|
|
195
|
+
this.foundation.changeScale();
|
|
196
|
+
}
|
|
179
197
|
}
|
|
180
198
|
componentWillUnmount() {
|
|
181
199
|
this.foundation.destroy();
|
|
@@ -219,9 +237,10 @@ class Avatar extends _baseComponent.default {
|
|
|
219
237
|
src,
|
|
220
238
|
srcSet,
|
|
221
239
|
style,
|
|
222
|
-
alt
|
|
240
|
+
alt,
|
|
241
|
+
gap
|
|
223
242
|
} = _a,
|
|
224
|
-
others = __rest(_a, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt"]);
|
|
243
|
+
others = __rest(_a, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap"]);
|
|
225
244
|
const {
|
|
226
245
|
isImgExist,
|
|
227
246
|
hoverContent,
|
|
@@ -245,7 +264,8 @@ class Avatar extends _baseComponent.default {
|
|
|
245
264
|
onClick: onClick,
|
|
246
265
|
onMouseEnter: this.onEnter,
|
|
247
266
|
onMouseLeave: this.onLeave,
|
|
248
|
-
role: 'listitem'
|
|
267
|
+
role: 'listitem',
|
|
268
|
+
ref: this.avatarRef
|
|
249
269
|
}), this.getContent(), hoverRender);
|
|
250
270
|
}
|
|
251
271
|
}
|
|
@@ -254,6 +274,7 @@ Avatar.defaultProps = {
|
|
|
254
274
|
size: 'medium',
|
|
255
275
|
color: 'grey',
|
|
256
276
|
shape: 'circle',
|
|
277
|
+
gap: 3,
|
|
257
278
|
onClick: _function.noop,
|
|
258
279
|
onMouseEnter: _function.noop,
|
|
259
280
|
onMouseLeave: _function.noop
|
|
@@ -266,6 +287,7 @@ Avatar.propTypes = {
|
|
|
266
287
|
hoverMask: _propTypes.default.node,
|
|
267
288
|
className: _propTypes.default.string,
|
|
268
289
|
style: _propTypes.default.object,
|
|
290
|
+
gap: _propTypes.default.number,
|
|
269
291
|
imgAttr: _propTypes.default.object,
|
|
270
292
|
src: _propTypes.default.string,
|
|
271
293
|
srcSet: _propTypes.default.string,
|
package/lib/cjs/slider/index.js
CHANGED
|
@@ -82,6 +82,7 @@ class Slider extends _baseComponent.default {
|
|
|
82
82
|
});
|
|
83
83
|
const handleContents = !range ? /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
84
84
|
content: tipChildren.min,
|
|
85
|
+
showArrow: this.props.showArrow,
|
|
85
86
|
position: "top",
|
|
86
87
|
trigger: "custom",
|
|
87
88
|
rePosKey: minPercent,
|
|
@@ -280,7 +281,7 @@ class Slider extends _baseComponent.default {
|
|
|
280
281
|
[`${prefixCls}-dot-active`]: this.foundation.isMarkActive(Number(mark)) === 'active'
|
|
281
282
|
});
|
|
282
283
|
const markPercent = (Number(mark) - min) / (max - min);
|
|
283
|
-
|
|
284
|
+
const dotDOM =
|
|
284
285
|
/*#__PURE__*/
|
|
285
286
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
286
287
|
_react.default.createElement("span", {
|
|
@@ -290,11 +291,17 @@ class Slider extends _baseComponent.default {
|
|
|
290
291
|
style: {
|
|
291
292
|
[stylePos]: `calc(${markPercent * 100}% - 2px)`
|
|
292
293
|
}
|
|
293
|
-
})
|
|
294
|
+
});
|
|
295
|
+
return activeResult ? this.props.tooltipOnMark ? /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
296
|
+
content: marks[mark]
|
|
297
|
+
}, dotDOM) : dotDOM : null;
|
|
294
298
|
})) : null;
|
|
295
299
|
return labelContent;
|
|
296
300
|
};
|
|
297
301
|
this.renderLabel = () => {
|
|
302
|
+
if (!this.props.showMarkLabel) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
298
305
|
const {
|
|
299
306
|
min,
|
|
300
307
|
max,
|
|
@@ -624,6 +631,7 @@ Slider.propTypes = {
|
|
|
624
631
|
// allowClear: PropTypes.bool,
|
|
625
632
|
defaultValue: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.array]),
|
|
626
633
|
disabled: _propTypes.default.bool,
|
|
634
|
+
showMarkLabel: _propTypes.default.bool,
|
|
627
635
|
included: _propTypes.default.bool,
|
|
628
636
|
marks: _propTypes.default.object,
|
|
629
637
|
max: _propTypes.default.number,
|
|
@@ -636,7 +644,9 @@ Slider.propTypes = {
|
|
|
636
644
|
onAfterChange: _propTypes.default.func,
|
|
637
645
|
onChange: _propTypes.default.func,
|
|
638
646
|
onMouseUp: _propTypes.default.func,
|
|
647
|
+
tooltipOnMark: _propTypes.default.bool,
|
|
639
648
|
tooltipVisible: _propTypes.default.bool,
|
|
649
|
+
showArrow: _propTypes.default.bool,
|
|
640
650
|
style: _propTypes.default.object,
|
|
641
651
|
className: _propTypes.default.string,
|
|
642
652
|
showBoundary: _propTypes.default.bool,
|
|
@@ -647,10 +657,13 @@ Slider.propTypes = {
|
|
|
647
657
|
Slider.defaultProps = {
|
|
648
658
|
// allowClear: false,
|
|
649
659
|
disabled: false,
|
|
660
|
+
showMarkLabel: true,
|
|
661
|
+
tooltipOnMark: false,
|
|
650
662
|
included: true,
|
|
651
663
|
max: 100,
|
|
652
664
|
min: 0,
|
|
653
665
|
range: false,
|
|
666
|
+
showArrow: true,
|
|
654
667
|
step: 1,
|
|
655
668
|
tipFormatter: value => value,
|
|
656
669
|
vertical: false,
|
|
@@ -190,6 +190,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
190
190
|
triggerRef: React.RefObject<HTMLDivElement>;
|
|
191
191
|
optionsRef: React.RefObject<any>;
|
|
192
192
|
clickOutsideHandler: any;
|
|
193
|
+
_flattenNodes: TreeState['flattenNodes'];
|
|
193
194
|
onNodeClick: any;
|
|
194
195
|
onNodeDoubleClick: any;
|
|
195
196
|
onMotionEnd: any;
|
|
@@ -246,7 +247,6 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
246
247
|
};
|
|
247
248
|
getTreeNodeKey: (treeNode: TreeNodeData) => string;
|
|
248
249
|
handlePopoverClose: (isVisible: any) => void;
|
|
249
|
-
afterClose: () => void;
|
|
250
250
|
renderTreeNode: (treeNode: FlattenNode, ind: number, style: React.CSSProperties) => JSX.Element;
|
|
251
251
|
itemKey: (index: number, data: Record<string, any>) => any;
|
|
252
252
|
renderNodeList: () => JSX.Element;
|
|
@@ -689,27 +689,13 @@ class TreeSelect extends _baseComponent.default {
|
|
|
689
689
|
searchAutoFocus,
|
|
690
690
|
searchPosition
|
|
691
691
|
} = this.props;
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
if (isVisible === false && filterTreeNode) {
|
|
695
|
-
this.foundation.clearInputValue();
|
|
692
|
+
if (isVisible === false && Boolean(filterTreeNode)) {
|
|
693
|
+
this.foundation.clearInput();
|
|
696
694
|
}
|
|
697
695
|
if (filterTreeNode && searchPosition === _constants.strings.SEARCH_POSITION_DROPDOWN && isVisible && searchAutoFocus) {
|
|
698
696
|
this.foundation.focusInput(true);
|
|
699
697
|
}
|
|
700
698
|
};
|
|
701
|
-
this.afterClose = () => {
|
|
702
|
-
// flattenNode 的变化将导致弹出层面板中的选项数目变化
|
|
703
|
-
// 在弹层完全收起之后,再通过 clearInput 重新计算 state 中的 expandedKey, flattenNode
|
|
704
|
-
// 防止在弹出层未收起时弹层面板中选项数目变化导致视觉上出现弹层闪动问题
|
|
705
|
-
// Changes to flattenNode will cause the number of options in the popup panel to change
|
|
706
|
-
// After the pop-up layer is completely closed, recalculate the expandedKey and flattenNode in the state through clearInput.
|
|
707
|
-
// Prevent the pop-up layer from flickering visually due to changes in the number of options in the pop-up panel when the pop-up layer is not collapsed.
|
|
708
|
-
const {
|
|
709
|
-
filterTreeNode
|
|
710
|
-
} = this.props;
|
|
711
|
-
filterTreeNode && this.foundation.clearInput();
|
|
712
|
-
};
|
|
713
699
|
this.renderTreeNode = (treeNode, ind, style) => {
|
|
714
700
|
const {
|
|
715
701
|
data,
|
|
@@ -742,7 +728,6 @@ class TreeSelect extends _baseComponent.default {
|
|
|
742
728
|
this.renderNodeList = () => {
|
|
743
729
|
const {
|
|
744
730
|
flattenNodes,
|
|
745
|
-
cachedFlattenNodes,
|
|
746
731
|
motionKeys,
|
|
747
732
|
motionType,
|
|
748
733
|
filteredKeys
|
|
@@ -758,7 +743,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
758
743
|
if (!virtualize || (0, _isEmpty2.default)(virtualize)) {
|
|
759
744
|
return /*#__PURE__*/_react.default.createElement(_nodeList.default, {
|
|
760
745
|
flattenNodes: flattenNodes,
|
|
761
|
-
flattenList:
|
|
746
|
+
flattenList: this._flattenNodes,
|
|
762
747
|
motionKeys: motionExpand ? motionKeys : new Set([]),
|
|
763
748
|
motionType: motionType,
|
|
764
749
|
// When motionKeys is empty, but filteredKeys is not empty (that is, the search hits), this situation should be distinguished from ordinary motionKeys
|
|
@@ -877,7 +862,6 @@ class TreeSelect extends _baseComponent.default {
|
|
|
877
862
|
keyEntities: {},
|
|
878
863
|
treeData: [],
|
|
879
864
|
flattenNodes: [],
|
|
880
|
-
cachedFlattenNodes: undefined,
|
|
881
865
|
selectedKeys: [],
|
|
882
866
|
checkedKeys: new Set(),
|
|
883
867
|
halfCheckedKeys: new Set(),
|
|
@@ -907,7 +891,6 @@ class TreeSelect extends _baseComponent.default {
|
|
|
907
891
|
};
|
|
908
892
|
}
|
|
909
893
|
static getDerivedStateFromProps(props, prevState) {
|
|
910
|
-
var _a;
|
|
911
894
|
const {
|
|
912
895
|
prevProps,
|
|
913
896
|
rePosKey
|
|
@@ -925,8 +908,6 @@ class TreeSelect extends _baseComponent.default {
|
|
|
925
908
|
};
|
|
926
909
|
const needUpdateTreeData = needUpdate('treeData');
|
|
927
910
|
const needUpdateExpandedKeys = needUpdate('expandedKeys');
|
|
928
|
-
const isExpandControlled = ('expandedKeys' in props);
|
|
929
|
-
const isSearching = Boolean(props.filterTreeNode && prevState.inputValue && prevState.inputValue.length);
|
|
930
911
|
// TreeNode
|
|
931
912
|
if (needUpdateTreeData) {
|
|
932
913
|
treeData = props.treeData;
|
|
@@ -945,97 +926,31 @@ class TreeSelect extends _baseComponent.default {
|
|
|
945
926
|
}
|
|
946
927
|
}
|
|
947
928
|
const expandAllWhenDataChange = needUpdateTreeData && props.expandAll;
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
newState.motionType = motionType;
|
|
960
|
-
if (motionType === 'hide') {
|
|
961
|
-
// cache flatten nodes: expandedKeys changed may not be triggered by interaction
|
|
962
|
-
newState.cachedFlattenNodes = (0, _treeUtil2.cloneDeep)(prevState.flattenNodes);
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
} else if (!prevProps && (props.defaultExpandAll || props.expandAll) || expandAllWhenDataChange) {
|
|
966
|
-
newState.expandedKeys = new Set(Object.keys(keyEntities));
|
|
967
|
-
} else if (!prevProps && props.defaultExpandedKeys) {
|
|
968
|
-
newState.expandedKeys = (0, _treeUtil.calcExpandedKeys)(props.defaultExpandedKeys, keyEntities);
|
|
969
|
-
} else if (!prevProps && props.defaultValue) {
|
|
970
|
-
newState.expandedKeys = (0, _treeUtil.calcExpandedKeysForValues)((0, _treeUtil.normalizeValue)(props.defaultValue, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
|
|
971
|
-
} else if (!prevProps && props.value) {
|
|
972
|
-
newState.expandedKeys = (0, _treeUtil.calcExpandedKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
|
|
973
|
-
} else if (!isExpandControlled && needUpdateTreeData && props.value) {
|
|
974
|
-
// 当 treeData 已经设置具体的值,并且设置了 props.loadData ,则认为 treeData 的更新是因为 loadData 导致的
|
|
975
|
-
// 如果是因为 loadData 导致 treeData改变, 此时在这里重新计算 key 会导致为未选中的展开项目被收起
|
|
976
|
-
// 所以此时不需要重新计算 expandedKeys,因为在点击展开按钮时候已经把被展开的项添加到 expandedKeys 中
|
|
977
|
-
// When treeData has a specific value and props.loadData is set, it is considered that the update of treeData is caused by loadData
|
|
978
|
-
// If the treeData is changed because of loadData, recalculating the key here will cause the unselected expanded items to be collapsed
|
|
979
|
-
// So there is no need to recalculate expandedKeys at this time, because the expanded item has been added to expandedKeys when the expand button is clicked
|
|
980
|
-
if (!(prevState.treeData && ((_a = prevState.treeData) === null || _a === void 0 ? void 0 : _a.length) > 0 && props.loadData)) {
|
|
981
|
-
newState.expandedKeys = (0, _treeUtil.calcExpandedKeysForValues)(props.value, keyEntities, props.multiple, valueEntities);
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
if (!newState.expandedKeys) {
|
|
985
|
-
delete newState.expandedKeys;
|
|
986
|
-
}
|
|
987
|
-
if (treeData || newState.expandedKeys) {
|
|
988
|
-
const flattenNodes = (0, _treeUtil.flattenTreeData)(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, keyMaps);
|
|
989
|
-
newState.flattenNodes = flattenNodes;
|
|
990
|
-
}
|
|
991
|
-
} else {
|
|
992
|
-
let filteredState;
|
|
993
|
-
// treeData changed while searching
|
|
994
|
-
if (treeData) {
|
|
995
|
-
// Get filter data
|
|
996
|
-
filteredState = (0, _treeUtil.filterTreeData)({
|
|
997
|
-
treeData,
|
|
998
|
-
inputValue: prevState.inputValue,
|
|
999
|
-
filterTreeNode: props.filterTreeNode,
|
|
1000
|
-
filterProps: props.treeNodeFilterProp,
|
|
1001
|
-
showFilteredOnly: props.showFilteredOnly,
|
|
1002
|
-
keyEntities: newState.keyEntities,
|
|
1003
|
-
prevExpandedKeys: [...prevState.filteredExpandedKeys],
|
|
1004
|
-
keyMaps: keyMaps
|
|
1005
|
-
});
|
|
1006
|
-
newState.flattenNodes = filteredState.flattenNodes;
|
|
1007
|
-
newState.motionKeys = new Set([]);
|
|
1008
|
-
newState.filteredKeys = filteredState.filteredKeys;
|
|
1009
|
-
newState.filteredShownKeys = filteredState.filteredShownKeys;
|
|
1010
|
-
newState.filteredExpandedKeys = filteredState.filteredExpandedKeys;
|
|
1011
|
-
}
|
|
1012
|
-
// expandedKeys changed while searching
|
|
1013
|
-
if (props.expandedKeys) {
|
|
1014
|
-
newState.filteredExpandedKeys = (0, _treeUtil.calcExpandedKeys)(props.expandedKeys, keyEntities, props.autoExpandParent || !prevProps);
|
|
1015
|
-
if (prevProps && props.motion) {
|
|
1016
|
-
const prevKeys = prevState ? prevState.filteredExpandedKeys : new Set([]);
|
|
1017
|
-
// only show animation when treeData does not change
|
|
1018
|
-
if (!treeData) {
|
|
1019
|
-
const motionResult = (0, _treeUtil.calcMotionKeys)(prevKeys, newState.filteredExpandedKeys, keyEntities);
|
|
1020
|
-
let {
|
|
1021
|
-
motionKeys
|
|
1022
|
-
} = motionResult;
|
|
1023
|
-
const {
|
|
1024
|
-
motionType
|
|
1025
|
-
} = motionResult;
|
|
1026
|
-
if (props.showFilteredOnly) {
|
|
1027
|
-
motionKeys = motionKeys.filter(key => prevState.filteredShownKeys.has(key));
|
|
1028
|
-
}
|
|
1029
|
-
if (motionType === 'hide') {
|
|
1030
|
-
// cache flatten nodes: expandedKeys changed may not be triggered by interaction
|
|
1031
|
-
newState.cachedFlattenNodes = (0, _treeUtil2.cloneDeep)(prevState.flattenNodes);
|
|
1032
|
-
}
|
|
1033
|
-
newState.motionKeys = new Set(motionKeys);
|
|
1034
|
-
newState.motionType = motionType;
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
newState.flattenNodes = (0, _treeUtil.flattenTreeData)(treeData || prevState.treeData, newState.filteredExpandedKeys || prevState.filteredExpandedKeys, keyMaps, props.showFilteredOnly && prevState.filteredShownKeys);
|
|
929
|
+
// expandedKeys
|
|
930
|
+
if (needUpdateExpandedKeys || prevProps && needUpdate('autoExpandParent')) {
|
|
931
|
+
newState.expandedKeys = (0, _treeUtil.calcExpandedKeys)(props.expandedKeys, keyEntities, props.autoExpandParent || !prevProps);
|
|
932
|
+
// only show animation when treeData does not change
|
|
933
|
+
if (prevProps && props.motion && !treeData) {
|
|
934
|
+
const {
|
|
935
|
+
motionKeys,
|
|
936
|
+
motionType
|
|
937
|
+
} = (0, _treeUtil.calcMotionKeys)(prevState.expandedKeys, newState.expandedKeys, keyEntities);
|
|
938
|
+
newState.motionKeys = new Set(motionKeys);
|
|
939
|
+
newState.motionType = motionType;
|
|
1038
940
|
}
|
|
941
|
+
} else if (!prevProps && (props.defaultExpandAll || props.expandAll) || expandAllWhenDataChange) {
|
|
942
|
+
newState.expandedKeys = new Set(Object.keys(keyEntities));
|
|
943
|
+
} else if (!prevProps && props.defaultExpandedKeys) {
|
|
944
|
+
newState.expandedKeys = (0, _treeUtil.calcExpandedKeys)(props.defaultExpandedKeys, keyEntities);
|
|
945
|
+
} else if (!prevProps && props.defaultValue) {
|
|
946
|
+
newState.expandedKeys = (0, _treeUtil.calcExpandedKeysForValues)((0, _treeUtil.normalizeValue)(props.defaultValue, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
|
|
947
|
+
} else if (!prevProps && props.value) {
|
|
948
|
+
newState.expandedKeys = (0, _treeUtil.calcExpandedKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject, keyMaps), keyEntities, props.multiple, valueEntities);
|
|
949
|
+
}
|
|
950
|
+
// flattenNodes
|
|
951
|
+
if (treeData || needUpdateExpandedKeys) {
|
|
952
|
+
const flattenNodes = (0, _treeUtil.flattenTreeData)(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, keyMaps);
|
|
953
|
+
newState.flattenNodes = flattenNodes;
|
|
1039
954
|
}
|
|
1040
955
|
// selectedKeys: single mode controlled
|
|
1041
956
|
const isMultiple = props.multiple;
|
|
@@ -1142,9 +1057,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
1142
1057
|
this.props.onSearch && this.props.onSearch(input, filteredExpandedKeys);
|
|
1143
1058
|
},
|
|
1144
1059
|
cacheFlattenNodes: bool => {
|
|
1145
|
-
this.
|
|
1146
|
-
cachedFlattenNodes: bool ? (0, _treeUtil2.cloneDeep)(this.state.flattenNodes) : undefined
|
|
1147
|
-
});
|
|
1060
|
+
this._flattenNodes = bool ? (0, _treeUtil2.cloneDeep)(this.state.flattenNodes) : null;
|
|
1148
1061
|
},
|
|
1149
1062
|
notifyLoad: (newLoadedKeys, data) => {
|
|
1150
1063
|
const {
|
|
@@ -1289,8 +1202,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
1289
1202
|
autoAdjustOverflow: autoAdjustOverflow,
|
|
1290
1203
|
mouseLeaveDelay: mouseLeaveDelay,
|
|
1291
1204
|
mouseEnterDelay: mouseEnterDelay,
|
|
1292
|
-
onVisibleChange: this.handlePopoverClose
|
|
1293
|
-
afterClose: this.afterClose
|
|
1205
|
+
onVisibleChange: this.handlePopoverClose
|
|
1294
1206
|
}, selection);
|
|
1295
1207
|
}
|
|
1296
1208
|
}
|
package/lib/es/avatar/index.d.ts
CHANGED
|
@@ -10,12 +10,14 @@ export interface AvatarState {
|
|
|
10
10
|
isImgExist: boolean;
|
|
11
11
|
hoverContent: React.ReactNode;
|
|
12
12
|
focusVisible: boolean;
|
|
13
|
+
scale: number;
|
|
13
14
|
}
|
|
14
15
|
export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
15
16
|
static defaultProps: {
|
|
16
17
|
size: string;
|
|
17
18
|
color: string;
|
|
18
19
|
shape: string;
|
|
20
|
+
gap: number;
|
|
19
21
|
onClick: typeof noop;
|
|
20
22
|
onMouseEnter: typeof noop;
|
|
21
23
|
onMouseLeave: typeof noop;
|
|
@@ -29,6 +31,7 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
|
29
31
|
hoverMask: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
30
32
|
className: PropTypes.Requireable<string>;
|
|
31
33
|
style: PropTypes.Requireable<object>;
|
|
34
|
+
gap: PropTypes.Requireable<number>;
|
|
32
35
|
imgAttr: PropTypes.Requireable<object>;
|
|
33
36
|
src: PropTypes.Requireable<string>;
|
|
34
37
|
srcSet: PropTypes.Requireable<string>;
|
|
@@ -39,6 +42,7 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
|
|
|
39
42
|
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
40
43
|
};
|
|
41
44
|
foundation: AvatarFoundation;
|
|
45
|
+
avatarRef: React.RefObject<HTMLElement | null>;
|
|
42
46
|
constructor(props: AvatarProps);
|
|
43
47
|
get adapter(): AvatarAdapter<AvatarProps, AvatarState>;
|
|
44
48
|
componentDidMount(): void;
|
package/lib/es/avatar/index.js
CHANGED
|
@@ -76,8 +76,12 @@ export default class Avatar extends BaseComponent {
|
|
|
76
76
|
})
|
|
77
77
|
};
|
|
78
78
|
const finalProps = clickable ? Object.assign(Object.assign({}, props), a11yFocusProps) : props;
|
|
79
|
+
const stringStyle = {
|
|
80
|
+
transform: `scale(${this.state.scale})`
|
|
81
|
+
};
|
|
79
82
|
content = /*#__PURE__*/React.createElement("span", {
|
|
80
|
-
className: `${prefixCls}-content
|
|
83
|
+
className: `${prefixCls}-content`,
|
|
84
|
+
style: stringStyle
|
|
81
85
|
}, /*#__PURE__*/React.createElement("span", Object.assign({}, finalProps, {
|
|
82
86
|
"x-semi-prop": "children"
|
|
83
87
|
}), children));
|
|
@@ -87,13 +91,15 @@ export default class Avatar extends BaseComponent {
|
|
|
87
91
|
this.state = {
|
|
88
92
|
isImgExist: true,
|
|
89
93
|
hoverContent: '',
|
|
90
|
-
focusVisible: false
|
|
94
|
+
focusVisible: false,
|
|
95
|
+
scale: 1
|
|
91
96
|
};
|
|
92
97
|
this.onEnter = this.onEnter.bind(this);
|
|
93
98
|
this.onLeave = this.onLeave.bind(this);
|
|
94
99
|
this.handleError = this.handleError.bind(this);
|
|
95
100
|
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
96
101
|
this.getContent = this.getContent.bind(this);
|
|
102
|
+
this.avatarRef = /*#__PURE__*/React.createRef();
|
|
97
103
|
}
|
|
98
104
|
get adapter() {
|
|
99
105
|
return Object.assign(Object.assign({}, super.adapter), {
|
|
@@ -130,6 +136,15 @@ export default class Avatar extends BaseComponent {
|
|
|
130
136
|
this.setState({
|
|
131
137
|
focusVisible
|
|
132
138
|
});
|
|
139
|
+
},
|
|
140
|
+
setScale: scale => {
|
|
141
|
+
this.setState({
|
|
142
|
+
scale
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
getAvatarNode: () => {
|
|
146
|
+
var _a;
|
|
147
|
+
return (_a = this.avatarRef) === null || _a === void 0 ? void 0 : _a.current;
|
|
133
148
|
}
|
|
134
149
|
});
|
|
135
150
|
}
|
|
@@ -157,6 +172,9 @@ export default class Avatar extends BaseComponent {
|
|
|
157
172
|
});
|
|
158
173
|
};
|
|
159
174
|
}
|
|
175
|
+
if (typeof this.props.children === "string" && this.props.children !== prevProps.children) {
|
|
176
|
+
this.foundation.changeScale();
|
|
177
|
+
}
|
|
160
178
|
}
|
|
161
179
|
componentWillUnmount() {
|
|
162
180
|
this.foundation.destroy();
|
|
@@ -200,9 +218,10 @@ export default class Avatar extends BaseComponent {
|
|
|
200
218
|
src,
|
|
201
219
|
srcSet,
|
|
202
220
|
style,
|
|
203
|
-
alt
|
|
221
|
+
alt,
|
|
222
|
+
gap
|
|
204
223
|
} = _a,
|
|
205
|
-
others = __rest(_a, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt"]);
|
|
224
|
+
others = __rest(_a, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap"]);
|
|
206
225
|
const {
|
|
207
226
|
isImgExist,
|
|
208
227
|
hoverContent,
|
|
@@ -226,7 +245,8 @@ export default class Avatar extends BaseComponent {
|
|
|
226
245
|
onClick: onClick,
|
|
227
246
|
onMouseEnter: this.onEnter,
|
|
228
247
|
onMouseLeave: this.onLeave,
|
|
229
|
-
role: 'listitem'
|
|
248
|
+
role: 'listitem',
|
|
249
|
+
ref: this.avatarRef
|
|
230
250
|
}), this.getContent(), hoverRender);
|
|
231
251
|
}
|
|
232
252
|
}
|
|
@@ -234,6 +254,7 @@ Avatar.defaultProps = {
|
|
|
234
254
|
size: 'medium',
|
|
235
255
|
color: 'grey',
|
|
236
256
|
shape: 'circle',
|
|
257
|
+
gap: 3,
|
|
237
258
|
onClick: noop,
|
|
238
259
|
onMouseEnter: noop,
|
|
239
260
|
onMouseLeave: noop
|
|
@@ -246,6 +267,7 @@ Avatar.propTypes = {
|
|
|
246
267
|
hoverMask: PropTypes.node,
|
|
247
268
|
className: PropTypes.string,
|
|
248
269
|
style: PropTypes.object,
|
|
270
|
+
gap: PropTypes.number,
|
|
249
271
|
imgAttr: PropTypes.object,
|
|
250
272
|
src: PropTypes.string,
|
|
251
273
|
srcSet: PropTypes.string,
|
package/lib/es/slider/index.js
CHANGED
|
@@ -75,6 +75,7 @@ export default class Slider extends BaseComponent {
|
|
|
75
75
|
});
|
|
76
76
|
const handleContents = !range ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
77
77
|
content: tipChildren.min,
|
|
78
|
+
showArrow: this.props.showArrow,
|
|
78
79
|
position: "top",
|
|
79
80
|
trigger: "custom",
|
|
80
81
|
rePosKey: minPercent,
|
|
@@ -273,7 +274,7 @@ export default class Slider extends BaseComponent {
|
|
|
273
274
|
[`${prefixCls}-dot-active`]: this.foundation.isMarkActive(Number(mark)) === 'active'
|
|
274
275
|
});
|
|
275
276
|
const markPercent = (Number(mark) - min) / (max - min);
|
|
276
|
-
|
|
277
|
+
const dotDOM =
|
|
277
278
|
/*#__PURE__*/
|
|
278
279
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
279
280
|
React.createElement("span", {
|
|
@@ -283,11 +284,17 @@ export default class Slider extends BaseComponent {
|
|
|
283
284
|
style: {
|
|
284
285
|
[stylePos]: `calc(${markPercent * 100}% - 2px)`
|
|
285
286
|
}
|
|
286
|
-
})
|
|
287
|
+
});
|
|
288
|
+
return activeResult ? this.props.tooltipOnMark ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
289
|
+
content: marks[mark]
|
|
290
|
+
}, dotDOM) : dotDOM : null;
|
|
287
291
|
})) : null;
|
|
288
292
|
return labelContent;
|
|
289
293
|
};
|
|
290
294
|
this.renderLabel = () => {
|
|
295
|
+
if (!this.props.showMarkLabel) {
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
291
298
|
const {
|
|
292
299
|
min,
|
|
293
300
|
max,
|
|
@@ -616,6 +623,7 @@ Slider.propTypes = {
|
|
|
616
623
|
// allowClear: PropTypes.bool,
|
|
617
624
|
defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),
|
|
618
625
|
disabled: PropTypes.bool,
|
|
626
|
+
showMarkLabel: PropTypes.bool,
|
|
619
627
|
included: PropTypes.bool,
|
|
620
628
|
marks: PropTypes.object,
|
|
621
629
|
max: PropTypes.number,
|
|
@@ -628,7 +636,9 @@ Slider.propTypes = {
|
|
|
628
636
|
onAfterChange: PropTypes.func,
|
|
629
637
|
onChange: PropTypes.func,
|
|
630
638
|
onMouseUp: PropTypes.func,
|
|
639
|
+
tooltipOnMark: PropTypes.bool,
|
|
631
640
|
tooltipVisible: PropTypes.bool,
|
|
641
|
+
showArrow: PropTypes.bool,
|
|
632
642
|
style: PropTypes.object,
|
|
633
643
|
className: PropTypes.string,
|
|
634
644
|
showBoundary: PropTypes.bool,
|
|
@@ -639,10 +649,13 @@ Slider.propTypes = {
|
|
|
639
649
|
Slider.defaultProps = {
|
|
640
650
|
// allowClear: false,
|
|
641
651
|
disabled: false,
|
|
652
|
+
showMarkLabel: true,
|
|
653
|
+
tooltipOnMark: false,
|
|
642
654
|
included: true,
|
|
643
655
|
max: 100,
|
|
644
656
|
min: 0,
|
|
645
657
|
range: false,
|
|
658
|
+
showArrow: true,
|
|
646
659
|
step: 1,
|
|
647
660
|
tipFormatter: value => value,
|
|
648
661
|
vertical: false,
|
|
@@ -190,6 +190,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
190
190
|
triggerRef: React.RefObject<HTMLDivElement>;
|
|
191
191
|
optionsRef: React.RefObject<any>;
|
|
192
192
|
clickOutsideHandler: any;
|
|
193
|
+
_flattenNodes: TreeState['flattenNodes'];
|
|
193
194
|
onNodeClick: any;
|
|
194
195
|
onNodeDoubleClick: any;
|
|
195
196
|
onMotionEnd: any;
|
|
@@ -246,7 +247,6 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
246
247
|
};
|
|
247
248
|
getTreeNodeKey: (treeNode: TreeNodeData) => string;
|
|
248
249
|
handlePopoverClose: (isVisible: any) => void;
|
|
249
|
-
afterClose: () => void;
|
|
250
250
|
renderTreeNode: (treeNode: FlattenNode, ind: number, style: React.CSSProperties) => JSX.Element;
|
|
251
251
|
itemKey: (index: number, data: Record<string, any>) => any;
|
|
252
252
|
renderNodeList: () => JSX.Element;
|