@douyinfe/semi-ui 2.1.4-alpha.0 → 2.2.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 (162) hide show
  1. package/_base/_story/a11y.jsx +1302 -0
  2. package/_base/_story/a11y.scss +49 -0
  3. package/_base/_story/index.scss +1 -0
  4. package/_base/_story/index.stories.js +3 -1
  5. package/_utils/index.ts +2 -1
  6. package/button/Button.tsx +1 -0
  7. package/button/__test__/button.test.js +15 -0
  8. package/button/_story/button.stories.js +13 -0
  9. package/button/buttonGroup.tsx +6 -4
  10. package/cascader/__test__/cascader.test.js +221 -0
  11. package/cascader/_story/cascader.stories.js +138 -0
  12. package/cascader/index.tsx +37 -21
  13. package/cascader/item.tsx +7 -2
  14. package/checkbox/__test__/checkboxGroup.test.js +37 -5
  15. package/checkbox/_story/checkbox.stories.js +78 -6
  16. package/checkbox/checkbox.tsx +3 -0
  17. package/checkbox/checkboxGroup.tsx +3 -2
  18. package/datePicker/__test__/datePicker.test.js +67 -2
  19. package/datePicker/_story/datePicker.stories.js +3 -1
  20. package/datePicker/_story/v2/YearButton.jsx +17 -0
  21. package/datePicker/_story/v2/index.js +1 -0
  22. package/datePicker/monthsGrid.tsx +12 -1
  23. package/datePicker/navigation.tsx +55 -29
  24. package/descriptions/__test__/descriptions.test.js +27 -1
  25. package/descriptions/_story/descriptions.stories.js +52 -2
  26. package/descriptions/item.tsx +1 -1
  27. package/dist/css/semi.css +105 -32
  28. package/dist/css/semi.min.css +1 -1
  29. package/dist/umd/semi-ui.js +801 -227
  30. package/dist/umd/semi-ui.js.map +1 -1
  31. package/dist/umd/semi-ui.min.js +1 -1
  32. package/dist/umd/semi-ui.min.js.map +1 -1
  33. package/form/_story/form.stories.js +0 -67
  34. package/form/_story/form.stories.tsx +2 -2
  35. package/form/hoc/withField.tsx +2 -2
  36. package/lib/cjs/_base/base.css +2 -2
  37. package/lib/cjs/_utils/index.d.ts +1 -0
  38. package/lib/cjs/_utils/index.js +3 -2
  39. package/lib/cjs/button/Button.d.ts +1 -0
  40. package/lib/cjs/button/buttonGroup.js +11 -3
  41. package/lib/cjs/cascader/index.d.ts +7 -0
  42. package/lib/cjs/cascader/index.js +35 -22
  43. package/lib/cjs/cascader/item.d.ts +2 -0
  44. package/lib/cjs/cascader/item.js +9 -2
  45. package/lib/cjs/checkbox/checkbox.js +4 -1
  46. package/lib/cjs/checkbox/checkboxGroup.d.ts +1 -0
  47. package/lib/cjs/checkbox/checkboxGroup.js +3 -1
  48. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  49. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  50. package/lib/cjs/datePicker/monthsGrid.d.ts +2 -1
  51. package/lib/cjs/datePicker/monthsGrid.js +6 -0
  52. package/lib/cjs/datePicker/navigation.js +47 -7
  53. package/lib/cjs/descriptions/item.js +1 -1
  54. package/lib/cjs/form/baseForm.d.ts +6 -0
  55. package/lib/cjs/form/field.d.ts +6 -0
  56. package/lib/cjs/form/hoc/withField.js +3 -1
  57. package/lib/cjs/locale/source/es.d.ts +7 -0
  58. package/lib/cjs/locale/source/es.js +168 -0
  59. package/lib/cjs/modal/Modal.d.ts +8 -8
  60. package/lib/cjs/modal/Modal.js +4 -4
  61. package/lib/cjs/modal/confirm.d.ts +10 -10
  62. package/lib/cjs/navigation/index.d.ts +2 -2
  63. package/lib/cjs/pagination/index.js +9 -4
  64. package/lib/cjs/radio/radio.d.ts +1 -1
  65. package/lib/cjs/radio/radio.js +1 -0
  66. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  67. package/lib/cjs/rating/item.js +3 -2
  68. package/lib/cjs/select/index.d.ts +10 -0
  69. package/lib/cjs/select/index.js +15 -9
  70. package/lib/cjs/table/Table.d.ts +1 -1
  71. package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
  72. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  73. package/lib/cjs/timePicker/index.d.ts +2 -2
  74. package/lib/cjs/timeline/item.d.ts +5 -2
  75. package/lib/cjs/timeline/item.js +13 -7
  76. package/lib/cjs/tree/treeNode.js +0 -2
  77. package/lib/cjs/treeSelect/index.js +1 -0
  78. package/lib/cjs/typography/title.d.ts +1 -1
  79. package/lib/cjs/upload/fileCard.d.ts +2 -0
  80. package/lib/cjs/upload/fileCard.js +70 -45
  81. package/lib/cjs/upload/index.d.ts +34 -4
  82. package/lib/cjs/upload/index.js +141 -25
  83. package/lib/cjs/upload/interface.d.ts +3 -0
  84. package/lib/es/_base/base.css +2 -2
  85. package/lib/es/_utils/index.d.ts +1 -0
  86. package/lib/es/_utils/index.js +3 -2
  87. package/lib/es/button/Button.d.ts +1 -0
  88. package/lib/es/button/buttonGroup.js +3 -3
  89. package/lib/es/cascader/index.d.ts +7 -0
  90. package/lib/es/cascader/index.js +34 -25
  91. package/lib/es/cascader/item.d.ts +2 -0
  92. package/lib/es/cascader/item.js +9 -2
  93. package/lib/es/checkbox/checkbox.js +4 -1
  94. package/lib/es/checkbox/checkboxGroup.d.ts +1 -0
  95. package/lib/es/checkbox/checkboxGroup.js +3 -1
  96. package/lib/es/datePicker/dateInput.d.ts +1 -1
  97. package/lib/es/datePicker/datePicker.d.ts +1 -1
  98. package/lib/es/datePicker/monthsGrid.d.ts +2 -1
  99. package/lib/es/datePicker/monthsGrid.js +6 -0
  100. package/lib/es/datePicker/navigation.js +48 -8
  101. package/lib/es/descriptions/item.js +1 -1
  102. package/lib/es/form/baseForm.d.ts +6 -0
  103. package/lib/es/form/field.d.ts +6 -0
  104. package/lib/es/form/hoc/withField.js +3 -1
  105. package/lib/es/locale/source/es.d.ts +7 -0
  106. package/lib/es/locale/source/es.js +157 -0
  107. package/lib/es/modal/Modal.d.ts +8 -8
  108. package/lib/es/modal/Modal.js +4 -4
  109. package/lib/es/modal/confirm.d.ts +10 -10
  110. package/lib/es/navigation/index.d.ts +2 -2
  111. package/lib/es/pagination/index.js +8 -4
  112. package/lib/es/radio/radio.d.ts +1 -1
  113. package/lib/es/radio/radio.js +1 -0
  114. package/lib/es/radio/radioGroup.d.ts +1 -1
  115. package/lib/es/rating/item.js +3 -2
  116. package/lib/es/select/index.d.ts +10 -0
  117. package/lib/es/select/index.js +19 -9
  118. package/lib/es/table/Table.d.ts +1 -1
  119. package/lib/es/timePicker/TimePicker.d.ts +2 -2
  120. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  121. package/lib/es/timePicker/index.d.ts +2 -2
  122. package/lib/es/timeline/item.d.ts +5 -2
  123. package/lib/es/timeline/item.js +12 -7
  124. package/lib/es/tree/treeNode.js +0 -2
  125. package/lib/es/treeSelect/index.js +1 -0
  126. package/lib/es/typography/title.d.ts +1 -1
  127. package/lib/es/upload/fileCard.d.ts +2 -0
  128. package/lib/es/upload/fileCard.js +69 -44
  129. package/lib/es/upload/index.d.ts +34 -4
  130. package/lib/es/upload/index.js +141 -24
  131. package/lib/es/upload/interface.d.ts +3 -0
  132. package/locale/source/es.ts +160 -0
  133. package/modal/Modal.tsx +6 -6
  134. package/navigation/__test__/navigation.test.js +4 -4
  135. package/navigation/_story/AutoOpen/index.js +1 -1
  136. package/navigation/_story/WithChildren/index.js +1 -1
  137. package/navigation/_story/navigation.stories.js +1 -1
  138. package/navigation/_story/navigation.stories.tsx +4 -4
  139. package/navigation/index.tsx +2 -2
  140. package/package.json +16 -8
  141. package/pagination/_story/pagination.stories.js +11 -0
  142. package/pagination/index.tsx +9 -4
  143. package/popover/Arrow.tsx +1 -1
  144. package/radio/__test__/radioGroup.test.jsx +41 -6
  145. package/radio/_story/radio.stories.js +22 -11
  146. package/radio/radio.tsx +1 -0
  147. package/rating/item.tsx +2 -1
  148. package/select/_story/select.stories.js +39 -14
  149. package/select/index.tsx +21 -7
  150. package/table/_story/DynamicFilters/index.js +13 -16
  151. package/timeline/__test__/timeline.test.js +17 -1
  152. package/timeline/_story/timeline.stories.js +70 -6
  153. package/timeline/item.tsx +11 -6
  154. package/tooltip/_story/tooltip.stories.js +1 -1
  155. package/tree/_story/tree.stories.js +2 -2
  156. package/tree/treeNode.tsx +0 -2
  157. package/treeSelect/index.tsx +3 -2
  158. package/tsconfig.json +2 -1
  159. package/upload/__test__/upload.test.js +50 -1
  160. package/upload/fileCard.tsx +110 -95
  161. package/upload/index.tsx +155 -54
  162. package/upload/interface.ts +3 -0
@@ -402,39 +402,40 @@ class Select extends _baseComponent.default {
402
402
  const {
403
403
  size,
404
404
  multiple,
405
- disabled
405
+ disabled,
406
+ inputProps
406
407
  } = this.props;
408
+ const inputPropsCls = (0, _get2.default)(inputProps, 'className');
407
409
  const inputcls = (0, _classnames.default)("".concat(prefixcls, "-input"), {
408
410
  ["".concat(prefixcls, "-input-single")]: !multiple,
409
411
  ["".concat(prefixcls, "-input-multiple")]: multiple
410
- });
412
+ }, inputPropsCls);
411
413
  const {
412
414
  inputValue
413
415
  } = this.state;
414
- const inputProps = {
416
+ const selectInputProps = (0, _assign.default)({
415
417
  value: inputValue,
416
418
  disabled,
417
419
  className: inputcls,
418
420
  onChange: this.handleInputChange
419
- };
421
+ }, inputProps);
420
422
  let style = {}; // Multiple choice mode
421
423
 
422
424
  if (multiple) {
423
425
  style = {
424
426
  width: inputValue ? "".concat(inputValue.length * 16, "px") : '2px'
425
427
  };
426
- inputProps.style = style;
428
+ selectInputProps.style = style;
427
429
  }
428
430
 
429
431
  return /*#__PURE__*/_react.default.createElement(_index3.default, (0, _assign.default)({
430
432
  ref: this.inputRef,
431
- size: size
432
- }, inputProps, {
433
+ size: size,
433
434
  onFocus: e => {
434
435
  // prevent event bubbling which will fire trigger onFocus event
435
436
  e.stopPropagation(); // e.nativeEvent.stopImmediatePropagation();
436
437
  }
437
- }));
438
+ }, selectInputProps));
438
439
  }
439
440
 
440
441
  close() {
@@ -762,7 +763,9 @@ class Select extends _baseComponent.default {
762
763
  key: value
763
764
  }), content);
764
765
  } else {
765
- return content;
766
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
767
+ key: value
768
+ }, content);
766
769
  }
767
770
  });
768
771
  const contentWrapperCls = (0, _classnames.default)({
@@ -873,6 +876,7 @@ class Select extends _baseComponent.default {
873
876
  multiple,
874
877
  filter,
875
878
  style,
879
+ id,
876
880
  size,
877
881
  className,
878
882
  validateStatus,
@@ -946,6 +950,7 @@ class Select extends _baseComponent.default {
946
950
  ref: ref => this.triggerRef.current = ref,
947
951
  onClick: e => this.foundation.handleClick(e),
948
952
  style: style,
953
+ id: id,
949
954
  tabIndex: tabIndex,
950
955
  onMouseEnter: this.onMouseEnter,
951
956
  onMouseLeave: this.onMouseLeave,
@@ -1031,6 +1036,7 @@ Select.propTypes = {
1031
1036
  dropdownStyle: _propTypes.default.object,
1032
1037
  outerTopSlot: _propTypes.default.node,
1033
1038
  innerTopSlot: _propTypes.default.node,
1039
+ inputProps: _propTypes.default.object,
1034
1040
  outerBottomSlot: _propTypes.default.node,
1035
1041
  innerBottomSlot: _propTypes.default.node,
1036
1042
  optionList: _propTypes.default.array,
@@ -176,7 +176,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
176
176
  _invokeColumnFn: (key: string, funcName: string, ...args: any[]) => void;
177
177
  _cacheHeaderRef: (node: HTMLDivElement) => void;
178
178
  getCurrentPageData: () => any;
179
- getColumns: (columns: ColumnProps<RecordType>[], children: ReactNode) => ColumnProps<any>[];
179
+ getColumns: (columns: ColumnProps<RecordType>[], children: ReactNode) => ColumnProps<RecordType>[];
180
180
  getCellWidths: (...args: any[]) => number[];
181
181
  setHeadWidths: (...args: any[]) => void;
182
182
  getHeadWidths: (...args: any[]) => number[];
@@ -85,11 +85,11 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
85
85
  panelFooter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
86
86
  prefixCls: PropTypes.Requireable<string>;
87
87
  clearText: PropTypes.Requireable<string>;
88
- value: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
88
+ value: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
89
89
  inputReadOnly: PropTypes.Requireable<boolean>;
90
90
  disabled: PropTypes.Requireable<boolean>;
91
91
  showClear: PropTypes.Requireable<boolean>;
92
- defaultValue: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
92
+ defaultValue: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
93
93
  open: PropTypes.Requireable<boolean>;
94
94
  defaultOpen: PropTypes.Requireable<boolean>;
95
95
  onOpenChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -6,5 +6,5 @@ import PropTypes from 'prop-types';
6
6
  * - \[12:00:12, 12:21:12]
7
7
  * - \[[12:00:12, 12:21:12], [12:11:12, 12:32:12]]
8
8
  */
9
- declare const TimeShape: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
9
+ declare const TimeShape: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
10
10
  export { TimeShape };
@@ -13,11 +13,11 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
13
13
  panelFooter: import("prop-types").Requireable<import("prop-types").ReactNodeLike>;
14
14
  prefixCls: import("prop-types").Requireable<string>;
15
15
  clearText: import("prop-types").Requireable<string>;
16
- value: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
16
+ value: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
17
17
  inputReadOnly: import("prop-types").Requireable<boolean>;
18
18
  disabled: import("prop-types").Requireable<boolean>;
19
19
  showClear: import("prop-types").Requireable<boolean>;
20
- defaultValue: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
20
+ defaultValue: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
21
21
  open: import("prop-types").Requireable<boolean>;
22
22
  defaultOpen: import("prop-types").Requireable<boolean>;
23
23
  onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -3,28 +3,31 @@ import PropTypes from 'prop-types';
3
3
  import '@douyinfe/semi-foundation/lib/cjs/timeline/timeline.css';
4
4
  export interface TimelineItemProps {
5
5
  color?: string;
6
- time?: string;
6
+ time?: React.ReactNode;
7
7
  type?: 'default' | 'ongoing' | 'success' | 'warning' | 'error';
8
8
  dot?: React.ReactNode;
9
9
  extra?: React.ReactNode;
10
10
  position?: 'left' | 'right';
11
11
  className?: string;
12
12
  style?: React.CSSProperties;
13
+ onClick?: React.MouseEventHandler<HTMLLIElement>;
13
14
  }
14
15
  export default class Item extends PureComponent<TimelineItemProps> {
15
16
  static propTypes: {
16
17
  color: PropTypes.Requireable<string>;
17
- time: PropTypes.Requireable<string>;
18
+ time: PropTypes.Requireable<PropTypes.ReactNodeLike>;
18
19
  type: PropTypes.Requireable<string>;
19
20
  dot: PropTypes.Requireable<PropTypes.ReactNodeLike>;
20
21
  extra: PropTypes.Requireable<PropTypes.ReactNodeLike>;
21
22
  position: PropTypes.Requireable<string>;
22
23
  className: PropTypes.Requireable<string>;
23
24
  style: PropTypes.Requireable<object>;
25
+ onClick: PropTypes.Requireable<(...args: any[]) => any>;
24
26
  };
25
27
  static defaultProps: {
26
28
  type: string;
27
29
  time: string;
30
+ onClick: (...args: any[]) => void;
28
31
  };
29
32
  render(): JSX.Element;
30
33
  }
@@ -18,6 +18,8 @@ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
18
18
 
19
19
  var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
20
20
 
21
+ var _noop2 = _interopRequireDefault(require("lodash/noop"));
22
+
21
23
  var _react = _interopRequireWildcard(require("react"));
22
24
 
23
25
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -46,7 +48,8 @@ class Item extends _react.PureComponent {
46
48
  type,
47
49
  style,
48
50
  time,
49
- extra
51
+ extra,
52
+ onClick
50
53
  } = this.props;
51
54
  const itemCls = (0, _classnames.default)(prefixCls, className);
52
55
  const dotCls = (0, _classnames.default)({
@@ -61,16 +64,17 @@ class Item extends _react.PureComponent {
61
64
  } : null;
62
65
  return /*#__PURE__*/_react.default.createElement("li", {
63
66
  className: itemCls,
64
- style: style
67
+ style: style,
68
+ onClick: onClick
65
69
  }, /*#__PURE__*/_react.default.createElement("div", {
66
70
  className: "".concat(prefixCls, "-tail")
67
71
  }), /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
68
72
  className: dotCls
69
73
  }, dotStyle), dot), /*#__PURE__*/_react.default.createElement("div", {
70
74
  className: "".concat(prefixCls, "-content")
71
- }, children, extra ? /*#__PURE__*/_react.default.createElement("div", {
75
+ }, children, extra && /*#__PURE__*/_react.default.createElement("div", {
72
76
  className: "".concat(prefixCls, "-content-extra")
73
- }, extra) : null, /*#__PURE__*/_react.default.createElement("div", {
77
+ }, extra), time && /*#__PURE__*/_react.default.createElement("div", {
74
78
  className: "".concat(prefixCls, "-content-time")
75
79
  }, time)));
76
80
  }
@@ -80,15 +84,17 @@ class Item extends _react.PureComponent {
80
84
  exports.default = Item;
81
85
  Item.propTypes = {
82
86
  color: _propTypes.default.string,
83
- time: _propTypes.default.string,
87
+ time: _propTypes.default.node,
84
88
  type: _propTypes.default.oneOf(_constants.strings.ITEM_TYPE),
85
89
  dot: _propTypes.default.node,
86
90
  extra: _propTypes.default.node,
87
91
  position: _propTypes.default.oneOf(_constants.strings.ITEM_POS),
88
92
  className: _propTypes.default.string,
89
- style: _propTypes.default.object
93
+ style: _propTypes.default.object,
94
+ onClick: _propTypes.default.func
90
95
  };
91
96
  Item.defaultProps = {
92
97
  type: 'default',
93
- time: ''
98
+ time: '',
99
+ onClick: _noop2.default
94
100
  };
@@ -100,8 +100,6 @@ class TreeNode extends _react.PureComponent {
100
100
  const {
101
101
  onNodeRightClick
102
102
  } = this.context;
103
- e.stopPropagation();
104
- e.nativeEvent.stopImmediatePropagation();
105
103
  onNodeRightClick(e, this.props);
106
104
  };
107
105
 
@@ -769,6 +769,7 @@ class TreeSelect extends _baseComponent.default {
769
769
  itemSize: virtualize.itemSize,
770
770
  height: height,
771
771
  width: width,
772
+ // @ts-ignore avoid strict check of itemKey
772
773
  itemKey: this.itemKey,
773
774
  itemData: flattenNodes,
774
775
  className: "".concat(prefixTree, "-virtual-list"),
@@ -37,7 +37,7 @@ export default class Title extends PureComponent<TitleProps> {
37
37
  underline: PropTypes.Requireable<boolean>;
38
38
  strong: PropTypes.Requireable<boolean>;
39
39
  type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
40
- heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 6 | 5>;
40
+ heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 5 | 6>;
41
41
  style: PropTypes.Requireable<object>;
42
42
  className: PropTypes.Requireable<string>;
43
43
  component: PropTypes.Requireable<string>;
@@ -26,6 +26,7 @@ declare class FileCard extends PureComponent<FileCardProps> {
26
26
  style: PropTypes.Requireable<object>;
27
27
  url: PropTypes.Requireable<string>;
28
28
  validateMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
29
+ index: PropTypes.Requireable<number>;
29
30
  };
30
31
  static defaultProps: {
31
32
  listType: "list";
@@ -39,6 +40,7 @@ declare class FileCard extends PureComponent<FileCardProps> {
39
40
  renderValidateMessage(): ReactNode;
40
41
  renderPicValidateMsg(): ReactNode;
41
42
  renderPic(locale: Locale['Upload']): ReactNode;
43
+ renderFile(locale: Locale["Upload"]): JSX.Element;
42
44
  onRemove(e: MouseEvent): void;
43
45
  onReplace(e: MouseEvent): void;
44
46
  onRetry(e: MouseEvent): void;
@@ -26,6 +26,8 @@ var _constants = require("@douyinfe/semi-foundation/lib/cjs/upload/constants");
26
26
 
27
27
  var _utils = require("@douyinfe/semi-foundation/lib/cjs/upload/utils");
28
28
 
29
+ var _semiIcons = require("@douyinfe/semi-icons");
30
+
29
31
  var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
30
32
 
31
33
  var _index = _interopRequireDefault(require("../iconButton/index"));
@@ -38,8 +40,6 @@ var _index4 = _interopRequireDefault(require("../spin/index"));
38
40
 
39
41
  var _reactUtils = require("../_base/reactUtils");
40
42
 
41
- var _semiIcons = require("@douyinfe/semi-icons");
42
-
43
43
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
44
44
 
45
45
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -191,16 +191,23 @@ class FileCard extends _react.PureComponent {
191
191
  status,
192
192
  disabled,
193
193
  style,
194
- onPreviewClick
194
+ onPreviewClick,
195
+ showPicInfo,
196
+ renderPicInfo,
197
+ renderThumbnail,
198
+ name,
199
+ index
195
200
  } = this.props;
201
+ const showProgress = status === _constants.strings.FILE_STATUS_UPLOADING && percent !== 100;
202
+ const showRetry = status === _constants.strings.FILE_STATUS_UPLOAD_FAIL && this.props.showRetry;
203
+ const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && this.props.showReplace;
196
204
  const filePicCardCls = (0, _classnames.default)({
197
205
  ["".concat(prefixCls, "-picture-file-card")]: true,
198
206
  ["".concat(prefixCls, "-picture-file-card-disabled")]: disabled,
199
- ["".concat(prefixCls, "-picture-file-card-show-pointer")]: typeof onPreviewClick !== 'undefined'
207
+ ["".concat(prefixCls, "-picture-file-card-show-pointer")]: typeof onPreviewClick !== 'undefined',
208
+ ["".concat(prefixCls, "-picture-file-card-error")]: status === _constants.strings.FILE_STATUS_UPLOAD_FAIL,
209
+ ["".concat(prefixCls, "-picture-file-card-uploading")]: showProgress
200
210
  });
201
- const showProgress = status === _constants.strings.FILE_STATUS_UPLOADING && percent !== 100;
202
- const showRetry = status === _constants.strings.FILE_STATUS_UPLOAD_FAIL && this.props.showRetry;
203
- const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && this.props.showReplace;
204
211
  const closeCls = "".concat(prefixCls, "-picture-file-card-close");
205
212
 
206
213
  const retry = /*#__PURE__*/_react.default.createElement("div", {
@@ -223,47 +230,38 @@ class FileCard extends _react.PureComponent {
223
230
  className: "".concat(prefixCls, "-picture-file-card-icon-replace")
224
231
  })));
225
232
 
233
+ const picInfo = typeof renderPicInfo === 'function' ? renderPicInfo(this.props) : /*#__PURE__*/_react.default.createElement("div", {
234
+ className: "".concat(prefixCls, "-picture-file-card-pic-info")
235
+ }, index + 1);
236
+ const thumbnail = typeof renderThumbnail === 'function' ? renderThumbnail(this.props) : /*#__PURE__*/_react.default.createElement("img", {
237
+ src: url,
238
+ alt: "picture of ".concat(name)
239
+ });
226
240
  return /*#__PURE__*/_react.default.createElement("div", {
227
241
  className: filePicCardCls,
228
242
  style: style,
229
243
  onClick: onPreviewClick
230
- }, /*#__PURE__*/_react.default.createElement("img", {
231
- src: url
232
- }), showProgress ? /*#__PURE__*/_react.default.createElement(_index2.default, {
244
+ }, thumbnail, showProgress ? /*#__PURE__*/_react.default.createElement(_index2.default, {
233
245
  percent: percent,
234
246
  type: "circle",
235
247
  size: "small",
236
248
  orbitStroke: '#FFF'
237
- }) : null, showRetry ? retry : null, showReplace && replace, disabled ? null : /*#__PURE__*/_react.default.createElement("div", {
238
- className: closeCls,
239
- onClick: e => this.onRemove(e)
249
+ }) : null, showRetry ? retry : null, showReplace && replace, showPicInfo && picInfo, !disabled && /*#__PURE__*/_react.default.createElement("div", {
250
+ className: closeCls
240
251
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
241
- size: "extra-small"
252
+ size: "extra-small",
253
+ onClick: e => this.onRemove(e)
242
254
  })), this.renderPicValidateMsg());
243
255
  }
244
256
 
245
- onRemove(e) {
246
- e.stopPropagation();
247
- this.props.onRemove(this.props, e);
248
- }
249
-
250
- onReplace(e) {
251
- e.stopPropagation();
252
- this.props.onReplace(this.props, e);
253
- }
254
-
255
- onRetry(e) {
256
- e.stopPropagation();
257
- this.props.onRetry(this.props, e);
258
- }
259
-
260
- render() {
257
+ renderFile(locale) {
261
258
  const {
262
259
  name,
263
260
  size,
264
261
  percent,
265
262
  url,
266
- listType,
263
+ showRetry: propsShowRetry,
264
+ showReplace: propsShowReplace,
267
265
  preview,
268
266
  previewFile,
269
267
  status,
@@ -284,15 +282,8 @@ class FileCard extends _react.PureComponent {
284
282
  const replaceCls = "".concat(prefixCls, "-file-card-replace");
285
283
  const showProgress = !(percent === 100 || typeof percent === 'undefined') && status === _constants.strings.FILE_STATUS_UPLOADING; // only show retry when upload fail & showRetry is true, no need to show during validate fail
286
284
 
287
- const showRetry = status === _constants.strings.FILE_STATUS_UPLOAD_FAIL && this.props.showRetry;
288
- const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && this.props.showReplace;
289
-
290
- if (listType === _constants.strings.FILE_LIST_PIC) {
291
- return /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
292
- componentName: "Upload"
293
- }, locale => this.renderPic(locale));
294
- }
295
-
285
+ const showRetry = status === _constants.strings.FILE_STATUS_UPLOAD_FAIL && propsShowRetry;
286
+ const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && propsShowReplace;
296
287
  const fileSize = this.transSize(size);
297
288
  let previewContent = preview ? /*#__PURE__*/_react.default.createElement("img", {
298
289
  src: url
@@ -304,9 +295,7 @@ class FileCard extends _react.PureComponent {
304
295
  previewContent = previewFile(this.props);
305
296
  }
306
297
 
307
- return /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
308
- componentName: "Upload"
309
- }, locale => /*#__PURE__*/_react.default.createElement("div", {
298
+ return /*#__PURE__*/_react.default.createElement("div", {
310
299
  className: fileCardCls,
311
300
  style: style,
312
301
  onClick: onPreviewClick
@@ -351,7 +340,42 @@ class FileCard extends _react.PureComponent {
351
340
  theme: "borderless",
352
341
  size: "small",
353
342
  className: closeCls
354
- })));
343
+ }));
344
+ }
345
+
346
+ onRemove(e) {
347
+ e.stopPropagation();
348
+ this.props.onRemove(this.props, e);
349
+ }
350
+
351
+ onReplace(e) {
352
+ e.stopPropagation();
353
+ this.props.onReplace(this.props, e);
354
+ }
355
+
356
+ onRetry(e) {
357
+ e.stopPropagation();
358
+ this.props.onRetry(this.props, e);
359
+ }
360
+
361
+ render() {
362
+ const {
363
+ listType
364
+ } = this.props;
365
+
366
+ if (listType === _constants.strings.FILE_LIST_PIC) {
367
+ return /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
368
+ componentName: "Upload"
369
+ }, locale => this.renderPic(locale));
370
+ }
371
+
372
+ if (listType === _constants.strings.FILE_LIST_DEFAULT) {
373
+ return /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
374
+ componentName: "Upload"
375
+ }, locale => this.renderFile(locale));
376
+ }
377
+
378
+ return null;
355
379
  }
356
380
 
357
381
  }
@@ -374,7 +398,8 @@ FileCard.propTypes = {
374
398
  status: _propTypes.default.string,
375
399
  style: _propTypes.default.object,
376
400
  url: _propTypes.default.string,
377
- validateMessage: _propTypes.default.node
401
+ validateMessage: _propTypes.default.node,
402
+ index: _propTypes.default.number
378
403
  };
379
404
  FileCard.defaultProps = {
380
405
  listType: _constants.strings.FILE_LIST_DEFAULT,
@@ -1,6 +1,6 @@
1
- import { ReactNode, CSSProperties, RefObject, ChangeEvent, DragEvent } from 'react';
1
+ import React, { ReactNode, CSSProperties, RefObject, ChangeEvent, DragEvent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import UploadFoundation, { UploadAdapter, BeforeUploadObjectResult, AfterUploadResult } from '@douyinfe/semi-foundation/lib/cjs/upload/foundation';
3
+ import UploadFoundation, { CustomFile, UploadAdapter, BeforeUploadObjectResult, AfterUploadResult } from '@douyinfe/semi-foundation/lib/cjs/upload/foundation';
4
4
  import FileCard from './fileCard';
5
5
  import BaseComponent, { ValidateStatus } from '../_base/baseComponent';
6
6
  import { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError } from './interface';
@@ -54,7 +54,10 @@ export interface UploadProps {
54
54
  prompt?: ReactNode;
55
55
  promptPosition?: PromptPositionType;
56
56
  renderFileItem?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
57
+ renderPicInfo?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
58
+ renderThumbnail?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
57
59
  showClear?: boolean;
60
+ showPicInfo?: boolean;
58
61
  showReplace?: boolean;
59
62
  showRetry?: boolean;
60
63
  showUploadList?: boolean;
@@ -121,14 +124,17 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
121
124
  prompt: PropTypes.Requireable<PropTypes.ReactNodeLike>;
122
125
  promptPosition: PropTypes.Requireable<"left" | "right" | "bottom">;
123
126
  renderFileItem: PropTypes.Requireable<(...args: any[]) => any>;
127
+ renderPicInfo: PropTypes.Requireable<(...args: any[]) => any>;
128
+ renderThumbnail: PropTypes.Requireable<(...args: any[]) => any>;
124
129
  showClear: PropTypes.Requireable<boolean>;
130
+ showPicInfo: PropTypes.Requireable<boolean>;
125
131
  showReplace: PropTypes.Requireable<boolean>;
126
132
  showRetry: PropTypes.Requireable<boolean>;
127
133
  showUploadList: PropTypes.Requireable<boolean>;
128
134
  style: PropTypes.Requireable<object>;
129
135
  timeout: PropTypes.Requireable<number>;
130
136
  transformFile: PropTypes.Requireable<(...args: any[]) => any>;
131
- uploadTrigger: PropTypes.Requireable<"custom" | "auto">;
137
+ uploadTrigger: PropTypes.Requireable<"auto" | "custom">;
132
138
  validateMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
133
139
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
134
140
  withCredentials: PropTypes.Requireable<boolean>;
@@ -136,7 +142,16 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
136
142
  static defaultProps: Partial<UploadProps>;
137
143
  static FileCard: typeof FileCard;
138
144
  constructor(props: UploadProps);
139
- static getDerivedStateFromProps(props: UploadProps): Partial<UploadState> | null;
145
+ /**
146
+ * Notes:
147
+ * The input parameter and return value here do not declare the type, otherwise tsc may report an error in form/fields.tsx when wrap after withField
148
+ * `The types of the parameters "props" and "nextProps" are incompatible.
149
+ The attribute "action" is missing in the type "Readonly<any>", but it is required in the type "UploadProps".`
150
+ * which seems to be a bug, remove props type declare here
151
+ */
152
+ static getDerivedStateFromProps(props: any): {
153
+ fileList: any;
154
+ };
140
155
  get adapter(): UploadAdapter<UploadProps, UploadState>;
141
156
  foundation: UploadFoundation;
142
157
  inputRef: RefObject<HTMLInputElement>;
@@ -148,13 +163,28 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
148
163
  onReplaceChange: (e: ChangeEvent<HTMLInputElement>) => void;
149
164
  clear: () => void;
150
165
  remove: (fileItem: FileItem) => void;
166
+ /**
167
+ * ref method
168
+ * insert files at index
169
+ * @param files Array<CustomFile>
170
+ * @param index number
171
+ * @returns
172
+ */
173
+ insert: (files: Array<CustomFile>, index: number) => void;
174
+ /**
175
+ * ref method
176
+ * manual upload by user
177
+ */
151
178
  upload: () => void;
152
179
  renderFile: (file: FileItem, index: number, locale: Locale['Upload']) => ReactNode;
153
180
  renderFileList: () => ReactNode;
181
+ renderFileListPic: () => JSX.Element;
182
+ renderFileListDefault: () => JSX.Element;
154
183
  onDrop: (e: DragEvent<HTMLDivElement>) => void;
155
184
  onDragOver: (e: DragEvent<HTMLDivElement>) => void;
156
185
  onDragLeave: (e: DragEvent<HTMLDivElement>) => void;
157
186
  onDragEnter: (e: DragEvent<HTMLDivElement>) => void;
187
+ renderAddContent: () => React.ReactNode;
158
188
  renderDragArea: () => ReactNode;
159
189
  render(): ReactNode;
160
190
  }