@gravity-ui/react-data-table 2.2.1 → 3.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 +8 -0
- package/build/esm/lib/DataTable.d.ts +24 -24
- package/build/esm/lib/ResizeHandler.d.ts +2 -2
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -7,6 +7,14 @@ Cell grouping is supported: rows are first sorted by grouped columns. Grouping i
|
|
|
7
7
|
Multi-column sorting is also supported. Ctrl+Click on a column adds a column at the end
|
|
8
8
|
of the sort list. A simple Click sorts the table by this column only. Sorting order is switched in the sequence: `none -> default -> reversed default -> none`.
|
|
9
9
|
|
|
10
|
+
## Virtualization and React StrictMode
|
|
11
|
+
|
|
12
|
+
Virtualization (`settings.dynamicRender: true`) relies on `react-list`, which has a compatibility limitation with React 18+ StrictMode in development. During StrictMode's mount/unmount/remount check, the scroll listener is removed and not restored. Scrolling can then show empty areas in `uniform` and `variable` modes or stop rendering additional rows in `simple` mode.
|
|
13
|
+
|
|
14
|
+
This StrictMode remount check does not run in production builds.
|
|
15
|
+
|
|
16
|
+
`@gravity-ui/react-data-table` is in maintenance mode and will not receive new features. We recommend migrating to [@gravity-ui/table](https://github.com/gravity-ui/table).
|
|
17
|
+
|
|
10
18
|
## Properties
|
|
11
19
|
|
|
12
20
|
| Property | Type | Required | Default | Description |
|
|
@@ -41,12 +41,12 @@ declare class TableHead<T> extends React.Component<TableHeadProps<T>> {
|
|
|
41
41
|
componentDidMount(): void;
|
|
42
42
|
componentDidUpdate(): void;
|
|
43
43
|
componentWillUnmount(): void;
|
|
44
|
-
render(): JSX.Element;
|
|
44
|
+
render(): React.JSX.Element;
|
|
45
45
|
_calculateColumnsWidth(): void;
|
|
46
46
|
onSort(column?: SlimColumn, multisort?: boolean): void;
|
|
47
47
|
_getOnSortClick(column: HeadCellColumn<T>): ((event: React.MouseEvent<HTMLTableHeaderCellElement>) => void) | undefined;
|
|
48
|
-
renderHeadCell: (headCell: HeadCellsType<T>) => JSX.Element;
|
|
49
|
-
renderHeadLevel: (row: HeadColumnsItem<T>, rowIndex: number) => JSX.Element;
|
|
48
|
+
renderHeadCell: (headCell: HeadCellsType<T>) => React.JSX.Element;
|
|
49
|
+
renderHeadLevel: (row: HeadColumnsItem<T>, rowIndex: number) => React.JSX.Element;
|
|
50
50
|
dataRowsRef: (ref: HTMLTableSectionElement) => void;
|
|
51
51
|
_getColumnRef: (index: number) => (node: HTMLTableHeaderCellElement) => void;
|
|
52
52
|
_getRenderedColumn: (index?: number) => HTMLTableCellElement | undefined;
|
|
@@ -79,10 +79,10 @@ declare class StickyHead<T> extends React.Component<StickyHeadProps<T>, StickyHe
|
|
|
79
79
|
state: StickyHeadState;
|
|
80
80
|
heightObserver?: HeightObserver;
|
|
81
81
|
_node?: HTMLElement;
|
|
82
|
-
render(): JSX.Element;
|
|
82
|
+
render(): React.JSX.Element;
|
|
83
83
|
setScrollLeft(scrollLeft: number): void;
|
|
84
84
|
setRightPosition(value: number): void;
|
|
85
|
-
renderHeader(props: Omit<StickyHeadProps<T>, 'mode' | 'top'>): JSX.Element;
|
|
85
|
+
renderHeader(props: Omit<StickyHeadProps<T>, 'mode' | 'top'>): React.JSX.Element;
|
|
86
86
|
onDataRowsHeightChange: (height: number) => void;
|
|
87
87
|
updateWidths(newWidths?: number[]): void;
|
|
88
88
|
_nodeRef: (node: HTMLDivElement) => void;
|
|
@@ -111,12 +111,12 @@ declare class StickyFooter<T> extends React.PureComponent<StickyFooterProps<T>,
|
|
|
111
111
|
componentDidMount(): void;
|
|
112
112
|
componentDidUpdate(): void;
|
|
113
113
|
componentWillUnmount(): void;
|
|
114
|
-
render(): JSX.Element | null;
|
|
114
|
+
render(): React.JSX.Element | null;
|
|
115
115
|
_nodeFixedRef: (node: HTMLDivElement) => void;
|
|
116
116
|
_nodeMovingRef: (node: HTMLDivElement) => void;
|
|
117
117
|
setScrollLeft(scrollLeft: number): void;
|
|
118
118
|
setRightPosition(value: number): void;
|
|
119
|
-
renderFooter(renderedRows: React.ReactNode): JSX.Element;
|
|
119
|
+
renderFooter(renderedRows: React.ReactNode): React.JSX.Element;
|
|
120
120
|
updateWidths(newWidths?: number[]): void;
|
|
121
121
|
}
|
|
122
122
|
interface TableProps<T> {
|
|
@@ -158,7 +158,7 @@ declare class Table<T> extends React.PureComponent<TableProps<T>, TableState> {
|
|
|
158
158
|
componentDidMount(): void;
|
|
159
159
|
componentDidUpdate(): void;
|
|
160
160
|
componentWillUnmount(): void;
|
|
161
|
-
render(): JSX.Element;
|
|
161
|
+
render(): React.JSX.Element;
|
|
162
162
|
_refBody: (node: HTMLDivElement) => void;
|
|
163
163
|
_refBox: (node: HTMLDivElement) => void;
|
|
164
164
|
_refHead: (node: TableHead<T>) => void;
|
|
@@ -169,20 +169,20 @@ declare class Table<T> extends React.PureComponent<TableProps<T>, TableState> {
|
|
|
169
169
|
_onColumnsUpdated: (widths: number[]) => void;
|
|
170
170
|
syncHeadWidths(): void;
|
|
171
171
|
_getEmptyRow(): any;
|
|
172
|
-
renderHead(): JSX.Element;
|
|
173
|
-
renderStickyHead(): JSX.Element;
|
|
174
|
-
renderStickyFooter(): JSX.Element;
|
|
172
|
+
renderHead(): React.JSX.Element;
|
|
173
|
+
renderStickyHead(): React.JSX.Element;
|
|
174
|
+
renderStickyFooter(): React.JSX.Element;
|
|
175
175
|
onMovingHeaderDataRowsHeightChange: (height: number) => void;
|
|
176
176
|
onMovingFooterHeightChange: (height: number) => void;
|
|
177
|
-
renderRow: (vIndex: number) => JSX.Element;
|
|
178
|
-
renderFooterRow: (rowData: T, index: number) => JSX.Element;
|
|
179
|
-
renderHeaderRow: (rowData: T, index: number) => JSX.Element;
|
|
180
|
-
renderRowImpl: (row: T, index: number, { onRowClick, odd, span, footer, headerData }?: RenderRowImplOptions<T>) => JSX.Element;
|
|
181
|
-
renderTable: (items: React.ReactNode[], ref?: any) => JSX.Element;
|
|
182
|
-
renderTableDynamic(): JSX.Element;
|
|
183
|
-
renderTableSimple(): JSX.Element;
|
|
184
|
-
renderHeaderRows(): JSX.Element[] | undefined;
|
|
185
|
-
renderFooterRows(): JSX.Element[] | undefined;
|
|
177
|
+
renderRow: (vIndex: number) => React.JSX.Element;
|
|
178
|
+
renderFooterRow: (rowData: T, index: number) => React.JSX.Element;
|
|
179
|
+
renderHeaderRow: (rowData: T, index: number) => React.JSX.Element;
|
|
180
|
+
renderRowImpl: (row: T, index: number, { onRowClick, odd, span, footer, headerData }?: RenderRowImplOptions<T>) => React.JSX.Element;
|
|
181
|
+
renderTable: (items: React.ReactNode[], ref?: any) => React.JSX.Element;
|
|
182
|
+
renderTableDynamic(): React.JSX.Element;
|
|
183
|
+
renderTableSimple(): React.JSX.Element;
|
|
184
|
+
renderHeaderRows(): React.JSX.Element[] | undefined;
|
|
185
|
+
renderFooterRows(): React.JSX.Element[] | undefined;
|
|
186
186
|
getStickyFooterMode(): HeadPositionInner;
|
|
187
187
|
}
|
|
188
188
|
interface RenderRowImplOptions<T> {
|
|
@@ -345,9 +345,9 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
|
|
|
345
345
|
};
|
|
346
346
|
state: DataTableViewState<T>;
|
|
347
347
|
table?: Table<T>;
|
|
348
|
-
render(): JSX.Element;
|
|
348
|
+
render(): React.JSX.Element;
|
|
349
349
|
_tableRef: (node: Table<T>) => void;
|
|
350
|
-
renderMemoizedCell: ({ column, value, row, index, footer, headerData }: CellProps<T>) => JSX.Element;
|
|
350
|
+
renderMemoizedCell: ({ column, value, row, index, footer, headerData }: CellProps<T>) => React.JSX.Element;
|
|
351
351
|
getColumn: (column: Column<T>, columnIndex: number) => {
|
|
352
352
|
resizeable: boolean;
|
|
353
353
|
sortable: boolean;
|
|
@@ -355,7 +355,7 @@ declare class DataTableView<T> extends React.Component<DataTableProps<T>, DataTa
|
|
|
355
355
|
_getValue: (row: T) => any;
|
|
356
356
|
_getTitle: (row: T) => any;
|
|
357
357
|
_getSortValue: (row: T) => any;
|
|
358
|
-
_renderValue: (({ value, row, index, footer, headerData }: Omit<CellProps<T>, 'column'>) => JSX.Element) | (({ value }: Partial<CellProps<T>>) => any);
|
|
358
|
+
_renderValue: (({ value, row, index, footer, headerData }: Omit<CellProps<T>, 'column'>) => React.JSX.Element) | (({ value }: Partial<CellProps<T>>) => any);
|
|
359
359
|
_getOnClick: ((data: {
|
|
360
360
|
row: T;
|
|
361
361
|
index: number;
|
|
@@ -457,7 +457,7 @@ export default class DataTable<T> extends React.PureComponent<DataTableProps<T>,
|
|
|
457
457
|
componentDidMount(): void;
|
|
458
458
|
componentDidUpdate(prevProps: Readonly<DataTableProps<T>>): void;
|
|
459
459
|
componentDidCatch(error: unknown): void;
|
|
460
|
-
render(): JSX.Element;
|
|
460
|
+
render(): React.JSX.Element;
|
|
461
461
|
_tableRef: (node: DataTableView<T>) => void;
|
|
462
462
|
resize(): void;
|
|
463
463
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
interface ResizeHandlerProps {
|
|
3
3
|
getColumn: (index?: number) => HTMLTableCellElement | undefined;
|
|
4
4
|
columnIndex?: number;
|
|
@@ -7,5 +7,5 @@ interface ResizeHandlerProps {
|
|
|
7
7
|
minWidth?: number;
|
|
8
8
|
onResize?: (columnId: string, width: number) => void;
|
|
9
9
|
}
|
|
10
|
-
export declare function ResizeHandler({ getColumn, columnIndex, columnId, minWidth, maxWidth, onResize, }: ResizeHandlerProps): JSX.Element;
|
|
10
|
+
export declare function ResizeHandler({ getColumn, columnIndex, columnId, minWidth, maxWidth, onResize, }: ResizeHandlerProps): React.JSX.Element;
|
|
11
11
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/react-data-table",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "DataTable component",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"table"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@gravity-ui/prettier-config": "^1.0.1",
|
|
63
63
|
"@gravity-ui/stylelint-config": "^2.0.0",
|
|
64
64
|
"@gravity-ui/tsconfig": "^1.0.0",
|
|
65
|
-
"@gravity-ui/uikit": "^
|
|
65
|
+
"@gravity-ui/uikit": "^8.0.0",
|
|
66
66
|
"@storybook/addon-actions": "^7.3.1",
|
|
67
67
|
"@storybook/addon-essentials": "^7.3.1",
|
|
68
68
|
"@storybook/addon-interactions": "^7.3.1",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"@storybook/preset-scss": "^1.0.3",
|
|
71
71
|
"@storybook/react": "^7.3.1",
|
|
72
72
|
"@storybook/react-webpack5": "^7.3.1",
|
|
73
|
-
"@types/react": "
|
|
74
|
-
"@types/react-dom": "
|
|
73
|
+
"@types/react": "18.3.31",
|
|
74
|
+
"@types/react-dom": "18.3.7",
|
|
75
75
|
"@types/react-list": "0.8.7",
|
|
76
76
|
"@typescript-eslint/eslint-plugin": "^5.50.0",
|
|
77
77
|
"copyfiles": "2.4.1",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"typescript": "^5.1.6"
|
|
95
95
|
},
|
|
96
96
|
"peerDependencies": {
|
|
97
|
-
"react": ">=
|
|
97
|
+
"react": ">=18.0.0"
|
|
98
98
|
},
|
|
99
99
|
"publishConfig": {
|
|
100
100
|
"access": "public"
|