@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 +3 -2
- package/build/esm/lib/DataTable.d.ts +90 -93
- package/build/esm/lib/DataTable.js +21 -94
- package/build/esm/lib/DataTable.scss +7 -10
- package/build/esm/lib/types.d.ts +12 -8
- package/build/esm/lib/util.d.ts +8 -2
- package/package.json +61 -62
- package/CHANGELOG.md +0 -76
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# React Data Table
|
|
1
|
+
# React Data Table · [](https://www.npmjs.com/package/@gravity-ui/react-data-table) [](https://github.com/gravity-ui/react-data-table/actions/workflows/ci.yml?query=branch:main) [](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 | `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
312
|
-
|
|
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
|
|
394
|
+
onSort: (column?: SlimColumn, multisort?: boolean) => void;
|
|
398
395
|
resize(): void;
|
|
399
396
|
}
|
|
400
|
-
export
|
|
397
|
+
export type ColumnExtended<T> = ReturnType<DataTableView<T>['getColumn']> & {
|
|
401
398
|
headerTitle?: string;
|
|
402
399
|
};
|
|
403
|
-
|
|
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
|
-
|
|
406
|
+
type HeadCellsType<T> = {
|
|
410
407
|
column: HeadCellColumn<T>;
|
|
411
408
|
itemLevel: number;
|
|
412
409
|
colSpan: number;
|
|
413
410
|
rowSpan: number;
|
|
414
411
|
};
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
-
--
|
|
253
|
-
var(--yc-color-base-
|
|
249
|
+
--g-color-base-generic-ultralight,
|
|
250
|
+
var(--yc-color-base-generic-ultralight)
|
|
254
251
|
);
|
|
255
252
|
--data-table-border-color: var(
|
|
256
|
-
--
|
|
257
|
-
var(--yc-color-
|
|
253
|
+
--g-color-base-generic-hover,
|
|
254
|
+
var(--yc-color-base-generic-hover)
|
|
258
255
|
);
|
|
259
256
|
--data-table-color-hover-area: var(
|
|
260
|
-
--
|
|
261
|
-
var(--yc-color-
|
|
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
|
}
|
package/build/esm/lib/types.d.ts
CHANGED
|
@@ -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
|
-
|
|
5
|
+
type HeaderData<T> = T & {
|
|
5
6
|
headerIndex?: number;
|
|
6
7
|
};
|
|
7
|
-
|
|
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
|
|
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
|
|
96
|
-
export
|
|
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
|
|
102
|
-
export
|
|
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
|
|
114
|
+
export type Comparator<T> = (l: SortedDataItem<T>, r: SortedDataItem<T>) => number;
|
|
111
115
|
export {};
|
package/build/esm/lib/util.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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": "
|
|
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
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
37
|
+
"simple-git-hooks": {
|
|
38
|
+
"pre-commit": "npx nano-staged",
|
|
39
|
+
"commit-msg": "npx commitlint --edit $1"
|
|
32
40
|
},
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
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
|
-
"
|
|
43
|
-
"
|
|
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": "
|
|
48
|
-
"@commitlint/config-conventional": "
|
|
49
|
-
"@gravity-ui/eslint-config": "
|
|
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.
|
|
54
|
-
"@storybook/addon-
|
|
55
|
-
"@storybook/
|
|
56
|
-
"@storybook/
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
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
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
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.
|
|
81
|
+
"postcss": "^8.4.28",
|
|
70
82
|
"prettier": "2.5.1",
|
|
71
|
-
"prop-types": "15.8.
|
|
83
|
+
"prop-types": "^15.8.1",
|
|
72
84
|
"react": "16.14.0",
|
|
73
85
|
"react-dom": "16.14.0",
|
|
74
|
-
"
|
|
75
|
-
"sass": "
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"style-loader": "
|
|
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": "
|
|
81
|
-
"typescript": "
|
|
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
|
-
"
|
|
88
|
-
"
|
|
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
|
-
"
|
|
99
|
-
"
|
|
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))
|