@mui/x-data-grid 5.10.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 (490) hide show
  1. package/CHANGELOG.md +163 -10
  2. package/DataGrid/DataGrid.js +35 -1
  3. package/DataGrid/useDataGridProps.js +2 -1
  4. package/README.md +1 -1
  5. package/colDef/gridActionsColDef.js +2 -1
  6. package/colDef/gridBooleanColDef.js +2 -1
  7. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  8. package/colDef/gridDateColDef.js +4 -2
  9. package/colDef/gridNumericColDef.js +3 -2
  10. package/colDef/gridNumericOperators.d.ts +2 -0
  11. package/colDef/gridNumericOperators.js +11 -0
  12. package/colDef/gridSingleSelectColDef.js +3 -2
  13. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  14. package/colDef/gridSingleSelectOperators.js +52 -0
  15. package/colDef/gridStringColDef.js +3 -2
  16. package/colDef/gridStringOperators.d.ts +2 -0
  17. package/colDef/gridStringOperators.js +12 -0
  18. package/components/GridFooter.d.ts +4 -2
  19. package/components/GridFooter.js +11 -2
  20. package/components/GridRow.js +4 -5
  21. package/components/GridRowCount.d.ts +4 -1
  22. package/components/GridRowCount.js +1 -0
  23. package/components/GridScrollArea.js +3 -4
  24. package/components/GridSelectedRowCount.d.ts +4 -1
  25. package/components/GridSelectedRowCount.js +2 -1
  26. package/components/base/GridBody.js +1 -2
  27. package/components/base/GridOverlays.js +1 -2
  28. package/components/cell/GridActionsCell.js +13 -4
  29. package/components/cell/GridCell.js +8 -8
  30. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  31. package/components/cell/GridEditBooleanCell.js +101 -6
  32. package/components/cell/GridEditDateCell.d.ts +16 -4
  33. package/components/cell/GridEditDateCell.js +99 -5
  34. package/components/cell/GridEditInputCell.d.ts +11 -5
  35. package/components/cell/GridEditInputCell.js +29 -5
  36. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  37. package/components/cell/GridEditSingleSelectCell.js +28 -5
  38. package/components/cell/index.d.ts +2 -0
  39. package/components/cell/index.js +2 -0
  40. package/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  41. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -0
  42. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  43. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  44. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  45. package/components/containers/GridFooterContainer.d.ts +8 -2
  46. package/components/containers/GridFooterContainer.js +11 -2
  47. package/components/containers/GridToolbarContainer.d.ts +8 -2
  48. package/components/containers/GridToolbarContainer.js +12 -2
  49. package/components/panel/GridPanelContent.d.ts +8 -1
  50. package/components/panel/GridPanelContent.js +13 -2
  51. package/components/panel/GridPanelFooter.d.ts +8 -1
  52. package/components/panel/GridPanelFooter.js +13 -2
  53. package/components/panel/GridPanelHeader.d.ts +8 -1
  54. package/components/panel/GridPanelHeader.js +13 -2
  55. package/components/toolbar/GridToolbar.d.ts +12 -2
  56. package/components/toolbar/GridToolbar.js +30 -7
  57. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  58. package/components/toolbar/GridToolbarExport.js +15 -20
  59. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  60. package/components/toolbar/GridToolbarQuickFilter.js +88 -0
  61. package/components/toolbar/index.d.ts +3 -1
  62. package/components/toolbar/index.js +3 -2
  63. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  64. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  65. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  66. package/constants/localeTextConstants.js +5 -0
  67. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +7 -0
  68. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  69. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  70. package/hooks/core/useGridApiInitialization.js +3 -3
  71. package/hooks/core/useGridErrorHandler.js +1 -2
  72. package/hooks/core/useGridStateInitialization.js +1 -2
  73. package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  74. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  75. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  76. package/hooks/features/columns/useGridColumns.js +8 -9
  77. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  78. package/hooks/features/dimensions/useGridDimensions.js +8 -9
  79. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  80. package/hooks/features/editRows/useGridCellEditing.new.js +133 -32
  81. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  82. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  83. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  84. package/hooks/features/editRows/useGridRowEditing.new.js +122 -42
  85. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  86. package/hooks/features/events/useGridEvents.js +17 -18
  87. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  88. package/hooks/features/export/useGridCsvExport.js +23 -16
  89. package/hooks/features/export/useGridPrintExport.js +22 -0
  90. package/hooks/features/export/utils.d.ts +3 -1
  91. package/hooks/features/export/utils.js +13 -0
  92. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  93. package/hooks/features/filter/gridFilterState.js +3 -1
  94. package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
  95. package/hooks/features/filter/gridFilterUtils.js +84 -2
  96. package/hooks/features/filter/useGridFilter.js +20 -8
  97. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  98. package/hooks/features/focus/useGridFocus.js +29 -33
  99. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  100. package/hooks/features/pagination/useGridPage.js +3 -4
  101. package/hooks/features/pagination/useGridPageSize.js +2 -3
  102. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  103. package/hooks/features/rows/gridRowsSelector.d.ts +1 -0
  104. package/hooks/features/rows/gridRowsSelector.js +1 -0
  105. package/hooks/features/rows/gridRowsState.d.ts +3 -7
  106. package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  107. package/hooks/features/rows/gridRowsUtils.js +25 -1
  108. package/hooks/features/rows/useGridRows.js +100 -60
  109. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  110. package/hooks/features/scroll/useGridScroll.js +6 -1
  111. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  112. package/hooks/features/selection/useGridSelection.js +13 -10
  113. package/hooks/features/sorting/useGridSorting.js +8 -9
  114. package/hooks/features/virtualization/useGridVirtualScroller.js +6 -7
  115. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  116. package/hooks/utils/useGridApiEventHandler.js +22 -9
  117. package/hooks/utils/useGridNativeEventListener.js +1 -2
  118. package/hooks/utils/useGridSelector.js +1 -1
  119. package/index.d.ts +2 -0
  120. package/index.js +1 -1
  121. package/internals/index.d.ts +4 -1
  122. package/internals/index.js +5 -2
  123. package/legacy/DataGrid/DataGrid.js +35 -1
  124. package/legacy/DataGrid/useDataGridProps.js +2 -1
  125. package/legacy/colDef/gridActionsColDef.js +2 -1
  126. package/legacy/colDef/gridBooleanColDef.js +2 -1
  127. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  128. package/legacy/colDef/gridDateColDef.js +4 -2
  129. package/legacy/colDef/gridNumericColDef.js +3 -2
  130. package/legacy/colDef/gridNumericOperators.js +28 -18
  131. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  132. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  133. package/legacy/colDef/gridStringColDef.js +3 -2
  134. package/legacy/colDef/gridStringOperators.js +25 -14
  135. package/legacy/components/GridFooter.js +11 -2
  136. package/legacy/components/GridRow.js +4 -5
  137. package/legacy/components/GridRowCount.js +1 -0
  138. package/legacy/components/GridScrollArea.js +3 -4
  139. package/legacy/components/GridSelectedRowCount.js +2 -1
  140. package/legacy/components/base/GridBody.js +1 -2
  141. package/legacy/components/base/GridOverlays.js +1 -2
  142. package/legacy/components/cell/GridActionsCell.js +13 -4
  143. package/legacy/components/cell/GridCell.js +8 -8
  144. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  145. package/legacy/components/cell/GridEditDateCell.js +148 -42
  146. package/legacy/components/cell/GridEditInputCell.js +61 -12
  147. package/legacy/components/cell/GridEditSingleSelectCell.js +41 -13
  148. package/legacy/components/cell/index.js +2 -0
  149. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  150. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  151. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  152. package/legacy/components/containers/GridFooterContainer.js +11 -2
  153. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  154. package/legacy/components/panel/GridPanelContent.js +13 -2
  155. package/legacy/components/panel/GridPanelFooter.js +13 -2
  156. package/legacy/components/panel/GridPanelHeader.js +13 -2
  157. package/legacy/components/toolbar/GridToolbar.js +31 -6
  158. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  159. package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
  160. package/legacy/components/toolbar/index.js +3 -2
  161. package/legacy/constants/localeTextConstants.js +5 -0
  162. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  163. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  164. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  165. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  166. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  167. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  168. package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
  169. package/legacy/hooks/features/columns/useGridColumns.js +8 -9
  170. package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
  171. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +213 -83
  172. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  173. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  174. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +126 -42
  175. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  176. package/legacy/hooks/features/events/useGridEvents.js +17 -18
  177. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  178. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  179. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  180. package/legacy/hooks/features/export/utils.js +14 -0
  181. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  182. package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
  183. package/legacy/hooks/features/filter/useGridFilter.js +20 -8
  184. package/legacy/hooks/features/focus/useGridFocus.js +31 -35
  185. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  186. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  187. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  188. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  189. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
  190. package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
  191. package/legacy/hooks/features/rows/useGridRows.js +104 -60
  192. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  193. package/legacy/hooks/features/scroll/useGridScroll.js +6 -1
  194. package/legacy/hooks/features/selection/useGridSelection.js +13 -10
  195. package/legacy/hooks/features/sorting/useGridSorting.js +8 -9
  196. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +6 -7
  197. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  198. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  199. package/legacy/hooks/utils/useGridSelector.js +1 -1
  200. package/legacy/index.js +1 -1
  201. package/legacy/internals/index.js +5 -2
  202. package/legacy/locales/arSD.js +5 -0
  203. package/legacy/locales/bgBG.js +5 -0
  204. package/legacy/locales/csCZ.js +5 -0
  205. package/legacy/locales/daDK.js +5 -0
  206. package/legacy/locales/deDE.js +10 -5
  207. package/legacy/locales/elGR.js +5 -0
  208. package/legacy/locales/esES.js +5 -0
  209. package/legacy/locales/faIR.js +5 -0
  210. package/legacy/locales/fiFI.js +5 -0
  211. package/legacy/locales/frFR.js +5 -0
  212. package/legacy/locales/heIL.js +5 -0
  213. package/legacy/locales/huHU.js +5 -0
  214. package/legacy/locales/itIT.js +5 -0
  215. package/legacy/locales/jaJP.js +5 -0
  216. package/legacy/locales/koKR.js +5 -0
  217. package/legacy/locales/nlNL.js +5 -0
  218. package/legacy/locales/plPL.js +5 -0
  219. package/legacy/locales/ptBR.js +5 -0
  220. package/legacy/locales/ruRU.js +5 -0
  221. package/legacy/locales/skSK.js +5 -0
  222. package/legacy/locales/trTR.js +5 -0
  223. package/legacy/locales/ukUA.js +5 -0
  224. package/legacy/locales/viVN.js +5 -0
  225. package/legacy/locales/zhCN.js +5 -0
  226. package/legacy/models/events/gridEvents.js +2 -0
  227. package/legacy/models/index.js +4 -3
  228. package/legacy/utils/createSelector.js +18 -2
  229. package/legacy/utils/exportAs.js +1 -1
  230. package/locales/arSD.js +5 -0
  231. package/locales/bgBG.js +5 -0
  232. package/locales/csCZ.js +5 -0
  233. package/locales/daDK.js +5 -0
  234. package/locales/deDE.js +10 -5
  235. package/locales/elGR.js +5 -0
  236. package/locales/esES.js +5 -0
  237. package/locales/faIR.js +5 -0
  238. package/locales/fiFI.js +5 -0
  239. package/locales/frFR.js +5 -0
  240. package/locales/heIL.js +5 -0
  241. package/locales/huHU.js +5 -0
  242. package/locales/itIT.js +5 -0
  243. package/locales/jaJP.js +5 -0
  244. package/locales/koKR.js +5 -0
  245. package/locales/nlNL.js +5 -0
  246. package/locales/plPL.js +5 -0
  247. package/locales/ptBR.js +5 -0
  248. package/locales/ruRU.js +5 -0
  249. package/locales/skSK.js +5 -0
  250. package/locales/trTR.js +5 -0
  251. package/locales/ukUA.js +5 -0
  252. package/locales/viVN.js +5 -0
  253. package/locales/zhCN.js +5 -0
  254. package/models/api/gridCoreApi.d.ts +10 -0
  255. package/models/api/gridEditingApi.d.ts +23 -4
  256. package/models/api/gridFilterApi.d.ts +5 -0
  257. package/models/api/gridFocusApi.d.ts +1 -0
  258. package/models/api/gridLocaleTextApi.d.ts +4 -0
  259. package/models/api/gridRowApi.d.ts +28 -0
  260. package/models/api/index.d.ts +1 -1
  261. package/models/colDef/gridColDef.d.ts +13 -0
  262. package/models/events/gridEventLookup.d.ts +273 -3
  263. package/models/events/gridEvents.d.ts +2 -277
  264. package/models/events/gridEvents.js +2 -0
  265. package/models/gridExport.d.ts +29 -2
  266. package/models/gridFilterModel.d.ts +11 -0
  267. package/models/gridFilterOperator.d.ts +1 -1
  268. package/models/gridStateCommunity.d.ts +0 -2
  269. package/models/index.d.ts +1 -1
  270. package/models/index.js +4 -3
  271. package/models/props/DataGridProps.d.ts +56 -28
  272. package/modern/DataGrid/DataGrid.js +35 -1
  273. package/modern/DataGrid/useDataGridProps.js +2 -1
  274. package/modern/colDef/gridActionsColDef.js +2 -1
  275. package/modern/colDef/gridBooleanColDef.js +2 -1
  276. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  277. package/modern/colDef/gridDateColDef.js +4 -2
  278. package/modern/colDef/gridNumericColDef.js +3 -2
  279. package/modern/colDef/gridNumericOperators.js +11 -0
  280. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  281. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  282. package/modern/colDef/gridStringColDef.js +3 -2
  283. package/modern/colDef/gridStringOperators.js +12 -0
  284. package/modern/components/GridFooter.js +11 -2
  285. package/modern/components/GridRow.js +4 -5
  286. package/modern/components/GridRowCount.js +1 -0
  287. package/modern/components/GridScrollArea.js +3 -4
  288. package/modern/components/GridSelectedRowCount.js +2 -1
  289. package/modern/components/base/GridBody.js +1 -2
  290. package/modern/components/base/GridOverlays.js +1 -2
  291. package/modern/components/cell/GridActionsCell.js +14 -3
  292. package/modern/components/cell/GridCell.js +8 -8
  293. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  294. package/modern/components/cell/GridEditDateCell.js +99 -5
  295. package/modern/components/cell/GridEditInputCell.js +29 -5
  296. package/modern/components/cell/GridEditSingleSelectCell.js +28 -5
  297. package/modern/components/cell/index.js +2 -0
  298. package/modern/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  299. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  300. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  301. package/modern/components/containers/GridFooterContainer.js +11 -2
  302. package/modern/components/containers/GridToolbarContainer.js +12 -2
  303. package/modern/components/panel/GridPanelContent.js +13 -2
  304. package/modern/components/panel/GridPanelFooter.js +13 -2
  305. package/modern/components/panel/GridPanelHeader.js +13 -2
  306. package/modern/components/toolbar/GridToolbar.js +30 -7
  307. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  308. package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
  309. package/modern/components/toolbar/index.js +3 -2
  310. package/modern/constants/localeTextConstants.js +5 -0
  311. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  312. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  313. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  314. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  315. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  316. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  317. package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
  318. package/modern/hooks/features/columns/useGridColumns.js +8 -9
  319. package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
  320. package/modern/hooks/features/editRows/useGridCellEditing.new.js +131 -32
  321. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  322. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  323. package/modern/hooks/features/editRows/useGridRowEditing.new.js +120 -42
  324. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  325. package/modern/hooks/features/events/useGridEvents.js +17 -18
  326. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  327. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  328. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  329. package/modern/hooks/features/export/utils.js +13 -0
  330. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  331. package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
  332. package/modern/hooks/features/filter/useGridFilter.js +20 -8
  333. package/modern/hooks/features/focus/useGridFocus.js +29 -33
  334. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  335. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  336. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  337. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  338. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  339. package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
  340. package/modern/hooks/features/rows/useGridRows.js +100 -60
  341. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  342. package/modern/hooks/features/scroll/useGridScroll.js +6 -1
  343. package/modern/hooks/features/selection/useGridSelection.js +13 -10
  344. package/modern/hooks/features/sorting/useGridSorting.js +8 -9
  345. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +6 -7
  346. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  347. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  348. package/modern/hooks/utils/useGridSelector.js +1 -1
  349. package/modern/index.js +1 -1
  350. package/modern/internals/index.js +5 -2
  351. package/modern/locales/arSD.js +5 -0
  352. package/modern/locales/bgBG.js +5 -0
  353. package/modern/locales/csCZ.js +5 -0
  354. package/modern/locales/daDK.js +5 -0
  355. package/modern/locales/deDE.js +10 -5
  356. package/modern/locales/elGR.js +5 -0
  357. package/modern/locales/esES.js +5 -0
  358. package/modern/locales/faIR.js +5 -0
  359. package/modern/locales/fiFI.js +5 -0
  360. package/modern/locales/frFR.js +5 -0
  361. package/modern/locales/heIL.js +5 -0
  362. package/modern/locales/huHU.js +5 -0
  363. package/modern/locales/itIT.js +5 -0
  364. package/modern/locales/jaJP.js +5 -0
  365. package/modern/locales/koKR.js +5 -0
  366. package/modern/locales/nlNL.js +5 -0
  367. package/modern/locales/plPL.js +5 -0
  368. package/modern/locales/ptBR.js +5 -0
  369. package/modern/locales/ruRU.js +5 -0
  370. package/modern/locales/skSK.js +5 -0
  371. package/modern/locales/trTR.js +5 -0
  372. package/modern/locales/ukUA.js +5 -0
  373. package/modern/locales/viVN.js +5 -0
  374. package/modern/locales/zhCN.js +5 -0
  375. package/modern/models/events/gridEvents.js +2 -0
  376. package/modern/models/index.js +4 -3
  377. package/modern/utils/createSelector.js +20 -2
  378. package/modern/utils/exportAs.js +1 -1
  379. package/node/DataGrid/DataGrid.js +35 -1
  380. package/node/DataGrid/useDataGridProps.js +2 -1
  381. package/node/colDef/gridActionsColDef.js +2 -1
  382. package/node/colDef/gridBooleanColDef.js +2 -1
  383. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  384. package/node/colDef/gridDateColDef.js +4 -2
  385. package/node/colDef/gridNumericColDef.js +2 -1
  386. package/node/colDef/gridNumericOperators.js +15 -1
  387. package/node/colDef/gridSingleSelectColDef.js +2 -1
  388. package/node/colDef/gridSingleSelectOperators.js +56 -1
  389. package/node/colDef/gridStringColDef.js +2 -1
  390. package/node/colDef/gridStringOperators.js +16 -1
  391. package/node/components/GridFooter.js +10 -1
  392. package/node/components/GridRow.js +4 -6
  393. package/node/components/GridRowCount.js +1 -0
  394. package/node/components/GridScrollArea.js +3 -5
  395. package/node/components/GridSelectedRowCount.js +2 -1
  396. package/node/components/base/GridBody.js +1 -3
  397. package/node/components/base/GridOverlays.js +1 -3
  398. package/node/components/cell/GridActionsCell.js +13 -4
  399. package/node/components/cell/GridCell.js +7 -7
  400. package/node/components/cell/GridEditBooleanCell.js +100 -5
  401. package/node/components/cell/GridEditDateCell.js +98 -4
  402. package/node/components/cell/GridEditInputCell.js +29 -5
  403. package/node/components/cell/GridEditSingleSelectCell.js +28 -6
  404. package/node/components/cell/index.js +26 -0
  405. package/node/components/columnHeaders/GridColumnHeaderItem.js +15 -17
  406. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -4
  407. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  408. package/node/components/containers/GridFooterContainer.js +10 -1
  409. package/node/components/containers/GridToolbarContainer.js +11 -1
  410. package/node/components/panel/GridPanelContent.js +11 -1
  411. package/node/components/panel/GridPanelFooter.js +11 -1
  412. package/node/components/panel/GridPanelHeader.js +11 -1
  413. package/node/components/toolbar/GridToolbar.js +32 -7
  414. package/node/components/toolbar/GridToolbarExport.js +14 -19
  415. package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
  416. package/node/components/toolbar/index.js +42 -11
  417. package/node/constants/localeTextConstants.js +5 -0
  418. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  419. package/node/hooks/core/useGridApiInitialization.js +3 -4
  420. package/node/hooks/core/useGridErrorHandler.js +1 -3
  421. package/node/hooks/core/useGridStateInitialization.js +1 -3
  422. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -7
  423. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -5
  424. package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
  425. package/node/hooks/features/columns/useGridColumns.js +8 -10
  426. package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
  427. package/node/hooks/features/editRows/useGridCellEditing.new.js +133 -32
  428. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  429. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  430. package/node/hooks/features/editRows/useGridRowEditing.new.js +122 -43
  431. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  432. package/node/hooks/features/events/useGridEvents.js +17 -19
  433. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  434. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  435. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  436. package/node/hooks/features/export/utils.js +19 -2
  437. package/node/hooks/features/filter/gridFilterState.js +3 -1
  438. package/node/hooks/features/filter/gridFilterUtils.js +92 -3
  439. package/node/hooks/features/filter/useGridFilter.js +21 -9
  440. package/node/hooks/features/focus/useGridFocus.js +29 -34
  441. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -6
  442. package/node/hooks/features/pagination/useGridPage.js +3 -5
  443. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  444. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  445. package/node/hooks/features/rows/gridRowsSelector.js +3 -1
  446. package/node/hooks/features/rows/gridRowsUtils.js +29 -1
  447. package/node/hooks/features/rows/useGridRows.js +101 -60
  448. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  449. package/node/hooks/features/scroll/useGridScroll.js +6 -1
  450. package/node/hooks/features/selection/useGridSelection.js +13 -11
  451. package/node/hooks/features/sorting/useGridSorting.js +8 -10
  452. package/node/hooks/features/virtualization/useGridVirtualScroller.js +6 -8
  453. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  454. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  455. package/node/hooks/utils/useGridSelector.js +1 -1
  456. package/node/index.js +1 -1
  457. package/node/internals/index.js +39 -3
  458. package/node/locales/arSD.js +5 -0
  459. package/node/locales/bgBG.js +5 -0
  460. package/node/locales/csCZ.js +5 -0
  461. package/node/locales/daDK.js +5 -0
  462. package/node/locales/deDE.js +10 -5
  463. package/node/locales/elGR.js +5 -0
  464. package/node/locales/esES.js +5 -0
  465. package/node/locales/faIR.js +5 -0
  466. package/node/locales/fiFI.js +5 -0
  467. package/node/locales/frFR.js +5 -0
  468. package/node/locales/heIL.js +5 -0
  469. package/node/locales/huHU.js +5 -0
  470. package/node/locales/itIT.js +5 -0
  471. package/node/locales/jaJP.js +5 -0
  472. package/node/locales/koKR.js +5 -0
  473. package/node/locales/nlNL.js +5 -0
  474. package/node/locales/plPL.js +5 -0
  475. package/node/locales/ptBR.js +5 -0
  476. package/node/locales/ruRU.js +5 -0
  477. package/node/locales/skSK.js +5 -0
  478. package/node/locales/trTR.js +5 -0
  479. package/node/locales/ukUA.js +5 -0
  480. package/node/locales/viVN.js +5 -0
  481. package/node/locales/zhCN.js +5 -0
  482. package/node/models/events/gridEvents.js +2 -0
  483. package/node/models/index.js +0 -13
  484. package/node/utils/createSelector.js +25 -4
  485. package/node/utils/exportAs.js +1 -1
  486. package/package.json +1 -1
  487. package/utils/createSelector.d.ts +2 -1
  488. package/utils/createSelector.js +20 -2
  489. package/utils/exportAs.d.ts +2 -2
  490. package/utils/exportAs.js +1 -1
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
4
  import { useGridLogger } from '../../utils/useGridLogger';
6
5
  import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsMetaSelector, gridColumnsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
@@ -47,13 +46,13 @@ export function useGridColumns(apiRef, props) {
47
46
  propModel: props.columnVisibilityModel,
48
47
  propOnChange: props.onColumnVisibilityModelChange,
49
48
  stateSelector: gridColumnVisibilityModelSelector,
50
- changeEvent: GridEvents.columnVisibilityModelChange
49
+ changeEvent: 'columnVisibilityModelChange'
51
50
  });
52
51
  const setGridColumnsState = React.useCallback(columnsState => {
53
52
  logger.debug('Updating columns state.');
54
53
  apiRef.current.setState(mergeColumnsState(columnsState));
55
54
  apiRef.current.forceUpdate();
56
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
55
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
57
56
  }, [logger, apiRef]);
58
57
  /**
59
58
  * API METHODS
@@ -129,7 +128,7 @@ export function useGridColumns(apiRef, props) {
129
128
  colDef: newColumn,
130
129
  isVisible
131
130
  };
132
- apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
131
+ apiRef.current.publishEvent('columnVisibilityChange', params);
133
132
  }
134
133
  }, [apiRef]);
135
134
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
@@ -153,7 +152,7 @@ export function useGridColumns(apiRef, props) {
153
152
  targetIndex: targetIndexPosition,
154
153
  oldIndex: oldIndexPosition
155
154
  };
156
- apiRef.current.publishEvent(GridEvents.columnOrderChange, params);
155
+ apiRef.current.publishEvent('columnOrderChange', params);
157
156
  }, [apiRef, logger, setGridColumnsState]);
158
157
  const setColumnWidth = React.useCallback((field, width) => {
159
158
  logger.debug(`Updating column ${field} width to ${width}`);
@@ -164,7 +163,7 @@ export function useGridColumns(apiRef, props) {
164
163
  });
165
164
 
166
165
  apiRef.current.updateColumns([newColumn]);
167
- apiRef.current.publishEvent(GridEvents.columnWidthChange, {
166
+ apiRef.current.publishEvent('columnWidthChange', {
168
167
  element: apiRef.current.getColumnHeaderElement(field),
169
168
  colDef: newColumn,
170
169
  width
@@ -248,7 +247,7 @@ export function useGridColumns(apiRef, props) {
248
247
  apiRef.current.setState(mergeColumnsState(columnsState));
249
248
 
250
249
  if (initialState != null) {
251
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
250
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
252
251
  }
253
252
 
254
253
  return params;
@@ -277,8 +276,8 @@ export function useGridColumns(apiRef, props) {
277
276
  }
278
277
  };
279
278
 
280
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
281
- useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
279
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
280
+ useGridApiOptionHandler(apiRef, 'columnVisibilityChange', props.onColumnVisibilityChange);
282
281
  /**
283
282
  * APPLIERS
284
283
  */
@@ -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';
@@ -99,12 +98,12 @@ export function useGridDimensions(apiRef, props) {
99
98
  fullDimensionsRef.current = newFullDimensions;
100
99
 
101
100
  if (newFullDimensions.viewportInnerSize.width !== prevDimensions?.viewportInnerSize.width || newFullDimensions.viewportInnerSize.height !== prevDimensions?.viewportInnerSize.height) {
102
- apiRef.current.publishEvent(GridEvents.viewportInnerSizeChange, newFullDimensions.viewportInnerSize);
101
+ apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
103
102
  }
104
103
  }, [apiRef, props.scrollbarSize, props.autoHeight, headerHeight, rowsMeta.currentPageTotalHeight]);
105
104
  const resize = React.useCallback(() => {
106
105
  updateGridDimensionsRef();
107
- apiRef.current.publishEvent(GridEvents.debouncedResize, rootDimensionsRef.current);
106
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
108
107
  }, [apiRef, updateGridDimensionsRef]);
109
108
  const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
110
109
  const getViewportPageSize = React.useCallback(() => {
@@ -170,10 +169,10 @@ export function useGridDimensions(apiRef, props) {
170
169
  debounceResize();
171
170
  }, [props.autoHeight, debounceResize, logger, resize]);
172
171
  useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
173
- useGridApiOptionHandler(apiRef, GridEvents.sortedRowsSet, updateGridDimensionsRef);
174
- useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
175
- useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
176
- useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
177
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
178
- useGridApiOptionHandler(apiRef, GridEvents.debouncedResize, props.onResize);
172
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
173
+ useGridApiOptionHandler(apiRef, 'pageChange', updateGridDimensionsRef);
174
+ useGridApiOptionHandler(apiRef, 'pageSizeChange', updateGridDimensionsRef);
175
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
176
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
177
+ useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
179
178
  }
@@ -1,18 +1,27 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ const _excluded = ["id", "field"],
5
+ _excluded2 = ["id", "field"];
2
6
  import * as React from 'react';
3
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
4
- import { GridEvents } from '../../../models/events/gridEvents';
7
+ import { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';
5
8
  import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
6
9
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
10
  import { gridEditRowsStateSelector } from './gridEditRowsSelector';
8
11
  import { isPrintableKey } from '../../../utils/keyboardUtils';
9
12
  import { buildWarning } from '../../../utils/warning';
13
+ import { gridRowsIdToIdLookupSelector } from '../rows/gridRowsSelector';
10
14
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
11
15
  const 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');
12
16
  export const useGridCellEditing = (apiRef, props) => {
17
+ const [cellModesModel, setCellModesModel] = React.useState({});
18
+ const prevCellModesModel = React.useRef({});
13
19
  const {
14
20
  processRowUpdate,
15
- onProcessRowUpdateError
21
+ onProcessRowUpdateError,
22
+ cellModesModel: cellModesModelProp,
23
+ onCellModesModelChange,
24
+ signature
16
25
  } = props;
17
26
 
18
27
  const runIfEditModeIsCell = callback => (...args) => {
@@ -46,7 +55,7 @@ export const useGridCellEditing = (apiRef, props) => {
46
55
  reason: GridCellEditStartReasons.cellDoubleClick
47
56
  });
48
57
 
49
- apiRef.current.publishEvent(GridEvents.cellEditStart, newParams, event);
58
+ apiRef.current.publishEvent('cellEditStart', newParams, event);
50
59
  }, [apiRef]);
51
60
  const handleCellFocusOut = React.useCallback((params, event) => {
52
61
  if (params.cellMode === GridCellModes.View) {
@@ -57,7 +66,7 @@ export const useGridCellEditing = (apiRef, props) => {
57
66
  reason: GridCellEditStopReasons.cellFocusOut
58
67
  });
59
68
 
60
- apiRef.current.publishEvent(GridEvents.cellEditStop, newParams, event);
69
+ apiRef.current.publishEvent('cellEditStop', newParams, event);
61
70
  }, [apiRef]);
62
71
  const handleCellKeyDown = React.useCallback((params, event) => {
63
72
  if (params.cellMode === GridCellModes.Edit) {
@@ -77,7 +86,7 @@ export const useGridCellEditing = (apiRef, props) => {
77
86
  reason
78
87
  });
79
88
 
80
- apiRef.current.publishEvent(GridEvents.cellEditStop, newParams, event);
89
+ apiRef.current.publishEvent('cellEditStop', newParams, event);
81
90
  }
82
91
  } else if (params.isEditable) {
83
92
  let reason;
@@ -99,25 +108,26 @@ export const useGridCellEditing = (apiRef, props) => {
99
108
  reason
100
109
  });
101
110
 
102
- apiRef.current.publishEvent(GridEvents.cellEditStart, newParams, event);
111
+ apiRef.current.publishEvent('cellEditStart', newParams, event);
103
112
  }
104
113
  }
105
114
  }, [apiRef]);
106
- const handleCellEditStart = React.useCallback((params, event) => {
115
+ const handleCellEditStart = React.useCallback(params => {
107
116
  const {
108
117
  id,
109
118
  field,
110
119
  reason
111
120
  } = params;
112
- apiRef.current.startCellEditMode(params);
121
+ const startCellEditModeParams = {
122
+ id,
123
+ field
124
+ };
113
125
 
114
126
  if (reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.printableKeyDown) {
115
- apiRef.current.setEditCellValue({
116
- id,
117
- field,
118
- value: ''
119
- }, event);
127
+ startCellEditModeParams.deleteValue = true;
120
128
  }
129
+
130
+ apiRef.current.startCellEditMode(startCellEditModeParams);
121
131
  }, [apiRef]);
122
132
  const handleCellEditStop = React.useCallback(params => {
123
133
  const {
@@ -151,18 +161,56 @@ export const useGridCellEditing = (apiRef, props) => {
151
161
  cellToFocusAfter
152
162
  });
153
163
  }, [apiRef]);
154
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, runIfEditModeIsCell(handleCellDoubleClick));
155
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, runIfEditModeIsCell(handleCellFocusOut));
156
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, runIfEditModeIsCell(handleCellKeyDown));
157
- useGridApiEventHandler(apiRef, GridEvents.cellEditStart, runIfEditModeIsCell(handleCellEditStart));
158
- useGridApiEventHandler(apiRef, GridEvents.cellEditStop, runIfEditModeIsCell(handleCellEditStop));
159
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStart, props.onCellEditStart);
160
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStop, props.onCellEditStop);
164
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick));
165
+ useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut));
166
+ useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown));
167
+ useGridApiEventHandler(apiRef, 'cellEditStart', runIfEditModeIsCell(handleCellEditStart));
168
+ useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop));
169
+ useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
170
+ useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
161
171
  const getCellMode = React.useCallback((id, field) => {
162
172
  const editingState = gridEditRowsStateSelector(apiRef.current.state);
163
173
  const isEditing = editingState[id] && editingState[id][field];
164
174
  return isEditing ? GridCellModes.Edit : GridCellModes.View;
165
175
  }, [apiRef]);
176
+ const updateCellModesModel = React.useCallback(newModel => {
177
+ const isNewModelDifferentFromProp = newModel !== props.cellModesModel;
178
+
179
+ if (onCellModesModelChange && isNewModelDifferentFromProp) {
180
+ const details = signature === GridSignature.DataGridPro ? {
181
+ api: apiRef.current
182
+ } : {};
183
+ onCellModesModelChange(newModel, details);
184
+ }
185
+
186
+ if (props.cellModesModel && isNewModelDifferentFromProp) {
187
+ return; // The prop always win
188
+ }
189
+
190
+ setCellModesModel(newModel);
191
+ apiRef.current.publishEvent('cellModesModelChange', newModel);
192
+ }, [apiRef, onCellModesModelChange, props.cellModesModel, signature]);
193
+ const updateFieldInCellModesModel = React.useCallback((id, field, newProps) => {
194
+ const newModel = _extends({}, cellModesModel);
195
+
196
+ if (newProps !== null) {
197
+ newModel[id] = _extends({}, newModel[id], {
198
+ [field]: _extends({}, newProps)
199
+ });
200
+ } else {
201
+ const _cellModesModel$id = cellModesModel[id],
202
+ otherFields = _objectWithoutPropertiesLoose(_cellModesModel$id, [field].map(_toPropertyKey)); // Ensure that we have a new object, not a reference
203
+
204
+
205
+ newModel[id] = otherFields;
206
+
207
+ if (Object.keys(newModel[id]).length === 0) {
208
+ delete newModel[id];
209
+ }
210
+ }
211
+
212
+ updateCellModesModel(newModel);
213
+ }, [cellModesModel, updateCellModesModel]);
166
214
  const updateOrDeleteFieldState = React.useCallback((id, field, newProps) => {
167
215
  apiRef.current.setState(state => {
168
216
  const newEditingState = _extends({}, state.editRows);
@@ -189,18 +237,42 @@ export const useGridCellEditing = (apiRef, props) => {
189
237
  const {
190
238
  id,
191
239
  field
192
- } = params;
240
+ } = params,
241
+ other = _objectWithoutPropertiesLoose(params, _excluded);
242
+
193
243
  throwIfNotEditable(id, field);
194
244
  throwIfNotInMode(id, field, GridCellModes.View);
245
+ updateFieldInCellModesModel(id, field, _extends({
246
+ mode: GridCellModes.Edit
247
+ }, other));
248
+ }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);
249
+ const updateStateToStartCellEditMode = React.useCallback(params => {
250
+ const {
251
+ id,
252
+ field,
253
+ deleteValue
254
+ } = params;
195
255
  const newProps = {
196
- value: apiRef.current.getCellValue(id, field),
256
+ value: deleteValue ? '' : apiRef.current.getCellValue(id, field),
197
257
  error: false,
198
258
  isProcessingProps: false
199
259
  };
200
260
  updateOrDeleteFieldState(id, field, newProps);
201
261
  apiRef.current.setCellFocus(id, field);
202
- }, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
262
+ }, [apiRef, updateOrDeleteFieldState]);
203
263
  const stopCellEditMode = React.useCallback(params => {
264
+ const {
265
+ id,
266
+ field
267
+ } = params,
268
+ other = _objectWithoutPropertiesLoose(params, _excluded2);
269
+
270
+ throwIfNotInMode(id, field, GridCellModes.Edit);
271
+ updateFieldInCellModesModel(id, field, _extends({
272
+ mode: GridCellModes.View
273
+ }, other));
274
+ }, [throwIfNotInMode, updateFieldInCellModesModel]);
275
+ const updateStateToStopCellEditMode = React.useCallback(async params => {
204
276
  const {
205
277
  id,
206
278
  field,
@@ -210,15 +282,17 @@ export const useGridCellEditing = (apiRef, props) => {
210
282
  throwIfNotInMode(id, field, GridCellModes.Edit);
211
283
  apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
212
284
 
213
- const updateFocusedCellIfNeeded = () => {
285
+ const finishCellEditMode = () => {
214
286
  if (cellToFocusAfter !== 'none') {
215
287
  apiRef.current.unstable_moveFocusToRelativeCell(id, field, cellToFocusAfter);
216
288
  }
289
+
290
+ updateOrDeleteFieldState(id, field, null);
291
+ updateFieldInCellModesModel(id, field, null);
217
292
  };
218
293
 
219
294
  if (ignoreModifications) {
220
- updateFocusedCellIfNeeded();
221
- updateOrDeleteFieldState(id, field, null);
295
+ finishCellEditMode();
222
296
  return;
223
297
  }
224
298
 
@@ -247,18 +321,16 @@ export const useGridCellEditing = (apiRef, props) => {
247
321
  const row = apiRef.current.getRow(id);
248
322
  Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
249
323
  apiRef.current.updateRows([finalRowUpdate]);
250
- updateFocusedCellIfNeeded();
251
- updateOrDeleteFieldState(id, field, null);
324
+ finishCellEditMode();
252
325
  }).catch(handleError);
253
326
  } catch (errorThrown) {
254
327
  handleError(errorThrown);
255
328
  }
256
329
  } else {
257
330
  apiRef.current.updateRows([rowUpdate]);
258
- updateFocusedCellIfNeeded();
259
- updateOrDeleteFieldState(id, field, null);
331
+ finishCellEditMode();
260
332
  }
261
- }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
333
+ }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateFieldInCellModesModel, updateOrDeleteFieldState]);
262
334
  const setCellEditingEditCellValue = React.useCallback(async params => {
263
335
  const {
264
336
  id,
@@ -335,4 +407,31 @@ export const useGridCellEditing = (apiRef, props) => {
335
407
  unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
336
408
  };
337
409
  useGridApiMethod(apiRef, editingApi, 'EditingApi');
410
+ React.useEffect(() => {
411
+ if (cellModesModelProp) {
412
+ updateCellModesModel(cellModesModelProp);
413
+ }
414
+ }, [cellModesModelProp, updateCellModesModel]);
415
+ React.useEffect(() => {
416
+ const idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);
417
+ Object.entries(cellModesModel).forEach(([id, fields]) => {
418
+ Object.entries(fields).forEach(([field, params]) => {
419
+ const prevMode = prevCellModesModel.current[id]?.[field]?.mode || GridCellModes.View;
420
+ const originalId = idToIdLookup[id] ?? id;
421
+
422
+ if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {
423
+ updateStateToStartCellEditMode(_extends({
424
+ id: originalId,
425
+ field
426
+ }, params));
427
+ } else if (params.mode === GridCellModes.View && prevMode === GridCellModes.Edit) {
428
+ updateStateToStopCellEditMode(_extends({
429
+ id: originalId,
430
+ field
431
+ }, params));
432
+ }
433
+ });
434
+ });
435
+ prevCellModesModel.current = cellModesModel;
436
+ }, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);
338
437
  };
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useEventCallback } from '@mui/material/utils';
4
4
  import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
5
- import { GridEvents } from '../../../models/events/gridEvents';
6
5
  import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
7
6
  import { isKeyboardEvent, isPrintableKey, isCellEnterEditModeKeys, isCellExitEditModeKeys, isCellEditCommitKeys, isDeleteKeys } from '../../../utils/keyboardUtils';
8
7
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -51,7 +50,7 @@ export const useCellEditing = (apiRef, props) => {
51
50
  });
52
51
  });
53
52
  apiRef.current.forceUpdate();
54
- apiRef.current.publishEvent(GridEvents.cellModeChange, apiRef.current.getCellParams(id, field));
53
+ apiRef.current.publishEvent('cellModeChange', apiRef.current.getCellParams(id, field));
55
54
  }, [apiRef, logger]);
56
55
  const getCellMode = React.useCallback((id, field) => {
57
56
  const editRowsState = gridEditRowsStateSelector(apiRef.current.state);
@@ -108,7 +107,7 @@ export const useCellEditing = (apiRef, props) => {
108
107
  return false;
109
108
  }
110
109
 
111
- apiRef.current.publishEvent(GridEvents.cellEditCommit, commitParams, event);
110
+ apiRef.current.publishEvent('cellEditCommit', commitParams, event);
112
111
  return true;
113
112
  });
114
113
  }
@@ -122,7 +121,7 @@ export const useCellEditing = (apiRef, props) => {
122
121
  }
123
122
 
124
123
  if (!hasError) {
125
- apiRef.current.publishEvent(GridEvents.cellEditCommit, commitParams, event);
124
+ apiRef.current.publishEvent('cellEditCommit', commitParams, event);
126
125
  return true;
127
126
  }
128
127
 
@@ -191,7 +190,7 @@ export const useCellEditing = (apiRef, props) => {
191
190
  const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
192
191
 
193
192
  if (!isEditMode && isCellEnterEditModeKeys(event.key) && !isModifierKeyPressed && !(event.key === ' ' && event.shiftKey)) {
194
- apiRef.current.publishEvent(GridEvents.cellEditStart, params, event);
193
+ apiRef.current.publishEvent('cellEditStart', params, event);
195
194
  }
196
195
 
197
196
  if (!isEditMode && isDeleteKeys(event.key)) {
@@ -204,7 +203,7 @@ export const useCellEditing = (apiRef, props) => {
204
203
  id,
205
204
  field
206
205
  }, event);
207
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
206
+ apiRef.current.publishEvent('cellEditStop', params, event);
208
207
  }
209
208
 
210
209
  if (isEditMode && isCellEditCommitKeys(event.key)) {
@@ -220,7 +219,7 @@ export const useCellEditing = (apiRef, props) => {
220
219
  }
221
220
 
222
221
  if (isEditMode && isCellExitEditModeKeys(event.key)) {
223
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
222
+ apiRef.current.publishEvent('cellEditStop', params, event);
224
223
  }
225
224
  }, [apiRef]);
226
225
  const handleCellDoubleClick = React.useCallback((params, event) => {
@@ -228,7 +227,7 @@ export const useCellEditing = (apiRef, props) => {
228
227
  return;
229
228
  }
230
229
 
231
- apiRef.current.publishEvent(GridEvents.cellEditStart, params, event);
230
+ apiRef.current.publishEvent('cellEditStart', params, event);
232
231
  }, [apiRef]);
233
232
 
234
233
  const commitPropsAndExit = async (params, event) => {
@@ -237,7 +236,7 @@ export const useCellEditing = (apiRef, props) => {
237
236
  }
238
237
 
239
238
  await apiRef.current.commitCellChange(params, event);
240
- apiRef.current.publishEvent(GridEvents.cellEditStop, params, event);
239
+ apiRef.current.publishEvent('cellEditStop', params, event);
241
240
  };
242
241
 
243
242
  const handleCellFocusOut = useEventCallback((params, event) => {
@@ -278,7 +277,7 @@ export const useCellEditing = (apiRef, props) => {
278
277
  }
279
278
 
280
279
  if (isCellEditCommitKeys(event.key)) {
281
- apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, params, event);
280
+ apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
282
281
  return;
283
282
  }
284
283
 
@@ -336,15 +335,15 @@ export const useCellEditing = (apiRef, props) => {
336
335
  }));
337
336
  }
338
337
  }, [apiRef]);
339
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, buildCallback(handleCellKeyDown));
340
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, buildCallback(handleCellDoubleClick));
341
- useGridApiEventHandler(apiRef, GridEvents.cellFocusOut, buildCallback(handleCellFocusOut));
342
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, buildCallback(handleColumnHeaderDragStart));
343
- useGridApiEventHandler(apiRef, GridEvents.cellEditStart, buildCallback(handleCellEditStart));
344
- useGridApiEventHandler(apiRef, GridEvents.cellEditStop, buildCallback(handleCellEditStop));
345
- useGridApiEventHandler(apiRef, GridEvents.cellEditCommit, buildCallback(handleCellEditCommit));
346
- useGridApiEventHandler(apiRef, GridEvents.editCellPropsChange, buildCallback(handleEditCellPropsChange));
347
- useGridApiOptionHandler(apiRef, GridEvents.cellEditCommit, props.onCellEditCommit);
348
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStart, props.onCellEditStart);
349
- useGridApiOptionHandler(apiRef, GridEvents.cellEditStop, props.onCellEditStop);
338
+ useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
339
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
340
+ useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
341
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
342
+ useGridApiEventHandler(apiRef, 'cellEditStart', buildCallback(handleCellEditStart));
343
+ useGridApiEventHandler(apiRef, 'cellEditStop', buildCallback(handleCellEditStop));
344
+ useGridApiEventHandler(apiRef, 'cellEditCommit', buildCallback(handleCellEditCommit));
345
+ useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
346
+ useGridApiOptionHandler(apiRef, 'cellEditCommit', props.onCellEditCommit);
347
+ useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
348
+ useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
350
349
  };
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { GridCellModes } from '../../../models/gridEditRowModel';
5
4
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
6
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -27,7 +26,7 @@ export function useGridEditing(apiRef, props) {
27
26
  propModel: props.editRowsModel,
28
27
  propOnChange: props.onEditRowsModelChange,
29
28
  stateSelector: gridEditRowsStateSelector,
30
- changeEvent: GridEvents.editRowsModelChange
29
+ changeEvent: 'editRowsModelChange'
31
30
  });
32
31
  const isCellEditable = React.useCallback(params => !params.rowNode.isAutoGenerated && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params)), // eslint-disable-next-line react-hooks/exhaustive-deps
33
32
  [props.isCellEditable]);
@@ -93,7 +92,7 @@ export function useGridEditing(apiRef, props) {
93
92
  value: params.value
94
93
  }
95
94
  };
96
- return apiRef.current.publishEvent(GridEvents.editCellPropsChange, newParams, event);
95
+ return apiRef.current.publishEvent('editCellPropsChange', newParams, event);
97
96
  });
98
97
  }, [apiRef, props.editMode, props.experimentalFeatures?.preventCommitWhileValidating]);
99
98
  const parseValue = React.useCallback((id, field, value) => {
@@ -142,8 +141,8 @@ export function useGridEditing(apiRef, props) {
142
141
  event.preventDefault();
143
142
  }
144
143
  }, []);
145
- useGridApiEventHandler(apiRef, GridEvents.cellMouseDown, preventTextSelection);
146
- useGridApiOptionHandler(apiRef, GridEvents.editCellPropsChange, props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
144
+ useGridApiEventHandler(apiRef, 'cellMouseDown', preventTextSelection);
145
+ useGridApiOptionHandler(apiRef, 'editCellPropsChange', props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
147
146
 
148
147
  const editingSharedApi = {
149
148
  isCellEditable,