@douyinfe/semi-ui 2.48.0-beta.0 → 2.49.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 (83) hide show
  1. package/dist/css/semi.css +4 -0
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +92 -53
  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/banner/index.d.ts +2 -2
  8. package/lib/cjs/banner/index.js +2 -2
  9. package/lib/cjs/breadcrumb/item.d.ts +1 -1
  10. package/lib/cjs/breadcrumb/item.js +1 -1
  11. package/lib/cjs/calendar/dayCalendar.d.ts +1 -0
  12. package/lib/cjs/calendar/dayCalendar.js +4 -1
  13. package/lib/cjs/calendar/dayCol.d.ts +2 -0
  14. package/lib/cjs/calendar/dayCol.js +6 -6
  15. package/lib/cjs/calendar/index.d.ts +1 -0
  16. package/lib/cjs/calendar/index.js +1 -0
  17. package/lib/cjs/calendar/interface.d.ts +2 -1
  18. package/lib/cjs/calendar/rangeCalendar.js +4 -2
  19. package/lib/cjs/calendar/weekCalendar.js +4 -2
  20. package/lib/cjs/dropdown/dropdownItem.js +2 -1
  21. package/lib/cjs/form/baseForm.js +2 -2
  22. package/lib/cjs/modal/Modal.d.ts +1 -1
  23. package/lib/cjs/modal/Modal.js +1 -1
  24. package/lib/cjs/navigation/SubNav.d.ts +1 -1
  25. package/lib/cjs/navigation/SubNav.js +1 -1
  26. package/lib/cjs/popconfirm/index.d.ts +1 -1
  27. package/lib/cjs/popconfirm/index.js +1 -1
  28. package/lib/cjs/select/utils.d.ts +1 -1
  29. package/lib/cjs/select/utils.js +16 -4
  30. package/lib/cjs/sideSheet/SideSheetContent.d.ts +3 -1
  31. package/lib/cjs/sideSheet/SideSheetContent.js +6 -3
  32. package/lib/cjs/table/Body/BaseRow.d.ts +3 -0
  33. package/lib/cjs/table/Body/BaseRow.js +4 -1
  34. package/lib/cjs/table/Body/ExpandedRow.d.ts +1 -0
  35. package/lib/cjs/table/Body/ExpandedRow.js +4 -2
  36. package/lib/cjs/table/Body/index.d.ts +3 -0
  37. package/lib/cjs/table/Body/index.js +18 -10
  38. package/lib/cjs/table/interface.d.ts +1 -0
  39. package/lib/cjs/timePicker/TimePicker.d.ts +3 -0
  40. package/lib/cjs/timePicker/TimePicker.js +7 -3
  41. package/lib/cjs/timePicker/index.d.ts +2 -0
  42. package/lib/cjs/toast/toast.d.ts +1 -1
  43. package/lib/cjs/toast/toast.js +1 -1
  44. package/lib/cjs/typography/util.js +5 -6
  45. package/lib/es/banner/index.d.ts +2 -2
  46. package/lib/es/banner/index.js +2 -2
  47. package/lib/es/breadcrumb/item.d.ts +1 -1
  48. package/lib/es/breadcrumb/item.js +1 -1
  49. package/lib/es/calendar/dayCalendar.d.ts +1 -0
  50. package/lib/es/calendar/dayCalendar.js +4 -1
  51. package/lib/es/calendar/dayCol.d.ts +2 -0
  52. package/lib/es/calendar/dayCol.js +6 -6
  53. package/lib/es/calendar/index.d.ts +1 -0
  54. package/lib/es/calendar/index.js +1 -0
  55. package/lib/es/calendar/interface.d.ts +2 -1
  56. package/lib/es/calendar/rangeCalendar.js +4 -2
  57. package/lib/es/calendar/weekCalendar.js +4 -2
  58. package/lib/es/dropdown/dropdownItem.js +2 -1
  59. package/lib/es/form/baseForm.js +2 -2
  60. package/lib/es/modal/Modal.d.ts +1 -1
  61. package/lib/es/modal/Modal.js +1 -1
  62. package/lib/es/navigation/SubNav.d.ts +1 -1
  63. package/lib/es/navigation/SubNav.js +1 -1
  64. package/lib/es/popconfirm/index.d.ts +1 -1
  65. package/lib/es/popconfirm/index.js +1 -1
  66. package/lib/es/select/utils.d.ts +1 -1
  67. package/lib/es/select/utils.js +16 -4
  68. package/lib/es/sideSheet/SideSheetContent.d.ts +3 -1
  69. package/lib/es/sideSheet/SideSheetContent.js +6 -3
  70. package/lib/es/table/Body/BaseRow.d.ts +3 -0
  71. package/lib/es/table/Body/BaseRow.js +4 -1
  72. package/lib/es/table/Body/ExpandedRow.d.ts +1 -0
  73. package/lib/es/table/Body/ExpandedRow.js +4 -2
  74. package/lib/es/table/Body/index.d.ts +3 -0
  75. package/lib/es/table/Body/index.js +18 -10
  76. package/lib/es/table/interface.d.ts +1 -0
  77. package/lib/es/timePicker/TimePicker.d.ts +3 -0
  78. package/lib/es/timePicker/TimePicker.js +7 -3
  79. package/lib/es/timePicker/index.d.ts +2 -0
  80. package/lib/es/toast/toast.d.ts +1 -1
  81. package/lib/es/toast/toast.js +1 -1
  82. package/lib/es/typography/util.js +5 -6
  83. package/package.json +8 -8
@@ -26,8 +26,8 @@ export default class Banner extends BaseComponent<BannerProps, BannerState> {
26
26
  type: PropTypes.Requireable<string>;
27
27
  title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
28
28
  description: PropTypes.Requireable<PropTypes.ReactNodeLike>;
29
- icon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
30
- closeIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
29
+ icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
30
+ closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
31
31
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
32
32
  style: PropTypes.Requireable<object>;
33
33
  className: PropTypes.Requireable<string>;
@@ -167,8 +167,8 @@ Banner.propTypes = {
167
167
  type: _propTypes.default.oneOf(types),
168
168
  title: _propTypes.default.node,
169
169
  description: _propTypes.default.node,
170
- icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
171
- closeIcon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
170
+ icon: _propTypes.default.node,
171
+ closeIcon: _propTypes.default.node,
172
172
  children: _propTypes.default.node,
173
173
  style: _propTypes.default.object,
174
174
  className: _propTypes.default.string,
@@ -29,7 +29,7 @@ export default class BreadcrumbItem extends BaseComponent<BreadcrumbItemProps, B
29
29
  children: propTypes.Requireable<propTypes.ReactNodeLike>;
30
30
  active: propTypes.Requireable<boolean>;
31
31
  shouldRenderSeparator: propTypes.Requireable<boolean>;
32
- icon: propTypes.Requireable<NonNullable<propTypes.ReactNodeLike>>;
32
+ icon: propTypes.Requireable<propTypes.ReactNodeLike>;
33
33
  separator: propTypes.Requireable<propTypes.ReactNodeLike>;
34
34
  noLink: propTypes.Requireable<boolean>;
35
35
  };
@@ -188,7 +188,7 @@ BreadcrumbItem.propTypes = {
188
188
  children: _propTypes.default.node,
189
189
  active: _propTypes.default.bool,
190
190
  shouldRenderSeparator: _propTypes.default.bool,
191
- icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
191
+ icon: _propTypes.default.node,
192
192
  separator: _propTypes.default.node,
193
193
  noLink: _propTypes.default.bool
194
194
  };
@@ -20,6 +20,7 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
20
20
  mode: PropTypes.Requireable<string>;
21
21
  renderTimeDisplay: PropTypes.Requireable<(...args: any[]) => any>;
22
22
  markWeekend: PropTypes.Requireable<boolean>;
23
+ minEventHeight: PropTypes.Requireable<number>;
23
24
  scrollTop: PropTypes.Requireable<number>;
24
25
  width: PropTypes.Requireable<NonNullable<string | number>>;
25
26
  height: PropTypes.Requireable<NonNullable<string | number>>;
@@ -125,7 +125,8 @@ class DayCalendar extends _baseComponent.default {
125
125
  height,
126
126
  width,
127
127
  style,
128
- header
128
+ header,
129
+ minEventHeight
129
130
  } = this.props;
130
131
  const dayCls = (0, _classnames.default)(prefixCls, className);
131
132
  const dayStyle = Object.assign({
@@ -158,6 +159,7 @@ class DayCalendar extends _baseComponent.default {
158
159
  handleClick: this.handleClick,
159
160
  showCurrTime: showCurrTime,
160
161
  isWeekend: this.isWeekend,
162
+ minEventHeight: minEventHeight,
161
163
  dateGridRender: dateGridRender
162
164
  }))));
163
165
  }
@@ -172,6 +174,7 @@ DayCalendar.propTypes = {
172
174
  mode: _propTypes.default.string,
173
175
  renderTimeDisplay: _propTypes.default.func,
174
176
  markWeekend: _propTypes.default.bool,
177
+ minEventHeight: _propTypes.default.number,
175
178
  scrollTop: _propTypes.default.number,
176
179
  width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
177
180
  height: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
@@ -17,6 +17,7 @@ export default class DayCol extends BaseComponent<DayColProps, DayColState> {
17
17
  currPos: PropTypes.Requireable<number>;
18
18
  handleClick: PropTypes.Requireable<(...args: any[]) => any>;
19
19
  mode: PropTypes.Requireable<string>;
20
+ minEventHeight: PropTypes.Requireable<number>;
20
21
  isWeekend: PropTypes.Requireable<boolean>;
21
22
  dateGridRender: PropTypes.Requireable<(...args: any[]) => any>;
22
23
  };
@@ -26,6 +27,7 @@ export default class DayCol extends BaseComponent<DayColProps, DayColState> {
26
27
  scrollHeight: number;
27
28
  currPos: number;
28
29
  mode: string;
30
+ minEventHeight: number;
29
31
  };
30
32
  static contextType: React.Context<import("../locale/interface").Locale>;
31
33
  foundation: CalendarFoundation;
@@ -25,7 +25,8 @@ class DayCol extends _baseComponent.default {
25
25
  this.renderEvents = () => {
26
26
  const {
27
27
  events,
28
- scrollHeight
28
+ scrollHeight,
29
+ minEventHeight
29
30
  } = this.props;
30
31
  const list = events.map((event, ind) => {
31
32
  const {
@@ -36,12 +37,9 @@ class DayCol extends _baseComponent.default {
36
37
  } = event;
37
38
  const top = startPos * scrollHeight;
38
39
  const height = (endPos - startPos) * scrollHeight;
39
- if (!height) {
40
- return undefined;
41
- }
42
40
  const style = {
43
41
  top: `${top}px`,
44
- height: `${height}px`
42
+ height: `${Math.max(minEventHeight, height)}px`
45
43
  };
46
44
  return /*#__PURE__*/_react.default.createElement("li", {
47
45
  className: `${_constants.cssClasses.PREFIX}-event-item ${_constants.cssClasses.PREFIX}-event-day`,
@@ -156,6 +154,7 @@ DayCol.propTypes = {
156
154
  currPos: _propTypes.default.number,
157
155
  handleClick: _propTypes.default.func,
158
156
  mode: _propTypes.default.string,
157
+ minEventHeight: _propTypes.default.number,
159
158
  isWeekend: _propTypes.default.bool,
160
159
  dateGridRender: _propTypes.default.func
161
160
  };
@@ -164,6 +163,7 @@ DayCol.defaultProps = {
164
163
  showCurrTime: true,
165
164
  scrollHeight: 0,
166
165
  currPos: 0,
167
- mode: 'dayCol'
166
+ mode: 'dayCol',
167
+ minEventHeight: Number.MIN_SAFE_INTEGER
168
168
  };
169
169
  DayCol.contextType = _context.default;
@@ -24,6 +24,7 @@ declare class Calendar extends BaseComponent<CalendarProps, {}> {
24
24
  renderTimeDisplay: PropTypes.Requireable<(...args: any[]) => any>;
25
25
  renderDateDisplay: PropTypes.Requireable<(...args: any[]) => any>;
26
26
  markWeekend: PropTypes.Requireable<boolean>;
27
+ minEventHeight: PropTypes.Requireable<number>;
27
28
  width: PropTypes.Requireable<NonNullable<string | number>>;
28
29
  height: PropTypes.Requireable<NonNullable<string | number>>;
29
30
  style: PropTypes.Requireable<object>;
@@ -69,6 +69,7 @@ Calendar.propTypes = {
69
69
  renderTimeDisplay: _propTypes.default.func,
70
70
  renderDateDisplay: _propTypes.default.func,
71
71
  markWeekend: _propTypes.default.bool,
72
+ minEventHeight: _propTypes.default.number,
72
73
  width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
73
74
  height: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
74
75
  style: _propTypes.default.object,
@@ -16,6 +16,7 @@ export interface CalendarProps extends BaseProps {
16
16
  onClose?: (e: React.MouseEvent) => void;
17
17
  renderTimeDisplay?: (time: number) => React.ReactNode;
18
18
  markWeekend?: boolean;
19
+ minEventHeight?: number;
19
20
  width?: number | string;
20
21
  height?: number | string;
21
22
  renderDateDisplay?: (date: Date) => React.ReactNode;
@@ -23,7 +24,7 @@ export interface CalendarProps extends BaseProps {
23
24
  allDayEventsRender?: (events: EventObject[]) => React.ReactNode;
24
25
  }
25
26
  export type DayCalendarProps = Omit<CalendarProps, 'mode'>;
26
- type DayCalendarPropsKeys = 'events' | 'displayValue' | 'showCurrTime' | 'mode' | 'dateGridRender';
27
+ type DayCalendarPropsKeys = 'events' | 'displayValue' | 'showCurrTime' | 'mode' | 'dateGridRender' | 'minEventHeight';
27
28
  export interface DayColProps extends Pick<CalendarProps, DayCalendarPropsKeys>, BaseProps {
28
29
  scrollHeight: number;
29
30
  currPos: number;
@@ -46,7 +46,8 @@ class RangeCalendar extends _baseComponent.default {
46
46
  } = this.RangeData;
47
47
  const {
48
48
  markWeekend,
49
- dateGridRender
49
+ dateGridRender,
50
+ minEventHeight
50
51
  } = this.props;
51
52
  const inner = week.map(day => {
52
53
  const dateString = day.date.toString();
@@ -60,7 +61,8 @@ class RangeCalendar extends _baseComponent.default {
60
61
  events: parsed.day,
61
62
  showCurrTime: this.props.showCurrTime,
62
63
  isWeekend: markWeekend && day.isWeekend,
63
- dateGridRender: dateGridRender
64
+ dateGridRender: dateGridRender,
65
+ minEventHeight: minEventHeight
64
66
  });
65
67
  });
66
68
  return inner;
@@ -47,7 +47,8 @@ class WeekCalendar extends _baseComponent.default {
47
47
  } = this.weeklyData;
48
48
  const {
49
49
  markWeekend,
50
- dateGridRender
50
+ dateGridRender,
51
+ minEventHeight
51
52
  } = this.props;
52
53
  const inner = week.map(day => {
53
54
  const dateString = day.date.toString();
@@ -61,7 +62,8 @@ class WeekCalendar extends _baseComponent.default {
61
62
  events: parsed.day,
62
63
  showCurrTime: this.props.showCurrTime,
63
64
  isWeekend: markWeekend && day.isWeekend,
64
- dateGridRender: dateGridRender
65
+ dateGridRender: dateGridRender,
66
+ minEventHeight: minEventHeight
65
67
  });
66
68
  });
67
69
  return inner;
@@ -46,8 +46,9 @@ class DropdownItem extends _baseComponent.default {
46
46
  ['onClick', 'onMouseEnter', 'onMouseLeave', 'onContextMenu'].forEach(eventName => {
47
47
  if (eventName === "onClick") {
48
48
  events["onMouseDown"] = e => {
49
+ var _a, _b;
49
50
  if (e.button === 0) {
50
- this.props[eventName](e);
51
+ (_b = (_a = this.props)[eventName]) === null || _b === void 0 ? void 0 : _b.call(_a, e);
51
52
  }
52
53
  };
53
54
  } else {
@@ -181,7 +181,7 @@ class Form extends _baseComponent.default {
181
181
  [prefix + '-vertical']: layout === 'vertical',
182
182
  [prefix + '-horizontal']: layout === 'horizontal'
183
183
  });
184
- const showldAppendRow = wrapperCol && labelCol;
184
+ const shouldAppendRow = wrapperCol && labelCol;
185
185
  const formContent = /*#__PURE__*/_react.default.createElement("form", Object.assign({
186
186
  style: style
187
187
  }, rest, {
@@ -197,7 +197,7 @@ class Form extends _baseComponent.default {
197
197
  value: this.formApi
198
198
  }, /*#__PURE__*/_react.default.createElement(_context.FormStateContext.Provider, {
199
199
  value: formState
200
- }, showldAppendRow ? withRowForm : formContent)));
200
+ }, shouldAppendRow ? withRowForm : formContent)));
201
201
  }
202
202
  }
203
203
  Form.propTypes = {
@@ -59,7 +59,7 @@ declare class Modal extends BaseComponent<ModalReactProps, ModalState> {
59
59
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
60
60
  getContainerContext: PropTypes.Requireable<(...args: any[]) => any>;
61
61
  maskFixed: PropTypes.Requireable<boolean>;
62
- closeIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
62
+ closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
63
63
  closeOnEsc: PropTypes.Requireable<boolean>;
64
64
  size: PropTypes.Requireable<string>;
65
65
  keepDOM: PropTypes.Requireable<boolean>;
@@ -303,7 +303,7 @@ Modal.propTypes = {
303
303
  getPopupContainer: _propTypes.default.func,
304
304
  getContainerContext: _propTypes.default.func,
305
305
  maskFixed: _propTypes.default.bool,
306
- closeIcon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
306
+ closeIcon: _propTypes.default.node,
307
307
  closeOnEsc: _propTypes.default.bool,
308
308
  size: _propTypes.default.oneOf(_constants.strings.SIZE),
309
309
  keepDOM: _propTypes.default.bool,
@@ -53,7 +53,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
53
53
  /**
54
54
  * Icon name on the left
55
55
  */
56
- icon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
56
+ icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
57
57
  /**
58
58
  * Maximum height (for animation)
59
59
  */
@@ -354,7 +354,7 @@ SubNav.propTypes = {
354
354
  /**
355
355
  * Icon name on the left
356
356
  */
357
- icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
357
+ icon: _propTypes.default.node,
358
358
  /**
359
359
  * Maximum height (for animation)
360
360
  */
@@ -46,7 +46,7 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
46
46
  prefixCls: PropTypes.Requireable<string>;
47
47
  className: PropTypes.Requireable<string>;
48
48
  style: PropTypes.Requireable<object>;
49
- icon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
49
+ icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
50
50
  okText: PropTypes.Requireable<string>;
51
51
  okType: PropTypes.Requireable<string>;
52
52
  cancelText: PropTypes.Requireable<string>;
@@ -241,7 +241,7 @@ Popconfirm.propTypes = {
241
241
  prefixCls: _propTypes.default.string,
242
242
  className: _propTypes.default.string,
243
243
  style: _propTypes.default.object,
244
- icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
244
+ icon: _propTypes.default.node,
245
245
  okText: _propTypes.default.string,
246
246
  okType: _propTypes.default.string,
247
247
  cancelText: _propTypes.default.string,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { OptionProps } from './option';
3
3
  import { OptionGroupProps } from './optionGroup';
4
- declare const generateOption: (child: React.ReactElement, parent: any, index: number) => OptionProps;
4
+ declare const generateOption: (child: React.ReactElement, parent: any, index: number, newKey?: string | number) => OptionProps;
5
5
  declare const getOptionsFromGroup: (selectChildren: React.ReactNode) => {
6
6
  optionGroups: OptionGroupProps[];
7
7
  options: OptionProps[];
@@ -15,7 +15,7 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
15
15
  }
16
16
  return t;
17
17
  };
18
- const generateOption = (child, parent, index) => {
18
+ const generateOption = (child, parent, index, newKey) => {
19
19
  const childProps = child.props;
20
20
  if (!child || !childProps) {
21
21
  return null;
@@ -33,7 +33,7 @@ const generateOption = (child, parent, index) => {
33
33
  // Props are collected from ReactNode, after React.Children.toArray
34
34
  // no need to determine whether the key exists in child
35
35
  // Even if the user does not explicitly declare it, React will always generate a key.
36
- option._keyInJsx = child.key;
36
+ option._keyInJsx = newKey || child.key;
37
37
  return option;
38
38
  };
39
39
  exports.generateOption = generateOption;
@@ -65,10 +65,22 @@ const getOptionsFromGroup = selectChildren => {
65
65
  children
66
66
  } = _a,
67
67
  restGroupProps = __rest(_a, ["children"]);
68
+ let originKeys = [];
69
+ if (Array.isArray(children)) {
70
+ // if group has children > 1
71
+ originKeys = children.map(item => item.key);
72
+ } else {
73
+ originKeys.push(children.key);
74
+ }
68
75
  children = _react.default.Children.toArray(children);
69
- const childrenOption = children.map(option => {
76
+ const childrenOption = children.map((option, index) => {
77
+ let newKey = option.key;
78
+ if (originKeys[index] === null) {
79
+ newKey = child.key + '' + option.key; // if option in group and didn't set key, concat parent key to avoid conflict (default generate key just like .0, .1)
80
+ }
81
+
70
82
  optionIndex++;
71
- return generateOption(option, restGroupProps, optionIndex);
83
+ return generateOption(option, restGroupProps, optionIndex, newKey);
72
84
  });
73
85
  const group = Object.assign(Object.assign({}, child.props), {
74
86
  children: childrenOption,
@@ -1,8 +1,9 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React, { CSSProperties, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { SideSheetProps } from '@douyinfe/semi-foundation/lib/cjs/sideSheet/sideSheetFoundation';
4
4
  export interface SideSheetContentProps {
5
5
  onClose?: (e: React.MouseEvent) => void;
6
+ closeIcon?: ReactNode;
6
7
  mask?: boolean;
7
8
  maskStyle?: CSSProperties;
8
9
  maskClosable?: boolean;
@@ -30,6 +31,7 @@ export interface SideSheetContentProps {
30
31
  export default class SideSheetContent extends React.PureComponent<SideSheetContentProps> {
31
32
  static propTypes: {
32
33
  onClose: PropTypes.Requireable<(...args: any[]) => any>;
34
+ closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
33
35
  };
34
36
  static defaultProps: {
35
37
  onClose: (...args: any[]) => void;
@@ -66,7 +66,8 @@ class SideSheetContent extends _react.default.PureComponent {
66
66
  const {
67
67
  title,
68
68
  closable,
69
- headerStyle
69
+ headerStyle,
70
+ closeIcon
70
71
  } = this.props;
71
72
  let header, closer;
72
73
  if (title) {
@@ -76,12 +77,13 @@ class SideSheetContent extends _react.default.PureComponent {
76
77
  }, this.props.title);
77
78
  }
78
79
  if (closable) {
80
+ const iconType = closeIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null);
79
81
  closer = /*#__PURE__*/_react.default.createElement(_iconButton.default, {
80
82
  className: `${prefixCls}-close`,
81
83
  key: "close-btn",
82
84
  onClick: this.close,
83
85
  type: "tertiary",
84
- icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
86
+ icon: iconType,
85
87
  theme: "borderless",
86
88
  size: "small"
87
89
  });
@@ -168,7 +170,8 @@ class SideSheetContent extends _react.default.PureComponent {
168
170
  }
169
171
  exports.default = SideSheetContent;
170
172
  SideSheetContent.propTypes = {
171
- onClose: _propTypes.default.func
173
+ onClose: _propTypes.default.func,
174
+ closeIcon: _propTypes.default.node
172
175
  };
173
176
  SideSheetContent.defaultProps = {
174
177
  onClose: _noop2.default
@@ -43,6 +43,8 @@ export interface BaseRowProps {
43
43
  style?: React.CSSProperties;
44
44
  virtualized?: Virtualized;
45
45
  visible: boolean;
46
+ /** whether display none */
47
+ displayNone?: boolean;
46
48
  }
47
49
  export default class TableRow extends BaseComponent<BaseRowProps, Record<string, any>> {
48
50
  static propTypes: {
@@ -55,6 +57,7 @@ export default class TableRow extends BaseComponent<BaseRowProps, Record<string,
55
57
  expandIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike | ((...args: any[]) => any)>>;
56
58
  expandableRow: PropTypes.Requireable<boolean>;
57
59
  expanded: PropTypes.Requireable<boolean>;
60
+ displayNone: PropTypes.Requireable<boolean>;
58
61
  expandedRow: PropTypes.Requireable<boolean>;
59
62
  fixed: PropTypes.Requireable<NonNullable<string | boolean>>;
60
63
  height: PropTypes.Requireable<NonNullable<string | number>>;
@@ -221,6 +221,7 @@ class TableRow extends _baseComponent.default {
221
221
  record,
222
222
  hovered,
223
223
  expanded,
224
+ displayNone,
224
225
  expandableRow,
225
226
  level,
226
227
  expandedRow,
@@ -238,7 +239,8 @@ class TableRow extends _baseComponent.default {
238
239
  const rowCls = typeof replaceClassName === 'string' && replaceClassName.length ? replaceClassName : (0, _classnames.default)(className, `${prefixCls}-row`, {
239
240
  [`${prefixCls}-row-selected`]: selected,
240
241
  [`${prefixCls}-row-expanded`]: expanded,
241
- [`${prefixCls}-row-hovered`]: hovered
242
+ [`${prefixCls}-row-hovered`]: hovered,
243
+ [`${prefixCls}-row-hidden`]: displayNone
242
244
  }, customClassName);
243
245
  const ariaProps = {};
244
246
  if (typeof index === 'number') {
@@ -280,6 +282,7 @@ TableRow.propTypes = {
280
282
  expandIcon: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.func, _propTypes.default.node]),
281
283
  expandableRow: _propTypes.default.bool,
282
284
  expanded: _propTypes.default.bool,
285
+ displayNone: _propTypes.default.bool,
283
286
  expandedRow: _propTypes.default.bool,
284
287
  fixed: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),
285
288
  height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
@@ -23,6 +23,7 @@ export interface TableExpandedRowProps {
23
23
  store?: Store;
24
24
  style?: React.CSSProperties;
25
25
  virtualized?: Virtualized;
26
+ displayNone?: boolean;
26
27
  }
27
28
  /**
28
29
  * Render expanded row
@@ -45,7 +45,8 @@ class TableExpandedRow extends _react.PureComponent {
45
45
  style,
46
46
  virtualized,
47
47
  indentSize,
48
- cellWidths
48
+ cellWidths,
49
+ displayNone
49
50
  } = this.props;
50
51
  const {
51
52
  tableWidth,
@@ -104,7 +105,8 @@ class TableExpandedRow extends _react.PureComponent {
104
105
  store: store,
105
106
  virtualized: virtualized,
106
107
  indentSize: indentSize,
107
- cellWidths: baseRowCellWidths
108
+ cellWidths: baseRowCellWidths,
109
+ displayNone: displayNone
108
110
  });
109
111
  }
110
112
  }
@@ -32,6 +32,7 @@ export interface BodyProps extends BaseProps {
32
32
  renderExpandIcon: (record: Record<string, any>, isNested: boolean) => ReactNode | null;
33
33
  headerRef?: React.MutableRefObject<HTMLDivElement> | ((instance: any) => void);
34
34
  onScroll?: VirtualizedOnScroll;
35
+ keepDOM?: boolean;
35
36
  }
36
37
  export interface BodyState {
37
38
  virtualizedData?: Array<FlattenData | GroupFlattenData>;
@@ -61,6 +62,8 @@ export interface RenderExpandedRowProps {
61
62
  rowKey?: RowKey<Record<string, any>>;
62
63
  virtualized?: Virtualized;
63
64
  level?: number;
65
+ keepDOM?: boolean;
66
+ displayNone?: boolean;
64
67
  }
65
68
  export interface RenderSectionRowProps {
66
69
  dataSource?: Record<string, any>[];
@@ -308,7 +308,8 @@ class Body extends _baseComponent.default {
308
308
  expanded,
309
309
  index,
310
310
  rowKey,
311
- virtualized
311
+ virtualized,
312
+ displayNone
312
313
  } = props;
313
314
  let key = (0, _utils.getRecordKey)(record, rowKey);
314
315
  if (key == null) {
@@ -334,7 +335,8 @@ class Body extends _baseComponent.default {
334
335
  index: index,
335
336
  virtualized: virtualized,
336
337
  key: (0, _utils.genExpandedRowKey)(key),
337
- cellWidths: _this.cellWidths
338
+ cellWidths: _this.cellWidths,
339
+ displayNone: displayNone
338
340
  });
339
341
  };
340
342
  /**
@@ -346,7 +348,8 @@ class Body extends _baseComponent.default {
346
348
  groups,
347
349
  dataSource: data,
348
350
  rowKey,
349
- expandedRowKeys
351
+ expandedRowKeys,
352
+ keepDOM
350
353
  } = this.props;
351
354
  const {
352
355
  flattenedColumns
@@ -381,7 +384,7 @@ class Body extends _baseComponent.default {
381
384
  expanded
382
385
  })));
383
386
  // Render the grouped content when the group is expanded
384
- if (expanded) {
387
+ if (expanded || keepDOM) {
385
388
  const dataInGroup = [];
386
389
  group.forEach(recordKey => {
387
390
  const record = (0, _utils.getRecord)(data, recordKey, rowKey);
@@ -392,7 +395,7 @@ class Body extends _baseComponent.default {
392
395
  /**
393
396
  * Render the contents of the group row
394
397
  */
395
- renderedRows.push(this.renderBodyRows(dataInGroup));
398
+ renderedRows.push(this.renderBodyRows(dataInGroup, undefined, [], !expanded));
396
399
  }
397
400
  });
398
401
  return renderedRows;
@@ -636,12 +639,14 @@ class Body extends _baseComponent.default {
636
639
  let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
637
640
  let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
638
641
  let renderedRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
642
+ let displayNone = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
639
643
  const {
640
644
  rowKey,
641
645
  expandedRowRender,
642
646
  expandedRowKeys,
643
647
  childrenRecordName,
644
- rowExpandable
648
+ rowExpandable,
649
+ keepDOM
645
650
  } = this.props;
646
651
  const hasExpandedRowRender = typeof expandedRowRender === 'function';
647
652
  const expandBtnShouldInRow = this.state.cachedExpandBtnShouldInRow;
@@ -658,6 +663,7 @@ class Body extends _baseComponent.default {
658
663
  renderedRows.push(this.renderBaseRow(Object.assign(Object.assign({}, this.props), {
659
664
  columns: flattenedColumns,
660
665
  expandBtnShouldInRow,
666
+ displayNone,
661
667
  record,
662
668
  key,
663
669
  level,
@@ -665,13 +671,15 @@ class Body extends _baseComponent.default {
665
671
  })));
666
672
  // render expand row
667
673
  const expanded = (0, _utils.isExpanded)(expandedRowKeys, key);
668
- if (hasExpandedRowRender && rowExpandable && rowExpandable(record) && expanded) {
674
+ const shouldRenderExpandedRows = expanded || keepDOM;
675
+ if (hasExpandedRowRender && rowExpandable && rowExpandable(record) && shouldRenderExpandedRows) {
669
676
  const currentExpandRow = this.renderExpandedRow(Object.assign(Object.assign({}, this.props), {
670
677
  columns: flattenedColumns,
671
678
  level,
672
679
  index,
673
680
  record,
674
- expanded
681
+ expanded,
682
+ displayNone: displayNone || !expanded
675
683
  }));
676
684
  /**
677
685
  * If expandedRowRender returns falsy, this expanded row will not be rendered
@@ -682,8 +690,8 @@ class Body extends _baseComponent.default {
682
690
  }
683
691
  }
684
692
  // render tree data
685
- if (recordHasChildren && expanded) {
686
- const nestedRows = this.renderBodyRows(recordChildren, level + 1);
693
+ if (recordHasChildren && shouldRenderExpandedRows) {
694
+ const nestedRows = this.renderBodyRows(recordChildren, level + 1, [], displayNone || !expanded);
687
695
  renderedRows.push(...nestedRows);
688
696
  }
689
697
  });
@@ -34,6 +34,7 @@ export interface TableProps<RecordType extends Record<string, any> = any> extend
34
34
  hideExpandedColumn?: boolean;
35
35
  id?: string;
36
36
  indentSize?: number;
37
+ keepDOM?: boolean;
37
38
  loading?: boolean;
38
39
  pagination?: TablePagination;
39
40
  prefixCls?: string;
@@ -63,6 +63,7 @@ export type TimePickerProps = {
63
63
  secondStep?: number;
64
64
  showClear?: boolean;
65
65
  size?: InputSize;
66
+ stopPropagation: boolean;
66
67
  style?: React.CSSProperties;
67
68
  timeZone?: string | number;
68
69
  triggerRender?: (props?: any) => React.ReactNode;
@@ -133,6 +134,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
133
134
  focusOnOpen: PropTypes.Requireable<boolean>;
134
135
  autoFocus: PropTypes.Requireable<boolean>;
135
136
  size: PropTypes.Requireable<"default" | "small" | "large">;
137
+ stopPropagation: PropTypes.Requireable<boolean>;
136
138
  panels: PropTypes.Requireable<PropTypes.InferProps<{
137
139
  panelHeader: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
138
140
  panelFooter: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -166,6 +168,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
166
168
  prefixCls: string;
167
169
  inputReadOnly: boolean;
168
170
  style: {};
171
+ stopPropagation: boolean;
169
172
  className: string;
170
173
  popupClassName: string;
171
174
  popupStyle: {