@gravity-ui/react-data-table 1.3.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.
@@ -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';
@@ -35,14 +34,6 @@ interface TableHeadProps<T> {
35
34
  onDataRowsHeightChange?: StickyHeadProps<T>['onDataRowsHeightChange'];
36
35
  }
37
36
  declare class TableHead<T> extends React.Component<TableHeadProps<T>> {
38
- static propTypes: {
39
- headColumns: PropTypes.Validator<any[]>;
40
- dataColumns: PropTypes.Validator<any[]>;
41
- displayIndices: PropTypes.Validator<boolean>;
42
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
43
- onColumnsUpdated: PropTypes.Requireable<(...args: any[]) => any>;
44
- renderedDataRows: PropTypes.Requireable<PropTypes.ReactNodeLike>;
45
- };
46
37
  _dataRowsRef: HTMLTableSectionElement | null;
47
38
  dataRowsHeightObserver?: HeightObserver;
48
39
  renderedColumns: HTMLTableHeaderCellElement[];
@@ -65,6 +56,7 @@ interface StickyHeadProps<T> {
65
56
  displayIndices?: Settings['displayIndices'];
66
57
  onSort?: TableProps<T>['onSort'];
67
58
  top: number;
59
+ renderedDataRows: React.ReactNode;
68
60
  onDataRowsHeightChange: (height: number) => void;
69
61
  }
70
62
  interface StickyHeadState {
@@ -73,11 +65,6 @@ interface StickyHeadState {
73
65
  style?: React.CSSProperties;
74
66
  }
75
67
  declare class StickyHead<T> extends React.Component<StickyHeadProps<T>, StickyHeadState> {
76
- static propTypes: {
77
- mode: PropTypes.Requireable<string>;
78
- top: PropTypes.Requireable<number>;
79
- renderedDataRows: PropTypes.Requireable<PropTypes.ReactNodeLike>;
80
- };
81
68
  static defaultProps: {
82
69
  top: number;
83
70
  };
@@ -104,7 +91,7 @@ interface StickyFooterProps<T> {
104
91
  bottom?: number;
105
92
  onMovingHeightChange: (height: number) => void;
106
93
  }
107
- declare type StickyFooterState = StickyHeadState;
94
+ type StickyFooterState = StickyHeadState;
108
95
  declare class StickyFooter<T> extends React.PureComponent<StickyFooterProps<T>, StickyFooterState> {
109
96
  static defaultProps: {
110
97
  bottom: number;
@@ -157,23 +144,6 @@ interface TableState {
157
144
  };
158
145
  }
159
146
  declare class Table<T> extends React.PureComponent<TableProps<T>, TableState> {
160
- static propTypes: {
161
- className: PropTypes.Requireable<string>;
162
- settings: PropTypes.Requireable<object>;
163
- refs: PropTypes.Requireable<object>;
164
- headerData: PropTypes.Requireable<any[]>;
165
- data: PropTypes.Requireable<any[]>;
166
- footerData: PropTypes.Requireable<any[]>;
167
- columns: PropTypes.Requireable<object>;
168
- emptyDataMessage: PropTypes.Requireable<string>;
169
- onRowClick: PropTypes.Requireable<(...args: any[]) => any>;
170
- rowClassName: PropTypes.Requireable<(...args: any[]) => any>;
171
- rowKey: PropTypes.Requireable<(...args: any[]) => any>;
172
- startIndex: PropTypes.Requireable<number>;
173
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
174
- renderEmptyRow: PropTypes.Requireable<(...args: any[]) => any>;
175
- getColSpansOfRow: PropTypes.Requireable<(...args: any[]) => any>;
176
- };
177
147
  state: TableState;
178
148
  _onWindowResize?: () => void;
179
149
  _body?: HTMLDivElement;
@@ -226,63 +196,13 @@ interface CellProps<T> {
226
196
  footer?: boolean;
227
197
  headerData?: boolean;
228
198
  }
229
- declare type InternalProps<T> = DataTableProps<T> & typeof DataTableView.defaultProps;
199
+ type InternalProps<T> = DataTableProps<T> & typeof DataTableView.defaultProps;
230
200
  interface DataTableViewState<T> extends SortOrderWithSortColumns {
231
201
  indexColumn?: Column<T>;
232
202
  settings: ReturnType<typeof DataTableView.calculateSettings>;
233
203
  }
234
- declare type HeadPositionInner = HeadPosition | false;
204
+ type HeadPositionInner = HeadPosition | false;
235
205
  declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTableViewState<T>> {
236
- static propTypes: {
237
- getColSpansOfRow: PropTypes.Requireable<(...args: any[]) => any>;
238
- columns: PropTypes.Validator<any[]>;
239
- headerData: PropTypes.Requireable<any[]>;
240
- data: PropTypes.Validator<any[]>;
241
- footerData: PropTypes.Requireable<any[]>;
242
- startIndex: PropTypes.Requireable<number>;
243
- emptyDataMessage: PropTypes.Requireable<string>;
244
- renderEmptyRow: PropTypes.Requireable<(...args: any[]) => any>;
245
- rowClassName: PropTypes.Requireable<(...args: any[]) => any>;
246
- rowKey: PropTypes.Requireable<(...args: any[]) => any>;
247
- visibleRowIndex: PropTypes.Requireable<(...args: any[]) => any>;
248
- initialSortOrder: PropTypes.Requireable<PropTypes.InferProps<{
249
- columnId: PropTypes.Requireable<string>;
250
- order: PropTypes.Requireable<number>;
251
- }> | (PropTypes.InferProps<{
252
- columnId: PropTypes.Requireable<string>;
253
- order: PropTypes.Requireable<number>;
254
- }> | null | undefined)[]>;
255
- sortOrder: PropTypes.Requireable<PropTypes.InferProps<{
256
- columnId: PropTypes.Requireable<string>;
257
- order: PropTypes.Requireable<number>;
258
- }> | (PropTypes.InferProps<{
259
- columnId: PropTypes.Requireable<string>;
260
- order: PropTypes.Requireable<number>;
261
- }> | null | undefined)[]>;
262
- settings: PropTypes.Requireable<PropTypes.InferProps<{
263
- displayIndices: PropTypes.Requireable<boolean>;
264
- dynamicRender: PropTypes.Requireable<boolean>;
265
- dynamicRenderType: PropTypes.Requireable<string>;
266
- dynamicRenderUseStaticSize: PropTypes.Requireable<boolean>;
267
- dynamicRenderThreshold: PropTypes.Requireable<number>;
268
- dynamicRenderMinSize: PropTypes.Requireable<number>;
269
- dynamicRenderScrollParentGetter: PropTypes.Requireable<(...args: any[]) => any>;
270
- dynamicRenderScrollParentViewportSizeGetter: PropTypes.Requireable<(...args: any[]) => any>;
271
- dynamicItemSizeEstimator: PropTypes.Requireable<(...args: any[]) => any>;
272
- dynamicItemSizeGetter: PropTypes.Requireable<(...args: any[]) => any>;
273
- stickyHead: PropTypes.Requireable<string | boolean>;
274
- stickyTop: PropTypes.Requireable<string | number>;
275
- sortable: PropTypes.Requireable<boolean>;
276
- externalSort: PropTypes.Requireable<boolean>;
277
- highlightRows: PropTypes.Requireable<boolean>;
278
- stripedRows: PropTypes.Requireable<boolean>;
279
- headerMod: PropTypes.Requireable<string>;
280
- defaultOrder: PropTypes.Requireable<number>;
281
- syncHeadOnResize: PropTypes.Requireable<boolean>;
282
- }>>;
283
- theme: PropTypes.Requireable<string>;
284
- onSort: PropTypes.Requireable<(...args: any[]) => any>;
285
- };
286
206
  static defaultProps: {
287
207
  startIndex: number;
288
208
  emptyDataMessage: string;
@@ -328,9 +248,65 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
328
248
  headerMod?: "pre" | "multiline" | undefined;
329
249
  };
330
250
  static getIndexColumn<T extends HasHeaderFooterIndex>({ startIndex, data, visibleRowIndex, }: InternalProps<T>): Column<T>;
331
- static getDerivedStateFromProps<T>(nextProps: InternalProps<T>): {
332
- sortOrder?: NameToOrderTypeMap | undefined;
333
- 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[];
334
310
  settings: {
335
311
  stickyHead: HeadPositionInner;
336
312
  stickyFooter: HeadPositionInner;
@@ -415,27 +391,27 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
415
391
  dataColumns: DataColumns<T>;
416
392
  };
417
393
  isSortEnabled: () => boolean;
418
- onSort: (column?: SlimColumn | undefined, multisort?: boolean | undefined) => void;
394
+ onSort: (column?: SlimColumn, multisort?: boolean) => void;
419
395
  resize(): void;
420
396
  }
421
- export declare type ColumnExtended<T> = ReturnType<DataTableView<T>['getColumn']> & {
397
+ export type ColumnExtended<T> = ReturnType<DataTableView<T>['getColumn']> & {
422
398
  headerTitle?: string;
423
399
  };
424
- declare type HeadCellColumn<T> = ColumnExtended<T> | (Column<T> & {
400
+ type HeadCellColumn<T> = ColumnExtended<T> | (Column<T> & {
425
401
  index?: number;
426
402
  columnIndex?: number;
427
403
  headerTitle?: string;
428
404
  dataColumn?: boolean;
429
405
  });
430
- declare type HeadCellsType<T> = {
406
+ type HeadCellsType<T> = {
431
407
  column: HeadCellColumn<T>;
432
408
  itemLevel: number;
433
409
  colSpan: number;
434
410
  rowSpan: number;
435
411
  };
436
- declare type HeadColumnsItem<T> = HeadCellsType<T>[];
437
- declare type HeadColumns<T> = HeadColumnsItem<T>[];
438
- declare type DataColumns<T> = ColumnExtended<T>[];
412
+ type HeadColumnsItem<T> = HeadCellsType<T>[];
413
+ type HeadColumns<T> = HeadColumnsItem<T>[];
414
+ type DataColumns<T> = ColumnExtended<T>[];
439
415
  interface TableColumns<T> {
440
416
  headColumns: HeadColumns<T>;
441
417
  dataColumns: DataColumns<T>;
@@ -444,7 +420,7 @@ export interface SortOrderWithSortColumns {
444
420
  sortOrder: NameToOrderTypeMap;
445
421
  sortColumns: string[];
446
422
  }
447
- export declare type NameToOrderTypeMap = {
423
+ export type NameToOrderTypeMap = {
448
424
  [colName: string]: OrderType;
449
425
  };
450
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);
@@ -174,14 +168,6 @@ class TableHead extends React.Component {
174
168
  : undefined;
175
169
  }
176
170
  }
177
- TableHead.propTypes = {
178
- headColumns: PropTypes.array.isRequired,
179
- dataColumns: PropTypes.array.isRequired,
180
- displayIndices: PropTypes.bool.isRequired,
181
- onSort: PropTypes.func,
182
- onColumnsUpdated: PropTypes.func,
183
- renderedDataRows: PropTypes.node,
184
- };
185
171
  class StickyHead extends React.Component {
186
172
  constructor() {
187
173
  super(...arguments);
@@ -241,11 +227,6 @@ class StickyHead extends React.Component {
241
227
  }
242
228
  }
243
229
  }
244
- StickyHead.propTypes = {
245
- mode: PropTypes.oneOf([FIXED, MOVING]),
246
- top: PropTypes.number,
247
- renderedDataRows: PropTypes.node,
248
- };
249
230
  StickyHead.defaultProps = {
250
231
  top: 0,
251
232
  };
@@ -491,7 +472,7 @@ class Table extends React.PureComponent {
491
472
  }
492
473
  renderTableDynamic() {
493
474
  const { data, settings: { dynamicInnerRef, dynamicRenderType = 'uniform', dynamicRenderUseStaticSize, dynamicRenderThreshold, dynamicRenderMinSize, dynamicRenderScrollParentGetter, dynamicRenderScrollParentViewportSizeGetter, dynamicItemSizeEstimator, dynamicItemSizeGetter, } = {}, } = this.props;
494
- 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 }));
495
476
  }
496
477
  renderTableSimple() {
497
478
  const { data } = this.props;
@@ -515,32 +496,11 @@ class Table extends React.PureComponent {
515
496
  return stickyFooter;
516
497
  }
517
498
  }
518
- Table.propTypes = {
519
- className: PropTypes.string,
520
- settings: PropTypes.object,
521
- refs: PropTypes.object,
522
- headerData: PropTypes.array,
523
- data: PropTypes.array,
524
- footerData: PropTypes.array,
525
- columns: PropTypes.object,
526
- emptyDataMessage: PropTypes.string,
527
- onRowClick: PropTypes.func,
528
- rowClassName: PropTypes.func,
529
- rowKey: PropTypes.func,
530
- startIndex: PropTypes.number,
531
- onSort: PropTypes.func,
532
- renderEmptyRow: PropTypes.func,
533
- getColSpansOfRow: PropTypes.func,
534
- };
535
499
  const MemoizedCell = React.memo(CellImpl);
536
500
  function CellImpl(props) {
537
501
  const { column, value, row, index, footer, headerData } = props;
538
502
  return (React.createElement(React.Fragment, null, column.render({ value, row, index, footer, headerData })));
539
503
  }
540
- const sortOrderShape = {
541
- columnId: PropTypes.string,
542
- order: PropTypes.oneOf([ASCENDING, DESCENDING]),
543
- };
544
504
  class DataTableView extends React.Component {
545
505
  constructor() {
546
506
  super(...arguments);
@@ -549,14 +509,12 @@ class DataTableView extends React.Component {
549
509
  this.table = node;
550
510
  };
551
511
  this.renderMemoizedCell = ({ column, value, row, index, footer, headerData }) => {
552
- return (React.createElement(MemoizedCell, Object.assign({}, {
553
- column,
512
+ return (React.createElement(MemoizedCell, { column,
554
513
  value,
555
514
  row,
556
515
  index,
557
516
  footer,
558
- headerData,
559
- })));
517
+ headerData }));
560
518
  };
561
519
  this.getColumn = (column, columnIndex) => {
562
520
  const { settings } = this.state;
@@ -720,50 +678,6 @@ class DataTableView extends React.Component {
720
678
  }
721
679
  }
722
680
  }
723
- DataTableView.propTypes = {
724
- getColSpansOfRow: PropTypes.func,
725
- columns: PropTypes.array.isRequired,
726
- headerData: PropTypes.array,
727
- data: PropTypes.array.isRequired,
728
- footerData: PropTypes.array,
729
- startIndex: PropTypes.number,
730
- emptyDataMessage: PropTypes.string,
731
- renderEmptyRow: PropTypes.func,
732
- rowClassName: PropTypes.func,
733
- rowKey: PropTypes.func,
734
- visibleRowIndex: PropTypes.func,
735
- initialSortOrder: PropTypes.oneOfType([
736
- PropTypes.shape(sortOrderShape),
737
- PropTypes.arrayOf(PropTypes.shape(sortOrderShape)),
738
- ]),
739
- sortOrder: PropTypes.oneOfType([
740
- PropTypes.shape(sortOrderShape),
741
- PropTypes.arrayOf(PropTypes.shape(sortOrderShape)),
742
- ]),
743
- settings: PropTypes.shape({
744
- displayIndices: PropTypes.bool,
745
- dynamicRender: PropTypes.bool,
746
- dynamicRenderType: PropTypes.oneOf(['simple', 'uniform', 'variable']),
747
- dynamicRenderUseStaticSize: PropTypes.bool,
748
- dynamicRenderThreshold: PropTypes.number,
749
- dynamicRenderMinSize: PropTypes.number,
750
- dynamicRenderScrollParentGetter: PropTypes.func,
751
- dynamicRenderScrollParentViewportSizeGetter: PropTypes.func,
752
- dynamicItemSizeEstimator: PropTypes.func,
753
- dynamicItemSizeGetter: PropTypes.func,
754
- stickyHead: PropTypes.oneOf([false, FIXED, MOVING]),
755
- stickyTop: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['auto'])]),
756
- sortable: PropTypes.bool,
757
- externalSort: PropTypes.bool,
758
- highlightRows: PropTypes.bool,
759
- stripedRows: PropTypes.bool,
760
- headerMod: PropTypes.oneOf(['multiline', 'pre']),
761
- defaultOrder: PropTypes.oneOf([ASCENDING, DESCENDING]),
762
- syncHeadOnResize: PropTypes.bool,
763
- }),
764
- theme: PropTypes.string,
765
- onSort: PropTypes.func,
766
- };
767
681
  DataTableView.defaultProps = {
768
682
  startIndex: 0,
769
683
  emptyDataMessage: 'No data',
@@ -789,7 +703,7 @@ function doColumnsHaveDuplicateNames(columns) {
789
703
  const DUPLICATE_COLUMN_NAMES_WARNING = 'It is strongly recommended against using duplicate column names. ' +
790
704
  'They act as default accessors and titles, so doing so may lead to confusing titles and the wrong ' +
791
705
  'data being extracted.';
792
- export default class DataTable extends React.PureComponent {
706
+ class DataTable extends React.PureComponent {
793
707
  constructor() {
794
708
  super(...arguments);
795
709
  this.state = {};
@@ -847,3 +761,4 @@ DataTable.DESCENDING = DESCENDING;
847
761
  DataTable.LEFT = LEFT;
848
762
  DataTable.CENTER = CENTER;
849
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
  }
@@ -2,10 +2,10 @@ import * as React from 'react';
2
2
  import ReactList from 'react-list';
3
3
  import type { TableRowProps } from './DataTable';
4
4
  import { ASCENDING, CENTER, DESCENDING, FIXED, LEFT, LEGACY_THEME, MOVING, RIGHT, YCLOUD_THEME } from './constants';
5
- declare type HeaderData<T> = T & {
5
+ type HeaderData<T> = T & {
6
6
  headerIndex?: number;
7
7
  };
8
- declare type FooterData<T> = T & {
8
+ type FooterData<T> = T & {
9
9
  footerIndex?: number;
10
10
  };
11
11
  export interface DataTableProps<T> {
@@ -62,7 +62,7 @@ export interface Column<T> {
62
62
  group?: boolean;
63
63
  autogroup?: boolean;
64
64
  }
65
- export declare type DynamicInnerRefT = ReactList;
65
+ export type DynamicInnerRefT = ReactList;
66
66
  export interface Settings {
67
67
  displayIndices?: boolean;
68
68
  stickyHead?: HeadPosition;
@@ -96,14 +96,14 @@ export interface CustomStyleParams<T> {
96
96
  footer?: boolean;
97
97
  headerData?: boolean;
98
98
  }
99
- export declare type AlignType = typeof LEFT | typeof RIGHT | typeof CENTER;
100
- 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;
101
101
  export interface SortOrder {
102
102
  columnId: string;
103
103
  order: OrderType;
104
104
  }
105
- export declare type HeadPosition = typeof FIXED | typeof MOVING;
106
- 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;
107
107
  export interface SortedDataItem<T> {
108
108
  row: T;
109
109
  index: number;
@@ -111,5 +111,5 @@ export interface SortedDataItem<T> {
111
111
  [colName: string]: number;
112
112
  };
113
113
  }
114
- export declare type Comparator<T> = (l: SortedDataItem<T>, r: SortedDataItem<T>) => number;
114
+ export type Comparator<T> = (l: SortedDataItem<T>, r: SortedDataItem<T>) => number;
115
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,103 +1,101 @@
1
1
  {
2
2
  "name": "@gravity-ui/react-data-table",
3
- "version": "1.3.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
- "dev": "npm run start",
20
- "start": "start-storybook -p 7007",
21
- "build-storybook": "build-storybook -c .storybook -o storybook-static",
22
33
  "typecheck": "npm run build:compile -- --noEmit",
23
34
  "test": "jest",
24
- "build:clean": "rm -rf build",
25
- "build:compile": "tsc",
26
- "build:copy": "copyfiles -u 1 \"src/**/*.scss\" build/esm",
27
- "build": "npm run build:clean && npm run build:compile && npm run build:copy",
28
35
  "prepublishOnly": "npm run build"
29
36
  },
30
- "repository": {
31
- "type": "git",
32
- "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"
33
40
  },
34
- "keywords": [
35
- "table"
36
- ],
37
- "license": "MIT",
38
- "peerDependencies": {
39
- "react": ">=16.14.0",
40
- "prop-types": ">=15.8.0",
41
- "@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
+ ]
42
51
  },
43
- "publishConfig": {
44
- "access": "public"
52
+ "dependencies": {
53
+ "@bem-react/classname": ">=1.6.0",
54
+ "react-list": "^0.8.17"
45
55
  },
46
56
  "devDependencies": {
47
57
  "@bem-react/classname": "^1.6.0",
48
- "@commitlint/cli": "15.0.0",
49
- "@commitlint/config-conventional": "15.0.0",
50
- "@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",
51
61
  "@gravity-ui/prettier-config": "^1.0.1",
52
62
  "@gravity-ui/stylelint-config": "^2.0.0",
53
63
  "@gravity-ui/tsconfig": "^1.0.0",
54
- "@gravity-ui/uikit": "^4.0.5",
55
- "@storybook/addon-essentials": "6.4.9",
56
- "@storybook/preset-scss": "1.0.3",
57
- "@storybook/react": "6.4.9",
58
- "@types/jest": "27.4.0",
59
- "@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",
60
72
  "@types/react": "16.14.21",
61
73
  "@types/react-dom": "16.9.14",
62
74
  "@types/react-list": "0.8.7",
63
75
  "@typescript-eslint/eslint-plugin": "^5.50.0",
64
76
  "copyfiles": "2.4.1",
65
- "css-loader": "5.2.7",
66
- "eslint": "8.6.0",
67
- "jest": "27.4.5",
68
- "nano-staged": "0.5.0",
77
+ "eslint": "8.47",
78
+ "jest": "^29.6.2",
79
+ "nano-staged": "^0.8.0",
69
80
  "npm-run-all": "4.1.5",
70
- "postcss": "8.4.5",
81
+ "postcss": "^8.4.28",
71
82
  "prettier": "2.5.1",
72
- "prop-types": "15.8.0",
83
+ "prop-types": "^15.8.1",
73
84
  "react": "16.14.0",
74
85
  "react-dom": "16.14.0",
75
- "react-router-dom": "5.3.0",
76
- "sass": "1.45.2",
77
- "sass-loader": "10.2.0",
78
- "simple-git-hooks": "2.7.0",
79
- "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",
80
91
  "stylelint": "^14.16.1",
81
- "ts-jest": "27.1.2",
82
- "typescript": "4.5.4",
83
- "webpack": "4.46.0"
84
- },
85
- "dependencies": {
86
- "react-list": "0.8.16"
92
+ "ts-jest": "^29.1.1",
93
+ "typescript": "^5.1.6"
87
94
  },
88
- "nano-staged": {
89
- "*.scss": [
90
- "stylelint --fix --quiet"
91
- ],
92
- "*.{js,jsx,ts,tsx}": [
93
- "eslint --fix --quiet"
94
- ],
95
- "*.{md,json,yaml,yml}": [
96
- "prettier --write"
97
- ]
95
+ "peerDependencies": {
96
+ "react": ">=16.14.0"
98
97
  },
99
- "simple-git-hooks": {
100
- "pre-commit": "npx nano-staged",
101
- "commit-msg": "npx commitlint --edit $1"
98
+ "publishConfig": {
99
+ "access": "public"
102
100
  }
103
101
  }
package/CHANGELOG.md DELETED
@@ -1,83 +0,0 @@
1
- # Changelog
2
-
3
- ## [1.3.0](https://github.com/gravity-ui/react-data-table/compare/v1.2.0...v1.3.0) (2024-02-28)
4
-
5
-
6
- ### Features
7
-
8
- * add custom colspan for table row ([3316f62](https://github.com/gravity-ui/react-data-table/commit/3316f6283a1f504035c381f1baed6245f086e086))
9
-
10
- ## [1.2.0](https://github.com/gravity-ui/react-data-table/compare/v1.1.0...v1.2.0) (2023-09-05)
11
-
12
-
13
- ### Features
14
-
15
- * 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))
16
-
17
- ## [1.1.0](https://github.com/gravity-ui/react-data-table/compare/v1.0.3...v1.1.0) (2023-05-05)
18
-
19
-
20
- ### Features
21
-
22
- * 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))
23
-
24
- ## [1.0.3](https://github.com/gravity-ui/react-data-table/compare/v1.0.2...v1.0.3) (2023-02-02)
25
-
26
-
27
- ### Bug Fixes
28
-
29
- * 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))
30
-
31
- ### [1.0.2](https://www.github.com/yandex-cloud/react-data-table/compare/v1.0.1...v1.0.2) (2022-03-21)
32
-
33
-
34
- ### chore
35
-
36
- * freeze direct dependencies ([a842bf4](https://www.github.com/yandex-cloud/react-data-table/commit/a842bf48ccd09c2f8a6158bb1250b5b6643844b5))
37
-
38
- ### [1.0.1](https://www.github.com/yandex-cloud/react-data-table/compare/v1.0.0...v1.0.1) (2022-02-25)
39
-
40
-
41
- ### Bug Fixes
42
-
43
- * clarify column width property type ([4b43afe](https://www.github.com/yandex-cloud/react-data-table/commit/4b43afe96ac0fe515b08e492ede12f9ed3299dec))
44
-
45
- ## [1.0.0](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.2...v1.0.0) (2022-02-03)
46
-
47
-
48
- ### docs
49
-
50
- * translate README.md ([160c576](https://www.github.com/yandex-cloud/react-data-table/commit/160c576a9869ea03f4b80ce172c2f537036aeae4))
51
-
52
- ### [0.2.2](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.1...v0.2.2) (2022-01-13)
53
-
54
-
55
- ### Bug Fixes
56
-
57
- * emit a warning when columns with duplicate names are provided ([08d0294](https://www.github.com/yandex-cloud/react-data-table/commit/08d029422cceae9145b3aa65d99b2931ec106441))
58
-
59
- ### [0.2.1](https://www.github.com/yandex-cloud/react-data-table/compare/v0.2.0...v0.2.1) (2022-01-12)
60
-
61
-
62
- ### Bug Fixes
63
-
64
- * put back missing styles into package ([c7d3ba0](https://www.github.com/yandex-cloud/react-data-table/commit/c7d3ba0c9b08af7c517249bcca5abef4f1b9fff8))
65
- * use THEMES type for theme prop ([af0bb33](https://www.github.com/yandex-cloud/react-data-table/commit/af0bb3319a483bd19bab8d503d01611871e8ef31))
66
-
67
- ## [0.2.0](https://www.github.com/yandex-cloud/react-data-table/compare/v0.1.0...v0.2.0) (2022-01-11)
68
-
69
-
70
- ### ⚠ BREAKING CHANGES
71
-
72
- * theme previously known as 'common' is now called 'yandex-cloud' and is a default one, theme previously known as 'internal' is now called 'legacy'.
73
-
74
- ### Bug Fixes
75
-
76
- * make 'yandex-cloud' theme a new default theme ([ec2ead6](https://www.github.com/yandex-cloud/react-data-table/commit/ec2ead60cb3244a493db12bc5cd8d844e084e4d4))
77
-
78
- ## 0.1.0 (2022-01-04)
79
-
80
-
81
- ### Features
82
-
83
- * initial import of library files ([5d15cab](https://www.github.com/yandex-cloud/react-data-table/commit/5d15cabc78c44eb8e502fe3e74328b456a981710))