@mui/x-data-grid 7.0.0-beta.6 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/CHANGELOG.md +311 -12
  2. package/DataGrid/DataGrid.js +57 -17
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +6 -7
  5. package/README.md +1 -1
  6. package/components/GridColumnHeaders.d.ts +1 -2
  7. package/components/GridColumnHeaders.js +6 -17
  8. package/components/GridFooter.js +2 -3
  9. package/components/GridHeader.js +1 -2
  10. package/components/GridHeaders.js +1 -4
  11. package/components/GridPagination.d.ts +6 -5
  12. package/components/GridPagination.js +14 -11
  13. package/components/GridRow.d.ts +1 -1
  14. package/components/GridRow.js +17 -36
  15. package/components/GridScrollArea.d.ts +10 -0
  16. package/components/GridScrollArea.js +150 -0
  17. package/components/base/GridFooterPlaceholder.js +1 -2
  18. package/components/base/GridOverlays.js +3 -6
  19. package/components/cell/GridActionsCell.js +4 -6
  20. package/components/cell/GridActionsCellItem.d.ts +8 -25
  21. package/components/cell/GridActionsCellItem.js +8 -5
  22. package/components/cell/GridBooleanCell.d.ts +1 -0
  23. package/components/cell/GridBooleanCell.js +3 -2
  24. package/components/cell/GridCell.d.ts +7 -0
  25. package/components/cell/GridCell.js +18 -11
  26. package/components/cell/GridEditBooleanCell.js +1 -2
  27. package/components/cell/GridEditDateCell.js +2 -3
  28. package/components/cell/GridEditInputCell.js +2 -2
  29. package/components/cell/GridEditSingleSelectCell.js +5 -8
  30. package/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -3
  31. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  32. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  33. package/components/columnHeaders/GridColumnGroupHeader.js +22 -13
  34. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +2 -3
  35. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  36. package/components/columnHeaders/GridColumnHeaderItem.js +26 -12
  37. package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  38. package/components/columnHeaders/GridColumnHeaderTitle.js +2 -3
  39. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  40. package/components/columnHeaders/GridGenericColumnHeaderItem.js +7 -6
  41. package/components/columnSelection/GridCellCheckboxRenderer.js +3 -5
  42. package/components/columnSelection/GridHeaderCheckbox.js +1 -2
  43. package/components/columnsManagement/GridColumnsManagement.js +17 -21
  44. package/components/containers/GridRoot.js +3 -3
  45. package/components/containers/GridRootStyles.js +12 -20
  46. package/components/menu/GridMenu.js +4 -6
  47. package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  48. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -3
  49. package/components/panel/GridColumnsPanel.js +1 -2
  50. package/components/panel/GridPanel.d.ts +1 -10
  51. package/components/panel/GridPanel.js +1 -2
  52. package/components/panel/GridPreferencesPanel.js +2 -3
  53. package/components/panel/filterPanel/GridFilterForm.js +24 -27
  54. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -1
  55. package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  56. package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -1
  57. package/components/panel/filterPanel/GridFilterInputDate.js +3 -4
  58. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +11 -15
  59. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +10 -14
  60. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -1
  61. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +10 -11
  62. package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -1
  63. package/components/panel/filterPanel/GridFilterInputValue.js +5 -7
  64. package/components/panel/filterPanel/GridFilterPanel.js +5 -9
  65. package/components/panel/filterPanel/filterPanelUtils.js +1 -1
  66. package/components/toolbar/GridToolbarColumnsButton.js +3 -5
  67. package/components/toolbar/GridToolbarDensitySelector.js +8 -10
  68. package/components/toolbar/GridToolbarExport.js +2 -2
  69. package/components/toolbar/GridToolbarExportContainer.js +3 -5
  70. package/components/toolbar/GridToolbarFilterButton.js +3 -5
  71. package/components/toolbar/GridToolbarQuickFilter.js +4 -5
  72. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  73. package/components/virtualization/GridVirtualScroller.js +6 -1
  74. package/components/virtualization/GridVirtualScrollerContent.js +1 -2
  75. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  76. package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
  77. package/constants/gridClasses.d.ts +6 -32
  78. package/constants/gridClasses.js +1 -1
  79. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  80. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +1 -2
  81. package/hooks/core/useGridApiInitialization.js +4 -6
  82. package/hooks/features/clipboard/useGridClipboard.js +6 -5
  83. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -16
  84. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +4 -8
  85. package/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -23
  86. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  87. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -101
  88. package/hooks/features/columnMenu/useGridColumnMenuSlots.js +2 -2
  89. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  90. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  91. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  92. package/hooks/features/columnResize/columnResizeState.js +1 -0
  93. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  94. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  95. package/hooks/features/columnResize/index.d.ts +3 -0
  96. package/hooks/features/columnResize/index.js +3 -0
  97. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  98. package/hooks/features/columnResize/useGridColumnResize.js +553 -0
  99. package/hooks/features/columns/gridColumnsSelector.js +1 -2
  100. package/hooks/features/columns/gridColumnsUtils.d.ts +0 -9
  101. package/hooks/features/columns/gridColumnsUtils.js +5 -22
  102. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  103. package/hooks/features/columns/useGridColumns.js +11 -19
  104. package/hooks/features/density/densitySelector.d.ts +4 -2
  105. package/hooks/features/density/densitySelector.js +8 -2
  106. package/hooks/features/density/densityState.d.ts +1 -4
  107. package/hooks/features/density/useGridDensity.d.ts +2 -4
  108. package/hooks/features/density/useGridDensity.js +21 -29
  109. package/hooks/features/dimensions/useGridDimensions.js +7 -10
  110. package/hooks/features/editing/useGridCellEditing.js +25 -8
  111. package/hooks/features/editing/useGridEditing.js +1 -2
  112. package/hooks/features/editing/useGridRowEditing.js +4 -6
  113. package/hooks/features/export/serializers/csvSerializer.d.ts +2 -0
  114. package/hooks/features/export/serializers/csvSerializer.js +25 -16
  115. package/hooks/features/export/useGridCsvExport.js +9 -10
  116. package/hooks/features/export/useGridPrintExport.js +17 -22
  117. package/hooks/features/export/utils.js +2 -3
  118. package/hooks/features/filter/gridFilterSelector.js +15 -22
  119. package/hooks/features/filter/gridFilterUtils.js +10 -16
  120. package/hooks/features/filter/useGridFilter.js +9 -15
  121. package/hooks/features/focus/useGridFocus.js +5 -6
  122. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  123. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  124. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +23 -5
  125. package/hooks/features/index.d.ts +1 -0
  126. package/hooks/features/index.js +1 -0
  127. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -2
  128. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  129. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  130. package/hooks/features/pagination/gridPaginationSelector.js +9 -4
  131. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  132. package/hooks/features/pagination/useGridPagination.js +9 -158
  133. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  134. package/hooks/features/pagination/useGridPaginationModel.js +165 -0
  135. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  136. package/hooks/features/pagination/useGridRowCount.js +94 -0
  137. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +7 -12
  138. package/hooks/features/rowSelection/useGridRowSelection.js +11 -16
  139. package/hooks/features/rows/gridRowsSelector.js +11 -19
  140. package/hooks/features/rows/gridRowsUtils.js +7 -9
  141. package/hooks/features/rows/useGridParamsApi.js +1 -1
  142. package/hooks/features/rows/useGridRows.js +4 -13
  143. package/hooks/features/rows/useGridRowsMeta.js +7 -13
  144. package/hooks/features/scroll/useGridScroll.js +3 -4
  145. package/hooks/features/sorting/gridSortingSelector.js +4 -7
  146. package/hooks/features/sorting/useGridSorting.js +8 -14
  147. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  148. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  149. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -3
  150. package/hooks/features/virtualization/useGridVirtualScroller.js +220 -71
  151. package/hooks/utils/useGridApiEventHandler.js +5 -10
  152. package/hooks/utils/useGridNativeEventListener.js +1 -2
  153. package/hooks/utils/useLazyRef.d.ts +1 -2
  154. package/hooks/utils/useLazyRef.js +1 -11
  155. package/hooks/utils/useOnMount.d.ts +1 -2
  156. package/hooks/utils/useOnMount.js +1 -7
  157. package/hooks/utils/useTimeout.d.ts +1 -11
  158. package/hooks/utils/useTimeout.js +1 -36
  159. package/index.js +1 -1
  160. package/internals/index.d.ts +3 -1
  161. package/internals/index.js +2 -1
  162. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  163. package/internals/utils/getPinnedCellOffset.js +17 -0
  164. package/internals/utils/useProps.js +1 -2
  165. package/joy/joySlots.js +18 -63
  166. package/locales/jaJP.js +3 -4
  167. package/material/index.js +0 -2
  168. package/models/api/gridApiCommon.d.ts +3 -3
  169. package/models/api/gridCoreApi.d.ts +1 -5
  170. package/models/api/gridRowsMetaApi.d.ts +1 -1
  171. package/models/api/index.d.ts +1 -1
  172. package/models/api/index.js +0 -1
  173. package/models/events/gridEventLookup.d.ts +13 -0
  174. package/models/gridExport.d.ts +6 -0
  175. package/models/gridHeaderFilteringModel.d.ts +1 -0
  176. package/models/gridSlotsComponent.d.ts +0 -5
  177. package/models/gridStateCommunity.d.ts +3 -0
  178. package/models/params/gridScrollParams.d.ts +5 -3
  179. package/models/props/DataGridProps.d.ts +58 -28
  180. package/modern/DataGrid/DataGrid.js +57 -17
  181. package/modern/DataGrid/useDataGridComponent.js +3 -0
  182. package/modern/DataGrid/useDataGridProps.js +6 -7
  183. package/modern/components/GridColumnHeaders.js +6 -17
  184. package/modern/components/GridHeaders.js +1 -4
  185. package/modern/components/GridPagination.js +13 -6
  186. package/modern/components/GridRow.js +4 -19
  187. package/modern/components/GridScrollArea.js +150 -0
  188. package/modern/components/cell/GridActionsCell.js +1 -1
  189. package/modern/components/cell/GridActionsCellItem.js +4 -0
  190. package/modern/components/cell/GridBooleanCell.js +3 -2
  191. package/modern/components/cell/GridCell.js +11 -3
  192. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  193. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  194. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  195. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  196. package/modern/components/containers/GridRoot.js +3 -3
  197. package/modern/components/containers/GridRootStyles.js +12 -20
  198. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  199. package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  200. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  201. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  202. package/modern/components/toolbar/GridToolbarDensitySelector.js +5 -5
  203. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  204. package/modern/components/virtualization/GridVirtualScroller.js +6 -1
  205. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  206. package/modern/constants/gridClasses.js +1 -1
  207. package/modern/hooks/features/clipboard/useGridClipboard.js +4 -2
  208. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  209. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  210. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  211. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  212. package/modern/hooks/features/columnResize/index.js +3 -0
  213. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  214. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -20
  215. package/modern/hooks/features/density/densitySelector.js +8 -2
  216. package/modern/hooks/features/density/useGridDensity.js +21 -29
  217. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
  218. package/modern/hooks/features/editing/useGridCellEditing.js +22 -3
  219. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  220. package/modern/hooks/features/export/serializers/csvSerializer.js +23 -12
  221. package/modern/hooks/features/export/useGridCsvExport.js +2 -1
  222. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  223. package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
  224. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  225. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  226. package/modern/hooks/features/index.js +1 -0
  227. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  228. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  229. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  230. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  231. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  232. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  233. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  234. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  235. package/modern/hooks/utils/useLazyRef.js +1 -11
  236. package/modern/hooks/utils/useOnMount.js +1 -7
  237. package/modern/hooks/utils/useTimeout.js +1 -36
  238. package/modern/index.js +1 -1
  239. package/modern/internals/index.js +2 -1
  240. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  241. package/modern/joy/joySlots.js +11 -50
  242. package/modern/locales/jaJP.js +3 -4
  243. package/modern/material/index.js +0 -2
  244. package/modern/models/api/index.js +0 -1
  245. package/modern/utils/cellBorderUtils.js +8 -0
  246. package/modern/utils/createSelector.js +1 -1
  247. package/modern/utils/domUtils.js +144 -0
  248. package/modern/utils/keyboardUtils.js +1 -1
  249. package/node/DataGrid/DataGrid.js +57 -17
  250. package/node/DataGrid/useDataGridComponent.js +3 -0
  251. package/node/DataGrid/useDataGridProps.js +6 -7
  252. package/node/components/GridColumnHeaders.js +6 -16
  253. package/node/components/GridHeaders.js +1 -4
  254. package/node/components/GridPagination.js +10 -4
  255. package/node/components/GridRow.js +3 -18
  256. package/node/components/GridScrollArea.js +158 -0
  257. package/node/components/cell/GridActionsCell.js +1 -1
  258. package/node/components/cell/GridActionsCellItem.js +4 -0
  259. package/node/components/cell/GridBooleanCell.js +3 -2
  260. package/node/components/cell/GridCell.js +12 -4
  261. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  262. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  263. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  264. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  265. package/node/components/containers/GridRoot.js +2 -2
  266. package/node/components/containers/GridRootStyles.js +12 -20
  267. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  268. package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  269. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  270. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  271. package/node/components/toolbar/GridToolbarDensitySelector.js +4 -4
  272. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  273. package/node/components/virtualization/GridVirtualScroller.js +6 -1
  274. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  275. package/node/constants/gridClasses.js +1 -1
  276. package/node/hooks/features/clipboard/useGridClipboard.js +4 -2
  277. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  278. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  279. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  280. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  281. package/node/hooks/features/columnResize/index.js +38 -0
  282. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  283. package/node/hooks/features/columns/gridColumnsUtils.js +4 -21
  284. package/node/hooks/features/density/densitySelector.js +9 -3
  285. package/node/hooks/features/density/useGridDensity.js +22 -30
  286. package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
  287. package/node/hooks/features/editing/useGridCellEditing.js +22 -3
  288. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  289. package/node/hooks/features/export/serializers/csvSerializer.js +23 -12
  290. package/node/hooks/features/export/useGridCsvExport.js +2 -1
  291. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  292. package/node/hooks/features/filter/gridFilterUtils.js +1 -1
  293. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  294. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  295. package/node/hooks/features/index.js +11 -0
  296. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  297. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  298. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  299. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  300. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  301. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  302. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  303. package/node/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  304. package/node/hooks/utils/useLazyRef.js +7 -13
  305. package/node/hooks/utils/useOnMount.js +8 -10
  306. package/node/hooks/utils/useTimeout.js +7 -37
  307. package/node/index.js +1 -1
  308. package/node/internals/index.js +27 -8
  309. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  310. package/node/joy/joySlots.js +11 -50
  311. package/node/locales/jaJP.js +3 -4
  312. package/node/material/index.js +0 -2
  313. package/node/models/api/index.js +0 -11
  314. package/node/utils/cellBorderUtils.js +16 -0
  315. package/node/utils/createSelector.js +1 -1
  316. package/node/utils/domUtils.js +155 -0
  317. package/node/utils/keyboardUtils.js +1 -1
  318. package/package.json +4 -4
  319. package/utils/cellBorderUtils.d.ts +3 -0
  320. package/utils/cellBorderUtils.js +8 -0
  321. package/utils/createSelector.js +9 -9
  322. package/utils/domUtils.d.ts +14 -1
  323. package/utils/domUtils.js +144 -0
  324. package/utils/getGridLocalization.js +9 -12
  325. package/utils/keyboardUtils.js +1 -1
  326. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  327. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  328. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  329. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -5,7 +5,7 @@ import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui
5
5
  import MenuList from '@mui/material/MenuList';
6
6
  import MenuItem from '@mui/material/MenuItem';
7
7
  import ListItemIcon from '@mui/material/ListItemIcon';
8
- import { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';
8
+ import { gridDensitySelector } from '../../hooks/features/density/densitySelector';
9
9
  import { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';
10
10
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
11
11
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
@@ -15,7 +15,6 @@ import { gridClasses } from '../../constants/gridClasses';
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
17
  const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {
18
- var _rootProps$slotProps, _rootProps$slotProps2;
19
18
  const {
20
19
  slotProps = {}
21
20
  } = props;
@@ -23,7 +22,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
23
22
  const tooltipProps = slotProps.tooltip || {};
24
23
  const apiRef = useGridApiContext();
25
24
  const rootProps = useGridRootProps();
26
- const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
25
+ const density = useGridSelector(apiRef, gridDensitySelector);
27
26
  const densityButtonId = useId();
28
27
  const densityMenuId = useId();
29
28
  const [open, setOpen] = React.useState(false);
@@ -43,7 +42,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
43
42
  value: 'comfortable'
44
43
  }];
45
44
  const startIcon = React.useMemo(() => {
46
- switch (densityValue) {
45
+ switch (density) {
47
46
  case 'compact':
48
47
  return /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {});
49
48
  case 'comfortable':
@@ -51,11 +50,10 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
51
50
  default:
52
51
  return /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {});
53
52
  }
54
- }, [densityValue, rootProps]);
53
+ }, [density, rootProps]);
55
54
  const handleDensitySelectorOpen = event => {
56
- var _buttonProps$onClick;
57
55
  setOpen(prevOpen => !prevOpen);
58
- (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);
56
+ buttonProps.onClick?.(event);
59
57
  };
60
58
  const handleDensitySelectorClose = () => {
61
59
  setOpen(false);
@@ -79,7 +77,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
79
77
  }
80
78
  const densityElements = densityOptions.map((option, index) => /*#__PURE__*/_jsxs(MenuItem, {
81
79
  onClick: () => handleDensityUpdate(option.value),
82
- selected: option.value === densityValue,
80
+ selected: option.value === density,
83
81
  children: [/*#__PURE__*/_jsx(ListItemIcon, {
84
82
  children: option.icon
85
83
  }), option.label]
@@ -88,7 +86,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
88
86
  children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
89
87
  title: apiRef.current.getLocaleText('toolbarDensityLabel'),
90
88
  enterDelay: 1000
91
- }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
89
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
92
90
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
93
91
  ref: handleRef,
94
92
  size: "small",
@@ -100,7 +98,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
100
98
  id: densityButtonId
101
99
  }, buttonProps, {
102
100
  onClick: handleDensitySelectorOpen
103
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
101
+ }, rootProps.slotProps?.baseButton, {
104
102
  children: apiRef.current.getLocaleText('toolbarDensity')
105
103
  }))
106
104
  })), /*#__PURE__*/_jsx(GridMenu, {
@@ -19,7 +19,7 @@ export function GridCsvExportMenuItem(props) {
19
19
  return /*#__PURE__*/_jsx(MenuItem, _extends({
20
20
  onClick: () => {
21
21
  apiRef.current.exportDataAsCsv(options);
22
- hideMenu == null || hideMenu();
22
+ hideMenu?.();
23
23
  }
24
24
  }, other, {
25
25
  children: apiRef.current.getLocaleText('toolbarExportCSV')
@@ -35,7 +35,7 @@ export function GridPrintExportMenuItem(props) {
35
35
  return /*#__PURE__*/_jsx(MenuItem, _extends({
36
36
  onClick: () => {
37
37
  apiRef.current.exportDataAsPrint(options);
38
- hideMenu == null || hideMenu();
38
+ hideMenu?.();
39
39
  }
40
40
  }, other, {
41
41
  children: apiRef.current.getLocaleText('toolbarExportPrint')
@@ -11,7 +11,6 @@ import { gridClasses } from '../../constants/gridClasses';
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
13
13
  const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
14
- var _rootProps$slotProps, _rootProps$slotProps2;
15
14
  const {
16
15
  children,
17
16
  slotProps = {}
@@ -26,9 +25,8 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
26
25
  const buttonRef = React.useRef(null);
27
26
  const handleRef = useForkRef(ref, buttonRef);
28
27
  const handleMenuOpen = event => {
29
- var _buttonProps$onClick;
30
28
  setOpen(prevOpen => !prevOpen);
31
- (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);
29
+ buttonProps.onClick?.(event);
32
30
  };
33
31
  const handleMenuClose = () => setOpen(false);
34
32
  const handleListKeyDown = event => {
@@ -46,7 +44,7 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
46
44
  children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
47
45
  title: apiRef.current.getLocaleText('toolbarExportLabel'),
48
46
  enterDelay: 1000
49
- }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
47
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
50
48
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
51
49
  ref: handleRef,
52
50
  size: "small",
@@ -58,7 +56,7 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
58
56
  id: exportButtonId
59
57
  }, buttonProps, {
60
58
  onClick: handleMenuOpen
61
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
59
+ }, rootProps.slotProps?.baseButton, {
62
60
  children: apiRef.current.getLocaleText('toolbarExport')
63
61
  }))
64
62
  })), /*#__PURE__*/_jsx(GridMenu, {
@@ -34,7 +34,6 @@ const GridToolbarFilterListRoot = styled('ul', {
34
34
  padding: theme.spacing(0, 1)
35
35
  }));
36
36
  const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {
37
- var _rootProps$slotProps, _rootProps$slotProps2;
38
37
  const {
39
38
  slotProps = {}
40
39
  } = props;
@@ -77,7 +76,6 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
77
76
  });
78
77
  }, [apiRef, rootProps, preferencePanel.open, activeFilters, lookup, classes]);
79
78
  const toggleFilter = event => {
80
- var _buttonProps$onClick;
81
79
  const {
82
80
  open,
83
81
  openedPanelValue
@@ -87,7 +85,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
87
85
  } else {
88
86
  apiRef.current.showPreferences(GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);
89
87
  }
90
- (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);
88
+ buttonProps.onClick?.(event);
91
89
  };
92
90
 
93
91
  // Disable the button if the corresponding is disabled
@@ -98,7 +96,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
98
96
  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
99
97
  title: tooltipContentNode,
100
98
  enterDelay: 1000
101
- }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
99
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
102
100
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
103
101
  ref: ref,
104
102
  id: filterButtonId,
@@ -114,7 +112,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
114
112
  })
115
113
  }, buttonProps, {
116
114
  onClick: toggleFilter
117
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
115
+ }, rootProps.slotProps?.baseButton, {
118
116
  children: apiRef.current.getLocaleText('toolbarFilters')
119
117
  }))
120
118
  }));
@@ -45,7 +45,6 @@ const GridToolbarQuickFilterRoot = styled(TextField, {
45
45
  const defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');
46
46
  const defaultSearchValueFormatter = values => values.join(' ');
47
47
  function GridToolbarQuickFilter(props) {
48
- var _rootProps$slotProps, _rootProps$slotProps2;
49
48
  const apiRef = useGridApiContext();
50
49
  const rootProps = useGridRootProps();
51
50
  const quickFilterValues = useGridSelector(apiRef, gridQuickFilterValuesSelector);
@@ -55,7 +54,7 @@ function GridToolbarQuickFilter(props) {
55
54
  debounceMs = rootProps.filterDebounceMs
56
55
  } = props,
57
56
  other = _objectWithoutPropertiesLoose(props, _excluded);
58
- const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));
57
+ const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues ?? []));
59
58
  const prevQuickFilterValuesRef = React.useRef(quickFilterValues);
60
59
  React.useEffect(() => {
61
60
  if (!isDeepEqual(prevQuickFilterValuesRef.current, quickFilterValues)) {
@@ -63,7 +62,7 @@ function GridToolbarQuickFilter(props) {
63
62
  prevQuickFilterValuesRef.current = quickFilterValues;
64
63
 
65
64
  // Update the input value if needed to match the new model
66
- setSearchValue(prevSearchValue => isDeepEqual(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));
65
+ setSearchValue(prevSearchValue => isDeepEqual(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues ?? []));
67
66
  }
68
67
  }, [quickFilterValues, quickFilterFormatter, quickFilterParser]);
69
68
  const updateSearchValue = React.useCallback(newSearchValue => {
@@ -102,13 +101,13 @@ function GridToolbarQuickFilter(props) {
102
101
  visibility: searchValue ? 'visible' : 'hidden'
103
102
  },
104
103
  onClick: handleSearchReset
105
- }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {
104
+ }, rootProps.slotProps?.baseIconButton, {
106
105
  children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
107
106
  fontSize: "small"
108
107
  })
109
108
  }))
110
109
  }, other.InputProps)
111
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseTextField));
110
+ }, rootProps.slotProps?.baseTextField));
112
111
  }
113
112
  process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
114
113
  // ----------------------------- Warning --------------------------------
@@ -35,6 +35,8 @@ const ScrollbarVertical = styled(Scrollbar)({
35
35
  height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
36
36
  overflowY: 'auto',
37
37
  overflowX: 'hidden',
38
+ // Disable focus-visible style, it's a scrollbar.
39
+ outline: 0,
38
40
  '& > div': {
39
41
  width: 'var(--size)'
40
42
  },
@@ -46,6 +48,8 @@ const ScrollbarHorizontal = styled(Scrollbar)({
46
48
  height: 'var(--size)',
47
49
  overflowY: 'hidden',
48
50
  overflowX: 'auto',
51
+ // Disable focus-visible style, it's a scrollbar.
52
+ outline: 0,
49
53
  '& > div': {
50
54
  height: 'var(--size)'
51
55
  },
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { styled } from '@mui/system';
4
4
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
5
+ import { GridScrollArea } from '../GridScrollArea';
5
6
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
6
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
7
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
@@ -66,7 +67,11 @@ function GridVirtualScroller(props) {
66
67
  return /*#__PURE__*/_jsxs(Container, _extends({
67
68
  className: classes.root
68
69
  }, getContainerProps(), {
69
- children: [/*#__PURE__*/_jsxs(Scroller, _extends({
70
+ children: [/*#__PURE__*/_jsx(GridScrollArea, {
71
+ scrollDirection: "left"
72
+ }), /*#__PURE__*/_jsx(GridScrollArea, {
73
+ scrollDirection: "right"
74
+ }), /*#__PURE__*/_jsxs(Scroller, _extends({
70
75
  className: classes.scroller
71
76
  }, getScrollerProps(), {
72
77
  ownerState: rootProps,
@@ -21,9 +21,8 @@ const VirtualScrollerContentRoot = styled('div', {
21
21
  overridesResolver: (props, styles) => styles.virtualScrollerContent
22
22
  })({});
23
23
  const GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerContent(props, ref) {
24
- var _props$style;
25
24
  const rootProps = useGridRootProps();
26
- const overflowedContent = !rootProps.autoHeight && ((_props$style = props.style) == null ? void 0 : _props$style.minHeight) === 'auto';
25
+ const overflowedContent = !rootProps.autoHeight && props.style?.minHeight === 'auto';
27
26
  const classes = useUtilityClasses(rootProps, overflowedContent);
28
27
  return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({
29
28
  ref: ref
@@ -38,6 +38,7 @@ function GridVirtualScrollerFiller() {
38
38
  viewportOuterSize,
39
39
  minimumSize,
40
40
  hasScrollX,
41
+ hasScrollY,
41
42
  scrollbarSize,
42
43
  leftPinnedWidth,
43
44
  rightPinnedWidth
@@ -62,7 +63,7 @@ function GridVirtualScrollerFiller() {
62
63
  }), /*#__PURE__*/_jsx(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedRight, {
63
64
  className: gridClasses['filler--pinnedRight'],
64
65
  style: {
65
- width: rightPinnedWidth
66
+ width: rightPinnedWidth + (hasScrollY ? scrollbarSize : 0)
66
67
  }
67
68
  })]
68
69
  });
@@ -40,10 +40,9 @@ const GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function Gri
40
40
  const rootProps = useGridRootProps();
41
41
  const classes = useUtilityClasses(rootProps);
42
42
  const offsetTop = useGridSelector(apiRef, () => {
43
- var _rowsMeta$positions$r;
44
43
  const renderContext = gridRenderContextSelector(apiRef);
45
44
  const rowsMeta = gridRowsMetaSelector(apiRef.current.state);
46
- return (_rowsMeta$positions$r = rowsMeta.positions[renderContext.firstRowIndex]) != null ? _rowsMeta$positions$r : 0;
45
+ return rowsMeta.positions[renderContext.firstRowIndex] ?? 0;
47
46
  });
48
47
  return /*#__PURE__*/_jsx(VirtualScrollerRenderZoneRoot, _extends({
49
48
  ref: ref,
@@ -148,14 +148,12 @@ export interface GridClasses {
148
148
  * Styles applied to the column header if the column has a filter applied to it.
149
149
  */
150
150
  'columnHeader--filtered': string;
151
+ 'columnHeader--pinnedLeft': string;
152
+ 'columnHeader--pinnedRight': string;
151
153
  /**
152
154
  * Styles applied to the column header element.
153
155
  */
154
156
  columnHeader: string;
155
- /**
156
- * Styles applied to the column group header element.
157
- */
158
- columnGroupHeader: string;
159
157
  /**
160
158
  * Styles applied to the header checkbox cell element.
161
159
  */
@@ -168,10 +166,6 @@ export interface GridClasses {
168
166
  * Styles applied to the row's draggable placeholder element inside the special row reorder cell.
169
167
  */
170
168
  rowReorderCellPlaceholder: string;
171
- /**
172
- * Styles applied to the column headers wrapper if a column is being dragged.
173
- */
174
- columnHeaderDropZone: string;
175
169
  /**
176
170
  * Styles applied to the column header's title element;
177
171
  */
@@ -192,22 +186,10 @@ export interface GridClasses {
192
186
  * Styles applied to the empty column group header cell.
193
187
  */
194
188
  'columnHeader--emptyGroup': string;
195
- /**
196
- * Styles applied to the column group header cell when show column border.
197
- */
198
- 'columnHeader--showColumnBorder': string;
199
189
  /**
200
190
  * Styles applied to the column headers.
201
191
  */
202
192
  columnHeaders: string;
203
- /**
204
- * Styles applied to the column headers's inner element.
205
- */
206
- columnHeadersInner: string;
207
- /**
208
- * Styles applied to the column headers's inner element if there is a horizontal scrollbar.
209
- */
210
- 'columnHeadersInner--scrollable': string;
211
193
  /**
212
194
  * Styles applied to the column header separator if the column is resizable.
213
195
  */
@@ -302,14 +284,17 @@ export interface GridClasses {
302
284
  editBooleanCell: string;
303
285
  /**
304
286
  * Styles applied to the filler row.
287
+ * @ignore - do not document.
305
288
  */
306
289
  filler: string;
307
290
  /**
308
291
  * Styles applied to the filler row pinned left section.
292
+ * @ignore - do not document.
309
293
  */
310
294
  'filler--pinnedLeft': string;
311
295
  /**
312
296
  * Styles applied to the filler row pinned right section.
297
+ * @ignore - do not document.
313
298
  */
314
299
  'filler--pinnedRight': string;
315
300
  /**
@@ -420,18 +405,6 @@ export interface GridClasses {
420
405
  * Styles applied to the pinned columns.
421
406
  */
422
407
  pinnedColumns: string;
423
- /**
424
- * Styles applied to the pinned column headers.
425
- */
426
- pinnedColumnHeaders: string;
427
- /**
428
- * Styles applied to the left pinned column headers.
429
- */
430
- 'pinnedColumnHeaders--left': string;
431
- /**
432
- * Styles applied to the right pinned column headers.
433
- */
434
- 'pinnedColumnHeaders--right': string;
435
408
  /**
436
409
  * Styles applied to the root element.
437
410
  */
@@ -582,6 +555,7 @@ export interface GridClasses {
582
555
  * Styles applied the column header if `showColumnVerticalBorder={true}`.
583
556
  */
584
557
  'columnHeader--withRightBorder': string;
558
+ 'columnHeader--withLeftBorder': string;
585
559
  /**
586
560
  * Styles applied to the root of the grouping column of the tree data.
587
561
  */
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { GridCellIndexCoordinates, GridScrollParams, GridColDef, GridCellCoordinates, GridCellParams, GridEditMode } from '../../../models';
3
3
  import { GridInitialStateCommunity } from '../../../models/gridStateCommunity';
4
4
  import { GridExportStateParams, GridRestoreStatePreProcessingContext, GridRestoreStatePreProcessingValue } from '../../features/statePersistence/gridStatePersistenceInterface';
5
- import { GridHydrateColumnsValue } from '../../features/columns/gridColumnsInterfaces';
5
+ import { GridHydrateColumnsValue, GridPinnedColumnPosition } from '../../features/columns/gridColumnsInterfaces';
6
6
  import { GridRowEntry, GridRowId } from '../../../models/gridRows';
7
7
  import { GridHydrateRowsValue } from '../../features/rows/gridRowsInterfaces';
8
8
  import { GridPreferencePanelsValue } from '../../features/preferencesPanel';
@@ -75,6 +75,10 @@ export interface GridPipeProcessingLookup {
75
75
  editMode: GridEditMode;
76
76
  };
77
77
  };
78
+ isColumnPinned: {
79
+ value: GridPinnedColumnPosition | false;
80
+ context: string;
81
+ };
78
82
  }
79
83
  export type GridPipeProcessor<P extends GridPipeProcessorGroup> = (value: GridPipeProcessingLookup[P]['value'], context: GridPipeProcessingLookup[P] extends {
80
84
  context: any;
@@ -85,7 +85,6 @@ export const useGridStrategyProcessing = apiRef => {
85
85
  return processor(params);
86
86
  }, [apiRef]);
87
87
  const getActiveStrategy = React.useCallback(strategyGroup => {
88
- var _availableStrategyEnt;
89
88
  const strategyEntries = Array.from(availableStrategies.current.entries());
90
89
  const availableStrategyEntry = strategyEntries.find(([, strategy]) => {
91
90
  if (strategy.group !== strategyGroup) {
@@ -93,7 +92,7 @@ export const useGridStrategyProcessing = apiRef => {
93
92
  }
94
93
  return strategy.isAvailable();
95
94
  });
96
- return (_availableStrategyEnt = availableStrategyEntry == null ? void 0 : availableStrategyEntry[0]) != null ? _availableStrategyEnt : GRID_DEFAULT_STRATEGY;
95
+ return availableStrategyEntry?.[0] ?? GRID_DEFAULT_STRATEGY;
97
96
  }, []);
98
97
  const setStrategyAvailability = React.useCallback((strategyGroup, strategyName, isAvailable) => {
99
98
  availableStrategies.current.set(strategyName, {
@@ -12,8 +12,7 @@ export function unwrapPrivateAPI(publicApi) {
12
12
  }
13
13
  let globalId = 0;
14
14
  function createPrivateAPI(publicApiRef) {
15
- var _publicApiRef$current;
16
- const existingPrivateApi = (_publicApiRef$current = publicApiRef.current) == null ? void 0 : _publicApiRef$current[SYMBOL_API_PRIVATE];
15
+ const existingPrivateApi = publicApiRef.current?.[SYMBOL_API_PRIVATE];
17
16
  if (existingPrivateApi) {
18
17
  return existingPrivateApi;
19
18
  }
@@ -31,7 +30,7 @@ function createPrivateAPI(publicApiRef) {
31
30
  Object.keys(methods).forEach(methodName => {
32
31
  const method = methods[methodName];
33
32
  const currentPrivateMethod = privateApi[methodName];
34
- if ((currentPrivateMethod == null ? void 0 : currentPrivateMethod.spying) === true) {
33
+ if (currentPrivateMethod?.spying === true) {
35
34
  currentPrivateMethod.target = method;
36
35
  } else {
37
36
  privateApi[methodName] = method;
@@ -39,7 +38,7 @@ function createPrivateAPI(publicApiRef) {
39
38
  if (visibility === 'public') {
40
39
  const publicApi = publicApiRef.current;
41
40
  const currentPublicMethod = publicApi[methodName];
42
- if ((currentPublicMethod == null ? void 0 : currentPublicMethod.spying) === true) {
41
+ if (currentPublicMethod?.spying === true) {
43
42
  currentPublicMethod.target = method;
44
43
  } else {
45
44
  publicApi[methodName] = method;
@@ -69,7 +68,6 @@ function createPublicAPI(privateApiRef) {
69
68
  return publicApi;
70
69
  }
71
70
  export function useGridApiInitialization(inputApiRef, props) {
72
- var _inputApiRef$current;
73
71
  const publicApiRef = React.useRef();
74
72
  const privateApiRef = React.useRef();
75
73
  if (!privateApiRef.current) {
@@ -100,7 +98,7 @@ export function useGridApiInitialization(inputApiRef, props) {
100
98
  subscribeEvent,
101
99
  publishEvent
102
100
  }, 'public');
103
- if (inputApiRef && !((_inputApiRef$current = inputApiRef.current) != null && _inputApiRef$current.state)) {
101
+ if (inputApiRef && !inputApiRef.current?.state) {
104
102
  inputApiRef.current = publicApiRef.current;
105
103
  }
106
104
  React.useImperativeHandle(inputApiRef, () => publicApiRef.current, [publicApiRef]);
@@ -30,9 +30,8 @@ function copyToClipboard(data) {
30
30
  }
31
31
  }
32
32
  function hasNativeSelection(element) {
33
- var _window$getSelection;
34
33
  // When getSelection is called on an <iframe> that is not displayed Firefox will return null.
35
- if ((_window$getSelection = window.getSelection()) != null && _window$getSelection.toString()) {
34
+ if (window.getSelection()?.toString()) {
36
35
  return true;
37
36
  }
38
37
 
@@ -51,7 +50,7 @@ function hasNativeSelection(element) {
51
50
  */
52
51
  export const useGridClipboard = (apiRef, props) => {
53
52
  const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;
54
- const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp == null ? void 0 : ignoreValueFormatterProp.clipboardExport : ignoreValueFormatterProp) || false;
53
+ const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
55
54
  const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
56
55
  const handleCopy = React.useCallback(event => {
57
56
  if (!((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c' && !event.shiftKey && !event.altKey)) {
@@ -68,7 +67,8 @@ export const useGridClipboard = (apiRef, props) => {
68
67
  textToCopy = apiRef.current.getDataAsCsv({
69
68
  includeHeaders: false,
70
69
  // TODO: make it configurable
71
- delimiter: clipboardCopyCellDelimiter
70
+ delimiter: clipboardCopyCellDelimiter,
71
+ shouldAppendQuotes: false
72
72
  });
73
73
  } else {
74
74
  const focusedCell = gridFocusCellSelector(apiRef);
@@ -76,7 +76,8 @@ export const useGridClipboard = (apiRef, props) => {
76
76
  const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
77
77
  textToCopy = serializeCellValue(cellParams, {
78
78
  delimiterCharacter: clipboardCopyCellDelimiter,
79
- ignoreValueFormatter
79
+ ignoreValueFormatter,
80
+ shouldAppendQuotes: false
80
81
  });
81
82
  }
82
83
  }
@@ -4,19 +4,7 @@ import { createSelector, createSelectorMemoized } from '../../../utils/createSel
4
4
  * @ignore - do not document.
5
5
  */
6
6
  export const gridColumnGroupingSelector = state => state.columnGrouping;
7
- export const gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {
8
- var _columnGrouping$unwra;
9
- return (_columnGrouping$unwra = columnGrouping == null ? void 0 : columnGrouping.unwrappedGroupingModel) != null ? _columnGrouping$unwra : {};
10
- });
11
- export const gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {
12
- var _columnGrouping$looku;
13
- return (_columnGrouping$looku = columnGrouping == null ? void 0 : columnGrouping.lookup) != null ? _columnGrouping$looku : {};
14
- });
15
- export const gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {
16
- var _columnGrouping$heade;
17
- return (_columnGrouping$heade = columnGrouping == null ? void 0 : columnGrouping.headerStructure) != null ? _columnGrouping$heade : [];
18
- });
19
- export const gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, columnGrouping => {
20
- var _columnGrouping$maxDe;
21
- return (_columnGrouping$maxDe = columnGrouping == null ? void 0 : columnGrouping.maxDepth) != null ? _columnGrouping$maxDe : 0;
22
- });
7
+ export const gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.unwrappedGroupingModel ?? {});
8
+ export const gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.lookup ?? {});
9
+ export const gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => columnGrouping?.headerStructure ?? []);
10
+ export const gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, columnGrouping => columnGrouping?.maxDepth ?? 0);
@@ -35,26 +35,22 @@ export const unwrapGroupingColumnModel = columnGroupingModel => {
35
35
  return unwrappedSubTree;
36
36
  };
37
37
  export const getColumnGroupsHeaderStructure = (orderedColumns, unwrappedGroupingModel, pinnedFields) => {
38
- const getParents = field => {
39
- var _unwrappedGroupingMod;
40
- return (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
41
- };
38
+ const getParents = field => unwrappedGroupingModel[field] ?? [];
42
39
  const groupingHeaderStructure = [];
43
40
  const maxDepth = Math.max(...orderedColumns.map(field => getParents(field).length));
44
41
  const haveSameParents = (field1, field2, depth) => isDeepEqual(getParents(field1).slice(0, depth + 1), getParents(field2).slice(0, depth + 1));
45
42
  const haveDifferentContainers = (field1, field2) => {
46
- if (pinnedFields != null && pinnedFields.left && pinnedFields.left.includes(field1) && !pinnedFields.left.includes(field2)) {
43
+ if (pinnedFields?.left && pinnedFields.left.includes(field1) && !pinnedFields.left.includes(field2)) {
47
44
  return true;
48
45
  }
49
- if (pinnedFields != null && pinnedFields.right && !pinnedFields.right.includes(field1) && pinnedFields.right.includes(field2)) {
46
+ if (pinnedFields?.right && !pinnedFields.right.includes(field1) && pinnedFields.right.includes(field2)) {
50
47
  return true;
51
48
  }
52
49
  return false;
53
50
  };
54
51
  for (let depth = 0; depth < maxDepth; depth += 1) {
55
52
  const depthStructure = orderedColumns.reduce((structure, newField) => {
56
- var _getParents$depth;
57
- const groupId = (_getParents$depth = getParents(newField)[depth]) != null ? _getParents$depth : null;
53
+ const groupId = getParents(newField)[depth] ?? null;
58
54
  if (structure.length === 0) {
59
55
  return [{
60
56
  columnFields: [newField],