@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,411 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import * as React from 'react';
6
- import { useEventCallback } from '@mui/material/utils';
7
- import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
8
- import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
9
- import { isKeyboardEvent, isPrintableKey, isCellEnterEditModeKeys, isCellExitEditModeKeys, isCellEditCommitKeys, isDeleteKeys } from '../../../utils/keyboardUtils';
10
- import { useGridLogger } from '../../utils/useGridLogger';
11
- import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
12
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
13
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
14
-
15
- function isPromise(promise) {
16
- return typeof promise.then === 'function';
17
- }
18
-
19
- export var useCellEditing = function useCellEditing(apiRef, props) {
20
- var _props$experimentalFe2;
21
-
22
- var logger = useGridLogger(apiRef, 'useGridEditRows');
23
-
24
- var buildCallback = function buildCallback(callback) {
25
- return function () {
26
- if (props.editMode === GridEditModes.Cell) {
27
- callback.apply(void 0, arguments);
28
- }
29
- };
30
- };
31
-
32
- var setCellMode = React.useCallback(function (id, field, mode) {
33
- if (apiRef.current.getCellMode(id, field) === mode) {
34
- return;
35
- }
36
-
37
- logger.debug("Switching cell id: ".concat(id, " field: ").concat(field, " to mode: ").concat(mode));
38
- apiRef.current.setState(function (state) {
39
- var newEditRowsState = _extends({}, state.editRows);
40
-
41
- newEditRowsState[id] = _extends({}, newEditRowsState[id]);
42
-
43
- if (mode === GridCellModes.Edit) {
44
- newEditRowsState[id][field] = {
45
- value: apiRef.current.getCellValue(id, field)
46
- };
47
- } else {
48
- delete newEditRowsState[id][field];
49
-
50
- if (!Object.keys(newEditRowsState[id]).length) {
51
- delete newEditRowsState[id];
52
- }
53
- }
54
-
55
- return _extends({}, state, {
56
- editRows: newEditRowsState
57
- });
58
- });
59
- apiRef.current.forceUpdate();
60
- apiRef.current.publishEvent('cellModeChange', apiRef.current.getCellParams(id, field));
61
- }, [apiRef, logger]);
62
- var getCellMode = React.useCallback(function (id, field) {
63
- var editRowsState = gridEditRowsStateSelector(apiRef.current.state);
64
- var isEditing = editRowsState[id] && editRowsState[id][field];
65
- return isEditing ? GridCellModes.Edit : GridCellModes.View;
66
- }, [apiRef]); // TODO v6: it should always return a promise
67
-
68
- var commitCellChange = React.useCallback(function (params) {
69
- var _props$experimentalFe;
70
-
71
- var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
72
- var id = params.id,
73
- field = params.field;
74
- apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
75
- var model = apiRef.current.getEditRowsModel();
76
-
77
- if (!model[id] || !model[id][field]) {
78
- throw new Error("MUI: Cell at id: ".concat(id, " and field: ").concat(field, " is not in edit mode."));
79
- }
80
-
81
- var editCellProps = model[id][field];
82
- var column = apiRef.current.getColumn(field);
83
- var row = apiRef.current.getRow(id);
84
-
85
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
86
- var cellProps = model[id][field];
87
-
88
- if (cellProps.isValidating || cellProps.error) {
89
- return false;
90
- }
91
- }
92
-
93
- var commitParams = _extends({}, params, {
94
- value: editCellProps.value
95
- });
96
-
97
- var hasError = !!editCellProps.error;
98
-
99
- if (!hasError && typeof column.preProcessEditCellProps === 'function') {
100
- var result = column.preProcessEditCellProps({
101
- id: id,
102
- row: row,
103
- props: editCellProps
104
- });
105
-
106
- if (isPromise(result)) {
107
- return result.then(function (newEditCellProps) {
108
- apiRef.current.unstable_setEditCellProps({
109
- id: id,
110
- field: field,
111
- props: newEditCellProps
112
- });
113
-
114
- if (newEditCellProps.error) {
115
- return false;
116
- }
117
-
118
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
119
- return true;
120
- });
121
- }
122
-
123
- apiRef.current.unstable_setEditCellProps({
124
- id: id,
125
- field: field,
126
- props: result
127
- });
128
- hasError = !!result.error;
129
- }
130
-
131
- if (!hasError) {
132
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
133
- return true;
134
- }
135
-
136
- return false;
137
- }, [apiRef, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
138
- var setCellEditingEditCellValue = React.useCallback(function (params) {
139
- var column = apiRef.current.getColumn(params.field);
140
- var row = apiRef.current.getRow(params.id);
141
- return new Promise(function (resolve) {
142
- var newEditCellProps = {
143
- value: params.value
144
- };
145
- var model = apiRef.current.getEditRowsModel();
146
- var editCellProps = model[params.id][params.field];
147
-
148
- if (typeof column.preProcessEditCellProps !== 'function') {
149
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
150
- props: newEditCellProps
151
- }));
152
- resolve(true);
153
- return;
154
- } // setEditCellProps runs the value parser and returns the updated props
155
-
156
-
157
- newEditCellProps = apiRef.current.unstable_setEditCellProps(_extends({}, params, {
158
- props: _extends({}, editCellProps, {
159
- isValidating: true
160
- })
161
- }));
162
- Promise.resolve(column.preProcessEditCellProps({
163
- id: params.id,
164
- row: row,
165
- props: _extends({}, newEditCellProps, {
166
- value: apiRef.current.unstable_parseValue(params.id, params.field, params.value)
167
- })
168
- })).then(function (newEditCellPropsProcessed) {
169
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
170
- props: _extends({}, newEditCellPropsProcessed, {
171
- isValidating: false
172
- })
173
- }));
174
- resolve(!newEditCellPropsProcessed.error);
175
- });
176
- });
177
- }, [apiRef]);
178
- var cellEditingApi = {
179
- setCellMode: setCellMode,
180
- getCellMode: getCellMode,
181
- commitCellChange: commitCellChange,
182
- unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
183
- };
184
- useGridApiMethod(apiRef, cellEditingApi, 'EditRowApi');
185
- var handleCellKeyDown = React.useCallback( /*#__PURE__*/function () {
186
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params, event) {
187
- var id, field, cellMode, isEditable, isEditMode, isModifierKeyPressed, commitParams, isValid;
188
- return _regeneratorRuntime.wrap(function _callee$(_context) {
189
- while (1) {
190
- switch (_context.prev = _context.next) {
191
- case 0:
192
- if (!(event.which === 229)) {
193
- _context.next = 2;
194
- break;
195
- }
196
-
197
- return _context.abrupt("return");
198
-
199
- case 2:
200
- id = params.id, field = params.field, cellMode = params.cellMode, isEditable = params.isEditable;
201
-
202
- if (isEditable) {
203
- _context.next = 5;
204
- break;
205
- }
206
-
207
- return _context.abrupt("return");
208
-
209
- case 5:
210
- isEditMode = cellMode === GridCellModes.Edit;
211
- isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
212
-
213
- if (!isEditMode && isCellEnterEditModeKeys(event) && !isModifierKeyPressed && !(event.key === ' ' && event.shiftKey)) {
214
- apiRef.current.publishEvent('cellEditStart', params, event);
215
- }
216
-
217
- if (!isEditMode && isDeleteKeys(event.key)) {
218
- apiRef.current.setEditCellValue({
219
- id: id,
220
- field: field,
221
- value: ''
222
- });
223
- apiRef.current.commitCellChange({
224
- id: id,
225
- field: field
226
- }, event);
227
- apiRef.current.publishEvent('cellEditStop', params, event);
228
- }
229
-
230
- if (!(isEditMode && isCellEditCommitKeys(event.key))) {
231
- _context.next = 16;
232
- break;
233
- }
234
-
235
- commitParams = {
236
- id: id,
237
- field: field
238
- };
239
- _context.next = 13;
240
- return apiRef.current.commitCellChange(commitParams, event);
241
-
242
- case 13:
243
- isValid = _context.sent;
244
-
245
- if (isValid) {
246
- _context.next = 16;
247
- break;
248
- }
249
-
250
- return _context.abrupt("return");
251
-
252
- case 16:
253
- if (isEditMode && isCellExitEditModeKeys(event.key)) {
254
- apiRef.current.publishEvent('cellEditStop', params, event);
255
- }
256
-
257
- case 17:
258
- case "end":
259
- return _context.stop();
260
- }
261
- }
262
- }, _callee);
263
- }));
264
-
265
- return function (_x, _x2) {
266
- return _ref.apply(this, arguments);
267
- };
268
- }(), [apiRef]);
269
- var handleCellDoubleClick = React.useCallback(function (params, event) {
270
- if (!params.isEditable) {
271
- return;
272
- }
273
-
274
- apiRef.current.publishEvent('cellEditStart', params, event);
275
- }, [apiRef]);
276
-
277
- var commitPropsAndExit = /*#__PURE__*/function () {
278
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params, event) {
279
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
280
- while (1) {
281
- switch (_context2.prev = _context2.next) {
282
- case 0:
283
- if (!(params.cellMode === GridCellModes.View)) {
284
- _context2.next = 2;
285
- break;
286
- }
287
-
288
- return _context2.abrupt("return");
289
-
290
- case 2:
291
- _context2.next = 4;
292
- return apiRef.current.commitCellChange(params, event);
293
-
294
- case 4:
295
- apiRef.current.publishEvent('cellEditStop', params, event);
296
-
297
- case 5:
298
- case "end":
299
- return _context2.stop();
300
- }
301
- }
302
- }, _callee2);
303
- }));
304
-
305
- return function commitPropsAndExit(_x3, _x4) {
306
- return _ref2.apply(this, arguments);
307
- };
308
- }();
309
-
310
- var handleCellFocusOut = useEventCallback(function (params, event) {
311
- commitPropsAndExit(params, event);
312
- });
313
- var handleColumnHeaderDragStart = useEventCallback(function () {
314
- var cell = gridFocusCellSelector(apiRef);
315
-
316
- if (!cell) {
317
- return;
318
- }
319
-
320
- var params = apiRef.current.getCellParams(cell.id, cell.field);
321
- commitPropsAndExit(params, {});
322
- });
323
- var handleCellEditStart = React.useCallback(function (params, event) {
324
- if (!params.isEditable) {
325
- return;
326
- }
327
-
328
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.Edit);
329
-
330
- if (isKeyboardEvent(event) && isPrintableKey(event)) {
331
- apiRef.current.unstable_setEditCellProps({
332
- id: params.id,
333
- field: params.field,
334
- props: {
335
- value: ''
336
- }
337
- });
338
- }
339
- }, [apiRef]);
340
- var handleCellEditStop = React.useCallback(function (params, event) {
341
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.View);
342
-
343
- if (!isKeyboardEvent(event)) {
344
- return;
345
- }
346
-
347
- if (isCellEditCommitKeys(event.key)) {
348
- apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
349
- return;
350
- }
351
-
352
- if (event.key === 'Escape' || isDeleteKeys(event.key)) {
353
- apiRef.current.setCellFocus(params.id, params.field);
354
- }
355
- }, [apiRef]);
356
- var handleCellEditCommit = React.useCallback(function (params) {
357
- var id = params.id,
358
- field = params.field;
359
- var model = apiRef.current.getEditRowsModel();
360
- var value = model[id][field].value;
361
- logger.debug("Setting cell id: ".concat(id, " field: ").concat(field, " to value: ").concat(value == null ? void 0 : value.toString()));
362
- var row = apiRef.current.getRow(id);
363
-
364
- if (row) {
365
- var column = apiRef.current.getColumn(params.field);
366
-
367
- var rowUpdate = _extends({}, row, _defineProperty({}, field, value));
368
-
369
- if (column.valueSetter) {
370
- rowUpdate = column.valueSetter({
371
- row: row,
372
- value: value
373
- });
374
- }
375
-
376
- apiRef.current.updateRows([rowUpdate]);
377
- }
378
- }, [apiRef, logger]);
379
- var handleEditCellPropsChange = React.useCallback(function (params) {
380
- var row = apiRef.current.getRow(params.id);
381
- var column = apiRef.current.getColumn(params.field);
382
- var editCellProps = column.preProcessEditCellProps ? column.preProcessEditCellProps({
383
- id: params.id,
384
- row: row,
385
- props: params.props
386
- }) : params.props;
387
-
388
- if (isPromise(editCellProps)) {
389
- editCellProps.then(function (newEditCellProps) {
390
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
391
- props: newEditCellProps
392
- }));
393
- });
394
- } else {
395
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
396
- props: editCellProps
397
- }));
398
- }
399
- }, [apiRef]);
400
- useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
401
- useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
402
- useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
403
- useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
404
- useGridApiEventHandler(apiRef, 'cellEditStart', buildCallback(handleCellEditStart));
405
- useGridApiEventHandler(apiRef, 'cellEditStop', buildCallback(handleCellEditStop));
406
- useGridApiEventHandler(apiRef, 'cellEditCommit', buildCallback(handleCellEditCommit));
407
- useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
408
- useGridApiOptionHandler(apiRef, 'cellEditCommit', props.onCellEditCommit);
409
- useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
410
- useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
411
- };
@@ -1,184 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import * as React from 'react';
4
- import { GridCellModes } from '../../../models/gridEditRowModel';
5
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
6
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
- import { useGridLogger } from '../../utils/useGridLogger';
8
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
9
- import { useCellEditing } from './useGridCellEditing.old';
10
- import { useGridRowEditing } from './useGridRowEditing.old';
11
- import { isAutoGeneratedRow } from '../rows/gridRowsUtils';
12
- export var editingStateInitializer = function editingStateInitializer(state) {
13
- return _extends({}, state, {
14
- editRows: {}
15
- });
16
- };
17
- /**
18
- * @requires useGridFocus - can be after, async only
19
- * @requires useGridParamsApi (method)
20
- * @requires useGridColumns (state)
21
- */
22
-
23
- export function useGridEditing(apiRef, props) {
24
- var _props$experimentalFe2;
25
-
26
- var logger = useGridLogger(apiRef, 'useGridEditRows');
27
- useCellEditing(apiRef, props);
28
- useGridRowEditing(apiRef, props);
29
- var debounceMap = React.useRef({});
30
- apiRef.current.unstable_registerControlState({
31
- stateId: 'editRows',
32
- propModel: props.editRowsModel,
33
- propOnChange: props.onEditRowsModelChange,
34
- stateSelector: gridEditRowsStateSelector,
35
- changeEvent: 'editRowsModelChange'
36
- });
37
- var isCellEditable = React.useCallback(function (params) {
38
- return !isAutoGeneratedRow(params.rowNode) && params.rowNode.type !== 'pinnedRow' && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params));
39
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
40
- [props.isCellEditable]);
41
-
42
- var maybeDebounce = function maybeDebounce(id, field, debounceMs, callback) {
43
- if (!debounceMs) {
44
- callback();
45
- return;
46
- }
47
-
48
- if (!debounceMap.current[id]) {
49
- debounceMap.current[id] = {};
50
- }
51
-
52
- if (debounceMap.current[id][field]) {
53
- var _debounceMap$current$ = _slicedToArray(debounceMap.current[id][field], 1),
54
- _timeout = _debounceMap$current$[0];
55
-
56
- clearTimeout(_timeout);
57
- }
58
-
59
- var callbackToRunImmediately = function callbackToRunImmediately() {
60
- callback();
61
-
62
- var _debounceMap$current$2 = _slicedToArray(debounceMap.current[id][field], 1),
63
- timeout = _debounceMap$current$2[0];
64
-
65
- clearTimeout(timeout);
66
- delete debounceMap.current[id][field];
67
- };
68
-
69
- var timeout = setTimeout(function () {
70
- callback();
71
- delete debounceMap.current[id][field];
72
- }, debounceMs);
73
- debounceMap.current[id][field] = [timeout, callbackToRunImmediately];
74
- };
75
-
76
- var runPendingEditCellValueMutation = React.useCallback(function (id, field) {
77
- if (!debounceMap.current[id]) {
78
- return;
79
- }
80
-
81
- if (!field) {
82
- Object.keys(debounceMap.current[id]).forEach(function (debouncedField) {
83
- var _debounceMap$current$3 = _slicedToArray(debounceMap.current[id][debouncedField], 2),
84
- callback = _debounceMap$current$3[1];
85
-
86
- callback();
87
- });
88
- } else if (debounceMap.current[id][field]) {
89
- var _debounceMap$current$4 = _slicedToArray(debounceMap.current[id][field], 2),
90
- callback = _debounceMap$current$4[1];
91
-
92
- callback();
93
- }
94
- }, []);
95
- var setEditCellValue = React.useCallback(function (params) {
96
- var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
97
- maybeDebounce(params.id, params.field, params.debounceMs, function () {
98
- var _props$experimentalFe;
99
-
100
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
101
- if (props.editMode === 'row') {
102
- return apiRef.current.unstable_setRowEditingEditCellValue(params);
103
- }
104
-
105
- return apiRef.current.unstable_setCellEditingEditCellValue(params);
106
- }
107
-
108
- var newParams = {
109
- id: params.id,
110
- field: params.field,
111
- props: {
112
- value: params.value
113
- }
114
- };
115
- return apiRef.current.publishEvent('editCellPropsChange', newParams, event);
116
- });
117
- }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
118
- var parseValue = React.useCallback(function (id, field, value) {
119
- var column = apiRef.current.getColumn(field);
120
- return column.valueParser ? column.valueParser(value, apiRef.current.getCellParams(id, field)) : value;
121
- }, [apiRef]);
122
- var setEditCellProps = React.useCallback(function (params) {
123
- var id = params.id,
124
- field = params.field,
125
- editProps = params.props;
126
- logger.debug("Setting cell props on id: ".concat(id, " field: ").concat(field));
127
- apiRef.current.setState(function (state) {
128
- var editRowsModel = _extends({}, state.editRows);
129
-
130
- editRowsModel[id] = _extends({}, state.editRows[id]);
131
- editRowsModel[id][field] = _extends({}, editProps, {
132
- value: parseValue(id, field, editProps.value)
133
- });
134
- return _extends({}, state, {
135
- editRows: editRowsModel
136
- });
137
- });
138
- apiRef.current.forceUpdate();
139
- var editRowsState = gridEditRowsStateSelector(apiRef.current.state);
140
- return editRowsState[id][field];
141
- }, [apiRef, logger, parseValue]);
142
- var setEditRowsModel = React.useCallback(function (model) {
143
- var currentModel = gridEditRowsStateSelector(apiRef.current.state);
144
-
145
- if (currentModel !== model) {
146
- logger.debug("Setting editRows model");
147
- apiRef.current.setState(function (state) {
148
- return _extends({}, state, {
149
- editRows: model
150
- });
151
- });
152
- apiRef.current.forceUpdate();
153
- }
154
- }, [apiRef, logger]);
155
- var getEditRowsModel = React.useCallback(function () {
156
- return gridEditRowsStateSelector(apiRef.current.state);
157
- }, [apiRef]);
158
- var preventTextSelection = React.useCallback(function (params, event) {
159
- var isMoreThanOneClick = event.detail > 1;
160
-
161
- if (params.isEditable && params.cellMode === GridCellModes.View && isMoreThanOneClick) {
162
- // If we click more than one time, then we prevent the default behavior of selecting the text cell.
163
- event.preventDefault();
164
- }
165
- }, []);
166
- useGridApiEventHandler(apiRef, 'cellMouseDown', preventTextSelection);
167
- useGridApiOptionHandler(apiRef, 'editCellPropsChange', props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
168
-
169
- var editingSharedApi = {
170
- isCellEditable: isCellEditable,
171
- setEditRowsModel: setEditRowsModel,
172
- getEditRowsModel: getEditRowsModel,
173
- setEditCellValue: setEditCellValue,
174
- unstable_setEditCellProps: setEditCellProps,
175
- unstable_parseValue: parseValue,
176
- unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
177
- };
178
- useGridApiMethod(apiRef, editingSharedApi, 'EditRowApi');
179
- React.useEffect(function () {
180
- if (props.editRowsModel !== undefined) {
181
- apiRef.current.setEditRowsModel(props.editRowsModel);
182
- }
183
- }, [apiRef, props.editRowsModel]);
184
- }