@douyinfe/semi-ui 2.18.2 → 2.18.3

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 (40) hide show
  1. package/dist/umd/semi-ui.js +277 -286
  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/carousel/CarouselIndicator.d.ts +1 -1
  6. package/lib/cjs/carousel/index.d.ts +1 -1
  7. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  8. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  9. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  10. package/lib/cjs/radio/radio.d.ts +1 -1
  11. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  12. package/lib/cjs/table/ResizableTable.js +1 -1
  13. package/lib/cjs/table/Table.js +2 -2
  14. package/lib/cjs/table/utils.d.ts +1 -0
  15. package/lib/cjs/table/utils.js +32 -0
  16. package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
  17. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  18. package/lib/cjs/timePicker/index.d.ts +2 -2
  19. package/lib/cjs/typography/title.d.ts +1 -1
  20. package/lib/cjs/upload/index.d.ts +1 -1
  21. package/lib/es/carousel/CarouselIndicator.d.ts +1 -1
  22. package/lib/es/carousel/index.d.ts +1 -1
  23. package/lib/es/datePicker/dateInput.d.ts +1 -1
  24. package/lib/es/datePicker/datePicker.d.ts +1 -1
  25. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  26. package/lib/es/radio/radio.d.ts +1 -1
  27. package/lib/es/radio/radioGroup.d.ts +1 -1
  28. package/lib/es/table/ResizableTable.js +2 -2
  29. package/lib/es/table/Table.js +2 -2
  30. package/lib/es/table/utils.d.ts +1 -0
  31. package/lib/es/table/utils.js +28 -0
  32. package/lib/es/timePicker/TimePicker.d.ts +2 -2
  33. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  34. package/lib/es/timePicker/index.d.ts +2 -2
  35. package/lib/es/typography/title.d.ts +1 -1
  36. package/lib/es/upload/index.d.ts +1 -1
  37. package/package.json +7 -7
  38. package/table/ResizableTable.tsx +2 -2
  39. package/table/Table.tsx +1 -2
  40. package/table/utils.ts +27 -1
@@ -8,7 +8,7 @@ declare class CarouselIndicator extends React.PureComponent<CarouselIndicatorPro
8
8
  position: PropTypes.Requireable<"left" | "right" | "center">;
9
9
  size: PropTypes.Requireable<"small" | "medium">;
10
10
  style: PropTypes.Requireable<object>;
11
- theme: PropTypes.Requireable<"primary" | "dark" | "light">;
11
+ theme: PropTypes.Requireable<"dark" | "light" | "primary">;
12
12
  total: PropTypes.Requireable<number>;
13
13
  onIndicatorChange: PropTypes.Requireable<(...args: any[]) => any>;
14
14
  type: PropTypes.Requireable<"line" | "dot" | "columnar">;
@@ -22,7 +22,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
22
22
  indicatorPosition: PropTypes.Requireable<"left" | "right" | "center">;
23
23
  indicatorSize: PropTypes.Requireable<"small" | "medium">;
24
24
  indicatorType: PropTypes.Requireable<"line" | "dot" | "columnar">;
25
- theme: PropTypes.Requireable<"primary" | "dark" | "light">;
25
+ theme: PropTypes.Requireable<"dark" | "light" | "primary">;
26
26
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  arrowType: PropTypes.Requireable<"hover" | "always">;
28
28
  showArrow: PropTypes.Requireable<boolean>;
@@ -26,7 +26,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
26
26
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  value: PropTypes.Requireable<any[]>;
28
28
  disabled: PropTypes.Requireable<boolean>;
29
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
29
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
30
30
  showClear: PropTypes.Requireable<boolean>;
31
31
  format: PropTypes.Requireable<string>;
32
32
  inputStyle: PropTypes.Requireable<object>;
@@ -41,7 +41,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
41
41
  'aria-invalid': PropTypes.Requireable<boolean>;
42
42
  'aria-labelledby': PropTypes.Requireable<string>;
43
43
  'aria-required': PropTypes.Requireable<boolean>;
44
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
44
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
45
45
  size: PropTypes.Requireable<"default" | "small" | "large">;
46
46
  density: PropTypes.Requireable<"default" | "compact">;
47
47
  defaultValue: PropTypes.Requireable<string | number | object>;
@@ -17,7 +17,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
17
17
  export declare type MonthsGridState = MonthsGridFoundationState;
18
18
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
19
19
  static propTypes: {
20
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
20
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
21
21
  defaultValue: PropTypes.Requireable<string | number | object>;
22
22
  defaultPickerValue: PropTypes.Requireable<string | number | object>;
23
23
  multiple: PropTypes.Requireable<boolean>;
@@ -81,7 +81,7 @@ declare class Radio extends BaseComponent<RadioProps, RadioState> {
81
81
  prefixCls?: string;
82
82
  name?: string;
83
83
  onChange?: (e: RadioChangeEvent) => void;
84
- buttonSize?: "small" | "middle" | "large";
84
+ buttonSize?: "small" | "large" | "middle";
85
85
  isCardRadio?: boolean;
86
86
  isPureCardRadio?: boolean;
87
87
  };
@@ -48,7 +48,7 @@ declare class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState>
48
48
  disabled: PropTypes.Requireable<boolean>;
49
49
  name: PropTypes.Requireable<string>;
50
50
  options: PropTypes.Requireable<any[]>;
51
- buttonSize: PropTypes.Requireable<"small" | "middle" | "large">;
51
+ buttonSize: PropTypes.Requireable<"small" | "large" | "middle">;
52
52
  type: PropTypes.Requireable<"default" | "button" | "card" | "pureCard">;
53
53
  value: PropTypes.Requireable<any>;
54
54
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -129,7 +129,7 @@ const ResizableTable = function () {
129
129
  // If there is a resize value, the width does not use the default value fix#1072
130
130
  const _newColumns = (0, _utils.withResizeWidth)(columns, newColumns);
131
131
 
132
- setColumns((0, _utils.mergeColumns)(columns, _newColumns));
132
+ setColumns((0, _utils2.mergeColumns)(columns, _newColumns));
133
133
  }, [propColumns, props.expandedRowRender, props.hideExpandedColumn, props.rowSelection]);
134
134
  const components = (0, _react.useMemo)(() => (0, _merge2.default)({
135
135
  header: {
@@ -1167,13 +1167,13 @@ class Table extends _baseComponent.default {
1167
1167
  if (props.columns && props.columns !== state.cachedColumns) {
1168
1168
  const newFlattenColumns = (0, _utils.flattenColumns)(props.columns);
1169
1169
  willUpdateStates.flattenColumns = newFlattenColumns;
1170
- willUpdateStates.queries = (0, _utils.mergeColumns)(state.queries, newFlattenColumns, null, false);
1170
+ willUpdateStates.queries = (0, _utils2.mergeColumns)(state.queries, newFlattenColumns, null, false);
1171
1171
  willUpdateStates.cachedColumns = props.columns;
1172
1172
  willUpdateStates.cachedChildren = null;
1173
1173
  } else if (props.children && props.children !== state.cachedChildren) {
1174
1174
  const newNestedColumns = (0, _getColumns.default)(props.children);
1175
1175
  const newFlattenColumns = (0, _utils.flattenColumns)(newNestedColumns);
1176
- const columns = (0, _utils.mergeColumns)(state.queries, newFlattenColumns, null, false);
1176
+ const columns = (0, _utils2.mergeColumns)(state.queries, newFlattenColumns, null, false);
1177
1177
  willUpdateStates.flattenColumns = newFlattenColumns;
1178
1178
  willUpdateStates.queries = [...columns];
1179
1179
  willUpdateStates.cachedColumns = [...newNestedColumns];
@@ -38,5 +38,6 @@ export declare function mergeComponents(components: TableComponents, virtualized
38
38
  cell: string;
39
39
  };
40
40
  } & TableComponents;
41
+ export declare function mergeColumns(oldColumns?: any[], newColumns?: any[], keyPropNames?: any[], deep?: boolean): any[];
41
42
  export declare const logger: Logger;
42
43
  export { cloneDeep };
@@ -19,12 +19,21 @@ _Object$defineProperty(exports, "cloneDeep", {
19
19
 
20
20
  exports.logger = void 0;
21
21
  exports.measureScrollbar = measureScrollbar;
22
+ exports.mergeColumns = mergeColumns;
22
23
  exports.mergeComponents = mergeComponents;
23
24
 
24
25
  var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
25
26
 
26
27
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
27
28
 
29
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
30
+
31
+ var _map2 = _interopRequireDefault(require("lodash/map"));
32
+
33
+ var _find2 = _interopRequireDefault(require("lodash/find"));
34
+
35
+ var _clone2 = _interopRequireDefault(require("lodash/clone"));
36
+
28
37
  var _merge2 = _interopRequireDefault(require("lodash/merge"));
29
38
 
30
39
  var _Logger = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/Logger"));
@@ -33,6 +42,8 @@ var _constants = require("@douyinfe/semi-foundation/lib/cjs/table/constants");
33
42
 
34
43
  var _utils = require("../_utils");
35
44
 
45
+ var _utils2 = require("@douyinfe/semi-foundation/lib/cjs/table/utils");
46
+
36
47
  let scrollbarVerticalSize, scrollbarHorizontalSize; // Measure scrollbar width for padding body during modal show/hide
37
48
 
38
49
  const scrollbarMeasure = {
@@ -140,5 +151,26 @@ function mergeComponents(components, virtualized) {
140
151
  }, components);
141
152
  }
142
153
 
154
+ function mergeColumns() {
155
+ let oldColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
156
+ let newColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
157
+ let keyPropNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
158
+ let deep = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
159
+ const finalColumns = [];
160
+ const clone = deep ? _utils.cloneDeep : _clone2.default;
161
+ (0, _map2.default)(newColumns, newColumn => {
162
+ newColumn = (0, _assign.default)({}, newColumn);
163
+ const key = (0, _utils2.getColumnKey)(newColumn, keyPropNames);
164
+ const oldColumn = key != null && (0, _find2.default)(oldColumns, item => (0, _utils2.getColumnKey)(item, keyPropNames) === key);
165
+
166
+ if (oldColumn) {
167
+ finalColumns.push(clone((0, _assign.default)((0, _assign.default)({}, oldColumn), newColumn)));
168
+ } else {
169
+ finalColumns.push(clone(newColumn));
170
+ }
171
+ });
172
+ return finalColumns;
173
+ }
174
+
143
175
  const logger = new _Logger.default('[@douyinfe/semi-ui Table]');
144
176
  exports.logger = logger;
@@ -99,11 +99,11 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
99
99
  'aria-required': PropTypes.Requireable<boolean>;
100
100
  prefixCls: PropTypes.Requireable<string>;
101
101
  clearText: PropTypes.Requireable<string>;
102
- value: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
102
+ value: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
103
103
  inputReadOnly: PropTypes.Requireable<boolean>;
104
104
  disabled: PropTypes.Requireable<boolean>;
105
105
  showClear: PropTypes.Requireable<boolean>;
106
- defaultValue: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
106
+ defaultValue: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
107
107
  open: PropTypes.Requireable<boolean>;
108
108
  defaultOpen: PropTypes.Requireable<boolean>;
109
109
  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[] | number[] | Date | Date[]>;
9
+ declare const TimeShape: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
10
10
  export { TimeShape };
@@ -19,11 +19,11 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
19
19
  'aria-required': import("prop-types").Requireable<boolean>;
20
20
  prefixCls: import("prop-types").Requireable<string>;
21
21
  clearText: import("prop-types").Requireable<string>;
22
- value: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
22
+ value: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
23
23
  inputReadOnly: import("prop-types").Requireable<boolean>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
25
  showClear: import("prop-types").Requireable<boolean>;
26
- defaultValue: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
26
+ defaultValue: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
27
27
  open: import("prop-types").Requireable<boolean>;
28
28
  defaultOpen: import("prop-types").Requireable<boolean>;
29
29
  onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -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 | 5 | 6>;
40
+ heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 6 | 5>;
41
41
  style: PropTypes.Requireable<object>;
42
42
  className: PropTypes.Requireable<string>;
43
43
  component: PropTypes.Requireable<string>;
@@ -140,7 +140,7 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
140
140
  style: PropTypes.Requireable<object>;
141
141
  timeout: PropTypes.Requireable<number>;
142
142
  transformFile: PropTypes.Requireable<(...args: any[]) => any>;
143
- uploadTrigger: PropTypes.Requireable<"auto" | "custom">;
143
+ uploadTrigger: PropTypes.Requireable<"custom" | "auto">;
144
144
  validateMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
145
145
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
146
146
  withCredentials: PropTypes.Requireable<boolean>;
@@ -8,7 +8,7 @@ declare class CarouselIndicator extends React.PureComponent<CarouselIndicatorPro
8
8
  position: PropTypes.Requireable<"left" | "right" | "center">;
9
9
  size: PropTypes.Requireable<"small" | "medium">;
10
10
  style: PropTypes.Requireable<object>;
11
- theme: PropTypes.Requireable<"primary" | "dark" | "light">;
11
+ theme: PropTypes.Requireable<"dark" | "light" | "primary">;
12
12
  total: PropTypes.Requireable<number>;
13
13
  onIndicatorChange: PropTypes.Requireable<(...args: any[]) => any>;
14
14
  type: PropTypes.Requireable<"line" | "dot" | "columnar">;
@@ -22,7 +22,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
22
22
  indicatorPosition: PropTypes.Requireable<"left" | "right" | "center">;
23
23
  indicatorSize: PropTypes.Requireable<"small" | "medium">;
24
24
  indicatorType: PropTypes.Requireable<"line" | "dot" | "columnar">;
25
- theme: PropTypes.Requireable<"primary" | "dark" | "light">;
25
+ theme: PropTypes.Requireable<"dark" | "light" | "primary">;
26
26
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  arrowType: PropTypes.Requireable<"hover" | "always">;
28
28
  showArrow: PropTypes.Requireable<boolean>;
@@ -26,7 +26,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
26
26
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  value: PropTypes.Requireable<any[]>;
28
28
  disabled: PropTypes.Requireable<boolean>;
29
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
29
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
30
30
  showClear: PropTypes.Requireable<boolean>;
31
31
  format: PropTypes.Requireable<string>;
32
32
  inputStyle: PropTypes.Requireable<object>;
@@ -41,7 +41,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
41
41
  'aria-invalid': PropTypes.Requireable<boolean>;
42
42
  'aria-labelledby': PropTypes.Requireable<string>;
43
43
  'aria-required': PropTypes.Requireable<boolean>;
44
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
44
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
45
45
  size: PropTypes.Requireable<"default" | "small" | "large">;
46
46
  density: PropTypes.Requireable<"default" | "compact">;
47
47
  defaultValue: PropTypes.Requireable<string | number | object>;
@@ -17,7 +17,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
17
17
  export declare type MonthsGridState = MonthsGridFoundationState;
18
18
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
19
19
  static propTypes: {
20
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
20
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
21
21
  defaultValue: PropTypes.Requireable<string | number | object>;
22
22
  defaultPickerValue: PropTypes.Requireable<string | number | object>;
23
23
  multiple: PropTypes.Requireable<boolean>;
@@ -81,7 +81,7 @@ declare class Radio extends BaseComponent<RadioProps, RadioState> {
81
81
  prefixCls?: string;
82
82
  name?: string;
83
83
  onChange?: (e: RadioChangeEvent) => void;
84
- buttonSize?: "small" | "middle" | "large";
84
+ buttonSize?: "small" | "large" | "middle";
85
85
  isCardRadio?: boolean;
86
86
  isPureCardRadio?: boolean;
87
87
  };
@@ -48,7 +48,7 @@ declare class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState>
48
48
  disabled: PropTypes.Requireable<boolean>;
49
49
  name: PropTypes.Requireable<string>;
50
50
  options: PropTypes.Requireable<any[]>;
51
- buttonSize: PropTypes.Requireable<"small" | "middle" | "large">;
51
+ buttonSize: PropTypes.Requireable<"small" | "large" | "middle">;
52
52
  type: PropTypes.Requireable<"default" | "button" | "card" | "pureCard">;
53
53
  value: PropTypes.Requireable<any>;
54
54
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -32,9 +32,9 @@ var __rest = this && this.__rest || function (s, e) {
32
32
  import React, { useState, useEffect, useMemo } from 'react';
33
33
  import { addClass, removeClass } from '@douyinfe/semi-foundation/lib/es/utils/classnames';
34
34
  import { strings, numbers } from '@douyinfe/semi-foundation/lib/es/table/constants';
35
- import { mergeColumns, assignColumnKeys, findColumn, withResizeWidth } from '@douyinfe/semi-foundation/lib/es/table/utils';
35
+ import { assignColumnKeys, findColumn, withResizeWidth } from '@douyinfe/semi-foundation/lib/es/table/utils';
36
36
  import Table from './Table';
37
- import { cloneDeep } from './utils';
37
+ import { cloneDeep, mergeColumns } from './utils';
38
38
  import getColumns from './getColumns';
39
39
  import ResizableHeaderCell from './ResizableHeaderCell';
40
40
 
@@ -55,7 +55,7 @@ var __rest = this && this.__rest || function (s, e) {
55
55
  import React, { createRef, isValidElement } from 'react';
56
56
  import PropTypes from 'prop-types';
57
57
  import classnames from 'classnames';
58
- import { mergeQueries, equalWith, mergeColumns, assignColumnKeys, flattenColumns, getAllDisabledRowKeys } from '@douyinfe/semi-foundation/lib/es/table/utils';
58
+ import { mergeQueries, equalWith, assignColumnKeys, flattenColumns, getAllDisabledRowKeys } from '@douyinfe/semi-foundation/lib/es/table/utils';
59
59
  import Store from '@douyinfe/semi-foundation/lib/es/utils/Store';
60
60
  import TableFoundation from '@douyinfe/semi-foundation/lib/es/table/foundation';
61
61
  import { strings, cssClasses, numbers } from '@douyinfe/semi-foundation/lib/es/table/constants';
@@ -74,7 +74,7 @@ import ColumnSorter from './ColumnSorter';
74
74
  import ExpandedIcon from './CustomExpandIcon';
75
75
  import HeadTable from './HeadTable';
76
76
  import BodyTable from './Body';
77
- import { logger, cloneDeep, mergeComponents } from './utils';
77
+ import { logger, cloneDeep, mergeComponents, mergeColumns } from './utils';
78
78
 
79
79
  class Table extends BaseComponent {
80
80
  constructor(props, context) {
@@ -38,5 +38,6 @@ export declare function mergeComponents(components: TableComponents, virtualized
38
38
  cell: string;
39
39
  };
40
40
  } & TableComponents;
41
+ export declare function mergeColumns(oldColumns?: any[], newColumns?: any[], keyPropNames?: any[], deep?: boolean): any[];
41
42
  export declare const logger: Logger;
42
43
  export { cloneDeep };
@@ -1,9 +1,14 @@
1
+ import _map from "lodash/map";
2
+ import _find from "lodash/find";
3
+ import _clone from "lodash/clone";
1
4
  import _merge from "lodash/merge";
2
5
  import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
3
6
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
7
+ import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
4
8
  import Logger from '@douyinfe/semi-foundation/lib/es/utils/Logger';
5
9
  import { numbers } from '@douyinfe/semi-foundation/lib/es/table/constants';
6
10
  import { cloneDeep } from '../_utils';
11
+ import { getColumnKey } from '@douyinfe/semi-foundation/lib/es/table/utils';
7
12
  let scrollbarVerticalSize, scrollbarHorizontalSize; // Measure scrollbar width for padding body during modal show/hide
8
13
 
9
14
  const scrollbarMeasure = {
@@ -110,5 +115,28 @@ export function mergeComponents(components, virtualized) {
110
115
  }
111
116
  }, components);
112
117
  }
118
+ export function mergeColumns() {
119
+ let oldColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
120
+ let newColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
121
+ let keyPropNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
122
+ let deep = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
123
+ const finalColumns = [];
124
+ const clone = deep ? cloneDeep : _clone;
125
+
126
+ _map(newColumns, newColumn => {
127
+ newColumn = _Object$assign({}, newColumn);
128
+ const key = getColumnKey(newColumn, keyPropNames);
129
+
130
+ const oldColumn = key != null && _find(oldColumns, item => getColumnKey(item, keyPropNames) === key);
131
+
132
+ if (oldColumn) {
133
+ finalColumns.push(clone(_Object$assign(_Object$assign({}, oldColumn), newColumn)));
134
+ } else {
135
+ finalColumns.push(clone(newColumn));
136
+ }
137
+ });
138
+
139
+ return finalColumns;
140
+ }
113
141
  export const logger = new Logger('[@douyinfe/semi-ui Table]');
114
142
  export { cloneDeep };
@@ -99,11 +99,11 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
99
99
  'aria-required': PropTypes.Requireable<boolean>;
100
100
  prefixCls: PropTypes.Requireable<string>;
101
101
  clearText: PropTypes.Requireable<string>;
102
- value: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
102
+ value: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
103
103
  inputReadOnly: PropTypes.Requireable<boolean>;
104
104
  disabled: PropTypes.Requireable<boolean>;
105
105
  showClear: PropTypes.Requireable<boolean>;
106
- defaultValue: PropTypes.Requireable<string | number | string[] | number[] | Date | Date[]>;
106
+ defaultValue: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
107
107
  open: PropTypes.Requireable<boolean>;
108
108
  defaultOpen: PropTypes.Requireable<boolean>;
109
109
  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[] | number[] | Date | Date[]>;
9
+ declare const TimeShape: PropTypes.Requireable<string | number | string[] | Date | number[] | Date[]>;
10
10
  export { TimeShape };
@@ -19,11 +19,11 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
19
19
  'aria-required': import("prop-types").Requireable<boolean>;
20
20
  prefixCls: import("prop-types").Requireable<string>;
21
21
  clearText: import("prop-types").Requireable<string>;
22
- value: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
22
+ value: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
23
23
  inputReadOnly: import("prop-types").Requireable<boolean>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
25
  showClear: import("prop-types").Requireable<boolean>;
26
- defaultValue: import("prop-types").Requireable<string | number | string[] | number[] | Date | Date[]>;
26
+ defaultValue: import("prop-types").Requireable<string | number | string[] | Date | number[] | Date[]>;
27
27
  open: import("prop-types").Requireable<boolean>;
28
28
  defaultOpen: import("prop-types").Requireable<boolean>;
29
29
  onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -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 | 5 | 6>;
40
+ heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 6 | 5>;
41
41
  style: PropTypes.Requireable<object>;
42
42
  className: PropTypes.Requireable<string>;
43
43
  component: PropTypes.Requireable<string>;
@@ -140,7 +140,7 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
140
140
  style: PropTypes.Requireable<object>;
141
141
  timeout: PropTypes.Requireable<number>;
142
142
  transformFile: PropTypes.Requireable<(...args: any[]) => any>;
143
- uploadTrigger: PropTypes.Requireable<"auto" | "custom">;
143
+ uploadTrigger: PropTypes.Requireable<"custom" | "auto">;
144
144
  validateMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
145
145
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
146
146
  withCredentials: PropTypes.Requireable<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.18.2",
3
+ "version": "2.18.3",
4
4
  "description": "",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es/index.js",
@@ -15,11 +15,11 @@
15
15
  "dependencies": {
16
16
  "@babel/runtime-corejs3": "^7.15.4",
17
17
  "@douyinfe/semi-animation": "2.12.0",
18
- "@douyinfe/semi-animation-react": "2.18.2",
19
- "@douyinfe/semi-foundation": "2.18.2",
20
- "@douyinfe/semi-icons": "2.18.2",
18
+ "@douyinfe/semi-animation-react": "2.18.3",
19
+ "@douyinfe/semi-foundation": "2.18.3",
20
+ "@douyinfe/semi-icons": "2.18.3",
21
21
  "@douyinfe/semi-illustrations": "2.15.0",
22
- "@douyinfe/semi-theme-default": "2.18.2",
22
+ "@douyinfe/semi-theme-default": "2.18.3",
23
23
  "async-validator": "^3.5.0",
24
24
  "classnames": "^2.2.6",
25
25
  "copy-text-to-clipboard": "^2.1.1",
@@ -66,13 +66,13 @@
66
66
  ],
67
67
  "author": "",
68
68
  "license": "MIT",
69
- "gitHead": "576fdef0e26abd56fef7893ad7f6f80b5e652c9d",
69
+ "gitHead": "680b7e5bb7e5c52474df556db3a72f65c0be28c0",
70
70
  "devDependencies": {
71
71
  "@babel/plugin-proposal-decorators": "^7.15.8",
72
72
  "@babel/plugin-transform-runtime": "^7.15.8",
73
73
  "@babel/preset-env": "^7.15.8",
74
74
  "@babel/preset-react": "^7.14.5",
75
- "@douyinfe/semi-scss-compile": "2.18.2",
75
+ "@douyinfe/semi-scss-compile": "2.18.3",
76
76
  "@storybook/addon-knobs": "^6.3.1",
77
77
  "@types/lodash": "^4.14.176",
78
78
  "@types/react": ">=16.0.0",
@@ -8,10 +8,10 @@ import { merge, get, find, noop } from 'lodash';
8
8
 
9
9
  import { addClass, removeClass } from '@douyinfe/semi-foundation/utils/classnames';
10
10
  import { strings, numbers } from '@douyinfe/semi-foundation/table/constants';
11
- import { mergeColumns, assignColumnKeys, findColumn, withResizeWidth } from '@douyinfe/semi-foundation/table/utils';
11
+ import { assignColumnKeys, findColumn, withResizeWidth } from '@douyinfe/semi-foundation/table/utils';
12
12
 
13
13
  import Table from './Table';
14
- import { cloneDeep } from './utils';
14
+ import { cloneDeep, mergeColumns } from './utils';
15
15
  import getColumns from './getColumns';
16
16
  import ResizableHeaderCell from './ResizableHeaderCell';
17
17
  import { TableProps, ColumnProps } from './interface';
package/table/Table.tsx CHANGED
@@ -30,7 +30,6 @@ import {
30
30
  import {
31
31
  mergeQueries,
32
32
  equalWith,
33
- mergeColumns,
34
33
  isAnyFixedRight,
35
34
  assignColumnKeys,
36
35
  flattenColumns,
@@ -56,7 +55,7 @@ import ColumnSorter from './ColumnSorter';
56
55
  import ExpandedIcon from './CustomExpandIcon';
57
56
  import HeadTable, { HeadTableProps } from './HeadTable';
58
57
  import BodyTable, { BodyProps } from './Body';
59
- import { measureScrollbar, logger, cloneDeep, mergeComponents } from './utils';
58
+ import { logger, cloneDeep, mergeComponents, mergeColumns } from './utils';
60
59
  import {
61
60
  ColumnProps,
62
61
  TablePaginationProps,
package/table/utils.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { merge } from 'lodash';
1
+ import { merge, clone as lodashClone, find, map } from 'lodash';
2
2
  import Logger from '@douyinfe/semi-foundation/utils/Logger';
3
3
  import { numbers } from '@douyinfe/semi-foundation/table/constants';
4
4
  import { cloneDeep } from '../_utils';
5
5
  import { TableComponents, Virtualized } from './interface';
6
+ import { getColumnKey } from '@douyinfe/semi-foundation/table/utils';
6
7
 
7
8
 
8
9
  let scrollbarVerticalSize: number,
@@ -119,5 +120,30 @@ export function mergeComponents(components: TableComponents, virtualized: Virtua
119
120
  );
120
121
  }
121
122
 
123
+ export function mergeColumns(oldColumns: any[] = [], newColumns: any[] = [], keyPropNames: any[] = null, deep = true) {
124
+ const finalColumns: any[] = [];
125
+ const clone = deep ? cloneDeep : lodashClone;
126
+
127
+ map(newColumns, newColumn => {
128
+ newColumn = { ...newColumn };
129
+ const key = getColumnKey(newColumn, keyPropNames);
130
+
131
+ const oldColumn = key != null && find(oldColumns, item => getColumnKey(item, keyPropNames) === key);
132
+
133
+ if (oldColumn) {
134
+ finalColumns.push(
135
+ clone({
136
+ ...oldColumn,
137
+ ...newColumn,
138
+ })
139
+ );
140
+ } else {
141
+ finalColumns.push(clone(newColumn));
142
+ }
143
+ });
144
+
145
+ return finalColumns;
146
+ }
147
+
122
148
  export const logger = new Logger('[@douyinfe/semi-ui Table]');
123
149
  export { cloneDeep };