@mui/x-data-grid 5.13.1 → 5.15.1

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 (374) hide show
  1. package/CHANGELOG.md +147 -6
  2. package/DataGrid/DataGrid.js +6 -0
  3. package/DataGrid/useDataGridComponent.js +1 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/colDef/gridActionsColDef.js +2 -0
  6. package/colDef/gridBooleanColDef.js +3 -1
  7. package/colDef/gridCheckboxSelectionColDef.js +2 -0
  8. package/colDef/gridDateOperators.d.ts +1 -1
  9. package/colDef/gridStringColDef.d.ts +3 -0
  10. package/colDef/gridStringColDef.js +6 -0
  11. package/components/GridRow.js +5 -1
  12. package/components/base/GridOverlays.js +4 -1
  13. package/components/cell/GridBooleanCell.d.ts +5 -2
  14. package/components/cell/GridBooleanCell.js +93 -2
  15. package/components/cell/GridEditDateCell.js +5 -1
  16. package/components/cell/GridEditInputCell.d.ts +2 -5
  17. package/components/cell/GridEditInputCell.js +13 -14
  18. package/components/cell/GridEditSingleSelectCell.d.ts +4 -0
  19. package/components/cell/GridEditSingleSelectCell.js +11 -4
  20. package/components/cell/index.d.ts +1 -0
  21. package/components/cell/index.js +1 -0
  22. package/components/columnSelection/GridCellCheckboxRenderer.js +12 -1
  23. package/components/containers/GridRoot.js +4 -2
  24. package/components/containers/GridRootStyles.js +10 -0
  25. package/components/toolbar/GridToolbarDensitySelector.js +13 -4
  26. package/components/toolbar/GridToolbarExport.js +20 -10
  27. package/components/toolbar/GridToolbarExportContainer.js +13 -2
  28. package/constants/envConstants.d.ts +1 -1
  29. package/constants/envConstants.js +2 -11
  30. package/constants/gridClasses.d.ts +41 -1
  31. package/constants/gridClasses.js +1 -1
  32. package/constants/localeTextConstants.js +9 -2
  33. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +2 -1
  34. package/hooks/features/columns/useGridColumnSpanning.js +9 -7
  35. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  36. package/hooks/features/columns/useGridColumns.js +13 -6
  37. package/hooks/features/dimensions/useGridDimensions.js +6 -1
  38. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  39. package/hooks/features/editRows/useGridCellEditing.new.js +11 -9
  40. package/hooks/features/editRows/useGridCellEditing.old.js +2 -2
  41. package/hooks/features/editRows/useGridEditing.new.d.ts +1 -1
  42. package/hooks/features/editRows/useGridEditing.new.js +4 -0
  43. package/hooks/features/editRows/useGridEditing.old.js +1 -1
  44. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  45. package/hooks/features/editRows/useGridRowEditing.new.js +7 -8
  46. package/hooks/features/export/utils.d.ts +1 -1
  47. package/hooks/features/export/utils.js +16 -2
  48. package/hooks/features/filter/gridFilterUtils.js +6 -0
  49. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  50. package/hooks/features/filter/useGridFilter.js +11 -4
  51. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  52. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +42 -34
  53. package/hooks/features/pagination/useGridPage.js +4 -3
  54. package/hooks/features/pagination/useGridPageSize.js +7 -4
  55. package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
  56. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +12 -4
  57. package/hooks/features/rows/gridRowsSelector.d.ts +14 -0
  58. package/hooks/features/rows/gridRowsSelector.js +20 -1
  59. package/hooks/features/rows/gridRowsState.d.ts +8 -1
  60. package/hooks/features/rows/gridRowsUtils.d.ts +5 -1
  61. package/hooks/features/rows/gridRowsUtils.js +21 -3
  62. package/hooks/features/rows/index.d.ts +1 -1
  63. package/hooks/features/rows/index.js +1 -1
  64. package/hooks/features/rows/useGridRowsMeta.js +19 -4
  65. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
  66. package/hooks/features/scroll/useGridScroll.js +7 -2
  67. package/hooks/features/selection/useGridSelection.js +28 -10
  68. package/hooks/features/sorting/gridSortingUtils.d.ts +1 -0
  69. package/hooks/features/sorting/gridSortingUtils.js +10 -11
  70. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  71. package/hooks/features/sorting/useGridSorting.js +42 -6
  72. package/hooks/features/statePersistence/gridStatePersistenceInterface.d.ts +12 -1
  73. package/hooks/features/statePersistence/index.d.ts +1 -1
  74. package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  75. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -1
  76. package/hooks/features/virtualization/useGridVirtualScroller.js +32 -18
  77. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  78. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  79. package/hooks/utils/useGridNativeEventListener.js +1 -1
  80. package/index.js +1 -1
  81. package/internals/index.d.ts +6 -3
  82. package/internals/index.js +5 -2
  83. package/legacy/DataGrid/DataGrid.js +6 -0
  84. package/legacy/DataGrid/useDataGridComponent.js +1 -1
  85. package/legacy/DataGrid/useDataGridProps.js +1 -0
  86. package/legacy/colDef/gridActionsColDef.js +2 -0
  87. package/legacy/colDef/gridBooleanColDef.js +3 -1
  88. package/legacy/colDef/gridCheckboxSelectionColDef.js +2 -0
  89. package/legacy/colDef/gridStringColDef.js +6 -0
  90. package/legacy/components/GridRow.js +5 -1
  91. package/legacy/components/base/GridOverlays.js +4 -1
  92. package/legacy/components/cell/GridBooleanCell.js +93 -2
  93. package/legacy/components/cell/GridEditDateCell.js +5 -1
  94. package/legacy/components/cell/GridEditInputCell.js +13 -14
  95. package/legacy/components/cell/GridEditSingleSelectCell.js +11 -3
  96. package/legacy/components/cell/index.js +1 -0
  97. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +11 -1
  98. package/legacy/components/containers/GridRoot.js +4 -2
  99. package/legacy/components/containers/GridRootStyles.js +3 -3
  100. package/legacy/components/toolbar/GridToolbarDensitySelector.js +14 -5
  101. package/legacy/components/toolbar/GridToolbarExport.js +20 -10
  102. package/legacy/components/toolbar/GridToolbarExportContainer.js +15 -2
  103. package/legacy/constants/envConstants.js +2 -11
  104. package/legacy/constants/gridClasses.js +1 -1
  105. package/legacy/constants/localeTextConstants.js +9 -2
  106. package/legacy/hooks/features/columns/useGridColumnSpanning.js +9 -7
  107. package/legacy/hooks/features/columns/useGridColumns.js +13 -8
  108. package/legacy/hooks/features/dimensions/useGridDimensions.js +6 -1
  109. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +11 -9
  110. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +2 -2
  111. package/legacy/hooks/features/editRows/useGridEditing.new.js +4 -0
  112. package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
  113. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +7 -8
  114. package/legacy/hooks/features/export/utils.js +21 -2
  115. package/legacy/hooks/features/filter/gridFilterUtils.js +6 -0
  116. package/legacy/hooks/features/filter/useGridFilter.js +11 -4
  117. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +47 -34
  118. package/legacy/hooks/features/pagination/useGridPage.js +4 -3
  119. package/legacy/hooks/features/pagination/useGridPageSize.js +7 -4
  120. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +12 -4
  121. package/legacy/hooks/features/rows/gridRowsSelector.js +23 -0
  122. package/legacy/hooks/features/rows/gridRowsUtils.js +21 -3
  123. package/legacy/hooks/features/rows/index.js +1 -1
  124. package/legacy/hooks/features/rows/useGridRowsMeta.js +19 -4
  125. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
  126. package/legacy/hooks/features/scroll/useGridScroll.js +7 -2
  127. package/legacy/hooks/features/selection/useGridSelection.js +30 -12
  128. package/legacy/hooks/features/sorting/gridSortingUtils.js +11 -12
  129. package/legacy/hooks/features/sorting/useGridSorting.js +42 -6
  130. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -1
  131. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +33 -18
  132. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -1
  133. package/legacy/index.js +1 -1
  134. package/legacy/internals/index.js +5 -2
  135. package/legacy/locales/arSD.js +8 -1
  136. package/legacy/locales/bgBG.js +8 -1
  137. package/legacy/locales/csCZ.js +8 -1
  138. package/legacy/locales/daDK.js +8 -1
  139. package/legacy/locales/deDE.js +9 -2
  140. package/legacy/locales/elGR.js +8 -1
  141. package/legacy/locales/esES.js +8 -1
  142. package/legacy/locales/faIR.js +8 -1
  143. package/legacy/locales/fiFI.js +8 -1
  144. package/legacy/locales/frFR.js +9 -2
  145. package/legacy/locales/heIL.js +9 -2
  146. package/legacy/locales/huHU.js +8 -1
  147. package/legacy/locales/index.js +2 -1
  148. package/legacy/locales/itIT.js +21 -14
  149. package/legacy/locales/jaJP.js +11 -4
  150. package/legacy/locales/koKR.js +35 -24
  151. package/legacy/locales/nbNO.js +9 -2
  152. package/legacy/locales/nlNL.js +9 -2
  153. package/legacy/locales/plPL.js +8 -1
  154. package/legacy/locales/ptBR.js +9 -2
  155. package/legacy/locales/roRO.js +9 -2
  156. package/legacy/locales/ruRU.js +8 -1
  157. package/legacy/locales/skSK.js +9 -2
  158. package/legacy/locales/svSE.js +9 -2
  159. package/legacy/locales/trTR.js +8 -1
  160. package/legacy/locales/ukUA.js +8 -1
  161. package/legacy/locales/viVN.js +8 -1
  162. package/legacy/locales/zhCN.js +38 -27
  163. package/legacy/locales/zhTW.js +135 -0
  164. package/legacy/models/events/gridEvents.js +1 -0
  165. package/legacy/utils/keyboardUtils.js +8 -5
  166. package/locales/arSD.js +8 -1
  167. package/locales/bgBG.js +8 -1
  168. package/locales/csCZ.js +8 -1
  169. package/locales/daDK.js +8 -1
  170. package/locales/deDE.js +9 -2
  171. package/locales/elGR.js +8 -1
  172. package/locales/esES.js +8 -1
  173. package/locales/faIR.js +8 -1
  174. package/locales/fiFI.js +8 -1
  175. package/locales/frFR.js +9 -2
  176. package/locales/heIL.js +9 -2
  177. package/locales/huHU.js +8 -1
  178. package/locales/index.d.ts +1 -0
  179. package/locales/index.js +2 -1
  180. package/locales/itIT.js +21 -14
  181. package/locales/jaJP.js +11 -4
  182. package/locales/koKR.js +31 -24
  183. package/locales/nbNO.js +9 -2
  184. package/locales/nlNL.js +9 -2
  185. package/locales/plPL.js +8 -1
  186. package/locales/ptBR.js +9 -2
  187. package/locales/roRO.js +9 -2
  188. package/locales/ruRU.js +8 -1
  189. package/locales/skSK.js +9 -2
  190. package/locales/svSE.js +9 -2
  191. package/locales/trTR.js +8 -1
  192. package/locales/ukUA.js +8 -1
  193. package/locales/viVN.js +8 -1
  194. package/locales/zhCN.js +34 -27
  195. package/locales/zhTW.d.ts +2 -0
  196. package/locales/zhTW.js +123 -0
  197. package/models/api/gridColumnSpanning.d.ts +2 -0
  198. package/models/api/gridLocaleTextApi.d.ts +8 -2
  199. package/models/api/gridSelectionApi.d.ts +6 -0
  200. package/models/events/gridEvents.d.ts +1 -0
  201. package/models/events/gridEvents.js +1 -0
  202. package/models/gridRows.d.ts +15 -1
  203. package/models/params/gridCellParams.d.ts +4 -4
  204. package/models/props/DataGridProps.d.ts +5 -0
  205. package/modern/DataGrid/DataGrid.js +6 -0
  206. package/modern/DataGrid/useDataGridComponent.js +1 -1
  207. package/modern/DataGrid/useDataGridProps.js +1 -0
  208. package/modern/colDef/gridActionsColDef.js +2 -0
  209. package/modern/colDef/gridBooleanColDef.js +3 -1
  210. package/modern/colDef/gridCheckboxSelectionColDef.js +2 -0
  211. package/modern/colDef/gridStringColDef.js +6 -0
  212. package/modern/components/GridRow.js +5 -1
  213. package/modern/components/base/GridOverlays.js +4 -1
  214. package/modern/components/cell/GridBooleanCell.js +93 -2
  215. package/modern/components/cell/GridEditDateCell.js +5 -1
  216. package/modern/components/cell/GridEditInputCell.js +13 -14
  217. package/modern/components/cell/GridEditSingleSelectCell.js +11 -4
  218. package/modern/components/cell/index.js +1 -0
  219. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +12 -1
  220. package/modern/components/containers/GridRoot.js +4 -2
  221. package/modern/components/containers/GridRootStyles.js +10 -0
  222. package/modern/components/toolbar/GridToolbarDensitySelector.js +11 -4
  223. package/modern/components/toolbar/GridToolbarExport.js +20 -10
  224. package/modern/components/toolbar/GridToolbarExportContainer.js +11 -2
  225. package/modern/constants/envConstants.js +2 -11
  226. package/modern/constants/gridClasses.js +1 -1
  227. package/modern/constants/localeTextConstants.js +9 -2
  228. package/modern/hooks/features/columns/useGridColumnSpanning.js +9 -7
  229. package/modern/hooks/features/columns/useGridColumns.js +10 -5
  230. package/modern/hooks/features/dimensions/useGridDimensions.js +6 -1
  231. package/modern/hooks/features/editRows/useGridCellEditing.new.js +9 -9
  232. package/modern/hooks/features/editRows/useGridCellEditing.old.js +2 -2
  233. package/modern/hooks/features/editRows/useGridEditing.new.js +4 -0
  234. package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
  235. package/modern/hooks/features/editRows/useGridRowEditing.new.js +7 -8
  236. package/modern/hooks/features/export/utils.js +10 -2
  237. package/modern/hooks/features/filter/gridFilterUtils.js +6 -0
  238. package/modern/hooks/features/filter/useGridFilter.js +8 -3
  239. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +42 -30
  240. package/modern/hooks/features/pagination/useGridPage.js +4 -3
  241. package/modern/hooks/features/pagination/useGridPageSize.js +7 -4
  242. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +8 -4
  243. package/modern/hooks/features/rows/gridRowsSelector.js +18 -1
  244. package/modern/hooks/features/rows/gridRowsUtils.js +19 -3
  245. package/modern/hooks/features/rows/index.js +1 -1
  246. package/modern/hooks/features/rows/useGridRowsMeta.js +17 -4
  247. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
  248. package/modern/hooks/features/scroll/useGridScroll.js +5 -2
  249. package/modern/hooks/features/selection/useGridSelection.js +28 -10
  250. package/modern/hooks/features/sorting/gridSortingUtils.js +10 -11
  251. package/modern/hooks/features/sorting/useGridSorting.js +38 -6
  252. package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  253. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +31 -17
  254. package/modern/hooks/utils/useGridNativeEventListener.js +1 -1
  255. package/modern/index.js +1 -1
  256. package/modern/internals/index.js +5 -2
  257. package/modern/locales/arSD.js +8 -1
  258. package/modern/locales/bgBG.js +8 -1
  259. package/modern/locales/csCZ.js +8 -1
  260. package/modern/locales/daDK.js +8 -1
  261. package/modern/locales/deDE.js +9 -2
  262. package/modern/locales/elGR.js +8 -1
  263. package/modern/locales/esES.js +8 -1
  264. package/modern/locales/faIR.js +8 -1
  265. package/modern/locales/fiFI.js +8 -1
  266. package/modern/locales/frFR.js +9 -2
  267. package/modern/locales/heIL.js +9 -2
  268. package/modern/locales/huHU.js +8 -1
  269. package/modern/locales/index.js +2 -1
  270. package/modern/locales/itIT.js +21 -14
  271. package/modern/locales/jaJP.js +11 -4
  272. package/modern/locales/koKR.js +31 -24
  273. package/modern/locales/nbNO.js +9 -2
  274. package/modern/locales/nlNL.js +9 -2
  275. package/modern/locales/plPL.js +8 -1
  276. package/modern/locales/ptBR.js +9 -2
  277. package/modern/locales/roRO.js +9 -2
  278. package/modern/locales/ruRU.js +8 -1
  279. package/modern/locales/skSK.js +9 -2
  280. package/modern/locales/svSE.js +9 -2
  281. package/modern/locales/trTR.js +8 -1
  282. package/modern/locales/ukUA.js +8 -1
  283. package/modern/locales/viVN.js +8 -1
  284. package/modern/locales/zhCN.js +34 -27
  285. package/modern/locales/zhTW.js +123 -0
  286. package/modern/models/events/gridEvents.js +1 -0
  287. package/modern/utils/keyboardUtils.js +7 -2
  288. package/node/DataGrid/DataGrid.js +6 -0
  289. package/node/DataGrid/useDataGridComponent.js +1 -1
  290. package/node/DataGrid/useDataGridProps.js +1 -0
  291. package/node/colDef/gridActionsColDef.js +2 -0
  292. package/node/colDef/gridBooleanColDef.js +3 -1
  293. package/node/colDef/gridCheckboxSelectionColDef.js +2 -0
  294. package/node/colDef/gridStringColDef.js +5 -0
  295. package/node/components/GridRow.js +5 -1
  296. package/node/components/base/GridOverlays.js +4 -1
  297. package/node/components/cell/GridBooleanCell.js +93 -2
  298. package/node/components/cell/GridEditDateCell.js +7 -1
  299. package/node/components/cell/GridEditInputCell.js +15 -16
  300. package/node/components/cell/GridEditSingleSelectCell.js +10 -4
  301. package/node/components/cell/index.js +13 -0
  302. package/node/components/columnSelection/GridCellCheckboxRenderer.js +12 -1
  303. package/node/components/containers/GridRoot.js +3 -1
  304. package/node/components/containers/GridRootStyles.js +10 -0
  305. package/node/components/toolbar/GridToolbarDensitySelector.js +13 -4
  306. package/node/components/toolbar/GridToolbarExport.js +16 -10
  307. package/node/components/toolbar/GridToolbarExportContainer.js +13 -2
  308. package/node/constants/envConstants.js +2 -13
  309. package/node/constants/gridClasses.js +1 -1
  310. package/node/constants/localeTextConstants.js +9 -2
  311. package/node/hooks/features/columns/useGridColumnSpanning.js +9 -7
  312. package/node/hooks/features/columns/useGridColumns.js +13 -6
  313. package/node/hooks/features/dimensions/useGridDimensions.js +7 -1
  314. package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -9
  315. package/node/hooks/features/editRows/useGridCellEditing.old.js +2 -2
  316. package/node/hooks/features/editRows/useGridEditing.new.js +4 -0
  317. package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
  318. package/node/hooks/features/editRows/useGridRowEditing.new.js +7 -8
  319. package/node/hooks/features/export/utils.js +17 -2
  320. package/node/hooks/features/filter/gridFilterUtils.js +7 -0
  321. package/node/hooks/features/filter/useGridFilter.js +11 -4
  322. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -34
  323. package/node/hooks/features/pagination/useGridPage.js +4 -3
  324. package/node/hooks/features/pagination/useGridPageSize.js +8 -4
  325. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +12 -4
  326. package/node/hooks/features/rows/gridRowsSelector.js +24 -2
  327. package/node/hooks/features/rows/gridRowsUtils.js +23 -2
  328. package/node/hooks/features/rows/index.js +70 -12
  329. package/node/hooks/features/rows/useGridRowsMeta.js +20 -4
  330. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
  331. package/node/hooks/features/scroll/useGridScroll.js +7 -1
  332. package/node/hooks/features/selection/useGridSelection.js +28 -10
  333. package/node/hooks/features/sorting/gridSortingUtils.js +10 -11
  334. package/node/hooks/features/sorting/useGridSorting.js +42 -6
  335. package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  336. package/node/hooks/features/virtualization/useGridVirtualScroller.js +32 -18
  337. package/node/hooks/utils/useGridNativeEventListener.js +1 -1
  338. package/node/index.js +1 -1
  339. package/node/internals/index.js +46 -0
  340. package/node/locales/arSD.js +8 -1
  341. package/node/locales/bgBG.js +8 -1
  342. package/node/locales/csCZ.js +8 -1
  343. package/node/locales/daDK.js +8 -1
  344. package/node/locales/deDE.js +9 -2
  345. package/node/locales/elGR.js +8 -1
  346. package/node/locales/esES.js +8 -1
  347. package/node/locales/faIR.js +8 -1
  348. package/node/locales/fiFI.js +8 -1
  349. package/node/locales/frFR.js +9 -2
  350. package/node/locales/heIL.js +9 -2
  351. package/node/locales/huHU.js +8 -1
  352. package/node/locales/index.js +13 -0
  353. package/node/locales/itIT.js +21 -14
  354. package/node/locales/jaJP.js +11 -4
  355. package/node/locales/koKR.js +31 -24
  356. package/node/locales/nbNO.js +9 -2
  357. package/node/locales/nlNL.js +9 -2
  358. package/node/locales/plPL.js +8 -1
  359. package/node/locales/ptBR.js +9 -2
  360. package/node/locales/roRO.js +9 -2
  361. package/node/locales/ruRU.js +8 -1
  362. package/node/locales/skSK.js +9 -2
  363. package/node/locales/svSE.js +9 -2
  364. package/node/locales/trTR.js +8 -1
  365. package/node/locales/ukUA.js +8 -1
  366. package/node/locales/viVN.js +8 -1
  367. package/node/locales/zhCN.js +34 -27
  368. package/node/locales/zhTW.js +133 -0
  369. package/node/models/events/gridEvents.js +1 -0
  370. package/node/utils/keyboardUtils.js +10 -4
  371. package/package.json +1 -1
  372. package/utils/getGridLocalization.d.ts +1 -1
  373. package/utils/keyboardUtils.d.ts +2 -2
  374. package/utils/keyboardUtils.js +7 -2
@@ -9,6 +9,7 @@ import { gridFilterStateSelector } from '../filter/gridFilterSelector';
9
9
  import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
10
10
  import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
11
11
  import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
12
+ import { gridPinnedRowsSelector } from './gridRowsSelector';
12
13
  export const rowsMetaStateInitializer = state => _extends({}, state, {
13
14
  rowsMeta: {
14
15
  currentPageTotalHeight: 0,
@@ -35,13 +36,14 @@ export const useGridRowsMeta = (apiRef, props) => {
35
36
  const paginationState = useGridSelector(apiRef, gridPaginationSelector);
36
37
  const sortingState = useGridSelector(apiRef, gridSortingStateSelector);
37
38
  const currentPage = useGridVisibleRows(apiRef, props);
39
+ const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
38
40
  const hydrateRowsMeta = React.useCallback(() => {
41
+ var _pinnedRows$top, _pinnedRows$bottom;
42
+
39
43
  hasRowWithAutoHeight.current = false;
40
44
  const densityFactor = gridDensityFactorSelector(apiRef.current.state, apiRef.current.instanceId);
41
- const positions = [];
42
- const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
43
- positions.push(acc);
44
45
 
46
+ const calculateRowProcessedSizes = row => {
45
47
  if (!rowsHeightLookup.current[row.id]) {
46
48
  rowsHeightLookup.current[row.id] = {
47
49
  sizes: {
@@ -113,9 +115,22 @@ export const useGridRowsMeta = (apiRef, props) => {
113
115
 
114
116
  const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
115
117
  rowsHeightLookup.current[row.id].sizes = processedSizes;
118
+ return processedSizes;
119
+ };
120
+
121
+ const positions = [];
122
+ const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
123
+ positions.push(acc);
124
+ const processedSizes = calculateRowProcessedSizes(row);
116
125
  const finalRowHeight = Object.values(processedSizes).reduce((acc2, value) => acc2 + value, 0);
117
126
  return acc + finalRowHeight;
118
127
  }, 0);
128
+ pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.forEach(row => {
129
+ calculateRowProcessedSizes(row);
130
+ });
131
+ pinnedRows == null ? void 0 : (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.forEach(row => {
132
+ calculateRowProcessedSizes(row);
133
+ });
119
134
  apiRef.current.setState(state => {
120
135
  return _extends({}, state, {
121
136
  rowsMeta: {
@@ -131,7 +146,7 @@ export const useGridRowsMeta = (apiRef, props) => {
131
146
  }
132
147
 
133
148
  apiRef.current.forceUpdate();
134
- }, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
149
+ }, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight, pinnedRows]);
135
150
  const getRowHeight = React.useCallback(rowId => {
136
151
  const height = rowsHeightLookup.current[rowId];
137
152
  return height ? height.sizes.base : rowHeightFromDensity;
@@ -11,7 +11,8 @@ const flatRowTreeCreationMethod = ({
11
11
  for (let i = 0; i < ids.length; i += 1) {
12
12
  const rowId = ids[i];
13
13
 
14
- if (previousTree && previousTree[rowId] && previousTree[rowId].depth === 0 && previousTree[rowId].parent == null) {
14
+ if (previousTree && previousTree[rowId] && previousTree[rowId].depth === 0 && previousTree[rowId].parent == null && // pinned row can be unpinned
15
+ !previousTree[rowId].isPinned) {
15
16
  tree[rowId] = previousTree[rowId];
16
17
  } else {
17
18
  tree[rowId] = {
@@ -6,7 +6,8 @@ import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPagina
6
6
  import { gridRowCountSelector } from '../rows/gridRowsSelector';
7
7
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
8
8
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
9
- import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
9
+ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector';
10
+ import { gridClasses } from '../../../constants/gridClasses'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
10
11
  // Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
11
12
 
12
13
  function scrollIntoView(dimensions) {
@@ -88,13 +89,17 @@ export const useGridScroll = (apiRef, props) => {
88
89
  }
89
90
 
90
91
  if (params.rowIndex != null) {
92
+ var _querySelector, _querySelector2;
93
+
91
94
  const rowsMeta = gridRowsMetaSelector(apiRef.current.state);
92
95
  const page = gridPageSelector(apiRef);
93
96
  const pageSize = gridPageSizeSelector(apiRef);
94
97
  const elementIndex = !props.pagination ? params.rowIndex : params.rowIndex - page * pageSize;
95
98
  const targetOffsetHeight = rowsMeta.positions[elementIndex + 1] ? rowsMeta.positions[elementIndex + 1] - rowsMeta.positions[elementIndex] : rowsMeta.currentPageTotalHeight - rowsMeta.positions[elementIndex];
99
+ const topPinnedRowsHeight = ((_querySelector = windowRef.current.querySelector(`.${gridClasses['pinnedRows--top']}`)) == null ? void 0 : _querySelector.clientHeight) || 0;
100
+ const bottomPinnedRowsHeight = ((_querySelector2 = windowRef.current.querySelector(`.${gridClasses['pinnedRows--bottom']}`)) == null ? void 0 : _querySelector2.clientHeight) || 0;
96
101
  scrollCoordinates.top = scrollIntoView({
97
- clientHeight: windowRef.current.clientHeight,
102
+ clientHeight: windowRef.current.clientHeight - topPinnedRowsHeight - bottomPinnedRowsHeight,
98
103
  scrollTop: windowRef.current.scrollTop,
99
104
  offsetHeight: targetOffsetHeight,
100
105
  offsetTop: rowsMeta.positions[elementIndex]
@@ -61,9 +61,9 @@ export const useGridSelection = (apiRef, props) => {
61
61
  checkboxSelection,
62
62
  disableMultipleSelection,
63
63
  disableSelectionOnClick,
64
- isRowSelectable,
65
64
  pagination,
66
- paginationMode
65
+ paginationMode,
66
+ isRowSelectable: propIsRowSelectable
67
67
  } = props;
68
68
  const canHaveMultipleSelection = !disableMultipleSelection || checkboxSelection;
69
69
  const visibleRows = useGridVisibleRows(apiRef, props);
@@ -112,9 +112,22 @@ export const useGridSelection = (apiRef, props) => {
112
112
  }
113
113
  }, [apiRef, logger]);
114
114
  const isRowSelected = React.useCallback(id => gridSelectionStateSelector(apiRef.current.state).includes(id), [apiRef]);
115
+ const isRowSelectable = React.useCallback(id => {
116
+ if (propIsRowSelectable && !propIsRowSelectable(apiRef.current.getRowParams(id))) {
117
+ return false;
118
+ }
119
+
120
+ const rowNode = apiRef.current.getRowNode(id);
121
+
122
+ if ((rowNode == null ? void 0 : rowNode.position) === 'footer' || rowNode != null && rowNode.isPinned) {
123
+ return false;
124
+ }
125
+
126
+ return true;
127
+ }, [apiRef, propIsRowSelectable]);
115
128
  const getSelectedRows = React.useCallback(() => selectedGridRowsSelector(apiRef), [apiRef]);
116
129
  const selectRow = React.useCallback((id, isSelected = true, resetSelection = false) => {
117
- if (isRowSelectable && !isRowSelectable(apiRef.current.getRowParams(id))) {
130
+ if (!apiRef.current.isRowSelectable(id)) {
118
131
  return;
119
132
  }
120
133
 
@@ -138,10 +151,10 @@ export const useGridSelection = (apiRef, props) => {
138
151
  apiRef.current.setSelectionModel(newSelection);
139
152
  }
140
153
  }
141
- }, [apiRef, isRowSelectable, logger, canHaveMultipleSelection]);
154
+ }, [apiRef, logger, canHaveMultipleSelection]);
142
155
  const selectRows = React.useCallback((ids, isSelected = true, resetSelection = false) => {
143
156
  logger.debug(`Setting selection for several rows`);
144
- const selectableIds = isRowSelectable ? ids.filter(id => isRowSelectable(apiRef.current.getRowParams(id))) : ids;
157
+ const selectableIds = ids.filter(id => apiRef.current.isRowSelectable(id));
145
158
  let newSelection;
146
159
 
147
160
  if (resetSelection) {
@@ -165,7 +178,7 @@ export const useGridSelection = (apiRef, props) => {
165
178
  if (isSelectionValid) {
166
179
  apiRef.current.setSelectionModel(newSelection);
167
180
  }
168
- }, [apiRef, isRowSelectable, logger, canHaveMultipleSelection]);
181
+ }, [apiRef, logger, canHaveMultipleSelection]);
169
182
  const selectRowRange = React.useCallback(({
170
183
  startId,
171
184
  endId
@@ -189,7 +202,8 @@ export const useGridSelection = (apiRef, props) => {
189
202
  selectRowRange,
190
203
  setSelectionModel,
191
204
  getSelectedRows,
192
- isRowSelected
205
+ isRowSelected,
206
+ isRowSelectable
193
207
  };
194
208
  useGridApiMethod(apiRef, selectionApi, 'GridSelectionApi');
195
209
  /**
@@ -257,6 +271,10 @@ export const useGridSelection = (apiRef, props) => {
257
271
  }
258
272
  }
259
273
 
274
+ if (params.rowNode.isPinned) {
275
+ return;
276
+ }
277
+
260
278
  if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
261
279
  expandMouseRowRangeSelection(params.id);
262
280
  } else {
@@ -371,13 +389,13 @@ export const useGridSelection = (apiRef, props) => {
371
389
  React.useEffect(() => {
372
390
  if (isStateControlled) {
373
391
  return;
374
- } // isRowSelectable changed
392
+ } // props.isRowSelectable changed
375
393
 
376
394
 
377
395
  const currentSelection = gridSelectionStateSelector(apiRef.current.state);
378
396
 
379
397
  if (isRowSelectable) {
380
- const newSelection = currentSelection.filter(id => isRowSelectable(apiRef.current.getRowParams(id)));
398
+ const newSelection = currentSelection.filter(id => isRowSelectable(id));
381
399
 
382
400
  if (newSelection.length < currentSelection.length) {
383
401
  apiRef.current.setSelectionModel(newSelection);
@@ -404,7 +422,7 @@ export const useGridSelection = (apiRef, props) => {
404
422
  let isSelectable = true;
405
423
 
406
424
  if (isRowSelectable) {
407
- isSelectable = isRowSelectable(apiRef.current.getRowParams(id));
425
+ isSelectable = isRowSelectable(id);
408
426
  }
409
427
 
410
428
  return isSelectable && currentPageRowsLookup[id]; // Check if the row is in the current page
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import { GridSortingModelApplier } from './gridSortingState';
2
3
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
4
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
@@ -46,25 +46,24 @@ const parseSortItem = (sortItem, apiRef) => {
46
46
  comparator
47
47
  };
48
48
  };
49
+
49
50
  /**
50
51
  * Compare two rows according to a list of valid sort items.
51
52
  * The `row1Params` and `row2Params` must have the same length as `parsedSortItems`,
52
53
  * and each of their index must contain the `GridSortCellParams` of the sort item with the same index.
53
54
  * @param {GridParsedSortItem[]} parsedSortItems All the sort items with which we want to compare the rows.
54
- * @param {GridSortCellParams} row1Params The params of the 1st row for each sort item.
55
- * @param {GridSortCellParams} row2Params The params of the 2nd row for each sort item.
55
+ * @param {GridRowAggregatedSortingParams} row1 The node and params of the 1st row for each sort item.
56
+ * @param {GridRowAggregatedSortingParams} row2 The node and params of the 2nd row for each sort item.
56
57
  */
57
-
58
-
59
- const compareRows = (parsedSortItems, row1Params, row2Params) => {
58
+ const compareRows = (parsedSortItems, row1, row2) => {
60
59
  return parsedSortItems.reduce((res, item, index) => {
61
60
  if (res !== 0) {
62
61
  // return the results of the first comparator which distinguish the two rows
63
62
  return res;
64
63
  }
65
64
 
66
- const sortCellParams1 = row1Params[index];
67
- const sortCellParams2 = row2Params[index];
65
+ const sortCellParams1 = row1.params[index];
66
+ const sortCellParams2 = row2.params[index];
68
67
  res = item.comparator(sortCellParams1.value, sortCellParams2.value, sortCellParams1, sortCellParams2);
69
68
  return res;
70
69
  }, 0);
@@ -84,10 +83,10 @@ export const buildAggregatedSortingApplier = (sortModel, apiRef) => {
84
83
  return null;
85
84
  }
86
85
 
87
- return rowList => rowList.map(value => ({
88
- value,
89
- params: comparatorList.map(el => el.getSortCellParams(value.id))
90
- })).sort((a, b) => compareRows(comparatorList, a.params, b.params)).map(row => row.value.id);
86
+ return rowList => rowList.map(node => ({
87
+ node,
88
+ params: comparatorList.map(el => el.getSortCellParams(node.id))
89
+ })).sort((a, b) => compareRows(comparatorList, a, b)).map(row => row.node.id);
91
90
  };
92
91
  export const getNextGridSortDirection = (sortingOrder, current) => {
93
92
  const currentIdx = sortingOrder.indexOf(current);
@@ -7,4 +7,4 @@ export declare const sortingStateInitializer: GridStateInitializer<Pick<DataGrid
7
7
  * @requires useGridRows (event)
8
8
  * @requires useGridColumns (event)
9
9
  */
10
- export declare const useGridSorting: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'sortModel' | 'onSortModelChange' | 'sortingOrder' | 'sortingMode' | 'disableMultipleColumnsSorting'>) => void;
10
+ export declare const useGridSorting: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'sortModel' | 'onSortModelChange' | 'sortingOrder' | 'sortingMode' | 'disableMultipleColumnsSorting'>) => void;
@@ -29,6 +29,8 @@ export const sortingStateInitializer = (state, props) => {
29
29
  */
30
30
 
31
31
  export const useGridSorting = (apiRef, props) => {
32
+ var _props$initialState3, _props$initialState3$;
33
+
32
34
  const logger = useGridLogger(apiRef, 'useGridSorting');
33
35
  apiRef.current.unstable_registerControlState({
34
36
  stateId: 'sortModel',
@@ -152,10 +154,17 @@ export const useGridSorting = (apiRef, props) => {
152
154
  * PRE-PROCESSING
153
155
  */
154
156
 
155
- const stateExportPreProcessing = React.useCallback(prevState => {
157
+ const stateExportPreProcessing = React.useCallback((prevState, context) => {
158
+ var _props$initialState2, _props$initialState2$;
159
+
156
160
  const sortModelToExport = gridSortModelSelector(apiRef);
161
+ const shouldExportSortModel = // Always export if the `exportOnlyDirtyModels` property is activated
162
+ !context.exportOnlyDirtyModels || // Always export if the model is controlled
163
+ props.sortModel != null || // Always export if the model has been initialized
164
+ ((_props$initialState2 = props.initialState) == null ? void 0 : (_props$initialState2$ = _props$initialState2.sorting) == null ? void 0 : _props$initialState2$.sortModel) != null || // Export if the model is not empty
165
+ sortModelToExport.length > 0;
157
166
 
158
- if (sortModelToExport.length === 0) {
167
+ if (!shouldExportSortModel) {
159
168
  return prevState;
160
169
  }
161
170
 
@@ -164,7 +173,7 @@ export const useGridSorting = (apiRef, props) => {
164
173
  sortModel: sortModelToExport
165
174
  }
166
175
  });
167
- }, [apiRef]);
176
+ }, [apiRef, props.sortModel, (_props$initialState3 = props.initialState) == null ? void 0 : (_props$initialState3$ = _props$initialState3.sorting) == null ? void 0 : _props$initialState3$.sortModel]);
168
177
  const stateRestorePreProcessing = React.useCallback((params, context) => {
169
178
  var _context$stateToResto;
170
179
 
@@ -180,12 +189,39 @@ export const useGridSorting = (apiRef, props) => {
180
189
  });
181
190
  }, [apiRef, props.disableMultipleColumnsSorting]);
182
191
  const flatSortingMethod = React.useCallback(params => {
192
+ const rowTree = gridRowTreeSelector(apiRef);
193
+
183
194
  if (!params.sortRowList) {
184
- return gridRowIdsSelector(apiRef);
195
+ const bodyRowIds = [];
196
+ const footerRowIds = [];
197
+ gridRowIdsSelector(apiRef).forEach(rowId => {
198
+ if (rowTree[rowId].isPinned) {
199
+ return;
200
+ }
201
+
202
+ if (rowTree[rowId].position === 'footer') {
203
+ footerRowIds.push(rowId);
204
+ } else {
205
+ bodyRowIds.push(rowId);
206
+ }
207
+ });
208
+ return [...bodyRowIds, ...footerRowIds];
185
209
  }
186
210
 
187
- const rowTree = gridRowTreeSelector(apiRef);
188
- return params.sortRowList(Object.values(rowTree));
211
+ const bodyRows = [];
212
+ const footerRowIds = [];
213
+ Object.values(rowTree).forEach(rowNode => {
214
+ if (rowNode.isPinned) {
215
+ return;
216
+ }
217
+
218
+ if (rowNode.position === 'footer') {
219
+ footerRowIds.push(rowNode.id);
220
+ } else {
221
+ bodyRows.push(rowNode);
222
+ }
223
+ });
224
+ return [...params.sortRowList(bodyRows), ...footerRowIds];
189
225
  }, [apiRef]);
190
226
  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
191
227
  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
@@ -3,9 +3,10 @@ export interface GridStatePersistenceApi<InitialState extends GridInitialStateCo
3
3
  /**
4
4
  * Generates a serializable object containing the exportable parts of the DataGrid state.
5
5
  * These values can then be passed to the `initialState` prop or injected using the `restoreState` method.
6
+ * @param {GridExportStateParams} params With all properties from [[GridExportStateParams]]
6
7
  * @returns {GridInitialState} The exported state.
7
8
  */
8
- exportState: () => InitialState;
9
+ exportState: (params?: GridExportStateParams) => InitialState;
9
10
  /**
10
11
  * Inject the given values into the state of the DataGrid.
11
12
  * @param {GridInitialState} stateToRestore The exported state to restore.
@@ -19,6 +20,16 @@ export interface GridRestoreStatePreProcessingValue {
19
20
  */
20
21
  callbacks: (() => void)[];
21
22
  }
23
+ export interface GridExportStateParams {
24
+ /**
25
+ * By default, the grid exports all the models.
26
+ * You can switch this property to `true` to only exports models that are either controlled, initialized or modified.
27
+ * For instance, with this property, if you don't control or initialize the `filterModel` and you did not apply any filter, the model won't be exported.
28
+ * Note that the column dimensions are not a model. The grid only exports the dimensions of the modified columns even when `exportOnlyDirtyModels` is false.
29
+ * @default false
30
+ */
31
+ exportOnlyDirtyModels?: boolean;
32
+ }
22
33
  export interface GridRestoreStatePreProcessingContext<I extends GridInitialStateCommunity> {
23
34
  stateToRestore: I;
24
35
  }
@@ -1 +1 @@
1
- export type { GridStatePersistenceApi } from './gridStatePersistenceInterface';
1
+ export type { GridStatePersistenceApi, GridExportStateParams, } from './gridStatePersistenceInterface';
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { useGridApiMethod } from '../../utils';
3
3
  export const useGridStatePersistence = apiRef => {
4
- const exportState = React.useCallback(() => {
5
- const stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {});
4
+ const exportState = React.useCallback((params = {}) => {
5
+ const stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {}, params);
6
6
  return stateToExport;
7
7
  }, [apiRef]);
8
8
  const restoreState = React.useCallback(stateToRestore => {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { GridRenderContext } from '../../../models';
2
+ import { GridRenderContext, GridRowEntry } from '../../../models';
3
3
  import { GridRowId, GridRowModel } from '../../../models/gridRows';
4
4
  export declare function binarySearch(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
5
5
  export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
@@ -29,6 +29,8 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
29
29
  maxLastColumn?: number | undefined;
30
30
  availableSpace?: number | null | undefined;
31
31
  ignoreAutoHeight?: boolean | undefined;
32
+ rows?: GridRowEntry<any>[] | undefined;
33
+ rowIndexOffset?: number | undefined;
32
34
  }) => JSX.Element[] | null;
33
35
  getRootProps: ({ style, ...other }?: {
34
36
  style?: {} | undefined;
@@ -170,10 +170,8 @@ export const useGridVirtualScroller = props => {
170
170
  React.useEffect(() => {
171
171
  setContainerWidth(rootRef.current.clientWidth);
172
172
  }, [rowsMeta.currentPageTotalHeight]);
173
- const handleResize = React.useCallback(() => {
174
- if (rootRef.current) {
175
- setContainerWidth(rootRef.current.clientWidth);
176
- }
173
+ const handleResize = React.useCallback(params => {
174
+ setContainerWidth(params.width);
177
175
  }, []);
178
176
  useGridApiEventHandler(apiRef, 'resize', handleResize);
179
177
  const updateRenderZonePosition = React.useCallback(nextRenderContext => {
@@ -289,10 +287,11 @@ export const useGridVirtualScroller = props => {
289
287
  minFirstColumn = renderZoneMinColumnIndex,
290
288
  maxLastColumn = renderZoneMaxColumnIndex,
291
289
  availableSpace = containerWidth,
292
- ignoreAutoHeight
290
+ ignoreAutoHeight,
291
+ rowIndexOffset = 0
293
292
  } = params;
294
293
 
295
- if (!currentPage.range || !nextRenderContext || availableSpace == null) {
294
+ if (!nextRenderContext || availableSpace == null) {
296
295
  return null;
297
296
  }
298
297
 
@@ -307,14 +306,31 @@ export const useGridVirtualScroller = props => {
307
306
  });
308
307
  const renderedRows = [];
309
308
 
310
- for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
311
- const row = currentPage.rows[i];
312
- renderedRows.push(row);
313
- apiRef.current.unstable_calculateColSpan({
314
- rowId: row.id,
315
- minFirstColumn,
316
- maxLastColumn
309
+ if (params.rows) {
310
+ params.rows.forEach(row => {
311
+ renderedRows.push(row);
312
+ apiRef.current.unstable_calculateColSpan({
313
+ rowId: row.id,
314
+ minFirstColumn,
315
+ maxLastColumn,
316
+ columns: visibleColumns
317
+ });
317
318
  });
319
+ } else {
320
+ if (!currentPage.range) {
321
+ return null;
322
+ }
323
+
324
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
325
+ const row = currentPage.rows[i];
326
+ renderedRows.push(row);
327
+ apiRef.current.unstable_calculateColSpan({
328
+ rowId: row.id,
329
+ minFirstColumn,
330
+ maxLastColumn,
331
+ columns: visibleColumns
332
+ });
333
+ }
318
334
  }
319
335
 
320
336
  const [initialFirstColumnToRender, lastColumnToRender] = getRenderableIndexes({
@@ -335,7 +351,7 @@ export const useGridVirtualScroller = props => {
335
351
  const rows = [];
336
352
 
337
353
  for (let i = 0; i < renderedRows.length; i += 1) {
338
- var _rootProps$components;
354
+ var _currentPage$range5, _rootProps$components;
339
355
 
340
356
  const {
341
357
  id,
@@ -347,10 +363,8 @@ export const useGridVirtualScroller = props => {
347
363
 
348
364
  if (selectedRowsLookup[id] == null) {
349
365
  isSelected = false;
350
- } else if (typeof rootProps.isRowSelectable === 'function') {
351
- isSelected = rootProps.isRowSelectable(apiRef.current.getRowParams(id));
352
366
  } else {
353
- isSelected = true;
367
+ isSelected = apiRef.current.isRowSelectable(id);
354
368
  }
355
369
 
356
370
  rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
@@ -368,7 +382,7 @@ export const useGridVirtualScroller = props => {
368
382
  firstColumnToRender: firstColumnToRender,
369
383
  lastColumnToRender: lastColumnToRender,
370
384
  selected: isSelected,
371
- index: currentPage.range.firstRowIndex + firstRowToRender + i,
385
+ index: rowIndexOffset + ((currentPage == null ? void 0 : (_currentPage$range5 = currentPage.range) == null ? void 0 : _currentPage$range5.firstRowIndex) || 0) + firstRowToRender + i,
372
386
  containerWidth: availableSpace,
373
387
  isLastVisible: lastVisibleRowIndex
374
388
  }, typeof getRowProps === 'function' ? getRowProps(id, model) : {}, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.row), id));
@@ -14,8 +14,8 @@ declare enum GridSignature {
14
14
  interface RegistryContainer {
15
15
  registry: CleanupTracking | null;
16
16
  }
17
- export declare function createUseGridApiEventHandler(registryContainer: RegistryContainer): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
17
+ export declare function createUseGridApiEventHandler(registryContainer: RegistryContainer): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions) => void;
18
18
  export declare const unstable_resetCleanupTracking: () => void;
19
- export declare const useGridApiEventHandler: <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
19
+ export declare const useGridApiEventHandler: <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions) => void;
20
20
  export declare function useGridApiOptionHandler<Api extends GridApiCommon, E extends GridEventsStr>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
21
21
  export { GridSignature };
@@ -1,3 +1,3 @@
1
1
  import * as React from 'react';
2
2
  import { GridApiCommon } from '../../models';
3
- export declare const useGridNativeEventListener: <Api extends GridApiCommon, E extends Event>(apiRef: React.MutableRefObject<Api>, ref: React.MutableRefObject<HTMLDivElement | null> | (() => Element | undefined | null), eventName: string, handler?: ((event: E) => any) | undefined, options?: AddEventListenerOptions | undefined) => void;
3
+ export declare const useGridNativeEventListener: <Api extends GridApiCommon, E extends Event>(apiRef: React.MutableRefObject<Api>, ref: React.MutableRefObject<HTMLDivElement | null> | (() => Element | undefined | null), eventName: string, handler?: ((event: E) => any) | undefined, options?: AddEventListenerOptions) => void;
@@ -20,7 +20,7 @@ export const useGridNativeEventListener = (apiRef, ref, eventName, handler, opti
20
20
  targetElement = ref && ref.current ? ref.current : null;
21
21
  }
22
22
 
23
- if (targetElement && wrapHandler && eventName && !added) {
23
+ if (targetElement && eventName && !added) {
24
24
  logger.debug(`Binding native ${eventName} event`);
25
25
  targetElement.addEventListener(eventName, wrapHandler, options);
26
26
  const boundElem = targetElement;
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.13.1
1
+ /** @license MUI v5.15.1
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -5,7 +5,7 @@ export { GridColumnHeaders } from '../components/columnHeaders/GridColumnHeaders
5
5
  export { GridColumnHeadersInner } from '../components/columnHeaders/GridColumnHeadersInner';
6
6
  export { useGridRegisterPipeProcessor } from '../hooks/core/pipeProcessing';
7
7
  export type { GridPipeProcessor } from '../hooks/core/pipeProcessing';
8
- export { useGridRegisterStrategyProcessor } from '../hooks/core/strategyProcessing';
8
+ export { useGridRegisterStrategyProcessor, GRID_DEFAULT_STRATEGY, } from '../hooks/core/strategyProcessing';
9
9
  export type { GridStrategyProcessor } from '../hooks/core/strategyProcessing';
10
10
  export { useGridInitialization } from '../hooks/core/useGridInitialization';
11
11
  export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
@@ -27,9 +27,12 @@ export { useGridEditing as useGridEditing_new, editingStateInitializer as editin
27
27
  export { useGridEditing as useGridEditing_old, editingStateInitializer as editingStateInitializer_old, } from '../hooks/features/editRows/useGridEditing.old';
28
28
  export { useGridRows, rowsStateInitializer } from '../hooks/features/rows/useGridRows';
29
29
  export { useGridRowsPreProcessors } from '../hooks/features/rows/useGridRowsPreProcessors';
30
- export type { GridRowTreeCreationParams, GridRowTreeCreationValue, } from '../hooks/features/rows/gridRowsState';
30
+ export type { GridRowTreeCreationParams, GridRowTreeCreationValue, GridHydrateRowsValue, GridPinnedRowsState, } from '../hooks/features/rows/gridRowsState';
31
31
  export { useGridRowsMeta, rowsMetaStateInitializer } from '../hooks/features/rows/useGridRowsMeta';
32
32
  export { useGridParamsApi } from '../hooks/features/rows/useGridParamsApi';
33
+ export { getRowIdFromRowModel } from '../hooks/features/rows/gridRowsUtils';
34
+ export { gridAdditionalRowGroupsSelector, gridPinnedRowsSelector, } from '../hooks/features/rows/gridRowsSelector';
35
+ export { calculatePinnedRowsHeight } from '../hooks/features/rows/gridRowsUtils';
33
36
  export { useGridSelection, selectionStateInitializer, } from '../hooks/features/selection/useGridSelection';
34
37
  export { useGridSelectionPreProcessors } from '../hooks/features/selection/useGridSelectionPreProcessors';
35
38
  export { useGridSorting, sortingStateInitializer } from '../hooks/features/sorting/useGridSorting';
@@ -48,7 +51,7 @@ export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/ex
48
51
  export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
49
52
  export { findParentElementFromClassName } from '../utils/domUtils';
50
53
  export { isNavigationKey } from '../utils/keyboardUtils';
51
- export { clamp, isDeepEqual } from '../utils/utils';
54
+ export { clamp, isDeepEqual, isNumber, isFunction } from '../utils/utils';
52
55
  export { buildWarning } from '../utils/warning';
53
56
  export { exportAs } from '../utils/exportAs';
54
57
  export type { GridApiCommunity } from '../models/api/gridApiCommunity';
@@ -4,7 +4,7 @@ export { GridVirtualScrollerRenderZone } from '../components/virtualization/Grid
4
4
  export { GridColumnHeaders } from '../components/columnHeaders/GridColumnHeaders';
5
5
  export { GridColumnHeadersInner } from '../components/columnHeaders/GridColumnHeadersInner';
6
6
  export { useGridRegisterPipeProcessor } from '../hooks/core/pipeProcessing';
7
- export { useGridRegisterStrategyProcessor } from '../hooks/core/strategyProcessing';
7
+ export { useGridRegisterStrategyProcessor, GRID_DEFAULT_STRATEGY } from '../hooks/core/strategyProcessing';
8
8
  export { useGridInitialization } from '../hooks/core/useGridInitialization';
9
9
  export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
10
10
  export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
@@ -25,6 +25,9 @@ export { useGridRows, rowsStateInitializer } from '../hooks/features/rows/useGri
25
25
  export { useGridRowsPreProcessors } from '../hooks/features/rows/useGridRowsPreProcessors';
26
26
  export { useGridRowsMeta, rowsMetaStateInitializer } from '../hooks/features/rows/useGridRowsMeta';
27
27
  export { useGridParamsApi } from '../hooks/features/rows/useGridParamsApi';
28
+ export { getRowIdFromRowModel } from '../hooks/features/rows/gridRowsUtils';
29
+ export { gridAdditionalRowGroupsSelector, gridPinnedRowsSelector } from '../hooks/features/rows/gridRowsSelector';
30
+ export { calculatePinnedRowsHeight } from '../hooks/features/rows/gridRowsUtils';
28
31
  export { useGridSelection, selectionStateInitializer } from '../hooks/features/selection/useGridSelection';
29
32
  export { useGridSelectionPreProcessors } from '../hooks/features/selection/useGridSelectionPreProcessors';
30
33
  export { useGridSorting, sortingStateInitializer } from '../hooks/features/sorting/useGridSorting';
@@ -39,6 +42,6 @@ export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/ex
39
42
  export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
40
43
  export { findParentElementFromClassName } from '../utils/domUtils';
41
44
  export { isNavigationKey } from '../utils/keyboardUtils';
42
- export { clamp, isDeepEqual } from '../utils/utils';
45
+ export { clamp, isDeepEqual, isNumber, isFunction } from '../utils/utils';
43
46
  export { buildWarning } from '../utils/warning';
44
47
  export { exportAs } from '../utils/exportAs';
@@ -157,6 +157,12 @@ DataGridRaw.propTypes = {
157
157
  */
158
158
  disableExtendRowFullWidth: PropTypes.bool,
159
159
 
160
+ /**
161
+ * If `true`, modification to a cell will not be discarded if the mode is changed from "edit" to "view" while processing props.
162
+ * @default false
163
+ */
164
+ disableIgnoreModificationsIfProcessingProps: PropTypes.bool,
165
+
160
166
  /**
161
167
  * If `true`, the selection on click on a row or cell is disabled.
162
168
  * @default false
@@ -60,7 +60,7 @@ export var useDataGridComponent = function useDataGridComponent(props) {
60
60
  var useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
61
61
  useGridEditing(apiRef, props);
62
62
  useGridFocus(apiRef, props);
63
- useGridPreferencesPanel(apiRef);
63
+ useGridPreferencesPanel(apiRef, props);
64
64
  useGridFilter(apiRef, props);
65
65
  useGridSorting(apiRef, props);
66
66
  useGridDensity(apiRef, props);
@@ -42,6 +42,7 @@ export var DATA_GRID_PROPS_DEFAULT_VALUES = {
42
42
  disableMultipleColumnsSorting: false,
43
43
  disableSelectionOnClick: false,
44
44
  disableVirtualization: false,
45
+ disableIgnoreModificationsIfProcessingProps: false,
45
46
  editMode: GridEditModes.Cell,
46
47
  filterMode: GridFeatureModeConstant.client,
47
48
  headerHeight: 56,
@@ -5,6 +5,8 @@ export var GRID_ACTIONS_COLUMN_TYPE = 'actions';
5
5
  export var GRID_ACTIONS_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
6
6
  sortable: false,
7
7
  filterable: false,
8
+ // @ts-ignore
9
+ aggregable: false,
8
10
  width: 100,
9
11
  align: 'center',
10
12
  headerAlign: 'center',