@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
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "className", "getValue", "hasFocus", "isValidating", "isProcessingProps", "error"];
3
+ const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "className", "getValue", "hasFocus", "isValidating", "isProcessingProps", "error", "onValueChange"];
4
4
  import * as React from 'react';
5
+ import PropTypes from 'prop-types';
5
6
  import clsx from 'clsx';
6
7
  import { unstable_composeClasses as composeClasses } from '@mui/material';
7
8
  import { unstable_useId as useId, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
@@ -19,14 +20,15 @@ const useUtilityClasses = ownerState => {
19
20
  return composeClasses(slots, getDataGridUtilityClass, classes);
20
21
  };
21
22
 
22
- export function GridEditBooleanCell(props) {
23
+ function GridEditBooleanCell(props) {
23
24
  const {
24
25
  id: idProp,
25
26
  value,
26
27
  api,
27
28
  field,
28
29
  className,
29
- hasFocus
30
+ hasFocus,
31
+ onValueChange
30
32
  } = props,
31
33
  other = _objectWithoutPropertiesLoose(props, _excluded);
32
34
 
@@ -38,15 +40,20 @@ export function GridEditBooleanCell(props) {
38
40
  classes: rootProps.classes
39
41
  };
40
42
  const classes = useUtilityClasses(ownerState);
41
- const handleChange = React.useCallback(event => {
43
+ const handleChange = React.useCallback(async event => {
42
44
  const newValue = event.target.checked;
45
+
46
+ if (onValueChange) {
47
+ await onValueChange(event, newValue);
48
+ }
49
+
43
50
  setValueState(newValue);
44
- api.setEditCellValue({
51
+ await api.setEditCellValue({
45
52
  id: idProp,
46
53
  field,
47
54
  value: newValue
48
55
  }, event);
49
- }, [api, field, idProp]);
56
+ }, [api, field, idProp, onValueChange]);
50
57
  React.useEffect(() => {
51
58
  setValueState(value);
52
59
  }, [value]);
@@ -68,4 +75,92 @@ export function GridEditBooleanCell(props) {
68
75
  }, rootProps.componentsProps?.baseCheckbox))
69
76
  }));
70
77
  }
78
+
79
+ process.env.NODE_ENV !== "production" ? GridEditBooleanCell.propTypes = {
80
+ // ----------------------------- Warning --------------------------------
81
+ // | These PropTypes are generated from the TypeScript type definitions |
82
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
83
+ // ----------------------------------------------------------------------
84
+
85
+ /**
86
+ * GridApi that let you manipulate the grid.
87
+ * @deprecated Use the `apiRef` returned by `useGridApiContext` or `useGridApiRef` (only available in `@mui/x-data-grid-pro`)
88
+ */
89
+ api: PropTypes.any.isRequired,
90
+
91
+ /**
92
+ * The mode of the cell.
93
+ */
94
+ cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,
95
+
96
+ /**
97
+ * The column of the row that the current cell belongs to.
98
+ */
99
+ colDef: PropTypes.object.isRequired,
100
+
101
+ /**
102
+ * The column field of the cell that triggered the event.
103
+ */
104
+ field: PropTypes.string.isRequired,
105
+
106
+ /**
107
+ * The cell value formatted with the column valueFormatter.
108
+ */
109
+ formattedValue: PropTypes.any,
110
+
111
+ /**
112
+ * Get the cell value of a row and field.
113
+ * @param {GridRowId} id The row id.
114
+ * @param {string} field The field.
115
+ * @returns {any} The cell value.
116
+ * @deprecated Use `params.row` to directly access the fields you want instead.
117
+ */
118
+ getValue: PropTypes.func.isRequired,
119
+
120
+ /**
121
+ * If true, the cell is the active element.
122
+ */
123
+ hasFocus: PropTypes.bool.isRequired,
124
+
125
+ /**
126
+ * The grid row id.
127
+ */
128
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
129
+
130
+ /**
131
+ * If true, the cell is editable.
132
+ */
133
+ isEditable: PropTypes.bool,
134
+ isProcessingProps: PropTypes.bool,
135
+ isValidating: PropTypes.bool,
136
+
137
+ /**
138
+ * Callback called when the value is changed by the user.
139
+ * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
140
+ * @param {boolean} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
141
+ * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
142
+ */
143
+ onValueChange: PropTypes.func,
144
+
145
+ /**
146
+ * The row model of the row that the current cell belongs to.
147
+ */
148
+ row: PropTypes.object.isRequired,
149
+
150
+ /**
151
+ * The node of the row that the current cell belongs to.
152
+ */
153
+ rowNode: PropTypes.object.isRequired,
154
+
155
+ /**
156
+ * the tabIndex value.
157
+ */
158
+ tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
159
+
160
+ /**
161
+ * The cell value, but if the column has valueGetter, use getValue.
162
+ */
163
+ value: PropTypes.any
164
+ } : void 0;
165
+ export { GridEditBooleanCell };
71
166
  export const renderEditBooleanCell = params => /*#__PURE__*/_jsx(GridEditBooleanCell, _extends({}, params));
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "getValue", "inputProps", "isValidating", "isProcessingProps"];
3
+ const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "getValue", "inputProps", "isValidating", "isProcessingProps", "onValueChange"];
4
4
  import * as React from 'react';
5
+ import PropTypes from 'prop-types';
5
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';
6
7
  import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
7
8
  import InputBase from '@mui/material/InputBase';
@@ -19,7 +20,7 @@ const useUtilityClasses = ownerState => {
19
20
  return composeClasses(slots, getDataGridUtilityClass, classes);
20
21
  };
21
22
 
22
- export function GridEditDateCell(props) {
23
+ function GridEditDateCell(props) {
23
24
  const {
24
25
  id,
25
26
  value: valueProp,
@@ -27,7 +28,8 @@ export function GridEditDateCell(props) {
27
28
  field,
28
29
  colDef,
29
30
  hasFocus,
30
- inputProps
31
+ inputProps,
32
+ onValueChange
31
33
  } = props,
32
34
  other = _objectWithoutPropertiesLoose(props, _excluded);
33
35
 
@@ -64,7 +66,7 @@ export function GridEditDateCell(props) {
64
66
  classes: rootProps.classes
65
67
  };
66
68
  const classes = useUtilityClasses(ownerState);
67
- const handleChange = React.useCallback(event => {
69
+ const handleChange = React.useCallback(async event => {
68
70
  const newFormattedDate = event.target.value;
69
71
  let newParsedDate;
70
72
 
@@ -83,6 +85,10 @@ export function GridEditDateCell(props) {
83
85
  }
84
86
  }
85
87
 
88
+ if (onValueChange) {
89
+ await onValueChange(event, newParsedDate);
90
+ }
91
+
86
92
  setValueState({
87
93
  parsed: newParsedDate,
88
94
  formatted: newFormattedDate
@@ -92,7 +98,7 @@ export function GridEditDateCell(props) {
92
98
  field,
93
99
  value: newParsedDate
94
100
  }, event);
95
- }, [api, field, id]);
101
+ }, [api, field, id, onValueChange]);
96
102
  React.useEffect(() => {
97
103
  setValueState(state => {
98
104
  if (valueTransformed.parsed !== state.parsed && valueTransformed.parsed?.getTime() !== state.parsed?.getTime()) {
@@ -119,4 +125,92 @@ export function GridEditDateCell(props) {
119
125
  onChange: handleChange
120
126
  }, other));
121
127
  }
128
+
129
+ process.env.NODE_ENV !== "production" ? GridEditDateCell.propTypes = {
130
+ // ----------------------------- Warning --------------------------------
131
+ // | These PropTypes are generated from the TypeScript type definitions |
132
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
133
+ // ----------------------------------------------------------------------
134
+
135
+ /**
136
+ * GridApi that let you manipulate the grid.
137
+ * @deprecated Use the `apiRef` returned by `useGridApiContext` or `useGridApiRef` (only available in `@mui/x-data-grid-pro`)
138
+ */
139
+ api: PropTypes.any.isRequired,
140
+
141
+ /**
142
+ * The mode of the cell.
143
+ */
144
+ cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,
145
+
146
+ /**
147
+ * The column of the row that the current cell belongs to.
148
+ */
149
+ colDef: PropTypes.object.isRequired,
150
+
151
+ /**
152
+ * The column field of the cell that triggered the event.
153
+ */
154
+ field: PropTypes.string.isRequired,
155
+
156
+ /**
157
+ * The cell value formatted with the column valueFormatter.
158
+ */
159
+ formattedValue: PropTypes.any,
160
+
161
+ /**
162
+ * Get the cell value of a row and field.
163
+ * @param {GridRowId} id The row id.
164
+ * @param {string} field The field.
165
+ * @returns {any} The cell value.
166
+ * @deprecated Use `params.row` to directly access the fields you want instead.
167
+ */
168
+ getValue: PropTypes.func.isRequired,
169
+
170
+ /**
171
+ * If true, the cell is the active element.
172
+ */
173
+ hasFocus: PropTypes.bool.isRequired,
174
+
175
+ /**
176
+ * The grid row id.
177
+ */
178
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
179
+
180
+ /**
181
+ * If true, the cell is editable.
182
+ */
183
+ isEditable: PropTypes.bool,
184
+ isProcessingProps: PropTypes.bool,
185
+ isValidating: PropTypes.bool,
186
+
187
+ /**
188
+ * Callback called when the value is changed by the user.
189
+ * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
190
+ * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
191
+ * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
192
+ */
193
+ onValueChange: PropTypes.func,
194
+
195
+ /**
196
+ * The row model of the row that the current cell belongs to.
197
+ */
198
+ row: PropTypes.object.isRequired,
199
+
200
+ /**
201
+ * The node of the row that the current cell belongs to.
202
+ */
203
+ rowNode: PropTypes.object.isRequired,
204
+
205
+ /**
206
+ * the tabIndex value.
207
+ */
208
+ tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
209
+
210
+ /**
211
+ * The cell value, but if the column has valueGetter, use getValue.
212
+ */
213
+ value: PropTypes.any
214
+ } : void 0;
215
+ export { GridEditDateCell };
122
216
  export const renderEditDateCell = params => /*#__PURE__*/_jsx(GridEditDateCell, _extends({}, params));
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "getValue", "isValidating", "debounceMs", "isProcessingProps"];
3
+ const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "getValue", "isValidating", "debounceMs", "isProcessingProps", "onValueChange"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';
@@ -48,7 +48,8 @@ function GridEditInputCell(props) {
48
48
  colDef,
49
49
  hasFocus,
50
50
  debounceMs = rootProps.experimentalFeatures?.newEditingApi ? 200 : SUBMIT_FILTER_STROKE_TIME,
51
- isProcessingProps
51
+ isProcessingProps,
52
+ onValueChange
52
53
  } = props,
53
54
  other = _objectWithoutPropertiesLoose(props, _excluded);
54
55
 
@@ -58,8 +59,13 @@ function GridEditInputCell(props) {
58
59
  classes: rootProps.classes
59
60
  };
60
61
  const classes = useUtilityClasses(ownerState);
61
- const handleChange = React.useCallback(event => {
62
+ const handleChange = React.useCallback(async event => {
62
63
  const newValue = event.target.value;
64
+
65
+ if (onValueChange) {
66
+ await onValueChange(event, newValue);
67
+ }
68
+
63
69
  setValueState(newValue);
64
70
  api.setEditCellValue({
65
71
  id,
@@ -67,7 +73,7 @@ function GridEditInputCell(props) {
67
73
  value: newValue,
68
74
  debounceMs
69
75
  }, event);
70
- }, [api, debounceMs, field, id]);
76
+ }, [api, debounceMs, field, id, onValueChange]);
71
77
  React.useEffect(() => {
72
78
  setValueState(value);
73
79
  }, [value]);
@@ -118,7 +124,7 @@ process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
118
124
  /**
119
125
  * The cell value formatted with the column valueFormatter.
120
126
  */
121
- formattedValue: PropTypes.any.isRequired,
127
+ formattedValue: PropTypes.any,
122
128
 
123
129
  /**
124
130
  * Get the cell value of a row and field.
@@ -146,6 +152,14 @@ process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
146
152
  isProcessingProps: PropTypes.bool,
147
153
  isValidating: PropTypes.bool,
148
154
 
155
+ /**
156
+ * Callback called when the value is changed by the user.
157
+ * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
158
+ * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
159
+ * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
160
+ */
161
+ onValueChange: PropTypes.func,
162
+
149
163
  /**
150
164
  * The row model of the row that the current cell belongs to.
151
165
  */
@@ -154,7 +168,17 @@ process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
154
168
  /**
155
169
  * The node of the row that the current cell belongs to.
156
170
  */
157
- rowNode: PropTypes.object.isRequired
171
+ rowNode: PropTypes.object.isRequired,
172
+
173
+ /**
174
+ * the tabIndex value.
175
+ */
176
+ tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
177
+
178
+ /**
179
+ * The cell value, but if the column has valueGetter, use getValue.
180
+ */
181
+ value: PropTypes.any
158
182
  } : void 0;
159
183
  export { GridEditInputCell };
160
184
  export const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "className", "getValue", "hasFocus", "isValidating", "isProcessingProps", "error"];
3
+ const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "className", "getValue", "hasFocus", "isValidating", "isProcessingProps", "error", "onValueChange"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
@@ -8,16 +8,19 @@ import MenuItem from '@mui/material/MenuItem';
8
8
  import { isEscapeKey } from '../../utils/keyboardUtils';
9
9
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
10
10
  import { GridEditModes } from '../../models/gridEditRowModel';
11
- import { GridEvents } from '../../models/events/gridEvents';
11
+ import { getValueFromValueOptions } from '../panel/filterPanel/filterPanelUtils';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
 
14
- const renderSingleSelectOptions = option => typeof option === 'object' ? /*#__PURE__*/_jsx(MenuItem, {
15
- value: option.value,
16
- children: option.label
17
- }, option.value) : /*#__PURE__*/_jsx(MenuItem, {
18
- value: option,
19
- children: option
20
- }, option);
14
+ const renderSingleSelectOptions = (option, OptionComponent) => {
15
+ const isOptionTypeObject = typeof option === 'object';
16
+ const key = isOptionTypeObject ? option.value : option;
17
+ const value = isOptionTypeObject ? option.value : option;
18
+ const content = isOptionTypeObject ? option.label : option;
19
+ return /*#__PURE__*/_jsx(OptionComponent, {
20
+ value: value,
21
+ children: content
22
+ }, key);
23
+ };
21
24
 
22
25
  function GridEditSingleSelectCell(props) {
23
26
  const {
@@ -28,7 +31,8 @@ function GridEditSingleSelectCell(props) {
28
31
  row,
29
32
  colDef,
30
33
  hasFocus,
31
- error
34
+ error,
35
+ onValueChange
32
36
  } = props,
33
37
  other = _objectWithoutPropertiesLoose(props, _excluded);
34
38
 
@@ -36,6 +40,8 @@ function GridEditSingleSelectCell(props) {
36
40
  const inputRef = React.useRef();
37
41
  const rootProps = useGridRootProps();
38
42
  const [open, setOpen] = React.useState(rootProps.editMode === 'cell');
43
+ const baseSelectProps = rootProps.componentsProps?.baseSelect || {};
44
+ const isSelectNative = baseSelectProps.native ?? false;
39
45
  let valueOptionsFormatted;
40
46
 
41
47
  if (typeof colDef.valueOptions === 'function') {
@@ -68,11 +74,18 @@ function GridEditSingleSelectCell(props) {
68
74
 
69
75
  const handleChange = async event => {
70
76
  setOpen(false);
71
- const target = event.target;
77
+ const target = event.target; // NativeSelect casts the value to a string.
78
+
79
+ const formattedTargetValue = getValueFromValueOptions(target.value, valueOptionsFormatted);
80
+
81
+ if (onValueChange) {
82
+ await onValueChange(event, formattedTargetValue);
83
+ }
84
+
72
85
  const isValid = await api.setEditCellValue({
73
86
  id,
74
87
  field,
75
- value: target.value
88
+ value: formattedTargetValue
76
89
  }, event);
77
90
 
78
91
  if (rootProps.experimentalFeatures?.newEditingApi) {
@@ -95,7 +108,7 @@ function GridEditSingleSelectCell(props) {
95
108
  if (event.key) {
96
109
  // TODO v6: remove once we stop ignoring events fired from portals
97
110
  const params = api.getCellParams(id, field);
98
- api.publishEvent(GridEvents.cellNavigationKeyDown, params, event);
111
+ api.publishEvent('cellNavigationKeyDown', params, event);
99
112
  }
100
113
  }
101
114
  };
@@ -139,9 +152,10 @@ function GridEditSingleSelectCell(props) {
139
152
  onClose: handleClose
140
153
  },
141
154
  error: error,
155
+ native: isSelectNative,
142
156
  fullWidth: true
143
157
  }, other, rootProps.componentsProps?.baseSelect, {
144
- children: valueOptionsFormatted.map(renderSingleSelectOptions)
158
+ children: valueOptionsFormatted.map(valueOptions => renderSingleSelectOptions(valueOptions, isSelectNative ? 'option' : MenuItem))
145
159
  }));
146
160
  }
147
161
 
@@ -175,7 +189,7 @@ process.env.NODE_ENV !== "production" ? GridEditSingleSelectCell.propTypes = {
175
189
  /**
176
190
  * The cell value formatted with the column valueFormatter.
177
191
  */
178
- formattedValue: PropTypes.any.isRequired,
192
+ formattedValue: PropTypes.any,
179
193
 
180
194
  /**
181
195
  * Get the cell value of a row and field.
@@ -203,6 +217,14 @@ process.env.NODE_ENV !== "production" ? GridEditSingleSelectCell.propTypes = {
203
217
  isProcessingProps: PropTypes.bool,
204
218
  isValidating: PropTypes.bool,
205
219
 
220
+ /**
221
+ * Callback called when the value is changed by the user.
222
+ * @param {SelectChangeEvent<any>} event The event source of the callback.
223
+ * @param {any} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
224
+ * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
225
+ */
226
+ onValueChange: PropTypes.func,
227
+
206
228
  /**
207
229
  * The row model of the row that the current cell belongs to.
208
230
  */
@@ -211,7 +233,17 @@ process.env.NODE_ENV !== "production" ? GridEditSingleSelectCell.propTypes = {
211
233
  /**
212
234
  * The node of the row that the current cell belongs to.
213
235
  */
214
- rowNode: PropTypes.object.isRequired
236
+ rowNode: PropTypes.object.isRequired,
237
+
238
+ /**
239
+ * the tabIndex value.
240
+ */
241
+ tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
242
+
243
+ /**
244
+ * The cell value, but if the column has valueGetter, use getValue.
245
+ */
246
+ value: PropTypes.any
215
247
  } : void 0;
216
248
  export { GridEditSingleSelectCell };
217
249
  export const renderEditSingleSelectCell = params => /*#__PURE__*/_jsx(GridEditSingleSelectCell, _extends({}, params));
@@ -1,4 +1,6 @@
1
1
  export * from './GridCell';
2
+ export * from './GridEditBooleanCell';
3
+ export * from './GridEditDateCell';
2
4
  export * from './GridEditInputCell';
3
5
  export * from './GridEditSingleSelectCell';
4
6
  export * from './GridActionsCell';
@@ -4,7 +4,6 @@ import PropTypes from 'prop-types';
4
4
  import clsx from 'clsx';
5
5
  import { unstable_composeClasses as composeClasses } from '@mui/material';
6
6
  import { unstable_useId as useId } from '@mui/material/utils';
7
- import { GridEvents } from '../../models/events';
8
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
9
8
  import { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';
10
9
  import { GridColumnHeaderTitle } from './GridColumnHeaderTitle';
@@ -85,25 +84,25 @@ function GridColumnHeaderItem(props) {
85
84
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(column.field), event);
86
85
  }, [apiRef, column.field]);
87
86
  const mouseEventsHandlers = {
88
- onClick: publish(GridEvents.columnHeaderClick),
89
- onDoubleClick: publish(GridEvents.columnHeaderDoubleClick),
90
- onMouseOver: publish(GridEvents.columnHeaderOver),
87
+ onClick: publish('columnHeaderClick'),
88
+ onDoubleClick: publish('columnHeaderDoubleClick'),
89
+ onMouseOver: publish('columnHeaderOver'),
91
90
  // TODO remove as it's not used
92
- onMouseOut: publish(GridEvents.columnHeaderOut),
91
+ onMouseOut: publish('columnHeaderOut'),
93
92
  // TODO remove as it's not used
94
- onMouseEnter: publish(GridEvents.columnHeaderEnter),
93
+ onMouseEnter: publish('columnHeaderEnter'),
95
94
  // TODO remove as it's not used
96
- onMouseLeave: publish(GridEvents.columnHeaderLeave),
95
+ onMouseLeave: publish('columnHeaderLeave'),
97
96
  // TODO remove as it's not used
98
- onKeyDown: publish(GridEvents.columnHeaderKeyDown),
99
- onFocus: publish(GridEvents.columnHeaderFocus),
100
- onBlur: publish(GridEvents.columnHeaderBlur)
97
+ onKeyDown: publish('columnHeaderKeyDown'),
98
+ onFocus: publish('columnHeaderFocus'),
99
+ onBlur: publish('columnHeaderBlur')
101
100
  };
102
101
  const draggableEventHandlers = {
103
- onDragStart: publish(GridEvents.columnHeaderDragStart),
104
- onDragEnter: publish(GridEvents.columnHeaderDragEnter),
105
- onDragOver: publish(GridEvents.columnHeaderDragOver),
106
- onDragEnd: publish(GridEvents.columnHeaderDragEnd)
102
+ onDragStart: publish('columnHeaderDragStart'),
103
+ onDragEnter: publish('columnHeaderDragEnter'),
104
+ onDragOver: publish('columnHeaderDragOver'),
105
+ onDragEnd: publish('columnHeaderDragEnd')
107
106
  };
108
107
  const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
109
108
  const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
@@ -115,7 +114,7 @@ function GridColumnHeaderItem(props) {
115
114
 
116
115
  const classes = useUtilityClasses(ownerState);
117
116
  const width = column.computedWidth;
118
- let ariaSort;
117
+ let ariaSort = 'none';
119
118
 
120
119
  if (sortDirection != null) {
121
120
  ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';
@@ -156,14 +155,11 @@ function GridColumnHeaderItem(props) {
156
155
 
157
156
  if (hasFocus && !columnMenuState.open) {
158
157
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
159
-
160
- if (focusableElement) {
161
- focusableElement.focus();
162
- } else {
163
- headerCellRef.current.focus();
164
- }
158
+ const elementToFocus = focusableElement || headerCellRef.current;
159
+ elementToFocus?.focus();
160
+ apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
165
161
  }
166
- });
162
+ }, [apiRef, hasFocus]);
167
163
  const headerClassName = typeof column.headerClassName === 'function' ? column.headerClassName({
168
164
  field: column.field,
169
165
  colDef: column
@@ -201,7 +197,7 @@ function GridColumnHeaderItem(props) {
201
197
  resizable: !rootProps.disableColumnResize && !!column.resizable,
202
198
  resizing: isResizing,
203
199
  height: headerHeight,
204
- onMouseDown: publish(GridEvents.columnSeparatorMouseDown),
200
+ onMouseDown: publish('columnSeparatorMouseDown'),
205
201
  side: separatorSide
206
202
  }), /*#__PURE__*/_jsx(GridColumnHeaderMenu, {
207
203
  columnMenuId: columnMenuId,
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["innerRef", "className"];
3
+ const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';