@equinor/eds-data-grid-react 0.9.0 → 0.9.1
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 +25 -1
- package/dist/esm/components/TableRow.js +26 -1
- package/package.json +21 -25
|
@@ -521,9 +521,33 @@ function TableRow({
|
|
|
521
521
|
rowClass,
|
|
522
522
|
rowStyle
|
|
523
523
|
} = useTableContext();
|
|
524
|
+
const isMountedRef = react.useRef(true);
|
|
525
|
+
|
|
526
|
+
// Set mounted flag to false on unmount to prevent measurements during cleanup
|
|
527
|
+
react.useEffect(() => {
|
|
528
|
+
return () => {
|
|
529
|
+
isMountedRef.current = false;
|
|
530
|
+
};
|
|
531
|
+
}, []);
|
|
532
|
+
|
|
533
|
+
// Create a stable ref callback that guards against calls during unmount
|
|
534
|
+
const measureRef = react.useCallback(node => {
|
|
535
|
+
// Only measure if we have a node, the component is still mounted, and we have a virtualizer
|
|
536
|
+
if (node && isMountedRef.current && rowVirtualizer) {
|
|
537
|
+
try {
|
|
538
|
+
rowVirtualizer.measureElement(node);
|
|
539
|
+
} catch (error) {
|
|
540
|
+
// Silently catch any errors during measurement to prevent crashes
|
|
541
|
+
// This can happen if the virtualizer is in an inconsistent state during unmount
|
|
542
|
+
if (process.env.NODE_ENV === 'development') {
|
|
543
|
+
console.warn('Failed to measure element during virtualization:', error);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}, [rowVirtualizer]);
|
|
524
548
|
return /*#__PURE__*/jsxRuntime.jsx(StyledTableRow, {
|
|
525
549
|
"data-index": virtualItem?.index,
|
|
526
|
-
ref:
|
|
550
|
+
ref: measureRef //measure dynamic row height safely
|
|
527
551
|
,
|
|
528
552
|
style: {
|
|
529
553
|
...(rowStyle?.(row) ?? {})
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Table } from '@equinor/eds-core-react';
|
|
2
|
+
import { useRef, useEffect, useCallback } from 'react';
|
|
2
3
|
import styled from 'styled-components';
|
|
3
4
|
import { useTableContext } from '../EdsDataGridContext.js';
|
|
4
5
|
import { TableBodyCell } from './TableBodyCell.js';
|
|
@@ -17,9 +18,33 @@ function TableRow({
|
|
|
17
18
|
rowClass,
|
|
18
19
|
rowStyle
|
|
19
20
|
} = useTableContext();
|
|
21
|
+
const isMountedRef = useRef(true);
|
|
22
|
+
|
|
23
|
+
// Set mounted flag to false on unmount to prevent measurements during cleanup
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
return () => {
|
|
26
|
+
isMountedRef.current = false;
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
|
|
30
|
+
// Create a stable ref callback that guards against calls during unmount
|
|
31
|
+
const measureRef = useCallback(node => {
|
|
32
|
+
// Only measure if we have a node, the component is still mounted, and we have a virtualizer
|
|
33
|
+
if (node && isMountedRef.current && rowVirtualizer) {
|
|
34
|
+
try {
|
|
35
|
+
rowVirtualizer.measureElement(node);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
// Silently catch any errors during measurement to prevent crashes
|
|
38
|
+
// This can happen if the virtualizer is in an inconsistent state during unmount
|
|
39
|
+
if (process.env.NODE_ENV === 'development') {
|
|
40
|
+
console.warn('Failed to measure element during virtualization:', error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, [rowVirtualizer]);
|
|
20
45
|
return /*#__PURE__*/jsx(StyledTableRow, {
|
|
21
46
|
"data-index": virtualItem?.index,
|
|
22
|
-
ref:
|
|
47
|
+
ref: measureRef //measure dynamic row height safely
|
|
23
48
|
,
|
|
24
49
|
style: {
|
|
25
50
|
...(rowStyle?.(row) ?? {})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/eds-data-grid-react",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
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",
|
|
@@ -23,50 +23,46 @@
|
|
|
23
23
|
"@tanstack/react-table": "^8.21.3",
|
|
24
24
|
"@tanstack/react-virtual": "^3.13.12",
|
|
25
25
|
"@equinor/eds-icons": "^0.22.0",
|
|
26
|
-
"@equinor/eds-
|
|
27
|
-
"@equinor/eds-
|
|
26
|
+
"@equinor/eds-utils": "^0.9.0",
|
|
27
|
+
"@equinor/eds-tokens": "0.10.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@rollup/plugin-babel": "^6.0.4",
|
|
31
|
-
"@rollup/plugin-commonjs": "^28.0.
|
|
31
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
32
32
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
33
|
-
"@storybook/addon-a11y": "^
|
|
34
|
-
"@storybook/addon-
|
|
35
|
-
"@storybook/addon-
|
|
36
|
-
"@storybook/
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@storybook/preview-api": "^8.6.12",
|
|
40
|
-
"@storybook/react": "^8.6.12",
|
|
41
|
-
"@storybook/react-vite": "^8.6.12",
|
|
42
|
-
"@testing-library/dom": "^10.4.0",
|
|
43
|
-
"@testing-library/jest-dom": "^6.6.3",
|
|
33
|
+
"@storybook/addon-a11y": "^9.1.5",
|
|
34
|
+
"@storybook/addon-docs": "^9.1.5",
|
|
35
|
+
"@storybook/addon-links": "^9.1.5",
|
|
36
|
+
"@storybook/react-vite": "^9.1.5",
|
|
37
|
+
"@testing-library/dom": "^10.4.1",
|
|
38
|
+
"@testing-library/jest-dom": "^6.8.0",
|
|
44
39
|
"@testing-library/react": "16.3.0",
|
|
45
40
|
"@testing-library/user-event": "^14.6.1",
|
|
46
41
|
"@types/jest": "^29.5.14",
|
|
47
|
-
"@types/node": "^22.
|
|
42
|
+
"@types/node": "^22.18.0",
|
|
48
43
|
"@types/ramda": "^0.30.2",
|
|
49
|
-
"@types/react": "^18.3.
|
|
50
|
-
"@types/react-dom": "^18.3.
|
|
44
|
+
"@types/react": "^18.3.24",
|
|
45
|
+
"@types/react-dom": "^18.3.7",
|
|
51
46
|
"babel-plugin-styled-components": "^2.1.4",
|
|
52
47
|
"jest": "29.7.0",
|
|
53
48
|
"jest-environment-jsdom": "29.7.0",
|
|
54
49
|
"jest-styled-components": "^7.2.0",
|
|
55
50
|
"js-file-download": "^0.4.12",
|
|
56
|
-
"postcss": "^8.5.
|
|
51
|
+
"postcss": "^8.5.6",
|
|
57
52
|
"ramda": "^0.31.3",
|
|
58
53
|
"react": "^18.3.1",
|
|
59
54
|
"react-dom": "^18.3.1",
|
|
60
|
-
"react-hook-form": "^7.
|
|
61
|
-
"rollup": "^4.
|
|
55
|
+
"react-hook-form": "^7.62.0",
|
|
56
|
+
"rollup": "^4.50.0",
|
|
62
57
|
"rollup-plugin-delete": "^2.2.0",
|
|
63
58
|
"rollup-plugin-postcss": "^4.0.2",
|
|
64
|
-
"storybook": "^
|
|
59
|
+
"storybook": "^9.1.5",
|
|
65
60
|
"styled-components": "6.1.19",
|
|
66
61
|
"ts-jest": "29.4.0",
|
|
67
62
|
"ts-node": "10.9.2",
|
|
68
|
-
"tsc-watch": "^6.
|
|
69
|
-
"typescript": "~5.8.3"
|
|
63
|
+
"tsc-watch": "^6.3.1",
|
|
64
|
+
"typescript": "~5.8.3",
|
|
65
|
+
"eslint-plugin-storybook": "9.1.5"
|
|
70
66
|
},
|
|
71
67
|
"homepage": "https://eds.equinor.com",
|
|
72
68
|
"repository": {
|
|
@@ -86,7 +82,7 @@
|
|
|
86
82
|
],
|
|
87
83
|
"scripts": {
|
|
88
84
|
"build": "rollup -c --bundleConfigAsCjs && tsc -p tsconfig.build.json",
|
|
89
|
-
"test": "tsc -p tsconfig.
|
|
85
|
+
"test": "tsc -p tsconfig.test.json && jest",
|
|
90
86
|
"test:watch": "tsc-watch -p tsconfig.test.json --onFirstSuccess \"jest --watch\"",
|
|
91
87
|
"test:update-snapshots": "jest --updateSnapshot",
|
|
92
88
|
"storybook": "storybook dev -p 9000 --ci",
|