@gravity-ui/react-data-table 1.2.0 → 2.0.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.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # React Data Table
1
+ # React Data Table · [![npm package](https://img.shields.io/npm/v/@gravity-ui/react-data-table)](https://www.npmjs.com/package/@gravity-ui/react-data-table) [![CI](https://img.shields.io/github/actions/workflow/status/gravity-ui/react-data-table/.github/workflows/ci.yml?label=CI&logo=github)](https://github.com/gravity-ui/react-data-table/actions/workflows/ci.yml?query=branch:main) [![storybook](https://img.shields.io/badge/Storybook-deployed-ff4685)](https://preview.gravity-ui.com/react-data-table/)
2
2
 
3
3
  A React component for rendering tables.
4
4
 
@@ -28,6 +28,7 @@ of the sort list. A simple Click sorts the table by this column only. Sorting or
28
28
  | visibleRowIndex | `Function` | | | A method `(row, index) => number` that returns the row index shown in the column enabled by the `displayIndices` flag. Use it to specify a correct row index when applying external sorting |
29
29
  | onRowClick | `Function` | | | Click listener for a row `(row, index, event) => void` |
30
30
  | nullBeforeNumbers | `Boolean` | | | A flag that sets the position of `null`/`undefined` values when sorting. If true, `null`/`undefined` values are shown at the top in the case of ascending order and at the bottom in the case of descending order. If `false`/`undefined`, they are shown at the bottom |
31
+ | getColSpansOfRow | `Function` | | | Configuring column spanning for each row `({ row, columns, index, headerData, span, footer, odd }) => {[colName: string]: number} / undefined` |
31
32
 
32
33
  ## Settings
33
34
 
@@ -47,7 +48,7 @@ of the sort list. A simple Click sorts the table by this column only. Sorting or
47
48
  | dynamicRenderMinSize | `Number` | `1` | A minimum number of rows to be rendered in any case, even if a smaller number of rows fills the container height completely (this makes sense if dynamicRender is enabled). The value is passed [to the `minSize` property of the ReactList component](https://github.com/coderiety/react-list#minsize-defaults-to-1). |
48
49
  | dynamicRenderUseStaticSize | `Boolean` | `false` | [ReactList.useStaticSize](https://github.com/caseywebdev/react-list#usestaticsize-defaults-to-false) |
49
50
  | dynamicRenderThreshold | `Number` | | [ReactList.threshold](https://github.com/caseywebdev/react-list#threshold-defaults-to-100) |
50
- | dynamicRenderScrollParentGetter | `Funciction` | | [ReactList.scrollParentGetter](https://github.com/caseywebdev/react-list#scrollparentgetter-defaults-to-finding-the-nearest-scrollable-parent) |
51
+ | dynamicRenderScrollParentGetter | `Function` | | [ReactList.scrollParentGetter](https://github.com/caseywebdev/react-list#scrollparentgetter-defaults-to-finding-the-nearest-scrollable-parent) |
51
52
  | dynamicRenderScrollParentViewportSizeGetter | `Function` | | [ReactList.scrollParentViewportSizeGetter](https://github.com/caseywebdev/react-list#scrollparentviewportsizegetter-defaults-to-scrollparents-viewport-size) |
52
53
  | sortable | `Boolean` | `true` | Enable sorting for the entire table |
53
54
  | externalSort | `Boolean` | `false` | Disable data sorting on the component side. [Read more](#externalSort) |
@@ -1,4 +1,3 @@
1
- import PropTypes from 'prop-types';
2
1
  import * as React from 'react';
3
2
  import ReactList from 'react-list';
4
3
  import './DataTable.scss';
@@ -9,6 +8,22 @@ interface CustomIcons {
9
8
  ICON_ASC: React.ReactNode;
10
9
  ICON_DESC: React.ReactNode;
11
10
  }
11
+ export interface TableRowProps<T> {
12
+ row: T;
13
+ index: number;
14
+ columns: DataColumns<T>;
15
+ className?: string;
16
+ odd?: boolean;
17
+ footer?: boolean;
18
+ headerData?: boolean;
19
+ onClick?: (row: T, index: number, event: React.MouseEvent<HTMLTableRowElement>) => void;
20
+ span?: {
21
+ [colName: string]: number;
22
+ };
23
+ getColSpansOfRow?: (p: Omit<TableRowProps<T>, 'getColSpansOfRow' | 'onClick' | 'className'>) => {
24
+ [colName: string]: number;
25
+ } | undefined;
26
+ }
12
27
  interface TableHeadProps<T> {
13
28
  dataColumns: DataColumns<T>;
14
29
  headColumns: HeadColumns<T>;
@@ -19,14 +34,6 @@ interface TableHeadProps<T> {
19
34
  onDataRowsHeightChange?: StickyHeadProps<T>['onDataRowsHeightChange'];
20
35
  }
21
36
  declare class TableHead<T> extends React.Component<TableHeadProps<T>> {
22
- static propTypes: {
23
- headColumns: PropTypes.Validator<any[]>;
24
- dataColumns: PropTypes.Validator<any[]>;
25
- displayIndices: PropTypes.Validator<boolean>;
26
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
27
- onColumnsUpdated: PropTypes.Requireable<(...args: any[]) => any>;
28
- renderedDataRows: PropTypes.Requireable<PropTypes.ReactNodeLike>;
29
- };
30
37
  _dataRowsRef: HTMLTableSectionElement | null;
31
38
  dataRowsHeightObserver?: HeightObserver;
32
39
  renderedColumns: HTMLTableHeaderCellElement[];
@@ -49,6 +56,7 @@ interface StickyHeadProps<T> {
49
56
  displayIndices?: Settings['displayIndices'];
50
57
  onSort?: TableProps<T>['onSort'];
51
58
  top: number;
59
+ renderedDataRows: React.ReactNode;
52
60
  onDataRowsHeightChange: (height: number) => void;
53
61
  }
54
62
  interface StickyHeadState {
@@ -57,11 +65,6 @@ interface StickyHeadState {
57
65
  style?: React.CSSProperties;
58
66
  }
59
67
  declare class StickyHead<T> extends React.Component<StickyHeadProps<T>, StickyHeadState> {
60
- static propTypes: {
61
- mode: PropTypes.Requireable<string>;
62
- top: PropTypes.Requireable<number>;
63
- renderedDataRows: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
- };
65
68
  static defaultProps: {
66
69
  top: number;
67
70
  };
@@ -88,7 +91,7 @@ interface StickyFooterProps<T> {
88
91
  bottom?: number;
89
92
  onMovingHeightChange: (height: number) => void;
90
93
  }
91
- declare type StickyFooterState = StickyHeadState;
94
+ type StickyFooterState = StickyHeadState;
92
95
  declare class StickyFooter<T> extends React.PureComponent<StickyFooterProps<T>, StickyFooterState> {
93
96
  static defaultProps: {
94
97
  bottom: number;
@@ -128,6 +131,9 @@ interface TableProps<T> {
128
131
  onSort: DataTableView<T>['onSort'];
129
132
  renderEmptyRow: unknown;
130
133
  nullBeforeNumbers?: boolean;
134
+ getColSpansOfRow?: (p: Omit<TableRowProps<T>, 'getColSpansOfRow' | 'onClick' | 'className'>) => {
135
+ [colName: string]: number;
136
+ } | undefined;
131
137
  }
132
138
  interface TableState {
133
139
  movingFooterStyle?: {
@@ -138,22 +144,6 @@ interface TableState {
138
144
  };
139
145
  }
140
146
  declare class Table<T> extends React.PureComponent<TableProps<T>, TableState> {
141
- static propTypes: {
142
- className: PropTypes.Requireable<string>;
143
- settings: PropTypes.Requireable<object>;
144
- refs: PropTypes.Requireable<object>;
145
- headerData: PropTypes.Requireable<any[]>;
146
- data: PropTypes.Requireable<any[]>;
147
- footerData: PropTypes.Requireable<any[]>;
148
- columns: PropTypes.Requireable<object>;
149
- emptyDataMessage: PropTypes.Requireable<string>;
150
- onRowClick: PropTypes.Requireable<(...args: any[]) => any>;
151
- rowClassName: PropTypes.Requireable<(...args: any[]) => any>;
152
- rowKey: PropTypes.Requireable<(...args: any[]) => any>;
153
- startIndex: PropTypes.Requireable<number>;
154
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
155
- renderEmptyRow: PropTypes.Requireable<(...args: any[]) => any>;
156
- };
157
147
  state: TableState;
158
148
  _onWindowResize?: () => void;
159
149
  _body?: HTMLDivElement;
@@ -206,62 +196,13 @@ interface CellProps<T> {
206
196
  footer?: boolean;
207
197
  headerData?: boolean;
208
198
  }
209
- declare type InternalProps<T> = DataTableProps<T> & typeof DataTableView.defaultProps;
199
+ type InternalProps<T> = DataTableProps<T> & typeof DataTableView.defaultProps;
210
200
  interface DataTableViewState<T> extends SortOrderWithSortColumns {
211
201
  indexColumn?: Column<T>;
212
202
  settings: ReturnType<typeof DataTableView.calculateSettings>;
213
203
  }
214
- declare type HeadPositionInner = HeadPosition | false;
204
+ type HeadPositionInner = HeadPosition | false;
215
205
  declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTableViewState<T>> {
216
- static propTypes: {
217
- columns: PropTypes.Validator<any[]>;
218
- headerData: PropTypes.Requireable<any[]>;
219
- data: PropTypes.Validator<any[]>;
220
- footerData: PropTypes.Requireable<any[]>;
221
- startIndex: PropTypes.Requireable<number>;
222
- emptyDataMessage: PropTypes.Requireable<string>;
223
- renderEmptyRow: PropTypes.Requireable<(...args: any[]) => any>;
224
- rowClassName: PropTypes.Requireable<(...args: any[]) => any>;
225
- rowKey: PropTypes.Requireable<(...args: any[]) => any>;
226
- visibleRowIndex: PropTypes.Requireable<(...args: any[]) => any>;
227
- initialSortOrder: PropTypes.Requireable<PropTypes.InferProps<{
228
- columnId: PropTypes.Requireable<string>;
229
- order: PropTypes.Requireable<number>;
230
- }> | (PropTypes.InferProps<{
231
- columnId: PropTypes.Requireable<string>;
232
- order: PropTypes.Requireable<number>;
233
- }> | null | undefined)[]>;
234
- sortOrder: PropTypes.Requireable<PropTypes.InferProps<{
235
- columnId: PropTypes.Requireable<string>;
236
- order: PropTypes.Requireable<number>;
237
- }> | (PropTypes.InferProps<{
238
- columnId: PropTypes.Requireable<string>;
239
- order: PropTypes.Requireable<number>;
240
- }> | null | undefined)[]>;
241
- settings: PropTypes.Requireable<PropTypes.InferProps<{
242
- displayIndices: PropTypes.Requireable<boolean>;
243
- dynamicRender: PropTypes.Requireable<boolean>;
244
- dynamicRenderType: PropTypes.Requireable<string>;
245
- dynamicRenderUseStaticSize: PropTypes.Requireable<boolean>;
246
- dynamicRenderThreshold: PropTypes.Requireable<number>;
247
- dynamicRenderMinSize: PropTypes.Requireable<number>;
248
- dynamicRenderScrollParentGetter: PropTypes.Requireable<(...args: any[]) => any>;
249
- dynamicRenderScrollParentViewportSizeGetter: PropTypes.Requireable<(...args: any[]) => any>;
250
- dynamicItemSizeEstimator: PropTypes.Requireable<(...args: any[]) => any>;
251
- dynamicItemSizeGetter: PropTypes.Requireable<(...args: any[]) => any>;
252
- stickyHead: PropTypes.Requireable<string | boolean>;
253
- stickyTop: PropTypes.Requireable<string | number>;
254
- sortable: PropTypes.Requireable<boolean>;
255
- externalSort: PropTypes.Requireable<boolean>;
256
- highlightRows: PropTypes.Requireable<boolean>;
257
- stripedRows: PropTypes.Requireable<boolean>;
258
- headerMod: PropTypes.Requireable<string>;
259
- defaultOrder: PropTypes.Requireable<number>;
260
- syncHeadOnResize: PropTypes.Requireable<boolean>;
261
- }>>;
262
- theme: PropTypes.Requireable<string>;
263
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
264
- };
265
206
  static defaultProps: {
266
207
  startIndex: number;
267
208
  emptyDataMessage: string;
@@ -307,9 +248,65 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
307
248
  headerMod?: "pre" | "multiline" | undefined;
308
249
  };
309
250
  static getIndexColumn<T extends HasHeaderFooterIndex>({ startIndex, data, visibleRowIndex, }: InternalProps<T>): Column<T>;
310
- static getDerivedStateFromProps<T>(nextProps: InternalProps<T>): {
311
- sortOrder?: NameToOrderTypeMap | undefined;
312
- sortColumns?: string[] | undefined;
251
+ static getDerivedStateFromProps<T extends HasHeaderFooterIndex>(nextProps: InternalProps<T>): {
252
+ settings: {
253
+ stickyHead: HeadPositionInner;
254
+ stickyFooter: HeadPositionInner;
255
+ displayIndices: boolean;
256
+ stickyTop?: number | "auto" | undefined;
257
+ syncHeadOnResize?: boolean | undefined;
258
+ stickyBottom?: number | "auto" | undefined;
259
+ dynamicRender?: boolean | undefined;
260
+ dynamicInnerRef?: React.Ref<ReactList> | undefined;
261
+ dynamicRenderType?: "simple" | "uniform" | "variable" | undefined;
262
+ dynamicItemSizeEstimator?: ((index: number, cache: {}) => number) | undefined;
263
+ dynamicItemSizeGetter?: ((index: number) => number) | undefined;
264
+ dynamicRenderMinSize: number;
265
+ dynamicRenderUseStaticSize?: boolean | undefined;
266
+ dynamicRenderThreshold?: number | undefined;
267
+ dynamicRenderScrollParentGetter?: (() => JSX.Element) | undefined;
268
+ dynamicRenderScrollParentViewportSizeGetter?: (() => number) | undefined;
269
+ sortable: boolean;
270
+ externalSort: boolean;
271
+ disableSortReset?: boolean | undefined;
272
+ defaultOrder: OrderType;
273
+ highlightRows?: boolean | undefined;
274
+ stripedRows?: boolean | undefined;
275
+ headerMod?: "pre" | "multiline" | undefined;
276
+ };
277
+ indexColumn: false | Column<T>;
278
+ } | {
279
+ sortOrder: {};
280
+ sortColumns: never[];
281
+ settings: {
282
+ stickyHead: HeadPositionInner;
283
+ stickyFooter: HeadPositionInner;
284
+ displayIndices: boolean;
285
+ stickyTop?: number | "auto" | undefined;
286
+ syncHeadOnResize?: boolean | undefined;
287
+ stickyBottom?: number | "auto" | undefined;
288
+ dynamicRender?: boolean | undefined;
289
+ dynamicInnerRef?: React.Ref<ReactList> | undefined;
290
+ dynamicRenderType?: "simple" | "uniform" | "variable" | undefined;
291
+ dynamicItemSizeEstimator?: ((index: number, cache: {}) => number) | undefined;
292
+ dynamicItemSizeGetter?: ((index: number) => number) | undefined;
293
+ dynamicRenderMinSize: number;
294
+ dynamicRenderUseStaticSize?: boolean | undefined;
295
+ dynamicRenderThreshold?: number | undefined;
296
+ dynamicRenderScrollParentGetter?: (() => JSX.Element) | undefined;
297
+ dynamicRenderScrollParentViewportSizeGetter?: (() => number) | undefined;
298
+ sortable: boolean;
299
+ externalSort: boolean;
300
+ disableSortReset?: boolean | undefined;
301
+ defaultOrder: OrderType;
302
+ highlightRows?: boolean | undefined;
303
+ stripedRows?: boolean | undefined;
304
+ headerMod?: "pre" | "multiline" | undefined;
305
+ };
306
+ indexColumn: false | Column<T>;
307
+ } | {
308
+ sortOrder: NameToOrderTypeMap;
309
+ sortColumns: string[];
313
310
  settings: {
314
311
  stickyHead: HeadPositionInner;
315
312
  stickyFooter: HeadPositionInner;
@@ -394,27 +391,27 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
394
391
  dataColumns: DataColumns<T>;
395
392
  };
396
393
  isSortEnabled: () => boolean;
397
- onSort: (column?: SlimColumn | undefined, multisort?: boolean | undefined) => void;
394
+ onSort: (column?: SlimColumn, multisort?: boolean) => void;
398
395
  resize(): void;
399
396
  }
400
- export declare type ColumnExtended<T> = ReturnType<DataTableView<T>['getColumn']> & {
397
+ export type ColumnExtended<T> = ReturnType<DataTableView<T>['getColumn']> & {
401
398
  headerTitle?: string;
402
399
  };
403
- declare type HeadCellColumn<T> = ColumnExtended<T> | (Column<T> & {
400
+ type HeadCellColumn<T> = ColumnExtended<T> | (Column<T> & {
404
401
  index?: number;
405
402
  columnIndex?: number;
406
403
  headerTitle?: string;
407
404
  dataColumn?: boolean;
408
405
  });
409
- declare type HeadCellsType<T> = {
406
+ type HeadCellsType<T> = {
410
407
  column: HeadCellColumn<T>;
411
408
  itemLevel: number;
412
409
  colSpan: number;
413
410
  rowSpan: number;
414
411
  };
415
- declare type HeadColumnsItem<T> = HeadCellsType<T>[];
416
- declare type HeadColumns<T> = HeadColumnsItem<T>[];
417
- declare type DataColumns<T> = ColumnExtended<T>[];
412
+ type HeadColumnsItem<T> = HeadCellsType<T>[];
413
+ type HeadColumns<T> = HeadColumnsItem<T>[];
414
+ type DataColumns<T> = ColumnExtended<T>[];
418
415
  interface TableColumns<T> {
419
416
  headColumns: HeadColumns<T>;
420
417
  dataColumns: DataColumns<T>;
@@ -423,7 +420,7 @@ export interface SortOrderWithSortColumns {
423
420
  sortOrder: NameToOrderTypeMap;
424
421
  sortColumns: string[];
425
422
  }
426
- export declare type NameToOrderTypeMap = {
423
+ export type NameToOrderTypeMap = {
427
424
  [colName: string]: OrderType;
428
425
  };
429
426
  interface State {
@@ -1,5 +1,4 @@
1
1
  import { __rest } from "tslib";
2
- import PropTypes from 'prop-types';
3
2
  import * as React from 'react';
4
3
  import ReactList from 'react-list';
5
4
  import './DataTable.scss';
@@ -34,11 +33,6 @@ const ColumnSortIcon = ({ sortOrder, sortIndex, sortable, defaultOrder }) => {
34
33
  return null;
35
34
  }
36
35
  };
37
- ColumnSortIcon.propTypes = {
38
- sortOrder: PropTypes.oneOf([ASCENDING, DESCENDING]),
39
- sortable: PropTypes.bool,
40
- defaultOrder: PropTypes.oneOf([ASCENDING, DESCENDING]),
41
- };
42
36
  class TableRow extends React.PureComponent {
43
37
  constructor() {
44
38
  super(...arguments);
@@ -50,8 +44,18 @@ class TableRow extends React.PureComponent {
50
44
  };
51
45
  }
52
46
  render() {
53
- const { className, columns, row, index, odd, footer, span, headerData } = this.props;
47
+ const { className, columns, row, index, odd, footer, span, getColSpansOfRow, headerData } = this.props;
48
+ const colSpans = getColSpansOfRow ? getColSpansOfRow(this.props) : undefined;
49
+ let restColSpan = 0;
54
50
  return (React.createElement("tr", { className: b('row', { odd, footer, 'header-data': headerData }, className), onClick: this.onClick }, columns.map((column, columnIndex) => {
51
+ if (colSpans) {
52
+ if (--restColSpan > 0) {
53
+ return null;
54
+ }
55
+ if (colSpans[column.name] > 1) {
56
+ restColSpan = colSpans[column.name];
57
+ }
58
+ }
55
59
  let rowSpan;
56
60
  if (span) {
57
61
  if (span[column.name] === 0) {
@@ -69,7 +73,7 @@ class TableRow extends React.PureComponent {
69
73
  header: false,
70
74
  footer,
71
75
  headerData,
72
- }), rowSpan: rowSpan, onClick: column._getOnClick({ row, index, footer, headerData }) }, column._renderValue({ value, row, index, footer, headerData })));
76
+ }), colSpan: colSpans ? colSpans[column.name] : undefined, rowSpan: rowSpan, onClick: column._getOnClick({ row, index, footer, headerData }) }, column._renderValue({ value, row, index, footer, headerData })));
73
77
  })));
74
78
  }
75
79
  }
@@ -164,14 +168,6 @@ class TableHead extends React.Component {
164
168
  : undefined;
165
169
  }
166
170
  }
167
- TableHead.propTypes = {
168
- headColumns: PropTypes.array.isRequired,
169
- dataColumns: PropTypes.array.isRequired,
170
- displayIndices: PropTypes.bool.isRequired,
171
- onSort: PropTypes.func,
172
- onColumnsUpdated: PropTypes.func,
173
- renderedDataRows: PropTypes.node,
174
- };
175
171
  class StickyHead extends React.Component {
176
172
  constructor() {
177
173
  super(...arguments);
@@ -231,11 +227,6 @@ class StickyHead extends React.Component {
231
227
  }
232
228
  }
233
229
  }
234
- StickyHead.propTypes = {
235
- mode: PropTypes.oneOf([FIXED, MOVING]),
236
- top: PropTypes.number,
237
- renderedDataRows: PropTypes.node,
238
- };
239
230
  StickyHead.defaultProps = {
240
231
  top: 0,
241
232
  };
@@ -378,9 +369,9 @@ class Table extends React.PureComponent {
378
369
  return this.renderRowImpl(rowData, index, { headerData: true });
379
370
  };
380
371
  this.renderRowImpl = (row, index, { onRowClick, odd, span, footer, headerData } = {}) => {
381
- const { columns: { dataColumns }, rowClassName, rowKey, } = this.props;
372
+ const { columns: { dataColumns }, rowClassName, rowKey, getColSpansOfRow, } = this.props;
382
373
  const className = typeof rowClassName === 'function' ? rowClassName(row, index, footer, headerData) : '';
383
- return (React.createElement(TableRow, { key: rowKey(row, index), className: className, columns: dataColumns, row: row, index: index, span: span, odd: odd, onClick: onRowClick, footer: footer, headerData: headerData }));
374
+ return (React.createElement(TableRow, { getColSpansOfRow: getColSpansOfRow, key: rowKey(row, index), className: className, columns: dataColumns, row: row, index: index, span: span, odd: odd, onClick: onRowClick, footer: footer, headerData: headerData }));
384
375
  };
385
376
  this.renderTable = (items, ref) => {
386
377
  const { footerData, columns: { dataColumns }, settings: { stickyHead }, } = this.props;
@@ -481,7 +472,7 @@ class Table extends React.PureComponent {
481
472
  }
482
473
  renderTableDynamic() {
483
474
  const { data, settings: { dynamicInnerRef, dynamicRenderType = 'uniform', dynamicRenderUseStaticSize, dynamicRenderThreshold, dynamicRenderMinSize, dynamicRenderScrollParentGetter, dynamicRenderScrollParentViewportSizeGetter, dynamicItemSizeEstimator, dynamicItemSizeGetter, } = {}, } = this.props;
484
- return (React.createElement(ReactList, Object.assign({ ref: dynamicInnerRef, type: dynamicRenderType, useStaticSize: dynamicRenderUseStaticSize, threshold: dynamicRenderThreshold, minSize: dynamicRenderMinSize, itemSizeEstimator: dynamicItemSizeEstimator, itemSizeGetter: dynamicItemSizeGetter, length: data.length, itemRenderer: this.renderRow, itemsRenderer: this.renderTable, scrollParentGetter: dynamicRenderScrollParentGetter }, { scrollParentViewportSizeGetter: dynamicRenderScrollParentViewportSizeGetter })));
475
+ return (React.createElement(ReactList, { ref: dynamicInnerRef, type: dynamicRenderType, useStaticSize: dynamicRenderUseStaticSize, threshold: dynamicRenderThreshold, minSize: dynamicRenderMinSize, itemSizeEstimator: dynamicItemSizeEstimator, itemSizeGetter: dynamicItemSizeGetter, length: data.length, itemRenderer: this.renderRow, itemsRenderer: this.renderTable, scrollParentGetter: dynamicRenderScrollParentGetter, scrollParentViewportSizeGetter: dynamicRenderScrollParentViewportSizeGetter }));
485
476
  }
486
477
  renderTableSimple() {
487
478
  const { data } = this.props;
@@ -505,31 +496,11 @@ class Table extends React.PureComponent {
505
496
  return stickyFooter;
506
497
  }
507
498
  }
508
- Table.propTypes = {
509
- className: PropTypes.string,
510
- settings: PropTypes.object,
511
- refs: PropTypes.object,
512
- headerData: PropTypes.array,
513
- data: PropTypes.array,
514
- footerData: PropTypes.array,
515
- columns: PropTypes.object,
516
- emptyDataMessage: PropTypes.string,
517
- onRowClick: PropTypes.func,
518
- rowClassName: PropTypes.func,
519
- rowKey: PropTypes.func,
520
- startIndex: PropTypes.number,
521
- onSort: PropTypes.func,
522
- renderEmptyRow: PropTypes.func,
523
- };
524
499
  const MemoizedCell = React.memo(CellImpl);
525
500
  function CellImpl(props) {
526
501
  const { column, value, row, index, footer, headerData } = props;
527
502
  return (React.createElement(React.Fragment, null, column.render({ value, row, index, footer, headerData })));
528
503
  }
529
- const sortOrderShape = {
530
- columnId: PropTypes.string,
531
- order: PropTypes.oneOf([ASCENDING, DESCENDING]),
532
- };
533
504
  class DataTableView extends React.Component {
534
505
  constructor() {
535
506
  super(...arguments);
@@ -538,14 +509,12 @@ class DataTableView extends React.Component {
538
509
  this.table = node;
539
510
  };
540
511
  this.renderMemoizedCell = ({ column, value, row, index, footer, headerData }) => {
541
- return (React.createElement(MemoizedCell, Object.assign({}, {
542
- column,
512
+ return (React.createElement(MemoizedCell, { column,
543
513
  value,
544
514
  row,
545
515
  index,
546
516
  footer,
547
- headerData,
548
- })));
517
+ headerData }));
549
518
  };
550
519
  this.getColumn = (column, columnIndex) => {
551
520
  const { settings } = this.state;
@@ -646,7 +615,7 @@ class DataTableView extends React.Component {
646
615
  ? Object.assign({}, externalToInternalSortOrder(nextProps.sortOrder, nextProps.settings)) : undefined));
647
616
  }
648
617
  render() {
649
- const { headerData, data, footerData, columns, startIndex, emptyDataMessage, rowClassName, rowKey, onRowClick, theme, renderEmptyRow, nullBeforeNumbers, } = this.props;
618
+ const { getColSpansOfRow, headerData, data, footerData, columns, startIndex, emptyDataMessage, rowClassName, rowKey, onRowClick, theme, renderEmptyRow, nullBeforeNumbers, } = this.props;
650
619
  const { settings, sortOrder, sortColumns } = this.state;
651
620
  const { highlightRows = false, stripedRows = false, headerMod = false } = settings;
652
621
  const tableClassName = b({
@@ -659,7 +628,7 @@ class DataTableView extends React.Component {
659
628
  if (settings.dynamicRender && dataColumns.dataColumns.some((column) => column.group)) {
660
629
  console.warn('Simultaneously used grouping cells and dynamic render. The table will render unpredictable.');
661
630
  }
662
- return (React.createElement(Table, { ref: this._tableRef, className: tableClassName, settings: settings, startIndex: startIndex, columns: dataColumns, emptyDataMessage: emptyDataMessage, renderEmptyRow: renderEmptyRow, rowClassName: rowClassName, rowKey: rowKey || DataTableView.defaultProps.rowKey, onRowClick: onRowClick, headerData: headerData, data: getSortedData(data, dataColumns.dataColumns, {
631
+ return (React.createElement(Table, { ref: this._tableRef, getColSpansOfRow: getColSpansOfRow, className: tableClassName, settings: settings, startIndex: startIndex, columns: dataColumns, emptyDataMessage: emptyDataMessage, renderEmptyRow: renderEmptyRow, rowClassName: rowClassName, rowKey: rowKey || DataTableView.defaultProps.rowKey, onRowClick: onRowClick, headerData: headerData, data: getSortedData(data, dataColumns.dataColumns, {
663
632
  sortOrder,
664
633
  sortColumns,
665
634
  }, {
@@ -709,49 +678,6 @@ class DataTableView extends React.Component {
709
678
  }
710
679
  }
711
680
  }
712
- DataTableView.propTypes = {
713
- columns: PropTypes.array.isRequired,
714
- headerData: PropTypes.array,
715
- data: PropTypes.array.isRequired,
716
- footerData: PropTypes.array,
717
- startIndex: PropTypes.number,
718
- emptyDataMessage: PropTypes.string,
719
- renderEmptyRow: PropTypes.func,
720
- rowClassName: PropTypes.func,
721
- rowKey: PropTypes.func,
722
- visibleRowIndex: PropTypes.func,
723
- initialSortOrder: PropTypes.oneOfType([
724
- PropTypes.shape(sortOrderShape),
725
- PropTypes.arrayOf(PropTypes.shape(sortOrderShape)),
726
- ]),
727
- sortOrder: PropTypes.oneOfType([
728
- PropTypes.shape(sortOrderShape),
729
- PropTypes.arrayOf(PropTypes.shape(sortOrderShape)),
730
- ]),
731
- settings: PropTypes.shape({
732
- displayIndices: PropTypes.bool,
733
- dynamicRender: PropTypes.bool,
734
- dynamicRenderType: PropTypes.oneOf(['simple', 'uniform', 'variable']),
735
- dynamicRenderUseStaticSize: PropTypes.bool,
736
- dynamicRenderThreshold: PropTypes.number,
737
- dynamicRenderMinSize: PropTypes.number,
738
- dynamicRenderScrollParentGetter: PropTypes.func,
739
- dynamicRenderScrollParentViewportSizeGetter: PropTypes.func,
740
- dynamicItemSizeEstimator: PropTypes.func,
741
- dynamicItemSizeGetter: PropTypes.func,
742
- stickyHead: PropTypes.oneOf([false, FIXED, MOVING]),
743
- stickyTop: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['auto'])]),
744
- sortable: PropTypes.bool,
745
- externalSort: PropTypes.bool,
746
- highlightRows: PropTypes.bool,
747
- stripedRows: PropTypes.bool,
748
- headerMod: PropTypes.oneOf(['multiline', 'pre']),
749
- defaultOrder: PropTypes.oneOf([ASCENDING, DESCENDING]),
750
- syncHeadOnResize: PropTypes.bool,
751
- }),
752
- theme: PropTypes.string,
753
- onSort: PropTypes.func,
754
- };
755
681
  DataTableView.defaultProps = {
756
682
  startIndex: 0,
757
683
  emptyDataMessage: 'No data',
@@ -777,7 +703,7 @@ function doColumnsHaveDuplicateNames(columns) {
777
703
  const DUPLICATE_COLUMN_NAMES_WARNING = 'It is strongly recommended against using duplicate column names. ' +
778
704
  'They act as default accessors and titles, so doing so may lead to confusing titles and the wrong ' +
779
705
  'data being extracted.';
780
- export default class DataTable extends React.PureComponent {
706
+ class DataTable extends React.PureComponent {
781
707
  constructor() {
782
708
  super(...arguments);
783
709
  this.state = {};
@@ -835,3 +761,4 @@ DataTable.DESCENDING = DESCENDING;
835
761
  DataTable.LEFT = LEFT;
836
762
  DataTable.CENTER = CENTER;
837
763
  DataTable.RIGHT = RIGHT;
764
+ export default DataTable;
@@ -244,21 +244,18 @@ $cell-border: 1px solid var(--data-table-border-color);
244
244
  }
245
245
 
246
246
  &_theme_yandex-cloud {
247
- --data-table-color-base: var(
248
- --yc-color-base-background,
249
- var(--yc-color-base, var(--color-base))
250
- );
247
+ --data-table-color-base: var(--g-color-base-background, var(--yc-color-base-background));
251
248
  --data-table-color-stripe: var(
252
- --yc-color-base-generic-ultralight,
253
- var(--yc-color-base-area, var(--color-base-area))
249
+ --g-color-base-generic-ultralight,
250
+ var(--yc-color-base-generic-ultralight)
254
251
  );
255
252
  --data-table-border-color: var(
256
- --yc-color-base-generic-hover,
257
- var(--yc-color-contrast-15-solid, var(--color-contrast-15-solid))
253
+ --g-color-base-generic-hover,
254
+ var(--yc-color-base-generic-hover)
258
255
  );
259
256
  --data-table-color-hover-area: var(
260
- --yc-color-base-simple-hover,
261
- var(--yc-color-hover-area, var(--color-hover-area))
257
+ --g-color-base-simple-hover,
258
+ var(--yc-color-base-simple-hover)
262
259
  );
263
260
  --data-table-color-footer-area: var(--data-table-color-base);
264
261
  }
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import ReactList from 'react-list';
3
+ import type { TableRowProps } from './DataTable';
3
4
  import { ASCENDING, CENTER, DESCENDING, FIXED, LEFT, LEGACY_THEME, MOVING, RIGHT, YCLOUD_THEME } from './constants';
4
- declare type HeaderData<T> = T & {
5
+ type HeaderData<T> = T & {
5
6
  headerIndex?: number;
6
7
  };
7
- declare type FooterData<T> = T & {
8
+ type FooterData<T> = T & {
8
9
  footerIndex?: number;
9
10
  };
10
11
  export interface DataTableProps<T> {
@@ -26,6 +27,9 @@ export interface DataTableProps<T> {
26
27
  onRowClick?: (row: T, index: number, event: React.MouseEvent<HTMLTableRowElement>) => void;
27
28
  onError?: (error: unknown) => void;
28
29
  nullBeforeNumbers?: boolean;
30
+ getColSpansOfRow?: (p: Omit<TableRowProps<T>, 'getColSpansOfRow' | 'onClick' | 'className'>) => {
31
+ [colName: string]: number;
32
+ } | undefined;
29
33
  }
30
34
  export interface Column<T> {
31
35
  name: string;
@@ -58,7 +62,7 @@ export interface Column<T> {
58
62
  group?: boolean;
59
63
  autogroup?: boolean;
60
64
  }
61
- export declare type DynamicInnerRefT = ReactList;
65
+ export type DynamicInnerRefT = ReactList;
62
66
  export interface Settings {
63
67
  displayIndices?: boolean;
64
68
  stickyHead?: HeadPosition;
@@ -92,14 +96,14 @@ export interface CustomStyleParams<T> {
92
96
  footer?: boolean;
93
97
  headerData?: boolean;
94
98
  }
95
- export declare type AlignType = typeof LEFT | typeof RIGHT | typeof CENTER;
96
- export declare type OrderType = typeof ASCENDING | typeof DESCENDING;
99
+ export type AlignType = typeof LEFT | typeof RIGHT | typeof CENTER;
100
+ export type OrderType = typeof ASCENDING | typeof DESCENDING;
97
101
  export interface SortOrder {
98
102
  columnId: string;
99
103
  order: OrderType;
100
104
  }
101
- export declare type HeadPosition = typeof FIXED | typeof MOVING;
102
- export declare type THEMES = typeof LEGACY_THEME | typeof YCLOUD_THEME;
105
+ export type HeadPosition = typeof FIXED | typeof MOVING;
106
+ export type THEMES = typeof LEGACY_THEME | typeof YCLOUD_THEME;
103
107
  export interface SortedDataItem<T> {
104
108
  row: T;
105
109
  index: number;
@@ -107,5 +111,5 @@ export interface SortedDataItem<T> {
107
111
  [colName: string]: number;
108
112
  };
109
113
  }
110
- export declare type Comparator<T> = (l: SortedDataItem<T>, r: SortedDataItem<T>) => number;
114
+ export type Comparator<T> = (l: SortedDataItem<T>, r: SortedDataItem<T>) => number;
111
115
  export {};
@@ -1,7 +1,7 @@
1
1
  import { ColumnExtended, NameToOrderTypeMap, SortOrderWithSortColumns } from './DataTable';
2
2
  import { OrderType, Settings, SortOrder, SortedDataItem } from './types';
3
3
  export declare const cn: import("@bem-react/classname").ClassNameInitilizer;
4
- export declare type SlimColumn = {
4
+ export type SlimColumn = {
5
5
  name: string;
6
6
  defaultOrder?: OrderType;
7
7
  };
@@ -9,6 +9,9 @@ export declare function getSortOrder({ name: columnName, defaultOrder: columnDef
9
9
  defaultOrder?: OrderType;
10
10
  disableSortReset?: boolean;
11
11
  }): {
12
+ sortOrder: {};
13
+ sortColumns: never[];
14
+ } | {
12
15
  sortOrder: NameToOrderTypeMap;
13
16
  sortColumns: string[];
14
17
  };
@@ -17,8 +20,11 @@ interface SortingFunctionFlags {
17
20
  externalSort?: boolean;
18
21
  }
19
22
  export declare function getSortedData<T>(data: T[], dataColumns: ColumnExtended<T>[], { sortOrder, sortColumns }: SortOrderWithSortColumns, sortingFunctionFlags: SortingFunctionFlags): SortedDataItem<T>[];
20
- declare type ExternalSortOrderType = SortOrder | SortOrder[];
23
+ type ExternalSortOrderType = SortOrder | SortOrder[];
21
24
  export declare function externalToInternalSortOrder(columns: ExternalSortOrderType, settings?: Settings): {
25
+ sortOrder: {};
26
+ sortColumns: never[];
27
+ } | {
22
28
  sortOrder: NameToOrderTypeMap;
23
29
  sortColumns: string[];
24
30
  };
package/package.json CHANGED
@@ -1,102 +1,101 @@
1
1
  {
2
2
  "name": "@gravity-ui/react-data-table",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "description": "DataTable component",
5
+ "keywords": [
6
+ "table"
7
+ ],
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/gravity-ui/react-data-table"
11
+ },
12
+ "license": "MIT",
13
+ "sideEffects": [
14
+ "*.scss"
15
+ ],
5
16
  "main": "build/esm/lib/index.js",
6
17
  "types": "build/esm/lib/index.d.ts",
7
18
  "files": [
8
19
  "build/esm/lib"
9
20
  ],
10
- "sideEffects": [
11
- "*.scss"
12
- ],
13
21
  "scripts": {
22
+ "build": "npm run build:clean && npm run build:compile && npm run build:copy",
23
+ "build-storybook": "storybook build -c .storybook -o storybook-static",
24
+ "build:clean": "rm -rf build",
25
+ "build:compile": "tsc",
26
+ "build:copy": "copyfiles -u 1 \"src/**/*.scss\" build/esm",
27
+ "dev": "storybook dev -p 8888 -c .storybook",
14
28
  "lint:js": "eslint src --ext .js,.jsx,.ts,.tsx",
15
29
  "lint:other": "npm run prettier -- --check",
16
30
  "lint:styles": "stylelint 'src/**/*.scss'",
17
31
  "lint": "run-p lint:*",
18
32
  "prettier": "prettier '**/*.{md,json,yaml,yml}'",
19
- "start": "start-storybook -p 7007",
20
- "build-storybook": "build-storybook -c .storybook -o storybook-static",
21
33
  "typecheck": "npm run build:compile -- --noEmit",
22
34
  "test": "jest",
23
- "build:clean": "rm -rf build",
24
- "build:compile": "tsc",
25
- "build:copy": "copyfiles -u 1 \"src/**/*.scss\" build/esm",
26
- "build": "npm run build:clean && npm run build:compile && npm run build:copy",
27
35
  "prepublishOnly": "npm run build"
28
36
  },
29
- "repository": {
30
- "type": "git",
31
- "url": "https://github.com/gravity-ui/react-data-table"
37
+ "simple-git-hooks": {
38
+ "pre-commit": "npx nano-staged",
39
+ "commit-msg": "npx commitlint --edit $1"
32
40
  },
33
- "keywords": [
34
- "table"
35
- ],
36
- "license": "MIT",
37
- "peerDependencies": {
38
- "react": ">=16.14.0",
39
- "prop-types": ">=15.8.0",
40
- "@bem-react/classname": ">=1.6.0"
41
+ "nano-staged": {
42
+ "*.scss": [
43
+ "stylelint --fix --quiet"
44
+ ],
45
+ "*.{js,jsx,ts,tsx}": [
46
+ "eslint --fix --quiet"
47
+ ],
48
+ "*.{md,json,yaml,yml}": [
49
+ "prettier --write"
50
+ ]
41
51
  },
42
- "publishConfig": {
43
- "access": "public"
52
+ "dependencies": {
53
+ "@bem-react/classname": ">=1.6.0",
54
+ "react-list": "^0.8.17"
44
55
  },
45
56
  "devDependencies": {
46
57
  "@bem-react/classname": "^1.6.0",
47
- "@commitlint/cli": "15.0.0",
48
- "@commitlint/config-conventional": "15.0.0",
49
- "@gravity-ui/eslint-config": "^2.0.0",
58
+ "@commitlint/cli": "^17.7.1",
59
+ "@commitlint/config-conventional": "^17.7.0",
60
+ "@gravity-ui/eslint-config": "2.2",
50
61
  "@gravity-ui/prettier-config": "^1.0.1",
51
62
  "@gravity-ui/stylelint-config": "^2.0.0",
52
63
  "@gravity-ui/tsconfig": "^1.0.0",
53
- "@gravity-ui/uikit": "^4.0.5",
54
- "@storybook/addon-essentials": "6.4.9",
55
- "@storybook/preset-scss": "1.0.3",
56
- "@storybook/react": "6.4.9",
57
- "@types/jest": "27.4.0",
58
- "@types/node": "14.18.4",
64
+ "@gravity-ui/uikit": "^5.4.1",
65
+ "@storybook/addon-actions": "^7.3.1",
66
+ "@storybook/addon-essentials": "^7.3.1",
67
+ "@storybook/addon-interactions": "^7.3.1",
68
+ "@storybook/addon-links": "^7.3.1",
69
+ "@storybook/preset-scss": "^1.0.3",
70
+ "@storybook/react": "^7.3.1",
71
+ "@storybook/react-webpack5": "^7.3.1",
59
72
  "@types/react": "16.14.21",
60
73
  "@types/react-dom": "16.9.14",
61
74
  "@types/react-list": "0.8.7",
62
75
  "@typescript-eslint/eslint-plugin": "^5.50.0",
63
76
  "copyfiles": "2.4.1",
64
- "css-loader": "5.2.7",
65
- "eslint": "8.6.0",
66
- "jest": "27.4.5",
67
- "nano-staged": "0.5.0",
77
+ "eslint": "8.47",
78
+ "jest": "^29.6.2",
79
+ "nano-staged": "^0.8.0",
68
80
  "npm-run-all": "4.1.5",
69
- "postcss": "8.4.5",
81
+ "postcss": "^8.4.28",
70
82
  "prettier": "2.5.1",
71
- "prop-types": "15.8.0",
83
+ "prop-types": "^15.8.1",
72
84
  "react": "16.14.0",
73
85
  "react-dom": "16.14.0",
74
- "react-router-dom": "5.3.0",
75
- "sass": "1.45.2",
76
- "sass-loader": "10.2.0",
77
- "simple-git-hooks": "2.7.0",
78
- "style-loader": "2.0.0",
86
+ "sass": "1.65",
87
+ "sass-loader": "^13.3.2",
88
+ "simple-git-hooks": "2.9",
89
+ "storybook": "^7.3.1",
90
+ "style-loader": "^3.3.3",
79
91
  "stylelint": "^14.16.1",
80
- "ts-jest": "27.1.2",
81
- "typescript": "4.5.4",
82
- "webpack": "4.46.0"
83
- },
84
- "dependencies": {
85
- "react-list": "0.8.16"
92
+ "ts-jest": "^29.1.1",
93
+ "typescript": "^5.1.6"
86
94
  },
87
- "nano-staged": {
88
- "*.scss": [
89
- "stylelint --fix --quiet"
90
- ],
91
- "*.{js,jsx,ts,tsx}": [
92
- "eslint --fix --quiet"
93
- ],
94
- "*.{md,json,yaml,yml}": [
95
- "prettier --write"
96
- ]
95
+ "peerDependencies": {
96
+ "react": ">=16.14.0"
97
97
  },
98
- "simple-git-hooks": {
99
- "pre-commit": "npx nano-staged",
100
- "commit-msg": "npx commitlint --edit $1"
98
+ "publishConfig": {
99
+ "access": "public"
101
100
  }
102
101
  }
package/CHANGELOG.md DELETED
@@ -1,76 +0,0 @@
1
- # Changelog
2
-
3
- ## [1.2.0](https://github.com/gravity-ui/react-data-table/compare/v1.1.0...v1.2.0) (2023-09-05)
4
-
5
-
6
- ### Features
7
-
8
- * migrate to @bem-react/classname ([#32](https://github.com/gravity-ui/react-data-table/issues/32)) ([af0987e](https://github.com/gravity-ui/react-data-table/commit/af0987e65e68766747a7956ff8521014c6037648))
9
-
10
- ## [1.1.0](https://github.com/gravity-ui/react-data-table/compare/v1.0.3...v1.1.0) (2023-05-05)
11
-
12
-
13
- ### Features
14
-
15
- * add event in cell click handler ([#26](https://github.com/gravity-ui/react-data-table/issues/26)) ([11e7a00](https://github.com/gravity-ui/react-data-table/commit/11e7a0067d980f6e3a215468d86df9b6a691428f))
16
-
17
- ## [1.0.3](https://github.com/gravity-ui/react-data-table/compare/v1.0.2...v1.0.3) (2023-02-02)
18
-
19
-
20
- ### Bug Fixes
21
-
22
- * move to gravity uikit ([#24](https://github.com/gravity-ui/react-data-table/issues/24)) ([98c7fa6](https://github.com/gravity-ui/react-data-table/commit/98c7fa6b89b2253a9f8df9909f017b556295c36b))
23
-
24
- ### [1.0.2](https://www.github.com/yandex-cloud/react-data-table/compare/v1.0.1...v1.0.2) (2022-03-21)
25
-
26
-
27
- ### chore
28
-
29
- * freeze direct dependencies ([a842bf4](https://www.github.com/yandex-cloud/react-data-table/commit/a842bf48ccd09c2f8a6158bb1250b5b6643844b5))
30
-
31
- ### [1.0.1](https://www.github.com/yandex-cloud/react-data-table/compare/v1.0.0...v1.0.1) (2022-02-25)
32
-
33
-
34
- ### Bug Fixes
35
-
36
- * clarify column width property type ([4b43afe](https://www.github.com/yandex-cloud/react-data-table/commit/4b43afe96ac0fe515b08e492ede12f9ed3299dec))
37
-
38
- ## [1.0.0](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.2...v1.0.0) (2022-02-03)
39
-
40
-
41
- ### docs
42
-
43
- * translate README.md ([160c576](https://www.github.com/yandex-cloud/react-data-table/commit/160c576a9869ea03f4b80ce172c2f537036aeae4))
44
-
45
- ### [0.2.2](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.1...v0.2.2) (2022-01-13)
46
-
47
-
48
- ### Bug Fixes
49
-
50
- * emit a warning when columns with duplicate names are provided ([08d0294](https://www.github.com/yandex-cloud/react-data-table/commit/08d029422cceae9145b3aa65d99b2931ec106441))
51
-
52
- ### [0.2.1](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.0...v0.2.1) (2022-01-12)
53
-
54
-
55
- ### Bug Fixes
56
-
57
- * put back missing styles into package ([c7d3ba0](https://www.github.com/yandex-cloud/react-data-table/commit/c7d3ba0c9b08af7c517249bcca5abef4f1b9fff8))
58
- * use THEMES type for theme prop ([af0bb33](https://www.github.com/yandex-cloud/react-data-table/commit/af0bb3319a483bd19bab8d503d01611871e8ef31))
59
-
60
- ## [0.2.0](https://www.github.com/yandex-cloud/react-data-table/compare/v0.1.0...v0.2.0) (2022-01-11)
61
-
62
-
63
- ### ⚠ BREAKING CHANGES
64
-
65
- * theme previously known as 'common' is now called 'yandex-cloud' and is a default one, theme previously known as 'internal' is now called 'legacy'.
66
-
67
- ### Bug Fixes
68
-
69
- * make 'yandex-cloud' theme a new default theme ([ec2ead6](https://www.github.com/yandex-cloud/react-data-table/commit/ec2ead60cb3244a493db12bc5cd8d844e084e4d4))
70
-
71
- ## 0.1.0 (2022-01-04)
72
-
73
-
74
- ### Features
75
-
76
- * initial import of library files ([5d15cab](https://www.github.com/yandex-cloud/react-data-table/commit/5d15cabc78c44eb8e502fe3e74328b456a981710))