@douyinfe/semi-ui 2.3.0-beta.0 → 2.4.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/_base/_story/a11y.scss +0 -1
- package/_base/_story/index.scss +2 -5
- package/avatar/avatarGroup.tsx +1 -1
- package/avatar/index.tsx +0 -4
- package/button/__test__/button.test.js +1 -1
- package/checkbox/_story/checkbox.stories.js +2 -2
- package/collapse/index.tsx +1 -1
- package/collapse/item.tsx +1 -3
- package/datePicker/_story/RenderDate/index.js +13 -3
- package/datePicker/_story/RenderFullDate/index.js +36 -14
- package/datePicker/_story/RenderFullDate/index.scss +1 -1
- package/datePicker/_story/datePicker.stories.js +19 -11
- package/datePicker/_story/v2/PanelOpen.jsx +39 -0
- package/datePicker/_story/v2/index.js +2 -1
- package/dist/css/semi.css +33 -9
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +96 -57
- 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/dropdown/index.tsx +11 -3
- package/empty/index.tsx +1 -1
- package/input/textarea.tsx +5 -3
- package/inputNumber/__test__/inputNumber.test.js +36 -8
- package/inputNumber/index.tsx +2 -1
- package/lib/cjs/avatar/avatarGroup.js +1 -2
- package/lib/cjs/avatar/index.js +1 -6
- package/lib/cjs/collapse/index.js +1 -2
- package/lib/cjs/collapse/item.js +1 -5
- package/lib/cjs/dropdown/index.d.ts +10 -3
- package/lib/cjs/empty/index.js +1 -2
- package/lib/cjs/input/textarea.js +4 -2
- package/lib/cjs/inputNumber/index.js +3 -2
- package/lib/cjs/list/index.d.ts +4 -4
- package/lib/cjs/navigation/Item.js +1 -1
- package/lib/cjs/navigation/SubNav.js +1 -1
- package/lib/cjs/scrollList/scrollItem.d.ts +5 -1
- package/lib/cjs/scrollList/scrollItem.js +7 -0
- package/lib/cjs/select/index.js +1 -1
- package/lib/cjs/sideSheet/SideSheetContent.js +5 -9
- package/lib/cjs/spin/icon.js +2 -1
- package/lib/cjs/table/Table.js +9 -5
- package/lib/cjs/timePicker/TimePicker.d.ts +2 -0
- package/lib/cjs/timePicker/TimePicker.js +2 -3
- package/lib/cjs/timePicker/index.d.ts +1 -0
- package/lib/cjs/tooltip/index.js +1 -1
- package/lib/cjs/tree/treeNode.js +10 -1
- package/lib/cjs/treeSelect/index.js +11 -3
- package/lib/cjs/typography/util.js +0 -1
- package/lib/cjs/upload/fileCard.js +3 -3
- package/lib/es/avatar/avatarGroup.js +1 -2
- package/lib/es/avatar/index.js +1 -6
- package/lib/es/collapse/index.js +1 -2
- package/lib/es/collapse/item.js +1 -5
- package/lib/es/dropdown/index.d.ts +10 -3
- package/lib/es/empty/index.js +1 -2
- package/lib/es/input/textarea.js +4 -2
- package/lib/es/inputNumber/index.js +3 -2
- package/lib/es/list/index.d.ts +4 -4
- package/lib/es/navigation/Item.js +1 -1
- package/lib/es/navigation/SubNav.js +1 -1
- package/lib/es/scrollList/scrollItem.d.ts +5 -1
- package/lib/es/scrollList/scrollItem.js +7 -0
- package/lib/es/select/index.js +1 -1
- package/lib/es/sideSheet/SideSheetContent.js +5 -9
- package/lib/es/spin/icon.js +2 -1
- package/lib/es/table/Table.js +9 -5
- package/lib/es/timePicker/TimePicker.d.ts +2 -0
- package/lib/es/timePicker/TimePicker.js +2 -3
- package/lib/es/timePicker/index.d.ts +1 -0
- package/lib/es/tooltip/index.js +2 -2
- package/lib/es/tree/treeNode.js +9 -1
- package/lib/es/treeSelect/index.js +12 -4
- package/lib/es/typography/util.js +0 -1
- package/lib/es/upload/fileCard.js +3 -3
- package/list/index.tsx +5 -5
- package/navigation/Item.tsx +1 -1
- package/navigation/SubNav.tsx +1 -1
- package/package.json +8 -8
- package/scrollList/scrollItem.tsx +10 -3
- package/select/index.tsx +6 -1
- package/sideSheet/SideSheetContent.tsx +6 -8
- package/spin/icon.tsx +2 -1
- package/table/Table.tsx +9 -6
- package/table/_story/table.stories.js +2 -0
- package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
- package/table/_story/v2/FixedZIndex/index.jsx +87 -0
- package/timePicker/TimePicker.tsx +3 -1
- package/timePicker/__test__/timePicker.test.js +42 -3
- package/timePicker/_story/timepicker.stories.js +18 -0
- package/tooltip/index.tsx +3 -2
- package/tree/treeNode.tsx +9 -2
- package/treeSelect/__test__/treeSelect.test.js +157 -0
- package/treeSelect/index.tsx +21 -12
- package/typography/_story/typography.stories.js +8 -0
- package/typography/util.tsx +0 -1
- package/upload/fileCard.tsx +2 -2
package/dropdown/index.tsx
CHANGED
|
@@ -25,12 +25,20 @@ export { DropdownDividerProps } from './dropdownDivider';
|
|
|
25
25
|
export { DropdownItemProps, Type } from './dropdownItem';
|
|
26
26
|
export { DropdownMenuProps } from './dropdownMenu';
|
|
27
27
|
export { DropdownTitleProps } from './dropdownTitle';
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
|
|
29
|
+
export interface DropDownMenuItemItem extends DropdownItemProps {
|
|
30
|
+
node: 'item';
|
|
30
31
|
name?: string;
|
|
31
32
|
}
|
|
33
|
+
export interface DropDownMenuItemDivider extends DropdownDividerProps {
|
|
34
|
+
node: 'divider'
|
|
35
|
+
}
|
|
36
|
+
export interface DropDownMenuItemTitle extends DropdownTitleProps {
|
|
37
|
+
node: 'title';
|
|
38
|
+
name?: string
|
|
39
|
+
}
|
|
32
40
|
|
|
33
|
-
export type DropDownMenuItem =
|
|
41
|
+
export type DropDownMenuItem = DropDownMenuItemItem | DropDownMenuItemDivider | DropDownMenuItemTitle;
|
|
34
42
|
|
|
35
43
|
export interface DropdownProps extends TooltipProps {
|
|
36
44
|
render?: React.ReactNode;
|
package/empty/index.tsx
CHANGED
|
@@ -108,7 +108,7 @@ export default class Empty extends BaseComponent<EmptyProps, EmptyState> {
|
|
|
108
108
|
style: { fontWeight: 400 },
|
|
109
109
|
};
|
|
110
110
|
return (
|
|
111
|
-
<div className={wrapperCls} style={style}
|
|
111
|
+
<div className={wrapperCls} style={style}>
|
|
112
112
|
<div className={`${prefixCls}-image`} style={imageStyle} >
|
|
113
113
|
{imageNode}
|
|
114
114
|
</div>
|
package/input/textarea.tsx
CHANGED
|
@@ -295,7 +295,8 @@ class TextArea extends BaseComponent<TextAreaProps, TextAreaState> {
|
|
|
295
295
|
className,
|
|
296
296
|
`${prefixCls}-textarea-wrapper`,
|
|
297
297
|
{
|
|
298
|
-
[`${prefixCls}-textarea-wrapper-disabled`]: disabled
|
|
298
|
+
[`${prefixCls}-textarea-wrapper-disabled`]: disabled,
|
|
299
|
+
[`${prefixCls}-textarea-wrapper-readonly`]: readonly,
|
|
299
300
|
[`${prefixCls}-textarea-wrapper-${validateStatus}`]: Boolean(validateStatus),
|
|
300
301
|
[`${prefixCls}-textarea-wrapper-focus`]: isFocus,
|
|
301
302
|
// [`${prefixCls}-textarea-wrapper-resize`]: !autosize && resize,
|
|
@@ -305,7 +306,8 @@ class TextArea extends BaseComponent<TextAreaProps, TextAreaState> {
|
|
|
305
306
|
const itemCls = cls(
|
|
306
307
|
`${prefixCls}-textarea`,
|
|
307
308
|
{
|
|
308
|
-
[`${prefixCls}-textarea-disabled`]: disabled
|
|
309
|
+
[`${prefixCls}-textarea-disabled`]: disabled,
|
|
310
|
+
[`${prefixCls}-textarea-readonly`]: readonly,
|
|
309
311
|
[`${prefixCls}-textarea-autosize`]: autosize,
|
|
310
312
|
[`${prefixCls}-textarea-showClear`]: showClear,
|
|
311
313
|
}
|
|
@@ -346,4 +348,4 @@ class TextArea extends BaseComponent<TextAreaProps, TextAreaState> {
|
|
|
346
348
|
|
|
347
349
|
const ForwardTextarea = React.forwardRef<HTMLTextAreaElement, Omit<TextAreaProps, 'forwardRef'>>((props, ref) => <TextArea {...props} forwardRef={ref} />);
|
|
348
350
|
|
|
349
|
-
export default ForwardTextarea;
|
|
351
|
+
export default ForwardTextarea;
|
|
@@ -5,6 +5,7 @@ import sinon from 'sinon';
|
|
|
5
5
|
import keyCode from '@douyinfe/semi-foundation/utils/keyCode';
|
|
6
6
|
import * as _ from 'lodash';
|
|
7
7
|
import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
|
|
8
|
+
import { numbers } from '@douyinfe/semi-foundation/inputNumber/constants';
|
|
8
9
|
import { Form, withField } from '../../index';
|
|
9
10
|
|
|
10
11
|
const log = (...args) => console.log(...args);
|
|
@@ -216,8 +217,8 @@ describe(`InputNumber`, () => {
|
|
|
216
217
|
const addCount = 3;
|
|
217
218
|
const minusCount = 1;
|
|
218
219
|
|
|
219
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
220
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
220
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
221
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
221
222
|
|
|
222
223
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
223
224
|
expect(onUpClick.called).toBe(true);
|
|
@@ -243,8 +244,8 @@ describe(`InputNumber`, () => {
|
|
|
243
244
|
const addCount = 3;
|
|
244
245
|
const minusCount = 1;
|
|
245
246
|
|
|
246
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
247
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
247
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
248
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
248
249
|
|
|
249
250
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
250
251
|
expect(onUpClick.called).toBe(true);
|
|
@@ -283,9 +284,9 @@ describe(`InputNumber`, () => {
|
|
|
283
284
|
// click button focus
|
|
284
285
|
const addCount = 3;
|
|
285
286
|
const minusCount = 1;
|
|
286
|
-
_.times(addCount, () => addBtn.simulate('mousedown'));
|
|
287
|
+
_.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
287
288
|
_.times(addCount, () => addBtn.simulate('mouseup'));
|
|
288
|
-
_.times(minusCount, () => minusBtn.simulate('mousedown'));
|
|
289
|
+
_.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
|
|
289
290
|
_.times(minusCount, () => minusBtn.simulate('mouseup'));
|
|
290
291
|
expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
|
|
291
292
|
expect(inputNumber.find(BaseInputNumber).state('focusing')).toBeTruthy();
|
|
@@ -338,7 +339,7 @@ describe(`InputNumber`, () => {
|
|
|
338
339
|
const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
|
|
339
340
|
const inputElem = inputNumber.find('input');
|
|
340
341
|
const addBtn = btns.first();
|
|
341
|
-
addBtn.simulate('mousedown');
|
|
342
|
+
addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT });
|
|
342
343
|
expect(inputElem.instance().value).toBe("1");
|
|
343
344
|
})
|
|
344
345
|
|
|
@@ -366,5 +367,32 @@ describe(`InputNumber`, () => {
|
|
|
366
367
|
inputElem.simulate('change', newEvent);
|
|
367
368
|
expect(onNumberChange.calledOnce).toBe(true);
|
|
368
369
|
expect(inputElem.instance().value).toBe('123');
|
|
369
|
-
})
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* test buttons right click
|
|
374
|
+
*/
|
|
375
|
+
it(`right click add/minus button`, async () => {
|
|
376
|
+
const defaultValue = 1000;
|
|
377
|
+
const onUpClick = sinon.spy();
|
|
378
|
+
const onDownClick = sinon.spy();
|
|
379
|
+
const MOUSE_BUTTON_RIGHT = 2;
|
|
380
|
+
|
|
381
|
+
const inputNumber = mount(
|
|
382
|
+
<InputNumber defaultValue={defaultValue} onUpClick={onUpClick} onDownClick={onDownClick} />
|
|
383
|
+
);
|
|
384
|
+
const inputElem = inputNumber.find('input');
|
|
385
|
+
|
|
386
|
+
const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
|
|
387
|
+
|
|
388
|
+
const addBtn = btns.first();
|
|
389
|
+
const minusBtn = btns.last();
|
|
390
|
+
|
|
391
|
+
_.times(1, () => addBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
|
|
392
|
+
_.times(3, () => minusBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
|
|
393
|
+
|
|
394
|
+
expect(inputElem.instance().value).toBe(String(defaultValue));
|
|
395
|
+
expect(onUpClick.called).toBe(false);
|
|
396
|
+
expect(onDownClick.called).toBe(false);
|
|
397
|
+
});
|
|
370
398
|
});
|
package/inputNumber/index.tsx
CHANGED
|
@@ -447,6 +447,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
|
|
|
447
447
|
style,
|
|
448
448
|
onNumberChange,
|
|
449
449
|
keepFocus,
|
|
450
|
+
defaultValue,
|
|
450
451
|
...rest
|
|
451
452
|
} = this.props;
|
|
452
453
|
const { value, number } = this.state;
|
|
@@ -508,4 +509,4 @@ export default forwardStatics(
|
|
|
508
509
|
InputNumber
|
|
509
510
|
);
|
|
510
511
|
|
|
511
|
-
export { InputNumber };
|
|
512
|
+
export { InputNumber };
|
package/lib/cjs/avatar/index.js
CHANGED
|
@@ -204,7 +204,6 @@ class Avatar extends _baseComponent.default {
|
|
|
204
204
|
const hoverRender = hoverContent ? /*#__PURE__*/_react.default.createElement("div", {
|
|
205
205
|
className: "".concat(prefixCls, "-hover")
|
|
206
206
|
}, hoverContent) : null;
|
|
207
|
-
let ariaLabel;
|
|
208
207
|
|
|
209
208
|
if (isImg) {
|
|
210
209
|
content = /*#__PURE__*/_react.default.createElement("img", (0, _assign.default)({
|
|
@@ -213,22 +212,18 @@ class Avatar extends _baseComponent.default {
|
|
|
213
212
|
onError: this.handleError,
|
|
214
213
|
alt: alt
|
|
215
214
|
}, imgAttr));
|
|
216
|
-
ariaLabel = 'avatar';
|
|
217
215
|
} else if (typeof children === 'string') {
|
|
218
216
|
content = /*#__PURE__*/_react.default.createElement("span", {
|
|
219
217
|
className: "".concat(prefixCls, "-content")
|
|
220
218
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
221
219
|
className: "".concat(prefixCls, "-label")
|
|
222
220
|
}, children));
|
|
223
|
-
ariaLabel = "avatar of ".concat(children);
|
|
224
221
|
}
|
|
225
222
|
|
|
226
223
|
return (
|
|
227
224
|
/*#__PURE__*/
|
|
228
225
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
|
|
229
|
-
_react.default.createElement("span", (0, _assign.default)({
|
|
230
|
-
"aria-label": ariaLabel
|
|
231
|
-
}, others, {
|
|
226
|
+
_react.default.createElement("span", (0, _assign.default)({}, others, {
|
|
232
227
|
style: style,
|
|
233
228
|
className: avatarCls,
|
|
234
229
|
onClick: onClick,
|
|
@@ -126,8 +126,7 @@ class Collapse extends _baseComponent.default {
|
|
|
126
126
|
} = this.state;
|
|
127
127
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
128
128
|
className: clsPrefix,
|
|
129
|
-
style: style
|
|
130
|
-
"aria-label": "Collapse"
|
|
129
|
+
style: style
|
|
131
130
|
}, /*#__PURE__*/_react.default.createElement(_collapseContext.default.Provider, {
|
|
132
131
|
value: {
|
|
133
132
|
activeSet,
|
package/lib/cjs/collapse/item.js
CHANGED
|
@@ -91,9 +91,7 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
91
91
|
if (typeof header === 'string') {
|
|
92
92
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconPosLeft ? icon : null, /*#__PURE__*/_react.default.createElement("span", null, header), /*#__PURE__*/_react.default.createElement("span", {
|
|
93
93
|
className: "".concat(_constants.cssClasses.PREFIX, "-header-right")
|
|
94
|
-
}, /*#__PURE__*/_react.default.createElement("span",
|
|
95
|
-
"aria-label": 'Extra of collapse header'
|
|
96
|
-
}, extra), iconPosLeft ? null : icon));
|
|
94
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, extra), iconPosLeft ? null : icon));
|
|
97
95
|
}
|
|
98
96
|
|
|
99
97
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconPosLeft ? icon : null, header, iconPosLeft ? null : icon);
|
|
@@ -128,7 +126,6 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
128
126
|
["".concat(_constants.cssClasses.PREFIX, "-content")]: true
|
|
129
127
|
});
|
|
130
128
|
return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
131
|
-
"aria-label": 'Collapse panel',
|
|
132
129
|
className: itemCls
|
|
133
130
|
}, restProps), /*#__PURE__*/_react.default.createElement("div", {
|
|
134
131
|
role: "button",
|
|
@@ -144,7 +141,6 @@ class CollapsePanel extends _react.PureComponent {
|
|
|
144
141
|
reCalcKey: reCalcKey
|
|
145
142
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
146
143
|
className: contentCls,
|
|
147
|
-
"aria-label": 'Collapse content',
|
|
148
144
|
"aria-hidden": !active,
|
|
149
145
|
id: this.ariaID
|
|
150
146
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -12,11 +12,18 @@ export { DropdownDividerProps } from './dropdownDivider';
|
|
|
12
12
|
export { DropdownItemProps, Type } from './dropdownItem';
|
|
13
13
|
export { DropdownMenuProps } from './dropdownMenu';
|
|
14
14
|
export { DropdownTitleProps } from './dropdownTitle';
|
|
15
|
-
export interface
|
|
16
|
-
node: '
|
|
15
|
+
export interface DropDownMenuItemItem extends DropdownItemProps {
|
|
16
|
+
node: 'item';
|
|
17
17
|
name?: string;
|
|
18
18
|
}
|
|
19
|
-
export
|
|
19
|
+
export interface DropDownMenuItemDivider extends DropdownDividerProps {
|
|
20
|
+
node: 'divider';
|
|
21
|
+
}
|
|
22
|
+
export interface DropDownMenuItemTitle extends DropdownTitleProps {
|
|
23
|
+
node: 'title';
|
|
24
|
+
name?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare type DropDownMenuItem = DropDownMenuItemItem | DropDownMenuItemDivider | DropDownMenuItemTitle;
|
|
20
27
|
export interface DropdownProps extends TooltipProps {
|
|
21
28
|
render?: React.ReactNode;
|
|
22
29
|
children?: React.ReactNode;
|
package/lib/cjs/empty/index.js
CHANGED
|
@@ -119,8 +119,7 @@ class Empty extends _baseComponent.default {
|
|
|
119
119
|
};
|
|
120
120
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
121
121
|
className: wrapperCls,
|
|
122
|
-
style: style
|
|
123
|
-
"aria-label": "empty placeholder image"
|
|
122
|
+
style: style
|
|
124
123
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
125
124
|
className: "".concat(prefixCls, "-image"),
|
|
126
125
|
style: imageStyle
|
|
@@ -267,14 +267,16 @@ class TextArea extends _baseComponent.default {
|
|
|
267
267
|
minLength: stateMinLength
|
|
268
268
|
} = this.state;
|
|
269
269
|
const wrapperCls = (0, _classnames.default)(className, "".concat(prefixCls, "-textarea-wrapper"), {
|
|
270
|
-
["".concat(prefixCls, "-textarea-wrapper-disabled")]: disabled
|
|
270
|
+
["".concat(prefixCls, "-textarea-wrapper-disabled")]: disabled,
|
|
271
|
+
["".concat(prefixCls, "-textarea-wrapper-readonly")]: readonly,
|
|
271
272
|
[(0, _concat.default)(_context = "".concat(prefixCls, "-textarea-wrapper-")).call(_context, validateStatus)]: Boolean(validateStatus),
|
|
272
273
|
["".concat(prefixCls, "-textarea-wrapper-focus")]: isFocus // [`${prefixCls}-textarea-wrapper-resize`]: !autosize && resize,
|
|
273
274
|
|
|
274
275
|
}); // const ref = this.props.forwardRef || this.textAreaRef;
|
|
275
276
|
|
|
276
277
|
const itemCls = (0, _classnames.default)("".concat(prefixCls, "-textarea"), {
|
|
277
|
-
["".concat(prefixCls, "-textarea-disabled")]: disabled
|
|
278
|
+
["".concat(prefixCls, "-textarea-disabled")]: disabled,
|
|
279
|
+
["".concat(prefixCls, "-textarea-readonly")]: readonly,
|
|
278
280
|
["".concat(prefixCls, "-textarea-autosize")]: autosize,
|
|
279
281
|
["".concat(prefixCls, "-textarea-showClear")]: showClear
|
|
280
282
|
});
|
|
@@ -441,9 +441,10 @@ class InputNumber extends _baseComponent.default {
|
|
|
441
441
|
innerButtons,
|
|
442
442
|
style,
|
|
443
443
|
onNumberChange,
|
|
444
|
-
keepFocus
|
|
444
|
+
keepFocus,
|
|
445
|
+
defaultValue
|
|
445
446
|
} = _a,
|
|
446
|
-
rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus"]);
|
|
447
|
+
rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus", "defaultValue"]);
|
|
447
448
|
|
|
448
449
|
const {
|
|
449
450
|
value,
|
package/lib/cjs/list/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import ListItem from './item';
|
|
|
5
5
|
import { Grid } from './list-context';
|
|
6
6
|
import BaseComponent from '../_base/baseComponent';
|
|
7
7
|
export { ListItemProps } from './item';
|
|
8
|
-
export interface ListProps {
|
|
8
|
+
export interface ListProps<T> {
|
|
9
9
|
style?: React.CSSProperties;
|
|
10
10
|
className?: string;
|
|
11
11
|
bordered?: boolean;
|
|
@@ -15,15 +15,15 @@ export interface ListProps {
|
|
|
15
15
|
size?: 'small' | 'large' | 'default';
|
|
16
16
|
split?: boolean;
|
|
17
17
|
emptyContent?: React.ReactNode;
|
|
18
|
-
dataSource?:
|
|
19
|
-
renderItem?: (item:
|
|
18
|
+
dataSource?: T[];
|
|
19
|
+
renderItem?: (item: T, ind: number) => React.ReactNode;
|
|
20
20
|
grid?: Grid;
|
|
21
21
|
loading?: boolean;
|
|
22
22
|
loadMore?: React.ReactNode;
|
|
23
23
|
onClick?: React.MouseEventHandler<HTMLLIElement>;
|
|
24
24
|
onRightClick?: React.MouseEventHandler<HTMLLIElement>;
|
|
25
25
|
}
|
|
26
|
-
declare class List extends BaseComponent<ListProps
|
|
26
|
+
declare class List<T = any> extends BaseComponent<ListProps<T>> {
|
|
27
27
|
static Item: typeof ListItem;
|
|
28
28
|
static propTypes: {
|
|
29
29
|
style: PropTypes.Requireable<object>;
|
|
@@ -204,7 +204,7 @@ class NavItem extends _baseComponent.default {
|
|
|
204
204
|
} else {
|
|
205
205
|
let placeholderIcons = null;
|
|
206
206
|
|
|
207
|
-
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent) {
|
|
207
|
+
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent && !isCollapsed) {
|
|
208
208
|
const iconAmount = icon && !indent ? level : level - 1;
|
|
209
209
|
placeholderIcons = (0, _times2.default)(iconAmount, () => this.renderIcon(null, _constants.strings.ICON_POS_RIGHT, false));
|
|
210
210
|
}
|
|
@@ -230,7 +230,7 @@ class SubNav extends _baseComponent.default {
|
|
|
230
230
|
|
|
231
231
|
let placeholderIcons = null;
|
|
232
232
|
|
|
233
|
-
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent) {
|
|
233
|
+
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent && !isCollapsed) {
|
|
234
234
|
/* Different icons' amount means different indents.*/
|
|
235
235
|
const iconAmount = icon && !indent ? level : level - 1;
|
|
236
236
|
placeholderIcons = (0, _times2.default)(iconAmount, index => this.renderIcon(null, _constants.strings.ICON_POS_RIGHT, false, undefined, index));
|
|
@@ -3,7 +3,10 @@ import BaseComponent from '../_base/baseComponent';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { Item, ScrollItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/scrollList/itemFoundation';
|
|
5
5
|
import { Motion } from '../_base/base';
|
|
6
|
-
|
|
6
|
+
interface DebounceSelectFn {
|
|
7
|
+
(e: React.UIEvent, newSelectedNode: HTMLElement): void;
|
|
8
|
+
cancel(): void;
|
|
9
|
+
}
|
|
7
10
|
export interface ScrollItemProps<T extends Item> {
|
|
8
11
|
mode?: string;
|
|
9
12
|
cycled?: boolean;
|
|
@@ -52,6 +55,7 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
52
55
|
debouncedSelect: DebounceSelectFn;
|
|
53
56
|
constructor(props?: {});
|
|
54
57
|
get adapter(): ScrollItemAdapter<ScrollItemProps<T>, ScrollItemState, T>;
|
|
58
|
+
componentWillUnmount(): void;
|
|
55
59
|
componentDidMount(): void;
|
|
56
60
|
componentDidUpdate(prevProps: ScrollItemProps<T>): void;
|
|
57
61
|
_cacheNode: (name: string, node: Element) => Element;
|
|
@@ -451,6 +451,13 @@ class ScrollItem extends _baseComponent.default {
|
|
|
451
451
|
});
|
|
452
452
|
}
|
|
453
453
|
|
|
454
|
+
componentWillUnmount() {
|
|
455
|
+
if (this.props.cycled) {
|
|
456
|
+
this.throttledAdjustList.cancel();
|
|
457
|
+
this.debouncedSelect.cancel();
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
454
461
|
componentDidMount() {
|
|
455
462
|
this.foundation.init();
|
|
456
463
|
const {
|
package/lib/cjs/select/index.js
CHANGED
|
@@ -563,7 +563,7 @@ class Select extends _baseComponent.default {
|
|
|
563
563
|
role: "button",
|
|
564
564
|
"aria-label": "Use the input box to create an optional item",
|
|
565
565
|
onClick: e => this.onSelect(option, optionIndex, e),
|
|
566
|
-
key:
|
|
566
|
+
key: option.key || option.label
|
|
567
567
|
}, customCreateItem)
|
|
568
568
|
);
|
|
569
569
|
}
|
|
@@ -102,8 +102,7 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
102
102
|
|
|
103
103
|
if (title) {
|
|
104
104
|
header = /*#__PURE__*/_react.default.createElement("div", {
|
|
105
|
-
className: "".concat(prefixCls, "-title")
|
|
106
|
-
"aria-label": 'Sidesheet title'
|
|
105
|
+
className: "".concat(prefixCls, "-title")
|
|
107
106
|
}, this.props.title);
|
|
108
107
|
}
|
|
109
108
|
|
|
@@ -122,6 +121,7 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
122
121
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
123
122
|
className: "".concat(prefixCls, "-header"),
|
|
124
123
|
role: 'heading',
|
|
124
|
+
"aria-level": 1,
|
|
125
125
|
style: (0, _assign.default)({}, headerStyle)
|
|
126
126
|
}, header, closer);
|
|
127
127
|
}
|
|
@@ -155,15 +155,12 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
155
155
|
// onMouseDown={this.onDialogMouseDown}
|
|
156
156
|
style: (0, _assign.default)((0, _assign.default)({}, props.style), style)
|
|
157
157
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
158
|
-
className: "".concat(prefixCls, "-content")
|
|
159
|
-
"aria-label": "Sidesheet content"
|
|
158
|
+
className: "".concat(prefixCls, "-content")
|
|
160
159
|
}, header, /*#__PURE__*/_react.default.createElement("div", {
|
|
161
160
|
className: "".concat(prefixCls, "-body"),
|
|
162
|
-
"aria-label": "Sidesheet body",
|
|
163
161
|
style: props.bodyStyle
|
|
164
162
|
}, props.children), props.footer ? /*#__PURE__*/_react.default.createElement("div", {
|
|
165
|
-
className: "".concat(prefixCls, "-footer")
|
|
166
|
-
"aria-label": "Sidesheet footer"
|
|
163
|
+
className: "".concat(prefixCls, "-footer")
|
|
167
164
|
}, props.footer) : null));
|
|
168
165
|
|
|
169
166
|
return dialogElement;
|
|
@@ -186,8 +183,7 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
186
183
|
|
|
187
184
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
188
185
|
className: wrapperCls,
|
|
189
|
-
style: wrapperStyle
|
|
190
|
-
"aria-label": this.props['aria-label']
|
|
186
|
+
style: wrapperStyle
|
|
191
187
|
}, this.getMaskElement(), this.getDialogElement());
|
|
192
188
|
}
|
|
193
189
|
|
package/lib/cjs/spin/icon.js
CHANGED
|
@@ -59,7 +59,8 @@ function Icon() {
|
|
|
59
59
|
viewBox: "0 0 36 36",
|
|
60
60
|
version: "1.1",
|
|
61
61
|
xmlns: "http://www.w3.org/2000/svg",
|
|
62
|
-
"aria-
|
|
62
|
+
"aria-hidden": true,
|
|
63
|
+
"data-icon": "spin"
|
|
63
64
|
}), /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("linearGradient", {
|
|
64
65
|
x1: "0%",
|
|
65
66
|
y1: "100%",
|
package/lib/cjs/table/Table.js
CHANGED
|
@@ -1294,15 +1294,18 @@ class Table extends _baseComponent.default {
|
|
|
1294
1294
|
const _dataSource = [...dataSource];
|
|
1295
1295
|
const filteredSortedDataSource = this.foundation.getFilteredSortedDataSource(_dataSource, stateQueries);
|
|
1296
1296
|
this.foundation.setCachedFilteredSortedDataSource(filteredSortedDataSource);
|
|
1297
|
-
states.dataSource = filteredSortedDataSource;
|
|
1298
|
-
|
|
1299
|
-
states.pagination = (0, _isObject2.default)(statePagination) ? (0, _assign.default)((0, _assign.default)({}, statePagination), {
|
|
1300
|
-
currentPage: (0, _isObject2.default)(propsPagination) && propsPagination.currentPage ? propsPagination.currentPage : 1
|
|
1301
|
-
}) : statePagination;
|
|
1297
|
+
states.dataSource = filteredSortedDataSource;
|
|
1302
1298
|
|
|
1303
1299
|
if (this.props.groupBy) {
|
|
1304
1300
|
states.groups = null;
|
|
1305
1301
|
}
|
|
1302
|
+
} // when dataSource has change, should reset currentPage
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
if (dataSource !== prevProps.dataSource) {
|
|
1306
|
+
states.pagination = (0, _isObject2.default)(statePagination) ? (0, _assign.default)((0, _assign.default)({}, statePagination), {
|
|
1307
|
+
currentPage: (0, _isObject2.default)(propsPagination) && propsPagination.currentPage ? propsPagination.currentPage : 1
|
|
1308
|
+
}) : statePagination;
|
|
1306
1309
|
}
|
|
1307
1310
|
|
|
1308
1311
|
if ((0, _keys.default)(states).length) {
|
|
@@ -1484,6 +1487,7 @@ class Table extends _baseComponent.default {
|
|
|
1484
1487
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
1485
1488
|
ref: this.rootWrapRef,
|
|
1486
1489
|
className: (0, _classnames.default)(className, "".concat(prefixCls, "-wrapper")),
|
|
1490
|
+
"data-column-fixed": anyColumnFixed,
|
|
1487
1491
|
style: wrapStyle,
|
|
1488
1492
|
id: id
|
|
1489
1493
|
}, /*#__PURE__*/_react.default.createElement(_TableContextProvider.default, (0, _assign.default)({}, tableContextValue), /*#__PURE__*/_react.default.createElement(_spin.default, {
|
|
@@ -69,6 +69,7 @@ export declare type TimePickerProps = {
|
|
|
69
69
|
zIndex?: number | string;
|
|
70
70
|
onBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
71
71
|
onChange?: TimePickerAdapter['notifyChange'];
|
|
72
|
+
onChangeWithDateFirst?: boolean;
|
|
72
73
|
onFocus?: React.FocusEventHandler<HTMLInputElement>;
|
|
73
74
|
onOpenChange?: (open: boolean) => void;
|
|
74
75
|
};
|
|
@@ -169,6 +170,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
|
|
|
169
170
|
onFocus: (...args: any[]) => void;
|
|
170
171
|
onBlur: (...args: any[]) => void;
|
|
171
172
|
onChange: (...args: any[]) => void;
|
|
173
|
+
onChangeWithDateFirst: boolean;
|
|
172
174
|
use12Hours: boolean;
|
|
173
175
|
focusOnOpen: boolean;
|
|
174
176
|
onKeyDown: (...args: any[]) => void;
|
|
@@ -183,9 +183,7 @@ class TimePicker extends _baseComponent.default {
|
|
|
183
183
|
notifyOpenChange: function () {
|
|
184
184
|
return _this2.props.onOpenChange(...arguments);
|
|
185
185
|
},
|
|
186
|
-
notifyChange:
|
|
187
|
-
return _this2.props.onChange && _this2.props.onChange(...arguments);
|
|
188
|
-
},
|
|
186
|
+
notifyChange: (agr1, arg2) => this.props.onChange && this.props.onChange(agr1, arg2),
|
|
189
187
|
notifyFocus: function () {
|
|
190
188
|
return _this2.props.onFocus && _this2.props.onFocus(...arguments);
|
|
191
189
|
},
|
|
@@ -503,6 +501,7 @@ TimePicker.defaultProps = (0, _assign.default)({
|
|
|
503
501
|
onFocus: _noop2.default,
|
|
504
502
|
onBlur: _noop2.default,
|
|
505
503
|
onChange: _noop2.default,
|
|
504
|
+
onChangeWithDateFirst: true,
|
|
506
505
|
use12Hours: false,
|
|
507
506
|
focusOnOpen: false,
|
|
508
507
|
onKeyDown: _noop2.default,
|
|
@@ -91,6 +91,7 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
|
|
|
91
91
|
onFocus: (...args: any[]) => void;
|
|
92
92
|
onBlur: (...args: any[]) => void;
|
|
93
93
|
onChange: (...args: any[]) => void;
|
|
94
|
+
onChangeWithDateFirst: boolean;
|
|
94
95
|
use12Hours: boolean;
|
|
95
96
|
focusOnOpen: boolean;
|
|
96
97
|
onKeyDown: (...args: any[]) => void;
|
package/lib/cjs/tooltip/index.js
CHANGED
|
@@ -308,7 +308,7 @@ class Tooltip extends _baseComponent.default {
|
|
|
308
308
|
placement: props.position || 'top',
|
|
309
309
|
transitionStyle: {},
|
|
310
310
|
isPositionUpdated: false,
|
|
311
|
-
id: (0, _uuid.
|
|
311
|
+
id: (0, _uuid.getUuidShort)() // auto generate id, will be used by children.aria-describedby & content.id, improve a11y
|
|
312
312
|
|
|
313
313
|
};
|
|
314
314
|
this.foundation = new _foundation.default(this.adapter);
|
package/lib/cjs/tree/treeNode.js
CHANGED
|
@@ -24,6 +24,8 @@ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
24
24
|
|
|
25
25
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
26
26
|
|
|
27
|
+
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
|
|
28
|
+
|
|
27
29
|
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
28
30
|
|
|
29
31
|
var _isString2 = _interopRequireDefault(require("lodash/isString"));
|
|
@@ -506,7 +508,14 @@ class TreeNode extends _react.PureComponent {
|
|
|
506
508
|
ref: this.setRef
|
|
507
509
|
}, dragProps));
|
|
508
510
|
} else {
|
|
509
|
-
|
|
511
|
+
if ((0, _isEmpty2.default)(style)) {
|
|
512
|
+
return customLabel;
|
|
513
|
+
} else {
|
|
514
|
+
// In virtualization, props.style will contain location information
|
|
515
|
+
return /*#__PURE__*/_react.default.cloneElement(customLabel, {
|
|
516
|
+
style: (0, _assign.default)((0, _assign.default)({}, (0, _get2.default)(customLabel, ['props', 'style'])), style)
|
|
517
|
+
});
|
|
518
|
+
}
|
|
510
519
|
}
|
|
511
520
|
}
|
|
512
521
|
|
|
@@ -950,7 +950,7 @@ class TreeSelect extends _baseComponent.default {
|
|
|
950
950
|
} // if treeData keys changes, we won't show animation
|
|
951
951
|
|
|
952
952
|
|
|
953
|
-
if (treeData && props.motion && !(0, _isEqual2.default)(
|
|
953
|
+
if (treeData && props.motion && !(0, _isEqual2.default)((0, _keys.default)(newState.keyEntities), (0, _keys.default)(prevState.keyEntities))) {
|
|
954
954
|
if (prevProps && props.motion) {
|
|
955
955
|
newState.motionKeys = new _set.default([]);
|
|
956
956
|
newState.motionType = null;
|
|
@@ -996,7 +996,11 @@ class TreeSelect extends _baseComponent.default {
|
|
|
996
996
|
newState.selectedKeys = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.defaultValue, withObject), valueEntities, isMultiple);
|
|
997
997
|
} else if (treeData) {
|
|
998
998
|
// If `treeData` changed, we also need check it
|
|
999
|
-
|
|
999
|
+
if (props.value) {
|
|
1000
|
+
newState.selectedKeys = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject) || '', valueEntities, isMultiple);
|
|
1001
|
+
} else {
|
|
1002
|
+
newState.selectedKeys = (0, _treeUtil.updateKeys)(prevState.selectedKeys, keyEntities);
|
|
1003
|
+
}
|
|
1000
1004
|
}
|
|
1001
1005
|
} else {
|
|
1002
1006
|
// checkedKeys: multiple mode controlled || data changed
|
|
@@ -1008,7 +1012,11 @@ class TreeSelect extends _baseComponent.default {
|
|
|
1008
1012
|
checkedKeyValues = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.defaultValue, withObject), valueEntities, isMultiple);
|
|
1009
1013
|
} else if (treeData) {
|
|
1010
1014
|
// If `treeData` changed, we also need check it
|
|
1011
|
-
|
|
1015
|
+
if (props.value) {
|
|
1016
|
+
checkedKeyValues = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject) || [], valueEntities, isMultiple);
|
|
1017
|
+
} else {
|
|
1018
|
+
checkedKeyValues = (0, _treeUtil.updateKeys)(prevState.checkedKeys, keyEntities);
|
|
1019
|
+
}
|
|
1012
1020
|
}
|
|
1013
1021
|
|
|
1014
1022
|
if (checkedKeyValues) {
|
|
@@ -77,7 +77,6 @@ const getRenderText = function (originEle, rows) {
|
|
|
77
77
|
ellipsisContainer.style.zIndex = '-1000'; // clean up css overflow
|
|
78
78
|
|
|
79
79
|
ellipsisContainer.style.textOverflow = 'clip';
|
|
80
|
-
ellipsisContainer.style.whiteSpace = 'normal';
|
|
81
80
|
ellipsisContainer.style.webkitLineClamp = 'none'; // Render fake container
|
|
82
81
|
|
|
83
82
|
_reactDom.default.render( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), ellipsisContainer); // Check if ellipsis in measure div is height enough for content
|
|
@@ -259,12 +259,12 @@ class FileCard extends _react.PureComponent {
|
|
|
259
259
|
orbitStroke: '#FFF',
|
|
260
260
|
"aria-label": "uploading file progress"
|
|
261
261
|
}) : null, showRetry ? retry : null, showReplace && replace, showPicInfo && picInfo, !disabled && /*#__PURE__*/_react.default.createElement("div", {
|
|
262
|
-
className: closeCls
|
|
262
|
+
className: closeCls,
|
|
263
|
+
onClick: e => this.onRemove(e)
|
|
263
264
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
|
|
264
265
|
tabIndex: 0,
|
|
265
266
|
role: "button",
|
|
266
|
-
size: "extra-small"
|
|
267
|
-
onClick: e => this.onRemove(e)
|
|
267
|
+
size: "extra-small"
|
|
268
268
|
})), this.renderPicValidateMsg());
|
|
269
269
|
}
|
|
270
270
|
|