@mui/x-data-grid 6.0.0-alpha.2 → 6.0.0-alpha.4

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 (293) hide show
  1. package/CHANGELOG.md +493 -141
  2. package/DataGrid/DataGrid.js +14 -34
  3. package/DataGrid/useDataGridComponent.js +8 -14
  4. package/DataGrid/useDataGridProps.js +3 -3
  5. package/colDef/gridCheckboxSelectionColDef.js +1 -1
  6. package/colDef/gridNumericOperators.d.ts +1 -1
  7. package/colDef/gridSingleSelectOperators.d.ts +1 -1
  8. package/colDef/gridStringOperators.d.ts +1 -1
  9. package/components/GridFooter.js +1 -1
  10. package/components/GridRow.js +2 -2
  11. package/components/base/GridBody.js +2 -2
  12. package/components/cell/GridEditInputCell.js +3 -8
  13. package/components/cell/GridEditSingleSelectCell.js +6 -38
  14. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -0
  15. package/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  16. package/components/columnSelection/GridHeaderCheckbox.js +3 -3
  17. package/components/containers/GridRoot.js +4 -3
  18. package/components/panel/GridColumnsPanel.d.ts +2 -0
  19. package/components/panel/GridColumnsPanel.js +10 -4
  20. package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
  21. package/components/panel/filterPanel/GridFilterForm.js +29 -7
  22. package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
  23. package/components/panel/filterPanel/GridFilterPanel.js +64 -19
  24. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  25. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  26. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  27. package/hooks/core/useGridInitialization.d.ts +1 -1
  28. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  29. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +10 -1
  30. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +6 -0
  31. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +34 -1
  32. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +15 -0
  33. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +89 -0
  34. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -15
  35. package/hooks/features/columnGrouping/useGridColumnGrouping.js +66 -66
  36. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  37. package/hooks/features/columnHeaders/useGridColumnHeaders.js +60 -116
  38. package/hooks/features/density/densitySelector.d.ts +0 -2
  39. package/hooks/features/density/densitySelector.js +1 -3
  40. package/hooks/features/density/densityState.d.ts +0 -1
  41. package/hooks/features/density/useGridDensity.d.ts +1 -1
  42. package/hooks/features/density/useGridDensity.js +9 -45
  43. package/hooks/features/dimensions/useGridDimensions.js +3 -2
  44. package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
  45. package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  46. package/hooks/features/editing/index.d.ts +1 -0
  47. package/hooks/features/editing/index.js +1 -0
  48. package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
  49. package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  50. package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
  51. package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  52. package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
  53. package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  54. package/hooks/features/export/useGridPrintExport.js +2 -2
  55. package/hooks/features/focus/gridFocusState.d.ts +6 -0
  56. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  57. package/hooks/features/focus/gridFocusStateSelector.js +6 -2
  58. package/hooks/features/focus/useGridFocus.js +69 -11
  59. package/hooks/features/index.d.ts +2 -2
  60. package/hooks/features/index.js +2 -2
  61. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  62. package/hooks/features/{selection/gridSelectionSelector.d.ts → rowSelection/gridRowSelectionSelector.d.ts} +1 -1
  63. package/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  64. package/hooks/features/rowSelection/index.d.ts +1 -0
  65. package/hooks/features/rowSelection/index.js +1 -0
  66. package/hooks/features/rowSelection/useGridRowSelection.d.ts +12 -0
  67. package/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  68. package/hooks/features/{selection/useGridSelectionPreProcessors.d.ts → rowSelection/useGridRowSelectionPreProcessors.d.ts} +1 -1
  69. package/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  70. package/hooks/features/rows/gridRowsInterfaces.d.ts +4 -0
  71. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  72. package/hooks/features/rows/gridRowsUtils.js +5 -2
  73. package/hooks/features/rows/useGridRows.js +23 -7
  74. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  75. package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  76. package/hooks/utils/useGridApi.d.ts +1 -1
  77. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  78. package/hooks/utils/useGridApiRef.d.ts +1 -1
  79. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  80. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  81. package/hooks/utils/useGridSelector.d.ts +1 -1
  82. package/hooks/utils/useGridState.d.ts +1 -1
  83. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  84. package/index.js +1 -1
  85. package/internals/index.d.ts +3 -5
  86. package/internals/index.js +3 -5
  87. package/legacy/DataGrid/DataGrid.js +14 -34
  88. package/legacy/DataGrid/useDataGridComponent.js +8 -14
  89. package/legacy/DataGrid/useDataGridProps.js +3 -3
  90. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -1
  91. package/legacy/components/GridFooter.js +1 -1
  92. package/legacy/components/GridRow.js +2 -2
  93. package/legacy/components/base/GridBody.js +2 -2
  94. package/legacy/components/cell/GridEditInputCell.js +3 -8
  95. package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
  96. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +46 -13
  97. package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
  98. package/legacy/components/containers/GridRoot.js +4 -3
  99. package/legacy/components/panel/GridColumnsPanel.js +10 -3
  100. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
  101. package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
  102. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +33 -1
  103. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +96 -0
  104. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +64 -64
  105. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +70 -122
  106. package/legacy/hooks/features/density/densitySelector.js +0 -6
  107. package/legacy/hooks/features/density/useGridDensity.js +6 -44
  108. package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -2
  109. package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  110. package/legacy/hooks/features/editing/index.js +1 -0
  111. package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  112. package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  113. package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  114. package/legacy/hooks/features/export/useGridPrintExport.js +2 -2
  115. package/legacy/hooks/features/focus/gridFocusStateSelector.js +8 -0
  116. package/legacy/hooks/features/focus/useGridFocus.js +72 -11
  117. package/legacy/hooks/features/index.js +2 -2
  118. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +129 -1
  119. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +19 -0
  120. package/legacy/hooks/features/rowSelection/index.js +1 -0
  121. package/legacy/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  122. package/legacy/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  123. package/legacy/hooks/features/rows/gridRowsUtils.js +5 -2
  124. package/legacy/hooks/features/rows/useGridRows.js +25 -7
  125. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  126. package/legacy/index.js +1 -1
  127. package/legacy/internals/index.js +3 -5
  128. package/legacy/locales/trTR.js +17 -17
  129. package/legacy/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  130. package/legacy/models/api/index.js +1 -1
  131. package/legacy/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  132. package/legacy/models/index.js +1 -1
  133. package/{models/api/gridSelectionApi.js → legacy/models/params/gridColumnGroupHeaderParams.js} +0 -0
  134. package/legacy/models/params/gridEditCellParams.js +0 -4
  135. package/legacy/models/params/index.js +1 -0
  136. package/locales/trTR.js +17 -17
  137. package/models/api/gridApiCommon.d.ts +3 -6
  138. package/models/api/gridApiCommunity.d.ts +1 -7
  139. package/models/api/gridEditingApi.d.ts +36 -121
  140. package/models/api/gridFocusApi.d.ts +13 -0
  141. package/models/api/{gridSelectionApi.d.ts → gridRowSelectionApi.d.ts} +2 -2
  142. package/models/{gridSelectionModel.js → api/gridRowSelectionApi.js} +0 -0
  143. package/models/api/index.d.ts +2 -2
  144. package/models/api/index.js +1 -1
  145. package/models/colDef/gridColDef.d.ts +0 -8
  146. package/models/events/gridEventLookup.d.ts +30 -19
  147. package/models/gridColumnGrouping.d.ts +1 -26
  148. package/models/gridRowSelectionModel.d.ts +3 -0
  149. package/{modern/models/api/gridSelectionApi.js → models/gridRowSelectionModel.js} +0 -0
  150. package/models/gridStateCommunity.d.ts +2 -2
  151. package/models/index.d.ts +1 -1
  152. package/models/index.js +1 -1
  153. package/models/params/gridColumnGroupHeaderParams.d.ts +30 -0
  154. package/{modern/models/gridSelectionModel.js → models/params/gridColumnGroupHeaderParams.js} +0 -0
  155. package/models/params/gridEditCellParams.d.ts +4 -17
  156. package/models/params/gridEditCellParams.js +0 -4
  157. package/models/params/gridRowParams.d.ts +4 -4
  158. package/models/params/index.d.ts +1 -0
  159. package/models/params/index.js +1 -0
  160. package/models/props/DataGridProps.d.ts +8 -32
  161. package/modern/DataGrid/DataGrid.js +14 -34
  162. package/modern/DataGrid/useDataGridComponent.js +8 -12
  163. package/modern/DataGrid/useDataGridProps.js +3 -3
  164. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -1
  165. package/modern/components/GridFooter.js +1 -1
  166. package/modern/components/GridRow.js +2 -2
  167. package/modern/components/base/GridBody.js +2 -2
  168. package/modern/components/cell/GridEditInputCell.js +3 -4
  169. package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
  170. package/modern/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  171. package/modern/components/columnSelection/GridHeaderCheckbox.js +3 -3
  172. package/modern/components/containers/GridRoot.js +4 -3
  173. package/modern/components/panel/GridColumnsPanel.js +10 -4
  174. package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
  175. package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
  176. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +14 -1
  177. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +83 -0
  178. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +50 -62
  179. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +58 -98
  180. package/modern/hooks/features/density/densitySelector.js +1 -3
  181. package/modern/hooks/features/density/useGridDensity.js +9 -37
  182. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -2
  183. package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  184. package/modern/hooks/features/editing/index.js +1 -0
  185. package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  186. package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  187. package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  188. package/modern/hooks/features/export/useGridPrintExport.js +2 -2
  189. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -2
  190. package/modern/hooks/features/focus/useGridFocus.js +69 -11
  191. package/modern/hooks/features/index.js +2 -2
  192. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  193. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  194. package/modern/hooks/features/rowSelection/index.js +1 -0
  195. package/modern/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  196. package/modern/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  197. package/modern/hooks/features/rows/gridRowsUtils.js +5 -2
  198. package/modern/hooks/features/rows/useGridRows.js +23 -7
  199. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  200. package/modern/index.js +1 -1
  201. package/modern/internals/index.js +3 -5
  202. package/modern/locales/trTR.js +17 -17
  203. package/modern/models/api/gridRowSelectionApi.js +1 -0
  204. package/modern/models/api/index.js +1 -1
  205. package/modern/models/gridRowSelectionModel.js +1 -0
  206. package/modern/models/index.js +1 -1
  207. package/modern/models/params/gridColumnGroupHeaderParams.js +1 -0
  208. package/modern/models/params/gridEditCellParams.js +0 -4
  209. package/modern/models/params/index.js +1 -0
  210. package/node/DataGrid/DataGrid.js +14 -34
  211. package/node/DataGrid/useDataGridComponent.js +9 -17
  212. package/node/DataGrid/useDataGridProps.js +3 -3
  213. package/node/colDef/gridCheckboxSelectionColDef.js +2 -2
  214. package/node/components/GridFooter.js +2 -2
  215. package/node/components/GridRow.js +2 -2
  216. package/node/components/base/GridBody.js +2 -2
  217. package/node/components/cell/GridEditInputCell.js +3 -9
  218. package/node/components/cell/GridEditSingleSelectCell.js +6 -38
  219. package/node/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  220. package/node/components/columnSelection/GridHeaderCheckbox.js +3 -3
  221. package/node/components/containers/GridRoot.js +4 -2
  222. package/node/components/panel/GridColumnsPanel.js +10 -4
  223. package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
  224. package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
  225. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +40 -3
  226. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +102 -0
  227. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +68 -71
  228. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +57 -113
  229. package/node/hooks/features/density/densitySelector.js +2 -6
  230. package/node/hooks/features/density/useGridDensity.js +9 -48
  231. package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
  232. package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  233. package/node/hooks/features/{editRows → editing}/index.js +4 -4
  234. package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
  235. package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
  236. package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
  237. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  238. package/node/hooks/features/focus/gridFocusStateSelector.js +10 -4
  239. package/node/hooks/features/focus/useGridFocus.js +68 -10
  240. package/node/hooks/features/index.js +8 -8
  241. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +138 -1
  242. package/node/hooks/features/{selection/gridSelectionSelector.js → rowSelection/gridRowSelectionSelector.js} +6 -6
  243. package/node/hooks/features/rowSelection/index.js +18 -0
  244. package/node/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +43 -43
  245. package/node/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +3 -3
  246. package/node/hooks/features/rows/gridRowsUtils.js +5 -2
  247. package/node/hooks/features/rows/useGridRows.js +23 -7
  248. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  249. package/node/index.js +1 -1
  250. package/node/internals/index.js +23 -45
  251. package/node/locales/trTR.js +17 -17
  252. package/node/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  253. package/node/models/api/index.js +4 -4
  254. package/node/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  255. package/node/models/index.js +4 -4
  256. package/node/models/params/gridColumnGroupHeaderParams.js +5 -0
  257. package/node/models/params/gridEditCellParams.js +0 -3
  258. package/node/models/params/index.js +13 -0
  259. package/package.json +2 -2
  260. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +0 -4
  261. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  262. package/hooks/features/editRows/index.d.ts +0 -1
  263. package/hooks/features/editRows/index.js +0 -1
  264. package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
  265. package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
  266. package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
  267. package/hooks/features/editRows/useGridEditing.old.js +0 -167
  268. package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
  269. package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
  270. package/hooks/features/selection/gridSelectionSelector.js +0 -9
  271. package/hooks/features/selection/index.d.ts +0 -1
  272. package/hooks/features/selection/index.js +0 -1
  273. package/hooks/features/selection/useGridSelection.d.ts +0 -12
  274. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  275. package/legacy/hooks/features/editRows/index.js +0 -1
  276. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
  277. package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
  278. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
  279. package/legacy/hooks/features/selection/gridSelectionSelector.js +0 -19
  280. package/legacy/hooks/features/selection/index.js +0 -1
  281. package/models/gridSelectionModel.d.ts +0 -3
  282. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -29
  283. package/modern/hooks/features/editRows/index.js +0 -1
  284. package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
  285. package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
  286. package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
  287. package/modern/hooks/features/selection/gridSelectionSelector.js +0 -9
  288. package/modern/hooks/features/selection/index.js +0 -1
  289. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -55
  290. package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
  291. package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
  292. package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
  293. package/node/hooks/features/selection/index.js +0 -18
@@ -1,359 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { useEventCallback } from '@mui/material/utils';
4
- import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
5
- import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
6
- import { isKeyboardEvent, isPrintableKey, isCellEnterEditModeKeys, isCellExitEditModeKeys, isCellEditCommitKeys, isDeleteKeys } from '../../../utils/keyboardUtils';
7
- import { useGridLogger } from '../../utils/useGridLogger';
8
- import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
9
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
10
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
11
-
12
- function isPromise(promise) {
13
- return typeof promise.then === 'function';
14
- }
15
-
16
- export const useCellEditing = (apiRef, props) => {
17
- var _props$experimentalFe2;
18
-
19
- const logger = useGridLogger(apiRef, 'useGridEditRows');
20
-
21
- const buildCallback = callback => (...args) => {
22
- if (props.editMode === GridEditModes.Cell) {
23
- callback(...args);
24
- }
25
- };
26
-
27
- const setCellMode = React.useCallback((id, field, mode) => {
28
- if (apiRef.current.getCellMode(id, field) === mode) {
29
- return;
30
- }
31
-
32
- logger.debug(`Switching cell id: ${id} field: ${field} to mode: ${mode}`);
33
- apiRef.current.setState(state => {
34
- const newEditRowsState = _extends({}, state.editRows);
35
-
36
- newEditRowsState[id] = _extends({}, newEditRowsState[id]);
37
-
38
- if (mode === GridCellModes.Edit) {
39
- newEditRowsState[id][field] = {
40
- value: apiRef.current.getCellValue(id, field)
41
- };
42
- } else {
43
- delete newEditRowsState[id][field];
44
-
45
- if (!Object.keys(newEditRowsState[id]).length) {
46
- delete newEditRowsState[id];
47
- }
48
- }
49
-
50
- return _extends({}, state, {
51
- editRows: newEditRowsState
52
- });
53
- });
54
- apiRef.current.forceUpdate();
55
- apiRef.current.publishEvent('cellModeChange', apiRef.current.getCellParams(id, field));
56
- }, [apiRef, logger]);
57
- const getCellMode = React.useCallback((id, field) => {
58
- const editRowsState = gridEditRowsStateSelector(apiRef.current.state);
59
- const isEditing = editRowsState[id] && editRowsState[id][field];
60
- return isEditing ? GridCellModes.Edit : GridCellModes.View;
61
- }, [apiRef]); // TODO v6: it should always return a promise
62
-
63
- const commitCellChange = React.useCallback((params, event = {}) => {
64
- var _props$experimentalFe;
65
-
66
- const {
67
- id,
68
- field
69
- } = params;
70
- apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
71
- const model = apiRef.current.getEditRowsModel();
72
-
73
- if (!model[id] || !model[id][field]) {
74
- throw new Error(`MUI: Cell at id: ${id} and field: ${field} is not in edit mode.`);
75
- }
76
-
77
- const editCellProps = model[id][field];
78
- const column = apiRef.current.getColumn(field);
79
- const row = apiRef.current.getRow(id);
80
-
81
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
82
- const cellProps = model[id][field];
83
-
84
- if (cellProps.isValidating || cellProps.error) {
85
- return false;
86
- }
87
- }
88
-
89
- const commitParams = _extends({}, params, {
90
- value: editCellProps.value
91
- });
92
-
93
- let hasError = !!editCellProps.error;
94
-
95
- if (!hasError && typeof column.preProcessEditCellProps === 'function') {
96
- const result = column.preProcessEditCellProps({
97
- id,
98
- row,
99
- props: editCellProps
100
- });
101
-
102
- if (isPromise(result)) {
103
- return result.then(newEditCellProps => {
104
- apiRef.current.unstable_setEditCellProps({
105
- id,
106
- field,
107
- props: newEditCellProps
108
- });
109
-
110
- if (newEditCellProps.error) {
111
- return false;
112
- }
113
-
114
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
115
- return true;
116
- });
117
- }
118
-
119
- apiRef.current.unstable_setEditCellProps({
120
- id,
121
- field,
122
- props: result
123
- });
124
- hasError = !!result.error;
125
- }
126
-
127
- if (!hasError) {
128
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
129
- return true;
130
- }
131
-
132
- return false;
133
- }, [apiRef, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
134
- const setCellEditingEditCellValue = React.useCallback(params => {
135
- const column = apiRef.current.getColumn(params.field);
136
- const row = apiRef.current.getRow(params.id);
137
- return new Promise(resolve => {
138
- let newEditCellProps = {
139
- value: params.value
140
- };
141
- const model = apiRef.current.getEditRowsModel();
142
- const editCellProps = model[params.id][params.field];
143
-
144
- if (typeof column.preProcessEditCellProps !== 'function') {
145
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
146
- props: newEditCellProps
147
- }));
148
- resolve(true);
149
- return;
150
- } // setEditCellProps runs the value parser and returns the updated props
151
-
152
-
153
- newEditCellProps = apiRef.current.unstable_setEditCellProps(_extends({}, params, {
154
- props: _extends({}, editCellProps, {
155
- isValidating: true
156
- })
157
- }));
158
- Promise.resolve(column.preProcessEditCellProps({
159
- id: params.id,
160
- row,
161
- props: _extends({}, newEditCellProps, {
162
- value: apiRef.current.unstable_parseValue(params.id, params.field, params.value)
163
- })
164
- })).then(newEditCellPropsProcessed => {
165
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
166
- props: _extends({}, newEditCellPropsProcessed, {
167
- isValidating: false
168
- })
169
- }));
170
- resolve(!newEditCellPropsProcessed.error);
171
- });
172
- });
173
- }, [apiRef]);
174
- const cellEditingApi = {
175
- setCellMode,
176
- getCellMode,
177
- commitCellChange,
178
- unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
179
- };
180
- useGridApiMethod(apiRef, cellEditingApi, 'EditRowApi');
181
- const handleCellKeyDown = React.useCallback(async (params, event) => {
182
- // Wait until IME is settled for Asian languages like Japanese and Chinese
183
- // TODO: `event.which` is depricated but this is a temporary workaround
184
- if (event.which === 229) {
185
- return;
186
- }
187
-
188
- const {
189
- id,
190
- field,
191
- cellMode,
192
- isEditable
193
- } = params;
194
-
195
- if (!isEditable) {
196
- return;
197
- }
198
-
199
- const isEditMode = cellMode === GridCellModes.Edit;
200
- const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
201
-
202
- if (!isEditMode && isCellEnterEditModeKeys(event) && !isModifierKeyPressed && !(event.key === ' ' && event.shiftKey)) {
203
- apiRef.current.publishEvent('cellEditStart', params, event);
204
- }
205
-
206
- if (!isEditMode && isDeleteKeys(event.key)) {
207
- apiRef.current.setEditCellValue({
208
- id,
209
- field,
210
- value: ''
211
- });
212
- apiRef.current.commitCellChange({
213
- id,
214
- field
215
- }, event);
216
- apiRef.current.publishEvent('cellEditStop', params, event);
217
- }
218
-
219
- if (isEditMode && isCellEditCommitKeys(event.key)) {
220
- const commitParams = {
221
- id,
222
- field
223
- };
224
- const isValid = await apiRef.current.commitCellChange(commitParams, event);
225
-
226
- if (!isValid) {
227
- return;
228
- }
229
- }
230
-
231
- if (isEditMode && isCellExitEditModeKeys(event.key)) {
232
- apiRef.current.publishEvent('cellEditStop', params, event);
233
- }
234
- }, [apiRef]);
235
- const handleCellDoubleClick = React.useCallback((params, event) => {
236
- if (!params.isEditable) {
237
- return;
238
- }
239
-
240
- apiRef.current.publishEvent('cellEditStart', params, event);
241
- }, [apiRef]);
242
-
243
- const commitPropsAndExit = async (params, event) => {
244
- if (params.cellMode === GridCellModes.View) {
245
- return;
246
- }
247
-
248
- await apiRef.current.commitCellChange(params, event);
249
- apiRef.current.publishEvent('cellEditStop', params, event);
250
- };
251
-
252
- const handleCellFocusOut = useEventCallback((params, event) => {
253
- commitPropsAndExit(params, event);
254
- });
255
- const handleColumnHeaderDragStart = useEventCallback(() => {
256
- const cell = gridFocusCellSelector(apiRef);
257
-
258
- if (!cell) {
259
- return;
260
- }
261
-
262
- const params = apiRef.current.getCellParams(cell.id, cell.field);
263
- commitPropsAndExit(params, {});
264
- });
265
- const handleCellEditStart = React.useCallback((params, event) => {
266
- if (!params.isEditable) {
267
- return;
268
- }
269
-
270
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.Edit);
271
-
272
- if (isKeyboardEvent(event) && isPrintableKey(event)) {
273
- apiRef.current.unstable_setEditCellProps({
274
- id: params.id,
275
- field: params.field,
276
- props: {
277
- value: ''
278
- }
279
- });
280
- }
281
- }, [apiRef]);
282
- const handleCellEditStop = React.useCallback((params, event) => {
283
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.View);
284
-
285
- if (!isKeyboardEvent(event)) {
286
- return;
287
- }
288
-
289
- if (isCellEditCommitKeys(event.key)) {
290
- apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
291
- return;
292
- }
293
-
294
- if (event.key === 'Escape' || isDeleteKeys(event.key)) {
295
- apiRef.current.setCellFocus(params.id, params.field);
296
- }
297
- }, [apiRef]);
298
- const handleCellEditCommit = React.useCallback(params => {
299
- const {
300
- id,
301
- field
302
- } = params;
303
- const model = apiRef.current.getEditRowsModel();
304
- const {
305
- value
306
- } = model[id][field];
307
- logger.debug(`Setting cell id: ${id} field: ${field} to value: ${value == null ? void 0 : value.toString()}`);
308
- const row = apiRef.current.getRow(id);
309
-
310
- if (row) {
311
- const column = apiRef.current.getColumn(params.field);
312
-
313
- let rowUpdate = _extends({}, row, {
314
- [field]: value
315
- });
316
-
317
- if (column.valueSetter) {
318
- rowUpdate = column.valueSetter({
319
- row,
320
- value
321
- });
322
- }
323
-
324
- apiRef.current.updateRows([rowUpdate]);
325
- }
326
- }, [apiRef, logger]);
327
- const handleEditCellPropsChange = React.useCallback(params => {
328
- const row = apiRef.current.getRow(params.id);
329
- const column = apiRef.current.getColumn(params.field);
330
- const editCellProps = column.preProcessEditCellProps ? column.preProcessEditCellProps({
331
- id: params.id,
332
- row,
333
- props: params.props
334
- }) : params.props;
335
-
336
- if (isPromise(editCellProps)) {
337
- editCellProps.then(newEditCellProps => {
338
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
339
- props: newEditCellProps
340
- }));
341
- });
342
- } else {
343
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
344
- props: editCellProps
345
- }));
346
- }
347
- }, [apiRef]);
348
- useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
349
- useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
350
- useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
351
- useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
352
- useGridApiEventHandler(apiRef, 'cellEditStart', buildCallback(handleCellEditStart));
353
- useGridApiEventHandler(apiRef, 'cellEditStop', buildCallback(handleCellEditStop));
354
- useGridApiEventHandler(apiRef, 'cellEditCommit', buildCallback(handleCellEditCommit));
355
- useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
356
- useGridApiOptionHandler(apiRef, 'cellEditCommit', props.onCellEditCommit);
357
- useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
358
- useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
359
- };
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
- import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
- import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
- export declare const editingStateInitializer: GridStateInitializer;
6
- /**
7
- * @requires useGridFocus - can be after, async only
8
- * @requires useGridParamsApi (method)
9
- * @requires useGridColumns (state)
10
- */
11
- export declare function useGridEditing(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editRowsModel' | 'onEditRowsModelChange' | 'isCellEditable' | 'onEditCellPropsChange' | 'editMode' | 'onRowEditCommit' | 'onRowEditStart' | 'onRowEditStop' | 'onCellEditCommit' | 'onCellEditStart' | 'onCellEditStop' | 'experimentalFeatures'>): void;
@@ -1,167 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { GridCellModes } from '../../../models/gridEditRowModel';
4
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
5
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
- import { useGridLogger } from '../../utils/useGridLogger';
7
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
8
- import { useCellEditing } from './useGridCellEditing.old';
9
- import { useGridRowEditing } from './useGridRowEditing.old';
10
- import { isAutoGeneratedRow } from '../rows/gridRowsUtils';
11
- export const editingStateInitializer = state => _extends({}, state, {
12
- editRows: {}
13
- });
14
- /**
15
- * @requires useGridFocus - can be after, async only
16
- * @requires useGridParamsApi (method)
17
- * @requires useGridColumns (state)
18
- */
19
-
20
- export function useGridEditing(apiRef, props) {
21
- var _props$experimentalFe2;
22
-
23
- const logger = useGridLogger(apiRef, 'useGridEditRows');
24
- useCellEditing(apiRef, props);
25
- useGridRowEditing(apiRef, props);
26
- const debounceMap = React.useRef({});
27
- apiRef.current.unstable_registerControlState({
28
- stateId: 'editRows',
29
- propModel: props.editRowsModel,
30
- propOnChange: props.onEditRowsModelChange,
31
- stateSelector: gridEditRowsStateSelector,
32
- changeEvent: 'editRowsModelChange'
33
- });
34
- const isCellEditable = React.useCallback(params => !isAutoGeneratedRow(params.rowNode) && params.rowNode.type !== 'pinnedRow' && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params)), // eslint-disable-next-line react-hooks/exhaustive-deps
35
- [props.isCellEditable]);
36
-
37
- const maybeDebounce = (id, field, debounceMs, callback) => {
38
- if (!debounceMs) {
39
- callback();
40
- return;
41
- }
42
-
43
- if (!debounceMap.current[id]) {
44
- debounceMap.current[id] = {};
45
- }
46
-
47
- if (debounceMap.current[id][field]) {
48
- const [timeout] = debounceMap.current[id][field];
49
- clearTimeout(timeout);
50
- }
51
-
52
- const callbackToRunImmediately = () => {
53
- callback();
54
- const [timeout] = debounceMap.current[id][field];
55
- clearTimeout(timeout);
56
- delete debounceMap.current[id][field];
57
- };
58
-
59
- const timeout = setTimeout(() => {
60
- callback();
61
- delete debounceMap.current[id][field];
62
- }, debounceMs);
63
- debounceMap.current[id][field] = [timeout, callbackToRunImmediately];
64
- };
65
-
66
- const runPendingEditCellValueMutation = React.useCallback((id, field) => {
67
- if (!debounceMap.current[id]) {
68
- return;
69
- }
70
-
71
- if (!field) {
72
- Object.keys(debounceMap.current[id]).forEach(debouncedField => {
73
- const [, callback] = debounceMap.current[id][debouncedField];
74
- callback();
75
- });
76
- } else if (debounceMap.current[id][field]) {
77
- const [, callback] = debounceMap.current[id][field];
78
- callback();
79
- }
80
- }, []);
81
- const setEditCellValue = React.useCallback((params, event = {}) => {
82
- maybeDebounce(params.id, params.field, params.debounceMs, () => {
83
- var _props$experimentalFe;
84
-
85
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
86
- if (props.editMode === 'row') {
87
- return apiRef.current.unstable_setRowEditingEditCellValue(params);
88
- }
89
-
90
- return apiRef.current.unstable_setCellEditingEditCellValue(params);
91
- }
92
-
93
- const newParams = {
94
- id: params.id,
95
- field: params.field,
96
- props: {
97
- value: params.value
98
- }
99
- };
100
- return apiRef.current.publishEvent('editCellPropsChange', newParams, event);
101
- });
102
- }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
103
- const parseValue = React.useCallback((id, field, value) => {
104
- const column = apiRef.current.getColumn(field);
105
- return column.valueParser ? column.valueParser(value, apiRef.current.getCellParams(id, field)) : value;
106
- }, [apiRef]);
107
- const setEditCellProps = React.useCallback(params => {
108
- const {
109
- id,
110
- field,
111
- props: editProps
112
- } = params;
113
- logger.debug(`Setting cell props on id: ${id} field: ${field}`);
114
- apiRef.current.setState(state => {
115
- const editRowsModel = _extends({}, state.editRows);
116
-
117
- editRowsModel[id] = _extends({}, state.editRows[id]);
118
- editRowsModel[id][field] = _extends({}, editProps, {
119
- value: parseValue(id, field, editProps.value)
120
- });
121
- return _extends({}, state, {
122
- editRows: editRowsModel
123
- });
124
- });
125
- apiRef.current.forceUpdate();
126
- const editRowsState = gridEditRowsStateSelector(apiRef.current.state);
127
- return editRowsState[id][field];
128
- }, [apiRef, logger, parseValue]);
129
- const setEditRowsModel = React.useCallback(model => {
130
- const currentModel = gridEditRowsStateSelector(apiRef.current.state);
131
-
132
- if (currentModel !== model) {
133
- logger.debug(`Setting editRows model`);
134
- apiRef.current.setState(state => _extends({}, state, {
135
- editRows: model
136
- }));
137
- apiRef.current.forceUpdate();
138
- }
139
- }, [apiRef, logger]);
140
- const getEditRowsModel = React.useCallback(() => gridEditRowsStateSelector(apiRef.current.state), [apiRef]);
141
- const preventTextSelection = React.useCallback((params, event) => {
142
- const isMoreThanOneClick = event.detail > 1;
143
-
144
- if (params.isEditable && params.cellMode === GridCellModes.View && isMoreThanOneClick) {
145
- // If we click more than one time, then we prevent the default behavior of selecting the text cell.
146
- event.preventDefault();
147
- }
148
- }, []);
149
- useGridApiEventHandler(apiRef, 'cellMouseDown', preventTextSelection);
150
- useGridApiOptionHandler(apiRef, 'editCellPropsChange', props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
151
-
152
- const editingSharedApi = {
153
- isCellEditable,
154
- setEditRowsModel,
155
- getEditRowsModel,
156
- setEditCellValue,
157
- unstable_setEditCellProps: setEditCellProps,
158
- unstable_parseValue: parseValue,
159
- unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
160
- };
161
- useGridApiMethod(apiRef, editingSharedApi, 'EditRowApi');
162
- React.useEffect(() => {
163
- if (props.editRowsModel !== undefined) {
164
- apiRef.current.setEditRowsModel(props.editRowsModel);
165
- }
166
- }, [apiRef, props.editRowsModel]);
167
- }
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
- import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
- export declare const useGridRowEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'onRowEditCommit' | 'onRowEditStart' | 'onRowEditStop' | 'experimentalFeatures'>) => void;