@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
@@ -8,17 +8,20 @@ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
9
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
10
10
  import { isEventTargetInPortal } from '../../utils/domUtils';
11
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils';
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const useUtilityClasses = ownerState => {
13
14
  const {
14
15
  classes,
15
16
  headerAlign,
16
17
  isDragging,
17
- showColumnBorder,
18
- groupId
18
+ showLeftBorder,
19
+ showRightBorder,
20
+ groupId,
21
+ pinnedPosition
19
22
  } = ownerState;
20
23
  const slots = {
21
- root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showColumnBorder && 'columnHeader--showColumnBorder', showColumnBorder && 'columnHeader--withRightBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup'],
24
+ root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
22
25
  draggableContainer: ['columnHeaderDraggableContainer'],
23
26
  titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
24
27
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -36,7 +39,11 @@ function GridColumnGroupHeader(props) {
36
39
  colIndex,
37
40
  hasFocus,
38
41
  tabIndex,
39
- isLastColumn
42
+ isLastColumn,
43
+ pinnedPosition,
44
+ style,
45
+ indexInSection,
46
+ sectionLength
40
47
  } = props;
41
48
  const rootProps = useGridRootProps();
42
49
  const headerCellRef = React.useRef(null);
@@ -63,10 +70,12 @@ function GridColumnGroupHeader(props) {
63
70
  if (groupId && render) {
64
71
  headerComponent = render(renderParams);
65
72
  }
66
- const showColumnBorder = rootProps.showColumnVerticalBorder;
73
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
74
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
67
75
  const ownerState = _extends({}, props, {
68
76
  classes: rootProps.classes,
69
- showColumnBorder,
77
+ showLeftBorder,
78
+ showRightBorder,
70
79
  headerAlign,
71
80
  depth,
72
81
  isDragging: false
@@ -117,12 +126,13 @@ function GridColumnGroupHeader(props) {
117
126
  width: width,
118
127
  columnMenuIconButton: null,
119
128
  columnTitleIconButtons: null,
120
- resizable: false,
129
+ resizable: true,
121
130
  label: label,
122
131
  "aria-colspan": fields.length
123
132
  // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
124
133
  ,
125
- "data-fields": `|-${fields.join('-|-')}-|`
134
+ "data-fields": `|-${fields.join('-|-')}-|`,
135
+ style: style
126
136
  }, mouseEventsHandlers));
127
137
  }
128
138
  export { GridColumnGroupHeader };
@@ -11,6 +11,7 @@ import { getDataGridUtilityClass } from '../../constants/gridClasses';
11
11
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
12
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
13
13
  import { isEventTargetInPortal } from '../../utils/domUtils';
14
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils';
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const useUtilityClasses = ownerState => {
@@ -20,14 +21,16 @@ const useUtilityClasses = ownerState => {
20
21
  isDragging,
21
22
  sortDirection,
22
23
  showRightBorder,
23
- filterItemsCounter
24
+ showLeftBorder,
25
+ filterItemsCounter,
26
+ pinnedPosition
24
27
  } = ownerState;
25
28
  const isColumnSorted = sortDirection != null;
26
29
  const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;
27
30
  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
28
31
  const isColumnNumeric = colDef.type === 'number';
29
32
  const slots = {
30
- root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder'],
33
+ root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
31
34
  draggableContainer: ['columnHeaderDraggableContainer'],
32
35
  titleContainer: ['columnHeaderTitleContainer'],
33
36
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -47,7 +50,11 @@ function GridColumnHeaderItem(props) {
47
50
  hasFocus,
48
51
  tabIndex,
49
52
  disableReorder,
50
- separatorSide
53
+ separatorSide,
54
+ style,
55
+ pinnedPosition,
56
+ indexInSection,
57
+ sectionLength
51
58
  } = props;
52
59
  const apiRef = useGridPrivateApiContext();
53
60
  const rootProps = useGridRootProps();
@@ -61,9 +68,12 @@ function GridColumnHeaderItem(props) {
61
68
  if (colDef.renderHeader) {
62
69
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
63
70
  }
71
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
72
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
64
73
  const ownerState = _extends({}, props, {
65
74
  classes: rootProps.classes,
66
- showRightBorder: rootProps.showColumnVerticalBorder
75
+ showRightBorder,
76
+ showLeftBorder
67
77
  });
68
78
  const classes = useUtilityClasses(ownerState);
69
79
  const publish = React.useCallback(eventName => event => {
@@ -143,7 +153,7 @@ function GridColumnHeaderItem(props) {
143
153
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
144
154
  const elementToFocus = focusableElement || headerCellRef.current;
145
155
  elementToFocus?.focus();
146
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
156
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
147
157
  }
148
158
  }, [apiRef, hasFocus]);
149
159
  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
@@ -175,7 +185,8 @@ function GridColumnHeaderItem(props) {
175
185
  "data-field": colDef.field,
176
186
  columnMenu: columnMenu,
177
187
  draggableContainerProps: draggableEventHandlers,
178
- columnHeaderSeparatorProps: columnHeaderSeparatorProps
188
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps,
189
+ style: style
179
190
  }, mouseEventsHandlers));
180
191
  }
181
192
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -190,11 +201,15 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
190
201
  filterItemsCounter: PropTypes.number,
191
202
  hasFocus: PropTypes.bool,
192
203
  headerHeight: PropTypes.number.isRequired,
204
+ indexInSection: PropTypes.number.isRequired,
193
205
  isDragging: PropTypes.bool.isRequired,
194
206
  isResizing: PropTypes.bool.isRequired,
207
+ pinnedPosition: PropTypes.oneOf(['left', 'right']),
208
+ sectionLength: PropTypes.number.isRequired,
195
209
  separatorSide: PropTypes.oneOf(['left', 'right']),
196
210
  sortDirection: PropTypes.oneOf(['asc', 'desc']),
197
211
  sortIndex: PropTypes.number,
212
+ style: PropTypes.object,
198
213
  tabIndex: PropTypes.oneOf([-1, 0]).isRequired
199
214
  } : void 0;
200
215
  const Memoized = fastMemo(GridColumnHeaderItem);
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps"];
3
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { unstable_useForkRef as useForkRef } from '@mui/utils';
@@ -32,7 +32,8 @@ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridG
32
32
  label,
33
33
  resizable,
34
34
  draggableContainerProps,
35
- columnHeaderSeparatorProps
35
+ columnHeaderSeparatorProps,
36
+ style
36
37
  } = props,
37
38
  other = _objectWithoutPropertiesLoose(props, _excluded);
38
39
  const apiRef = useGridPrivateApiContext();
@@ -55,18 +56,18 @@ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridG
55
56
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
56
57
  const elementToFocus = focusableElement || headerCellRef.current;
57
58
  elementToFocus?.focus();
58
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
59
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
59
60
  }
60
61
  }, [apiRef, hasFocus]);
61
62
  return /*#__PURE__*/_jsxs("div", _extends({
62
63
  ref: handleRef,
63
64
  className: clsx(classes.root, headerClassName),
64
- style: {
65
+ style: _extends({}, style, {
65
66
  height,
66
67
  width,
67
68
  minWidth: width,
68
69
  maxWidth: width
69
- },
70
+ }),
70
71
  role: "columnheader",
71
72
  tabIndex: tabIndex,
72
73
  "aria-colindex": colIndex + 1,
@@ -11,7 +11,7 @@ import { useGridSelector } from '../../hooks/utils/useGridSelector';
11
11
  import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
12
12
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
13
13
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
14
- import { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';
14
+ import { gridDensitySelector } from '../../hooks/features/density/densitySelector';
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
17
  const useUtilityClasses = ownerState => {
@@ -39,11 +39,11 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
39
39
  } = props,
40
40
  other = _objectWithoutPropertiesLoose(props, _excluded);
41
41
  const apiRef = useGridPrivateApiContext();
42
- const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
42
+ const density = useGridSelector(apiRef, gridDensitySelector);
43
43
  const rootElementRef = apiRef.current.rootElementRef;
44
44
  const handleRef = useForkRef(rootElementRef, ref);
45
45
  const ownerState = _extends({}, rootProps, {
46
- density: densityValue
46
+ density
47
47
  });
48
48
  const classes = useUtilityClasses(ownerState);
49
49
 
@@ -307,14 +307,6 @@ export const GridRootStyles = styled('div', {
307
307
  borderBottomStyle: 'solid',
308
308
  boxSizing: 'border-box'
309
309
  },
310
- [`& .${c['columnHeader--filledGroup']}.${c['columnHeader--showColumnBorder']} .${c.columnHeaderTitleContainer}`]: {
311
- borderBottom: `none`
312
- },
313
- [`& .${c['columnHeader--filledGroup']}.${c['columnHeader--showColumnBorder']}`]: {
314
- borderBottomWidth: '1px',
315
- borderBottomStyle: 'solid',
316
- boxSizing: 'border-box'
317
- },
318
310
  [`& .${c.sortIcon}, & .${c.filterIcon}`]: {
319
311
  fontSize: 'inherit'
320
312
  },
@@ -338,6 +330,12 @@ export const GridRootStyles = styled('div', {
338
330
  [`& .${c['columnHeader--moving']}`]: {
339
331
  backgroundColor: (t.vars || t).palette.action.hover
340
332
  },
333
+ [`& .${c['columnHeader--pinnedLeft']}, & .${c['columnHeader--pinnedRight']}`]: {
334
+ position: 'sticky',
335
+ zIndex: 4,
336
+ // Should be above the column separator
337
+ background: 'var(--DataGrid-pinnedBackground)'
338
+ },
341
339
  [`& .${c.columnSeparator}`]: {
342
340
  visibility: 'hidden',
343
341
  position: 'absolute',
@@ -428,9 +426,6 @@ export const GridRootStyles = styled('div', {
428
426
  [`& .${c['container--top']}, & .${c['container--bottom']}`]: {
429
427
  '[role=row]': {
430
428
  background: 'var(--DataGrid-containerBackground)'
431
- },
432
- [`.${c.pinnedColumnHeaders} [role=row]`]: {
433
- background: 'var(--DataGrid-pinnedBackground)'
434
429
  }
435
430
  },
436
431
  /* Cell styles */
@@ -520,20 +515,16 @@ export const GridRootStyles = styled('div', {
520
515
  [`.${c.withBorderColor}`]: {
521
516
  borderColor
522
517
  },
523
- [`& .${c['cell--withLeftBorder']}`]: {
518
+ [`& .${c['cell--withLeftBorder']}, & .${c['columnHeader--withLeftBorder']}`]: {
524
519
  borderLeftColor: 'var(--DataGrid-rowBorderColor)',
525
520
  borderLeftWidth: '1px',
526
521
  borderLeftStyle: 'solid'
527
522
  },
528
- [`& .${c['cell--withRightBorder']}`]: {
523
+ [`& .${c['cell--withRightBorder']}, & .${c['columnHeader--withRightBorder']}`]: {
529
524
  borderRightColor: 'var(--DataGrid-rowBorderColor)',
530
525
  borderRightWidth: '1px',
531
526
  borderRightStyle: 'solid'
532
527
  },
533
- [`& .${c['columnHeader--withRightBorder']}`]: {
534
- borderRightWidth: '1px',
535
- borderRightStyle: 'solid'
536
- },
537
528
  [`& .${c['cell--flex']}`]: {
538
529
  display: 'flex',
539
530
  alignItems: 'center',
@@ -634,12 +625,13 @@ export const GridRootStyles = styled('div', {
634
625
  borderTop: '1px solid var(--DataGrid-rowBorderColor)'
635
626
  },
636
627
  [`&.${c['scrollbarFiller--pinnedRight']}`]: {
637
- backgroundColor: 'var(--DataGrid-pinnedBackground)'
638
- },
639
- [`&.${c['scrollbarFiller--pinnedRight']}:not(.${c['scrollbarFiller--header']})`]: {
628
+ backgroundColor: 'var(--DataGrid-pinnedBackground)',
640
629
  position: 'sticky',
641
630
  right: 0
642
631
  }
632
+ },
633
+ [`& .${c.filler}`]: {
634
+ flex: 1
643
635
  }
644
636
  });
645
637
  return gridStyle;
@@ -99,7 +99,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputBoolean.propTypes = {
99
99
  focusElementRef: refType,
100
100
  /**
101
101
  * It is `true` if the filter either has a value or an operator with no value
102
- * required is selected (e.g. `isEmpty`)
102
+ * required is selected (for example `isEmpty`)
103
103
  */
104
104
  isFilterActive: PropTypes.bool,
105
105
  item: PropTypes.shape({
@@ -99,7 +99,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputDate.propTypes = {
99
99
  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),
100
100
  /**
101
101
  * It is `true` if the filter either has a value or an operator with no value
102
- * required is selected (e.g. `isEmpty`)
102
+ * required is selected (for example `isEmpty`)
103
103
  */
104
104
  isFilterActive: PropTypes.bool,
105
105
  item: PropTypes.shape({
@@ -134,7 +134,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
134
134
  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),
135
135
  /**
136
136
  * It is `true` if the filter either has a value or an operator with no value
137
- * required is selected (e.g. `isEmpty`)
137
+ * required is selected (for example `isEmpty`)
138
138
  */
139
139
  isFilterActive: PropTypes.bool,
140
140
  item: PropTypes.shape({
@@ -86,7 +86,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
86
86
  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),
87
87
  /**
88
88
  * It is `true` if the filter either has a value or an operator with no value
89
- * required is selected (e.g. `isEmpty`)
89
+ * required is selected (for example `isEmpty`)
90
90
  */
91
91
  isFilterActive: PropTypes.bool,
92
92
  item: PropTypes.shape({
@@ -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';
@@ -22,7 +22,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
22
22
  const tooltipProps = slotProps.tooltip || {};
23
23
  const apiRef = useGridApiContext();
24
24
  const rootProps = useGridRootProps();
25
- const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
25
+ const density = useGridSelector(apiRef, gridDensitySelector);
26
26
  const densityButtonId = useId();
27
27
  const densityMenuId = useId();
28
28
  const [open, setOpen] = React.useState(false);
@@ -42,7 +42,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
42
42
  value: 'comfortable'
43
43
  }];
44
44
  const startIcon = React.useMemo(() => {
45
- switch (densityValue) {
45
+ switch (density) {
46
46
  case 'compact':
47
47
  return /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {});
48
48
  case 'comfortable':
@@ -50,7 +50,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
50
50
  default:
51
51
  return /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {});
52
52
  }
53
- }, [densityValue, rootProps]);
53
+ }, [density, rootProps]);
54
54
  const handleDensitySelectorOpen = event => {
55
55
  setOpen(prevOpen => !prevOpen);
56
56
  buttonProps.onClick?.(event);
@@ -77,7 +77,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
77
77
  }
78
78
  const densityElements = densityOptions.map((option, index) => /*#__PURE__*/_jsxs(MenuItem, {
79
79
  onClick: () => handleDensityUpdate(option.value),
80
- selected: option.value === densityValue,
80
+ selected: option.value === density,
81
81
  children: [/*#__PURE__*/_jsx(ListItemIcon, {
82
82
  children: option.icon
83
83
  }), option.label]
@@ -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,
@@ -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
  });
@@ -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']);
@@ -67,7 +67,8 @@ export const useGridClipboard = (apiRef, props) => {
67
67
  textToCopy = apiRef.current.getDataAsCsv({
68
68
  includeHeaders: false,
69
69
  // TODO: make it configurable
70
- delimiter: clipboardCopyCellDelimiter
70
+ delimiter: clipboardCopyCellDelimiter,
71
+ shouldAppendQuotes: false
71
72
  });
72
73
  } else {
73
74
  const focusedCell = gridFocusCellSelector(apiRef);
@@ -75,7 +76,8 @@ export const useGridClipboard = (apiRef, props) => {
75
76
  const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
76
77
  textToCopy = serializeCellValue(cellParams, {
77
78
  delimiterCharacter: clipboardCopyCellDelimiter,
78
- ignoreValueFormatter
79
+ ignoreValueFormatter,
80
+ shouldAppendQuotes: false
79
81
  });
80
82
  }
81
83
  }