@equinor/eds-data-grid-react 0.8.1 → 0.9.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/dist/eds-data-grid-react.cjs +17 -2
- package/dist/esm/EdsDataGrid.js +6 -2
- package/dist/esm/components/TableRow.js +6 -1
- package/dist/esm/utils.js +7 -1
- package/dist/types/components/ClickableCell/ClickableCell.d.ts +12 -0
- package/dist/types/components/ClickableCell/ClickableCell.tokens.d.ts +3 -0
- package/dist/types/components/ClickableCell/index.d.ts +1 -0
- package/dist/types/components/TableRow.d.ts +4 -1
- package/dist/types/utils.d.ts +2 -0
- package/package.json +6 -6
|
@@ -513,13 +513,18 @@ function TableRow({
|
|
|
513
513
|
onCellClick,
|
|
514
514
|
onClick,
|
|
515
515
|
onDoubleClick,
|
|
516
|
-
onContextMenu
|
|
516
|
+
onContextMenu,
|
|
517
|
+
rowVirtualizer,
|
|
518
|
+
virtualItem
|
|
517
519
|
}) {
|
|
518
520
|
const {
|
|
519
521
|
rowClass,
|
|
520
522
|
rowStyle
|
|
521
523
|
} = useTableContext();
|
|
522
524
|
return /*#__PURE__*/jsxRuntime.jsx(StyledTableRow, {
|
|
525
|
+
"data-index": virtualItem?.index,
|
|
526
|
+
ref: node => node && rowVirtualizer?.measureElement(node) //measure dynamic row height
|
|
527
|
+
,
|
|
523
528
|
style: {
|
|
524
529
|
...(rowStyle?.(row) ?? {})
|
|
525
530
|
},
|
|
@@ -578,6 +583,12 @@ function logDevelopmentWarningOfPropUse(deprecatedProps) {
|
|
|
578
583
|
}
|
|
579
584
|
}
|
|
580
585
|
}
|
|
586
|
+
const isFirefox = () => {
|
|
587
|
+
return typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') !== -1;
|
|
588
|
+
};
|
|
589
|
+
const getMeasureElementHandler = () => {
|
|
590
|
+
return isFirefox() ? undefined : element => element?.getBoundingClientRect().height;
|
|
591
|
+
};
|
|
581
592
|
|
|
582
593
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
583
594
|
function EdsDataGridInner({
|
|
@@ -890,7 +901,9 @@ function EdsDataGridInner({
|
|
|
890
901
|
const virtualizer = reactVirtual.useVirtualizer({
|
|
891
902
|
count: table.getRowModel().rows.length,
|
|
892
903
|
getScrollElement: () => parentRef.current,
|
|
893
|
-
estimateSize
|
|
904
|
+
estimateSize,
|
|
905
|
+
//measure dynamic row height, except in firefox because it measures table border height incorrectly
|
|
906
|
+
measureElement: getMeasureElementHandler()
|
|
894
907
|
});
|
|
895
908
|
if (rowVirtualizerInstanceRef) rowVirtualizerInstanceRef.current = virtualizer;
|
|
896
909
|
|
|
@@ -977,6 +990,8 @@ function EdsDataGridInner({
|
|
|
977
990
|
}), virtualRows.map(virtualItem => {
|
|
978
991
|
const row = table.getRowModel().rows[virtualItem.index];
|
|
979
992
|
return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
|
|
993
|
+
virtualItem: virtualItem,
|
|
994
|
+
rowVirtualizer: virtualizer,
|
|
980
995
|
row: row,
|
|
981
996
|
onContextMenu: onRowContextMenu ? event => onRowContextMenu(row, event) : undefined,
|
|
982
997
|
onClick: onRowClick ? event => onRowClick(row, event) : undefined,
|
package/dist/esm/EdsDataGrid.js
CHANGED
|
@@ -7,7 +7,7 @@ import { TableProvider } from './EdsDataGridContext.js';
|
|
|
7
7
|
import { TableHeaderRow } from './components/TableHeaderRow.js';
|
|
8
8
|
import { TableFooterRow } from './components/TableFooterRow.js';
|
|
9
9
|
import { TableRow } from './components/TableRow.js';
|
|
10
|
-
import { addPxSuffixIfInputHasNoPrefix, logDevelopmentWarningOfPropUse } from './utils.js';
|
|
10
|
+
import { addPxSuffixIfInputHasNoPrefix, logDevelopmentWarningOfPropUse, getMeasureElementHandler } from './utils.js';
|
|
11
11
|
import { mergeRefs } from '@equinor/eds-utils';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
13
|
|
|
@@ -322,7 +322,9 @@ function EdsDataGridInner({
|
|
|
322
322
|
const virtualizer = useVirtualizer({
|
|
323
323
|
count: table.getRowModel().rows.length,
|
|
324
324
|
getScrollElement: () => parentRef.current,
|
|
325
|
-
estimateSize
|
|
325
|
+
estimateSize,
|
|
326
|
+
//measure dynamic row height, except in firefox because it measures table border height incorrectly
|
|
327
|
+
measureElement: getMeasureElementHandler()
|
|
326
328
|
});
|
|
327
329
|
if (rowVirtualizerInstanceRef) rowVirtualizerInstanceRef.current = virtualizer;
|
|
328
330
|
|
|
@@ -409,6 +411,8 @@ function EdsDataGridInner({
|
|
|
409
411
|
}), virtualRows.map(virtualItem => {
|
|
410
412
|
const row = table.getRowModel().rows[virtualItem.index];
|
|
411
413
|
return /*#__PURE__*/jsx(TableRow, {
|
|
414
|
+
virtualItem: virtualItem,
|
|
415
|
+
rowVirtualizer: virtualizer,
|
|
412
416
|
row: row,
|
|
413
417
|
onContextMenu: onRowContextMenu ? event => onRowContextMenu(row, event) : undefined,
|
|
414
418
|
onClick: onRowClick ? event => onRowClick(row, event) : undefined,
|
|
@@ -9,13 +9,18 @@ function TableRow({
|
|
|
9
9
|
onCellClick,
|
|
10
10
|
onClick,
|
|
11
11
|
onDoubleClick,
|
|
12
|
-
onContextMenu
|
|
12
|
+
onContextMenu,
|
|
13
|
+
rowVirtualizer,
|
|
14
|
+
virtualItem
|
|
13
15
|
}) {
|
|
14
16
|
const {
|
|
15
17
|
rowClass,
|
|
16
18
|
rowStyle
|
|
17
19
|
} = useTableContext();
|
|
18
20
|
return /*#__PURE__*/jsx(StyledTableRow, {
|
|
21
|
+
"data-index": virtualItem?.index,
|
|
22
|
+
ref: node => node && rowVirtualizer?.measureElement(node) //measure dynamic row height
|
|
23
|
+
,
|
|
19
24
|
style: {
|
|
20
25
|
...(rowStyle?.(row) ?? {})
|
|
21
26
|
},
|
package/dist/esm/utils.js
CHANGED
|
@@ -36,5 +36,11 @@ function logDevelopmentWarningOfPropUse(deprecatedProps) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
const isFirefox = () => {
|
|
40
|
+
return typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') !== -1;
|
|
41
|
+
};
|
|
42
|
+
const getMeasureElementHandler = () => {
|
|
43
|
+
return isFirefox() ? undefined : element => element?.getBoundingClientRect().height;
|
|
44
|
+
};
|
|
39
45
|
|
|
40
|
-
export { addPxSuffixIfInputHasNoPrefix, isNumberOnlyString, logDevelopmentWarningOfPropUse };
|
|
46
|
+
export { addPxSuffixIfInputHasNoPrefix, getMeasureElementHandler, isFirefox, isNumberOnlyString, logDevelopmentWarningOfPropUse };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
export type ClickableCellProps = {
|
|
3
|
+
/** Cell content */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Click handler */
|
|
6
|
+
onClick: () => void;
|
|
7
|
+
/** Accessible label for screen readers */
|
|
8
|
+
ariaLabel: string;
|
|
9
|
+
/** Indicates if the cell is selected */
|
|
10
|
+
isSelected?: boolean;
|
|
11
|
+
} & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'children'>;
|
|
12
|
+
export declare function ClickableCell({ children, onClick, ariaLabel, isSelected, ...rest }: ClickableCellProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ClickableCell, type ClickableCellProps } from './ClickableCell';
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Row } from '@tanstack/react-table';
|
|
2
2
|
import { HTMLAttributes } from 'react';
|
|
3
3
|
import { EdsDataGridProps } from '../EdsDataGridProps';
|
|
4
|
+
import { VirtualItem, Virtualizer } from '@tanstack/react-virtual';
|
|
4
5
|
type Props<T> = {
|
|
5
6
|
row: Row<T>;
|
|
6
7
|
onCellClick?: EdsDataGridProps<T>['onCellClick'];
|
|
8
|
+
rowVirtualizer?: Virtualizer<HTMLDivElement, HTMLTableRowElement>;
|
|
9
|
+
virtualItem?: VirtualItem;
|
|
7
10
|
} & HTMLAttributes<HTMLTableRowElement>;
|
|
8
|
-
export declare function TableRow<T>({ row, onCellClick, onClick, onDoubleClick, onContextMenu, }: Props<T>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function TableRow<T>({ row, onCellClick, onClick, onDoubleClick, onContextMenu, rowVirtualizer, virtualItem, }: Props<T>): import("react/jsx-runtime").JSX.Element;
|
|
9
12
|
export {};
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -20,3 +20,5 @@ export declare function logDevelopmentWarningOfPropUse(deprecatedProps: Record<s
|
|
|
20
20
|
value: unknown;
|
|
21
21
|
mitigationInfo?: string;
|
|
22
22
|
}>): void;
|
|
23
|
+
export declare const isFirefox: () => boolean;
|
|
24
|
+
export declare const getMeasureElementHandler: () => (element: HTMLTableRowElement) => number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/eds-data-grid-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "A feature-rich data-grid written in React, implementing the Equinor Design System",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@tanstack/react-table": "^8.21.3",
|
|
24
|
-
"@tanstack/react-virtual": "^3.13.
|
|
24
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
25
25
|
"@equinor/eds-icons": "^0.22.0",
|
|
26
26
|
"@equinor/eds-tokens": "0.9.2",
|
|
27
|
-
"@equinor/eds-utils": "^0.8.
|
|
27
|
+
"@equinor/eds-utils": "^0.8.8"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@rollup/plugin-babel": "^6.0.4",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"jest-styled-components": "^7.2.0",
|
|
55
55
|
"js-file-download": "^0.4.12",
|
|
56
56
|
"postcss": "^8.5.3",
|
|
57
|
-
"ramda": "^0.
|
|
57
|
+
"ramda": "^0.31.3",
|
|
58
58
|
"react": "^18.3.1",
|
|
59
59
|
"react-dom": "^18.3.1",
|
|
60
60
|
"react-hook-form": "^7.56.1",
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
"rollup-plugin-delete": "^2.2.0",
|
|
63
63
|
"rollup-plugin-postcss": "^4.0.2",
|
|
64
64
|
"storybook": "^8.6.14",
|
|
65
|
-
"styled-components": "6.1.
|
|
66
|
-
"ts-jest": "29.
|
|
65
|
+
"styled-components": "6.1.19",
|
|
66
|
+
"ts-jest": "29.4.0",
|
|
67
67
|
"ts-node": "10.9.2",
|
|
68
68
|
"tsc-watch": "^6.2.1",
|
|
69
69
|
"typescript": "~5.8.3"
|