@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.
Files changed (73) hide show
  1. package/datePicker/_story/RenderDate/index.js +13 -3
  2. package/datePicker/_story/RenderFullDate/index.js +36 -14
  3. package/datePicker/_story/RenderFullDate/index.scss +1 -1
  4. package/datePicker/_story/datePicker.stories.js +19 -11
  5. package/datePicker/_story/v2/PanelOpen.jsx +39 -0
  6. package/datePicker/_story/v2/index.js +2 -1
  7. package/datePicker/datePicker.tsx +1 -0
  8. package/dist/css/semi.css +34 -9
  9. package/dist/css/semi.min.css +1 -1
  10. package/dist/umd/semi-ui.js +92 -33
  11. package/dist/umd/semi-ui.js.map +1 -1
  12. package/dist/umd/semi-ui.min.js +1 -1
  13. package/dist/umd/semi-ui.min.js.map +1 -1
  14. package/dropdown/index.tsx +11 -3
  15. package/form/_story/demo.jsx +1 -0
  16. package/input/index.tsx +1 -0
  17. package/input/textarea.tsx +6 -4
  18. package/inputNumber/__test__/inputNumber.test.js +36 -8
  19. package/inputNumber/index.tsx +2 -1
  20. package/lib/cjs/datePicker/datePicker.js +12 -8
  21. package/lib/cjs/dropdown/index.d.ts +10 -3
  22. package/lib/cjs/input/index.js +2 -1
  23. package/lib/cjs/input/textarea.js +5 -3
  24. package/lib/cjs/inputNumber/index.js +3 -2
  25. package/lib/cjs/list/index.d.ts +4 -4
  26. package/lib/cjs/navigation/Item.js +1 -1
  27. package/lib/cjs/navigation/SubNav.js +1 -1
  28. package/lib/cjs/scrollList/scrollItem.d.ts +5 -1
  29. package/lib/cjs/scrollList/scrollItem.js +7 -0
  30. package/lib/cjs/select/index.js +1 -1
  31. package/lib/cjs/table/Table.js +9 -5
  32. package/lib/cjs/timePicker/TimePicker.d.ts +2 -0
  33. package/lib/cjs/timePicker/TimePicker.js +4 -4
  34. package/lib/cjs/timePicker/index.d.ts +1 -0
  35. package/lib/cjs/tree/treeNode.js +10 -1
  36. package/lib/cjs/treeSelect/index.js +11 -3
  37. package/lib/cjs/typography/util.js +0 -1
  38. package/lib/es/datePicker/datePicker.js +12 -8
  39. package/lib/es/dropdown/index.d.ts +10 -3
  40. package/lib/es/input/index.js +2 -1
  41. package/lib/es/input/textarea.js +5 -3
  42. package/lib/es/inputNumber/index.js +3 -2
  43. package/lib/es/list/index.d.ts +4 -4
  44. package/lib/es/navigation/Item.js +1 -1
  45. package/lib/es/navigation/SubNav.js +1 -1
  46. package/lib/es/scrollList/scrollItem.d.ts +5 -1
  47. package/lib/es/scrollList/scrollItem.js +7 -0
  48. package/lib/es/select/index.js +1 -1
  49. package/lib/es/table/Table.js +9 -5
  50. package/lib/es/timePicker/TimePicker.d.ts +2 -0
  51. package/lib/es/timePicker/TimePicker.js +4 -4
  52. package/lib/es/timePicker/index.d.ts +1 -0
  53. package/lib/es/tree/treeNode.js +9 -1
  54. package/lib/es/treeSelect/index.js +12 -4
  55. package/lib/es/typography/util.js +0 -1
  56. package/list/index.tsx +5 -5
  57. package/navigation/Item.tsx +1 -1
  58. package/navigation/SubNav.tsx +1 -1
  59. package/package.json +9 -8
  60. package/scrollList/scrollItem.tsx +10 -3
  61. package/select/index.tsx +6 -1
  62. package/table/Table.tsx +9 -6
  63. package/table/_story/table.stories.js +2 -0
  64. package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
  65. package/table/_story/v2/FixedZIndex/index.jsx +87 -0
  66. package/timePicker/TimePicker.tsx +4 -1
  67. package/timePicker/__test__/timePicker.test.js +42 -3
  68. package/timePicker/_story/timepicker.stories.js +18 -0
  69. package/tree/treeNode.tsx +9 -2
  70. package/treeSelect/__test__/treeSelect.test.js +157 -0
  71. package/treeSelect/index.tsx +21 -12
  72. package/typography/_story/typography.stories.js +8 -0
  73. package/typography/util.tsx +0 -1
@@ -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
- export interface DropDownMenuItemBasic {
29
- node: 'title' | 'item' | 'divider';
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 = DropDownMenuItemBasic & DropdownItemProps & DropdownDividerProps & DropdownTitleProps;
41
+ export type DropDownMenuItem = DropDownMenuItemItem | DropDownMenuItemDivider | DropDownMenuItemTitle;
34
42
 
35
43
  export interface DropdownProps extends TooltipProps {
36
44
  render?: React.ReactNode;
@@ -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
@@ -387,6 +387,7 @@ class Input extends BaseComponent<InputProps, InputState> {
387
387
  prefix,
388
388
  mode,
389
389
  insetLabel,
390
+ insetLabelId,
390
391
  validateStatus,
391
392
  type,
392
393
  readonly,
@@ -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 || readonly,
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 || readonly,
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
  });
@@ -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 /*#__PURE__*/_react.default.createElement("div", {
608
- onClick: this.handleTriggerWrapperClick,
609
- className: inputCls
610
- }, typeof triggerRender === 'function' ? /*#__PURE__*/_react.default.createElement(_trigger.default, (0, _assign.default)({}, props, {
611
- triggerRender: triggerRender,
612
- componentName: "DatePicker",
613
- componentProps: (0, _assign.default)({}, this.props)
614
- })) : /*#__PURE__*/_react.default.createElement(_dateInput.default, (0, _assign.default)({}, props)));
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 DropDownMenuItemBasic {
16
- node: 'title' | 'item' | 'divider';
15
+ export interface DropDownMenuItemItem extends DropdownItemProps {
16
+ node: 'item';
17
17
  name?: string;
18
18
  }
19
- export declare type DropDownMenuItem = DropDownMenuItemBasic & DropdownItemProps & DropdownDividerProps & DropdownTitleProps;
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;
@@ -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 || readonly,
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 || readonly,
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,
@@ -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?: any[];
19
- renderItem?: (item: any, ind: number) => React.ReactNode;
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
- declare type DebounceSelectFn = (e: React.UIEvent, newSelectedNode: HTMLElement) => void;
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 {
@@ -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: new Date().valueOf()
566
+ key: option.key || option.label
567
567
  }, customCreateItem)
568
568
  );
569
569
  }
@@ -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; // when dataSource has change, should reset currentPage
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: function () {
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;
@@ -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
- return customLabel;
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)(new _set.default((0, _keys.default)(newState.keyEntities)), new _set.default((0, _keys.default)(prevState.keyEntities)))) {
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
- newState.selectedKeys = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject) || '', valueEntities, isMultiple);
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
- checkedKeyValues = (0, _treeUtil.findKeysForValues)((0, _treeUtil.normalizeValue)(props.value, withObject) || [], valueEntities, isMultiple);
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 /*#__PURE__*/React.createElement("div", {
576
- onClick: this.handleTriggerWrapperClick,
577
- className: inputCls
578
- }, typeof triggerRender === 'function' ? /*#__PURE__*/React.createElement(Trigger, _Object$assign({}, props, {
579
- triggerRender: triggerRender,
580
- componentName: "DatePicker",
581
- componentProps: _Object$assign({}, this.props)
582
- })) : /*#__PURE__*/React.createElement(DateInput, _Object$assign({}, props)));
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 DropDownMenuItemBasic {
16
- node: 'title' | 'item' | 'divider';
15
+ export interface DropDownMenuItemItem extends DropdownItemProps {
16
+ node: 'item';
17
17
  name?: string;
18
18
  }
19
- export declare type DropDownMenuItem = DropDownMenuItemBasic & DropdownItemProps & DropdownDividerProps & DropdownTitleProps;
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;
@@ -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,