@mui/x-data-grid 5.8.0 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/CHANGELOG.md +333 -66
  2. package/DataGrid/DataGrid.js +36 -2
  3. package/DataGrid/useDataGridComponent.js +3 -1
  4. package/DataGrid/useDataGridProps.js +2 -1
  5. package/LICENSE +21 -0
  6. package/README.md +7 -5
  7. package/colDef/gridActionsColDef.js +2 -1
  8. package/colDef/gridBooleanColDef.js +2 -1
  9. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  10. package/colDef/gridDateColDef.js +4 -2
  11. package/colDef/gridNumericColDef.js +3 -2
  12. package/colDef/gridNumericOperators.d.ts +2 -0
  13. package/colDef/gridNumericOperators.js +11 -0
  14. package/colDef/gridSingleSelectColDef.js +3 -2
  15. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  16. package/colDef/gridSingleSelectOperators.js +52 -0
  17. package/colDef/gridStringColDef.js +3 -2
  18. package/colDef/gridStringOperators.d.ts +2 -0
  19. package/colDef/gridStringOperators.js +12 -0
  20. package/components/GridFooter.d.ts +4 -2
  21. package/components/GridFooter.js +11 -2
  22. package/components/GridRow.d.ts +4 -0
  23. package/components/GridRow.js +58 -28
  24. package/components/GridRowCount.d.ts +4 -1
  25. package/components/GridRowCount.js +1 -0
  26. package/components/GridScrollArea.js +3 -4
  27. package/components/GridSelectedRowCount.d.ts +4 -1
  28. package/components/GridSelectedRowCount.js +2 -1
  29. package/components/base/GridBody.js +1 -2
  30. package/components/base/GridOverlays.js +5 -5
  31. package/components/cell/GridActionsCell.d.ts +5 -1
  32. package/components/cell/GridActionsCell.js +179 -21
  33. package/components/cell/GridActionsCellItem.d.ts +66 -4
  34. package/components/cell/GridActionsCellItem.js +7 -5
  35. package/components/cell/GridCell.d.ts +1 -0
  36. package/components/cell/GridCell.js +36 -15
  37. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  38. package/components/cell/GridEditBooleanCell.js +101 -6
  39. package/components/cell/GridEditDateCell.d.ts +16 -4
  40. package/components/cell/GridEditDateCell.js +99 -5
  41. package/components/cell/GridEditInputCell.d.ts +11 -5
  42. package/components/cell/GridEditInputCell.js +30 -6
  43. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  44. package/components/cell/GridEditSingleSelectCell.js +50 -18
  45. package/components/cell/index.d.ts +2 -0
  46. package/components/cell/index.js +2 -0
  47. package/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  48. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -1
  49. package/components/columnHeaders/GridColumnHeaders.js +1 -1
  50. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  51. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
  52. package/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  53. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  54. package/components/containers/GridFooterContainer.d.ts +8 -2
  55. package/components/containers/GridFooterContainer.js +11 -2
  56. package/components/containers/GridRootStyles.js +36 -1
  57. package/components/containers/GridToolbarContainer.d.ts +8 -2
  58. package/components/containers/GridToolbarContainer.js +12 -2
  59. package/components/menu/GridMenu.js +1 -0
  60. package/components/panel/GridPanel.js +1 -0
  61. package/components/panel/GridPanelContent.d.ts +8 -1
  62. package/components/panel/GridPanelContent.js +13 -2
  63. package/components/panel/GridPanelFooter.d.ts +8 -1
  64. package/components/panel/GridPanelFooter.js +13 -2
  65. package/components/panel/GridPanelHeader.d.ts +8 -1
  66. package/components/panel/GridPanelHeader.js +13 -2
  67. package/components/panel/filterPanel/GridFilterForm.js +14 -10
  68. package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  69. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
  70. package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
  71. package/components/toolbar/GridToolbar.d.ts +12 -2
  72. package/components/toolbar/GridToolbar.js +30 -7
  73. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  74. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  75. package/components/toolbar/GridToolbarExport.js +15 -20
  76. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  77. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  78. package/components/toolbar/GridToolbarQuickFilter.js +88 -0
  79. package/components/toolbar/index.d.ts +3 -1
  80. package/components/toolbar/index.js +3 -2
  81. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  82. package/components/virtualization/GridVirtualScroller.js +2 -0
  83. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  84. package/components/virtualization/GridVirtualScrollerContent.js +1 -3
  85. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  86. package/constants/defaultGridSlotsComponents.js +3 -2
  87. package/constants/gridClasses.d.ts +20 -0
  88. package/constants/gridClasses.js +1 -1
  89. package/constants/gridDetailPanelToggleField.d.ts +1 -0
  90. package/constants/gridDetailPanelToggleField.js +2 -0
  91. package/constants/localeTextConstants.js +8 -1
  92. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +39 -15
  93. package/hooks/core/pipeProcessing/index.d.ts +1 -0
  94. package/hooks/core/pipeProcessing/index.js +2 -1
  95. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
  96. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  97. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
  98. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  99. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
  100. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  101. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  102. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  103. package/hooks/core/useGridApiInitialization.js +3 -3
  104. package/hooks/core/useGridErrorHandler.js +1 -2
  105. package/hooks/core/useGridStateInitialization.js +1 -2
  106. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
  107. package/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  108. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  109. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
  110. package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
  111. package/hooks/features/columns/gridColumnsUtils.js +61 -8
  112. package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
  113. package/hooks/features/columns/useGridColumnSpanning.js +108 -0
  114. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  115. package/hooks/features/columns/useGridColumns.js +30 -25
  116. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  117. package/hooks/features/dimensions/useGridDimensions.js +10 -11
  118. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  119. package/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  120. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  121. package/hooks/features/editRows/useGridEditing.new.js +7 -3
  122. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  123. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  124. package/hooks/features/editRows/useGridRowEditing.new.js +145 -57
  125. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  126. package/hooks/features/events/useGridEvents.js +17 -18
  127. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  128. package/hooks/features/export/useGridCsvExport.js +23 -16
  129. package/hooks/features/export/useGridPrintExport.js +22 -0
  130. package/hooks/features/export/utils.d.ts +3 -1
  131. package/hooks/features/export/utils.js +13 -0
  132. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  133. package/hooks/features/filter/gridFilterState.js +3 -1
  134. package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
  135. package/hooks/features/filter/gridFilterUtils.js +84 -2
  136. package/hooks/features/filter/useGridFilter.js +32 -15
  137. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  138. package/hooks/features/focus/useGridFocus.js +48 -42
  139. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
  140. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -12
  141. package/hooks/features/pagination/useGridPage.js +3 -4
  142. package/hooks/features/pagination/useGridPageSize.js +2 -3
  143. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  144. package/hooks/features/rows/gridRowsSelector.d.ts +2 -0
  145. package/hooks/features/rows/gridRowsSelector.js +2 -0
  146. package/hooks/features/rows/gridRowsState.d.ts +7 -7
  147. package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  148. package/hooks/features/rows/gridRowsUtils.js +25 -1
  149. package/hooks/features/rows/useGridRows.d.ts +2 -2
  150. package/hooks/features/rows/useGridRows.js +121 -61
  151. package/hooks/features/rows/useGridRowsMeta.js +6 -13
  152. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  153. package/hooks/features/scroll/useGridScroll.d.ts +2 -0
  154. package/hooks/features/scroll/useGridScroll.js +31 -4
  155. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  156. package/hooks/features/selection/useGridSelection.js +15 -11
  157. package/hooks/features/sorting/useGridSorting.js +17 -18
  158. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
  159. package/hooks/features/virtualization/useGridVirtualScroller.js +68 -32
  160. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  161. package/hooks/utils/useGridApiEventHandler.js +22 -9
  162. package/hooks/utils/useGridNativeEventListener.js +1 -2
  163. package/hooks/utils/useGridSelector.js +1 -1
  164. package/index.d.ts +2 -0
  165. package/index.js +1 -1
  166. package/internals/index.d.ts +5 -1
  167. package/internals/index.js +6 -2
  168. package/legacy/DataGrid/DataGrid.js +36 -2
  169. package/legacy/DataGrid/useDataGridComponent.js +3 -1
  170. package/legacy/DataGrid/useDataGridProps.js +2 -1
  171. package/legacy/colDef/gridActionsColDef.js +2 -1
  172. package/legacy/colDef/gridBooleanColDef.js +2 -1
  173. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  174. package/legacy/colDef/gridDateColDef.js +4 -2
  175. package/legacy/colDef/gridNumericColDef.js +3 -2
  176. package/legacy/colDef/gridNumericOperators.js +28 -18
  177. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  178. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  179. package/legacy/colDef/gridStringColDef.js +3 -2
  180. package/legacy/colDef/gridStringOperators.js +25 -14
  181. package/legacy/components/GridFooter.js +11 -2
  182. package/legacy/components/GridRow.js +56 -28
  183. package/legacy/components/GridRowCount.js +1 -0
  184. package/legacy/components/GridScrollArea.js +3 -4
  185. package/legacy/components/GridSelectedRowCount.js +2 -1
  186. package/legacy/components/base/GridBody.js +1 -2
  187. package/legacy/components/base/GridOverlays.js +5 -5
  188. package/legacy/components/cell/GridActionsCell.js +197 -27
  189. package/legacy/components/cell/GridActionsCellItem.js +7 -5
  190. package/legacy/components/cell/GridCell.js +37 -15
  191. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  192. package/legacy/components/cell/GridEditDateCell.js +148 -42
  193. package/legacy/components/cell/GridEditInputCell.js +62 -13
  194. package/legacy/components/cell/GridEditSingleSelectCell.js +65 -28
  195. package/legacy/components/cell/index.js +2 -0
  196. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  197. package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
  198. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -6
  199. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  200. package/legacy/components/containers/GridFooterContainer.js +11 -2
  201. package/legacy/components/containers/GridRootStyles.js +26 -5
  202. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  203. package/legacy/components/menu/GridMenu.js +1 -0
  204. package/legacy/components/panel/GridPanel.js +1 -0
  205. package/legacy/components/panel/GridPanelContent.js +13 -2
  206. package/legacy/components/panel/GridPanelFooter.js +13 -2
  207. package/legacy/components/panel/GridPanelHeader.js +13 -2
  208. package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
  209. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  210. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
  211. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
  212. package/legacy/components/toolbar/GridToolbar.js +31 -6
  213. package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
  214. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  215. package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
  216. package/legacy/components/toolbar/index.js +3 -2
  217. package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
  218. package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
  219. package/legacy/constants/defaultGridSlotsComponents.js +3 -2
  220. package/legacy/constants/gridClasses.js +1 -1
  221. package/legacy/constants/gridDetailPanelToggleField.js +2 -0
  222. package/legacy/constants/localeTextConstants.js +8 -1
  223. package/legacy/hooks/core/pipeProcessing/index.js +2 -1
  224. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
  225. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  226. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  227. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  228. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  229. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  230. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  231. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +94 -16
  232. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  233. package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
  234. package/legacy/hooks/features/columns/useGridColumnSpanning.js +106 -0
  235. package/legacy/hooks/features/columns/useGridColumns.js +30 -25
  236. package/legacy/hooks/features/dimensions/useGridDimensions.js +10 -11
  237. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +225 -89
  238. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  239. package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
  240. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  241. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +157 -65
  242. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  243. package/legacy/hooks/features/events/useGridEvents.js +17 -18
  244. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  245. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  246. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  247. package/legacy/hooks/features/export/utils.js +14 -0
  248. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  249. package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
  250. package/legacy/hooks/features/filter/useGridFilter.js +32 -15
  251. package/legacy/hooks/features/focus/useGridFocus.js +50 -44
  252. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -11
  253. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  254. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  255. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  256. package/legacy/hooks/features/rows/gridRowsSelector.js +6 -0
  257. package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
  258. package/legacy/hooks/features/rows/useGridRows.js +131 -61
  259. package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
  260. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  261. package/legacy/hooks/features/scroll/useGridScroll.js +31 -4
  262. package/legacy/hooks/features/selection/useGridSelection.js +15 -11
  263. package/legacy/hooks/features/sorting/useGridSorting.js +12 -15
  264. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +79 -42
  265. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  266. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  267. package/legacy/hooks/utils/useGridSelector.js +1 -1
  268. package/legacy/index.js +1 -1
  269. package/legacy/internals/index.js +6 -2
  270. package/legacy/locales/arSD.js +8 -1
  271. package/legacy/locales/bgBG.js +8 -1
  272. package/legacy/locales/csCZ.js +7 -0
  273. package/legacy/locales/daDK.js +8 -1
  274. package/legacy/locales/deDE.js +10 -3
  275. package/legacy/locales/elGR.js +7 -0
  276. package/legacy/locales/esES.js +7 -0
  277. package/legacy/locales/faIR.js +8 -1
  278. package/legacy/locales/fiFI.js +7 -0
  279. package/legacy/locales/frFR.js +7 -0
  280. package/legacy/locales/heIL.js +8 -1
  281. package/legacy/locales/huHU.js +127 -0
  282. package/legacy/locales/index.js +1 -0
  283. package/legacy/locales/itIT.js +7 -0
  284. package/legacy/locales/jaJP.js +7 -0
  285. package/legacy/locales/koKR.js +7 -0
  286. package/legacy/locales/nlNL.js +7 -0
  287. package/legacy/locales/plPL.js +8 -1
  288. package/legacy/locales/ptBR.js +8 -1
  289. package/legacy/locales/ruRU.js +7 -0
  290. package/legacy/locales/skSK.js +7 -0
  291. package/legacy/locales/trTR.js +8 -1
  292. package/legacy/locales/ukUA.js +7 -0
  293. package/legacy/locales/viVN.js +7 -0
  294. package/legacy/locales/zhCN.js +7 -0
  295. package/legacy/models/api/gridColumnSpanning.js +1 -0
  296. package/legacy/models/events/gridEvents.js +10 -3
  297. package/legacy/models/gridColumnSpanning.js +1 -0
  298. package/legacy/models/index.js +4 -3
  299. package/legacy/utils/createSelector.js +18 -2
  300. package/legacy/utils/exportAs.js +1 -1
  301. package/locales/arSD.js +8 -1
  302. package/locales/bgBG.js +8 -1
  303. package/locales/csCZ.js +7 -0
  304. package/locales/daDK.js +8 -1
  305. package/locales/deDE.js +10 -3
  306. package/locales/elGR.js +7 -0
  307. package/locales/esES.js +7 -0
  308. package/locales/faIR.js +8 -1
  309. package/locales/fiFI.js +7 -0
  310. package/locales/frFR.js +7 -0
  311. package/locales/heIL.js +8 -1
  312. package/locales/huHU.d.ts +2 -0
  313. package/locales/huHU.js +115 -0
  314. package/locales/index.d.ts +1 -0
  315. package/locales/index.js +1 -0
  316. package/locales/itIT.js +7 -0
  317. package/locales/jaJP.js +7 -0
  318. package/locales/koKR.js +7 -0
  319. package/locales/nlNL.js +7 -0
  320. package/locales/plPL.js +8 -1
  321. package/locales/ptBR.js +8 -1
  322. package/locales/ruRU.js +7 -0
  323. package/locales/skSK.js +7 -0
  324. package/locales/trTR.js +8 -1
  325. package/locales/ukUA.js +7 -0
  326. package/locales/viVN.js +7 -0
  327. package/locales/zhCN.js +7 -0
  328. package/models/api/gridApiCommon.d.ts +2 -1
  329. package/models/api/gridColumnSpanning.d.ts +28 -0
  330. package/models/api/gridColumnSpanning.js +1 -0
  331. package/models/api/gridCoreApi.d.ts +10 -0
  332. package/models/api/gridEditingApi.d.ts +72 -7
  333. package/models/api/gridFilterApi.d.ts +5 -0
  334. package/models/api/gridFocusApi.d.ts +1 -0
  335. package/models/api/gridLocaleTextApi.d.ts +5 -0
  336. package/models/api/gridRowApi.d.ts +34 -0
  337. package/models/api/index.d.ts +1 -1
  338. package/models/colDef/gridColDef.d.ts +18 -0
  339. package/models/events/gridEventLookup.d.ts +296 -11
  340. package/models/events/gridEvents.d.ts +10 -258
  341. package/models/events/gridEvents.js +10 -3
  342. package/models/gridColumnSpanning.d.ts +12 -0
  343. package/models/gridColumnSpanning.js +1 -0
  344. package/models/gridEditRowModel.d.ts +1 -1
  345. package/models/gridExport.d.ts +29 -2
  346. package/models/gridFilterModel.d.ts +11 -0
  347. package/models/gridFilterOperator.d.ts +1 -1
  348. package/models/gridIconSlotsComponent.d.ts +5 -0
  349. package/models/gridStateCommunity.d.ts +0 -2
  350. package/models/index.d.ts +1 -1
  351. package/models/index.js +4 -3
  352. package/models/params/gridCellParams.d.ts +12 -2
  353. package/models/params/gridRowParams.d.ts +5 -0
  354. package/models/props/DataGridProps.d.ts +57 -29
  355. package/modern/DataGrid/DataGrid.js +36 -2
  356. package/modern/DataGrid/useDataGridComponent.js +3 -1
  357. package/modern/DataGrid/useDataGridProps.js +2 -1
  358. package/modern/colDef/gridActionsColDef.js +2 -1
  359. package/modern/colDef/gridBooleanColDef.js +2 -1
  360. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  361. package/modern/colDef/gridDateColDef.js +4 -2
  362. package/modern/colDef/gridNumericColDef.js +3 -2
  363. package/modern/colDef/gridNumericOperators.js +11 -0
  364. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  365. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  366. package/modern/colDef/gridStringColDef.js +3 -2
  367. package/modern/colDef/gridStringOperators.js +12 -0
  368. package/modern/components/GridFooter.js +11 -2
  369. package/modern/components/GridRow.js +56 -26
  370. package/modern/components/GridRowCount.js +1 -0
  371. package/modern/components/GridScrollArea.js +3 -4
  372. package/modern/components/GridSelectedRowCount.js +2 -1
  373. package/modern/components/base/GridBody.js +1 -2
  374. package/modern/components/base/GridOverlays.js +5 -5
  375. package/modern/components/cell/GridActionsCell.js +179 -21
  376. package/modern/components/cell/GridActionsCellItem.js +7 -5
  377. package/modern/components/cell/GridCell.js +36 -15
  378. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  379. package/modern/components/cell/GridEditDateCell.js +99 -5
  380. package/modern/components/cell/GridEditInputCell.js +30 -6
  381. package/modern/components/cell/GridEditSingleSelectCell.js +48 -16
  382. package/modern/components/cell/index.js +2 -0
  383. package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  384. package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
  385. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  386. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  387. package/modern/components/containers/GridFooterContainer.js +11 -2
  388. package/modern/components/containers/GridRootStyles.js +36 -1
  389. package/modern/components/containers/GridToolbarContainer.js +12 -2
  390. package/modern/components/menu/GridMenu.js +1 -0
  391. package/modern/components/panel/GridPanel.js +1 -0
  392. package/modern/components/panel/GridPanelContent.js +13 -2
  393. package/modern/components/panel/GridPanelFooter.js +13 -2
  394. package/modern/components/panel/GridPanelHeader.js +13 -2
  395. package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
  396. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
  397. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
  398. package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
  399. package/modern/components/toolbar/GridToolbar.js +30 -7
  400. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  401. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  402. package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
  403. package/modern/components/toolbar/index.js +3 -2
  404. package/modern/components/virtualization/GridVirtualScroller.js +2 -0
  405. package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
  406. package/modern/constants/defaultGridSlotsComponents.js +3 -2
  407. package/modern/constants/gridClasses.js +1 -1
  408. package/modern/constants/gridDetailPanelToggleField.js +2 -0
  409. package/modern/constants/localeTextConstants.js +8 -1
  410. package/modern/hooks/core/pipeProcessing/index.js +2 -1
  411. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  412. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  413. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  414. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  415. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  416. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  417. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  418. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  419. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  420. package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
  421. package/modern/hooks/features/columns/useGridColumnSpanning.js +106 -0
  422. package/modern/hooks/features/columns/useGridColumns.js +30 -25
  423. package/modern/hooks/features/dimensions/useGridDimensions.js +10 -11
  424. package/modern/hooks/features/editRows/useGridCellEditing.new.js +149 -42
  425. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  426. package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
  427. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  428. package/modern/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  429. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  430. package/modern/hooks/features/events/useGridEvents.js +17 -18
  431. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  432. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  433. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  434. package/modern/hooks/features/export/utils.js +13 -0
  435. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  436. package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
  437. package/modern/hooks/features/filter/useGridFilter.js +32 -15
  438. package/modern/hooks/features/focus/useGridFocus.js +48 -42
  439. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +41 -12
  440. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  441. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  442. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  443. package/modern/hooks/features/rows/gridRowsSelector.js +2 -0
  444. package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
  445. package/modern/hooks/features/rows/useGridRows.js +121 -61
  446. package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
  447. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  448. package/modern/hooks/features/scroll/useGridScroll.js +29 -4
  449. package/modern/hooks/features/selection/useGridSelection.js +15 -11
  450. package/modern/hooks/features/sorting/useGridSorting.js +17 -18
  451. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +68 -28
  452. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  453. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  454. package/modern/hooks/utils/useGridSelector.js +1 -1
  455. package/modern/index.js +1 -1
  456. package/modern/internals/index.js +6 -2
  457. package/modern/locales/arSD.js +8 -1
  458. package/modern/locales/bgBG.js +8 -1
  459. package/modern/locales/csCZ.js +7 -0
  460. package/modern/locales/daDK.js +8 -1
  461. package/modern/locales/deDE.js +10 -3
  462. package/modern/locales/elGR.js +7 -0
  463. package/modern/locales/esES.js +7 -0
  464. package/modern/locales/faIR.js +8 -1
  465. package/modern/locales/fiFI.js +7 -0
  466. package/modern/locales/frFR.js +7 -0
  467. package/modern/locales/heIL.js +8 -1
  468. package/modern/locales/huHU.js +115 -0
  469. package/modern/locales/index.js +1 -0
  470. package/modern/locales/itIT.js +7 -0
  471. package/modern/locales/jaJP.js +7 -0
  472. package/modern/locales/koKR.js +7 -0
  473. package/modern/locales/nlNL.js +7 -0
  474. package/modern/locales/plPL.js +8 -1
  475. package/modern/locales/ptBR.js +8 -1
  476. package/modern/locales/ruRU.js +7 -0
  477. package/modern/locales/skSK.js +7 -0
  478. package/modern/locales/trTR.js +8 -1
  479. package/modern/locales/ukUA.js +7 -0
  480. package/modern/locales/viVN.js +7 -0
  481. package/modern/locales/zhCN.js +7 -0
  482. package/modern/models/api/gridColumnSpanning.js +1 -0
  483. package/modern/models/events/gridEvents.js +10 -3
  484. package/modern/models/gridColumnSpanning.js +1 -0
  485. package/modern/models/index.js +4 -3
  486. package/modern/utils/createSelector.js +20 -2
  487. package/modern/utils/exportAs.js +1 -1
  488. package/node/DataGrid/DataGrid.js +36 -2
  489. package/node/DataGrid/useDataGridComponent.js +4 -1
  490. package/node/DataGrid/useDataGridProps.js +2 -1
  491. package/node/colDef/gridActionsColDef.js +2 -1
  492. package/node/colDef/gridBooleanColDef.js +2 -1
  493. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  494. package/node/colDef/gridDateColDef.js +4 -2
  495. package/node/colDef/gridNumericColDef.js +2 -1
  496. package/node/colDef/gridNumericOperators.js +15 -1
  497. package/node/colDef/gridSingleSelectColDef.js +2 -1
  498. package/node/colDef/gridSingleSelectOperators.js +56 -1
  499. package/node/colDef/gridStringColDef.js +2 -1
  500. package/node/colDef/gridStringOperators.js +16 -1
  501. package/node/components/GridFooter.js +10 -1
  502. package/node/components/GridRow.js +59 -29
  503. package/node/components/GridRowCount.js +1 -0
  504. package/node/components/GridScrollArea.js +3 -5
  505. package/node/components/GridSelectedRowCount.js +2 -1
  506. package/node/components/base/GridBody.js +1 -3
  507. package/node/components/base/GridOverlays.js +4 -5
  508. package/node/components/cell/GridActionsCell.js +181 -21
  509. package/node/components/cell/GridActionsCellItem.js +7 -4
  510. package/node/components/cell/GridCell.js +35 -14
  511. package/node/components/cell/GridEditBooleanCell.js +100 -5
  512. package/node/components/cell/GridEditDateCell.js +98 -4
  513. package/node/components/cell/GridEditInputCell.js +30 -6
  514. package/node/components/cell/GridEditSingleSelectCell.js +50 -18
  515. package/node/components/cell/index.js +26 -0
  516. package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -24
  517. package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
  518. package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -7
  519. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  520. package/node/components/containers/GridFooterContainer.js +10 -1
  521. package/node/components/containers/GridRootStyles.js +36 -1
  522. package/node/components/containers/GridToolbarContainer.js +11 -1
  523. package/node/components/menu/GridMenu.js +1 -0
  524. package/node/components/panel/GridPanel.js +1 -0
  525. package/node/components/panel/GridPanelContent.js +11 -1
  526. package/node/components/panel/GridPanelFooter.js +11 -1
  527. package/node/components/panel/GridPanelHeader.js +11 -1
  528. package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
  529. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
  530. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
  531. package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
  532. package/node/components/toolbar/GridToolbar.js +32 -7
  533. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  534. package/node/components/toolbar/GridToolbarExport.js +14 -19
  535. package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
  536. package/node/components/toolbar/index.js +42 -11
  537. package/node/components/virtualization/GridVirtualScroller.js +2 -0
  538. package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
  539. package/node/constants/defaultGridSlotsComponents.js +2 -1
  540. package/node/constants/gridClasses.js +1 -1
  541. package/node/constants/gridDetailPanelToggleField.js +9 -0
  542. package/node/constants/localeTextConstants.js +8 -1
  543. package/node/hooks/core/pipeProcessing/index.js +13 -0
  544. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
  545. package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
  546. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
  547. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  548. package/node/hooks/core/useGridApiInitialization.js +3 -4
  549. package/node/hooks/core/useGridErrorHandler.js +1 -3
  550. package/node/hooks/core/useGridStateInitialization.js +1 -3
  551. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +85 -17
  552. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  553. package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
  554. package/node/hooks/features/columns/useGridColumnSpanning.js +128 -0
  555. package/node/hooks/features/columns/useGridColumns.js +29 -25
  556. package/node/hooks/features/dimensions/useGridDimensions.js +10 -12
  557. package/node/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  558. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  559. package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
  560. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  561. package/node/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  562. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  563. package/node/hooks/features/events/useGridEvents.js +17 -19
  564. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  565. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  566. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  567. package/node/hooks/features/export/utils.js +19 -2
  568. package/node/hooks/features/filter/gridFilterState.js +3 -1
  569. package/node/hooks/features/filter/gridFilterUtils.js +92 -3
  570. package/node/hooks/features/filter/useGridFilter.js +33 -16
  571. package/node/hooks/features/focus/useGridFocus.js +48 -43
  572. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +44 -13
  573. package/node/hooks/features/pagination/useGridPage.js +3 -5
  574. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  575. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  576. package/node/hooks/features/rows/gridRowsSelector.js +5 -1
  577. package/node/hooks/features/rows/gridRowsUtils.js +29 -1
  578. package/node/hooks/features/rows/useGridRows.js +122 -61
  579. package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
  580. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  581. package/node/hooks/features/scroll/useGridScroll.js +32 -3
  582. package/node/hooks/features/selection/useGridSelection.js +16 -12
  583. package/node/hooks/features/sorting/useGridSorting.js +17 -19
  584. package/node/hooks/features/virtualization/useGridVirtualScroller.js +73 -33
  585. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  586. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  587. package/node/hooks/utils/useGridSelector.js +1 -1
  588. package/node/index.js +1 -1
  589. package/node/internals/index.js +47 -3
  590. package/node/locales/arSD.js +8 -1
  591. package/node/locales/bgBG.js +8 -1
  592. package/node/locales/csCZ.js +7 -0
  593. package/node/locales/daDK.js +8 -1
  594. package/node/locales/deDE.js +10 -3
  595. package/node/locales/elGR.js +7 -0
  596. package/node/locales/esES.js +7 -0
  597. package/node/locales/faIR.js +8 -1
  598. package/node/locales/fiFI.js +7 -0
  599. package/node/locales/frFR.js +7 -0
  600. package/node/locales/heIL.js +8 -1
  601. package/node/locales/huHU.js +125 -0
  602. package/node/locales/index.js +13 -0
  603. package/node/locales/itIT.js +7 -0
  604. package/node/locales/jaJP.js +7 -0
  605. package/node/locales/koKR.js +7 -0
  606. package/node/locales/nlNL.js +7 -0
  607. package/node/locales/plPL.js +8 -1
  608. package/node/locales/ptBR.js +8 -1
  609. package/node/locales/ruRU.js +7 -0
  610. package/node/locales/skSK.js +7 -0
  611. package/node/locales/trTR.js +8 -1
  612. package/node/locales/ukUA.js +7 -0
  613. package/node/locales/viVN.js +7 -0
  614. package/node/locales/zhCN.js +7 -0
  615. package/node/models/api/gridColumnSpanning.js +5 -0
  616. package/node/models/events/gridEvents.js +10 -3
  617. package/node/models/gridColumnSpanning.js +5 -0
  618. package/node/models/index.js +0 -13
  619. package/node/utils/createSelector.js +25 -4
  620. package/node/utils/exportAs.js +1 -1
  621. package/package.json +4 -4
  622. package/utils/createSelector.d.ts +2 -1
  623. package/utils/createSelector.js +20 -2
  624. package/utils/domUtils.d.ts +2 -2
  625. package/utils/exportAs.d.ts +2 -2
  626. package/utils/exportAs.js +1 -1
@@ -5,7 +5,6 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
5
  import * as React from 'react';
6
6
  import { useEventCallback } from '@mui/material/utils';
7
7
  import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
8
- import { GridEvents } from '../../../models/events/gridEvents';
9
8
  import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
10
9
  import { isKeyboardEvent, isPrintableKey, isCellEnterEditModeKeys, isCellExitEditModeKeys, isCellEditCommitKeys, isDeleteKeys } from '../../../utils/keyboardUtils';
11
10
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -58,7 +57,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
58
57
  });
59
58
  });
60
59
  apiRef.current.forceUpdate();
61
- apiRef.current.publishEvent(GridEvents.cellModeChange, apiRef.current.getCellParams(id, field));
60
+ apiRef.current.publishEvent('cellModeChange', apiRef.current.getCellParams(id, field));
62
61
  }, [apiRef, logger]);
63
62
  var getCellMode = React.useCallback(function (id, field) {
64
63
  var editRowsState = gridEditRowsStateSelector(apiRef.current.state);
@@ -116,7 +115,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
116
115
  return false;
117
116
  }
118
117
 
119
- apiRef.current.publishEvent(GridEvents.cellEditCommit, commitParams, event);
118
+ apiRef.current.publishEvent('cellEditCommit', commitParams, event);
120
119
  return true;
121
120
  });
122
121
  }
@@ -130,7 +129,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
130
129
  }
131
130
 
132
131
  if (!hasError) {
133
- apiRef.current.publishEvent(GridEvents.cellEditCommit, commitParams, event);
132
+ apiRef.current.publishEvent('cellEditCommit', commitParams, event);
134
133
  return true;
135
134
  }
136
135
 
@@ -204,7 +203,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
204
203
  isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
205
204
 
206
205
  if (!isEditMode && isCellEnterEditModeKeys(event.key) && !isModifierKeyPressed && !(event.key === ' ' && event.shiftKey)) {
207
- apiRef.current.publishEvent(GridEvents.cellEditStart, params, event);
206
+ apiRef.current.publishEvent('cellEditStart', params, event);
208
207
  }
209
208
 
210
209
  if (!isEditMode && isDeleteKeys(event.key)) {
@@ -217,7 +216,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
217
216
  id: id,
218
217
  field: field
219
218
  }, event);
220
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
219
+ apiRef.current.publishEvent('cellEditStop', params, event);
221
220
  }
222
221
 
223
222
  if (!(isEditMode && isCellEditCommitKeys(event.key))) {
@@ -244,7 +243,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
244
243
 
245
244
  case 14:
246
245
  if (isEditMode && isCellExitEditModeKeys(event.key)) {
247
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
246
+ apiRef.current.publishEvent('cellEditStop', params, event);
248
247
  }
249
248
 
250
249
  case 15:
@@ -264,7 +263,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
264
263
  return;
265
264
  }
266
265
 
267
- apiRef.current.publishEvent(GridEvents.cellEditStart, params, event);
266
+ apiRef.current.publishEvent('cellEditStart', params, event);
268
267
  }, [apiRef]);
269
268
 
270
269
  var commitPropsAndExit = /*#__PURE__*/function () {
@@ -285,7 +284,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
285
284
  return apiRef.current.commitCellChange(params, event);
286
285
 
287
286
  case 4:
288
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
287
+ apiRef.current.publishEvent('cellEditStop', params, event);
289
288
 
290
289
  case 5:
291
290
  case "end":
@@ -338,7 +337,7 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
338
337
  }
339
338
 
340
339
  if (isCellEditCommitKeys(event.key)) {
341
- apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, params, event);
340
+ apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
342
341
  return;
343
342
  }
344
343
 
@@ -390,15 +389,15 @@ export var useCellEditing = function useCellEditing(apiRef, props) {
390
389
  }));
391
390
  }
392
391
  }, [apiRef]);
393
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, buildCallback(handleCellKeyDown));
394
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, buildCallback(handleCellDoubleClick));
395
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, buildCallback(handleCellFocusOut));
396
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, buildCallback(handleColumnHeaderDragStart));
397
- useGridApiEventHandler(apiRef, GridEvents.cellEditStart, buildCallback(handleCellEditStart));
398
- useGridApiEventHandler(apiRef, GridEvents.cellEditStop, buildCallback(handleCellEditStop));
399
- useGridApiEventHandler(apiRef, GridEvents.cellEditCommit, buildCallback(handleCellEditCommit));
400
- useGridApiEventHandler(apiRef, GridEvents.editCellPropsChange, buildCallback(handleEditCellPropsChange));
401
- useGridApiOptionHandler(apiRef, GridEvents.cellEditCommit, props.onCellEditCommit);
402
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStart, props.onCellEditStart);
403
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStop, props.onCellEditStop);
392
+ useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
393
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
394
+ useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
395
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
396
+ useGridApiEventHandler(apiRef, 'cellEditStart', buildCallback(handleCellEditStart));
397
+ useGridApiEventHandler(apiRef, 'cellEditStop', buildCallback(handleCellEditStop));
398
+ useGridApiEventHandler(apiRef, 'cellEditCommit', buildCallback(handleCellEditCommit));
399
+ useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
400
+ useGridApiOptionHandler(apiRef, 'cellEditCommit', props.onCellEditCommit);
401
+ useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
402
+ useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
404
403
  };
@@ -5,7 +5,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
5
  import * as React from 'react';
6
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
7
  import { useGridCellEditing } from './useGridCellEditing.new';
8
- import { GridCellModes } from '../../../models/gridEditRowModel';
8
+ import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
9
9
  import { useGridRowEditing } from './useGridRowEditing.new';
10
10
  export var editingStateInitializer = function editingStateInitializer(state) {
11
11
  return _extends({}, state, {
@@ -119,7 +119,7 @@ export var useGridEditing = function useGridEditing(apiRef, props) {
119
119
  while (1) {
120
120
  switch (_context.prev = _context.next) {
121
121
  case 0:
122
- setEditCellValueToCall = props.editMode === 'row' ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
122
+ setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
123
123
  // By the time this callback runs the user may have cancelled the editing
124
124
 
125
125
  if (!(apiRef.current.getCellMode(id, field) === GridCellModes.Edit)) {
@@ -143,10 +143,14 @@ export var useGridEditing = function useGridEditing(apiRef, props) {
143
143
  })));
144
144
  });
145
145
  }, [apiRef, props.editMode]);
146
+ var getRowWithUpdatedValues = React.useCallback(function (id, field) {
147
+ return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
148
+ }, [apiRef, props.editMode]);
146
149
  var editingSharedApi = {
147
150
  isCellEditable: isCellEditable,
148
151
  setEditCellValue: setEditCellValue,
149
- unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
152
+ unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,
153
+ unstable_getRowWithUpdatedValues: getRowWithUpdatedValues
150
154
  };
151
155
  useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');
152
156
  };
@@ -1,7 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { GridCellModes } from '../../../models/gridEditRowModel';
6
5
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
7
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -32,7 +31,7 @@ export function useGridEditing(apiRef, props) {
32
31
  propModel: props.editRowsModel,
33
32
  propOnChange: props.onEditRowsModelChange,
34
33
  stateSelector: gridEditRowsStateSelector,
35
- changeEvent: GridEvents.editRowsModelChange
34
+ changeEvent: 'editRowsModelChange'
36
35
  });
37
36
  var isCellEditable = React.useCallback(function (params) {
38
37
  return !params.rowNode.isAutoGenerated && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params));
@@ -112,7 +111,7 @@ export function useGridEditing(apiRef, props) {
112
111
  value: params.value
113
112
  }
114
113
  };
115
- return apiRef.current.publishEvent(GridEvents.editCellPropsChange, newParams, event);
114
+ return apiRef.current.publishEvent('editCellPropsChange', newParams, event);
116
115
  });
117
116
  }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
118
117
  var parseValue = React.useCallback(function (id, field, value) {
@@ -163,8 +162,8 @@ export function useGridEditing(apiRef, props) {
163
162
  event.preventDefault();
164
163
  }
165
164
  }, []);
166
- useGridApiEventHandler(apiRef, GridEvents.cellMouseDown, preventTextSelection);
167
- useGridApiOptionHandler(apiRef, GridEvents.editCellPropsChange, props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
165
+ useGridApiEventHandler(apiRef, 'cellMouseDown', preventTextSelection);
166
+ useGridApiOptionHandler(apiRef, 'editCellPropsChange', props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
168
167
 
169
168
  var editingSharedApi = {
170
169
  isCellEditable: isCellEditable,
@@ -1,24 +1,35 @@
1
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
1
  import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
6
+ var _excluded = ["id"],
7
+ _excluded2 = ["id"];
6
8
  import * as React from 'react';
7
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
8
- import { GridEvents } from '../../../models/events/gridEvents';
9
+ import { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';
9
10
  import { GridEditModes, GridRowModes } from '../../../models/gridEditRowModel';
10
11
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
11
12
  import { gridEditRowsStateSelector } from './gridEditRowsSelector';
12
13
  import { isPrintableKey } from '../../../utils/keyboardUtils';
13
14
  import { gridColumnFieldsSelector } from '../columns/gridColumnsSelector';
14
15
  import { buildWarning } from '../../../utils/warning';
16
+ import { gridRowsIdToIdLookupSelector } from '../rows/gridRowsSelector';
15
17
  import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
16
18
  var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
17
19
  export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
20
+ var _React$useState = React.useState({}),
21
+ _React$useState2 = _slicedToArray(_React$useState, 2),
22
+ rowModesModel = _React$useState2[0],
23
+ setRowModesModel = _React$useState2[1];
24
+
25
+ var prevRowModesModel = React.useRef({});
18
26
  var focusTimeout = React.useRef(null);
19
27
  var nextFocusedCell = React.useRef(null);
20
28
  var processRowUpdate = props.processRowUpdate,
21
- onProcessRowUpdateError = props.onProcessRowUpdateError;
29
+ onProcessRowUpdateError = props.onProcessRowUpdateError,
30
+ rowModesModelProp = props.rowModesModel,
31
+ onRowModesModelChange = props.onRowModesModelChange,
32
+ signature = props.signature;
22
33
 
23
34
  var runIfEditModeIsRow = function runIfEditModeIsRow(callback) {
24
35
  return function () {
@@ -56,7 +67,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
56
67
  reason: GridRowEditStartReasons.cellDoubleClick
57
68
  });
58
69
 
59
- apiRef.current.publishEvent(GridEvents.rowEditStart, newParams, event);
70
+ apiRef.current.publishEvent('rowEditStart', newParams, event);
60
71
  }, [apiRef]);
61
72
  var handleCellFocusIn = React.useCallback(function (params) {
62
73
  nextFocusedCell.current = params;
@@ -82,6 +93,11 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
82
93
  focusTimeout.current = null;
83
94
 
84
95
  if (((_nextFocusedCell$curr = nextFocusedCell.current) == null ? void 0 : _nextFocusedCell$curr.id) !== params.id) {
96
+ // The row might have been deleted during the click
97
+ if (!apiRef.current.getRow(params.id)) {
98
+ return;
99
+ }
100
+
85
101
  var rowParams = apiRef.current.getRowParams(params.id);
86
102
 
87
103
  var newParams = _extends({}, rowParams, {
@@ -89,7 +105,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
89
105
  reason: GridRowEditStopReasons.rowFocusOut
90
106
  });
91
107
 
92
- apiRef.current.publishEvent(GridEvents.rowEditStop, newParams, event);
108
+ apiRef.current.publishEvent('rowEditStop', newParams, event);
93
109
  }
94
110
  });
95
111
  }, [apiRef]);
@@ -134,7 +150,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
134
150
  field: params.field
135
151
  });
136
152
 
137
- apiRef.current.publishEvent(GridEvents.rowEditStop, newParams, event);
153
+ apiRef.current.publishEvent('rowEditStop', newParams, event);
138
154
  }
139
155
  } else if (params.isEditable) {
140
156
  var _reason;
@@ -159,26 +175,24 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
159
175
  reason: _reason
160
176
  });
161
177
 
162
- apiRef.current.publishEvent(GridEvents.rowEditStart, _newParams, event);
178
+ apiRef.current.publishEvent('rowEditStart', _newParams, event);
163
179
  }
164
180
  }
165
181
  }, [apiRef]);
166
- var handleRowEditStart = React.useCallback(function (params, event) {
182
+ var handleRowEditStart = React.useCallback(function (params) {
167
183
  var id = params.id,
168
184
  field = params.field,
169
185
  reason = params.reason;
170
- apiRef.current.startRowEditMode({
186
+ var startRowEditModeParams = {
171
187
  id: id,
172
188
  fieldToFocus: field
173
- });
189
+ };
174
190
 
175
191
  if (reason === GridRowEditStartReasons.deleteKeyDown || reason === GridRowEditStartReasons.printableKeyDown) {
176
- apiRef.current.setEditCellValue({
177
- id: id,
178
- field: field,
179
- value: ''
180
- }, event);
192
+ startRowEditModeParams.deleteValue = !!field;
181
193
  }
194
+
195
+ apiRef.current.startRowEditMode(startRowEditModeParams);
182
196
  }, [apiRef]);
183
197
  var handleRowEditStop = React.useCallback(function (params) {
184
198
  var id = params.id,
@@ -213,14 +227,14 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
213
227
  cellToFocusAfter: cellToFocusAfter
214
228
  });
215
229
  }, [apiRef]);
216
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, runIfEditModeIsRow(handleCellDoubleClick));
217
- useGridApiEventHandler(apiRef, GridEvents.cellFocusIn, runIfEditModeIsRow(handleCellFocusIn));
218
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, runIfEditModeIsRow(handleCellFocusOut));
219
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, runIfEditModeIsRow(handleCellKeyDown));
220
- useGridApiEventHandler(apiRef, GridEvents.rowEditStart, runIfEditModeIsRow(handleRowEditStart));
221
- useGridApiEventHandler(apiRef, GridEvents.rowEditStop, runIfEditModeIsRow(handleRowEditStop));
222
- useGridApiOptionHandler(apiRef, GridEvents.rowEditStart, props.onRowEditStart);
223
- useGridApiOptionHandler(apiRef, GridEvents.rowEditStop, props.onRowEditStop);
230
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsRow(handleCellDoubleClick));
231
+ useGridApiEventHandler(apiRef, 'cellFocusIn', runIfEditModeIsRow(handleCellFocusIn));
232
+ useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsRow(handleCellFocusOut));
233
+ useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsRow(handleCellKeyDown));
234
+ useGridApiEventHandler(apiRef, 'rowEditStart', runIfEditModeIsRow(handleRowEditStart));
235
+ useGridApiEventHandler(apiRef, 'rowEditStop', runIfEditModeIsRow(handleRowEditStop));
236
+ useGridApiOptionHandler(apiRef, 'rowEditStart', props.onRowEditStart);
237
+ useGridApiOptionHandler(apiRef, 'rowEditStop', props.onRowEditStop);
224
238
  var getRowMode = React.useCallback(function (id) {
225
239
  if (props.editMode === GridEditModes.Cell) {
226
240
  return GridRowModes.View;
@@ -230,6 +244,34 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
230
244
  var isEditing = editingState[id] && Object.keys(editingState[id]).length > 0;
231
245
  return isEditing ? GridRowModes.Edit : GridRowModes.View;
232
246
  }, [apiRef, props.editMode]);
247
+ var updateRowModesModel = React.useCallback(function (newModel) {
248
+ var isNewModelDifferentFromProp = newModel !== props.rowModesModel;
249
+
250
+ if (onRowModesModelChange && isNewModelDifferentFromProp) {
251
+ var details = signature === GridSignature.DataGridPro ? {
252
+ api: apiRef.current
253
+ } : {};
254
+ onRowModesModelChange(newModel, details);
255
+ }
256
+
257
+ if (props.rowModesModel && isNewModelDifferentFromProp) {
258
+ return; // The prop always win
259
+ }
260
+
261
+ setRowModesModel(newModel);
262
+ apiRef.current.publishEvent('rowModesModelChange', newModel);
263
+ }, [apiRef, onRowModesModelChange, props.rowModesModel, signature]);
264
+ var updateRowInRowModesModel = React.useCallback(function (id, newProps) {
265
+ var newModel = _extends({}, rowModesModel);
266
+
267
+ if (newProps !== null) {
268
+ newModel[id] = _extends({}, newProps);
269
+ } else {
270
+ delete newModel[id];
271
+ }
272
+
273
+ updateRowModesModel(newModel);
274
+ }, [rowModesModel, updateRowModesModel]);
233
275
  var updateOrDeleteRowState = React.useCallback(function (id, newProps) {
234
276
  apiRef.current.setState(function (state) {
235
277
  var newEditingState = _extends({}, state.editRows);
@@ -268,13 +310,17 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
268
310
  }, [apiRef]);
269
311
  var startRowEditMode = React.useCallback(function (params) {
270
312
  var id = params.id,
271
- fieldToFocus = params.fieldToFocus;
272
- throwIfNotInMode(id, GridRowModes.View);
273
-
274
- if (apiRef.current.getRowMode(id) === GridRowModes.Edit) {
275
- throw new Error("MUI: The cell with id=".concat(id, " is already in edit mode."));
276
- }
313
+ other = _objectWithoutProperties(params, _excluded);
277
314
 
315
+ throwIfNotInMode(id, GridRowModes.View);
316
+ updateRowInRowModesModel(id, _extends({
317
+ mode: GridRowModes.Edit
318
+ }, other));
319
+ }, [throwIfNotInMode, updateRowInRowModesModel]);
320
+ var updateStateToStartRowEditMode = React.useCallback(function (params) {
321
+ var id = params.id,
322
+ fieldToFocus = params.fieldToFocus,
323
+ deleteValue = params.deleteValue;
278
324
  var columnFields = gridColumnFieldsSelector(apiRef);
279
325
  var newProps = columnFields.reduce(function (acc, field) {
280
326
  var cellParams = apiRef.current.getCellParams(id, field);
@@ -283,8 +329,9 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
283
329
  return acc;
284
330
  }
285
331
 
332
+ var shouldDeleteValue = deleteValue && fieldToFocus === field;
286
333
  acc[field] = {
287
- value: apiRef.current.getCellValue(id, field),
334
+ value: shouldDeleteValue ? '' : apiRef.current.getCellValue(id, field),
288
335
  error: false,
289
336
  isProcessingProps: false
290
337
  };
@@ -295,25 +342,35 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
295
342
  if (fieldToFocus) {
296
343
  apiRef.current.setCellFocus(id, fieldToFocus);
297
344
  }
298
- }, [apiRef, throwIfNotInMode, updateOrDeleteRowState]);
345
+ }, [apiRef, updateOrDeleteRowState]);
299
346
  var stopRowEditMode = React.useCallback(function (params) {
347
+ var id = params.id,
348
+ other = _objectWithoutProperties(params, _excluded2);
349
+
350
+ throwIfNotInMode(id, GridRowModes.Edit);
351
+ updateRowInRowModesModel(id, _extends({
352
+ mode: GridRowModes.View
353
+ }, other));
354
+ }, [throwIfNotInMode, updateRowInRowModesModel]);
355
+ var updateStateToStopRowEditMode = React.useCallback(function (params) {
300
356
  var id = params.id,
301
357
  ignoreModifications = params.ignoreModifications,
302
358
  focusedField = params.field,
303
359
  _params$cellToFocusAf = params.cellToFocusAfter,
304
360
  cellToFocusAfter = _params$cellToFocusAf === void 0 ? 'none' : _params$cellToFocusAf;
305
- throwIfNotInMode(id, GridRowModes.Edit);
306
361
  apiRef.current.unstable_runPendingEditCellValueMutation(id);
307
362
 
308
- var updateFocusedCellIfNeeded = function updateFocusedCellIfNeeded() {
363
+ var finishRowEditMode = function finishRowEditMode() {
309
364
  if (cellToFocusAfter !== 'none' && focusedField) {
310
365
  apiRef.current.unstable_moveFocusToRelativeCell(id, focusedField, cellToFocusAfter);
311
366
  }
367
+
368
+ updateOrDeleteRowState(id, null);
369
+ updateRowInRowModesModel(id, null);
312
370
  };
313
371
 
314
372
  if (ignoreModifications) {
315
- updateFocusedCellIfNeeded();
316
- updateOrDeleteRowState(id, null);
373
+ finishRowEditMode();
317
374
  return;
318
375
  }
319
376
 
@@ -335,24 +392,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
335
392
  return;
336
393
  }
337
394
 
338
- var rowUpdate = _extends({}, row);
339
-
340
- Object.entries(editingState[id]).forEach(function (_ref) {
341
- var _ref2 = _slicedToArray(_ref, 2),
342
- field = _ref2[0],
343
- fieldProps = _ref2[1];
344
-
345
- var column = apiRef.current.getColumn(field);
346
-
347
- if (column.valueSetter) {
348
- rowUpdate = column.valueSetter({
349
- value: fieldProps.value,
350
- row: rowUpdate
351
- });
352
- } else {
353
- rowUpdate[field] = fieldProps.value;
354
- }
355
- });
395
+ var rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
356
396
 
357
397
  if (processRowUpdate) {
358
398
  var handleError = function handleError(errorThrown) {
@@ -366,18 +406,16 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
366
406
  try {
367
407
  Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
368
408
  apiRef.current.updateRows([finalRowUpdate]);
369
- updateFocusedCellIfNeeded();
370
- updateOrDeleteRowState(id, null);
409
+ finishRowEditMode();
371
410
  }).catch(handleError);
372
411
  } catch (errorThrown) {
373
412
  handleError(errorThrown);
374
413
  }
375
414
  } else {
376
415
  apiRef.current.updateRows([rowUpdate]);
377
- updateFocusedCellIfNeeded();
378
- updateOrDeleteRowState(id, null);
416
+ finishRowEditMode();
379
417
  }
380
- }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
418
+ }, [apiRef, onProcessRowUpdateError, processRowUpdate, updateOrDeleteRowState, updateRowInRowModesModel]);
381
419
  var setRowEditingEditCellValue = React.useCallback(function (params) {
382
420
  var id = params.id,
383
421
  field = params.field,
@@ -442,10 +480,10 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
442
480
  promises.push(promise);
443
481
  }
444
482
 
445
- Object.entries(editingState[id]).forEach(function (_ref3) {
446
- var _ref4 = _slicedToArray(_ref3, 2),
447
- thisField = _ref4[0],
448
- fieldProps = _ref4[1];
483
+ Object.entries(editingState[id]).forEach(function (_ref) {
484
+ var _ref2 = _slicedToArray(_ref, 2),
485
+ thisField = _ref2[0],
486
+ fieldProps = _ref2[1];
449
487
 
450
488
  if (thisField === field) {
451
489
  return;
@@ -498,11 +536,65 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
498
536
  });
499
537
  });
500
538
  }, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);
539
+ var getRowWithUpdatedValuesFromRowEditing = React.useCallback(function (id) {
540
+ var editingState = gridEditRowsStateSelector(apiRef.current.state);
541
+ var row = apiRef.current.getRow(id);
542
+
543
+ var rowUpdate = _extends({}, row);
544
+
545
+ Object.entries(editingState[id]).forEach(function (_ref3) {
546
+ var _ref4 = _slicedToArray(_ref3, 2),
547
+ field = _ref4[0],
548
+ fieldProps = _ref4[1];
549
+
550
+ var column = apiRef.current.getColumn(field);
551
+
552
+ if (column.valueSetter) {
553
+ rowUpdate = column.valueSetter({
554
+ value: fieldProps.value,
555
+ row: rowUpdate
556
+ });
557
+ } else {
558
+ rowUpdate[field] = fieldProps.value;
559
+ }
560
+ });
561
+ return rowUpdate;
562
+ }, [apiRef]);
501
563
  var editingApi = {
502
564
  getRowMode: getRowMode,
503
565
  startRowEditMode: startRowEditMode,
504
566
  stopRowEditMode: stopRowEditMode,
505
- unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
567
+ unstable_setRowEditingEditCellValue: setRowEditingEditCellValue,
568
+ unstable_getRowWithUpdatedValuesFromRowEditing: getRowWithUpdatedValuesFromRowEditing
506
569
  };
507
570
  useGridApiMethod(apiRef, editingApi, 'EditingApi');
571
+ React.useEffect(function () {
572
+ if (rowModesModelProp) {
573
+ updateRowModesModel(rowModesModelProp);
574
+ }
575
+ }, [rowModesModelProp, updateRowModesModel]);
576
+ React.useEffect(function () {
577
+ var idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);
578
+ Object.entries(rowModesModel).forEach(function (_ref5) {
579
+ var _prevRowModesModel$cu, _idToIdLookup$id;
580
+
581
+ var _ref6 = _slicedToArray(_ref5, 2),
582
+ id = _ref6[0],
583
+ params = _ref6[1];
584
+
585
+ var prevMode = ((_prevRowModesModel$cu = prevRowModesModel.current[id]) == null ? void 0 : _prevRowModesModel$cu.mode) || GridRowModes.View;
586
+ var originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;
587
+
588
+ if (params.mode === GridRowModes.Edit && prevMode === GridRowModes.View) {
589
+ updateStateToStartRowEditMode(_extends({
590
+ id: originalId
591
+ }, params));
592
+ } else if (params.mode === GridRowModes.View && prevMode === GridRowModes.Edit) {
593
+ updateStateToStopRowEditMode(_extends({
594
+ id: originalId
595
+ }, params));
596
+ }
597
+ });
598
+ prevRowModesModel.current = rowModesModel;
599
+ }, [apiRef, rowModesModel, updateStateToStartRowEditMode, updateStateToStopRowEditMode]);
508
600
  };
@@ -8,7 +8,6 @@ import { GridRowModes, GridEditModes, GridCellModes } from '../../../models/grid
8
8
  import { useGridSelector } from '../../utils/useGridSelector';
9
9
  import { gridColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
10
10
  import { gridEditRowsStateSelector } from './gridEditRowsSelector';
11
- import { GridEvents } from '../../../models/events/gridEvents';
12
11
  import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
13
12
  import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
14
13
  export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
@@ -148,12 +147,12 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
148
147
  return false;
149
148
  }
150
149
 
151
- apiRef.current.publishEvent(GridEvents.rowEditCommit, id, event);
150
+ apiRef.current.publishEvent('rowEditCommit', id, event);
152
151
  return true;
153
152
  });
154
153
  }
155
154
 
156
- apiRef.current.publishEvent(GridEvents.rowEditCommit, id, event);
155
+ apiRef.current.publishEvent('rowEditCommit', id, event);
157
156
  return true;
158
157
  }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
159
158
  var setRowEditingEditCellValue = React.useCallback(function (params) {
@@ -279,13 +278,13 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
279
278
  return _context3.abrupt("return");
280
279
 
281
280
  case 12:
282
- apiRef.current.publishEvent(GridEvents.rowEditStop, rowParams, event);
281
+ apiRef.current.publishEvent('rowEditStop', rowParams, event);
283
282
  _context3.next = 16;
284
283
  break;
285
284
 
286
285
  case 15:
287
286
  if (event.key === 'Escape') {
288
- apiRef.current.publishEvent(GridEvents.rowEditStop, rowParams, event);
287
+ apiRef.current.publishEvent('rowEditStop', rowParams, event);
289
288
  }
290
289
 
291
290
  case 16:
@@ -294,7 +293,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
294
293
 
295
294
  case 18:
296
295
  if (event.key === 'Enter') {
297
- apiRef.current.publishEvent(GridEvents.rowEditStart, rowParams, event);
296
+ apiRef.current.publishEvent('rowEditStart', rowParams, event);
298
297
  }
299
298
 
300
299
  case 19:
@@ -315,7 +314,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
315
314
  }
316
315
 
317
316
  var rowParams = apiRef.current.getRowParams(params.id);
318
- apiRef.current.publishEvent(GridEvents.rowEditStart, rowParams, event);
317
+ apiRef.current.publishEvent('rowEditStart', rowParams, event);
319
318
  }, [apiRef]);
320
319
  var handleEditCellPropsChange = React.useCallback(function (params) {
321
320
  var row = apiRef.current.getRow(params.id);
@@ -378,7 +377,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
378
377
  apiRef.current.setRowMode(params.id, GridRowModes.View);
379
378
 
380
379
  if (event.key === 'Enter') {
381
- apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, params, event);
380
+ apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
382
381
  }
383
382
  }, [apiRef]);
384
383
  var handleRowEditCommit = React.useCallback(function (id) {
@@ -447,7 +446,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
447
446
 
448
447
  case 3:
449
448
  rowParams = apiRef.current.getRowParams(params.id);
450
- apiRef.current.publishEvent(GridEvents.rowEditStop, rowParams, event);
449
+ apiRef.current.publishEvent('rowEditStop', rowParams, event);
451
450
 
452
451
  case 5:
453
452
  case "end":
@@ -483,16 +482,16 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
483
482
  var params = apiRef.current.getCellParams(cell.id, cell.field);
484
483
  commitPropsAndExit(params, {});
485
484
  });
486
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, buildCallback(handleCellKeyDown));
487
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, buildCallback(handleCellDoubleClick));
488
- useGridApiEventHandler(apiRef, GridEvents.editCellPropsChange, buildCallback(handleEditCellPropsChange));
489
- useGridApiEventHandler(apiRef, GridEvents.rowEditStart, buildCallback(handleRowEditStart));
490
- useGridApiEventHandler(apiRef, GridEvents.rowEditStop, buildCallback(handleRowEditStop));
491
- useGridApiEventHandler(apiRef, GridEvents.rowEditCommit, buildCallback(handleRowEditCommit));
492
- useGridApiEventHandler(apiRef, GridEvents.cellFocusIn, buildCallback(handleCellFocusIn));
493
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, buildCallback(handleCellFocusOut));
494
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, buildCallback(handleColumnHeaderDragStart));
495
- useGridApiOptionHandler(apiRef, GridEvents.rowEditCommit, props.onRowEditCommit);
496
- useGridApiOptionHandler(apiRef, GridEvents.rowEditStart, props.onRowEditStart);
497
- useGridApiOptionHandler(apiRef, GridEvents.rowEditStop, props.onRowEditStop);
485
+ useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
486
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
487
+ useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
488
+ useGridApiEventHandler(apiRef, 'rowEditStart', buildCallback(handleRowEditStart));
489
+ useGridApiEventHandler(apiRef, 'rowEditStop', buildCallback(handleRowEditStop));
490
+ useGridApiEventHandler(apiRef, 'rowEditCommit', buildCallback(handleRowEditCommit));
491
+ useGridApiEventHandler(apiRef, 'cellFocusIn', buildCallback(handleCellFocusIn));
492
+ useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
493
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
494
+ useGridApiOptionHandler(apiRef, 'rowEditCommit', props.onRowEditCommit);
495
+ useGridApiOptionHandler(apiRef, 'rowEditStart', props.onRowEditStart);
496
+ useGridApiOptionHandler(apiRef, 'rowEditStop', props.onRowEditStop);
498
497
  };