@douyinfe/semi-ui 2.38.3-alpha.2 → 2.38.3-alpha.2-patch-table-datepicker

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 (49) hide show
  1. package/dist/umd/semi-ui.js +258 -202
  2. package/dist/umd/semi-ui.js.map +1 -1
  3. package/dist/umd/semi-ui.min.js +1 -1
  4. package/dist/umd/semi-ui.min.js.map +1 -1
  5. package/lib/cjs/anchor/index.d.ts +1 -1
  6. package/lib/cjs/autoComplete/index.d.ts +1 -1
  7. package/lib/cjs/button/Button.d.ts +1 -1
  8. package/lib/cjs/button/buttonGroup.d.ts +1 -1
  9. package/lib/cjs/button/index.d.ts +1 -1
  10. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  11. package/lib/cjs/form/baseForm.d.ts +1 -1
  12. package/lib/cjs/form/field.d.ts +1 -1
  13. package/lib/cjs/input/index.d.ts +1 -1
  14. package/lib/cjs/input/inputGroup.d.ts +1 -1
  15. package/lib/cjs/modal/confirm.d.ts +6 -6
  16. package/lib/cjs/rating/index.d.ts +1 -1
  17. package/lib/cjs/rating/item.d.ts +1 -1
  18. package/lib/cjs/switch/index.d.ts +1 -1
  19. package/lib/cjs/table/Table.d.ts +2 -2
  20. package/lib/cjs/table/TableCell.js +7 -1
  21. package/lib/cjs/table/index.d.ts +1 -1
  22. package/lib/cjs/table/interface.d.ts +9 -0
  23. package/lib/cjs/tagInput/index.d.ts +1 -1
  24. package/lib/cjs/timePicker/TimePicker.d.ts +1 -1
  25. package/lib/cjs/timePicker/index.d.ts +1 -1
  26. package/lib/cjs/typography/title.d.ts +1 -1
  27. package/lib/es/anchor/index.d.ts +1 -1
  28. package/lib/es/autoComplete/index.d.ts +1 -1
  29. package/lib/es/button/Button.d.ts +1 -1
  30. package/lib/es/button/buttonGroup.d.ts +1 -1
  31. package/lib/es/button/index.d.ts +1 -1
  32. package/lib/es/datePicker/datePicker.d.ts +1 -1
  33. package/lib/es/form/baseForm.d.ts +1 -1
  34. package/lib/es/form/field.d.ts +1 -1
  35. package/lib/es/input/index.d.ts +1 -1
  36. package/lib/es/input/inputGroup.d.ts +1 -1
  37. package/lib/es/modal/confirm.d.ts +6 -6
  38. package/lib/es/rating/index.d.ts +1 -1
  39. package/lib/es/rating/item.d.ts +1 -1
  40. package/lib/es/switch/index.d.ts +1 -1
  41. package/lib/es/table/Table.d.ts +2 -2
  42. package/lib/es/table/TableCell.js +7 -1
  43. package/lib/es/table/index.d.ts +1 -1
  44. package/lib/es/table/interface.d.ts +9 -0
  45. package/lib/es/tagInput/index.d.ts +1 -1
  46. package/lib/es/timePicker/TimePicker.d.ts +1 -1
  47. package/lib/es/timePicker/index.d.ts +1 -1
  48. package/lib/es/typography/title.d.ts +1 -1
  49. package/package.json +8 -8
@@ -40,7 +40,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
40
40
  static contextType: React.Context<ContextValue>;
41
41
  static Link: typeof Link;
42
42
  static PropTypes: {
43
- size: PropTypes.Requireable<"default" | "small">;
43
+ size: PropTypes.Requireable<"small" | "default">;
44
44
  railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
45
45
  className: PropTypes.Requireable<string>;
46
46
  style: PropTypes.Requireable<object>;
@@ -125,7 +125,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
125
125
  renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
126
126
  suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
127
127
  showClear: PropTypes.Requireable<boolean>;
128
- size: PropTypes.Requireable<"default" | "small" | "large">;
128
+ size: PropTypes.Requireable<"small" | "default" | "large">;
129
129
  style: PropTypes.Requireable<object>;
130
130
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
131
131
  maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
@@ -47,7 +47,7 @@ export default class Button extends PureComponent<ButtonProps> {
47
47
  disabled: PropTypes.Requireable<boolean>;
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
- size: PropTypes.Requireable<"default" | "small" | "large">;
50
+ size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -18,7 +18,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
18
18
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
19
19
  disabled: PropTypes.Requireable<boolean>;
20
20
  type: PropTypes.Requireable<string>;
21
- size: PropTypes.Requireable<"default" | "small" | "large">;
21
+ size: PropTypes.Requireable<"small" | "default" | "large">;
22
22
  theme: PropTypes.Requireable<"solid" | "light" | "borderless">;
23
23
  'aria-label': PropTypes.Requireable<string>;
24
24
  };
@@ -22,7 +22,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
22
22
  onMouseEnter: import("prop-types").Requireable<(...args: any[]) => any>;
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
- size: import("prop-types").Requireable<"default" | "small" | "large">;
25
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
26
26
  type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -59,7 +59,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
59
59
  'aria-required': PropTypes.Requireable<boolean>;
60
60
  borderless: PropTypes.Requireable<boolean>;
61
61
  type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
- size: PropTypes.Requireable<"default" | "small" | "large">;
62
+ size: PropTypes.Requireable<"small" | "default" | "large">;
63
63
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
64
  density: PropTypes.Requireable<"default" | "compact">;
65
65
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -138,7 +138,7 @@ declare class Form<Values extends Record<string, any> = any> extends BaseCompone
138
138
  preventScroll?: boolean;
139
139
  showRestTagsPopover?: boolean;
140
140
  restTagsPopoverProps?: import("../popover").PopoverProps;
141
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
141
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
142
142
  static Checkbox: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox").CheckboxProps & import("./interface").RCIncludeType>;
143
143
  static CheckboxGroup: React.ComponentType<import("utility-types").Subtract<import("../checkbox").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
144
144
  static Radio: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../radio").RadioProps & import("./interface").RCIncludeType>;
@@ -86,7 +86,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
86
86
  preventScroll?: boolean;
87
87
  showRestTagsPopover?: boolean;
88
88
  restTagsPopoverProps?: import("../popover").PopoverProps;
89
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
89
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
90
90
  declare const FormCheckboxGroup: import("react").ComponentType<import("utility-types").Subtract<import("../checkbox/checkboxGroup").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
91
91
  declare const FormCheckbox: import("react").ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox/checkbox").CheckboxProps & import("./interface").RCIncludeType>;
92
92
  declare const FormRadioGroup: import("react").ComponentType<import("utility-types").Subtract<import("../radio/radioGroup").RadioGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
@@ -86,7 +86,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
86
86
  showClear: PropTypes.Requireable<boolean>;
87
87
  hideSuffix: PropTypes.Requireable<boolean>;
88
88
  placeholder: PropTypes.Requireable<any>;
89
- size: PropTypes.Requireable<"default" | "small" | "large">;
89
+ size: PropTypes.Requireable<"small" | "default" | "large">;
90
90
  className: PropTypes.Requireable<string>;
91
91
  style: PropTypes.Requireable<object>;
92
92
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
@@ -21,7 +21,7 @@ export default class inputGroup extends BaseComponent<InputGroupProps, InputGrou
21
21
  static propTypes: {
22
22
  className: PropTypes.Requireable<string>;
23
23
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
24
- size: PropTypes.Requireable<"default" | "small" | "large">;
24
+ size: PropTypes.Requireable<"small" | "default" | "large">;
25
25
  style: PropTypes.Requireable<object>;
26
26
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
@@ -140,12 +140,12 @@ export declare function withWarning(props: ModalReactProps): {
140
140
  type: "warning";
141
141
  };
142
142
  export declare function withError(props: ModalReactProps): {
143
- title?: React.ReactNode;
144
143
  children?: React.ReactNode;
144
+ motion?: boolean;
145
+ title?: React.ReactNode;
145
146
  size?: import("@douyinfe/semi-foundation/lib/cjs/modal/modalFoundation").Size;
146
147
  style?: React.CSSProperties;
147
148
  className?: string;
148
- motion?: boolean;
149
149
  getPopupContainer?: () => HTMLElement;
150
150
  footer?: React.ReactNode;
151
151
  header?: React.ReactNode;
@@ -201,11 +201,11 @@ export declare function withError(props: ModalReactProps): {
201
201
  onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
202
202
  onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
203
203
  'aria-label'?: string;
204
+ onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
205
+ onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
204
206
  title?: string;
205
207
  name?: string;
206
208
  value?: string | number | readonly string[];
207
- onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
208
- onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
209
209
  form?: string;
210
210
  slot?: string;
211
211
  hidden?: boolean;
@@ -230,7 +230,7 @@ export declare function withError(props: ModalReactProps): {
230
230
  prefix?: string;
231
231
  role?: React.AriaRole;
232
232
  contentEditable?: "inherit" | (boolean | "false" | "true");
233
- inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
233
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
234
234
  nonce?: string;
235
235
  tabIndex?: number;
236
236
  onMouseOut?: React.MouseEventHandler<HTMLButtonElement>;
@@ -278,7 +278,7 @@ export declare function withError(props: ModalReactProps): {
278
278
  'aria-current'?: boolean | "time" | "page" | "false" | "true" | "location" | "step" | "date";
279
279
  'aria-details'?: string;
280
280
  'aria-disabled'?: boolean | "false" | "true";
281
- 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup";
281
+ 'aria-dropeffect'?: "none" | "link" | "copy" | "move" | "execute" | "popup";
282
282
  'aria-errormessage'?: string;
283
283
  'aria-flowto'?: string;
284
284
  'aria-grabbed'?: boolean | "false" | "true";
@@ -69,7 +69,7 @@ export default class Rating extends BaseComponent<RatingProps, RatingState> {
69
69
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
70
70
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
71
71
  autoFocus: PropTypes.Requireable<boolean>;
72
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
72
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
73
73
  tooltips: PropTypes.Requireable<string[]>;
74
74
  id: PropTypes.Requireable<string>;
75
75
  preventScroll: PropTypes.Requireable<boolean>;
@@ -40,7 +40,7 @@ export default class Item extends BaseComponent<RatingItemProps, RatingItemState
40
40
  disabled: PropTypes.Requireable<boolean>;
41
41
  count: PropTypes.Requireable<number>;
42
42
  ariaLabelPrefix: PropTypes.Requireable<string>;
43
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
43
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
44
44
  'aria-describedby': PropTypes.Requireable<string>;
45
45
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
@@ -45,7 +45,7 @@ declare class Switch extends BaseComponent<SwitchProps, SwitchState> {
45
45
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
47
47
  style: PropTypes.Requireable<object>;
48
- size: PropTypes.Requireable<"default" | "small" | "large">;
48
+ size: PropTypes.Requireable<"small" | "default" | "large">;
49
49
  uncheckedText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
50
50
  id: PropTypes.Requireable<string>;
51
51
  };
@@ -60,7 +60,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
60
60
  components: PropTypes.Requireable<any>;
61
61
  bordered: PropTypes.Requireable<boolean>;
62
62
  loading: PropTypes.Requireable<boolean>;
63
- size: PropTypes.Requireable<"default" | "small" | "middle">;
63
+ size: PropTypes.Requireable<"small" | "default" | "middle">;
64
64
  tableLayout: PropTypes.Requireable<"" | "fixed" | "auto">;
65
65
  columns: PropTypes.Requireable<PropTypes.InferProps<{
66
66
  align: PropTypes.Requireable<"left" | "right" | "center">;
@@ -297,7 +297,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
297
297
  showTotal?: boolean;
298
298
  pageSize?: number;
299
299
  pageSizeOpts?: number[];
300
- size?: "default" | "small";
300
+ size?: "small" | "default";
301
301
  currentPage?: number;
302
302
  defaultCurrentPage?: number;
303
303
  onPageChange?: (currentPage: number) => void;
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _merge2 = _interopRequireDefault(require("lodash/merge"));
8
7
  var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
8
+ var _merge2 = _interopRequireDefault(require("lodash/merge"));
9
9
  var _omit2 = _interopRequireDefault(require("lodash/omit"));
10
10
  var _set2 = _interopRequireDefault(require("lodash/set"));
11
11
  var _noop2 = _interopRequireDefault(require("lodash/noop"));
@@ -82,6 +82,12 @@ class TableCell extends _baseComponent.default {
82
82
  expandIcon
83
83
  } = props;
84
84
  const cellInSelectionColumn = (0, _utils.isSelectionColumn)(column);
85
+ const {
86
+ shouldCellUpdate
87
+ } = column;
88
+ if (typeof shouldCellUpdate === 'function') {
89
+ return shouldCellUpdate(nextProps, props);
90
+ }
85
91
  // The expand button may be in a separate column or in the first data column
86
92
  const columnHasExpandIcon = (0, _utils.isExpandedColumn)(column) || expandIcon;
87
93
  if ((cellInSelectionColumn || columnHasExpandIcon) && !(0, _isEqual2.default)(nextProps, this.props)) {
@@ -16,7 +16,7 @@ declare class Table<RecordType extends Record<string, any> = Data> extends React
16
16
  components: PropTypes.Requireable<any>;
17
17
  bordered: PropTypes.Requireable<boolean>;
18
18
  loading: PropTypes.Requireable<boolean>;
19
- size: PropTypes.Requireable<"default" | "small" | "middle">;
19
+ size: PropTypes.Requireable<"small" | "default" | "middle">;
20
20
  tableLayout: PropTypes.Requireable<"" | "fixed" | "auto">;
21
21
  columns: PropTypes.Requireable<PropTypes.InferProps<{
22
22
  align: PropTypes.Requireable<"left" | "right" | "center">;
@@ -8,6 +8,7 @@ import { ArrayElement } from '../_base/base';
8
8
  import { strings } from '@douyinfe/semi-foundation/lib/cjs/table/constants';
9
9
  import { BaseRowKeyType, BaseSortOrder, BaseGroupBy, BaseGroupByFn, BaseFixed, BaseAlign, BaseChangeInfoSorter, BaseSorter, BaseFilter, BaseChangeInfoFilter, BaseIncludeGroupRecord, BaseEllipsis } from '@douyinfe/semi-foundation/lib/cjs/table/foundation';
10
10
  import { ScrollDirection, CSSDirection } from 'react-window';
11
+ import { TableCellProps } from './TableCell';
11
12
  export interface TableProps<RecordType extends Record<string, any> = any> extends BaseProps {
12
13
  bordered?: boolean;
13
14
  children?: ReactNode;
@@ -90,6 +91,10 @@ export interface ColumnProps<RecordType extends Record<string, any> = any> {
90
91
  onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
91
92
  onHeaderCell?: OnHeaderCell<RecordType>;
92
93
  ellipsis?: BaseEllipsis;
94
+ /**
95
+ * self control whether to update cell for performance reasons
96
+ */
97
+ shouldCellUpdate?: (props: TableCellProps, prevProps: TableCellProps) => boolean;
93
98
  }
94
99
  export type Align = BaseAlign;
95
100
  export type SortOrder = BaseSortOrder;
@@ -211,6 +216,10 @@ export interface RowSelectionProps<RecordType> {
211
216
  onChange?: RowSelectionOnChange<RecordType>;
212
217
  onSelect?: RowSelectionOnSelect<RecordType>;
213
218
  onSelectAll?: RowSelectionOnSelectAll<RecordType>;
219
+ /**
220
+ * self control whether to update cell for performance reasons
221
+ */
222
+ shouldCellUpdate?: (props: TableCellProps, prevProps: TableCellProps) => boolean;
214
223
  }
215
224
  export type GetCheckboxProps<RecordType> = (record: RecordType) => CheckboxProps;
216
225
  export type RowSelectionOnChange<RecordType> = (selectedRowKeys?: (string | number)[], selectedRows?: RecordType[]) => void;
@@ -96,7 +96,7 @@ declare class TagInput extends BaseComponent<TagInputProps, TagInputState> {
96
96
  onAdd: PropTypes.Requireable<(...args: any[]) => any>;
97
97
  onRemove: PropTypes.Requireable<(...args: any[]) => any>;
98
98
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
99
- size: PropTypes.Requireable<"default" | "small" | "large">;
99
+ size: PropTypes.Requireable<"small" | "default" | "large">;
100
100
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
101
101
  prefix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
102
102
  suffix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -132,7 +132,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
132
132
  secondStep: PropTypes.Requireable<number>;
133
133
  focusOnOpen: PropTypes.Requireable<boolean>;
134
134
  autoFocus: PropTypes.Requireable<boolean>;
135
- size: PropTypes.Requireable<"default" | "small" | "large">;
135
+ size: PropTypes.Requireable<"small" | "default" | "large">;
136
136
  panels: PropTypes.Requireable<PropTypes.InferProps<{
137
137
  panelHeader: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
138
138
  panelFooter: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -49,7 +49,7 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
49
49
  secondStep: import("prop-types").Requireable<number>;
50
50
  focusOnOpen: import("prop-types").Requireable<boolean>;
51
51
  autoFocus: import("prop-types").Requireable<boolean>;
52
- size: import("prop-types").Requireable<"default" | "small" | "large">;
52
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
53
53
  panels: import("prop-types").Requireable<import("prop-types").InferProps<{
54
54
  panelHeader: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
55
55
  panelFooter: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
@@ -43,7 +43,7 @@ export default class Title extends PureComponent<TitleProps> {
43
43
  style: PropTypes.Requireable<object>;
44
44
  className: PropTypes.Requireable<string>;
45
45
  component: PropTypes.Requireable<string>;
46
- weight: PropTypes.Requireable<NonNullable<number | "default" | "bold" | "medium" | "light" | "regular" | "semibold">>;
46
+ weight: PropTypes.Requireable<NonNullable<number | "bold" | "default" | "medium" | "light" | "regular" | "semibold">>;
47
47
  };
48
48
  static defaultProps: {
49
49
  copyable: boolean;
@@ -40,7 +40,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
40
40
  static contextType: React.Context<ContextValue>;
41
41
  static Link: typeof Link;
42
42
  static PropTypes: {
43
- size: PropTypes.Requireable<"default" | "small">;
43
+ size: PropTypes.Requireable<"small" | "default">;
44
44
  railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
45
45
  className: PropTypes.Requireable<string>;
46
46
  style: PropTypes.Requireable<object>;
@@ -125,7 +125,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
125
125
  renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
126
126
  suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
127
127
  showClear: PropTypes.Requireable<boolean>;
128
- size: PropTypes.Requireable<"default" | "small" | "large">;
128
+ size: PropTypes.Requireable<"small" | "default" | "large">;
129
129
  style: PropTypes.Requireable<object>;
130
130
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
131
131
  maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
@@ -47,7 +47,7 @@ export default class Button extends PureComponent<ButtonProps> {
47
47
  disabled: PropTypes.Requireable<boolean>;
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
- size: PropTypes.Requireable<"default" | "small" | "large">;
50
+ size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -18,7 +18,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
18
18
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
19
19
  disabled: PropTypes.Requireable<boolean>;
20
20
  type: PropTypes.Requireable<string>;
21
- size: PropTypes.Requireable<"default" | "small" | "large">;
21
+ size: PropTypes.Requireable<"small" | "default" | "large">;
22
22
  theme: PropTypes.Requireable<"solid" | "light" | "borderless">;
23
23
  'aria-label': PropTypes.Requireable<string>;
24
24
  };
@@ -22,7 +22,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
22
22
  onMouseEnter: import("prop-types").Requireable<(...args: any[]) => any>;
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
- size: import("prop-types").Requireable<"default" | "small" | "large">;
25
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
26
26
  type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -59,7 +59,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
59
59
  'aria-required': PropTypes.Requireable<boolean>;
60
60
  borderless: PropTypes.Requireable<boolean>;
61
61
  type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
- size: PropTypes.Requireable<"default" | "small" | "large">;
62
+ size: PropTypes.Requireable<"small" | "default" | "large">;
63
63
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
64
  density: PropTypes.Requireable<"default" | "compact">;
65
65
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -138,7 +138,7 @@ declare class Form<Values extends Record<string, any> = any> extends BaseCompone
138
138
  preventScroll?: boolean;
139
139
  showRestTagsPopover?: boolean;
140
140
  restTagsPopoverProps?: import("../popover").PopoverProps;
141
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
141
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
142
142
  static Checkbox: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox").CheckboxProps & import("./interface").RCIncludeType>;
143
143
  static CheckboxGroup: React.ComponentType<import("utility-types").Subtract<import("../checkbox").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
144
144
  static Radio: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../radio").RadioProps & import("./interface").RCIncludeType>;
@@ -86,7 +86,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
86
86
  preventScroll?: boolean;
87
87
  showRestTagsPopover?: boolean;
88
88
  restTagsPopoverProps?: import("../popover").PopoverProps;
89
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
89
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
90
90
  declare const FormCheckboxGroup: import("react").ComponentType<import("utility-types").Subtract<import("../checkbox/checkboxGroup").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
91
91
  declare const FormCheckbox: import("react").ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox/checkbox").CheckboxProps & import("./interface").RCIncludeType>;
92
92
  declare const FormRadioGroup: import("react").ComponentType<import("utility-types").Subtract<import("../radio/radioGroup").RadioGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
@@ -86,7 +86,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
86
86
  showClear: PropTypes.Requireable<boolean>;
87
87
  hideSuffix: PropTypes.Requireable<boolean>;
88
88
  placeholder: PropTypes.Requireable<any>;
89
- size: PropTypes.Requireable<"default" | "small" | "large">;
89
+ size: PropTypes.Requireable<"small" | "default" | "large">;
90
90
  className: PropTypes.Requireable<string>;
91
91
  style: PropTypes.Requireable<object>;
92
92
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
@@ -21,7 +21,7 @@ export default class inputGroup extends BaseComponent<InputGroupProps, InputGrou
21
21
  static propTypes: {
22
22
  className: PropTypes.Requireable<string>;
23
23
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
24
- size: PropTypes.Requireable<"default" | "small" | "large">;
24
+ size: PropTypes.Requireable<"small" | "default" | "large">;
25
25
  style: PropTypes.Requireable<object>;
26
26
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
@@ -140,12 +140,12 @@ export declare function withWarning(props: ModalReactProps): {
140
140
  type: "warning";
141
141
  };
142
142
  export declare function withError(props: ModalReactProps): {
143
- title?: React.ReactNode;
144
143
  children?: React.ReactNode;
144
+ motion?: boolean;
145
+ title?: React.ReactNode;
145
146
  size?: import("@douyinfe/semi-foundation/lib/es/modal/modalFoundation").Size;
146
147
  style?: React.CSSProperties;
147
148
  className?: string;
148
- motion?: boolean;
149
149
  getPopupContainer?: () => HTMLElement;
150
150
  footer?: React.ReactNode;
151
151
  header?: React.ReactNode;
@@ -201,11 +201,11 @@ export declare function withError(props: ModalReactProps): {
201
201
  onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
202
202
  onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
203
203
  'aria-label'?: string;
204
+ onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
205
+ onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
204
206
  title?: string;
205
207
  name?: string;
206
208
  value?: string | number | readonly string[];
207
- onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
208
- onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
209
209
  form?: string;
210
210
  slot?: string;
211
211
  hidden?: boolean;
@@ -230,7 +230,7 @@ export declare function withError(props: ModalReactProps): {
230
230
  prefix?: string;
231
231
  role?: React.AriaRole;
232
232
  contentEditable?: "inherit" | (boolean | "false" | "true");
233
- inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
233
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
234
234
  nonce?: string;
235
235
  tabIndex?: number;
236
236
  onMouseOut?: React.MouseEventHandler<HTMLButtonElement>;
@@ -278,7 +278,7 @@ export declare function withError(props: ModalReactProps): {
278
278
  'aria-current'?: boolean | "time" | "page" | "false" | "true" | "location" | "step" | "date";
279
279
  'aria-details'?: string;
280
280
  'aria-disabled'?: boolean | "false" | "true";
281
- 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup";
281
+ 'aria-dropeffect'?: "none" | "link" | "copy" | "move" | "execute" | "popup";
282
282
  'aria-errormessage'?: string;
283
283
  'aria-flowto'?: string;
284
284
  'aria-grabbed'?: boolean | "false" | "true";
@@ -69,7 +69,7 @@ export default class Rating extends BaseComponent<RatingProps, RatingState> {
69
69
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
70
70
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
71
71
  autoFocus: PropTypes.Requireable<boolean>;
72
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
72
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
73
73
  tooltips: PropTypes.Requireable<string[]>;
74
74
  id: PropTypes.Requireable<string>;
75
75
  preventScroll: PropTypes.Requireable<boolean>;
@@ -40,7 +40,7 @@ export default class Item extends BaseComponent<RatingItemProps, RatingItemState
40
40
  disabled: PropTypes.Requireable<boolean>;
41
41
  count: PropTypes.Requireable<number>;
42
42
  ariaLabelPrefix: PropTypes.Requireable<string>;
43
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
43
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
44
44
  'aria-describedby': PropTypes.Requireable<string>;
45
45
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
@@ -45,7 +45,7 @@ declare class Switch extends BaseComponent<SwitchProps, SwitchState> {
45
45
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
47
47
  style: PropTypes.Requireable<object>;
48
- size: PropTypes.Requireable<"default" | "small" | "large">;
48
+ size: PropTypes.Requireable<"small" | "default" | "large">;
49
49
  uncheckedText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
50
50
  id: PropTypes.Requireable<string>;
51
51
  };
@@ -60,7 +60,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
60
60
  components: PropTypes.Requireable<any>;
61
61
  bordered: PropTypes.Requireable<boolean>;
62
62
  loading: PropTypes.Requireable<boolean>;
63
- size: PropTypes.Requireable<"default" | "small" | "middle">;
63
+ size: PropTypes.Requireable<"small" | "default" | "middle">;
64
64
  tableLayout: PropTypes.Requireable<"" | "fixed" | "auto">;
65
65
  columns: PropTypes.Requireable<PropTypes.InferProps<{
66
66
  align: PropTypes.Requireable<"left" | "right" | "center">;
@@ -297,7 +297,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
297
297
  showTotal?: boolean;
298
298
  pageSize?: number;
299
299
  pageSizeOpts?: number[];
300
- size?: "default" | "small";
300
+ size?: "small" | "default";
301
301
  currentPage?: number;
302
302
  defaultCurrentPage?: number;
303
303
  onPageChange?: (currentPage: number) => void;
@@ -1,5 +1,5 @@
1
- import _merge from "lodash/merge";
2
1
  import _isEqual from "lodash/isEqual";
2
+ import _merge from "lodash/merge";
3
3
  import _omit from "lodash/omit";
4
4
  import _set from "lodash/set";
5
5
  import _noop from "lodash/noop";
@@ -72,6 +72,12 @@ export default class TableCell extends BaseComponent {
72
72
  expandIcon
73
73
  } = props;
74
74
  const cellInSelectionColumn = isSelectionColumn(column);
75
+ const {
76
+ shouldCellUpdate
77
+ } = column;
78
+ if (typeof shouldCellUpdate === 'function') {
79
+ return shouldCellUpdate(nextProps, props);
80
+ }
75
81
  // The expand button may be in a separate column or in the first data column
76
82
  const columnHasExpandIcon = isExpandedColumn(column) || expandIcon;
77
83
  if ((cellInSelectionColumn || columnHasExpandIcon) && !_isEqual(nextProps, this.props)) {
@@ -16,7 +16,7 @@ declare class Table<RecordType extends Record<string, any> = Data> extends React
16
16
  components: PropTypes.Requireable<any>;
17
17
  bordered: PropTypes.Requireable<boolean>;
18
18
  loading: PropTypes.Requireable<boolean>;
19
- size: PropTypes.Requireable<"default" | "small" | "middle">;
19
+ size: PropTypes.Requireable<"small" | "default" | "middle">;
20
20
  tableLayout: PropTypes.Requireable<"" | "fixed" | "auto">;
21
21
  columns: PropTypes.Requireable<PropTypes.InferProps<{
22
22
  align: PropTypes.Requireable<"left" | "right" | "center">;
@@ -8,6 +8,7 @@ import { ArrayElement } from '../_base/base';
8
8
  import { strings } from '@douyinfe/semi-foundation/lib/es/table/constants';
9
9
  import { BaseRowKeyType, BaseSortOrder, BaseGroupBy, BaseGroupByFn, BaseFixed, BaseAlign, BaseChangeInfoSorter, BaseSorter, BaseFilter, BaseChangeInfoFilter, BaseIncludeGroupRecord, BaseEllipsis } from '@douyinfe/semi-foundation/lib/es/table/foundation';
10
10
  import { ScrollDirection, CSSDirection } from 'react-window';
11
+ import { TableCellProps } from './TableCell';
11
12
  export interface TableProps<RecordType extends Record<string, any> = any> extends BaseProps {
12
13
  bordered?: boolean;
13
14
  children?: ReactNode;
@@ -90,6 +91,10 @@ export interface ColumnProps<RecordType extends Record<string, any> = any> {
90
91
  onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
91
92
  onHeaderCell?: OnHeaderCell<RecordType>;
92
93
  ellipsis?: BaseEllipsis;
94
+ /**
95
+ * self control whether to update cell for performance reasons
96
+ */
97
+ shouldCellUpdate?: (props: TableCellProps, prevProps: TableCellProps) => boolean;
93
98
  }
94
99
  export type Align = BaseAlign;
95
100
  export type SortOrder = BaseSortOrder;
@@ -211,6 +216,10 @@ export interface RowSelectionProps<RecordType> {
211
216
  onChange?: RowSelectionOnChange<RecordType>;
212
217
  onSelect?: RowSelectionOnSelect<RecordType>;
213
218
  onSelectAll?: RowSelectionOnSelectAll<RecordType>;
219
+ /**
220
+ * self control whether to update cell for performance reasons
221
+ */
222
+ shouldCellUpdate?: (props: TableCellProps, prevProps: TableCellProps) => boolean;
214
223
  }
215
224
  export type GetCheckboxProps<RecordType> = (record: RecordType) => CheckboxProps;
216
225
  export type RowSelectionOnChange<RecordType> = (selectedRowKeys?: (string | number)[], selectedRows?: RecordType[]) => void;
@@ -96,7 +96,7 @@ declare class TagInput extends BaseComponent<TagInputProps, TagInputState> {
96
96
  onAdd: PropTypes.Requireable<(...args: any[]) => any>;
97
97
  onRemove: PropTypes.Requireable<(...args: any[]) => any>;
98
98
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
99
- size: PropTypes.Requireable<"default" | "small" | "large">;
99
+ size: PropTypes.Requireable<"small" | "default" | "large">;
100
100
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
101
101
  prefix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
102
102
  suffix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -132,7 +132,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
132
132
  secondStep: PropTypes.Requireable<number>;
133
133
  focusOnOpen: PropTypes.Requireable<boolean>;
134
134
  autoFocus: PropTypes.Requireable<boolean>;
135
- size: PropTypes.Requireable<"default" | "small" | "large">;
135
+ size: PropTypes.Requireable<"small" | "default" | "large">;
136
136
  panels: PropTypes.Requireable<PropTypes.InferProps<{
137
137
  panelHeader: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
138
138
  panelFooter: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;