@linzjs/step-ag-grid 20.0.0 → 21.0.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.
Files changed (183) hide show
  1. package/dist/index.css +3 -4
  2. package/dist/src/components/ComponentLoadingWrapper.d.ts +9 -9
  3. package/dist/src/components/Grid.d.ts +80 -80
  4. package/dist/src/components/GridCell.d.ts +63 -27
  5. package/dist/src/components/GridCell.test.d.ts +1 -1
  6. package/dist/src/components/GridCellFiller.d.ts +5 -4
  7. package/dist/src/components/GridCellMultiEditor.d.ts +18 -18
  8. package/dist/src/components/GridCellMultiSelectClassRules.d.ts +2 -2
  9. package/dist/src/components/GridIcon.d.ts +9 -9
  10. package/dist/src/components/GridLoadableCell.d.ts +1 -1
  11. package/dist/src/components/GridNoRowsOverlay.d.ts +9 -9
  12. package/dist/src/components/GridPopoverHook.d.ts +12 -12
  13. package/dist/src/components/GridWrapper.d.ts +5 -5
  14. package/dist/src/components/PostSortRowsHook.d.ts +11 -11
  15. package/dist/src/components/gridFilter/GridFilterButtons.d.ts +16 -16
  16. package/dist/src/components/gridFilter/GridFilterColumnsToggle.d.ts +5 -5
  17. package/dist/src/components/gridFilter/GridFilterDownloadCsvButton.d.ts +2 -2
  18. package/dist/src/components/gridFilter/GridFilterHeaderIconButton.d.ts +11 -11
  19. package/dist/src/components/gridFilter/GridFilterQuick.d.ts +5 -5
  20. package/dist/src/components/gridFilter/GridFilters.d.ts +2 -2
  21. package/dist/src/components/gridFilter/index.d.ts +7 -7
  22. package/dist/src/components/gridFilter/useGridFilter.d.ts +3 -3
  23. package/dist/src/components/gridForm/GridFormDropDown.d.ts +37 -37
  24. package/dist/src/components/gridForm/GridFormEditBearing.d.ts +12 -12
  25. package/dist/src/components/gridForm/GridFormMessage.d.ts +7 -7
  26. package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +36 -36
  27. package/dist/src/components/gridForm/GridFormMultiSelectGrid.d.ts +24 -24
  28. package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +36 -36
  29. package/dist/src/components/gridForm/GridFormSubComponentTextArea.d.ts +12 -12
  30. package/dist/src/components/gridForm/GridFormSubComponentTextInput.d.ts +11 -11
  31. package/dist/src/components/gridForm/GridFormTextArea.d.ts +14 -14
  32. package/dist/src/components/gridForm/GridFormTextInput.d.ts +14 -14
  33. package/dist/src/components/gridForm/index.d.ts +10 -10
  34. package/dist/src/components/gridHeader/GridHeaderSelect.d.ts +7 -7
  35. package/dist/src/components/gridHeader/index.d.ts +1 -1
  36. package/dist/src/components/gridHook/index.d.ts +1 -1
  37. package/dist/src/components/gridHook/useGridContextMenu.d.ts +19 -19
  38. package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.d.ts +5 -5
  39. package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.d.ts +5 -5
  40. package/dist/src/components/gridPopoverEdit/GridPopoverEditBearing.d.ts +16 -16
  41. package/dist/src/components/gridPopoverEdit/GridPopoverEditDropDown.d.ts +5 -5
  42. package/dist/src/components/gridPopoverEdit/GridPopoverMenu.d.ts +8 -8
  43. package/dist/src/components/gridPopoverEdit/GridPopoverMessage.d.ts +5 -5
  44. package/dist/src/components/gridPopoverEdit/GridPopoverTextArea.d.ts +5 -5
  45. package/dist/src/components/gridPopoverEdit/GridPopoverTextInput.d.ts +5 -5
  46. package/dist/src/components/gridPopoverEdit/index.d.ts +9 -9
  47. package/dist/src/components/gridRender/GridRenderGenericCell.d.ts +16 -37
  48. package/dist/src/components/gridRender/GridRenderPopoutMenuCell.d.ts +2 -2
  49. package/dist/src/components/gridRender/index.d.ts +2 -2
  50. package/dist/src/components/gridUtil.d.ts +3 -3
  51. package/dist/src/components/index.d.ts +18 -18
  52. package/dist/src/contexts/GridContext.d.ts +67 -67
  53. package/dist/src/contexts/GridContextProvider.d.ts +15 -15
  54. package/dist/src/contexts/GridContextProvider.test.d.ts +1 -1
  55. package/dist/src/contexts/GridPopoverContext.d.ts +15 -15
  56. package/dist/src/contexts/GridPopoverContextProvider.d.ts +7 -7
  57. package/dist/src/contexts/GridSubComponentContext.d.ts +10 -10
  58. package/dist/src/contexts/GridUpdatingContext.d.ts +8 -8
  59. package/dist/src/contexts/GridUpdatingContextProvider.d.ts +3 -3
  60. package/dist/src/index.d.ts +17 -17
  61. package/dist/src/lui/ActionButton.d.ts +20 -20
  62. package/dist/src/lui/FormError.d.ts +7 -7
  63. package/dist/src/lui/TextAreaInput.d.ts +11 -11
  64. package/dist/src/lui/TextInputFormatted.d.ts +10 -10
  65. package/dist/src/lui/reactUtils.d.ts +6 -6
  66. package/dist/src/lui/reactUtils.test.d.ts +1 -1
  67. package/dist/src/lui/stateDeferredHook.d.ts +4 -4
  68. package/dist/src/lui/timeoutHook.d.ts +14 -14
  69. package/dist/src/lui/timeoutHook.test.d.ts +1 -1
  70. package/dist/src/react-menu3/components/ControlledMenu.d.ts +8 -8
  71. package/dist/src/react-menu3/components/FocusableItem.d.ts +9 -9
  72. package/dist/src/react-menu3/components/Menu.d.ts +16 -16
  73. package/dist/src/react-menu3/components/MenuButton.d.ts +8 -8
  74. package/dist/src/react-menu3/components/MenuDivider.d.ts +3 -3
  75. package/dist/src/react-menu3/components/MenuGroup.d.ts +12 -12
  76. package/dist/src/react-menu3/components/MenuHeader.d.ts +4 -4
  77. package/dist/src/react-menu3/components/MenuItem.d.ts +59 -59
  78. package/dist/src/react-menu3/components/MenuList.d.ts +2 -2
  79. package/dist/src/react-menu3/components/MenuRadioGroup.d.ts +25 -25
  80. package/dist/src/react-menu3/components/SubMenu.d.ts +110 -110
  81. package/dist/src/react-menu3/contexts/EventHandlersContext.d.ts +7 -7
  82. package/dist/src/react-menu3/contexts/HoverItemContext.d.ts +2 -2
  83. package/dist/src/react-menu3/contexts/ItemSettingsContext.d.ts +5 -5
  84. package/dist/src/react-menu3/contexts/MenuListContext.d.ts +9 -9
  85. package/dist/src/react-menu3/contexts/MenuListItemContext.d.ts +11 -11
  86. package/dist/src/react-menu3/contexts/RadioGroupContext.d.ts +7 -7
  87. package/dist/src/react-menu3/contexts/SettingsContext.d.ts +20 -20
  88. package/dist/src/react-menu3/hooks/index.d.ts +9 -9
  89. package/dist/src/react-menu3/hooks/useBEM.d.ts +10 -10
  90. package/dist/src/react-menu3/hooks/useCombinedRef.d.ts +2 -2
  91. package/dist/src/react-menu3/hooks/useIsomorphicLayoutEffect.d.ts +3 -3
  92. package/dist/src/react-menu3/hooks/useItemEffect.d.ts +2 -2
  93. package/dist/src/react-menu3/hooks/useItemState.d.ts +7 -7
  94. package/dist/src/react-menu3/hooks/useItems.d.ts +7 -7
  95. package/dist/src/react-menu3/hooks/useMenuChange.d.ts +2 -2
  96. package/dist/src/react-menu3/hooks/useMenuState.d.ts +23 -14
  97. package/dist/src/react-menu3/hooks/useMenuStateAndFocus.d.ts +2 -2
  98. package/dist/src/react-menu3/index.d.ts +11 -11
  99. package/dist/src/react-menu3/positionUtils/getPositionHelpers.d.ts +11 -11
  100. package/dist/src/react-menu3/positionUtils/index.d.ts +3 -3
  101. package/dist/src/react-menu3/positionUtils/placeArrowHorizontal.d.ts +8 -8
  102. package/dist/src/react-menu3/positionUtils/placeArrowVertical.d.ts +8 -8
  103. package/dist/src/react-menu3/positionUtils/placeLeftorRight.d.ts +19 -19
  104. package/dist/src/react-menu3/positionUtils/placeToporBottom.d.ts +19 -19
  105. package/dist/src/react-menu3/positionUtils/positionContextMenu.d.ts +13 -13
  106. package/dist/src/react-menu3/positionUtils/positionMenu.d.ts +26 -26
  107. package/dist/src/react-menu3/style-utils/index.d.ts +11 -11
  108. package/dist/src/react-menu3/types.d.ts +401 -401
  109. package/dist/src/react-menu3/utils/constants.d.ts +54 -54
  110. package/dist/src/react-menu3/utils/index.d.ts +3 -3
  111. package/dist/src/react-menu3/utils/propTypes2.d.ts +56 -56
  112. package/dist/src/react-menu3/utils/utils.d.ts +37 -37
  113. package/dist/src/react-menu3/utils/withHovering.d.ts +7 -7
  114. package/dist/src/utils/bearing.d.ts +19 -19
  115. package/dist/src/utils/bearing.test.d.ts +1 -1
  116. package/dist/src/utils/deferredPromise.d.ts +5 -5
  117. package/dist/src/utils/storybookTestUtil.d.ts +3 -3
  118. package/dist/src/utils/testQuick.d.ts +62 -62
  119. package/dist/src/utils/testUtil.d.ts +46 -45
  120. package/dist/src/utils/textMatcher.d.ts +13 -13
  121. package/dist/src/utils/textMatcher.test.d.ts +1 -1
  122. package/dist/src/utils/textValidator.d.ts +18 -18
  123. package/dist/src/utils/textValidator.test.d.ts +1 -1
  124. package/dist/src/utils/util.d.ts +8 -8
  125. package/dist/src/utils/util.test.d.ts +1 -1
  126. package/dist/step-ag-grid.cjs.js +4651 -4651
  127. package/dist/step-ag-grid.cjs.js.map +1 -1
  128. package/dist/step-ag-grid.esm.js +4651 -4651
  129. package/dist/step-ag-grid.esm.js.map +1 -1
  130. package/dist/vite.config.d.ts +2 -0
  131. package/package.json +23 -22
  132. package/src/components/Grid.tsx +10 -9
  133. package/src/components/GridCell.test.tsx +2 -3
  134. package/src/components/GridCell.tsx +75 -23
  135. package/src/components/GridCellFiller.tsx +2 -1
  136. package/src/components/GridCellMultiEditor.tsx +9 -9
  137. package/src/components/GridCellMultiSelectClassRules.tsx +4 -4
  138. package/src/components/GridPopoverHook.tsx +4 -4
  139. package/src/components/PostSortRowsHook.ts +7 -7
  140. package/src/components/gridFilter/GridFilterButtons.tsx +6 -6
  141. package/src/components/gridFilter/GridFilterColumnsToggle.tsx +2 -5
  142. package/src/components/gridFilter/GridFilterDownloadCsvButton.tsx +1 -1
  143. package/src/components/gridFilter/useGridFilter.ts +1 -1
  144. package/src/components/gridForm/GridFormDropDown.tsx +9 -9
  145. package/src/components/gridForm/GridFormEditBearing.tsx +5 -5
  146. package/src/components/gridForm/GridFormMessage.tsx +4 -4
  147. package/src/components/gridForm/GridFormMultiSelect.tsx +9 -9
  148. package/src/components/gridForm/GridFormMultiSelectGrid.tsx +11 -11
  149. package/src/components/gridForm/GridFormPopoverMenu.tsx +13 -13
  150. package/src/components/gridForm/GridFormSubComponentTextArea.tsx +4 -4
  151. package/src/components/gridForm/GridFormSubComponentTextInput.tsx +4 -4
  152. package/src/components/gridForm/GridFormTextArea.tsx +6 -6
  153. package/src/components/gridForm/GridFormTextInput.tsx +7 -7
  154. package/src/components/gridHeader/GridHeaderSelect.tsx +10 -8
  155. package/src/components/gridHook/useGridContextMenu.tsx +8 -8
  156. package/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts +6 -6
  157. package/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.ts +6 -6
  158. package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +16 -16
  159. package/src/components/gridPopoverEdit/GridPopoverEditDropDown.ts +6 -6
  160. package/src/components/gridPopoverEdit/GridPopoverMenu.tsx +5 -5
  161. package/src/components/gridPopoverEdit/GridPopoverMessage.ts +5 -5
  162. package/src/components/gridPopoverEdit/GridPopoverTextArea.ts +5 -4
  163. package/src/components/gridPopoverEdit/GridPopoverTextInput.ts +5 -5
  164. package/src/components/gridRender/GridRenderGenericCell.tsx +6 -36
  165. package/src/contexts/GridContext.tsx +9 -9
  166. package/src/contexts/GridContextProvider.test.tsx +1 -1
  167. package/src/contexts/GridContextProvider.tsx +32 -36
  168. package/src/contexts/GridPopoverContext.tsx +6 -6
  169. package/src/stories/grid/GridDragRow.stories.tsx +13 -7
  170. package/src/stories/grid/GridNonEditableRow.stories.tsx +2 -3
  171. package/src/stories/grid/GridPopoutContextMenu.stories.tsx +2 -2
  172. package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +1 -1
  173. package/src/stories/grid/GridPopoverEditBearing.stories.tsx +2 -2
  174. package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +12 -3
  175. package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +2 -2
  176. package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +2 -2
  177. package/src/stories/grid/GridReadOnly.stories.tsx +6 -6
  178. package/src/stories/grid/GridViewList.stories.tsx +5 -7
  179. package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +3 -3
  180. package/src/styles/Grid.scss +3 -6
  181. package/src/utils/testUtil.ts +49 -7
  182. package/src/utils/textValidator.ts +5 -5
  183. package/src/utils/util.ts +1 -1
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfigExport;
2
+ export default _default;
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": "20.0.0",
5
+ "version": "21.0.1",
6
6
  "keywords": [
7
7
  "aggrid",
8
8
  "ag-grid",
@@ -28,8 +28,8 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@linzjs/lui": ">=21",
31
- "ag-grid-community": "^30",
32
- "ag-grid-react": "^30",
31
+ "ag-grid-community": "^31",
32
+ "ag-grid-react": "^31",
33
33
  "lodash-es": ">=4",
34
34
  "react": ">=18",
35
35
  "react-dom": ">=18"
@@ -51,7 +51,6 @@
51
51
  "stylelint": "stylelint src/**/*.scss src/**/*.css --fix",
52
52
  "css": "sass ./src/styles/index.scss:dist/index.css --no-source-map",
53
53
  "test": "jest",
54
- "eject": "react-scripts eject",
55
54
  "lint": "eslint ./src --ext .js,.ts,.tsx --fix --cache --ignore-path .gitignore",
56
55
  "storybook": "storybook dev -p 6006",
57
56
  "build-storybook": "storybook build",
@@ -80,18 +79,19 @@
80
79
  "devDependencies": {
81
80
  "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
82
81
  "@chromatic-com/storybook": "^1.3.5",
82
+ "@linzjs/lui": "^21.30.0",
83
83
  "@rollup/plugin-commonjs": "^25.0.7",
84
84
  "@rollup/plugin-json": "^6.1.0",
85
85
  "@rollup/plugin-node-resolve": "^15.2.3",
86
86
  "@semantic-release/changelog": "^6.0.3",
87
87
  "@semantic-release/git": "^10.0.1",
88
- "@storybook/addon-essentials": "^8.1.0",
89
- "@storybook/addon-interactions": "^8.1.0",
90
- "@storybook/preset-create-react-app": "^8.1.0",
91
- "@storybook/react": "^8.1.0",
92
- "@storybook/react-webpack5": "^8.1.0",
93
- "@storybook/test": "^8.1.0",
94
- "@storybook/test-runner": "^0.18.0",
88
+ "@storybook/addon-essentials": "^8.1.1",
89
+ "@storybook/addon-interactions": "^8.1.1",
90
+ "@storybook/addon-links": "^8.1.1",
91
+ "@storybook/react": "^8.1.1",
92
+ "@storybook/react-vite": "^8.1.1",
93
+ "@storybook/test": "^8.1.1",
94
+ "@storybook/test-runner": "^0.18.1",
95
95
  "@testing-library/dom": "^10.1.0",
96
96
  "@testing-library/jest-dom": "^6.4.5",
97
97
  "@testing-library/react": "^15.0.7",
@@ -104,8 +104,11 @@
104
104
  "@types/react": "^18.3.2",
105
105
  "@types/react-dom": "^18.3.0",
106
106
  "@types/uuid": "^9.0.8",
107
- "@typescript-eslint/eslint-plugin": "^7.9.0",
108
- "@typescript-eslint/parser": "^7.9.0",
107
+ "@typescript-eslint/eslint-plugin": "^7.10.0",
108
+ "@typescript-eslint/parser": "^7.10.0",
109
+ "@vitejs/plugin-react-swc": "^3.6.0",
110
+ "ag-grid-community": "^31",
111
+ "ag-grid-react": "^31",
109
112
  "babel-jest": "^29.7.0",
110
113
  "babel-preset-react-app": "^10.0.1",
111
114
  "chromatic": "^11.3.2",
@@ -133,8 +136,9 @@
133
136
  "postcss-loader": "^7.3.4",
134
137
  "postcss-scss": "^4.0.9",
135
138
  "prettier": "^3.2.5",
139
+ "react": ">=18",
136
140
  "react-app-polyfill": "^3.0.0",
137
- "react-scripts": "^5.0.1",
141
+ "react-dom": ">=18",
138
142
  "rollup": "^4.17.2",
139
143
  "rollup-plugin-copy": "^3.5.0",
140
144
  "rollup-plugin-peer-deps-external": "^2.2.4",
@@ -143,7 +147,7 @@
143
147
  "sass": "1.77.1",
144
148
  "sass-loader": "^14.2.1",
145
149
  "semantic-release": "^22.0.12",
146
- "storybook": "^8.1.0",
150
+ "storybook": "^8.1.1",
147
151
  "storybook-css-modules-preset": "^1.1.1",
148
152
  "style-loader": "^4.0.0",
149
153
  "stylelint": "15.11.0",
@@ -151,13 +155,10 @@
151
155
  "stylelint-config-standard": "^34.0.0",
152
156
  "stylelint-prettier": "^4.1.0",
153
157
  "stylelint-scss": "^5.3.2",
154
- "tsconfig-paths-webpack-plugin": "^4.1.0",
155
- "typescript": "^4.9.5",
156
- "@linzjs/lui": ">=21",
157
- "ag-grid-community": "^30",
158
- "ag-grid-react": "^30",
159
- "react": ">=18",
160
- "react-dom": ">=18"
158
+ "typescript": "^5.4.5",
159
+ "vite": "^5.2.11",
160
+ "vite-plugin-html": "^3.2.2",
161
+ "vite-tsconfig-paths": "^4.3.2"
161
162
  },
162
163
  "babel": {
163
164
  "presets": [
@@ -8,8 +8,8 @@ import {
8
8
  RowHighlightPosition,
9
9
  RowNode,
10
10
  } from "ag-grid-community";
11
- import { CellClassParams, EditableCallback, EditableCallbackParams } from "ag-grid-community/dist/lib/entities/colDef";
12
- import { GridOptions } from "ag-grid-community/dist/lib/entities/gridOptions";
11
+ import { CellClassParams, EditableCallback, EditableCallbackParams } from "ag-grid-community";
12
+ import { GridOptions } from "ag-grid-community";
13
13
  import {
14
14
  AgGridEvent,
15
15
  CellEvent,
@@ -18,7 +18,7 @@ import {
18
18
  RowDragEndEvent,
19
19
  RowDragMoveEvent,
20
20
  SelectionChangedEvent,
21
- } from "ag-grid-community/dist/lib/events";
21
+ } from "ag-grid-community";
22
22
  import { AgGridReact } from "ag-grid-react";
23
23
  import clsx from "clsx";
24
24
  import { defer, difference, isEmpty, last, omit, xorBy } from "lodash-es";
@@ -185,12 +185,12 @@ export const Grid = ({
185
185
  if (gridRendered === "empty") {
186
186
  if (!hasSetContentSizeEmpty.current && result && !hasSetContentSize.current) {
187
187
  hasSetContentSizeEmpty.current = true;
188
- params.onContentSize && params.onContentSize(result);
188
+ params.onContentSize?.(result);
189
189
  }
190
190
  } else if (gridRendered === "rows-visible") {
191
191
  if (result && !hasSetContentSize.current) {
192
192
  hasSetContentSize.current = true;
193
- params.onContentSize && params.onContentSize(result);
193
+ params.onContentSize?.(result);
194
194
  }
195
195
  } else {
196
196
  // It should be impossible to get here
@@ -219,7 +219,7 @@ export const Grid = ({
219
219
  needsAutoSize.current = true;
220
220
  }
221
221
  }
222
- if (needsAutoSize.current) {
222
+ if (needsAutoSize.current || (!hasSetContentSize.current && sizeColumns === "auto")) {
223
223
  needsAutoSize.current = false;
224
224
  setInitialContentSize();
225
225
  }
@@ -394,7 +394,7 @@ export const Grid = ({
394
394
  */
395
395
  const onGridReady = useCallback(
396
396
  (event: GridReadyEvent) => {
397
- setApis(event.api, event.columnApi, dataTestId);
397
+ setApis(event.api, dataTestId);
398
398
  event.api.showNoRowsOverlay();
399
399
  synchroniseExternallySelectedItemsToGrid();
400
400
  },
@@ -657,7 +657,7 @@ export const Grid = ({
657
657
 
658
658
  const moved = event.node.data;
659
659
  const target = event.overNode?.data;
660
- moved.id != target.id && //moved over a different row
660
+ moved.id !== target?.id && //moved over a different row
661
661
  event.node.rowIndex != targetIndex && //moved to a different index
662
662
  params.onRowDragEnd &&
663
663
  (await params.onRowDragEnd(moved, target, targetIndex));
@@ -686,8 +686,9 @@ export const Grid = ({
686
686
  {gridContextMenu.component}
687
687
  <div style={{ flex: 1 }} ref={gridDivRef}>
688
688
  <AgGridReact
689
+ reactiveCustomComponents={true}
689
690
  rowHeight={rowHeight}
690
- animateRows={params.animateRows}
691
+ animateRows={params.animateRows ?? false}
691
692
  rowClassRules={params.rowClassRules}
692
693
  getRowId={(params) => `${params.data.id}`}
693
694
  suppressRowClickSelection={true}
@@ -1,6 +1,5 @@
1
1
  import { GridBaseRow } from "./Grid";
2
- import { generateFilterGetter } from "./GridCell";
3
- import { RowValueGetterParams } from "./gridRender/GridRenderGenericCell";
2
+ import { generateFilterGetter, SAValueGetterParams } from "./GridCell";
4
3
 
5
4
  describe("GridCell", () => {
6
5
  test("generateFilterGetter returns passed filterValueGetter", () => {
@@ -25,7 +24,7 @@ describe("GridCell", () => {
25
24
  const filterGetter = generateFilterGetter(field, undefined, valueFormatter);
26
25
  expect(typeof filterGetter).toBe("function");
27
26
  if (typeof filterGetter !== "function") return;
28
- expect(filterGetter({ getValue: () => test.value } as any as RowValueGetterParams<GridBaseRow>)).toBe(
27
+ expect(filterGetter({ getValue: () => test.value } as any as SAValueGetterParams<GridBaseRow>)).toBe(
29
28
  test.expected,
30
29
  );
31
30
  });
@@ -1,6 +1,13 @@
1
1
  import { ColDef, ICellEditorParams, ICellRendererParams } from "ag-grid-community";
2
- import { SuppressKeyboardEventParams, ValueFormatterParams } from "ag-grid-community/dist/lib/entities/colDef";
3
- import { ReactElement, forwardRef, useContext } from "react";
2
+ import {
3
+ SuppressKeyboardEventParams,
4
+ ValueFormatterFunc,
5
+ ValueFormatterParams,
6
+ ValueGetterFunc,
7
+ ValueGetterParams,
8
+ EditableCallbackParams,
9
+ } from "ag-grid-community";
10
+ import { forwardRef, ReactElement, useContext } from "react";
4
11
 
5
12
  import { GridPopoverContextProvider } from "../contexts/GridPopoverContextProvider";
6
13
  import { GridUpdatingContext } from "../contexts/GridUpdatingContext";
@@ -9,12 +16,7 @@ import { GridBaseRow } from "./Grid";
9
16
  import { GridCellMultiSelectClassRules } from "./GridCellMultiSelectClassRules";
10
17
  import { GridIcon } from "./GridIcon";
11
18
  import { GridLoadableCell } from "./GridLoadableCell";
12
- import {
13
- GenericCellColDef,
14
- GenericCellRendererParams,
15
- RowValueFormatterParams,
16
- RowValueGetterParams,
17
- } from "./gridRender";
19
+ import { GenericCellColDef, GenericCellRendererParams } from "./gridRender";
18
20
 
19
21
  export interface GenericCellEditorProps<E> {
20
22
  multiEdit?: boolean;
@@ -22,15 +24,20 @@ export interface GenericCellEditorProps<E> {
22
24
  editorParams?: E;
23
25
  }
24
26
 
27
+ export interface SAICellRendererParams<TData = any, TValue = any, TContext = any>
28
+ extends Omit<ICellRendererParams<TData, TValue, TContext>, "data"> {
29
+ data: TData;
30
+ }
31
+
25
32
  export const GridCellRenderer = (props: ICellRendererParams) => {
26
33
  const { checkUpdating } = useContext(GridUpdatingContext);
27
34
  const colDef = props.colDef as ColDef;
28
35
 
29
36
  const rendererParams = colDef.cellRendererParams as GenericCellRendererParams<any> | undefined;
30
37
  const warningFn = rendererParams?.warning;
31
- let warningText = warningFn ? warningFn(props) : undefined;
38
+ let warningText = props.data !== undefined && warningFn ? warningFn(props) : undefined;
32
39
  const infoFn = rendererParams?.info;
33
- let infoText = infoFn ? infoFn(props) : undefined;
40
+ let infoText = props.data !== undefined && infoFn ? infoFn(props) : undefined;
34
41
  if (Array.isArray(warningText)) warningText = warningText.join("\n");
35
42
  if (Array.isArray(infoText)) infoText = infoText.join("\n");
36
43
 
@@ -56,9 +63,51 @@ export const GridCellRenderer = (props: ICellRendererParams) => {
56
63
  );
57
64
  };
58
65
 
66
+ export interface SAValueGetterParams<TData = any, TValue = any> extends Omit<ValueGetterParams<TData, TValue>, "data"> {
67
+ data: TData;
68
+ getValue: (field: string) => any;
69
+ }
70
+
71
+ export interface SAValueGetterFunc<TData = any, TValue = any> {
72
+ (params: SAValueGetterParams<TData, TValue>): TValue | null | undefined;
73
+ }
74
+
75
+ export interface SAEditableCallbackParams<TData = any, TValue = any>
76
+ extends Omit<EditableCallbackParams<TData, TValue>, "data"> {
77
+ data: TData;
78
+ }
79
+
80
+ export interface SAEditableCallback<TData = any, TValue = any> {
81
+ (params: SAEditableCallbackParams<TData, TValue>): boolean;
82
+ }
83
+
84
+ export interface SAValueFormatterParams<TData = any, TValue = any>
85
+ extends Omit<ValueFormatterParams<TData, TValue>, "data" | "value"> {
86
+ data: TData;
87
+ value: TValue;
88
+ }
89
+
90
+ export interface SAValueFormatterFunc<TData = any, TValue = any> {
91
+ (params: SAValueFormatterParams<TData, TValue>): string;
92
+ }
93
+
59
94
  // This is so that typescript retains the row type to pass to the GridCells
60
- export interface ColDefT<RowType extends GridBaseRow> extends ColDef {
61
- _?: RowType;
95
+ // @ts-ignore
96
+ export interface ColDefT<TData extends GridBaseRow, ValueType = any> extends ColDef<TData, ValueType> {
97
+ _?: TData;
98
+ editable?: boolean | SAEditableCallback<TData, ValueType>;
99
+ valueGetter?: string | SAValueGetterFunc<TData, ValueType>;
100
+ valueFormatter?: string | SAValueFormatterFunc<TData, ValueType>;
101
+ cellRenderer?: (props: SAICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined;
102
+ cellRendererParams?: {
103
+ singleClickEdit?: boolean;
104
+ rightHoverElement?: ReactElement;
105
+ originalCellRenderer?: any;
106
+ editAction?: (selectedRows: TData[]) => void;
107
+ shortcutKeys?: Record<string, () => void>;
108
+ warning?: (props: SAICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined;
109
+ info?: (props: SAICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined;
110
+ };
62
111
  editor?: (editorProps: any) => ReactElement;
63
112
  }
64
113
 
@@ -76,16 +125,16 @@ export const suppressCellKeyboardEvents = (e: SuppressKeyboardEventParams) => {
76
125
  );
77
126
  };
78
127
 
79
- export const generateFilterGetter = <RowType extends GridBaseRow>(
128
+ export const generateFilterGetter = <TData extends GridBaseRow, ValueType>(
80
129
  field: string | undefined,
81
- filterValueGetter: string | ((params: RowValueGetterParams<RowType>) => string) | undefined,
82
- valueFormatter: string | ((params: RowValueFormatterParams<RowType>) => string) | undefined,
83
- ) => {
130
+ filterValueGetter: string | ValueGetterFunc<TData, ValueType> | undefined,
131
+ valueFormatter: string | ValueFormatterFunc<TData, ValueType> | undefined,
132
+ ): string | SAValueGetterFunc<TData, ValueType> | undefined => {
84
133
  if (filterValueGetter) return filterValueGetter;
85
134
  // aggrid will default to valueGetter
86
135
  if (typeof valueFormatter !== "function" || !field) return undefined;
87
136
 
88
- return (params: RowValueGetterParams<RowType>) => {
137
+ return (params: ValueGetterParams<TData, ValueType>): any => {
89
138
  const value = params.getValue(field);
90
139
  let formattedValue = valueFormatter({ ...params, value });
91
140
  // Search for null values using standard dash
@@ -93,7 +142,7 @@ export const generateFilterGetter = <RowType extends GridBaseRow>(
93
142
  // Search by raw value as well as formatted
94
143
  const gotValue = ["string", "number"].includes(typeof value) ? value : undefined;
95
144
  return (formattedValue + (gotValue != null && formattedValue != gotValue ? " " + gotValue : "")) //
96
- .replaceAll(/\s+/g, " ")
145
+ .replace(/\s+/g, " ")
97
146
  .trim();
98
147
  };
99
148
  };
@@ -101,20 +150,22 @@ export const generateFilterGetter = <RowType extends GridBaseRow>(
101
150
  /*
102
151
  * All cells should use this.
103
152
  */
104
- export const GridCell = <RowType extends GridBaseRow, Props extends CellEditorCommon>(
105
- props: GenericCellColDef<RowType>,
153
+ export const GridCell = <TData extends GridBaseRow, TValue = any, Props extends CellEditorCommon = any>(
154
+ props: GenericCellColDef<TData, TValue>,
106
155
  custom?: {
107
156
  multiEdit?: boolean;
108
157
  preventAutoEdit?: boolean;
109
158
  editor?: (editorProps: Props) => ReactElement;
110
159
  editorParams?: Props;
111
160
  },
112
- ): ColDefT<RowType> => {
161
+ ): ColDefT<TData, TValue> => {
162
+ // props.field = ;
113
163
  // Generate a default filter value getter which uses the formatted value plus
114
164
  // the editable value if it's a string and different from the formatted value.
115
165
  // This is so that e.g. bearings can be searched for by DMS or raw number.
116
166
  const valueFormatter = props.valueFormatter;
117
- const filterValueGetter = generateFilterGetter(props.field, props.filterValueGetter, valueFormatter);
167
+ // FIXME
168
+ const filterValueGetter = generateFilterGetter(props.field, props.filterValueGetter as any, valueFormatter as any);
118
169
  const exportable = props.exportable;
119
170
  // Can't leave this here ag-grid will complain
120
171
  delete props.exportable;
@@ -139,7 +190,8 @@ export const GridCell = <RowType extends GridBaseRow, Props extends CellEditorCo
139
190
  },
140
191
  }),
141
192
  // If there's a valueFormatter and no filterValueGetter then create a filterValueGetter
142
- filterValueGetter,
193
+ // FIXME
194
+ filterValueGetter: filterValueGetter as any,
143
195
  // Default value formatter, otherwise react freaks out on objects
144
196
  valueFormatter: (params: ValueFormatterParams) => {
145
197
  if (params.value == null) return "–";
@@ -1,10 +1,11 @@
1
1
  import { ColDef } from "ag-grid-community";
2
+ import { GridBaseRow } from "./Grid";
2
3
 
3
4
  export const GridCellFillerColId = "gridCellFiller";
4
5
 
5
6
  export const isGridCellFiller = (col: ColDef) => col.colId === GridCellFillerColId;
6
7
 
7
- export const GridCellFiller = (): ColDef => ({
8
+ export const GridCellFiller = <TData extends GridBaseRow>(): ColDef<TData, any> => ({
8
9
  colId: GridCellFillerColId,
9
10
  headerName: "",
10
11
  flex: 1,
@@ -1,5 +1,5 @@
1
- import { CellEditorSelectorResult } from "ag-grid-community/dist/lib/entities/colDef";
2
- import { ICellEditorParams } from "ag-grid-community/dist/lib/interfaces/iCellEditor";
1
+ import { CellEditorSelectorResult } from "ag-grid-community";
2
+ import { ICellEditorParams } from "ag-grid-community";
3
3
  import { ComponentProps, ReactElement } from "react";
4
4
 
5
5
  import { GridBaseRow } from "./Grid";
@@ -16,18 +16,18 @@ export const Editor = <FN extends (param: any) => ReactElement>(props: {
16
16
  params: { ...props.editorParams, multiEdit: props.multiEdit },
17
17
  });
18
18
 
19
- export interface RowCellEditorParams<RowType extends GridBaseRow> extends ICellEditorParams {
20
- data: RowType;
19
+ export interface RowCellEditorParams<TData extends GridBaseRow> extends ICellEditorParams {
20
+ data: TData;
21
21
  }
22
22
 
23
23
  /**
24
24
  * Used to choose between cell editors based in data.
25
25
  */
26
- export const GridCellMultiEditor = <RowType extends GridBaseRow>(
27
- props: GenericCellColDef<RowType>,
28
- cellEditorSelector: (params: RowCellEditorParams<RowType>) => CellEditorSelectorResult,
29
- ): ColDefT<RowType> =>
30
- GridCell({
26
+ export const GridCellMultiEditor = <TData extends GridBaseRow, TValue = any>(
27
+ props: GenericCellColDef<TData, TValue>,
28
+ cellEditorSelector: (params: RowCellEditorParams<TData>) => CellEditorSelectorResult,
29
+ ): ColDefT<TData, TValue> =>
30
+ GridCell<TData, TValue>({
31
31
  cellClassRules: GridCellMultiSelectClassRules,
32
32
  cellEditorSelector,
33
33
  editable: props.editable ?? true,
@@ -1,5 +1,5 @@
1
- import { CellClassParams, CellClassRules } from "ag-grid-community/dist/lib/entities/colDef";
2
- import { ICellEditorParams } from "ag-grid-community/dist/lib/interfaces/iCellEditor";
1
+ import { CellClassParams, CellClassRules } from "ag-grid-community";
2
+ import { ICellEditorParams } from "ag-grid-community";
3
3
 
4
4
  export const GridCellMultiSelectClassRules: CellClassRules = {
5
5
  "ag-selected-for-edit": (params: CellClassParams) => {
@@ -12,8 +12,8 @@ export const GridCellMultiSelectClassRules: CellClassRules = {
12
12
  cep?.multiEdit &&
13
13
  api
14
14
  .getSelectedNodes()
15
- .map((row) => row.id)
16
- .includes(node.id) &&
15
+ ?.map((row) => row.id)
16
+ ?.includes(node.id) &&
17
17
  api.getEditingCells().some((cell) => cell.column.getColDef() === colDef)
18
18
  );
19
19
  },
@@ -7,7 +7,7 @@ import { MenuCloseEvent } from "../react-menu3/types";
7
7
  import { CloseReason } from "../react-menu3/utils";
8
8
  import { GridBaseRow } from "./Grid";
9
9
 
10
- export interface GridPopoverHookProps<RowType> {
10
+ export interface GridPopoverHookProps<TData> {
11
11
  className: string | undefined;
12
12
  invalid?: () =>
13
13
  | Promise<ReactElement | boolean | string | null | undefined>
@@ -16,13 +16,13 @@ export interface GridPopoverHookProps<RowType> {
16
16
  | string
17
17
  | null
18
18
  | undefined;
19
- save?: (selectedRows: RowType[]) => Promise<boolean>;
19
+ save?: (selectedRows: TData[]) => Promise<boolean>;
20
20
  dontSaveOnExternalClick?: boolean;
21
21
  }
22
22
 
23
- export const useGridPopoverHook = <RowType extends GridBaseRow>(props: GridPopoverHookProps<RowType>) => {
23
+ export const useGridPopoverHook = <TData extends GridBaseRow>(props: GridPopoverHookProps<TData>) => {
24
24
  const { stopEditing, cancelEdit } = useContext(GridContext);
25
- const { anchorRef, saving, updateValue } = useGridPopoverContext<RowType>();
25
+ const { anchorRef, saving, updateValue } = useGridPopoverContext<TData>();
26
26
  const saveButtonRef = useRef<HTMLButtonElement>(null);
27
27
  const [isOpen, setOpen] = useState(false);
28
28
 
@@ -1,6 +1,6 @@
1
1
  import { IRowNode } from "ag-grid-community";
2
- import { ColumnState } from "ag-grid-community/dist/lib/columns/columnModel";
3
- import { PostSortRowsParams } from "ag-grid-community/dist/lib/interfaces/iCallbackParams";
2
+ import { ColumnState } from "ag-grid-community";
3
+ import { PostSortRowsParams } from "ag-grid-community";
4
4
  import { isEmpty } from "lodash-es";
5
5
  import { useCallback, useContext, useRef } from "react";
6
6
 
@@ -38,9 +38,9 @@ export const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) =>
38
38
  const previousQuickFilter = useRef("");
39
39
 
40
40
  return useCallback(
41
- ({ api, columnApi, nodes }: PostSortRowsParams) => {
41
+ ({ api, nodes }: PostSortRowsParams) => {
42
42
  // Grid is destroyed
43
- if (!api || !columnApi) return;
43
+ if (!api) return;
44
44
 
45
45
  const previousRowSortIndex = previousRowSortIndexRef.current;
46
46
 
@@ -49,7 +49,7 @@ export const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) =>
49
49
  };
50
50
 
51
51
  const copyCurrentSortSettings = (): ColumnState[] =>
52
- columnApi.getColumnState().map((row) => ({ colId: row.colId, sort: row.sort, sortIndex: row.sortIndex }));
52
+ api.getColumnState().map((row) => ({ colId: row.colId, sort: row.sort, sortIndex: row.sortIndex }));
53
53
 
54
54
  const backupSortOrder = () => {
55
55
  for (const x in previousRowSortIndex) delete previousRowSortIndex[x];
@@ -62,7 +62,7 @@ export const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) =>
62
62
  const isSameColumnAndDifferentSort = (col1: ColumnState | undefined, col2: ColumnState | undefined) =>
63
63
  col1 && col2 && col1.colId === col2.colId && col1.sort != col2.sort;
64
64
 
65
- const restorePreviousSortColumnState = () => columnApi.applyColumnState({ state: previousColSort.current });
65
+ const restorePreviousSortColumnState = () => api.applyColumnState({ state: previousColSort.current });
66
66
 
67
67
  const sortNodesByPreviousSort = () => {
68
68
  nodes.sort(
@@ -149,7 +149,7 @@ export const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) =>
149
149
  previousRowSortIndex[`${lastNewNode?.data.id}`] = { index: newIndex, hash: hashNode(lastNewNode) };
150
150
  wasStale = true;
151
151
  } else if (changedRowCount === 2 && newRowCount === 0) {
152
- // This must be a swap rows
152
+ // This must be a swap rows (sometimes it's not, needs further attention)
153
153
  backupSortOrder();
154
154
  wasStale = false;
155
155
  } else if (changedRowCount > 1 && newRowCount === 1) {
@@ -8,23 +8,23 @@ import { GridFilterExternal } from "../../contexts/GridContext";
8
8
  import { GridBaseRow } from "../Grid";
9
9
  import { useGridFilter } from "./useGridFilter";
10
10
 
11
- export interface GridFilterButtonsOption<RowType extends GridBaseRow> {
11
+ export interface GridFilterButtonsOption<TData extends GridBaseRow> {
12
12
  defaultSelected?: boolean;
13
- filter?: GridFilterExternal<RowType>;
13
+ filter?: GridFilterExternal<TData>;
14
14
  label: string;
15
15
  }
16
16
 
17
- export type GridFilterButtonsProps<RowType extends GridBaseRow> = {
17
+ export type GridFilterButtonsProps<TData extends GridBaseRow> = {
18
18
  className?: ClassValue;
19
19
  luiButtonProps?: Partial<LuiButtonProps>;
20
- options: GridFilterButtonsOption<RowType>[];
20
+ options: GridFilterButtonsOption<TData>[];
21
21
  };
22
22
 
23
- export const GridFilterButtons = <RowType extends GridBaseRow>({
23
+ export const GridFilterButtons = <TData extends GridBaseRow>({
24
24
  className,
25
25
  luiButtonProps,
26
26
  options,
27
- }: GridFilterButtonsProps<RowType>): ReactElement => {
27
+ }: GridFilterButtonsProps<TData>): ReactElement => {
28
28
  // Select defaultSelected option, otherwise first option. If no options select none.
29
29
  const [selectedOption, setSelectedOption] = useState(options.find((option) => option.defaultSelected) ?? options[0]);
30
30
 
@@ -6,9 +6,8 @@ import { LuiCheckboxInput, LuiIcon } from "@linzjs/lui";
6
6
  import { GridContext } from "../../contexts/GridContext";
7
7
  import { Menu, MenuDivider, MenuItem } from "../../react-menu3";
8
8
  import { ClickEvent } from "../../react-menu3/types";
9
- import { GridBaseRow } from "../Grid";
10
- import { ColDefT } from "../GridCell";
11
9
  import { GridFilterHeaderIconButton } from "./GridFilterHeaderIconButton";
10
+ import { ColDef } from "ag-grid-community";
12
11
 
13
12
  export interface GridFilterColumnsToggleProps {
14
13
  saveState?: boolean;
@@ -78,9 +77,7 @@ export const GridFilterColumnsToggle = ({ saveState = true }: GridFilterColumnsT
78
77
  );
79
78
 
80
79
  const numericRegExp = /^\d+$/;
81
- const isNonManageableColumn = (col: ColDefT<GridBaseRow>) => {
82
- return col.lockVisible || col.colId == null || numericRegExp.test(col.colId);
83
- };
80
+ const isNonManageableColumn = (col: ColDef) => col.lockVisible || col.colId == null || numericRegExp.test(col.colId);
84
81
 
85
82
  return (
86
83
  <Menu
@@ -1,4 +1,4 @@
1
- import { CsvExportParams } from "ag-grid-community/dist/lib/interfaces/exportParams";
1
+ import { CsvExportParams } from "ag-grid-community";
2
2
  import { delay } from "lodash-es";
3
3
  import { useContext } from "react";
4
4
 
@@ -3,7 +3,7 @@ import { useContext, useEffect } from "react";
3
3
  import { GridContext, GridFilterExternal } from "../../contexts/GridContext";
4
4
  import { GridBaseRow } from "../Grid";
5
5
 
6
- export const useGridFilter = <RowType extends GridBaseRow>(filter: GridFilterExternal<RowType> | undefined) => {
6
+ export const useGridFilter = <TData extends GridBaseRow>(filter: GridFilterExternal<TData> | undefined) => {
7
7
  const { addExternalFilter, removeExternalFilter } = useContext(GridContext);
8
8
 
9
9
  useEffect(() => {
@@ -14,9 +14,9 @@ import { GridBaseRow } from "../Grid";
14
14
  import { CellEditorCommon } from "../GridCell";
15
15
  import { useGridPopoverHook } from "../GridPopoverHook";
16
16
 
17
- export interface GridPopoutEditDropDownSelectedItem<RowType> {
17
+ export interface GridPopoutEditDropDownSelectedItem<TData> {
18
18
  // Note the row that was clicked on will be first
19
- selectedRows: RowType[];
19
+ selectedRows: TData[];
20
20
  value: any;
21
21
  subComponentValue?: any;
22
22
  }
@@ -38,7 +38,7 @@ export const MenuHeaderItem = (title: string) => {
38
38
 
39
39
  export type SelectOption = null | string | FinalSelectOption;
40
40
 
41
- export interface GridFormDropDownProps<RowType extends GridBaseRow> extends CellEditorCommon {
41
+ export interface GridFormDropDownProps<TData extends GridBaseRow> extends CellEditorCommon {
42
42
  // This overrides CellEditorCommon to provide some common class options
43
43
  className?:
44
44
  | "GridPopoverEditDropDown-containerSmall"
@@ -53,11 +53,11 @@ export interface GridFormDropDownProps<RowType extends GridBaseRow> extends Cell
53
53
  filterPlaceholder?: string;
54
54
  filterHelpText?: string;
55
55
  noOptionsMessage?: string;
56
- onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<RowType>) => Promise<void>;
57
- onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<RowType>) => Promise<void>;
56
+ onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<TData>) => Promise<void>;
57
+ onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<TData>) => Promise<void>;
58
58
  options:
59
59
  | SelectOption[]
60
- | ((selectedRows: RowType[], filter?: string) => Promise<SelectOption[] | undefined> | SelectOption[] | undefined)
60
+ | ((selectedRows: TData[], filter?: string) => Promise<SelectOption[] | undefined> | SelectOption[] | undefined)
61
61
  | undefined;
62
62
  }
63
63
 
@@ -65,8 +65,8 @@ const fieldToString = (field: any) => {
65
65
  return typeof field == "symbol" ? field.toString() : `${field}`;
66
66
  };
67
67
 
68
- export const GridFormDropDown = <RowType extends GridBaseRow>(props: GridFormDropDownProps<RowType>) => {
69
- const { selectedRows, field, data } = useGridPopoverContext<RowType>();
68
+ export const GridFormDropDown = <TData extends GridBaseRow>(props: GridFormDropDownProps<TData>) => {
69
+ const { selectedRows, field, data } = useGridPopoverContext<TData>();
70
70
 
71
71
  // Save triggers during async action processing which triggers another selectItem(), this ref blocks that
72
72
  const [filter, setFilter] = useState(props.filterDefaultValue ?? "");
@@ -81,7 +81,7 @@ export const GridFormDropDown = <RowType extends GridBaseRow>(props: GridFormDro
81
81
  const selectItemHandler = useCallback(
82
82
  async (value: any, subComponentValue?: any): Promise<boolean> => {
83
83
  const hasChanged =
84
- selectedRows.some((row) => row[field as keyof RowType] !== value) ||
84
+ selectedRows.some((row) => row[field as keyof TData] !== value) ||
85
85
  (subComponentValue !== undefined && subComponentInitialValue.current !== JSON.stringify(subComponentValue));
86
86
  if (hasChanged) {
87
87
  if (props.onSelectedItem) {