@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
@@ -2,12 +2,11 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
- import { GridEvents } from '../../../models/events';
6
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
6
  import { useGridLogger } from '../../utils/useGridLogger';
8
7
  import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsMetaSelector, gridColumnsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
9
8
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
10
- import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
9
+ import { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from '../../core/pipeProcessing';
11
10
  import { hydrateColumnsWidth, computeColumnTypes, createColumnsState, mergeColumnsState, COLUMNS_DIMENSION_PROPERTIES } from './gridColumnsUtils';
12
11
  import { GridPreferencePanelsValue } from '../preferencesPanel';
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -55,13 +54,13 @@ export function useGridColumns(apiRef, props) {
55
54
  propModel: props.columnVisibilityModel,
56
55
  propOnChange: props.onColumnVisibilityModelChange,
57
56
  stateSelector: gridColumnVisibilityModelSelector,
58
- changeEvent: GridEvents.columnVisibilityModelChange
57
+ changeEvent: 'columnVisibilityModelChange'
59
58
  });
60
59
  var setGridColumnsState = React.useCallback(function (columnsState) {
61
60
  logger.debug('Updating columns state.');
62
61
  apiRef.current.setState(mergeColumnsState(columnsState));
63
62
  apiRef.current.forceUpdate();
64
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
63
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
65
64
  }, [logger, apiRef]);
66
65
  /**
67
66
  * API METHODS
@@ -152,7 +151,7 @@ export function useGridColumns(apiRef, props) {
152
151
  colDef: newColumn,
153
152
  isVisible: isVisible
154
153
  };
155
- apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
154
+ apiRef.current.publishEvent('columnVisibilityChange', params);
156
155
  }
157
156
  }, [apiRef]);
158
157
  var setColumnIndex = React.useCallback(function (field, targetIndexPosition) {
@@ -180,7 +179,7 @@ export function useGridColumns(apiRef, props) {
180
179
  targetIndex: targetIndexPosition,
181
180
  oldIndex: oldIndexPosition
182
181
  };
183
- apiRef.current.publishEvent(GridEvents.columnOrderChange, params);
182
+ apiRef.current.publishEvent('columnOrderChange', params);
184
183
  }, [apiRef, logger, setGridColumnsState]);
185
184
  var setColumnWidth = React.useCallback(function (field, width) {
186
185
  logger.debug("Updating column ".concat(field, " width to ").concat(width));
@@ -191,7 +190,7 @@ export function useGridColumns(apiRef, props) {
191
190
  });
192
191
 
193
192
  apiRef.current.updateColumns([newColumn]);
194
- apiRef.current.publishEvent(GridEvents.columnWidthChange, {
193
+ apiRef.current.publishEvent('columnWidthChange', {
195
194
  element: apiRef.current.getColumnHeaderElement(field),
196
195
  colDef: newColumn,
197
196
  width: width
@@ -237,7 +236,13 @@ export function useGridColumns(apiRef, props) {
237
236
  if (colDef.hasBeenResized) {
238
237
  var colDefDimensions = {};
239
238
  COLUMNS_DIMENSION_PROPERTIES.forEach(function (propertyName) {
240
- colDefDimensions[propertyName] = colDef[propertyName];
239
+ var propertyValue = colDef[propertyName];
240
+
241
+ if (propertyValue === Infinity) {
242
+ propertyValue = -1;
243
+ }
244
+
245
+ colDefDimensions[propertyName] = propertyValue;
241
246
  });
242
247
  dimensions[colDef.field] = colDefDimensions;
243
248
  }
@@ -273,7 +278,7 @@ export function useGridColumns(apiRef, props) {
273
278
  apiRef.current.setState(mergeColumnsState(columnsState));
274
279
 
275
280
  if (initialState != null) {
276
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
281
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
277
282
  }
278
283
 
279
284
  return params;
@@ -295,12 +300,23 @@ export function useGridColumns(apiRef, props) {
295
300
  * EVENTS
296
301
  */
297
302
 
298
- var handlepipeProcessorRegister = React.useCallback(function (name) {
299
- if (name !== 'hydrateColumns') {
300
- return;
303
+ var prevInnerWidth = React.useRef(null);
304
+
305
+ var handleGridSizeChange = function handleGridSizeChange(viewportInnerSize) {
306
+ if (prevInnerWidth.current !== viewportInnerSize.width) {
307
+ prevInnerWidth.current = viewportInnerSize.width;
308
+ setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
301
309
  }
310
+ };
311
+
312
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
313
+ useGridApiOptionHandler(apiRef, 'columnVisibilityChange', props.onColumnVisibilityChange);
314
+ /**
315
+ * APPLIERS
316
+ */
302
317
 
303
- logger.info("Columns pre-processing have changed, regenerating the columns");
318
+ var hydrateColumns = React.useCallback(function () {
319
+ logger.info("Columns pipe processing have changed, regenerating the columns");
304
320
  var columnsState = createColumnsState({
305
321
  apiRef: apiRef,
306
322
  columnTypes: columnTypes,
@@ -311,18 +327,7 @@ export function useGridColumns(apiRef, props) {
311
327
  });
312
328
  setGridColumnsState(columnsState);
313
329
  }, [apiRef, logger, setGridColumnsState, columnTypes]);
314
- var prevInnerWidth = React.useRef(null);
315
-
316
- var handleGridSizeChange = function handleGridSizeChange(viewportInnerSize) {
317
- if (prevInnerWidth.current !== viewportInnerSize.width) {
318
- prevInnerWidth.current = viewportInnerSize.width;
319
- setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
320
- }
321
- };
322
-
323
- useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
324
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
325
- useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
330
+ useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
326
331
  /**
327
332
  * EFFECTS
328
333
  */
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { debounce, ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -101,12 +100,12 @@ export function useGridDimensions(apiRef, props) {
101
100
  fullDimensionsRef.current = newFullDimensions;
102
101
 
103
102
  if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
104
- apiRef.current.publishEvent(GridEvents.viewportInnerSizeChange, newFullDimensions.viewportInnerSize);
103
+ apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
105
104
  }
106
105
  }, [apiRef, props.scrollbarSize, props.autoHeight, headerHeight, rowsMeta.currentPageTotalHeight]);
107
106
  var resize = React.useCallback(function () {
108
107
  updateGridDimensionsRef();
109
- apiRef.current.publishEvent(GridEvents.debouncedResize, rootDimensionsRef.current);
108
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
110
109
  }, [apiRef, updateGridDimensionsRef]);
111
110
  var getRootDimensions = React.useCallback(function () {
112
111
  return fullDimensionsRef.current;
@@ -150,12 +149,12 @@ export function useGridDimensions(apiRef, props) {
150
149
  var isJSDOM = /jsdom/.test(window.navigator.userAgent);
151
150
 
152
151
  if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
153
- logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/components/data-grid/layout/'].join('\n'));
152
+ logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
154
153
  warningShown.current = true;
155
154
  }
156
155
 
157
156
  if (size.width === 0 && !warningShown.current && !isJSDOM) {
158
- logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/components/data-grid/layout/'].join('\n'));
157
+ logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
159
158
  warningShown.current = true;
160
159
  }
161
160
 
@@ -178,10 +177,10 @@ export function useGridDimensions(apiRef, props) {
178
177
  useEnhancedEffect(function () {
179
178
  return updateGridDimensionsRef();
180
179
  }, [updateGridDimensionsRef]);
181
- useGridApiOptionHandler(apiRef, GridEvents.visibleRowsSet, updateGridDimensionsRef);
182
- useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
183
- useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
184
- useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
185
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
186
- useGridApiOptionHandler(apiRef, GridEvents.debouncedResize, props.onResize);
180
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
181
+ useGridApiOptionHandler(apiRef, 'pageChange', updateGridDimensionsRef);
182
+ useGridApiOptionHandler(apiRef, 'pageSizeChange', updateGridDimensionsRef);
183
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
184
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
185
+ useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
187
186
  }
@@ -1,20 +1,34 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
2
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
5
  import _extends from "@babel/runtime/helpers/esm/extends";
6
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
7
+ var _excluded = ["id", "field"],
8
+ _excluded2 = ["id", "field"];
4
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
5
10
  import * as React from 'react';
6
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
7
- import { GridEvents } from '../../../models/events/gridEvents';
11
+ import { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';
8
12
  import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
9
13
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
10
14
  import { gridEditRowsStateSelector } from './gridEditRowsSelector';
11
15
  import { isPrintableKey } from '../../../utils/keyboardUtils';
12
16
  import { buildWarning } from '../../../utils/warning';
17
+ import { gridRowsIdToIdLookupSelector } from '../rows/gridRowsSelector';
13
18
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
14
19
  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');
15
20
  export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
21
+ var _React$useState = React.useState({}),
22
+ _React$useState2 = _slicedToArray(_React$useState, 2),
23
+ cellModesModel = _React$useState2[0],
24
+ setCellModesModel = _React$useState2[1];
25
+
26
+ var prevCellModesModel = React.useRef({});
16
27
  var processRowUpdate = props.processRowUpdate,
17
- onProcessRowUpdateError = props.onProcessRowUpdateError;
28
+ onProcessRowUpdateError = props.onProcessRowUpdateError,
29
+ cellModesModelProp = props.cellModesModel,
30
+ onCellModesModelChange = props.onCellModesModelChange,
31
+ signature = props.signature;
18
32
 
19
33
  var runIfEditModeIsCell = function runIfEditModeIsCell(callback) {
20
34
  return function () {
@@ -49,7 +63,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
49
63
  reason: GridCellEditStartReasons.cellDoubleClick
50
64
  });
51
65
 
52
- apiRef.current.publishEvent(GridEvents.cellEditStart, newParams, event);
66
+ apiRef.current.publishEvent('cellEditStart', newParams, event);
53
67
  }, [apiRef]);
54
68
  var handleCellFocusOut = React.useCallback(function (params, event) {
55
69
  if (params.cellMode === GridCellModes.View) {
@@ -60,7 +74,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
60
74
  reason: GridCellEditStopReasons.cellFocusOut
61
75
  });
62
76
 
63
- apiRef.current.publishEvent(GridEvents.cellEditStop, newParams, event);
77
+ apiRef.current.publishEvent('cellEditStop', newParams, event);
64
78
  }, [apiRef]);
65
79
  var handleCellKeyDown = React.useCallback(function (params, event) {
66
80
  if (params.cellMode === GridCellModes.Edit) {
@@ -80,7 +94,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
80
94
  reason: reason
81
95
  });
82
96
 
83
- apiRef.current.publishEvent(GridEvents.cellEditStop, newParams, event);
97
+ apiRef.current.publishEvent('cellEditStop', newParams, event);
84
98
  }
85
99
  } else if (params.isEditable) {
86
100
  var _reason;
@@ -102,23 +116,24 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
102
116
  reason: _reason
103
117
  });
104
118
 
105
- apiRef.current.publishEvent(GridEvents.cellEditStart, _newParams, event);
119
+ apiRef.current.publishEvent('cellEditStart', _newParams, event);
106
120
  }
107
121
  }
108
122
  }, [apiRef]);
109
- var handleCellEditStart = React.useCallback(function (params, event) {
123
+ var handleCellEditStart = React.useCallback(function (params) {
110
124
  var id = params.id,
111
125
  field = params.field,
112
126
  reason = params.reason;
113
- apiRef.current.startCellEditMode(params);
127
+ var startCellEditModeParams = {
128
+ id: id,
129
+ field: field
130
+ };
114
131
 
115
132
  if (reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.printableKeyDown) {
116
- apiRef.current.setEditCellValue({
117
- id: id,
118
- field: field,
119
- value: ''
120
- }, event);
133
+ startCellEditModeParams.deleteValue = true;
121
134
  }
135
+
136
+ apiRef.current.startCellEditMode(startCellEditModeParams);
122
137
  }, [apiRef]);
123
138
  var handleCellEditStop = React.useCallback(function (params) {
124
139
  var id = params.id,
@@ -150,18 +165,55 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
150
165
  cellToFocusAfter: cellToFocusAfter
151
166
  });
152
167
  }, [apiRef]);
153
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, runIfEditModeIsCell(handleCellDoubleClick));
154
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, runIfEditModeIsCell(handleCellFocusOut));
155
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, runIfEditModeIsCell(handleCellKeyDown));
156
- useGridApiEventHandler(apiRef, GridEvents.cellEditStart, runIfEditModeIsCell(handleCellEditStart));
157
- useGridApiEventHandler(apiRef, GridEvents.cellEditStop, runIfEditModeIsCell(handleCellEditStop));
158
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStart, props.onCellEditStart);
159
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStop, props.onCellEditStop);
168
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick));
169
+ useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut));
170
+ useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown));
171
+ useGridApiEventHandler(apiRef, 'cellEditStart', runIfEditModeIsCell(handleCellEditStart));
172
+ useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop));
173
+ useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
174
+ useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
160
175
  var getCellMode = React.useCallback(function (id, field) {
161
176
  var editingState = gridEditRowsStateSelector(apiRef.current.state);
162
177
  var isEditing = editingState[id] && editingState[id][field];
163
178
  return isEditing ? GridCellModes.Edit : GridCellModes.View;
164
179
  }, [apiRef]);
180
+ var updateCellModesModel = React.useCallback(function (newModel) {
181
+ var isNewModelDifferentFromProp = newModel !== props.cellModesModel;
182
+
183
+ if (onCellModesModelChange && isNewModelDifferentFromProp) {
184
+ var details = signature === GridSignature.DataGridPro ? {
185
+ api: apiRef.current
186
+ } : {};
187
+ onCellModesModelChange(newModel, details);
188
+ }
189
+
190
+ if (props.cellModesModel && isNewModelDifferentFromProp) {
191
+ return; // The prop always win
192
+ }
193
+
194
+ setCellModesModel(newModel);
195
+ apiRef.current.publishEvent('cellModesModelChange', newModel);
196
+ }, [apiRef, onCellModesModelChange, props.cellModesModel, signature]);
197
+ var updateFieldInCellModesModel = React.useCallback(function (id, field, newProps) {
198
+ var newModel = _extends({}, cellModesModel);
199
+
200
+ if (newProps !== null) {
201
+ newModel[id] = _extends({}, newModel[id], _defineProperty({}, field, _extends({}, newProps)));
202
+ } else {
203
+ var _cellModesModel$id = cellModesModel[id],
204
+ fieldToRemove = _cellModesModel$id[field],
205
+ otherFields = _objectWithoutProperties(_cellModesModel$id, [field].map(_toPropertyKey)); // Ensure that we have a new object, not a reference
206
+
207
+
208
+ newModel[id] = otherFields;
209
+
210
+ if (Object.keys(newModel[id]).length === 0) {
211
+ delete newModel[id];
212
+ }
213
+ }
214
+
215
+ updateCellModesModel(newModel);
216
+ }, [cellModesModel, updateCellModesModel]);
165
217
  var updateOrDeleteFieldState = React.useCallback(function (id, field, newProps) {
166
218
  apiRef.current.setState(function (state) {
167
219
  var newEditingState = _extends({}, state.editRows);
@@ -184,85 +236,121 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
184
236
  }, [apiRef]);
185
237
  var startCellEditMode = React.useCallback(function (params) {
186
238
  var id = params.id,
187
- field = params.field;
239
+ field = params.field,
240
+ other = _objectWithoutProperties(params, _excluded);
241
+
188
242
  throwIfNotEditable(id, field);
189
243
  throwIfNotInMode(id, field, GridCellModes.View);
244
+ updateFieldInCellModesModel(id, field, _extends({
245
+ mode: GridCellModes.Edit
246
+ }, other));
247
+ }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);
248
+ var updateStateToStartCellEditMode = React.useCallback(function (params) {
249
+ var id = params.id,
250
+ field = params.field,
251
+ deleteValue = params.deleteValue;
190
252
  var newProps = {
191
- value: apiRef.current.getCellValue(id, field),
253
+ value: deleteValue ? '' : apiRef.current.getCellValue(id, field),
192
254
  error: false,
193
255
  isProcessingProps: false
194
256
  };
195
257
  updateOrDeleteFieldState(id, field, newProps);
196
258
  apiRef.current.setCellFocus(id, field);
197
- }, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
259
+ }, [apiRef, updateOrDeleteFieldState]);
198
260
  var stopCellEditMode = React.useCallback(function (params) {
199
261
  var id = params.id,
200
262
  field = params.field,
201
- ignoreModifications = params.ignoreModifications,
202
- _params$cellToFocusAf = params.cellToFocusAfter,
203
- cellToFocusAfter = _params$cellToFocusAf === void 0 ? 'none' : _params$cellToFocusAf;
263
+ other = _objectWithoutProperties(params, _excluded2);
264
+
204
265
  throwIfNotInMode(id, field, GridCellModes.Edit);
205
- apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
266
+ updateFieldInCellModesModel(id, field, _extends({
267
+ mode: GridCellModes.View
268
+ }, other));
269
+ }, [throwIfNotInMode, updateFieldInCellModesModel]);
270
+ var updateStateToStopCellEditMode = React.useCallback( /*#__PURE__*/function () {
271
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
272
+ var id, field, ignoreModifications, _params$cellToFocusAf, cellToFocusAfter, finishCellEditMode, editingState, _editingState$id$fiel, error, isProcessingProps, rowUpdate, handleError, row;
206
273
 
207
- var updateFocusedCellIfNeeded = function updateFocusedCellIfNeeded() {
208
- if (cellToFocusAfter !== 'none') {
209
- apiRef.current.unstable_moveFocusToRelativeCell(id, field, cellToFocusAfter);
210
- }
211
- };
274
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
275
+ while (1) {
276
+ switch (_context.prev = _context.next) {
277
+ case 0:
278
+ id = params.id, field = params.field, ignoreModifications = params.ignoreModifications, _params$cellToFocusAf = params.cellToFocusAfter, cellToFocusAfter = _params$cellToFocusAf === void 0 ? 'none' : _params$cellToFocusAf;
279
+ throwIfNotInMode(id, field, GridCellModes.Edit);
280
+ apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
212
281
 
213
- if (ignoreModifications) {
214
- updateFocusedCellIfNeeded();
215
- updateOrDeleteFieldState(id, field, null);
216
- return;
217
- }
282
+ finishCellEditMode = function finishCellEditMode() {
283
+ if (cellToFocusAfter !== 'none') {
284
+ apiRef.current.unstable_moveFocusToRelativeCell(id, field, cellToFocusAfter);
285
+ }
218
286
 
219
- var editingState = gridEditRowsStateSelector(apiRef.current.state);
220
- var row = apiRef.current.getRow(id);
221
- var column = apiRef.current.getColumn(field);
222
- var _editingState$id$fiel = editingState[id][field],
223
- value = _editingState$id$fiel.value,
224
- error = _editingState$id$fiel.error,
225
- isProcessingProps = _editingState$id$fiel.isProcessingProps;
287
+ updateOrDeleteFieldState(id, field, null);
288
+ updateFieldInCellModesModel(id, field, null);
289
+ };
226
290
 
227
- if (error || isProcessingProps) {
228
- return;
229
- }
291
+ if (!ignoreModifications) {
292
+ _context.next = 7;
293
+ break;
294
+ }
230
295
 
231
- var rowUpdate = column.valueSetter ? column.valueSetter({
232
- value: value,
233
- row: row
234
- }) : _extends({}, row, _defineProperty({}, field, value));
296
+ finishCellEditMode();
297
+ return _context.abrupt("return");
298
+
299
+ case 7:
300
+ editingState = gridEditRowsStateSelector(apiRef.current.state);
301
+ _editingState$id$fiel = editingState[id][field], error = _editingState$id$fiel.error, isProcessingProps = _editingState$id$fiel.isProcessingProps;
302
+
303
+ if (!(error || isProcessingProps)) {
304
+ _context.next = 11;
305
+ break;
306
+ }
235
307
 
236
- if (processRowUpdate) {
237
- var handleError = function handleError(errorThrown) {
238
- if (onProcessRowUpdateError) {
239
- onProcessRowUpdateError(errorThrown);
240
- } else {
241
- missingOnProcessRowUpdateErrorWarning();
308
+ return _context.abrupt("return");
309
+
310
+ case 11:
311
+ rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);
312
+
313
+ if (processRowUpdate) {
314
+ handleError = function handleError(errorThrown) {
315
+ if (onProcessRowUpdateError) {
316
+ onProcessRowUpdateError(errorThrown);
317
+ } else {
318
+ missingOnProcessRowUpdateErrorWarning();
319
+ }
320
+ };
321
+
322
+ try {
323
+ row = apiRef.current.getRow(id);
324
+ Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
325
+ apiRef.current.updateRows([finalRowUpdate]);
326
+ finishCellEditMode();
327
+ }).catch(handleError);
328
+ } catch (errorThrown) {
329
+ handleError(errorThrown);
330
+ }
331
+ } else {
332
+ apiRef.current.updateRows([rowUpdate]);
333
+ finishCellEditMode();
334
+ }
335
+
336
+ case 13:
337
+ case "end":
338
+ return _context.stop();
339
+ }
242
340
  }
243
- };
244
-
245
- try {
246
- Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
247
- apiRef.current.updateRows([finalRowUpdate]);
248
- updateFocusedCellIfNeeded();
249
- updateOrDeleteFieldState(id, field, null);
250
- }).catch(handleError);
251
- } catch (errorThrown) {
252
- handleError(errorThrown);
253
- }
254
- } else {
255
- apiRef.current.updateRows([rowUpdate]);
256
- updateFocusedCellIfNeeded();
257
- updateOrDeleteFieldState(id, field, null);
258
- }
259
- }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
341
+ }, _callee);
342
+ }));
343
+
344
+ return function (_x) {
345
+ return _ref.apply(this, arguments);
346
+ };
347
+ }(), [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateFieldInCellModesModel, updateOrDeleteFieldState]);
260
348
  var setCellEditingEditCellValue = React.useCallback( /*#__PURE__*/function () {
261
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
349
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params) {
262
350
  var id, field, value, column, row, parsedValue, editingState, newProps, hasChanged;
263
- return _regeneratorRuntime.wrap(function _callee$(_context) {
351
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
264
352
  while (1) {
265
- switch (_context.prev = _context.next) {
353
+ switch (_context2.prev = _context2.next) {
266
354
  case 0:
267
355
  id = params.id, field = params.field, value = params.value;
268
356
  throwIfNotEditable(id, field);
@@ -281,7 +369,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
281
369
  });
282
370
 
283
371
  if (!column.preProcessEditCellProps) {
284
- _context.next = 16;
372
+ _context2.next = 16;
285
373
  break;
286
374
  }
287
375
 
@@ -290,7 +378,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
290
378
  isProcessingProps: true
291
379
  });
292
380
  updateOrDeleteFieldState(id, field, newProps);
293
- _context.next = 15;
381
+ _context2.next = 15;
294
382
  return Promise.resolve(column.preProcessEditCellProps({
295
383
  id: id,
296
384
  row: row,
@@ -299,15 +387,15 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
299
387
  }));
300
388
 
301
389
  case 15:
302
- newProps = _context.sent;
390
+ newProps = _context2.sent;
303
391
 
304
392
  case 16:
305
393
  if (!(apiRef.current.getCellMode(id, field) === GridCellModes.View)) {
306
- _context.next = 18;
394
+ _context2.next = 18;
307
395
  break;
308
396
  }
309
397
 
310
- return _context.abrupt("return", false);
398
+ return _context2.abrupt("return", false);
311
399
 
312
400
  case 18:
313
401
  editingState = gridEditRowsStateSelector(apiRef.current.state);
@@ -320,25 +408,73 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
320
408
  newProps.value = column.preProcessEditCellProps ? editingState[id][field].value : parsedValue;
321
409
  updateOrDeleteFieldState(id, field, newProps);
322
410
  editingState = gridEditRowsStateSelector(apiRef.current.state);
323
- return _context.abrupt("return", !editingState[id][field].error);
411
+ return _context2.abrupt("return", !editingState[id][field].error);
324
412
 
325
413
  case 24:
326
414
  case "end":
327
- return _context.stop();
415
+ return _context2.stop();
328
416
  }
329
417
  }
330
- }, _callee);
418
+ }, _callee2);
331
419
  }));
332
420
 
333
- return function (_x) {
334
- return _ref.apply(this, arguments);
421
+ return function (_x2) {
422
+ return _ref2.apply(this, arguments);
335
423
  };
336
424
  }(), [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
425
+ var getRowWithUpdatedValuesFromCellEditing = React.useCallback(function (id, field) {
426
+ var column = apiRef.current.getColumn(field);
427
+ var editingState = gridEditRowsStateSelector(apiRef.current.state);
428
+ var value = editingState[id][field].value;
429
+ var row = apiRef.current.getRow(id);
430
+ return column.valueSetter ? column.valueSetter({
431
+ value: value,
432
+ row: row
433
+ }) : _extends({}, row, _defineProperty({}, field, value));
434
+ }, [apiRef]);
337
435
  var editingApi = {
338
436
  getCellMode: getCellMode,
339
437
  startCellEditMode: startCellEditMode,
340
438
  stopCellEditMode: stopCellEditMode,
341
- unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
439
+ unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,
440
+ unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
342
441
  };
343
442
  useGridApiMethod(apiRef, editingApi, 'EditingApi');
443
+ React.useEffect(function () {
444
+ if (cellModesModelProp) {
445
+ updateCellModesModel(cellModesModelProp);
446
+ }
447
+ }, [cellModesModelProp, updateCellModesModel]);
448
+ React.useEffect(function () {
449
+ var idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);
450
+ Object.entries(cellModesModel).forEach(function (_ref3) {
451
+ var _ref4 = _slicedToArray(_ref3, 2),
452
+ id = _ref4[0],
453
+ fields = _ref4[1];
454
+
455
+ Object.entries(fields).forEach(function (_ref5) {
456
+ var _prevCellModesModel$c, _prevCellModesModel$c2, _idToIdLookup$id;
457
+
458
+ var _ref6 = _slicedToArray(_ref5, 2),
459
+ field = _ref6[0],
460
+ params = _ref6[1];
461
+
462
+ var prevMode = ((_prevCellModesModel$c = prevCellModesModel.current[id]) == null ? void 0 : (_prevCellModesModel$c2 = _prevCellModesModel$c[field]) == null ? void 0 : _prevCellModesModel$c2.mode) || GridCellModes.View;
463
+ var originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;
464
+
465
+ if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {
466
+ updateStateToStartCellEditMode(_extends({
467
+ id: originalId,
468
+ field: field
469
+ }, params));
470
+ } else if (params.mode === GridCellModes.View && prevMode === GridCellModes.Edit) {
471
+ updateStateToStopCellEditMode(_extends({
472
+ id: originalId,
473
+ field: field
474
+ }, params));
475
+ }
476
+ });
477
+ });
478
+ prevCellModesModel.current = cellModesModel;
479
+ }, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);
344
480
  };