@douyinfe/semi-ui 2.3.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/datePicker/_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/datePicker/datePicker.tsx +1 -0
- package/dist/css/semi.css +34 -9
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +92 -33
- 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/form/_story/demo.jsx +1 -0
- package/input/index.tsx +1 -0
- package/input/textarea.tsx +6 -4
- package/inputNumber/__test__/inputNumber.test.js +36 -8
- package/inputNumber/index.tsx +2 -1
- package/lib/cjs/datePicker/datePicker.js +12 -8
- package/lib/cjs/dropdown/index.d.ts +10 -3
- package/lib/cjs/input/index.js +2 -1
- package/lib/cjs/input/textarea.js +5 -3
- 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/table/Table.js +9 -5
- package/lib/cjs/timePicker/TimePicker.d.ts +2 -0
- package/lib/cjs/timePicker/TimePicker.js +4 -4
- package/lib/cjs/timePicker/index.d.ts +1 -0
- 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/es/datePicker/datePicker.js +12 -8
- package/lib/es/dropdown/index.d.ts +10 -3
- package/lib/es/input/index.js +2 -1
- package/lib/es/input/textarea.js +5 -3
- 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/table/Table.js +9 -5
- package/lib/es/timePicker/TimePicker.d.ts +2 -0
- package/lib/es/timePicker/TimePicker.js +4 -4
- package/lib/es/timePicker/index.d.ts +1 -0
- 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/list/index.tsx +5 -5
- package/navigation/Item.tsx +1 -1
- package/navigation/SubNav.tsx +1 -1
- package/package.json +9 -8
- package/scrollList/scrollItem.tsx +10 -3
- package/select/index.tsx +6 -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 +4 -1
- package/timePicker/__test__/timePicker.test.js +42 -3
- package/timePicker/_story/timepicker.stories.js +18 -0
- 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/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/form/_story/demo.jsx
CHANGED
|
@@ -179,6 +179,7 @@ class BasicDemoWithInit extends Component {
|
|
|
179
179
|
<BasicSelect onChange={this.changeLabelPos} value={labelPosition}>
|
|
180
180
|
<BasicSelect.Option value='top'>top</BasicSelect.Option>
|
|
181
181
|
<BasicSelect.Option value='left'>left</BasicSelect.Option>
|
|
182
|
+
<BasicSelect.Option value='inset'>inset</BasicSelect.Option>
|
|
182
183
|
</BasicSelect>
|
|
183
184
|
<BasicSelect onChange={this.changeLabelAlign} value={labelAlign}>
|
|
184
185
|
<BasicSelect.Option value='left'>left</BasicSelect.Option>
|
package/input/index.tsx
CHANGED
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,13 +306,14 @@ 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
|
}
|
|
312
314
|
);
|
|
313
315
|
const itemProps = {
|
|
314
|
-
...omit(rest, 'insetLabel', 'getValueLength', 'onClear', 'showClear'),
|
|
316
|
+
...omit(rest, 'insetLabel', 'insetLabelId', 'getValueLength', 'onClear', 'showClear'),
|
|
315
317
|
className: itemCls,
|
|
316
318
|
disabled,
|
|
317
319
|
readOnly: readonly,
|
|
@@ -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 };
|
|
@@ -604,14 +604,18 @@ class DatePicker extends _baseComponent.default {
|
|
|
604
604
|
onRangeClear: this.handleRangeInputClear,
|
|
605
605
|
onRangeEndTabPress: this.handleRangeEndTabPress
|
|
606
606
|
});
|
|
607
|
-
return
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
607
|
+
return (
|
|
608
|
+
/*#__PURE__*/
|
|
609
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
610
|
+
_react.default.createElement("div", {
|
|
611
|
+
onClick: this.handleTriggerWrapperClick,
|
|
612
|
+
className: inputCls
|
|
613
|
+
}, typeof triggerRender === 'function' ? /*#__PURE__*/_react.default.createElement(_trigger.default, (0, _assign.default)({}, props, {
|
|
614
|
+
triggerRender: triggerRender,
|
|
615
|
+
componentName: "DatePicker",
|
|
616
|
+
componentProps: (0, _assign.default)({}, this.props)
|
|
617
|
+
})) : /*#__PURE__*/_react.default.createElement(_dateInput.default, (0, _assign.default)({}, props)))
|
|
618
|
+
);
|
|
615
619
|
}
|
|
616
620
|
|
|
617
621
|
render() {
|
|
@@ -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/input/index.js
CHANGED
|
@@ -364,6 +364,7 @@ class Input extends _baseComponent.default {
|
|
|
364
364
|
prefix,
|
|
365
365
|
mode,
|
|
366
366
|
insetLabel,
|
|
367
|
+
insetLabelId,
|
|
367
368
|
validateStatus,
|
|
368
369
|
type,
|
|
369
370
|
readonly,
|
|
@@ -379,7 +380,7 @@ class Input extends _baseComponent.default {
|
|
|
379
380
|
maxLength,
|
|
380
381
|
getValueLength
|
|
381
382
|
} = _a,
|
|
382
|
-
rest = __rest(_a, ["addonAfter", "addonBefore", "autofocus", "className", "disabled", "placeholder", "prefix", "mode", "insetLabel", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength"]);
|
|
383
|
+
rest = __rest(_a, ["addonAfter", "addonBefore", "autofocus", "className", "disabled", "placeholder", "prefix", "mode", "insetLabel", "insetLabelId", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength"]);
|
|
383
384
|
|
|
384
385
|
const {
|
|
385
386
|
value,
|
|
@@ -267,18 +267,20 @@ 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
|
});
|
|
281
|
-
const itemProps = (0, _assign.default)((0, _assign.default)({}, (0, _omit2.default)(rest, 'insetLabel', 'getValueLength', 'onClear', 'showClear')), {
|
|
283
|
+
const itemProps = (0, _assign.default)((0, _assign.default)({}, (0, _omit2.default)(rest, 'insetLabel', 'insetLabelId', 'getValueLength', 'onClear', 'showClear')), {
|
|
282
284
|
className: itemCls,
|
|
283
285
|
disabled,
|
|
284
286
|
readOnly: readonly,
|
|
@@ -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
|
}
|
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
|
},
|
|
@@ -332,6 +330,7 @@ class TimePicker extends _baseComponent.default {
|
|
|
332
330
|
panelFooter,
|
|
333
331
|
rangeSeparator,
|
|
334
332
|
onOpenChange,
|
|
333
|
+
onChangeWithDateFirst,
|
|
335
334
|
popupClassName: propPopupClassName,
|
|
336
335
|
hideDisabledOptions,
|
|
337
336
|
use12Hours,
|
|
@@ -343,7 +342,7 @@ class TimePicker extends _baseComponent.default {
|
|
|
343
342
|
motion,
|
|
344
343
|
autoAdjustOverflow
|
|
345
344
|
} = _a,
|
|
346
|
-
rest = __rest(_a, ["prefixCls", "placeholder", "disabled", "defaultValue", "className", "popupStyle", "size", "style", "locale", "localeCode", "zIndex", "getPopupContainer", "insetLabel", "insetLabelId", "inputStyle", "showClear", "panelHeader", "panelFooter", "rangeSeparator", "onOpenChange", "popupClassName", "hideDisabledOptions", "use12Hours", "minuteStep", "hourStep", "secondStep", "scrollItemProps", "triggerRender", "motion", "autoAdjustOverflow"]);
|
|
345
|
+
rest = __rest(_a, ["prefixCls", "placeholder", "disabled", "defaultValue", "className", "popupStyle", "size", "style", "locale", "localeCode", "zIndex", "getPopupContainer", "insetLabel", "insetLabelId", "inputStyle", "showClear", "panelHeader", "panelFooter", "rangeSeparator", "onOpenChange", "onChangeWithDateFirst", "popupClassName", "hideDisabledOptions", "use12Hours", "minuteStep", "hourStep", "secondStep", "scrollItemProps", "triggerRender", "motion", "autoAdjustOverflow"]);
|
|
347
346
|
|
|
348
347
|
const format = this.foundation.getDefaultFormatIfNeed();
|
|
349
348
|
const position = this.foundation.getPosition();
|
|
@@ -503,6 +502,7 @@ TimePicker.defaultProps = (0, _assign.default)({
|
|
|
503
502
|
onFocus: _noop2.default,
|
|
504
503
|
onBlur: _noop2.default,
|
|
505
504
|
onChange: _noop2.default,
|
|
505
|
+
onChangeWithDateFirst: true,
|
|
506
506
|
use12Hours: false,
|
|
507
507
|
focusOnOpen: false,
|
|
508
508
|
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/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
|
|
@@ -572,14 +572,18 @@ export default class DatePicker extends BaseComponent {
|
|
|
572
572
|
onRangeEndTabPress: this.handleRangeEndTabPress
|
|
573
573
|
});
|
|
574
574
|
|
|
575
|
-
return
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
575
|
+
return (
|
|
576
|
+
/*#__PURE__*/
|
|
577
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
578
|
+
React.createElement("div", {
|
|
579
|
+
onClick: this.handleTriggerWrapperClick,
|
|
580
|
+
className: inputCls
|
|
581
|
+
}, typeof triggerRender === 'function' ? /*#__PURE__*/React.createElement(Trigger, _Object$assign({}, props, {
|
|
582
|
+
triggerRender: triggerRender,
|
|
583
|
+
componentName: "DatePicker",
|
|
584
|
+
componentProps: _Object$assign({}, this.props)
|
|
585
|
+
})) : /*#__PURE__*/React.createElement(DateInput, _Object$assign({}, props)))
|
|
586
|
+
);
|
|
583
587
|
}
|
|
584
588
|
|
|
585
589
|
render() {
|
|
@@ -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/es/input/index.js
CHANGED
|
@@ -337,6 +337,7 @@ class Input extends BaseComponent {
|
|
|
337
337
|
prefix,
|
|
338
338
|
mode,
|
|
339
339
|
insetLabel,
|
|
340
|
+
insetLabelId,
|
|
340
341
|
validateStatus,
|
|
341
342
|
type,
|
|
342
343
|
readonly,
|
|
@@ -352,7 +353,7 @@ class Input extends BaseComponent {
|
|
|
352
353
|
maxLength,
|
|
353
354
|
getValueLength
|
|
354
355
|
} = _a,
|
|
355
|
-
rest = __rest(_a, ["addonAfter", "addonBefore", "autofocus", "className", "disabled", "placeholder", "prefix", "mode", "insetLabel", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength"]);
|
|
356
|
+
rest = __rest(_a, ["addonAfter", "addonBefore", "autofocus", "className", "disabled", "placeholder", "prefix", "mode", "insetLabel", "insetLabelId", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength"]);
|
|
356
357
|
|
|
357
358
|
const {
|
|
358
359
|
value,
|