@mui/x-data-grid 7.0.0-alpha.9 → 7.0.0-beta.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 (246) hide show
  1. package/CHANGELOG.md +386 -38
  2. package/DataGrid/useDataGridComponent.js +1 -1
  3. package/README.md +2 -2
  4. package/colDef/gridBooleanColDef.js +3 -6
  5. package/colDef/gridCheckboxSelectionColDef.js +4 -3
  6. package/colDef/gridDateColDef.d.ts +3 -4
  7. package/colDef/gridDateColDef.js +10 -16
  8. package/colDef/gridNumericColDef.js +1 -3
  9. package/colDef/gridSingleSelectColDef.js +7 -12
  10. package/components/GridRow.js +1 -100
  11. package/components/cell/GridEditInputCell.js +1 -1
  12. package/components/columnsManagement/GridColumnsManagement.d.ts +43 -0
  13. package/components/columnsManagement/GridColumnsManagement.js +265 -0
  14. package/components/columnsManagement/index.d.ts +1 -0
  15. package/components/columnsManagement/index.js +1 -0
  16. package/components/columnsManagement/utils.d.ts +4 -0
  17. package/components/columnsManagement/utils.js +16 -0
  18. package/components/index.d.ts +1 -0
  19. package/components/index.js +1 -0
  20. package/components/panel/GridColumnsPanel.d.ts +0 -28
  21. package/components/panel/GridColumnsPanel.js +5 -213
  22. package/constants/defaultGridSlotsComponents.js +2 -1
  23. package/constants/gridClasses.d.ts +12 -4
  24. package/constants/gridClasses.js +1 -1
  25. package/constants/localeTextConstants.js +4 -6
  26. package/hooks/core/useGridApiInitialization.js +4 -0
  27. package/hooks/features/columns/useGridColumnSpanning.js +3 -1
  28. package/hooks/features/editing/useGridCellEditing.js +2 -5
  29. package/hooks/features/editing/useGridRowEditing.js +2 -5
  30. package/hooks/features/filter/gridFilterUtils.js +1 -1
  31. package/hooks/features/rows/gridRowsUtils.js +4 -1
  32. package/hooks/features/rows/useGridParamsApi.d.ts +1 -2
  33. package/hooks/features/rows/useGridParamsApi.js +14 -49
  34. package/index.js +1 -1
  35. package/legacy/DataGrid/useDataGridComponent.js +1 -1
  36. package/legacy/colDef/gridBooleanColDef.js +3 -5
  37. package/legacy/colDef/gridCheckboxSelectionColDef.js +4 -3
  38. package/legacy/colDef/gridDateColDef.js +10 -14
  39. package/legacy/colDef/gridNumericColDef.js +1 -2
  40. package/legacy/colDef/gridSingleSelectColDef.js +7 -10
  41. package/legacy/components/GridRow.js +1 -100
  42. package/legacy/components/cell/GridEditInputCell.js +1 -1
  43. package/legacy/components/columnsManagement/GridColumnsManagement.js +307 -0
  44. package/legacy/components/columnsManagement/index.js +1 -0
  45. package/legacy/components/columnsManagement/utils.js +22 -0
  46. package/legacy/components/index.js +1 -0
  47. package/legacy/components/panel/GridColumnsPanel.js +5 -233
  48. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  49. package/legacy/constants/gridClasses.js +1 -1
  50. package/legacy/constants/localeTextConstants.js +4 -6
  51. package/legacy/hooks/core/useGridApiInitialization.js +4 -0
  52. package/legacy/hooks/features/columns/useGridColumnSpanning.js +3 -1
  53. package/legacy/hooks/features/editing/useGridCellEditing.js +2 -5
  54. package/legacy/hooks/features/editing/useGridRowEditing.js +2 -5
  55. package/legacy/hooks/features/filter/gridFilterUtils.js +2 -2
  56. package/legacy/hooks/features/rows/gridRowsUtils.js +4 -1
  57. package/legacy/hooks/features/rows/useGridParamsApi.js +14 -47
  58. package/legacy/index.js +1 -1
  59. package/legacy/locales/arSD.js +5 -6
  60. package/legacy/locales/beBY.js +5 -6
  61. package/legacy/locales/bgBG.js +5 -6
  62. package/legacy/locales/csCZ.js +5 -6
  63. package/legacy/locales/daDK.js +5 -6
  64. package/legacy/locales/deDE.js +5 -6
  65. package/legacy/locales/elGR.js +5 -6
  66. package/legacy/locales/esES.js +5 -6
  67. package/legacy/locales/faIR.js +5 -6
  68. package/legacy/locales/fiFI.js +5 -6
  69. package/legacy/locales/frFR.js +5 -6
  70. package/legacy/locales/heIL.js +12 -14
  71. package/legacy/locales/hrHR.js +5 -6
  72. package/legacy/locales/huHU.js +5 -6
  73. package/legacy/locales/itIT.js +5 -6
  74. package/legacy/locales/jaJP.js +5 -6
  75. package/legacy/locales/koKR.js +5 -6
  76. package/legacy/locales/nbNO.js +5 -6
  77. package/legacy/locales/nlNL.js +5 -6
  78. package/legacy/locales/plPL.js +5 -6
  79. package/legacy/locales/ptBR.js +5 -6
  80. package/legacy/locales/ptPT.js +5 -6
  81. package/legacy/locales/roRO.js +5 -6
  82. package/legacy/locales/ruRU.js +5 -6
  83. package/legacy/locales/skSK.js +5 -6
  84. package/legacy/locales/svSE.js +5 -6
  85. package/legacy/locales/trTR.js +5 -6
  86. package/legacy/locales/ukUA.js +5 -6
  87. package/legacy/locales/urPK.js +5 -6
  88. package/legacy/locales/viVN.js +5 -6
  89. package/legacy/locales/zhCN.js +5 -6
  90. package/legacy/locales/zhHK.js +5 -6
  91. package/legacy/locales/zhTW.js +5 -6
  92. package/locales/arSD.js +5 -6
  93. package/locales/beBY.js +5 -6
  94. package/locales/bgBG.js +5 -6
  95. package/locales/csCZ.js +5 -6
  96. package/locales/daDK.js +5 -6
  97. package/locales/deDE.js +5 -6
  98. package/locales/elGR.js +5 -6
  99. package/locales/esES.js +5 -6
  100. package/locales/faIR.js +5 -6
  101. package/locales/fiFI.js +5 -6
  102. package/locales/frFR.js +5 -6
  103. package/locales/heIL.js +12 -14
  104. package/locales/hrHR.js +5 -6
  105. package/locales/huHU.js +5 -6
  106. package/locales/itIT.js +5 -6
  107. package/locales/jaJP.js +5 -6
  108. package/locales/koKR.js +5 -6
  109. package/locales/nbNO.js +5 -6
  110. package/locales/nlNL.js +5 -6
  111. package/locales/plPL.js +5 -6
  112. package/locales/ptBR.js +5 -6
  113. package/locales/ptPT.js +5 -6
  114. package/locales/roRO.js +5 -6
  115. package/locales/ruRU.js +5 -6
  116. package/locales/skSK.js +5 -6
  117. package/locales/svSE.js +5 -6
  118. package/locales/trTR.js +5 -6
  119. package/locales/ukUA.js +5 -6
  120. package/locales/urPK.js +5 -6
  121. package/locales/viVN.js +5 -6
  122. package/locales/zhCN.js +5 -6
  123. package/locales/zhHK.js +5 -6
  124. package/locales/zhTW.js +5 -6
  125. package/models/api/gridLocaleTextApi.d.ts +3 -5
  126. package/models/colDef/gridColDef.d.ts +11 -17
  127. package/models/colDef/gridColType.d.ts +11 -2
  128. package/models/colDef/index.d.ts +1 -1
  129. package/models/gridSlotsComponent.d.ts +5 -0
  130. package/models/gridSlotsComponentsProps.d.ts +4 -0
  131. package/models/params/gridCellParams.d.ts +0 -26
  132. package/modern/DataGrid/useDataGridComponent.js +1 -1
  133. package/modern/colDef/gridBooleanColDef.js +3 -6
  134. package/modern/colDef/gridCheckboxSelectionColDef.js +4 -3
  135. package/modern/colDef/gridDateColDef.js +10 -16
  136. package/modern/colDef/gridNumericColDef.js +1 -3
  137. package/modern/colDef/gridSingleSelectColDef.js +7 -12
  138. package/modern/components/GridRow.js +1 -100
  139. package/modern/components/cell/GridEditInputCell.js +1 -1
  140. package/modern/components/columnsManagement/GridColumnsManagement.js +261 -0
  141. package/modern/components/columnsManagement/index.js +1 -0
  142. package/modern/components/columnsManagement/utils.js +16 -0
  143. package/modern/components/index.js +1 -0
  144. package/modern/components/panel/GridColumnsPanel.js +4 -209
  145. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  146. package/modern/constants/gridClasses.js +1 -1
  147. package/modern/constants/localeTextConstants.js +4 -6
  148. package/modern/hooks/core/useGridApiInitialization.js +3 -0
  149. package/modern/hooks/features/columns/useGridColumnSpanning.js +3 -1
  150. package/modern/hooks/features/editing/useGridCellEditing.js +2 -5
  151. package/modern/hooks/features/editing/useGridRowEditing.js +2 -5
  152. package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
  153. package/modern/hooks/features/rows/gridRowsUtils.js +4 -1
  154. package/modern/hooks/features/rows/useGridParamsApi.js +14 -47
  155. package/modern/index.js +1 -1
  156. package/modern/locales/arSD.js +5 -6
  157. package/modern/locales/beBY.js +5 -6
  158. package/modern/locales/bgBG.js +5 -6
  159. package/modern/locales/csCZ.js +5 -6
  160. package/modern/locales/daDK.js +5 -6
  161. package/modern/locales/deDE.js +5 -6
  162. package/modern/locales/elGR.js +5 -6
  163. package/modern/locales/esES.js +5 -6
  164. package/modern/locales/faIR.js +5 -6
  165. package/modern/locales/fiFI.js +5 -6
  166. package/modern/locales/frFR.js +5 -6
  167. package/modern/locales/heIL.js +12 -14
  168. package/modern/locales/hrHR.js +5 -6
  169. package/modern/locales/huHU.js +5 -6
  170. package/modern/locales/itIT.js +5 -6
  171. package/modern/locales/jaJP.js +5 -6
  172. package/modern/locales/koKR.js +5 -6
  173. package/modern/locales/nbNO.js +5 -6
  174. package/modern/locales/nlNL.js +5 -6
  175. package/modern/locales/plPL.js +5 -6
  176. package/modern/locales/ptBR.js +5 -6
  177. package/modern/locales/ptPT.js +5 -6
  178. package/modern/locales/roRO.js +5 -6
  179. package/modern/locales/ruRU.js +5 -6
  180. package/modern/locales/skSK.js +5 -6
  181. package/modern/locales/svSE.js +5 -6
  182. package/modern/locales/trTR.js +5 -6
  183. package/modern/locales/ukUA.js +5 -6
  184. package/modern/locales/urPK.js +5 -6
  185. package/modern/locales/viVN.js +5 -6
  186. package/modern/locales/zhCN.js +5 -6
  187. package/modern/locales/zhHK.js +5 -6
  188. package/modern/locales/zhTW.js +5 -6
  189. package/node/DataGrid/useDataGridComponent.js +1 -1
  190. package/node/colDef/gridBooleanColDef.js +3 -6
  191. package/node/colDef/gridCheckboxSelectionColDef.js +4 -3
  192. package/node/colDef/gridDateColDef.js +13 -19
  193. package/node/colDef/gridNumericColDef.js +1 -3
  194. package/node/colDef/gridSingleSelectColDef.js +7 -12
  195. package/node/components/GridRow.js +1 -100
  196. package/node/components/cell/GridEditInputCell.js +1 -1
  197. package/node/components/columnsManagement/GridColumnsManagement.js +269 -0
  198. package/node/components/columnsManagement/index.js +16 -0
  199. package/node/components/columnsManagement/utils.js +24 -0
  200. package/node/components/index.js +11 -0
  201. package/node/components/panel/GridColumnsPanel.js +4 -208
  202. package/node/constants/defaultGridSlotsComponents.js +1 -0
  203. package/node/constants/gridClasses.js +1 -1
  204. package/node/constants/localeTextConstants.js +4 -6
  205. package/node/hooks/core/useGridApiInitialization.js +3 -0
  206. package/node/hooks/features/columns/useGridColumnSpanning.js +3 -1
  207. package/node/hooks/features/editing/useGridCellEditing.js +2 -5
  208. package/node/hooks/features/editing/useGridRowEditing.js +2 -5
  209. package/node/hooks/features/filter/gridFilterUtils.js +1 -1
  210. package/node/hooks/features/rows/gridRowsUtils.js +4 -1
  211. package/node/hooks/features/rows/useGridParamsApi.js +14 -47
  212. package/node/index.js +1 -1
  213. package/node/locales/arSD.js +5 -6
  214. package/node/locales/beBY.js +5 -6
  215. package/node/locales/bgBG.js +5 -6
  216. package/node/locales/csCZ.js +5 -6
  217. package/node/locales/daDK.js +5 -6
  218. package/node/locales/deDE.js +5 -6
  219. package/node/locales/elGR.js +5 -6
  220. package/node/locales/esES.js +5 -6
  221. package/node/locales/faIR.js +5 -6
  222. package/node/locales/fiFI.js +5 -6
  223. package/node/locales/frFR.js +5 -6
  224. package/node/locales/heIL.js +12 -14
  225. package/node/locales/hrHR.js +5 -6
  226. package/node/locales/huHU.js +5 -6
  227. package/node/locales/itIT.js +5 -6
  228. package/node/locales/jaJP.js +5 -6
  229. package/node/locales/koKR.js +5 -6
  230. package/node/locales/nbNO.js +5 -6
  231. package/node/locales/nlNL.js +5 -6
  232. package/node/locales/plPL.js +5 -6
  233. package/node/locales/ptBR.js +5 -6
  234. package/node/locales/ptPT.js +5 -6
  235. package/node/locales/roRO.js +5 -6
  236. package/node/locales/ruRU.js +5 -6
  237. package/node/locales/skSK.js +5 -6
  238. package/node/locales/svSE.js +5 -6
  239. package/node/locales/trTR.js +5 -6
  240. package/node/locales/ukUA.js +5 -6
  241. package/node/locales/urPK.js +5 -6
  242. package/node/locales/viVN.js +5 -6
  243. package/node/locales/zhCN.js +5 -6
  244. package/node/locales/zhHK.js +5 -6
  245. package/node/locales/zhTW.js +5 -6
  246. package/package.json +4 -4
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { GridCellClassNamePropType } from '../gridCellClass';
3
3
  import { GridColumnHeaderClassNamePropType } from '../gridColumnHeaderClass';
4
4
  import type { GridFilterOperator } from '../gridFilterOperator';
5
- import { GridCellParams, GridRenderCellParams, GridRenderEditCellParams, GridValueFormatterParams, GridValueGetterParams, GridValueSetterParams, GridPreProcessEditCellProps } from '../params/gridCellParams';
5
+ import { GridRenderCellParams, GridRenderEditCellParams, GridPreProcessEditCellProps } from '../params/gridCellParams';
6
6
  import { GridColumnHeaderParams } from '../params/gridColumnHeaderParams';
7
7
  import { GridComparatorFn, GridSortDirection } from '../gridSortModel';
8
8
  import { GridColType } from './gridColType';
@@ -26,6 +26,11 @@ export type ValueOptions = string | number | {
26
26
  export type GridKeyValue = string | number | boolean;
27
27
  export type GridApplyQuickFilter<R extends GridValidRowModel = GridValidRowModel, V = any> = (value: V, row: R, column: GridColDef, apiRef: React.MutableRefObject<GridApiCommunity>) => boolean;
28
28
  export type GetApplyQuickFilterFn<R extends GridValidRowModel = GridValidRowModel, V = any> = (value: any, colDef: GridStateColDef<R, V>, apiRef: React.MutableRefObject<GridApiCommunity>) => null | GridApplyQuickFilter<R, V>;
29
+ export type GridValueGetter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V, TValue = never> = (value: TValue, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => V;
30
+ export type GridValueFormatter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V, TValue = never> = (value: TValue, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => F;
31
+ export type GridValueSetter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: V, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => R;
32
+ export type GridValueParser<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: F | undefined, row: R | undefined, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => V;
33
+ export type GridColSpanFn<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: V, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => number | undefined;
29
34
  /**
30
35
  * Column Definition base interface.
31
36
  */
@@ -115,34 +120,23 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
115
120
  align?: GridAlignment;
116
121
  /**
117
122
  * Function that allows to get a specific data instead of field to render in the cell.
118
- * @template R, V
119
- * @param {GridValueGetterParams<R, any>} params Object containing parameters for the getter.
120
- * @returns {V} The cell value.
121
123
  */
122
- valueGetter?: (params: GridValueGetterParams<R, any>) => V;
124
+ valueGetter?: GridValueGetter<R, V, F>;
123
125
  /**
124
126
  * Function that allows to customize how the entered value is stored in the row.
125
127
  * It only works with cell/row editing.
126
- * @template R, V
127
- * @param {GridValueSetterParams<R, V>} params Object containing parameters for the setter.
128
128
  * @returns {R} The row with the updated field.
129
129
  */
130
- valueSetter?: (params: GridValueSetterParams<R, V>) => R;
130
+ valueSetter?: GridValueSetter<R, V, F>;
131
131
  /**
132
132
  * Function that allows to apply a formatter before rendering its value.
133
- * @template V, F
134
- * @param {GridValueFormatterParams<V>} params Object containing parameters for the formatter.
135
- * @returns {F} The formatted value.
136
133
  */
137
- valueFormatter?: (params: GridValueFormatterParams<V>) => F;
134
+ valueFormatter?: GridValueFormatter<R, V, F>;
138
135
  /**
139
136
  * Function that takes the user-entered value and converts it to a value used internally.
140
- * @template R, V, F
141
- * @param {F | undefined} value The user-entered value.
142
- * @param {GridCellParams<R, V, F>} params The params when called before saving the value.
143
137
  * @returns {V} The converted value to use internally.
144
138
  */
145
- valueParser?: (value: F | undefined, params?: GridCellParams<R, V, F>) => V;
139
+ valueParser?: GridValueParser<R, V, F>;
146
140
  /**
147
141
  * Class name that will be added in cells for that column.
148
142
  */
@@ -224,7 +218,7 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
224
218
  * Number of columns a cell should span.
225
219
  * @default 1
226
220
  */
227
- colSpan?: number | ((params: GridCellParams<R, V, F>) => number | undefined);
221
+ colSpan?: number | GridColSpanFn<R, V, F>;
228
222
  }
229
223
  /**
230
224
  * Column Definition interface used for columns with the `actions` type.
@@ -1,2 +1,11 @@
1
- export type GridNativeColTypes = 'string' | 'number' | 'date' | 'dateTime' | 'boolean' | 'singleSelect' | 'actions' | 'custom';
2
- export type GridColType = GridNativeColTypes;
1
+ export interface GridColumnTypes {
2
+ string: 'string';
3
+ number: 'number';
4
+ date: 'date';
5
+ dateTime: 'dateTime';
6
+ boolean: 'boolean';
7
+ singleSelect: 'singleSelect';
8
+ actions: 'actions';
9
+ custom: 'custom';
10
+ }
11
+ export type GridColType = GridColumnTypes[keyof GridColumnTypes];
@@ -1,3 +1,3 @@
1
- export type { GridAlignment, ValueOptions, GridKeyValue, GridColDef, GridColTypeDef, GridColumnsMeta, GridSingleSelectColDef, GridActionsColDef, GetApplyQuickFilterFn, } from './gridColDef';
1
+ export type { GridAlignment, ValueOptions, GridKeyValue, GridColDef, GridColTypeDef, GridColumnsMeta, GridSingleSelectColDef, GridActionsColDef, GetApplyQuickFilterFn, GridValueGetter, GridValueFormatter, GridValueSetter, GridValueParser, GridColSpanFn, } from './gridColDef';
2
2
  export * from './gridColType';
3
3
  export * from './gridColumnTypesRecord';
@@ -160,6 +160,11 @@ export interface GridSlotsComponent extends GridBaseSlots, GridIconSlotsComponen
160
160
  * @default GridColumnsPanel
161
161
  */
162
162
  columnsPanel: React.JSXElementConstructor<any>;
163
+ /**
164
+ * Component used inside Grid Columns panel to manage columns.
165
+ * @default GridColumnsManagement
166
+ */
167
+ columnsManagement: React.JSXElementConstructor<any>;
163
168
  /**
164
169
  * Panel component wrapping the filters and columns panels.
165
170
  * @default GridPanel
@@ -21,6 +21,7 @@ import { GridOverlayProps } from '../components/containers/GridOverlay';
21
21
  import { GridPanelProps } from '../components/panel/GridPanel';
22
22
  import type { GridRowProps } from '../components/GridRow';
23
23
  import type { GridCellProps } from '../components/cell/GridCell';
24
+ import type { GridColumnsManagementProps } from '../components/columnsManagement/GridColumnsManagement';
24
25
  import type { GridRowCountProps } from '../components';
25
26
  export interface BaseCheckboxPropsOverrides {
26
27
  }
@@ -56,6 +57,8 @@ export interface ColumnMenuPropsOverrides {
56
57
  }
57
58
  export interface ColumnsPanelPropsOverrides {
58
59
  }
60
+ export interface ColumnsManagementPropsOverrides {
61
+ }
59
62
  export interface FilterPanelPropsOverrides {
60
63
  }
61
64
  export interface FooterPropsOverrides {
@@ -99,6 +102,7 @@ export interface GridSlotsComponentsProps {
99
102
  columnHeaderFilterIconButton?: SlotProps<ColumnHeaderFilterIconButtonProps, ColumnHeaderFilterIconButtonPropsOverrides>;
100
103
  columnMenu?: SlotProps<GridColumnMenuProps, ColumnMenuPropsOverrides>;
101
104
  columnsPanel?: SlotProps<GridColumnsPanelProps, ColumnsPanelPropsOverrides>;
105
+ columnsManagement?: SlotProps<GridColumnsManagementProps, ColumnsManagementPropsOverrides>;
102
106
  filterPanel?: SlotProps<GridFilterPanelProps, FilterPanelPropsOverrides>;
103
107
  footer?: SlotProps<GridFooterContainerProps, FooterPropsOverrides>;
104
108
  footerRowCount?: SlotProps<GridRowCountProps, FooterRowCountOverrides>;
@@ -81,32 +81,6 @@ export interface GridRenderEditCellParams<R extends GridValidRowModel = any, V =
81
81
  */
82
82
  api: GridApiCommunity;
83
83
  }
84
- /**
85
- * Parameters passed to `colDef.valueGetter`.
86
- */
87
- export interface GridValueGetterParams<R extends GridValidRowModel = any, V = any, N extends GridTreeNodeWithRender = GridTreeNodeWithRender> extends Omit<GridCellParams<R, V, any, N>, 'formattedValue' | 'isEditable'> {
88
- /**
89
- * GridApi that let you manipulate the grid.
90
- */
91
- api: GridApiCommunity;
92
- /**
93
- * The default value for the cell that the `valueGetter` is overriding.
94
- */
95
- value: GridCellParams<R, V, any>['value'];
96
- }
97
- /**
98
- * Object passed as parameter in the column [[GridColDef]] value setter callback.
99
- */
100
- export interface GridValueSetterParams<R extends GridValidRowModel = any, V = any> {
101
- /**
102
- * The new cell value.
103
- */
104
- value: V;
105
- /**
106
- * The row that is being edited.
107
- */
108
- row: R;
109
- }
110
84
  /**
111
85
  * Object passed as parameter in the column [[GridColDef]] value formatter callback.
112
86
  */
@@ -57,7 +57,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
57
57
  useGridRowSelection(apiRef, props);
58
58
  useGridColumns(apiRef, props);
59
59
  useGridRows(apiRef, props);
60
- useGridParamsApi(apiRef, props);
60
+ useGridParamsApi(apiRef);
61
61
  useGridColumnSpanning(apiRef);
62
62
  useGridColumnGrouping(apiRef, props);
63
63
  useGridEditing(apiRef, props);
@@ -4,12 +4,9 @@ import { renderBooleanCell } from '../components/cell/GridBooleanCell';
4
4
  import { renderEditBooleanCell } from '../components/cell/GridEditBooleanCell';
5
5
  import { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';
6
6
  import { getGridBooleanOperators } from './gridBooleanOperators';
7
- function gridBooleanFormatter({
8
- value,
9
- api
10
- }) {
11
- return value ? api.getLocaleText('booleanCellTrueLabel') : api.getLocaleText('booleanCellFalseLabel');
12
- }
7
+ const gridBooleanFormatter = (value, row, column, apiRef) => {
8
+ return value ? apiRef.current.getLocaleText('booleanCellTrueLabel') : apiRef.current.getLocaleText('booleanCellFalseLabel');
9
+ };
13
10
  const stringToBoolean = value => {
14
11
  switch (value.toLowerCase().trim()) {
15
12
  case 'true':
@@ -19,9 +19,10 @@ export const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF
19
19
  disableReorder: true,
20
20
  disableExport: true,
21
21
  getApplyQuickFilterFn: undefined,
22
- valueGetter: params => {
23
- const selectionLookup = selectedIdsLookupSelector(params.api.state, params.api.instanceId);
24
- return selectionLookup[params.id] !== undefined;
22
+ valueGetter: (value, row, column, apiRef) => {
23
+ const selectionLookup = selectedIdsLookupSelector(apiRef);
24
+ const rowId = apiRef.current.getRowId(row);
25
+ return selectionLookup[rowId] !== undefined;
25
26
  },
26
27
  renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),
27
28
  renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))
@@ -13,38 +13,32 @@ function throwIfNotDateObject({
13
13
  throw new Error([`MUI X: \`${columnType}\` column type only accepts \`Date\` objects as values.`, 'Use `valueGetter` to transform the value into a `Date` object.', `Row ID: ${rowId}, field: "${field}".`].join('\n'));
14
14
  }
15
15
  }
16
- export function gridDateFormatter({
17
- value,
18
- field,
19
- id
20
- }) {
16
+ export const gridDateFormatter = (value, row, column, apiRef) => {
21
17
  if (!value) {
22
18
  return '';
23
19
  }
20
+ const rowId = apiRef.current.getRowId(row);
24
21
  throwIfNotDateObject({
25
22
  value,
26
23
  columnType: 'date',
27
- rowId: id,
28
- field
24
+ rowId,
25
+ field: column.field
29
26
  });
30
27
  return value.toLocaleDateString();
31
- }
32
- export function gridDateTimeFormatter({
33
- value,
34
- field,
35
- id
36
- }) {
28
+ };
29
+ export const gridDateTimeFormatter = (value, row, column, apiRef) => {
37
30
  if (!value) {
38
31
  return '';
39
32
  }
33
+ const rowId = apiRef.current.getRowId(row);
40
34
  throwIfNotDateObject({
41
35
  value,
42
36
  columnType: 'dateTime',
43
- rowId: id,
44
- field
37
+ rowId,
38
+ field: column.field
45
39
  });
46
40
  return value.toLocaleString();
47
- }
41
+ };
48
42
  export const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
49
43
  type: 'date',
50
44
  sortComparator: gridDateComparator,
@@ -9,9 +9,7 @@ export const GRID_NUMERIC_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
9
9
  headerAlign: 'right',
10
10
  sortComparator: gridNumberComparator,
11
11
  valueParser: value => value === '' ? null : Number(value),
12
- valueFormatter: ({
13
- value
14
- }) => isNumber(value) ? value.toLocaleString() : value || '',
12
+ valueFormatter: value => isNumber(value) ? value.toLocaleString() : value || '',
15
13
  filterOperators: getGridNumericOperators(),
16
14
  getApplyQuickFilterFn: getGridNumericQuickFilterFn
17
15
  });
@@ -17,20 +17,15 @@ export const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
17
17
  type: 'singleSelect',
18
18
  getOptionLabel: defaultGetOptionLabel,
19
19
  getOptionValue: defaultGetOptionValue,
20
- valueFormatter(params) {
21
- const {
22
- id,
23
- field,
24
- value,
25
- api
26
- } = params;
27
- const colDef = params.api.getColumn(field);
20
+ valueFormatter(value, row, colDef, apiRef) {
21
+ // const { id, field, value, api } = params;
22
+ const rowId = apiRef.current.getRowId(row);
28
23
  if (!isSingleSelectColDef(colDef)) {
29
24
  return '';
30
25
  }
31
26
  const valueOptions = getValueOptions(colDef, {
32
- id,
33
- row: id ? api.getRow(id) : null
27
+ id: rowId,
28
+ row
34
29
  });
35
30
  if (value == null) {
36
31
  return '';
@@ -47,8 +42,8 @@ export const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
47
42
  renderEditCell: renderEditSingleSelectCell,
48
43
  filterOperators: getGridSingleSelectOperators(),
49
44
  // @ts-ignore
50
- pastedValueParser: (value, params) => {
51
- const colDef = params.colDef;
45
+ pastedValueParser: (value, row, column) => {
46
+ const colDef = column;
52
47
  const valueOptions = getValueOptions(colDef) || [];
53
48
  const getOptionValue = colDef.getOptionValue;
54
49
  const valueOption = valueOptions.find(option => {
@@ -433,106 +433,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
433
433
  onDoubleClick: PropTypes.func,
434
434
  onMouseEnter: PropTypes.func,
435
435
  onMouseLeave: PropTypes.func,
436
- pinnedColumns: PropTypes.shape({
437
- left: PropTypes.arrayOf(PropTypes.shape({
438
- align: PropTypes.oneOf(['center', 'left', 'right']),
439
- cellClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
440
- colSpan: PropTypes.oneOfType([PropTypes.func, PropTypes.number]),
441
- computedWidth: PropTypes.number.isRequired,
442
- description: PropTypes.string,
443
- disableColumnMenu: PropTypes.bool,
444
- disableExport: PropTypes.bool,
445
- disableReorder: PropTypes.bool,
446
- editable: PropTypes.bool,
447
- field: PropTypes.string.isRequired,
448
- filterable: PropTypes.bool,
449
- filterOperators: PropTypes.arrayOf(PropTypes.shape({
450
- getApplyFilterFn: PropTypes.func.isRequired,
451
- getValueAsString: PropTypes.func,
452
- headerLabel: PropTypes.string,
453
- InputComponent: PropTypes.elementType,
454
- InputComponentProps: PropTypes.object,
455
- label: PropTypes.string,
456
- requiresFilterValue: PropTypes.bool,
457
- value: PropTypes.string.isRequired
458
- })),
459
- flex: PropTypes.number,
460
- getApplyQuickFilterFn: PropTypes.func,
461
- groupable: PropTypes.bool,
462
- hasBeenResized: PropTypes.bool,
463
- headerAlign: PropTypes.oneOf(['center', 'left', 'right']),
464
- headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
465
- headerName: PropTypes.string,
466
- hideable: PropTypes.bool,
467
- hideSortIcons: PropTypes.bool,
468
- maxWidth: PropTypes.number,
469
- minWidth: PropTypes.number,
470
- pinnable: PropTypes.bool,
471
- preProcessEditCellProps: PropTypes.func,
472
- renderCell: PropTypes.func,
473
- renderEditCell: PropTypes.func,
474
- renderHeader: PropTypes.func,
475
- resizable: PropTypes.bool,
476
- sortable: PropTypes.bool,
477
- sortComparator: PropTypes.func,
478
- sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])),
479
- type: PropTypes.oneOf(['actions', 'boolean', 'custom', 'date', 'dateTime', 'number', 'singleSelect', 'string']),
480
- valueFormatter: PropTypes.func,
481
- valueGetter: PropTypes.func,
482
- valueParser: PropTypes.func,
483
- valueSetter: PropTypes.func,
484
- width: PropTypes.number
485
- })).isRequired,
486
- right: PropTypes.arrayOf(PropTypes.shape({
487
- align: PropTypes.oneOf(['center', 'left', 'right']),
488
- cellClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
489
- colSpan: PropTypes.oneOfType([PropTypes.func, PropTypes.number]),
490
- computedWidth: PropTypes.number.isRequired,
491
- description: PropTypes.string,
492
- disableColumnMenu: PropTypes.bool,
493
- disableExport: PropTypes.bool,
494
- disableReorder: PropTypes.bool,
495
- editable: PropTypes.bool,
496
- field: PropTypes.string.isRequired,
497
- filterable: PropTypes.bool,
498
- filterOperators: PropTypes.arrayOf(PropTypes.shape({
499
- getApplyFilterFn: PropTypes.func.isRequired,
500
- getValueAsString: PropTypes.func,
501
- headerLabel: PropTypes.string,
502
- InputComponent: PropTypes.elementType,
503
- InputComponentProps: PropTypes.object,
504
- label: PropTypes.string,
505
- requiresFilterValue: PropTypes.bool,
506
- value: PropTypes.string.isRequired
507
- })),
508
- flex: PropTypes.number,
509
- getApplyQuickFilterFn: PropTypes.func,
510
- groupable: PropTypes.bool,
511
- hasBeenResized: PropTypes.bool,
512
- headerAlign: PropTypes.oneOf(['center', 'left', 'right']),
513
- headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
514
- headerName: PropTypes.string,
515
- hideable: PropTypes.bool,
516
- hideSortIcons: PropTypes.bool,
517
- maxWidth: PropTypes.number,
518
- minWidth: PropTypes.number,
519
- pinnable: PropTypes.bool,
520
- preProcessEditCellProps: PropTypes.func,
521
- renderCell: PropTypes.func,
522
- renderEditCell: PropTypes.func,
523
- renderHeader: PropTypes.func,
524
- resizable: PropTypes.bool,
525
- sortable: PropTypes.bool,
526
- sortComparator: PropTypes.func,
527
- sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])),
528
- type: PropTypes.oneOf(['actions', 'boolean', 'custom', 'date', 'dateTime', 'number', 'singleSelect', 'string']),
529
- valueFormatter: PropTypes.func,
530
- valueGetter: PropTypes.func,
531
- valueParser: PropTypes.func,
532
- valueSetter: PropTypes.func,
533
- width: PropTypes.number
534
- })).isRequired
535
- }).isRequired,
436
+ pinnedColumns: PropTypes.object.isRequired,
536
437
  renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
537
438
  row: PropTypes.object,
538
439
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
@@ -57,7 +57,7 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
57
57
  const column = apiRef.current.getColumn(field);
58
58
  let parsedValue = newValue;
59
59
  if (column.valueParser) {
60
- parsedValue = column.valueParser(newValue, apiRef.current.getCellParams(id, field));
60
+ parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
61
61
  }
62
62
  setValueState(parsedValue);
63
63
  apiRef.current.setEditCellValue({