@mui/x-data-grid 8.0.0-alpha.12 → 8.0.0-alpha.14

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 (504) hide show
  1. package/CHANGELOG.md +430 -0
  2. package/DataGrid/DataGrid.js +31 -22
  3. package/DataGrid/useDataGridProps.js +1 -1
  4. package/colDef/gridActionsColDef.js +1 -1
  5. package/colDef/gridBooleanColDef.js +1 -1
  6. package/colDef/gridCheckboxSelectionColDef.js +2 -4
  7. package/components/GridFooter.js +1 -1
  8. package/components/GridHeader.js +1 -1
  9. package/components/GridPagination.js +5 -6
  10. package/components/GridRowCount.js +4 -5
  11. package/components/GridScrollArea.js +4 -3
  12. package/components/GridSelectedRowCount.js +5 -6
  13. package/components/GridShadowScrollArea.d.ts +8 -0
  14. package/components/GridShadowScrollArea.js +82 -0
  15. package/components/cell/GridEditInputCell.js +2 -3
  16. package/components/columnSelection/GridHeaderCheckbox.js +51 -17
  17. package/components/columnsManagement/GridColumnsManagement.js +60 -61
  18. package/components/columnsPanel/ColumnsPanelTrigger.d.ts +33 -0
  19. package/components/columnsPanel/ColumnsPanelTrigger.js +209 -0
  20. package/components/columnsPanel/index.d.ts +1 -0
  21. package/components/columnsPanel/index.js +16 -0
  22. package/components/containers/GridOverlay.js +6 -8
  23. package/components/containers/GridRoot.js +4 -2
  24. package/components/containers/GridRootStyles.d.ts +1 -2
  25. package/components/containers/GridRootStyles.js +77 -100
  26. package/components/containers/GridToolbarContainer.js +5 -6
  27. package/components/export/ExportCsv.d.ts +30 -0
  28. package/components/export/ExportCsv.js +196 -0
  29. package/components/export/ExportPrint.d.ts +30 -0
  30. package/components/export/ExportPrint.js +196 -0
  31. package/components/export/index.d.ts +2 -0
  32. package/components/export/index.js +27 -0
  33. package/components/filterPanel/FilterPanelTrigger.d.ts +37 -0
  34. package/components/filterPanel/FilterPanelTrigger.js +212 -0
  35. package/components/filterPanel/index.d.ts +1 -0
  36. package/components/filterPanel/index.js +16 -0
  37. package/components/index.d.ts +6 -1
  38. package/components/index.js +60 -0
  39. package/components/menu/GridMenu.js +7 -6
  40. package/components/menu/columnMenu/GridColumnHeaderMenu.js +4 -3
  41. package/components/panel/GridPanel.js +18 -20
  42. package/components/panel/GridPanelContent.js +6 -8
  43. package/components/panel/GridPanelFooter.js +5 -6
  44. package/components/panel/GridPanelHeader.js +4 -5
  45. package/components/panel/filterPanel/GridFilterForm.js +13 -20
  46. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
  47. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +10 -39
  48. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
  49. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +20 -45
  50. package/components/panel/filterPanel/GridFilterInputValue.js +3 -6
  51. package/components/quickFilter/QuickFilter.d.ts +41 -0
  52. package/components/quickFilter/QuickFilter.js +110 -0
  53. package/components/quickFilter/QuickFilterClear.d.ts +28 -0
  54. package/components/quickFilter/QuickFilterClear.js +161 -0
  55. package/components/quickFilter/QuickFilterContext.d.ts +13 -0
  56. package/components/quickFilter/QuickFilterContext.js +17 -0
  57. package/components/quickFilter/QuickFilterControl.d.ts +28 -0
  58. package/components/quickFilter/QuickFilterControl.js +104 -0
  59. package/components/quickFilter/index.d.ts +3 -0
  60. package/components/quickFilter/index.js +38 -0
  61. package/components/toolbar/GridToolbar.d.ts +1 -1
  62. package/components/toolbar/GridToolbar.js +2 -2
  63. package/components/toolbar/GridToolbarFilterButton.js +5 -6
  64. package/components/toolbar/GridToolbarQuickFilter.js +57 -97
  65. package/components/toolbarV8/GridToolbar.d.ts +11 -0
  66. package/components/toolbarV8/GridToolbar.js +142 -0
  67. package/components/toolbarV8/Toolbar.d.ts +32 -0
  68. package/components/toolbarV8/Toolbar.js +132 -0
  69. package/components/toolbarV8/ToolbarButton.d.ts +23 -0
  70. package/components/toolbarV8/ToolbarButton.js +179 -0
  71. package/components/toolbarV8/ToolbarContext.d.ts +9 -0
  72. package/components/toolbarV8/ToolbarContext.js +17 -0
  73. package/components/toolbarV8/index.d.ts +2 -0
  74. package/components/toolbarV8/index.js +27 -0
  75. package/components/virtualization/GridVirtualScrollbar.js +15 -6
  76. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  77. package/constants/cssVariables.d.ts +294 -0
  78. package/constants/cssVariables.js +168 -0
  79. package/constants/dataGridPropsDefaultValues.js +1 -0
  80. package/constants/defaultGridSlotsComponents.js +2 -1
  81. package/constants/gridClasses.d.ts +17 -0
  82. package/constants/gridClasses.js +1 -1
  83. package/context/GridContextProvider.js +4 -1
  84. package/esm/DataGrid/DataGrid.js +31 -22
  85. package/esm/DataGrid/useDataGridProps.js +1 -1
  86. package/esm/colDef/gridActionsColDef.js +1 -1
  87. package/esm/colDef/gridBooleanColDef.js +1 -1
  88. package/esm/colDef/gridCheckboxSelectionColDef.js +2 -4
  89. package/esm/components/GridFooter.js +2 -2
  90. package/esm/components/GridHeader.js +1 -1
  91. package/esm/components/GridPagination.js +5 -6
  92. package/esm/components/GridRowCount.js +4 -5
  93. package/esm/components/GridScrollArea.js +2 -1
  94. package/esm/components/GridSelectedRowCount.js +5 -6
  95. package/esm/components/GridShadowScrollArea.d.ts +8 -0
  96. package/esm/components/GridShadowScrollArea.js +74 -0
  97. package/esm/components/cell/GridEditInputCell.js +2 -3
  98. package/esm/components/columnSelection/GridHeaderCheckbox.js +51 -17
  99. package/esm/components/columnsManagement/GridColumnsManagement.js +61 -62
  100. package/esm/components/columnsPanel/ColumnsPanelTrigger.d.ts +33 -0
  101. package/esm/components/columnsPanel/ColumnsPanelTrigger.js +202 -0
  102. package/esm/components/columnsPanel/index.d.ts +1 -0
  103. package/esm/components/columnsPanel/index.js +1 -0
  104. package/esm/components/containers/GridOverlay.js +6 -8
  105. package/esm/components/containers/GridRoot.js +4 -2
  106. package/esm/components/containers/GridRootStyles.d.ts +1 -2
  107. package/esm/components/containers/GridRootStyles.js +78 -101
  108. package/esm/components/containers/GridToolbarContainer.js +5 -6
  109. package/esm/components/export/ExportCsv.d.ts +30 -0
  110. package/esm/components/export/ExportCsv.js +189 -0
  111. package/esm/components/export/ExportPrint.d.ts +30 -0
  112. package/esm/components/export/ExportPrint.js +189 -0
  113. package/esm/components/export/index.d.ts +2 -0
  114. package/esm/components/export/index.js +2 -0
  115. package/esm/components/filterPanel/FilterPanelTrigger.d.ts +37 -0
  116. package/esm/components/filterPanel/FilterPanelTrigger.js +205 -0
  117. package/esm/components/filterPanel/index.d.ts +1 -0
  118. package/esm/components/filterPanel/index.js +1 -0
  119. package/esm/components/index.d.ts +6 -1
  120. package/esm/components/index.js +6 -1
  121. package/esm/components/menu/GridMenu.js +7 -6
  122. package/esm/components/menu/columnMenu/GridColumnHeaderMenu.js +2 -1
  123. package/esm/components/panel/GridPanel.js +18 -20
  124. package/esm/components/panel/GridPanelContent.js +6 -8
  125. package/esm/components/panel/GridPanelFooter.js +5 -6
  126. package/esm/components/panel/GridPanelHeader.js +4 -5
  127. package/esm/components/panel/filterPanel/GridFilterForm.js +13 -20
  128. package/esm/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
  129. package/esm/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +10 -39
  130. package/esm/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
  131. package/esm/components/panel/filterPanel/GridFilterInputMultipleValue.js +19 -44
  132. package/esm/components/panel/filterPanel/GridFilterInputValue.js +3 -6
  133. package/esm/components/quickFilter/QuickFilter.d.ts +41 -0
  134. package/esm/components/quickFilter/QuickFilter.js +103 -0
  135. package/esm/components/quickFilter/QuickFilterClear.d.ts +28 -0
  136. package/esm/components/quickFilter/QuickFilterClear.js +154 -0
  137. package/esm/components/quickFilter/QuickFilterContext.d.ts +13 -0
  138. package/esm/components/quickFilter/QuickFilterContext.js +9 -0
  139. package/esm/components/quickFilter/QuickFilterControl.d.ts +28 -0
  140. package/esm/components/quickFilter/QuickFilterControl.js +97 -0
  141. package/esm/components/quickFilter/index.d.ts +3 -0
  142. package/esm/components/quickFilter/index.js +3 -0
  143. package/esm/components/toolbar/GridToolbar.d.ts +1 -1
  144. package/esm/components/toolbar/GridToolbar.js +2 -2
  145. package/esm/components/toolbar/GridToolbarFilterButton.js +5 -6
  146. package/esm/components/toolbar/GridToolbarQuickFilter.js +59 -97
  147. package/esm/components/toolbarV8/GridToolbar.d.ts +11 -0
  148. package/esm/components/toolbarV8/GridToolbar.js +135 -0
  149. package/esm/components/toolbarV8/Toolbar.d.ts +32 -0
  150. package/esm/components/toolbarV8/Toolbar.js +125 -0
  151. package/esm/components/toolbarV8/ToolbarButton.d.ts +23 -0
  152. package/esm/components/toolbarV8/ToolbarButton.js +172 -0
  153. package/esm/components/toolbarV8/ToolbarContext.d.ts +9 -0
  154. package/esm/components/toolbarV8/ToolbarContext.js +9 -0
  155. package/esm/components/toolbarV8/index.d.ts +2 -0
  156. package/esm/components/toolbarV8/index.js +2 -0
  157. package/esm/components/virtualization/GridVirtualScrollbar.js +10 -2
  158. package/esm/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  159. package/esm/constants/cssVariables.d.ts +294 -0
  160. package/esm/constants/cssVariables.js +161 -0
  161. package/esm/constants/dataGridPropsDefaultValues.js +1 -0
  162. package/esm/constants/defaultGridSlotsComponents.js +2 -1
  163. package/esm/constants/gridClasses.d.ts +17 -0
  164. package/esm/constants/gridClasses.js +1 -1
  165. package/esm/context/GridContextProvider.js +4 -1
  166. package/esm/hooks/features/clipboard/useGridClipboard.js +3 -2
  167. package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
  168. package/esm/hooks/features/columnResize/useGridColumnResize.js +2 -1
  169. package/esm/hooks/features/columns/gridColumnsInterfaces.d.ts +1 -0
  170. package/esm/hooks/features/columns/gridColumnsSelector.d.ts +7 -0
  171. package/esm/hooks/features/columns/gridColumnsSelector.js +8 -0
  172. package/esm/hooks/features/columns/gridColumnsUtils.d.ts +3 -1
  173. package/esm/hooks/features/columns/gridColumnsUtils.js +6 -3
  174. package/esm/hooks/features/columns/index.d.ts +1 -1
  175. package/esm/hooks/features/columns/index.js +1 -1
  176. package/esm/hooks/features/columns/useGridColumns.js +4 -2
  177. package/esm/hooks/features/dataSource/gridDataSourceError.d.ts +31 -0
  178. package/esm/hooks/features/dataSource/gridDataSourceError.js +32 -0
  179. package/esm/hooks/features/dataSource/index.d.ts +2 -0
  180. package/esm/hooks/features/dataSource/index.js +2 -0
  181. package/esm/hooks/features/dataSource/models.d.ts +1 -1
  182. package/esm/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
  183. package/esm/hooks/features/dataSource/useGridDataSourceBase.js +27 -17
  184. package/esm/hooks/features/dimensions/useGridDimensions.js +11 -10
  185. package/esm/hooks/features/editing/useGridCellEditing.js +2 -1
  186. package/esm/hooks/features/editing/useGridRowEditing.js +2 -1
  187. package/esm/hooks/features/export/utils.js +4 -2
  188. package/esm/hooks/features/focus/useGridFocus.js +3 -2
  189. package/esm/hooks/features/index.d.ts +1 -1
  190. package/esm/hooks/features/index.js +1 -1
  191. package/esm/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +3 -3
  192. package/esm/hooks/features/rowSelection/gridRowSelectionSelector.js +27 -7
  193. package/esm/hooks/features/rowSelection/useGridRowSelection.js +148 -81
  194. package/esm/hooks/features/rowSelection/utils.d.ts +2 -2
  195. package/esm/hooks/features/rowSelection/utils.js +11 -11
  196. package/esm/hooks/features/rows/gridRowsInterfaces.d.ts +1 -1
  197. package/esm/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  198. package/esm/hooks/features/rows/gridRowsUtils.js +8 -0
  199. package/esm/hooks/features/rows/useGridParamsApi.js +2 -8
  200. package/esm/hooks/features/rows/useGridRowAriaAttributes.js +2 -4
  201. package/esm/hooks/features/rows/useGridRows.d.ts +2 -2
  202. package/esm/hooks/features/rows/useGridRows.js +7 -7
  203. package/esm/hooks/features/rows/useGridRowsMeta.js +8 -0
  204. package/esm/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -2
  205. package/esm/hooks/features/virtualization/useGridVirtualScroller.js +5 -11
  206. package/esm/hooks/utils/index.d.ts +2 -1
  207. package/esm/hooks/utils/useGridComponentRenderer.d.ts +12 -0
  208. package/esm/hooks/utils/useGridComponentRenderer.js +36 -0
  209. package/esm/hooks/utils/useGridSelector.js +4 -1
  210. package/esm/hooks/utils/useIsSSR.js +4 -1
  211. package/esm/index.js +1 -1
  212. package/esm/internals/demo/TailwindDemoContainer.d.ts +11 -0
  213. package/esm/internals/demo/TailwindDemoContainer.js +55 -0
  214. package/esm/internals/demo/index.d.ts +1 -0
  215. package/esm/internals/demo/index.js +1 -0
  216. package/esm/internals/index.d.ts +6 -1
  217. package/esm/internals/index.js +5 -1
  218. package/esm/internals/utils/propValidation.js +1 -1
  219. package/esm/locales/bnBD.d.ts +2 -0
  220. package/esm/locales/bnBD.js +167 -0
  221. package/esm/locales/deDE.js +3 -5
  222. package/esm/locales/huHU.js +10 -13
  223. package/esm/locales/index.d.ts +1 -0
  224. package/esm/locales/index.js +1 -0
  225. package/esm/locales/ruRU.js +17 -21
  226. package/esm/material/icons/index.d.ts +3 -3
  227. package/esm/material/icons/index.js +6 -6
  228. package/esm/material/index.d.ts +1 -0
  229. package/esm/material/index.js +167 -52
  230. package/esm/material/variables.d.ts +5 -0
  231. package/esm/material/variables.js +89 -0
  232. package/esm/models/api/gridRowSelectionApi.d.ts +4 -2
  233. package/esm/models/api/gridSortApi.d.ts +1 -1
  234. package/esm/models/configuration/gridConfiguration.d.ts +7 -1
  235. package/esm/models/gridBaseSlots.d.ts +61 -7
  236. package/esm/models/gridDataSource.d.ts +9 -4
  237. package/esm/models/gridIconSlotsComponent.d.ts +1 -1
  238. package/esm/models/gridRowSelectionManager.d.ts +9 -0
  239. package/esm/models/gridRowSelectionManager.js +36 -0
  240. package/esm/models/gridRowSelectionModel.d.ts +4 -2
  241. package/esm/models/gridSlotsComponent.d.ts +7 -28
  242. package/esm/models/gridSlotsComponentsProps.d.ts +3 -11
  243. package/esm/models/gridSortModel.d.ts +1 -1
  244. package/esm/models/index.d.ts +2 -1
  245. package/esm/models/index.js +2 -3
  246. package/esm/models/props/DataGridProps.d.ts +22 -17
  247. package/esm/utils/css/context.d.ts +14 -0
  248. package/esm/utils/css/context.js +54 -0
  249. package/esm/utils/index.d.ts +2 -1
  250. package/esm/utils/index.js +1 -1
  251. package/hooks/features/clipboard/useGridClipboard.js +3 -2
  252. package/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
  253. package/hooks/features/columnResize/useGridColumnResize.js +28 -27
  254. package/hooks/features/columns/gridColumnsInterfaces.d.ts +1 -0
  255. package/hooks/features/columns/gridColumnsSelector.d.ts +7 -0
  256. package/hooks/features/columns/gridColumnsSelector.js +9 -1
  257. package/hooks/features/columns/gridColumnsUtils.d.ts +3 -1
  258. package/hooks/features/columns/gridColumnsUtils.js +6 -3
  259. package/hooks/features/columns/index.d.ts +1 -1
  260. package/hooks/features/columns/index.js +94 -10
  261. package/hooks/features/columns/useGridColumns.js +4 -2
  262. package/hooks/features/dataSource/gridDataSourceError.d.ts +31 -0
  263. package/hooks/features/dataSource/gridDataSourceError.js +40 -0
  264. package/hooks/features/dataSource/index.d.ts +2 -0
  265. package/hooks/features/dataSource/index.js +25 -0
  266. package/hooks/features/dataSource/models.d.ts +1 -1
  267. package/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
  268. package/hooks/features/dataSource/useGridDataSourceBase.js +27 -17
  269. package/hooks/features/dimensions/useGridDimensions.js +19 -18
  270. package/hooks/features/editing/useGridCellEditing.js +10 -9
  271. package/hooks/features/editing/useGridRowEditing.js +11 -10
  272. package/hooks/features/export/utils.js +4 -2
  273. package/hooks/features/focus/useGridFocus.js +8 -7
  274. package/hooks/features/index.d.ts +1 -1
  275. package/hooks/features/index.js +11 -28
  276. package/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +3 -3
  277. package/hooks/features/rowSelection/gridRowSelectionSelector.js +27 -7
  278. package/hooks/features/rowSelection/useGridRowSelection.js +146 -79
  279. package/hooks/features/rowSelection/utils.d.ts +2 -2
  280. package/hooks/features/rowSelection/utils.js +10 -10
  281. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -1
  282. package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  283. package/hooks/features/rows/gridRowsUtils.js +10 -1
  284. package/hooks/features/rows/useGridParamsApi.js +2 -8
  285. package/hooks/features/rows/useGridRowAriaAttributes.js +2 -4
  286. package/hooks/features/rows/useGridRows.d.ts +2 -2
  287. package/hooks/features/rows/useGridRows.js +7 -7
  288. package/hooks/features/rows/useGridRowsMeta.js +8 -0
  289. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -2
  290. package/hooks/features/virtualization/useGridVirtualScroller.js +21 -27
  291. package/hooks/utils/index.d.ts +2 -1
  292. package/hooks/utils/useGridComponentRenderer.d.ts +12 -0
  293. package/hooks/utils/useGridComponentRenderer.js +44 -0
  294. package/hooks/utils/useGridSelector.js +6 -2
  295. package/hooks/utils/useIsSSR.js +6 -2
  296. package/index.js +1 -1
  297. package/internals/demo/TailwindDemoContainer.d.ts +11 -0
  298. package/internals/demo/TailwindDemoContainer.js +63 -0
  299. package/internals/demo/index.d.ts +1 -0
  300. package/internals/demo/index.js +12 -0
  301. package/internals/index.d.ts +6 -1
  302. package/internals/index.js +43 -0
  303. package/internals/utils/propValidation.js +1 -1
  304. package/locales/bnBD.d.ts +2 -0
  305. package/locales/bnBD.js +173 -0
  306. package/locales/deDE.js +3 -5
  307. package/locales/huHU.js +10 -13
  308. package/locales/index.d.ts +1 -0
  309. package/locales/index.js +11 -0
  310. package/locales/ruRU.js +17 -21
  311. package/material/icons/index.d.ts +3 -3
  312. package/material/icons/index.js +7 -7
  313. package/material/index.d.ts +1 -0
  314. package/material/index.js +172 -51
  315. package/material/variables.d.ts +5 -0
  316. package/material/variables.js +95 -0
  317. package/models/api/gridRowSelectionApi.d.ts +4 -2
  318. package/models/api/gridSortApi.d.ts +1 -1
  319. package/models/configuration/gridConfiguration.d.ts +7 -1
  320. package/models/gridBaseSlots.d.ts +61 -7
  321. package/models/gridDataSource.d.ts +9 -4
  322. package/models/gridIconSlotsComponent.d.ts +1 -1
  323. package/models/gridRowSelectionManager.d.ts +9 -0
  324. package/models/gridRowSelectionManager.js +43 -0
  325. package/models/gridRowSelectionModel.d.ts +4 -2
  326. package/models/gridSlotsComponent.d.ts +7 -28
  327. package/models/gridSlotsComponentsProps.d.ts +3 -11
  328. package/models/gridSortModel.d.ts +1 -1
  329. package/models/index.d.ts +2 -1
  330. package/models/index.js +34 -11
  331. package/models/props/DataGridProps.d.ts +22 -17
  332. package/modern/DataGrid/DataGrid.js +31 -22
  333. package/modern/DataGrid/useDataGridProps.js +1 -1
  334. package/modern/colDef/gridActionsColDef.js +1 -1
  335. package/modern/colDef/gridBooleanColDef.js +1 -1
  336. package/modern/colDef/gridCheckboxSelectionColDef.js +2 -4
  337. package/modern/components/GridFooter.js +2 -2
  338. package/modern/components/GridHeader.js +1 -1
  339. package/modern/components/GridPagination.js +5 -6
  340. package/modern/components/GridRowCount.js +4 -5
  341. package/modern/components/GridScrollArea.js +2 -1
  342. package/modern/components/GridSelectedRowCount.js +5 -6
  343. package/modern/components/GridShadowScrollArea.d.ts +8 -0
  344. package/modern/components/GridShadowScrollArea.js +74 -0
  345. package/modern/components/cell/GridEditInputCell.js +2 -3
  346. package/modern/components/columnSelection/GridHeaderCheckbox.js +51 -17
  347. package/modern/components/columnsManagement/GridColumnsManagement.js +61 -62
  348. package/modern/components/columnsPanel/ColumnsPanelTrigger.d.ts +33 -0
  349. package/modern/components/columnsPanel/ColumnsPanelTrigger.js +202 -0
  350. package/modern/components/columnsPanel/index.d.ts +1 -0
  351. package/modern/components/columnsPanel/index.js +1 -0
  352. package/modern/components/containers/GridOverlay.js +6 -8
  353. package/modern/components/containers/GridRoot.js +4 -2
  354. package/modern/components/containers/GridRootStyles.d.ts +1 -2
  355. package/modern/components/containers/GridRootStyles.js +78 -101
  356. package/modern/components/containers/GridToolbarContainer.js +5 -6
  357. package/modern/components/export/ExportCsv.d.ts +30 -0
  358. package/modern/components/export/ExportCsv.js +189 -0
  359. package/modern/components/export/ExportPrint.d.ts +30 -0
  360. package/modern/components/export/ExportPrint.js +189 -0
  361. package/modern/components/export/index.d.ts +2 -0
  362. package/modern/components/export/index.js +2 -0
  363. package/modern/components/filterPanel/FilterPanelTrigger.d.ts +37 -0
  364. package/modern/components/filterPanel/FilterPanelTrigger.js +205 -0
  365. package/modern/components/filterPanel/index.d.ts +1 -0
  366. package/modern/components/filterPanel/index.js +1 -0
  367. package/modern/components/index.d.ts +6 -1
  368. package/modern/components/index.js +6 -1
  369. package/modern/components/menu/GridMenu.js +7 -6
  370. package/modern/components/menu/columnMenu/GridColumnHeaderMenu.js +2 -1
  371. package/modern/components/panel/GridPanel.js +18 -20
  372. package/modern/components/panel/GridPanelContent.js +6 -8
  373. package/modern/components/panel/GridPanelFooter.js +5 -6
  374. package/modern/components/panel/GridPanelHeader.js +4 -5
  375. package/modern/components/panel/filterPanel/GridFilterForm.js +13 -20
  376. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
  377. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +10 -39
  378. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
  379. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +19 -44
  380. package/modern/components/panel/filterPanel/GridFilterInputValue.js +3 -6
  381. package/modern/components/quickFilter/QuickFilter.d.ts +41 -0
  382. package/modern/components/quickFilter/QuickFilter.js +103 -0
  383. package/modern/components/quickFilter/QuickFilterClear.d.ts +28 -0
  384. package/modern/components/quickFilter/QuickFilterClear.js +154 -0
  385. package/modern/components/quickFilter/QuickFilterContext.d.ts +13 -0
  386. package/modern/components/quickFilter/QuickFilterContext.js +9 -0
  387. package/modern/components/quickFilter/QuickFilterControl.d.ts +28 -0
  388. package/modern/components/quickFilter/QuickFilterControl.js +97 -0
  389. package/modern/components/quickFilter/index.d.ts +3 -0
  390. package/modern/components/quickFilter/index.js +3 -0
  391. package/modern/components/toolbar/GridToolbar.d.ts +1 -1
  392. package/modern/components/toolbar/GridToolbar.js +2 -2
  393. package/modern/components/toolbar/GridToolbarFilterButton.js +5 -6
  394. package/modern/components/toolbar/GridToolbarQuickFilter.js +59 -97
  395. package/modern/components/toolbarV8/GridToolbar.d.ts +11 -0
  396. package/modern/components/toolbarV8/GridToolbar.js +135 -0
  397. package/modern/components/toolbarV8/Toolbar.d.ts +32 -0
  398. package/modern/components/toolbarV8/Toolbar.js +125 -0
  399. package/modern/components/toolbarV8/ToolbarButton.d.ts +23 -0
  400. package/modern/components/toolbarV8/ToolbarButton.js +172 -0
  401. package/modern/components/toolbarV8/ToolbarContext.d.ts +9 -0
  402. package/modern/components/toolbarV8/ToolbarContext.js +9 -0
  403. package/modern/components/toolbarV8/index.d.ts +2 -0
  404. package/modern/components/toolbarV8/index.js +2 -0
  405. package/modern/components/virtualization/GridVirtualScrollbar.js +10 -2
  406. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  407. package/modern/constants/cssVariables.d.ts +294 -0
  408. package/modern/constants/cssVariables.js +161 -0
  409. package/modern/constants/dataGridPropsDefaultValues.js +1 -0
  410. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  411. package/modern/constants/gridClasses.d.ts +17 -0
  412. package/modern/constants/gridClasses.js +1 -1
  413. package/modern/context/GridContextProvider.js +4 -1
  414. package/modern/hooks/features/clipboard/useGridClipboard.js +3 -2
  415. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
  416. package/modern/hooks/features/columnResize/useGridColumnResize.js +2 -1
  417. package/modern/hooks/features/columns/gridColumnsInterfaces.d.ts +1 -0
  418. package/modern/hooks/features/columns/gridColumnsSelector.d.ts +7 -0
  419. package/modern/hooks/features/columns/gridColumnsSelector.js +8 -0
  420. package/modern/hooks/features/columns/gridColumnsUtils.d.ts +3 -1
  421. package/modern/hooks/features/columns/gridColumnsUtils.js +6 -3
  422. package/modern/hooks/features/columns/index.d.ts +1 -1
  423. package/modern/hooks/features/columns/index.js +1 -1
  424. package/modern/hooks/features/columns/useGridColumns.js +4 -2
  425. package/modern/hooks/features/dataSource/gridDataSourceError.d.ts +31 -0
  426. package/modern/hooks/features/dataSource/gridDataSourceError.js +32 -0
  427. package/modern/hooks/features/dataSource/index.d.ts +2 -0
  428. package/modern/hooks/features/dataSource/index.js +2 -0
  429. package/modern/hooks/features/dataSource/models.d.ts +1 -1
  430. package/modern/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
  431. package/modern/hooks/features/dataSource/useGridDataSourceBase.js +27 -17
  432. package/modern/hooks/features/dimensions/useGridDimensions.js +11 -10
  433. package/modern/hooks/features/editing/useGridCellEditing.js +2 -1
  434. package/modern/hooks/features/editing/useGridRowEditing.js +2 -1
  435. package/modern/hooks/features/export/utils.js +4 -2
  436. package/modern/hooks/features/focus/useGridFocus.js +3 -2
  437. package/modern/hooks/features/index.d.ts +1 -1
  438. package/modern/hooks/features/index.js +1 -1
  439. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +3 -3
  440. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +27 -7
  441. package/modern/hooks/features/rowSelection/useGridRowSelection.js +148 -81
  442. package/modern/hooks/features/rowSelection/utils.d.ts +2 -2
  443. package/modern/hooks/features/rowSelection/utils.js +11 -11
  444. package/modern/hooks/features/rows/gridRowsInterfaces.d.ts +1 -1
  445. package/modern/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  446. package/modern/hooks/features/rows/gridRowsUtils.js +8 -0
  447. package/modern/hooks/features/rows/useGridParamsApi.js +2 -8
  448. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +2 -4
  449. package/modern/hooks/features/rows/useGridRows.d.ts +2 -2
  450. package/modern/hooks/features/rows/useGridRows.js +7 -7
  451. package/modern/hooks/features/rows/useGridRowsMeta.js +8 -0
  452. package/modern/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -2
  453. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +5 -11
  454. package/modern/hooks/utils/index.d.ts +2 -1
  455. package/modern/hooks/utils/useGridComponentRenderer.d.ts +12 -0
  456. package/modern/hooks/utils/useGridComponentRenderer.js +36 -0
  457. package/modern/hooks/utils/useGridSelector.js +4 -1
  458. package/modern/hooks/utils/useIsSSR.js +4 -1
  459. package/modern/index.js +1 -1
  460. package/modern/internals/demo/TailwindDemoContainer.d.ts +11 -0
  461. package/modern/internals/demo/TailwindDemoContainer.js +55 -0
  462. package/modern/internals/demo/index.d.ts +1 -0
  463. package/modern/internals/demo/index.js +1 -0
  464. package/modern/internals/index.d.ts +6 -1
  465. package/modern/internals/index.js +5 -1
  466. package/modern/internals/utils/propValidation.js +1 -1
  467. package/modern/locales/bnBD.d.ts +2 -0
  468. package/modern/locales/bnBD.js +167 -0
  469. package/modern/locales/deDE.js +3 -5
  470. package/modern/locales/huHU.js +10 -13
  471. package/modern/locales/index.d.ts +1 -0
  472. package/modern/locales/index.js +1 -0
  473. package/modern/locales/ruRU.js +17 -21
  474. package/modern/material/icons/index.d.ts +3 -3
  475. package/modern/material/icons/index.js +6 -6
  476. package/modern/material/index.d.ts +1 -0
  477. package/modern/material/index.js +167 -52
  478. package/modern/material/variables.d.ts +5 -0
  479. package/modern/material/variables.js +89 -0
  480. package/modern/models/api/gridRowSelectionApi.d.ts +4 -2
  481. package/modern/models/api/gridSortApi.d.ts +1 -1
  482. package/modern/models/configuration/gridConfiguration.d.ts +7 -1
  483. package/modern/models/gridBaseSlots.d.ts +61 -7
  484. package/modern/models/gridDataSource.d.ts +9 -4
  485. package/modern/models/gridIconSlotsComponent.d.ts +1 -1
  486. package/modern/models/gridRowSelectionManager.d.ts +9 -0
  487. package/modern/models/gridRowSelectionManager.js +36 -0
  488. package/modern/models/gridRowSelectionModel.d.ts +4 -2
  489. package/modern/models/gridSlotsComponent.d.ts +7 -28
  490. package/modern/models/gridSlotsComponentsProps.d.ts +3 -11
  491. package/modern/models/gridSortModel.d.ts +1 -1
  492. package/modern/models/index.d.ts +2 -1
  493. package/modern/models/index.js +2 -3
  494. package/modern/models/props/DataGridProps.d.ts +22 -17
  495. package/modern/utils/css/context.d.ts +14 -0
  496. package/modern/utils/css/context.js +54 -0
  497. package/modern/utils/index.d.ts +2 -1
  498. package/modern/utils/index.js +1 -1
  499. package/package.json +2 -2
  500. package/tsconfig.build.tsbuildinfo +1 -1
  501. package/utils/css/context.d.ts +14 -0
  502. package/utils/css/context.js +64 -0
  503. package/utils/index.d.ts +2 -1
  504. package/utils/index.js +8 -1
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { GridCellCheckboxRenderer } from "../components/columnSelection/GridCellCheckboxRenderer.js";
4
4
  import { GridHeaderCheckbox } from "../components/columnSelection/GridHeaderCheckbox.js";
5
- import { selectedIdsLookupSelector } from "../hooks/features/rowSelection/gridRowSelectionSelector.js";
6
5
  import { GRID_BOOLEAN_COL_DEF } from "./gridBooleanColDef.js";
7
6
  import { gridRowIdSelector } from "../hooks/core/gridPropsSelectors.js";
8
7
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -19,12 +18,11 @@ export const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF
19
18
  disableColumnMenu: true,
20
19
  disableReorder: true,
21
20
  disableExport: true,
22
- getApplyQuickFilterFn: undefined,
21
+ getApplyQuickFilterFn: () => null,
23
22
  display: 'flex',
24
23
  valueGetter: (value, row, column, apiRef) => {
25
- const selectionLookup = selectedIdsLookupSelector(apiRef);
26
24
  const rowId = gridRowIdSelector(apiRef, row);
27
- return selectionLookup[rowId] !== undefined;
25
+ return apiRef.current.isRowSelected(rowId);
28
26
  },
29
27
  renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),
30
28
  renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
4
4
  import { forwardRef } from '@mui/x-internals/forwardRef';
5
5
  import { useGridSelector } from "../hooks/utils/useGridSelector.js";
6
6
  import { gridTopLevelRowCountSelector } from "../hooks/features/rows/gridRowsSelector.js";
7
- import { selectedGridRowsCountSelector } from "../hooks/features/rowSelection/gridRowSelectionSelector.js";
7
+ import { gridRowSelectionCountSelector } from "../hooks/features/rowSelection/gridRowSelectionSelector.js";
8
8
  import { gridFilteredTopLevelRowCountSelector } from "../hooks/features/filter/gridFilterSelector.js";
9
9
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
10
10
  import { GridSelectedRowCount } from "./GridSelectedRowCount.js";
@@ -15,7 +15,7 @@ const GridFooter = forwardRef(function GridFooter(props, ref) {
15
15
  const apiRef = useGridApiContext();
16
16
  const rootProps = useGridRootProps();
17
17
  const totalTopLevelRowCount = useGridSelector(apiRef, gridTopLevelRowCountSelector);
18
- const selectedRowCount = useGridSelector(apiRef, selectedGridRowsCountSelector);
18
+ const selectedRowCount = useGridSelector(apiRef, gridRowSelectionCountSelector);
19
19
  const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);
20
20
  const selectedRowCountElement = !rootProps.hideFooterSelectedRowCount && selectedRowCount > 0 ? /*#__PURE__*/_jsx(GridSelectedRowCount, {
21
21
  selectedRowCount: selectedRowCount
@@ -6,6 +6,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  export function GridHeader() {
7
7
  const rootProps = useGridRootProps();
8
8
  return /*#__PURE__*/_jsxs(React.Fragment, {
9
- children: [/*#__PURE__*/_jsx(GridPreferencesPanel, {}), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, rootProps.slotProps?.toolbar))]
9
+ children: [/*#__PURE__*/_jsx(GridPreferencesPanel, {}), rootProps.showToolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, rootProps.slotProps?.toolbar))]
10
10
  });
11
11
  }
@@ -4,30 +4,29 @@ import { styled } from '@mui/material/styles';
4
4
  import PropTypes from 'prop-types';
5
5
  import TablePagination, { tablePaginationClasses } from '@mui/material/TablePagination';
6
6
  import { forwardRef } from '@mui/x-internals/forwardRef';
7
+ import { vars } from "../constants/cssVariables.js";
7
8
  import { useGridSelector } from "../hooks/utils/useGridSelector.js";
8
9
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
9
10
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
10
11
  import { gridPaginationModelSelector, gridPaginationRowCountSelector, gridPageCountSelector } from "../hooks/features/pagination/gridPaginationSelector.js";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
- const GridPaginationRoot = styled(TablePagination)(({
13
- theme
14
- }) => ({
13
+ const GridPaginationRoot = styled(TablePagination)({
15
14
  maxHeight: 'calc(100% + 1px)',
16
15
  // border width
17
16
  flexGrow: 1,
18
17
  [`& .${tablePaginationClasses.selectLabel}`]: {
19
18
  display: 'none',
20
- [theme.breakpoints.up('sm')]: {
19
+ [vars.breakpoints.up('sm')]: {
21
20
  display: 'block'
22
21
  }
23
22
  },
24
23
  [`& .${tablePaginationClasses.input}`]: {
25
24
  display: 'none',
26
- [theme.breakpoints.up('sm')]: {
25
+ [vars.breakpoints.up('sm')]: {
27
26
  display: 'inline-flex'
28
27
  }
29
28
  }
30
- }));
29
+ });
31
30
  const wrapLabelDisplayedRows = (labelDisplayedRows, estimated) => {
32
31
  return ({
33
32
  from,
@@ -7,6 +7,7 @@ import clsx from 'clsx';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import { styled } from '@mui/system';
9
9
  import { forwardRef } from '@mui/x-internals/forwardRef';
10
+ import { vars } from "../constants/cssVariables.js";
10
11
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
11
12
  import { getDataGridUtilityClass } from "../constants/gridClasses.js";
12
13
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
@@ -24,13 +25,11 @@ const GridRowCountRoot = styled('div', {
24
25
  name: 'MuiDataGrid',
25
26
  slot: 'RowCount',
26
27
  overridesResolver: (props, styles) => styles.rowCount
27
- })(({
28
- theme
29
- }) => ({
28
+ })({
30
29
  alignItems: 'center',
31
30
  display: 'flex',
32
- margin: theme.spacing(0, 2)
33
- }));
31
+ margin: vars.spacing(0, 2)
32
+ });
34
33
  const GridRowCount = forwardRef(function GridRowCount(props, ref) {
35
34
  const {
36
35
  className,
@@ -3,7 +3,8 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
- import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
6
+ import useEventCallback from '@mui/utils/useEventCallback';
7
+ import composeClasses from '@mui/utils/composeClasses';
7
8
  import { styled } from '@mui/system';
8
9
  import { fastMemo } from '@mui/x-internals/fastMemo';
9
10
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
@@ -7,6 +7,7 @@ import clsx from 'clsx';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import { styled } from '@mui/system';
9
9
  import { forwardRef } from '@mui/x-internals/forwardRef';
10
+ import { vars } from "../constants/cssVariables.js";
10
11
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
11
12
  import { getDataGridUtilityClass } from "../constants/gridClasses.js";
12
13
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
@@ -24,21 +25,19 @@ const GridSelectedRowCountRoot = styled('div', {
24
25
  name: 'MuiDataGrid',
25
26
  slot: 'SelectedRowCount',
26
27
  overridesResolver: (props, styles) => styles.selectedRowCount
27
- })(({
28
- theme
29
- }) => ({
28
+ })({
30
29
  alignItems: 'center',
31
30
  display: 'flex',
32
- margin: theme.spacing(0, 2),
31
+ margin: vars.spacing(0, 2),
33
32
  visibility: 'hidden',
34
33
  width: 0,
35
34
  height: 0,
36
- [theme.breakpoints.up('sm')]: {
35
+ [vars.breakpoints.up('sm')]: {
37
36
  visibility: 'visible',
38
37
  width: 'auto',
39
38
  height: 'auto'
40
39
  }
41
- }));
40
+ });
42
41
  const GridSelectedRowCount = forwardRef(function GridSelectedRowCount(props, ref) {
43
42
  const {
44
43
  className,
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export interface GridShadowScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ }
5
+ /**
6
+ * Adds scroll shadows above and below content in a scrollable container.
7
+ */
8
+ export declare function GridShadowScrollArea(props: GridShadowScrollAreaProps): React.JSX.Element;
@@ -0,0 +1,74 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["children"];
4
+ import * as React from 'react';
5
+ import { styled, keyframes } from '@mui/system';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const reveal = keyframes({
8
+ from: {
9
+ opacity: 0
10
+ },
11
+ to: {
12
+ opacity: 1
13
+ }
14
+ });
15
+ const detectScroll = keyframes({
16
+ 'from, to': {
17
+ '--scrollable': '" "'
18
+ }
19
+ });
20
+ const ShadowScrollArea = styled('div', {
21
+ name: 'MuiDataGrid',
22
+ slot: 'ShadowScrollArea'
23
+ })({
24
+ flex: 1,
25
+ display: 'flex',
26
+ flexDirection: 'column',
27
+ animation: detectScroll,
28
+ animationTimeline: '--scroll-timeline',
29
+ animationFillMode: 'none',
30
+ boxSizing: 'border-box',
31
+ overflow: 'auto',
32
+ scrollTimeline: '--scroll-timeline block',
33
+ '&::before, &::after': {
34
+ content: '""',
35
+ flexShrink: 0,
36
+ display: 'block',
37
+ position: 'sticky',
38
+ left: 0,
39
+ width: '100%',
40
+ height: '4px',
41
+ animation: `${reveal} linear both`,
42
+ animationTimeline: '--scroll-timeline',
43
+ // Custom property toggle trick:
44
+ // - Detects if the element is scrollable
45
+ // - https://css-tricks.com/the-css-custom-property-toggle-trick/
46
+ '--visibility-scrollable': 'var(--scrollable) visible',
47
+ '--visibility-not-scrollable': 'hidden',
48
+ visibility: 'var(--visibility-scrollable, var(--visibility-not-scrollable))'
49
+ },
50
+ '&::before': {
51
+ top: 0,
52
+ background: 'linear-gradient(to bottom, rgba(0,0,0,0.05) 0, transparent 100%)',
53
+ animationRange: '0 4px'
54
+ },
55
+ '&::after': {
56
+ bottom: 0,
57
+ background: 'linear-gradient(to top, rgba(0,0,0,0.05) 0, transparent 100%)',
58
+ animationDirection: 'reverse',
59
+ animationRange: 'calc(100% - 4px) 100%'
60
+ }
61
+ });
62
+
63
+ /**
64
+ * Adds scroll shadows above and below content in a scrollable container.
65
+ */
66
+ export function GridShadowScrollArea(props) {
67
+ const {
68
+ children
69
+ } = props,
70
+ rest = _objectWithoutPropertiesLoose(props, _excluded);
71
+ return /*#__PURE__*/_jsx(ShadowScrollArea, _extends({}, rest, {
72
+ children: children
73
+ }));
74
+ }
@@ -7,6 +7,7 @@ import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect a
7
7
  import { styled } from '@mui/material/styles';
8
8
  import { forwardRef } from '@mui/x-internals/forwardRef';
9
9
  import { NotRendered } from "../../utils/assert.js";
10
+ import { vars } from "../../constants/cssVariables.js";
10
11
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
11
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
12
13
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
@@ -23,9 +24,7 @@ const useUtilityClasses = ownerState => {
23
24
  const GridEditInputCellRoot = styled(NotRendered, {
24
25
  name: 'MuiDataGrid',
25
26
  slot: 'EditInputCell'
26
- })(({
27
- theme
28
- }) => _extends({}, theme.typography.body2, {
27
+ })(_extends({}, vars.typography.body, {
29
28
  padding: '1px 0',
30
29
  '& input': {
31
30
  padding: '0 16px',
@@ -14,6 +14,7 @@ import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
14
14
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
15
15
  import { gridExpandedSortedRowIdsSelector } from "../../hooks/features/filter/gridFilterSelector.js";
16
16
  import { gridPaginatedVisibleSortedGridRowIdsSelector } from "../../hooks/features/pagination/gridPaginationSelector.js";
17
+ import { createRowSelectionManager } from "../../models/gridRowSelectionManager.js";
17
18
  import { jsx as _jsx } from "react/jsx-runtime";
18
19
  const useUtilityClasses = ownerState => {
19
20
  const {
@@ -38,39 +39,72 @@ const GridHeaderCheckbox = forwardRef(function GridHeaderCheckbox(props, ref) {
38
39
  const visibleRowIds = useGridSelector(apiRef, gridExpandedSortedRowIdsSelector);
39
40
  const paginatedVisibleRowIds = useGridSelector(apiRef, gridPaginatedVisibleSortedGridRowIdsSelector);
40
41
  const filteredSelection = React.useMemo(() => {
41
- if (typeof rootProps.isRowSelectable !== 'function') {
42
+ const isRowSelectable = rootProps.isRowSelectable;
43
+ if (typeof isRowSelectable !== 'function') {
42
44
  return selection;
43
45
  }
44
- return selection.filter(id => {
46
+ if (selection.type === 'exclude') {
47
+ return selection;
48
+ }
49
+
50
+ // selection.type === 'include'
51
+ const selectionModel = {
52
+ type: 'include',
53
+ ids: new Set()
54
+ };
55
+ for (const id of selection.ids) {
45
56
  if (rootProps.keepNonExistentRowsSelected) {
46
- return true;
57
+ selectionModel.ids.add(id);
47
58
  }
48
59
  // The row might have been deleted
49
60
  if (!apiRef.current.getRow(id)) {
50
- return false;
61
+ continue;
62
+ }
63
+ if (isRowSelectable(apiRef.current.getRowParams(id))) {
64
+ selectionModel.ids.add(id);
51
65
  }
52
- return rootProps.isRowSelectable(apiRef.current.getRowParams(id));
53
- });
54
- }, [apiRef, rootProps.isRowSelectable, selection, rootProps.keepNonExistentRowsSelected]);
66
+ }
67
+ return selectionModel;
68
+ }, [apiRef, rootProps.isRowSelectable, rootProps.keepNonExistentRowsSelected, selection]);
55
69
 
56
70
  // All the rows that could be selected / unselected by toggling this checkbox
57
71
  const selectionCandidates = React.useMemo(() => {
58
72
  const rowIds = !rootProps.pagination || !rootProps.checkboxSelectionVisibleOnly ? visibleRowIds : paginatedVisibleRowIds;
59
73
 
60
- // Convert to an object to make O(1) checking if a row exists or not
61
- // TODO create selector that returns visibleRowIds/paginatedVisibleRowIds as an object
62
- return rowIds.reduce((acc, id) => {
63
- if (!apiRef.current.isRowSelectable(id)) {
64
- return acc;
74
+ // Convert to a Set to make O(1) checking if a row exists or not
75
+ const candidates = new Set();
76
+ for (let i = 0; i < rowIds.length; i += 1) {
77
+ const id = rowIds[i];
78
+ if (apiRef.current.isRowSelectable(id)) {
79
+ candidates.add(id);
65
80
  }
66
- acc[id] = true;
67
- return acc;
68
- }, {});
81
+ }
82
+ return candidates;
69
83
  }, [apiRef, rootProps.pagination, rootProps.checkboxSelectionVisibleOnly, paginatedVisibleRowIds, visibleRowIds]);
70
84
 
71
85
  // Amount of rows selected and that are visible in the current page
72
- const currentSelectionSize = React.useMemo(() => filteredSelection.filter(id => selectionCandidates[id]).length, [filteredSelection, selectionCandidates]);
73
- const isIndeterminate = currentSelectionSize > 0 && currentSelectionSize < Object.keys(selectionCandidates).length;
86
+ const currentSelectionSize = React.useMemo(() => {
87
+ const selectionManager = createRowSelectionManager(filteredSelection);
88
+ let size = 0;
89
+ for (const id of selectionCandidates) {
90
+ if (selectionManager.has(id)) {
91
+ size += 1;
92
+ }
93
+ }
94
+ return size;
95
+ }, [filteredSelection, selectionCandidates]);
96
+ const isIndeterminate = React.useMemo(() => {
97
+ if (filteredSelection.ids.size === 0) {
98
+ return false;
99
+ }
100
+ const selectionManager = createRowSelectionManager(filteredSelection);
101
+ for (const rowId of selectionCandidates) {
102
+ if (!selectionManager.has(rowId)) {
103
+ return true;
104
+ }
105
+ }
106
+ return false;
107
+ }, [filteredSelection, selectionCandidates]);
74
108
  const isChecked = currentSelectionSize > 0;
75
109
  const handleChange = event => {
76
110
  const params = {
@@ -5,14 +5,15 @@ import PropTypes from 'prop-types';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
6
  import { styled } from '@mui/material/styles';
7
7
  import { inputBaseClasses } from '@mui/material/InputBase';
8
- import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
8
+ import { vars } from "../../constants/cssVariables.js";
9
+ import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, gridInitialColumnVisibilityModelSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
9
10
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
10
11
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
11
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
12
13
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
13
- import { useLazyRef } from "../../hooks/utils/useLazyRef.js";
14
14
  import { checkColumnVisibilityModelsSame, defaultSearchPredicate } from "./utils.js";
15
15
  import { NotRendered } from "../../utils/assert.js";
16
+ import { GridShadowScrollArea } from "../GridShadowScrollArea.js";
16
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
18
  const useUtilityClasses = ownerState => {
18
19
  const {
@@ -32,7 +33,7 @@ function GridColumnsManagement(props) {
32
33
  const apiRef = useGridApiContext();
33
34
  const searchInputRef = React.useRef(null);
34
35
  const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
35
- const initialColumnVisibilityModel = useLazyRef(() => gridColumnVisibilityModelSelector(apiRef)).current;
36
+ const initialColumnVisibilityModel = useGridSelector(apiRef, gridInitialColumnVisibilityModelSelector);
36
37
  const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
37
38
  const rootProps = useGridRootProps();
38
39
  const [searchValue, setSearchValue] = React.useState('');
@@ -132,20 +133,20 @@ function GridColumnsManagement(props) {
132
133
  type: "search",
133
134
  slotProps: {
134
135
  input: {
135
- startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
136
- position: "start",
137
- children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})
136
+ startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {
137
+ fontSize: "small"
138
138
  }),
139
139
  endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
140
- "aria-label": apiRef.current.getLocaleText('columnsManagementDeleteIconLabel'),
141
140
  size: "small",
141
+ "aria-label": apiRef.current.getLocaleText('columnsManagementDeleteIconLabel'),
142
142
  style: searchValue ? {
143
143
  visibility: 'visible'
144
144
  } : {
145
145
  visibility: 'hidden'
146
146
  },
147
147
  tabIndex: -1,
148
- onClick: handleSearchReset
148
+ onClick: handleSearchReset,
149
+ edge: "end"
149
150
  }, rootProps.slotProps?.baseIconButton, {
150
151
  children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
151
152
  fontSize: "small"
@@ -159,25 +160,27 @@ function GridColumnsManagement(props) {
159
160
  autoComplete: "off",
160
161
  fullWidth: true
161
162
  }, rootProps.slotProps?.baseTextField, searchInputProps))
162
- }), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
163
- className: classes.root,
163
+ }), /*#__PURE__*/_jsx(GridColumnsManagementScrollArea, {
164
164
  ownerState: rootProps,
165
- children: [currentColumns.map(column => /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
166
- className: classes.row,
167
- disabled: column.hideable === false,
168
- checked: columnVisibilityModel[column.field] !== false,
169
- onClick: toggleColumn,
170
- name: column.field,
171
- inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined,
172
- label: column.headerName || column.field,
173
- size: "medium",
174
- density: "compact",
175
- fullWidth: true
176
- }, rootProps.slotProps?.baseCheckbox), column.field)), currentColumns.length === 0 && /*#__PURE__*/_jsx(GridColumnsManagementEmptyText, {
165
+ children: /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
166
+ className: classes.root,
177
167
  ownerState: rootProps,
178
- children: apiRef.current.getLocaleText('columnsManagementNoColumns')
179
- })]
180
- }), (!disableShowHideToggle || !disableResetButton) && currentColumns.length > 0 ? /*#__PURE__*/_jsxs(GridColumnsManagementFooter, {
168
+ children: [currentColumns.map(column => /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
169
+ className: classes.row,
170
+ disabled: column.hideable === false,
171
+ checked: columnVisibilityModel[column.field] !== false,
172
+ onClick: toggleColumn,
173
+ name: column.field,
174
+ inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined,
175
+ label: column.headerName || column.field,
176
+ density: "compact",
177
+ fullWidth: true
178
+ }, rootProps.slotProps?.baseCheckbox), column.field)), currentColumns.length === 0 && /*#__PURE__*/_jsx(GridColumnsManagementEmptyText, {
179
+ ownerState: rootProps,
180
+ children: apiRef.current.getLocaleText('columnsManagementNoColumns')
181
+ })]
182
+ })
183
+ }), !disableShowHideToggle || !disableResetButton ? /*#__PURE__*/_jsxs(GridColumnsManagementFooter, {
181
184
  ownerState: rootProps,
182
185
  className: classes.footer,
183
186
  children: [!disableShowHideToggle ? /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
@@ -186,7 +189,8 @@ function GridColumnsManagement(props) {
186
189
  indeterminate: !allHideableColumnsVisible && !allHideableColumnsHidden,
187
190
  onClick: () => toggleAllColumns(!allHideableColumnsVisible),
188
191
  name: apiRef.current.getLocaleText('columnsManagementShowHideAllText'),
189
- label: apiRef.current.getLocaleText('columnsManagementShowHideAllText')
192
+ label: apiRef.current.getLocaleText('columnsManagementShowHideAllText'),
193
+ density: "compact"
190
194
  }, rootProps.slotProps?.baseCheckbox)) : /*#__PURE__*/_jsx("span", {}), !disableResetButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
191
195
  onClick: () => apiRef.current.setColumnVisibilityModel(initialColumnVisibilityModel),
192
196
  disabled: isResetDisabled
@@ -242,6 +246,7 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
242
246
  onChange: PropTypes.func,
243
247
  onKeyDown: PropTypes.func,
244
248
  placeholder: PropTypes.string,
249
+ role: PropTypes.string,
245
250
  size: PropTypes.oneOf(['medium', 'small']),
246
251
  slotProps: PropTypes.object,
247
252
  style: PropTypes.object,
@@ -262,57 +267,51 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
262
267
  const GridColumnsManagementBody = styled('div', {
263
268
  name: 'MuiDataGrid',
264
269
  slot: 'ColumnsManagement'
265
- })(({
266
- theme
267
- }) => ({
268
- padding: theme.spacing(0, 2, 1.5),
270
+ })({
269
271
  display: 'flex',
270
272
  flexDirection: 'column',
271
- overflow: 'auto',
272
- flex: '1 1',
273
- maxHeight: 400,
274
- alignItems: 'flex-start'
275
- }));
273
+ padding: vars.spacing(0.5, 1.5)
274
+ });
275
+ const GridColumnsManagementScrollArea = styled(GridShadowScrollArea, {
276
+ name: 'MuiDataGrid',
277
+ slot: 'ColumnsManagementScrollArea'
278
+ })({
279
+ maxHeight: 400
280
+ });
276
281
  const GridColumnsManagementHeader = styled('div', {
277
282
  name: 'MuiDataGrid',
278
283
  slot: 'ColumnsManagementHeader'
279
- })(({
280
- theme
281
- }) => ({
282
- padding: theme.spacing(1.5, 3)
283
- }));
284
+ })({
285
+ padding: vars.spacing(1.5, 2),
286
+ borderBottom: `1px solid ${vars.colors.border.base}`
287
+ });
284
288
  const SearchInput = styled(NotRendered, {
285
289
  name: 'MuiDataGrid',
286
290
  slot: 'ColumnsManagementSearchInput'
287
- })(({
288
- theme
289
- }) => ({
290
- [`& .${inputBaseClasses.root}`]: {
291
- padding: theme.spacing(0, 1.5, 0, 1.5)
292
- },
291
+ })({
293
292
  [`& .${inputBaseClasses.input}::-webkit-search-decoration,
294
- & .${inputBaseClasses.input}::-webkit-search-cancel-button,
295
- & .${inputBaseClasses.input}::-webkit-search-results-button,
296
- & .${inputBaseClasses.input}::-webkit-search-results-decoration`]: {
293
+ & .${inputBaseClasses.input}::-webkit-search-cancel-button,
294
+ & .${inputBaseClasses.input}::-webkit-search-results-button,
295
+ & .${inputBaseClasses.input}::-webkit-search-results-decoration`]: {
297
296
  /* clears the 'X' icon from Chrome */
298
297
  display: 'none'
299
298
  }
300
- }));
299
+ });
301
300
  const GridColumnsManagementFooter = styled('div', {
302
301
  name: 'MuiDataGrid',
303
302
  slot: 'ColumnsManagementFooter'
304
- })(({
305
- theme
306
- }) => ({
307
- padding: theme.spacing(0.5, 1, 0.5, 3),
303
+ })({
304
+ padding: vars.spacing(1, 1, 1, 1.5),
308
305
  display: 'flex',
309
306
  justifyContent: 'space-between',
310
- borderTop: `1px solid ${theme.palette.divider}`
311
- }));
312
- const GridColumnsManagementEmptyText = styled('div')(({
313
- theme
314
- }) => ({
315
- padding: theme.spacing(0.5, 0),
316
- color: theme.palette.grey[500]
317
- }));
307
+ borderTop: `1px solid ${vars.colors.border.base}`
308
+ });
309
+ const GridColumnsManagementEmptyText = styled('div', {
310
+ name: 'MuiDataGrid',
311
+ slot: 'ColumnsManagementEmptyText'
312
+ })({
313
+ padding: vars.spacing(1, 0),
314
+ alignSelf: 'center',
315
+ fontSize: vars.typography.body.fontSize
316
+ });
318
317
  export { GridColumnsManagement };
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { RenderProp } from "../../hooks/utils/useGridComponentRenderer.js";
3
+ import type { GridSlotProps } from '../../models';
4
+ export interface ColumnsPanelState {
5
+ /**
6
+ * If `true`, the columns panel is open.
7
+ */
8
+ open: boolean;
9
+ }
10
+ export type ColumnsPanelTriggerProps = Omit<GridSlotProps['baseButton'], 'className'> & {
11
+ /**
12
+ * A function to customize rendering of the component.
13
+ */
14
+ render?: RenderProp<GridSlotProps['baseButton'], ColumnsPanelState>;
15
+ /**
16
+ * Override or extend the styles applied to the component.
17
+ */
18
+ className?: string | ((state: ColumnsPanelState) => string);
19
+ };
20
+ /**
21
+ * A button that opens and closes the columns panel.
22
+ * It renders the `baseButton` slot.
23
+ *
24
+ * Demos:
25
+ *
26
+ * - [Columns Panel](https://mui.com/x/react-data-grid/components/columns-panel/)
27
+ *
28
+ * API:
29
+ *
30
+ * - [ColumnsPanelTrigger API](https://mui.com/x/api/data-grid/columns-panel-trigger/)
31
+ */
32
+ declare const ColumnsPanelTrigger: React.ForwardRefExoticComponent<ColumnsPanelTriggerProps> | React.ForwardRefExoticComponent<Omit<ColumnsPanelTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
+ export { ColumnsPanelTrigger };