@douyinfe/semi-ui 2.52.0-beta.1 → 2.53.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/css/semi.css +1 -0
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +930 -1249
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/_utils/index.d.ts +2 -0
  8. package/lib/cjs/_utils/index.js +77 -0
  9. package/lib/cjs/_utils/semi-global.d.ts +46 -0
  10. package/lib/cjs/_utils/semi-global.js +13 -0
  11. package/lib/cjs/autoComplete/index.d.ts +2 -25
  12. package/lib/cjs/autoComplete/index.js +4 -2
  13. package/lib/cjs/avatar/index.d.ts +2 -10
  14. package/lib/cjs/avatar/index.js +4 -2
  15. package/lib/cjs/backtop/index.d.ts +2 -5
  16. package/lib/cjs/backtop/index.js +4 -2
  17. package/lib/cjs/button/Button.d.ts +1 -1
  18. package/lib/cjs/button/index.d.ts +3 -1
  19. package/lib/cjs/button/index.js +3 -0
  20. package/lib/cjs/carousel/index.d.ts +2 -2
  21. package/lib/cjs/cascader/index.d.ts +5 -33
  22. package/lib/cjs/cascader/index.js +34 -23
  23. package/lib/cjs/collapse/index.d.ts +2 -7
  24. package/lib/cjs/collapse/index.js +4 -2
  25. package/lib/cjs/collapsible/index.d.ts +3 -9
  26. package/lib/cjs/collapsible/index.js +4 -2
  27. package/lib/cjs/configProvider/index.d.ts +2 -1
  28. package/lib/cjs/configProvider/index.js +5 -2
  29. package/lib/cjs/datePicker/datePicker.d.ts +2 -44
  30. package/lib/cjs/datePicker/datePicker.js +5 -3
  31. package/lib/cjs/datePicker/yearAndMonth.js +20 -16
  32. package/lib/cjs/dropdown/index.d.ts +2 -12
  33. package/lib/cjs/dropdown/index.js +4 -2
  34. package/lib/cjs/form/arrayField.js +3 -3
  35. package/lib/cjs/form/hoc/withField.d.ts +3 -3
  36. package/lib/cjs/modal/Modal.d.ts +2 -20
  37. package/lib/cjs/modal/Modal.js +5 -4
  38. package/lib/cjs/modal/confirm.d.ts +14 -14
  39. package/lib/cjs/navigation/index.d.ts +2 -15
  40. package/lib/cjs/navigation/index.js +4 -2
  41. package/lib/cjs/notification/notice.d.ts +2 -12
  42. package/lib/cjs/notification/notice.js +3 -2
  43. package/lib/cjs/overflowList/index.d.ts +2 -9
  44. package/lib/cjs/overflowList/index.js +3 -2
  45. package/lib/cjs/popconfirm/index.d.ts +2 -15
  46. package/lib/cjs/popconfirm/index.js +4 -2
  47. package/lib/cjs/popover/index.d.ts +2 -23
  48. package/lib/cjs/popover/index.js +4 -2
  49. package/lib/cjs/resizeObserver/index.d.ts +14 -2
  50. package/lib/cjs/resizeObserver/index.js +66 -32
  51. package/lib/cjs/select/index.d.ts +1 -0
  52. package/lib/cjs/select/index.js +3 -2
  53. package/lib/cjs/select/option.js +2 -1
  54. package/lib/cjs/sideSheet/index.d.ts +1 -0
  55. package/lib/cjs/sideSheet/index.js +3 -2
  56. package/lib/cjs/table/ResizableTable.js +1 -1
  57. package/lib/cjs/tabs/index.d.ts +1 -0
  58. package/lib/cjs/tabs/index.js +4 -2
  59. package/lib/cjs/timePicker/TimePicker.d.ts +1 -1
  60. package/lib/cjs/timePicker/index.d.ts +2 -34
  61. package/lib/cjs/timePicker/index.js +3 -1
  62. package/lib/cjs/toast/toast.d.ts +2 -11
  63. package/lib/cjs/toast/toast.js +3 -2
  64. package/lib/cjs/tooltip/index.d.ts +2 -32
  65. package/lib/cjs/tooltip/index.js +3 -2
  66. package/lib/cjs/typography/base.d.ts +7 -4
  67. package/lib/cjs/typography/base.js +127 -64
  68. package/lib/cjs/typography/numeral.d.ts +1 -1
  69. package/lib/cjs/typography/paragraph.d.ts +1 -1
  70. package/lib/cjs/typography/text.d.ts +1 -1
  71. package/lib/cjs/typography/title.d.ts +1 -1
  72. package/lib/es/_utils/index.d.ts +2 -0
  73. package/lib/es/_utils/index.js +75 -0
  74. package/lib/es/_utils/semi-global.d.ts +46 -0
  75. package/lib/es/_utils/semi-global.js +6 -0
  76. package/lib/es/autoComplete/index.d.ts +2 -25
  77. package/lib/es/autoComplete/index.js +4 -2
  78. package/lib/es/avatar/index.d.ts +2 -10
  79. package/lib/es/avatar/index.js +4 -2
  80. package/lib/es/backtop/index.d.ts +2 -5
  81. package/lib/es/backtop/index.js +4 -2
  82. package/lib/es/button/Button.d.ts +1 -1
  83. package/lib/es/button/index.d.ts +3 -1
  84. package/lib/es/button/index.js +3 -0
  85. package/lib/es/carousel/index.d.ts +2 -2
  86. package/lib/es/cascader/index.d.ts +5 -33
  87. package/lib/es/cascader/index.js +35 -24
  88. package/lib/es/collapse/index.d.ts +2 -7
  89. package/lib/es/collapse/index.js +4 -2
  90. package/lib/es/collapsible/index.d.ts +3 -9
  91. package/lib/es/collapsible/index.js +4 -2
  92. package/lib/es/configProvider/index.d.ts +2 -1
  93. package/lib/es/configProvider/index.js +5 -2
  94. package/lib/es/datePicker/datePicker.d.ts +2 -44
  95. package/lib/es/datePicker/datePicker.js +5 -3
  96. package/lib/es/datePicker/yearAndMonth.js +20 -16
  97. package/lib/es/dropdown/index.d.ts +2 -12
  98. package/lib/es/dropdown/index.js +4 -2
  99. package/lib/es/form/arrayField.js +3 -3
  100. package/lib/es/form/hoc/withField.d.ts +3 -3
  101. package/lib/es/modal/Modal.d.ts +2 -20
  102. package/lib/es/modal/Modal.js +6 -5
  103. package/lib/es/modal/confirm.d.ts +14 -14
  104. package/lib/es/navigation/index.d.ts +2 -15
  105. package/lib/es/navigation/index.js +4 -2
  106. package/lib/es/notification/notice.d.ts +2 -12
  107. package/lib/es/notification/notice.js +4 -3
  108. package/lib/es/overflowList/index.d.ts +2 -9
  109. package/lib/es/overflowList/index.js +4 -3
  110. package/lib/es/popconfirm/index.d.ts +2 -15
  111. package/lib/es/popconfirm/index.js +4 -2
  112. package/lib/es/popover/index.d.ts +2 -23
  113. package/lib/es/popover/index.js +4 -2
  114. package/lib/es/resizeObserver/index.d.ts +14 -2
  115. package/lib/es/resizeObserver/index.js +64 -31
  116. package/lib/es/select/index.d.ts +1 -0
  117. package/lib/es/select/index.js +4 -3
  118. package/lib/es/select/option.js +2 -1
  119. package/lib/es/sideSheet/index.d.ts +1 -0
  120. package/lib/es/sideSheet/index.js +4 -3
  121. package/lib/es/table/ResizableTable.js +1 -1
  122. package/lib/es/tabs/index.d.ts +1 -0
  123. package/lib/es/tabs/index.js +4 -2
  124. package/lib/es/timePicker/TimePicker.d.ts +1 -1
  125. package/lib/es/timePicker/index.d.ts +2 -34
  126. package/lib/es/timePicker/index.js +3 -1
  127. package/lib/es/toast/toast.d.ts +2 -11
  128. package/lib/es/toast/toast.js +4 -3
  129. package/lib/es/tooltip/index.d.ts +2 -32
  130. package/lib/es/tooltip/index.js +4 -3
  131. package/lib/es/typography/base.d.ts +7 -4
  132. package/lib/es/typography/base.js +128 -65
  133. package/lib/es/typography/numeral.d.ts +1 -1
  134. package/lib/es/typography/paragraph.d.ts +1 -1
  135. package/lib/es/typography/text.d.ts +1 -1
  136. package/lib/es/typography/title.d.ts +1 -1
  137. package/package.json +9 -9
  138. package/dist/umd/semi-ui.min.js.LICENSE.txt +0 -5
@@ -14,7 +14,7 @@ export interface CarouselState {
14
14
  declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
15
15
  static propTypes: {
16
16
  activeIndex: PropTypes.Requireable<number>;
17
- animation: PropTypes.Requireable<"slide" | "fade">;
17
+ animation: PropTypes.Requireable<"fade" | "slide">;
18
18
  arrowProps: PropTypes.Requireable<object>;
19
19
  autoPlay: PropTypes.Requireable<NonNullable<boolean | object>>;
20
20
  className: PropTypes.Requireable<string>;
@@ -24,7 +24,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
24
24
  indicatorType: PropTypes.Requireable<"line" | "dot" | "columnar">;
25
25
  theme: PropTypes.Requireable<"dark" | "light" | "primary">;
26
26
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
27
- arrowType: PropTypes.Requireable<"always" | "hover">;
27
+ arrowType: PropTypes.Requireable<"hover" | "always">;
28
28
  showArrow: PropTypes.Requireable<boolean>;
29
29
  showIndicator: PropTypes.Requireable<boolean>;
30
30
  slideDirection: PropTypes.Requireable<"left" | "right">;
@@ -66,6 +66,7 @@ export interface CascaderState extends BasicCascaderInnerData {
66
66
  treeData?: Array<CascaderData>;
67
67
  }
68
68
  declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
69
+ static __SemiComponentName__: string;
69
70
  static contextType: React.Context<ContextValue>;
70
71
  static propTypes: {
71
72
  'aria-labelledby': PropTypes.Requireable<string>;
@@ -143,37 +144,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
143
144
  preventScroll: PropTypes.Requireable<boolean>;
144
145
  position: PropTypes.Requireable<string>;
145
146
  };
146
- static defaultProps: {
147
- borderless: boolean;
148
- leafOnly: boolean;
149
- arrowIcon: JSX.Element;
150
- stopPropagation: boolean;
151
- motion: boolean;
152
- defaultOpen: boolean;
153
- zIndex: number;
154
- showClear: boolean;
155
- autoClearSearchValue: boolean;
156
- changeOnSelect: boolean;
157
- disableStrictly: boolean;
158
- autoMergeValue: boolean;
159
- multiple: boolean;
160
- filterTreeNode: boolean;
161
- filterLeafOnly: boolean;
162
- showRestTagsPopover: boolean;
163
- restTagsPopoverProps: {};
164
- separator: string;
165
- size: "default";
166
- treeNodeFilterProp: "label";
167
- displayProp: "label";
168
- treeData: CascaderData[];
169
- showNext: "click";
170
- onExceed: (...args: any[]) => void;
171
- onClear: (...args: any[]) => void;
172
- onDropdownVisibleChange: (...args: any[]) => void;
173
- onListScroll: (...args: any[]) => void;
174
- enableLeafClick: boolean;
175
- 'aria-label': string;
176
- };
147
+ static defaultProps: any;
177
148
  options: any;
178
149
  isEmpty: boolean;
179
150
  inputRef: React.RefObject<typeof Input>;
@@ -191,9 +162,10 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
191
162
  componentWillUnmount(): void;
192
163
  componentDidUpdate(prevProps: CascaderProps): void;
193
164
  handleInputChange: (value: string) => void;
194
- handleTagRemove: (e: any, tagValuePath: Array<string | number>) => void;
195
- handleRemoveByKey: (key: any) => void;
165
+ handleTagRemoveInTrigger: (pos: string) => void;
166
+ handleTagClose: (tagChildren: React.ReactNode, e: React.MouseEvent<HTMLElement>, tagKey: string | number) => void;
196
167
  renderTagItem: (nodeKey: string, idx: number) => string | number | boolean | React.ReactFragment | JSX.Element;
168
+ onRemoveInTagInput: (v: string) => void;
197
169
  renderTagInput(): JSX.Element;
198
170
  renderInput(): JSX.Element;
199
171
  handleItemClick: (e: MouseEvent | KeyboardEvent, item: Entity | Data) => void;
@@ -25,7 +25,7 @@ import Item from './item';
25
25
  import Trigger from '../trigger';
26
26
  import Tag from '../tag';
27
27
  import TagInput from '../tagInput';
28
- import { isSemiIcon } from '../_utils';
28
+ import { getDefaultPropsFromGlobalConfig, isSemiIcon } from '../_utils';
29
29
  const prefixcls = cssClasses.PREFIX;
30
30
  const resetkey = 0;
31
31
  class Cascader extends BaseComponent {
@@ -34,14 +34,13 @@ class Cascader extends BaseComponent {
34
34
  this.handleInputChange = value => {
35
35
  this.foundation.handleInputChange(value);
36
36
  };
37
- this.handleTagRemove = (e, tagValuePath) => {
38
- this.foundation.handleTagRemove(e, tagValuePath);
37
+ this.handleTagRemoveInTrigger = pos => {
38
+ this.foundation.handleTagRemoveInTrigger(pos);
39
39
  };
40
- this.handleRemoveByKey = key => {
41
- const {
42
- keyEntities
43
- } = this.state;
44
- this.handleTagRemove(null, keyEntities[key].valuePath);
40
+ this.handleTagClose = (tagChildren, e, tagKey) => {
41
+ // When value has not changed, prevent clicking tag closeBtn to close tag
42
+ e.preventDefault();
43
+ this.foundation.handleTagRemoveByKey(tagKey);
45
44
  };
46
45
  this.renderTagItem = (nodeKey, idx) => {
47
46
  const {
@@ -69,18 +68,18 @@ class Cascader extends BaseComponent {
69
68
  size: size === 'default' ? 'large' : size,
70
69
  key: `tag-${nodeKey}-${idx}`,
71
70
  color: "white",
71
+ tagKey: nodeKey,
72
72
  className: tagCls,
73
73
  closable: true,
74
- onClose: (tagChildren, e) => {
75
- // When value has not changed, prevent clicking tag closeBtn to close tag
76
- e.preventDefault();
77
- this.handleTagRemove(e, keyEntities[nodeKey].valuePath);
78
- }
74
+ onClose: this.handleTagClose
79
75
  }, keyEntities[nodeKey].data[displayProp]);
80
76
  }
81
77
  }
82
78
  return null;
83
79
  };
80
+ this.onRemoveInTagInput = v => {
81
+ this.foundation.handleTagRemoveByKey(v);
82
+ };
84
83
  this.handleItemClick = (e, item) => {
85
84
  this.foundation.handleItemClick(e, item);
86
85
  };
@@ -280,6 +279,7 @@ class Cascader extends BaseComponent {
280
279
  }, labelNode);
281
280
  };
282
281
  this.renderCustomTrigger = () => {
282
+ var _a;
283
283
  const {
284
284
  disabled,
285
285
  triggerRender,
@@ -290,17 +290,26 @@ class Cascader extends BaseComponent {
290
290
  inputValue,
291
291
  inputPlaceHolder,
292
292
  resolvedCheckedKeys,
293
- checkedKeys
293
+ checkedKeys,
294
+ keyEntities
294
295
  } = this.state;
295
296
  let realValue;
296
297
  if (multiple) {
297
298
  if (this.mergeType === strings.NONE_MERGE_TYPE) {
298
- realValue = checkedKeys;
299
+ realValue = new Set();
300
+ checkedKeys.forEach(key => {
301
+ var _a;
302
+ realValue.add((_a = keyEntities[key]) === null || _a === void 0 ? void 0 : _a.pos);
303
+ });
299
304
  } else {
300
- realValue = resolvedCheckedKeys;
305
+ realValue = new Set();
306
+ resolvedCheckedKeys.forEach(key => {
307
+ var _a;
308
+ realValue.add((_a = keyEntities[key]) === null || _a === void 0 ? void 0 : _a.pos);
309
+ });
301
310
  }
302
311
  } else {
303
- realValue = [...selectedKeys][0];
312
+ realValue = (_a = keyEntities[[...selectedKeys][0]]) === null || _a === void 0 ? void 0 : _a.pos;
304
313
  }
305
314
  return /*#__PURE__*/React.createElement(Trigger, {
306
315
  value: realValue,
@@ -313,7 +322,7 @@ class Cascader extends BaseComponent {
313
322
  componentName: 'Cascader',
314
323
  componentProps: Object.assign({}, this.props),
315
324
  onSearch: this.handleInputChange,
316
- onRemove: this.handleRemoveByKey
325
+ onRemove: this.handleTagRemoveInTrigger
317
326
  });
318
327
  };
319
328
  this.handleMouseOver = () => {
@@ -344,11 +353,12 @@ class Cascader extends BaseComponent {
344
353
  selectedKeys,
345
354
  isOpen,
346
355
  isHovering,
347
- checkedKeys
356
+ checkedKeys,
357
+ inputValue
348
358
  } = this.state;
349
359
  const hasValue = selectedKeys.size;
350
360
  const multipleWithHaveValue = multiple && checkedKeys.size;
351
- return showClear && (hasValue || multipleWithHaveValue) && !disabled && (isOpen || isHovering);
361
+ return showClear && (inputValue || hasValue || multipleWithHaveValue) && !disabled && (isOpen || isHovering);
352
362
  };
353
363
  this.renderClearBtn = () => {
354
364
  const clearCls = cls(`${prefixcls}-clearbtn`);
@@ -797,11 +807,11 @@ class Cascader extends BaseComponent {
797
807
  showRestTagsPopover: showRestTagsPopover,
798
808
  restTagsPopoverProps: restTagsPopoverProps,
799
809
  maxTagCount: maxTagCount,
800
- renderTagItem: (value, index) => this.renderTagItem(value, index),
810
+ renderTagItem: this.renderTagItem,
801
811
  inputValue: inputValue,
802
812
  onInputChange: this.handleInputChange,
803
813
  // TODO Modify logic, not modify type
804
- onRemove: v => this.handleTagRemove(null, v),
814
+ onRemove: this.onRemoveInTagInput,
805
815
  placeholder: placeholder,
806
816
  expandRestTagsOnClick: false
807
817
  });
@@ -895,6 +905,7 @@ class Cascader extends BaseComponent {
895
905
  }, selection);
896
906
  }
897
907
  }
908
+ Cascader.__SemiComponentName__ = "Cascader";
898
909
  Cascader.contextType = ConfigContext;
899
910
  Cascader.propTypes = {
900
911
  'aria-labelledby': PropTypes.string,
@@ -973,7 +984,7 @@ Cascader.propTypes = {
973
984
  preventScroll: PropTypes.bool,
974
985
  position: PropTypes.string
975
986
  };
976
- Cascader.defaultProps = {
987
+ Cascader.defaultProps = getDefaultPropsFromGlobalConfig(Cascader.__SemiComponentName__, {
977
988
  borderless: false,
978
989
  leafOnly: false,
979
990
  arrowIcon: /*#__PURE__*/React.createElement(IconChevronDown, null),
@@ -1003,5 +1014,5 @@ Cascader.defaultProps = {
1003
1014
  onListScroll: _noop,
1004
1015
  enableLeafClick: false,
1005
1016
  'aria-label': 'Cascader'
1006
- };
1017
+ });
1007
1018
  export default Cascader;
@@ -4,7 +4,6 @@ import { CollapseAdapter, CollapseProps, CollapseState } from '@douyinfe/semi-fo
4
4
  import BaseComponent from '../_base/baseComponent';
5
5
  import CollapsePanel from './item';
6
6
  import '@douyinfe/semi-foundation/lib/es/collapse/collapse.css';
7
- import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
8
7
  export type { CollapsePanelProps } from './item';
9
8
  export interface CollapseReactProps extends CollapseProps {
10
9
  expandIcon?: React.ReactNode;
@@ -30,12 +29,8 @@ declare class Collapse extends BaseComponent<CollapseReactProps, CollapseState>
30
29
  motion: PropTypes.Requireable<NonNullable<boolean | object>>;
31
30
  expandIconPosition: PropTypes.Requireable<string>;
32
31
  };
33
- static defaultProps: {
34
- defaultActiveKey: string;
35
- clickHeaderToExpand: boolean;
36
- onChange: typeof noop;
37
- expandIconPosition: string;
38
- };
32
+ static __SemiComponentName__: string;
33
+ static defaultProps: any;
39
34
  constructor(props: CollapseReactProps);
40
35
  get adapter(): CollapseAdapter;
41
36
  static getDerivedStateFromProps(props: CollapseReactProps, state: CollapseState): CollapseState;
@@ -17,6 +17,7 @@ import CollapsePanel from './item';
17
17
  import '@douyinfe/semi-foundation/lib/es/collapse/collapse.css';
18
18
  import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
19
19
  import CollapseContext from './collapse-context';
20
+ import { getDefaultPropsFromGlobalConfig } from "../_utils";
20
21
  class Collapse extends BaseComponent {
21
22
  constructor(props) {
22
23
  super(props);
@@ -106,10 +107,11 @@ Collapse.propTypes = {
106
107
  motion: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object]),
107
108
  expandIconPosition: PropTypes.oneOf(strings.iconPosition)
108
109
  };
109
- Collapse.defaultProps = {
110
+ Collapse.__SemiComponentName__ = "Collapse";
111
+ Collapse.defaultProps = getDefaultPropsFromGlobalConfig(Collapse.__SemiComponentName__, {
110
112
  defaultActiveKey: '',
111
113
  clickHeaderToExpand: true,
112
114
  onChange: noop,
113
115
  expandIconPosition: 'right'
114
- };
116
+ });
115
117
  export default Collapse;
@@ -3,7 +3,7 @@ import type { CollapsibleAdapter, CollapsibleFoundationProps, CollapsibleFoundat
3
3
  import CollapsibleFoundation from '@douyinfe/semi-foundation/lib/es/collapsible/foundation';
4
4
  import BaseComponent from "../_base/baseComponent";
5
5
  import '@douyinfe/semi-foundation/lib/es/collapsible/collapsible.css';
6
- interface CollapsibleProps extends CollapsibleFoundationProps {
6
+ export interface CollapsibleProps extends CollapsibleFoundationProps {
7
7
  motion?: boolean;
8
8
  children?: React.ReactNode;
9
9
  isOpen?: boolean;
@@ -23,14 +23,8 @@ interface CollapsibleState extends CollapsibleFoundationState {
23
23
  isTransitioning: boolean;
24
24
  }
25
25
  declare class Collapsible extends BaseComponent<CollapsibleProps, CollapsibleState> {
26
- static defaultProps: {
27
- isOpen: boolean;
28
- duration: number;
29
- motion: boolean;
30
- keepDOM: boolean;
31
- collapseHeight: number;
32
- fade: boolean;
33
- };
26
+ static __SemiComponentName__: string;
27
+ static defaultProps: any;
34
28
  foundation: CollapsibleFoundation;
35
29
  private domRef;
36
30
  private resizeObserver;
@@ -6,6 +6,7 @@ import PropTypes from "prop-types";
6
6
  import cls from "classnames";
7
7
  import { cssClasses } from '@douyinfe/semi-foundation/lib/es/collapsible/constants';
8
8
  import '@douyinfe/semi-foundation/lib/es/collapsible/collapsible.css';
9
+ import { getDefaultPropsFromGlobalConfig } from "../_utils";
9
10
  class Collapsible extends BaseComponent {
10
11
  constructor(props) {
11
12
  super(props);
@@ -128,14 +129,15 @@ class Collapsible extends BaseComponent {
128
129
  }, (this.props.keepDOM || this.props.collapseHeight !== 0 || this.state.visible || this.props.isOpen) && this.props.children));
129
130
  }
130
131
  }
131
- Collapsible.defaultProps = {
132
+ Collapsible.__SemiComponentName__ = "Collapsible";
133
+ Collapsible.defaultProps = getDefaultPropsFromGlobalConfig(Collapsible.__SemiComponentName__, {
132
134
  isOpen: false,
133
135
  duration: 250,
134
136
  motion: true,
135
137
  keepDOM: false,
136
138
  collapseHeight: 0,
137
139
  fade: false
138
- };
140
+ });
139
141
  Collapsible.getEntryInfo = entry => {
140
142
  //judge whether parent or self display none
141
143
  let inRenderTree;
@@ -4,6 +4,7 @@ import { ContextValue } from './context';
4
4
  export interface ConfigProviderProps extends ContextValue {
5
5
  }
6
6
  export default class ConfigProvider extends React.Component<ConfigProviderProps> {
7
+ constructor(props: ConfigProviderProps);
7
8
  static propTypes: {
8
9
  locale: PropTypes.Requireable<object>;
9
10
  timeZone: PropTypes.Requireable<NonNullable<string | number>>;
@@ -14,6 +15,6 @@ export default class ConfigProvider extends React.Component<ConfigProviderProps>
14
15
  locale: import("../locale/interface").Locale;
15
16
  direction: string;
16
17
  };
17
- renderChilren(): string | number | boolean | React.ReactFragment | JSX.Element;
18
+ renderChildren(): string | number | boolean | React.ReactFragment | JSX.Element;
18
19
  render(): JSX.Element;
19
20
  }
@@ -12,7 +12,10 @@ import { BASE_CLASS_PREFIX } from '@douyinfe/semi-foundation/lib/es/base/constan
12
12
  import DefaultLocale from '../locale/source/zh_CN';
13
13
  import Context from './context';
14
14
  export default class ConfigProvider extends React.Component {
15
- renderChilren() {
15
+ constructor(props) {
16
+ super(props);
17
+ }
18
+ renderChildren() {
16
19
  const {
17
20
  direction,
18
21
  children
@@ -35,7 +38,7 @@ export default class ConfigProvider extends React.Component {
35
38
  value: Object.assign({
36
39
  direction
37
40
  }, rest)
38
- }, this.renderChilren());
41
+ }, this.renderChildren());
39
42
  }
40
43
  }
41
44
  ConfigProvider.propTypes = {
@@ -127,50 +127,8 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
127
127
  yearAndMonthOpts: PropTypes.Requireable<object>;
128
128
  onClickOutSide: PropTypes.Requireable<(...args: any[]) => any>;
129
129
  };
130
- static defaultProps: {
131
- onChangeWithDateFirst: boolean;
132
- borderless: boolean;
133
- autoAdjustOverflow: boolean;
134
- stopPropagation: boolean;
135
- motion: boolean;
136
- prefixCls: "semi-datepicker";
137
- presetPosition: string;
138
- zIndex: number;
139
- type: string;
140
- size: string;
141
- density: string;
142
- multiple: boolean;
143
- defaultOpen: boolean;
144
- disabledHours: (...args: any[]) => void;
145
- disabledMinutes: (...args: any[]) => void;
146
- disabledSeconds: (...args: any[]) => void;
147
- hideDisabledOptions: boolean;
148
- onBlur: (...args: any[]) => void;
149
- onFocus: (...args: any[]) => void;
150
- onClear: (...args: any[]) => void;
151
- onCancel: (...args: any[]) => void;
152
- onConfirm: (...args: any[]) => void;
153
- onChange: (...args: any[]) => void;
154
- onOpenChange: (...args: any[]) => void;
155
- onPanelChange: (...args: any[]) => void;
156
- onPresetClick: (...args: any[]) => void;
157
- weekStartsOn: 0;
158
- disabledDate: {
159
- (): false;
160
- (): false;
161
- };
162
- disabledTime: {
163
- (): false;
164
- (): false;
165
- };
166
- inputReadOnly: boolean;
167
- spacing: number;
168
- autoSwitchDate: boolean;
169
- syncSwitchMonth: boolean;
170
- rangeSeparator: " ~ ";
171
- insetInput: boolean;
172
- onClickOutSide: (...args: any[]) => void;
173
- };
130
+ static __SemiComponentName__: string;
131
+ static defaultProps: any;
174
132
  triggerElRef: React.MutableRefObject<HTMLElement>;
175
133
  panelRef: React.RefObject<HTMLDivElement>;
176
134
  monthGrid: React.RefObject<MonthsGrid>;
@@ -30,6 +30,7 @@ import Footer from './footer';
30
30
  import Trigger from '../trigger';
31
31
  import YearAndMonth from './yearAndMonth';
32
32
  import '@douyinfe/semi-foundation/lib/es/datePicker/datePicker.css';
33
+ import { getDefaultPropsFromGlobalConfig } from "../_utils";
33
34
  export default class DatePicker extends BaseComponent {
34
35
  constructor(props) {
35
36
  var _this;
@@ -463,7 +464,7 @@ export default class DatePicker extends BaseComponent {
463
464
  return /range/i.test(type) && !_isFunction(triggerRender);
464
465
  }
465
466
  componentDidUpdate(prevProps) {
466
- if (prevProps.value !== this.props.value) {
467
+ if (!_isEqual(prevProps.value, this.props.value)) {
467
468
  this.foundation.initFromProps(Object.assign({}, this.props));
468
469
  } else if (this.props.timeZone !== prevProps.timeZone) {
469
470
  this.foundation.initFromProps({
@@ -837,7 +838,8 @@ DatePicker.propTypes = {
837
838
  yearAndMonthOpts: PropTypes.object,
838
839
  onClickOutSide: PropTypes.func
839
840
  };
840
- DatePicker.defaultProps = {
841
+ DatePicker.__SemiComponentName__ = "DatePicker";
842
+ DatePicker.defaultProps = getDefaultPropsFromGlobalConfig(DatePicker.__SemiComponentName__, {
841
843
  onChangeWithDateFirst: true,
842
844
  borderless: false,
843
845
  autoAdjustOverflow: true,
@@ -875,4 +877,4 @@ DatePicker.defaultProps = {
875
877
  rangeSeparator: strings.DEFAULT_SEPARATOR_RANGE,
876
878
  insetInput: false,
877
879
  onClickOutSide: _noop
878
- };
880
+ });
@@ -41,16 +41,6 @@ class YearAndMonth extends BaseComponent {
41
41
  currentYear,
42
42
  currentMonth
43
43
  } = props;
44
- const currentLeftYear = currentYear.left || now.getFullYear();
45
- const currentLeftMonth = currentMonth.left || now.getMonth() + 1;
46
- currentYear = {
47
- left: currentLeftYear,
48
- right: currentLeftYear
49
- };
50
- currentMonth = {
51
- left: currentLeftMonth,
52
- right: currentMonth.right || currentLeftMonth + 1
53
- };
54
44
  this.state = {
55
45
  years: getYears(props.startYear, props.endYear).map(year => ({
56
46
  value: year,
@@ -60,8 +50,14 @@ class YearAndMonth extends BaseComponent {
60
50
  value: idx + 1,
61
51
  month: idx + 1
62
52
  })),
63
- currentYear,
64
- currentMonth
53
+ currentYear: {
54
+ left: currentYear.left || now.getFullYear(),
55
+ right: currentYear.right || now.getFullYear()
56
+ },
57
+ currentMonth: {
58
+ left: currentMonth.left || now.getMonth() + 1,
59
+ right: currentMonth.right || now.getMonth() + 2
60
+ }
65
61
  };
66
62
  this.yearRef = /*#__PURE__*/React.createRef();
67
63
  this.monthRef = /*#__PURE__*/React.createRef();
@@ -98,11 +94,19 @@ class YearAndMonth extends BaseComponent {
98
94
  }
99
95
  static getDerivedStateFromProps(props, state) {
100
96
  const willUpdateStates = {};
101
- if (!_isEqual(props.currentYear, state.currentYear) && props.currentYear.left !== 0) {
102
- willUpdateStates.currentYear = props.currentYear;
97
+ if (!_isEqual(props.currentYear, state.currentYear)) {
98
+ const nowYear = new Date().getFullYear();
99
+ willUpdateStates.currentYear = {
100
+ left: props.currentYear.left || nowYear,
101
+ right: props.currentYear.right || nowYear
102
+ };
103
103
  }
104
- if (!_isEqual(props.currentMonth, state.currentMonth) && props.currentMonth.left !== 0) {
105
- willUpdateStates.currentMonth = props.currentMonth;
104
+ if (!_isEqual(props.currentMonth, state.currentMonth)) {
105
+ const nowMonth = new Date().getMonth();
106
+ willUpdateStates.currentMonth = {
107
+ left: props.currentMonth.left || nowMonth + 1,
108
+ right: props.currentMonth.right || nowMonth + 2
109
+ };
106
110
  }
107
111
  return willUpdateStates;
108
112
  }
@@ -76,18 +76,8 @@ declare class Dropdown extends BaseComponent<DropdownProps, DropdownState> {
76
76
  visible: PropTypes.Requireable<boolean>;
77
77
  zIndex: PropTypes.Requireable<number>;
78
78
  };
79
- static defaultProps: {
80
- onVisibleChange: (...args: any[]) => void;
81
- prefixCls: string;
82
- zIndex: 1060;
83
- motion: boolean;
84
- trigger: string;
85
- position: string;
86
- mouseLeaveDelay: number;
87
- showTick: boolean;
88
- closeOnEsc: boolean;
89
- onEscKeyDown: (...args: any[]) => void;
90
- };
79
+ static __SemiComponentName__: string;
80
+ static defaultProps: any;
91
81
  tooltipRef: React.RefObject<Tooltip>;
92
82
  constructor(props: DropdownProps);
93
83
  context: DropdownContextType;
@@ -22,6 +22,7 @@ import DropdownDivider from './dropdownDivider';
22
22
  import DropdownTitle from './dropdownTitle';
23
23
  import DropdownContext from './context';
24
24
  import '@douyinfe/semi-foundation/lib/es/dropdown/dropdown.css';
25
+ import { getDefaultPropsFromGlobalConfig } from "../_utils";
25
26
  const positionSet = strings.POSITION_SET;
26
27
  const triggerSet = strings.TRIGGER_SET;
27
28
  class Dropdown extends BaseComponent {
@@ -229,7 +230,8 @@ Dropdown.propTypes = {
229
230
  visible: PropTypes.bool,
230
231
  zIndex: PropTypes.number
231
232
  };
232
- Dropdown.defaultProps = {
233
+ Dropdown.__SemiComponentName__ = "Dropdown";
234
+ Dropdown.defaultProps = getDefaultPropsFromGlobalConfig(Dropdown.__SemiComponentName__, {
233
235
  onVisibleChange: _noop,
234
236
  prefixCls: cssClasses.PREFIX,
235
237
  zIndex: tooltipNumbers.DEFAULT_Z_INDEX,
@@ -240,5 +242,5 @@ Dropdown.defaultProps = {
240
242
  showTick: false,
241
243
  closeOnEsc: true,
242
244
  onEscKeyDown: _noop
243
- };
245
+ });
244
246
  export default Dropdown;
@@ -1,9 +1,9 @@
1
1
  import _isUndefined from "lodash/isUndefined";
2
- import _cloneDeep from "lodash/cloneDeep";
3
2
  import React, { Component } from 'react';
4
3
  import { getUuidv4 } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
5
4
  import { FormUpdaterContext, ArrayFieldContext } from './context';
6
5
  import warning from '@douyinfe/semi-foundation/lib/es/utils/warning';
6
+ import copy from 'fast-copy';
7
7
  const filterArrayByIndex = (array, index) => array.filter((item, i) => i !== index);
8
8
  const getUuidByArray = array => array.map(() => getUuidv4());
9
9
  const getUpdateKey = arrayField => {
@@ -61,8 +61,8 @@ class ArrayFieldComponent extends Component {
61
61
  // whether the fields inside arrayField should use props.initValue in current render process
62
62
  this.shouldUseInitValue = !context.getArrayField(field);
63
63
  // Separate the arrays that reset and the usual add and remove modify, otherwise they will affect each other
64
- const initValueCopyForFormState = _cloneDeep(initValue);
65
- const initValueCopyForReset = _cloneDeep(initValue);
64
+ const initValueCopyForFormState = copy(initValue);
65
+ const initValueCopyForReset = copy(initValue);
66
66
  context.registerArrayField(field, initValueCopyForReset);
67
67
  // register ArrayField will update state.updateKey to render, So there is no need to execute forceUpdate here
68
68
  context.updateStateValue(field, initValueCopyForFormState, {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { WithFieldOption } from '@douyinfe/semi-foundation/lib/es/form/interface';
3
- import { CommonFieldProps, CommonexcludeType } from '../interface';
4
- import { Subtract } from 'utility-types';
2
+ import type { WithFieldOption } from '@douyinfe/semi-foundation/lib/es/form/interface';
3
+ import type { CommonFieldProps, CommonexcludeType } from '../interface';
4
+ import type { Subtract } from 'utility-types';
5
5
  /**
6
6
  * withFiled is used to inject components
7
7
  * 1. Takes over the value and onChange of the component and synchronizes them to Form Foundation
@@ -68,26 +68,8 @@ declare class Modal extends BaseComponent<ModalReactProps, ModalState> {
68
68
  fullScreen: PropTypes.Requireable<boolean>;
69
69
  footerFill: PropTypes.Requireable<boolean>;
70
70
  };
71
- static defaultProps: {
72
- zIndex: number;
73
- motion: boolean;
74
- mask: boolean;
75
- centered: boolean;
76
- closable: boolean;
77
- visible: boolean;
78
- okType: string;
79
- maskClosable: boolean;
80
- hasCancel: boolean;
81
- onCancel: (...args: any[]) => void;
82
- onOk: (...args: any[]) => void;
83
- afterClose: (...args: any[]) => void;
84
- maskFixed: boolean;
85
- closeOnEsc: boolean;
86
- size: string;
87
- keepDOM: boolean;
88
- lazyRender: boolean;
89
- fullScreen: boolean;
90
- };
71
+ static __SemiComponentName__: string;
72
+ static defaultProps: any;
91
73
  static useModal: typeof useModal;
92
74
  foundation: ModalFoundation;
93
75
  private readonly modalRef;