@linzjs/step-ag-grid 32.5.0 → 32.6.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.
Files changed (49) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/utils/isChromatic.d.ts +11 -0
  3. package/dist/step-ag-grid.cjs +25 -9
  4. package/dist/step-ag-grid.cjs.map +1 -1
  5. package/dist/step-ag-grid.esm.js +24 -10
  6. package/dist/step-ag-grid.esm.js.map +1 -1
  7. package/package.json +16 -16
  8. package/src/components/Grid.tsx +1 -1
  9. package/src/contexts/GridContextProvider.tsx +1 -1
  10. package/src/index.ts +1 -0
  11. package/src/stories/components/ActionButton.stories.tsx +0 -1
  12. package/src/stories/grid/GridCopy.stories.tsx +1 -6
  13. package/src/stories/grid/GridDragRow.stories.tsx +1 -6
  14. package/src/stories/grid/GridFilterButtons.stories.tsx +0 -5
  15. package/src/stories/grid/GridFilterColumnsMultiSelect.stories.tsx +0 -5
  16. package/src/stories/grid/GridInlineText.stories.tsx +0 -5
  17. package/src/stories/grid/GridNoRowsOverlay.stories.tsx +0 -5
  18. package/src/stories/grid/GridNonEditableRow.stories.tsx +0 -5
  19. package/src/stories/grid/GridPinnedRow.stories.tsx +1 -6
  20. package/src/stories/grid/GridPopoutContextMenu.stories.tsx +0 -5
  21. package/src/stories/grid/GridPopoutEditGeneric.stories.tsx +0 -5
  22. package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +0 -5
  23. package/src/stories/grid/GridPopoverEditBearing.stories.tsx +0 -5
  24. package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +0 -5
  25. package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +0 -5
  26. package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +0 -5
  27. package/src/stories/grid/GridReadOnly.stories.tsx +1 -6
  28. package/src/stories/grid/GridSorting.stories.tsx +1 -6
  29. package/src/stories/grid/GridViewList.stories.tsx +1 -6
  30. package/src/stories/grid/GridViewSelectableList.stories.tsx +1 -6
  31. package/src/stories/grid/gridAutosize/GridAutoSize.stories.tsx +28 -11
  32. package/src/stories/grid/gridAutosize/GridFitSize.stories.tsx +27 -11
  33. package/src/stories/grid/gridAutosize/GridFitSizeFlex.stories.tsx +27 -11
  34. package/src/stories/grid/gridFormInteraction/GridFormDropDownInteraction.stories.tsx +0 -1
  35. package/src/stories/grid/gridFormInteraction/GridFormEditBearingCorrectionInteraction.stories.tsx +0 -1
  36. package/src/stories/grid/gridFormInteraction/GridFormEditBearingInteraction.stories.tsx +0 -1
  37. package/src/stories/grid/gridFormInteraction/GridFormMultiSelectGridInteraction.stories.tsx +0 -1
  38. package/src/stories/grid/gridFormInteraction/GridFormMultiSelectInteraction.stories.tsx +0 -1
  39. package/src/stories/grid/gridFormInteraction/GridFormPopoverMenuInteraction.stories.tsx +0 -1
  40. package/src/stories/grid/gridFormStatic/GridFormDropDown.stories.tsx +0 -1
  41. package/src/stories/grid/gridFormStatic/GridFormEditBearing.stories.tsx +0 -1
  42. package/src/stories/grid/gridFormStatic/GridFormEditBearingCorrection.stories.tsx +0 -1
  43. package/src/stories/grid/gridFormStatic/GridFormMessage.stories.tsx +0 -1
  44. package/src/stories/grid/gridFormStatic/GridFormMultiSelect.stories.tsx +0 -1
  45. package/src/stories/grid/gridFormStatic/GridFormPopoverMenu.stories.tsx +0 -1
  46. package/src/stories/grid/gridFormStatic/GridFormTextArea.stories.tsx +0 -1
  47. package/src/stories/grid/gridFormStatic/GridFormTextInput.stories.tsx +0 -1
  48. package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +0 -5
  49. package/src/utils/isChromatic.tsx +30 -0
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@linzjs/step-ag-grid",
3
3
  "repository": "github:linz/step-ag-grid.git",
4
4
  "license": "MIT",
5
- "version": "32.5.0",
5
+ "version": "32.6.0",
6
6
  "keywords": [
7
7
  "aggrid",
8
8
  "ag-grid",
@@ -77,17 +77,17 @@
77
77
  "devDependencies": {
78
78
  "@chromatic-com/storybook": "^5.3.0",
79
79
  "@linzjs/lui": "^24.20.0",
80
- "@linzjs/windows": "^13.0.0",
80
+ "@linzjs/windows": "^15.0.0",
81
81
  "@rollup/plugin-commonjs": "^29.0.3",
82
82
  "@rollup/plugin-json": "^6.1.0",
83
83
  "@rollup/plugin-node-resolve": "^16.0.3",
84
84
  "rollup-plugin-esbuild": "^6.2.1",
85
- "@storybook/addon-docs": "^10.5.7",
86
- "@storybook/addon-links": "^10.5.7",
87
- "@storybook/react-vite": "^10.5.7",
85
+ "@storybook/addon-docs": "^10.5.10",
86
+ "@storybook/addon-links": "^10.5.10",
87
+ "@storybook/react-vite": "^10.5.10",
88
88
  "@testing-library/dom": "^10.4.1",
89
- "@testing-library/react": "^16.3.2",
90
- "@testing-library/user-event": "^14.6.3",
89
+ "@testing-library/react": "16.3.2",
90
+ "@testing-library/user-event": "^14.6.6",
91
91
  "@types/debounce-promise": "^3.1.9",
92
92
  "@types/jest": "^30.0.0",
93
93
  "@types/jsdom": "^28.0.3",
@@ -95,29 +95,29 @@
95
95
  "@types/node": "^24.13.3",
96
96
  "@types/react": "^18.3.31",
97
97
  "@types/react-dom": "^18.3.7",
98
- "@vitejs/plugin-react": "^6.0.5",
99
- "@vitest/ui": "^4.1.10",
98
+ "@vitejs/plugin-react": "6.0.5",
99
+ "@vitest/ui": "^4.1.11",
100
100
  "chromatic": "^17.8.0",
101
101
  "cross-env": "^10.1.0",
102
102
  "husky": "^9.1.7",
103
103
  "jsdom": "29.1.1",
104
104
  "lodash-es": "^4.18.1",
105
105
  "npm-run-all": "^4.1.5",
106
- "oxfmt": "^0.62.0",
107
- "oxlint": "^1.77.0",
106
+ "oxfmt": "^0.64.0",
107
+ "oxlint": "^1.79.0",
108
108
  "postcss": "^8.5.26",
109
109
  "postcss-scss": "^4.0.9",
110
110
  "react": ">=19",
111
111
  "react-dom": "^19.2.8",
112
- "rollup": "^4.62.4",
112
+ "rollup": "4.62.5",
113
113
  "rollup-plugin-copy": "^3.5.0",
114
114
  "rollup-plugin-peer-deps-external": "^2.2.4",
115
115
  "rollup-plugin-postcss": "^4.0.2",
116
- "sass": "^1.102.0",
117
- "storybook": "^10.5.7",
116
+ "sass": "^1.103.1",
117
+ "storybook": "^10.5.10",
118
118
  "typescript": "^7.0.2",
119
- "vite": "^8.2.1",
120
- "vitest": "^4.1.10"
119
+ "vite": "^8.2.2",
120
+ "vitest": "^4.1.11"
121
121
  },
122
122
  "husky": {
123
123
  "hooks": {
@@ -28,13 +28,13 @@ import {
28
28
  ValueFormatterParams,
29
29
  } from 'ag-grid-community';
30
30
  import { AgGridReact } from 'ag-grid-react';
31
- import isChromatic from 'chromatic/isChromatic';
32
31
  import clsx from 'clsx';
33
32
  import { defer, delay, difference, isEmpty, last, omit, xorBy } from 'lodash-es';
34
33
  import { ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
35
34
 
36
35
  import { AutoSizeColumnsResult, StartCellEditingProps, useGridContext } from '../contexts/GridContext';
37
36
  import { GridUpdatingContext } from '../contexts/GridUpdatingContext';
37
+ import { isChromatic } from '../utils/isChromatic';
38
38
  import { isStorybook } from '../utils/storybook';
39
39
  import { useInterval } from '../utils/useInterval';
40
40
  import { compareNaturalInsensitive, fnOrVar, isNotEmpty } from '../utils/util';
@@ -9,7 +9,6 @@ import {
9
9
  ProcessCellForExportParams,
10
10
  RowNode,
11
11
  } from 'ag-grid-community';
12
- import isChromatic from 'chromatic/isChromatic';
13
12
  import debounce from 'debounce-promise';
14
13
  import { compact, defer, delay, difference, filter, isEmpty, last, pull, remove, sortBy, sumBy } from 'lodash-es';
15
14
  import { PropsWithChildren, ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
@@ -17,6 +16,7 @@ import { PropsWithChildren, ReactElement, useCallback, useContext, useEffect, us
17
16
  import { agGridSelectRowColId, ColDefT, GridBaseRow } from '../components';
18
17
  import { GridCellFillerColId, isGridCellFiller } from '../components/GridCellFiller';
19
18
  import { getColId, isFlexColumn } from '../components/gridUtil';
19
+ import { isChromatic } from '../utils/isChromatic';
20
20
  import { fnOrVar, isNotEmpty, sanitiseFileName, wait } from '../utils/util';
21
21
  import { waitForCondition } from '../utils/waitForCondition';
22
22
  import { AutoSizeColumnsProps, AutoSizeColumnsResult, GridContext, GridFilterExternal } from './GridContext';
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export * from './react-menu3/index';
14
14
  export * from './react-menu3/types';
15
15
  export * from './utils/bearing';
16
16
  export * from './utils/deferredPromise';
17
+ export * from './utils/isChromatic';
17
18
  export * from './utils/textMatcher';
18
19
  export * from './utils/textValidator';
19
20
  export * from './utils/util';
@@ -1,5 +1,4 @@
1
1
  import '@linzjs/lui/dist/scss/base.scss';
2
- import '@linzjs/lui/dist/fonts';
3
2
 
4
3
  import { Meta, StoryFn } from '@storybook/react-vite';
5
4
  import { useCallback } from 'react';
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { LuiMessagingContextProvider } from '@linzjs/lui';
7
2
  import { Meta, StoryFn } from '@storybook/react-vite';
8
3
  import { useMemo, useState } from 'react';
@@ -45,7 +40,7 @@ export default {
45
40
  decorators: [
46
41
  (Story) => (
47
42
  <LuiMessagingContextProvider version="v2">
48
- <div style={{ maxWidth: 1024, height: '80vh', display: 'flex', flexDirection: 'column' }}>
43
+ <div style={{ width: 1024, height: '80vh', display: 'flex', flexDirection: 'column' }}>
49
44
  <GridUpdatingContextProvider>
50
45
  <GridContextProvider>
51
46
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useCallback, useMemo, useState } from 'react';
8
3
 
@@ -39,7 +34,7 @@ export default {
39
34
  },
40
35
  decorators: [
41
36
  (Story) => (
42
- <div style={{ maxWidth: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
37
+ <div style={{ width: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
43
38
  <GridUpdatingContextProvider>
44
39
  <GridContextProvider>
45
40
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import {
8
3
  createCheckboxMultiFilterParams,
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import type { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useCallback, useContext, useMemo, useState } from 'react';
8
3
  import { expect, screen, userEvent, within } from 'storybook/test';
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { expect, within } from 'storybook/test';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { GridPopoverEditDropDown } from '../../components/gridPopoverEdit/GridPopoverEditDropDown';
8
3
  import { GridPopoverTextArea } from '../../components/gridPopoverEdit/GridPopoverTextArea';
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -33,7 +28,7 @@ export default {
33
28
  },
34
29
  decorators: [
35
30
  (Story) => (
36
- <div style={{ maxWidth: 1024, height: 260, display: 'flex', flexDirection: 'column' }}>
31
+ <div style={{ width: 1024, height: 260, display: 'flex', flexDirection: 'column' }}>
37
32
  <GridUpdatingContextProvider>
38
33
  <GridContextProvider>
39
34
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { ReactElement, useCallback, useContext, useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useCallback, useContext, useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useCallback, useMemo, useState } from 'react';
8
3
 
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { isEmpty, partition } from 'lodash-es';
8
3
  import { useMemo, useState } from 'react';
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { countBy, mergeWith, pull, range, union } from 'lodash-es';
8
3
  import { useMemo, useState } from 'react';
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { ReactElement, useCallback, useMemo, useState } from 'react';
8
3
  import { expect, fn, screen, userEvent } from 'storybook/test';
@@ -51,7 +46,7 @@ export default {
51
46
  },
52
47
  decorators: [
53
48
  (Story) => (
54
- <div style={{ maxWidth: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
49
+ <div style={{ width: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
55
50
  <GridUpdatingContextProvider>
56
51
  <GridContextProvider>
57
52
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
  import { expect } from 'storybook/test';
@@ -44,7 +39,7 @@ export default {
44
39
  },
45
40
  decorators: [
46
41
  (Story) => (
47
- <div style={{ maxWidth: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
42
+ <div style={{ width: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
48
43
  <GridUpdatingContextProvider>
49
44
  <GridContextProvider>
50
45
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -29,7 +24,7 @@ export default {
29
24
  },
30
25
  decorators: [
31
26
  (Story) => (
32
- <div style={{ maxWidth: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
27
+ <div style={{ width: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
33
28
  <GridUpdatingContextProvider>
34
29
  <GridContextProvider>
35
30
  <Story />
@@ -1,8 +1,3 @@
1
- import '../../styles/GridTheme.scss';
2
- import '../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
8
3
 
@@ -29,7 +24,7 @@ export default {
29
24
  },
30
25
  decorators: [
31
26
  (Story) => (
32
- <div style={{ maxWidth: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
27
+ <div style={{ width: 1024, height: 400, display: 'flex', flexDirection: 'column' }}>
33
28
  <GridUpdatingContextProvider>
34
29
  <GridContextProvider>
35
30
  <Story />
@@ -1,12 +1,10 @@
1
- import '../../../styles/GridTheme.scss';
2
- import '../../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
3
+ import { expect } from 'storybook/test';
8
4
 
9
5
  import { ColDefT, Grid, GridCell, GridContextProvider, GridProps, GridUpdatingContextProvider } from '../../..';
6
+ import { ChromaticAllowGridAutosize } from '../../../utils/isChromatic';
7
+ import { findQuick } from '../../../utils/__tests__/testQuick';
10
8
  import { waitForGridReady } from '../../../utils/__tests__/storybookTestUtil';
11
9
  import { FormTest, IFormTestRow } from '../FormTest';
12
10
 
@@ -19,12 +17,15 @@ export default {
19
17
  },
20
18
  decorators: [
21
19
  (Story) => (
22
- <GridUpdatingContextProvider>
23
- <GridContextProvider>
24
- <Story />
25
- </GridContextProvider>
26
- </GridUpdatingContextProvider>
20
+ <div style={{ width: 1024, height: 600, display: 'flex', flexDirection: 'column' }}>
21
+ <GridUpdatingContextProvider>
22
+ <GridContextProvider>
23
+ <Story />
24
+ </GridContextProvider>
25
+ </GridUpdatingContextProvider>
26
+ </div>
27
27
  ),
28
+ ChromaticAllowGridAutosize,
28
29
  ],
29
30
  } as Meta<typeof Grid>;
30
31
 
@@ -81,4 +82,20 @@ const GridPopoutEditGenericTemplate: StoryFn<typeof Grid<IFormTestRow>> = (props
81
82
  };
82
83
 
83
84
  export const _AutoSize = GridPopoutEditGenericTemplate.bind({});
84
- _AutoSize.play = waitForGridReady;
85
+ _AutoSize.play = async (context) => {
86
+ await waitForGridReady(context);
87
+ const { canvasElement } = context;
88
+
89
+ const idHeader = await findQuick({ selector: '.ag-header-cell[col-id="id"]' }, canvasElement);
90
+ const nameHeader = await findQuick({ selector: '.ag-header-cell[col-id="name"]' }, canvasElement);
91
+ const headerViewport = await findQuick({ selector: '.ag-header-viewport' }, canvasElement);
92
+
93
+ const idWidth = idHeader.getBoundingClientRect().width;
94
+ const nameWidth = nameHeader.getBoundingClientRect().width;
95
+ const availableWidth = headerViewport.getBoundingClientRect().width;
96
+
97
+ // id has no flex, so it autosizes to its short content ("Id" / "1000") rather than filling space
98
+ await expect(idWidth).toBeLessThan(150);
99
+ // name has flex: 1, so it flexes to consume all remaining space
100
+ await expect(Math.abs(idWidth + nameWidth - availableWidth)).toBeLessThan(4);
101
+ };
@@ -1,12 +1,10 @@
1
- import '../../../styles/GridTheme.scss';
2
- import '../../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
3
+ import { expect } from 'storybook/test';
8
4
 
9
5
  import { ColDefT, Grid, GridCell, GridContextProvider, GridProps, GridUpdatingContextProvider } from '../../..';
6
+ import { ChromaticAllowGridAutosize } from '../../../utils/isChromatic';
7
+ import { findQuick } from '../../../utils/__tests__/testQuick';
10
8
  import { waitForGridReady } from '../../../utils/__tests__/storybookTestUtil';
11
9
  import { FormTest, IFormTestRow } from '../FormTest';
12
10
 
@@ -19,12 +17,15 @@ export default {
19
17
  },
20
18
  decorators: [
21
19
  (Story) => (
22
- <GridUpdatingContextProvider>
23
- <GridContextProvider>
24
- <Story />
25
- </GridContextProvider>
26
- </GridUpdatingContextProvider>
20
+ <div style={{ width: 1024, height: 600, display: 'flex', flexDirection: 'column' }}>
21
+ <GridUpdatingContextProvider>
22
+ <GridContextProvider>
23
+ <Story />
24
+ </GridContextProvider>
25
+ </GridUpdatingContextProvider>
26
+ </div>
27
27
  ),
28
+ ChromaticAllowGridAutosize,
28
29
  ],
29
30
  } as Meta<typeof Grid>;
30
31
 
@@ -81,4 +82,19 @@ const GridPopoutEditGenericTemplate: StoryFn<typeof Grid<IFormTestRow>> = (props
81
82
  };
82
83
 
83
84
  export const _FitSize = GridPopoutEditGenericTemplate.bind({});
84
- _FitSize.play = waitForGridReady;
85
+ _FitSize.play = async (context) => {
86
+ await waitForGridReady(context);
87
+ const { canvasElement } = context;
88
+
89
+ const idHeader = await findQuick({ selector: '.ag-header-cell[col-id="id"]' }, canvasElement);
90
+ const nameHeader = await findQuick({ selector: '.ag-header-cell[col-id="name"]' }, canvasElement);
91
+ const headerViewport = await findQuick({ selector: '.ag-header-viewport' }, canvasElement);
92
+
93
+ const idWidth = idHeader.getBoundingClientRect().width;
94
+ const nameWidth = nameHeader.getBoundingClientRect().width;
95
+ const availableWidth = headerViewport.getBoundingClientRect().width;
96
+
97
+ // Both columns default to flex: 1 under sizeColumns='fit', so they should split the container evenly
98
+ await expect(Math.abs(idWidth - nameWidth)).toBeLessThanOrEqual(2);
99
+ await expect(Math.abs(idWidth + nameWidth - availableWidth)).toBeLessThanOrEqual(4);
100
+ };
@@ -1,12 +1,10 @@
1
- import '../../../styles/GridTheme.scss';
2
- import '../../../styles/index.scss';
3
- import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
-
6
1
  import { Meta, StoryFn } from '@storybook/react-vite';
7
2
  import { useMemo, useState } from 'react';
3
+ import { expect } from 'storybook/test';
8
4
 
9
5
  import { ColDefT, Grid, GridCell, GridContextProvider, GridProps, GridUpdatingContextProvider } from '../../..';
6
+ import { ChromaticAllowGridAutosize } from '../../../utils/isChromatic';
7
+ import { findQuick } from '../../../utils/__tests__/testQuick';
10
8
  import { waitForGridReady } from '../../../utils/__tests__/storybookTestUtil';
11
9
  import { FormTest, IFormTestRow } from '../FormTest';
12
10
 
@@ -19,12 +17,15 @@ export default {
19
17
  },
20
18
  decorators: [
21
19
  (Story) => (
22
- <GridUpdatingContextProvider>
23
- <GridContextProvider>
24
- <Story />
25
- </GridContextProvider>
26
- </GridUpdatingContextProvider>
20
+ <div style={{ width: 1024, height: 600, display: 'flex', flexDirection: 'column' }}>
21
+ <GridUpdatingContextProvider>
22
+ <GridContextProvider>
23
+ <Story />
24
+ </GridContextProvider>
25
+ </GridUpdatingContextProvider>
26
+ </div>
27
27
  ),
28
+ ChromaticAllowGridAutosize,
28
29
  ],
29
30
  } as Meta<typeof Grid>;
30
31
 
@@ -83,4 +84,19 @@ const GridPopoutEditGenericTemplate: StoryFn<typeof Grid<IFormTestRow>> = (props
83
84
  };
84
85
 
85
86
  export const _FitSizeFlex = GridPopoutEditGenericTemplate.bind({});
86
- _FitSizeFlex.play = waitForGridReady;
87
+ _FitSizeFlex.play = async (context) => {
88
+ await waitForGridReady(context);
89
+ const { canvasElement } = context;
90
+
91
+ const idHeader = await findQuick({ selector: '.ag-header-cell[col-id="id"]' }, canvasElement);
92
+ const nameHeader = await findQuick({ selector: '.ag-header-cell[col-id="name"]' }, canvasElement);
93
+ const headerViewport = await findQuick({ selector: '.ag-header-viewport' }, canvasElement);
94
+
95
+ const idWidth = idHeader.getBoundingClientRect().width;
96
+ const nameWidth = nameHeader.getBoundingClientRect().width;
97
+ const availableWidth = headerViewport.getBoundingClientRect().width;
98
+
99
+ // id has flex: 2, name has flex: 1, so id should be twice the width of name
100
+ await expect(Math.abs(idWidth - nameWidth * 2)).toBeLessThan(2);
101
+ await expect(Math.abs(idWidth + nameWidth - availableWidth)).toBeLessThan(4);
102
+ };
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { Meta, StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext, GridPopoverContextType } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { Meta, StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext, GridPopoverContextType } from '../../../contexts/GridPopoverContext';
@@ -1,7 +1,6 @@
1
1
  import '../../../react-menu3/styles/index.scss';
2
2
  import '../../../styles/index.scss';
3
3
  import '@linzjs/lui/dist/scss/base.scss';
4
- import '@linzjs/lui/dist/fonts';
5
4
 
6
5
  import { Meta, StoryFn } from '@storybook/react-vite';
7
6
  import { GridPopoverContext, GridPopoverContextType } from '../../../contexts/GridPopoverContext';