@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
@@ -29,6 +29,7 @@ var _gridColumnGroupsSelector = require("../hooks/features/columnGrouping/gridCo
29
29
  var _gridEditingSelectors = require("../hooks/features/editing/gridEditingSelectors");
30
30
  var _GridCell = require("./cell/GridCell");
31
31
  var _GridScrollbarFillerCell = require("./GridScrollbarFillerCell");
32
+ var _getPinnedCellOffset = require("../internals/utils/getPinnedCellOffset");
32
33
  var _jsxRuntime = require("react/jsx-runtime");
33
34
  const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
34
35
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -259,21 +260,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
259
260
  }
260
261
  const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;
261
262
  const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;
262
- let pinnedOffset;
263
- // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
264
- // eslint-disable-next-line default-case
265
- switch (pinnedPosition) {
266
- case _GridCell.PinnedPosition.LEFT:
267
- pinnedOffset = columnPositions[indexRelativeToAllColumns];
268
- break;
269
- case _GridCell.PinnedPosition.RIGHT:
270
- pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
271
- break;
272
- case _GridCell.PinnedPosition.NONE:
273
- case _GridCell.PinnedPosition.VIRTUAL:
274
- pinnedOffset = 0;
275
- break;
276
- }
263
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(_GridCell.gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);
277
264
  if (rowNode?.type === 'skeletonRow') {
278
265
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(slots.skeletonCell, {
279
266
  width: width,
@@ -365,9 +352,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
365
352
  width: emptyCellWidth
366
353
  }), rightCells.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
367
354
  role: "presentation",
368
- style: {
369
- flex: '1'
370
- }
355
+ className: _gridClasses.gridClasses.filler
371
356
  }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
372
357
  pinnedRight: pinnedColumns.right.length > 0
373
358
  })]
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.GridScrollArea = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _clsx = _interopRequireDefault(require("clsx"));
12
+ var _utils = require("@mui/utils");
13
+ var _system = require("@mui/system");
14
+ var _useGridRootProps = require("../hooks/utils/useGridRootProps");
15
+ var _constants = require("../constants");
16
+ var _useGridApiContext = require("../hooks/utils/useGridApiContext");
17
+ var _useGridApiEventHandler = require("../hooks/utils/useGridApiEventHandler");
18
+ var _useGridSelector = require("../hooks/utils/useGridSelector");
19
+ var _gridDimensionsSelectors = require("../hooks/features/dimensions/gridDimensionsSelectors");
20
+ var _densitySelector = require("../hooks/features/density/densitySelector");
21
+ var _gridColumnsSelector = require("../hooks/features/columns/gridColumnsSelector");
22
+ var _useTimeout = require("../hooks/utils/useTimeout");
23
+ var _gridColumnsUtils = require("../hooks/features/columns/gridColumnsUtils");
24
+ var _fastMemo = require("../utils/fastMemo");
25
+ var _jsxRuntime = require("react/jsx-runtime");
26
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
+ const CLIFF = 1;
29
+ const SLOP = 1.5;
30
+ const useUtilityClasses = ownerState => {
31
+ const {
32
+ scrollDirection,
33
+ classes
34
+ } = ownerState;
35
+ const slots = {
36
+ root: ['scrollArea', `scrollArea--${scrollDirection}`]
37
+ };
38
+ return (0, _utils.unstable_composeClasses)(slots, _constants.getDataGridUtilityClass, classes);
39
+ };
40
+ const GridScrollAreaRawRoot = (0, _system.styled)('div', {
41
+ name: 'MuiDataGrid',
42
+ slot: 'ScrollArea',
43
+ overridesResolver: (props, styles) => [{
44
+ [`&.${_constants.gridClasses['scrollArea--left']}`]: styles['scrollArea--left']
45
+ }, {
46
+ [`&.${_constants.gridClasses['scrollArea--right']}`]: styles['scrollArea--right']
47
+ }, styles.scrollArea]
48
+ })(() => ({
49
+ position: 'absolute',
50
+ top: 0,
51
+ zIndex: 101,
52
+ width: 20,
53
+ bottom: 0,
54
+ [`&.${_constants.gridClasses['scrollArea--left']}`]: {
55
+ left: 0
56
+ },
57
+ [`&.${_constants.gridClasses['scrollArea--right']}`]: {
58
+ right: 0
59
+ }
60
+ }));
61
+ function GridScrollAreaRaw(props) {
62
+ const {
63
+ scrollDirection
64
+ } = props;
65
+ const rootRef = React.useRef(null);
66
+ const apiRef = (0, _useGridApiContext.useGridApiContext)();
67
+ const timeout = (0, _useTimeout.useTimeout)();
68
+ const densityFactor = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityFactorSelector);
69
+ const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnsTotalWidthSelector);
70
+ const dimensions = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
71
+ const scrollPosition = React.useRef({
72
+ left: 0,
73
+ top: 0
74
+ });
75
+ const getCanScrollMore = () => {
76
+ if (scrollDirection === 'left') {
77
+ // Only render if the user has not reached yet the start of the list
78
+ return scrollPosition.current.left > 0;
79
+ }
80
+ if (scrollDirection === 'right') {
81
+ // Only render if the user has not reached yet the end of the list
82
+ const maxScrollLeft = columnsTotalWidth - dimensions.viewportInnerSize.width;
83
+ return scrollPosition.current.left < maxScrollLeft;
84
+ }
85
+ return false;
86
+ };
87
+ const [dragging, setDragging] = React.useState(false);
88
+ const [canScrollMore, setCanScrollMore] = React.useState(getCanScrollMore);
89
+ const rootProps = (0, _useGridRootProps.useGridRootProps)();
90
+ const ownerState = (0, _extends2.default)({}, rootProps, {
91
+ scrollDirection
92
+ });
93
+ const classes = useUtilityClasses(ownerState);
94
+ const totalHeaderHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, rootProps.columnHeaderHeight);
95
+ const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
96
+ const style = {
97
+ height: headerHeight,
98
+ top: totalHeaderHeight - headerHeight
99
+ };
100
+ if (scrollDirection === 'left') {
101
+ style.left = dimensions.leftPinnedWidth;
102
+ } else if (scrollDirection === 'right') {
103
+ style.right = dimensions.rightPinnedWidth + (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
104
+ }
105
+ const handleScrolling = newScrollPosition => {
106
+ scrollPosition.current = newScrollPosition;
107
+ setCanScrollMore(getCanScrollMore);
108
+ };
109
+ const handleDragOver = (0, _utils.unstable_useEventCallback)(event => {
110
+ let offset;
111
+
112
+ // Prevents showing the forbidden cursor
113
+ event.preventDefault();
114
+ if (scrollDirection === 'left') {
115
+ offset = event.clientX - rootRef.current.getBoundingClientRect().right;
116
+ } else if (scrollDirection === 'right') {
117
+ offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);
118
+ } else {
119
+ throw new Error('MUI X: Wrong drag direction');
120
+ }
121
+ offset = (offset - CLIFF) * SLOP + CLIFF;
122
+
123
+ // Avoid freeze and inertia.
124
+ timeout.start(0, () => {
125
+ apiRef.current.scroll({
126
+ left: scrollPosition.current.left + offset,
127
+ top: scrollPosition.current.top
128
+ });
129
+ });
130
+ });
131
+ const handleColumnHeaderDragStart = (0, _utils.unstable_useEventCallback)(() => {
132
+ setDragging(true);
133
+ });
134
+ const handleColumnHeaderDragEnd = (0, _utils.unstable_useEventCallback)(() => {
135
+ setDragging(false);
136
+ });
137
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'scrollPositionChange', handleScrolling);
138
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnHeaderDragStart);
139
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleColumnHeaderDragEnd);
140
+ if (!dragging || !canScrollMore) {
141
+ return null;
142
+ }
143
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridScrollAreaRawRoot, {
144
+ ref: rootRef,
145
+ className: (0, _clsx.default)(classes.root),
146
+ ownerState: ownerState,
147
+ onDragOver: handleDragOver,
148
+ style: style
149
+ });
150
+ }
151
+ process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
152
+ // ----------------------------- Warning --------------------------------
153
+ // | These PropTypes are generated from the TypeScript type definitions |
154
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
155
+ // ----------------------------------------------------------------------
156
+ scrollDirection: _propTypes.default.oneOf(['left', 'right']).isRequired
157
+ } : void 0;
158
+ const GridScrollArea = exports.GridScrollArea = (0, _fastMemo.fastMemo)(GridScrollAreaRaw);
@@ -137,7 +137,7 @@ function GridActionsCell(props) {
137
137
  }
138
138
  if (newIndex !== focusedButtonIndex) {
139
139
  event.preventDefault(); // Prevent scrolling
140
- event.stopPropagation(); // Don't stop propagation for other keys, e.g. ArrowUp
140
+ event.stopPropagation(); // Don't stop propagation for other keys, for example ArrowUp
141
141
  setFocusedButtonIndex(newIndex);
142
142
  }
143
143
  };
@@ -70,6 +70,10 @@ process.env.NODE_ENV !== "production" ? GridActionsCellItem.propTypes = {
70
70
  // | These PropTypes are generated from the TypeScript type definitions |
71
71
  // | To update them edit the TypeScript types and run "yarn proptypes" |
72
72
  // ----------------------------------------------------------------------
73
+ /**
74
+ * from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component
75
+ */
76
+ component: _propTypes.default.elementType,
73
77
  icon: _propTypes.default.element,
74
78
  label: _propTypes.default.string.isRequired,
75
79
  showInMenu: _propTypes.default.bool
@@ -15,7 +15,7 @@ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
15
15
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
16
16
  var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex"];
18
+ const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex", "hideDescendantCount"];
19
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
21
  const useUtilityClasses = ownerState => {
@@ -85,6 +85,7 @@ process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
85
85
  * If true, the cell is the active element.
86
86
  */
87
87
  hasFocus: _propTypes.default.bool.isRequired,
88
+ hideDescendantCount: _propTypes.default.bool,
88
89
  /**
89
90
  * The grid row id.
90
91
  */
@@ -113,7 +114,7 @@ process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
113
114
  } : void 0;
114
115
  const GridBooleanCell = exports.GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);
115
116
  const renderBooleanCell = params => {
116
- if ((0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
117
+ if (params.field !== '__row_group_by_columns_group__' && (0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
117
118
  return '';
118
119
  }
119
120
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridBooleanCell, (0, _extends2.default)({}, params));
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.PinnedPosition = exports.GridCell = void 0;
7
+ exports.gridPinnedColumnPositionLookup = exports.PinnedPosition = exports.GridCell = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
@@ -20,6 +20,8 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
20
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
21
21
  var _gridFocusStateSelector = require("../../hooks/features/focus/gridFocusStateSelector");
22
22
  var _useGridParamsApi = require("../../hooks/features/rows/useGridParamsApi");
23
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
24
+ var _gridColumnsInterfaces = require("../../hooks/features/columns/gridColumnsInterfaces");
23
25
  var _jsxRuntime = require("react/jsx-runtime");
24
26
  const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
25
27
  _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
@@ -32,6 +34,12 @@ let PinnedPosition = exports.PinnedPosition = /*#__PURE__*/function (PinnedPosit
32
34
  PinnedPosition[PinnedPosition["VIRTUAL"] = 3] = "VIRTUAL";
33
35
  return PinnedPosition;
34
36
  }({});
37
+ const gridPinnedColumnPositionLookup = exports.gridPinnedColumnPositionLookup = {
38
+ [PinnedPosition.LEFT]: _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT,
39
+ [PinnedPosition.RIGHT]: _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT,
40
+ [PinnedPosition.NONE]: undefined,
41
+ [PinnedPosition.VIRTUAL]: undefined
42
+ };
35
43
  const EMPTY_CELL_PARAMS = {
36
44
  id: -1,
37
45
  field: '__unset__',
@@ -162,9 +170,9 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
162
170
  const focusElementRef = React.useRef(null);
163
171
  // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
164
172
  const isSelectionMode = rootProps.cellSelection ?? false;
165
- const isSectionLastCell = sectionIndex === sectionLength - 1;
166
- const showLeftBorder = pinnedPosition === PinnedPosition.RIGHT && sectionIndex === 0;
167
- const showRightBorder = rootProps.showCellVerticalBorder && (pinnedPosition !== PinnedPosition.LEFT ? !isSectionLastCell : true) || pinnedPosition === PinnedPosition.LEFT && isSectionLastCell;
173
+ const position = gridPinnedColumnPositionLookup[pinnedPosition];
174
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(position, sectionIndex);
175
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
168
176
  const ownerState = {
169
177
  align,
170
178
  showLeftBorder,
@@ -32,6 +32,7 @@ const GridColumnHeadersRoot = (0, _system.styled)('div', {
32
32
  overridesResolver: (props, styles) => styles.columnHeaders
33
33
  })({
34
34
  display: 'flex',
35
+ flexDirection: 'column',
35
36
  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
36
37
  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
37
38
  });
@@ -15,6 +15,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
15
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
16
16
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
17
17
  var _domUtils = require("../../utils/domUtils");
18
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -23,11 +24,13 @@ const useUtilityClasses = ownerState => {
23
24
  classes,
24
25
  headerAlign,
25
26
  isDragging,
26
- showColumnBorder,
27
- groupId
27
+ showLeftBorder,
28
+ showRightBorder,
29
+ groupId,
30
+ pinnedPosition
28
31
  } = ownerState;
29
32
  const slots = {
30
- 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'],
33
+ 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'],
31
34
  draggableContainer: ['columnHeaderDraggableContainer'],
32
35
  titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
33
36
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -45,7 +48,11 @@ function GridColumnGroupHeader(props) {
45
48
  colIndex,
46
49
  hasFocus,
47
50
  tabIndex,
48
- isLastColumn
51
+ isLastColumn,
52
+ pinnedPosition,
53
+ style,
54
+ indexInSection,
55
+ sectionLength
49
56
  } = props;
50
57
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
51
58
  const headerCellRef = React.useRef(null);
@@ -72,10 +79,12 @@ function GridColumnGroupHeader(props) {
72
79
  if (groupId && render) {
73
80
  headerComponent = render(renderParams);
74
81
  }
75
- const showColumnBorder = rootProps.showColumnVerticalBorder;
82
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
83
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
76
84
  const ownerState = (0, _extends2.default)({}, props, {
77
85
  classes: rootProps.classes,
78
- showColumnBorder,
86
+ showLeftBorder,
87
+ showRightBorder,
79
88
  headerAlign,
80
89
  depth,
81
90
  isDragging: false
@@ -126,11 +135,12 @@ function GridColumnGroupHeader(props) {
126
135
  width: width,
127
136
  columnMenuIconButton: null,
128
137
  columnTitleIconButtons: null,
129
- resizable: false,
138
+ resizable: true,
130
139
  label: label,
131
140
  "aria-colspan": fields.length
132
141
  // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
133
142
  ,
134
- "data-fields": `|-${fields.join('-|-')}-|`
143
+ "data-fields": `|-${fields.join('-|-')}-|`,
144
+ style: style
135
145
  }, mouseEventsHandlers));
136
146
  }
@@ -18,6 +18,7 @@ var _gridClasses = require("../../constants/gridClasses");
18
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
19
19
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
20
20
  var _domUtils = require("../../utils/domUtils");
21
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -28,14 +29,16 @@ const useUtilityClasses = ownerState => {
28
29
  isDragging,
29
30
  sortDirection,
30
31
  showRightBorder,
31
- filterItemsCounter
32
+ showLeftBorder,
33
+ filterItemsCounter,
34
+ pinnedPosition
32
35
  } = ownerState;
33
36
  const isColumnSorted = sortDirection != null;
34
37
  const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;
35
38
  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
36
39
  const isColumnNumeric = colDef.type === 'number';
37
40
  const slots = {
38
- 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'],
41
+ 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'],
39
42
  draggableContainer: ['columnHeaderDraggableContainer'],
40
43
  titleContainer: ['columnHeaderTitleContainer'],
41
44
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -55,7 +58,11 @@ function GridColumnHeaderItem(props) {
55
58
  hasFocus,
56
59
  tabIndex,
57
60
  disableReorder,
58
- separatorSide
61
+ separatorSide,
62
+ style,
63
+ pinnedPosition,
64
+ indexInSection,
65
+ sectionLength
59
66
  } = props;
60
67
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
61
68
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
@@ -69,9 +76,12 @@ function GridColumnHeaderItem(props) {
69
76
  if (colDef.renderHeader) {
70
77
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
71
78
  }
79
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
80
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
72
81
  const ownerState = (0, _extends2.default)({}, props, {
73
82
  classes: rootProps.classes,
74
- showRightBorder: rootProps.showColumnVerticalBorder
83
+ showRightBorder,
84
+ showLeftBorder
75
85
  });
76
86
  const classes = useUtilityClasses(ownerState);
77
87
  const publish = React.useCallback(eventName => event => {
@@ -151,7 +161,7 @@ function GridColumnHeaderItem(props) {
151
161
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
152
162
  const elementToFocus = focusableElement || headerCellRef.current;
153
163
  elementToFocus?.focus();
154
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
164
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
155
165
  }
156
166
  }, [apiRef, hasFocus]);
157
167
  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
@@ -183,7 +193,8 @@ function GridColumnHeaderItem(props) {
183
193
  "data-field": colDef.field,
184
194
  columnMenu: columnMenu,
185
195
  draggableContainerProps: draggableEventHandlers,
186
- columnHeaderSeparatorProps: columnHeaderSeparatorProps
196
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps,
197
+ style: style
187
198
  }, mouseEventsHandlers));
188
199
  }
189
200
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -198,11 +209,15 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
198
209
  filterItemsCounter: _propTypes.default.number,
199
210
  hasFocus: _propTypes.default.bool,
200
211
  headerHeight: _propTypes.default.number.isRequired,
212
+ indexInSection: _propTypes.default.number.isRequired,
201
213
  isDragging: _propTypes.default.bool.isRequired,
202
214
  isResizing: _propTypes.default.bool.isRequired,
215
+ pinnedPosition: _propTypes.default.oneOf(['left', 'right']),
216
+ sectionLength: _propTypes.default.number.isRequired,
203
217
  separatorSide: _propTypes.default.oneOf(['left', 'right']),
204
218
  sortDirection: _propTypes.default.oneOf(['asc', 'desc']),
205
219
  sortIndex: _propTypes.default.number,
220
+ style: _propTypes.default.object,
206
221
  tabIndex: _propTypes.default.oneOf([-1, 0]).isRequired
207
222
  } : void 0;
208
223
  const Memoized = exports.GridColumnHeaderItem = (0, _fastMemo.fastMemo)(GridColumnHeaderItem);
@@ -15,7 +15,7 @@ var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
15
15
  var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
16
16
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps"];
18
+ 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"];
19
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
21
  const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {
@@ -40,7 +40,8 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
40
40
  label,
41
41
  resizable,
42
42
  draggableContainerProps,
43
- columnHeaderSeparatorProps
43
+ columnHeaderSeparatorProps,
44
+ style
44
45
  } = props,
45
46
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
46
47
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
@@ -63,18 +64,18 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
63
64
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
64
65
  const elementToFocus = focusableElement || headerCellRef.current;
65
66
  elementToFocus?.focus();
66
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
67
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
67
68
  }
68
69
  }, [apiRef, hasFocus]);
69
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
70
71
  ref: handleRef,
71
72
  className: (0, _clsx.default)(classes.root, headerClassName),
72
- style: {
73
+ style: (0, _extends2.default)({}, style, {
73
74
  height,
74
75
  width,
75
76
  minWidth: width,
76
77
  maxWidth: width
77
- },
78
+ }),
78
79
  role: "columnheader",
79
80
  tabIndex: tabIndex,
80
81
  "aria-colindex": colIndex + 1,
@@ -47,11 +47,11 @@ const GridRoot = exports.GridRoot = /*#__PURE__*/React.forwardRef(function GridR
47
47
  } = props,
48
48
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
49
49
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
50
- const densityValue = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityValueSelector);
50
+ const density = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensitySelector);
51
51
  const rootElementRef = apiRef.current.rootElementRef;
52
52
  const handleRef = (0, _utils.unstable_useForkRef)(rootElementRef, ref);
53
53
  const ownerState = (0, _extends2.default)({}, rootProps, {
54
- density: densityValue
54
+ density
55
55
  });
56
56
  const classes = useUtilityClasses(ownerState);
57
57
 
@@ -314,14 +314,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
314
314
  borderBottomStyle: 'solid',
315
315
  boxSizing: 'border-box'
316
316
  },
317
- [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']} .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
318
- borderBottom: `none`
319
- },
320
- [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']}`]: {
321
- borderBottomWidth: '1px',
322
- borderBottomStyle: 'solid',
323
- boxSizing: 'border-box'
324
- },
325
317
  [`& .${_gridClasses.gridClasses.sortIcon}, & .${_gridClasses.gridClasses.filterIcon}`]: {
326
318
  fontSize: 'inherit'
327
319
  },
@@ -345,6 +337,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
345
337
  [`& .${_gridClasses.gridClasses['columnHeader--moving']}`]: {
346
338
  backgroundColor: (t.vars || t).palette.action.hover
347
339
  },
340
+ [`& .${_gridClasses.gridClasses['columnHeader--pinnedLeft']}, & .${_gridClasses.gridClasses['columnHeader--pinnedRight']}`]: {
341
+ position: 'sticky',
342
+ zIndex: 4,
343
+ // Should be above the column separator
344
+ background: 'var(--DataGrid-pinnedBackground)'
345
+ },
348
346
  [`& .${_gridClasses.gridClasses.columnSeparator}`]: {
349
347
  visibility: 'hidden',
350
348
  position: 'absolute',
@@ -435,9 +433,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
435
433
  [`& .${_gridClasses.gridClasses['container--top']}, & .${_gridClasses.gridClasses['container--bottom']}`]: {
436
434
  '[role=row]': {
437
435
  background: 'var(--DataGrid-containerBackground)'
438
- },
439
- [`.${_gridClasses.gridClasses.pinnedColumnHeaders} [role=row]`]: {
440
- background: 'var(--DataGrid-pinnedBackground)'
441
436
  }
442
437
  },
443
438
  /* Cell styles */
@@ -527,20 +522,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
527
522
  [`.${_gridClasses.gridClasses.withBorderColor}`]: {
528
523
  borderColor
529
524
  },
530
- [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: {
525
+ [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}, & .${_gridClasses.gridClasses['columnHeader--withLeftBorder']}`]: {
531
526
  borderLeftColor: 'var(--DataGrid-rowBorderColor)',
532
527
  borderLeftWidth: '1px',
533
528
  borderLeftStyle: 'solid'
534
529
  },
535
- [`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: {
530
+ [`& .${_gridClasses.gridClasses['cell--withRightBorder']}, & .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
536
531
  borderRightColor: 'var(--DataGrid-rowBorderColor)',
537
532
  borderRightWidth: '1px',
538
533
  borderRightStyle: 'solid'
539
534
  },
540
- [`& .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
541
- borderRightWidth: '1px',
542
- borderRightStyle: 'solid'
543
- },
544
535
  [`& .${_gridClasses.gridClasses['cell--flex']}`]: {
545
536
  display: 'flex',
546
537
  alignItems: 'center',
@@ -641,12 +632,13 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
641
632
  borderTop: '1px solid var(--DataGrid-rowBorderColor)'
642
633
  },
643
634
  [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: {
644
- backgroundColor: 'var(--DataGrid-pinnedBackground)'
645
- },
646
- [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}:not(.${_gridClasses.gridClasses['scrollbarFiller--header']})`]: {
635
+ backgroundColor: 'var(--DataGrid-pinnedBackground)',
647
636
  position: 'sticky',
648
637
  right: 0
649
638
  }
639
+ },
640
+ [`& .${_gridClasses.gridClasses.filler}`]: {
641
+ flex: 1
650
642
  }
651
643
  });
652
644
  return gridStyle;
@@ -107,7 +107,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputBoolean.propTypes = {
107
107
  focusElementRef: _utils.refType,
108
108
  /**
109
109
  * It is `true` if the filter either has a value or an operator with no value
110
- * required is selected (e.g. `isEmpty`)
110
+ * required is selected (for example `isEmpty`)
111
111
  */
112
112
  isFilterActive: _propTypes.default.bool,
113
113
  item: _propTypes.default.shape({
@@ -108,7 +108,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputDate.propTypes = {
108
108
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
109
109
  /**
110
110
  * It is `true` if the filter either has a value or an operator with no value
111
- * required is selected (e.g. `isEmpty`)
111
+ * required is selected (for example `isEmpty`)
112
112
  */
113
113
  isFilterActive: _propTypes.default.bool,
114
114
  item: _propTypes.default.shape({
@@ -142,7 +142,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
142
142
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
143
143
  /**
144
144
  * It is `true` if the filter either has a value or an operator with no value
145
- * required is selected (e.g. `isEmpty`)
145
+ * required is selected (for example `isEmpty`)
146
146
  */
147
147
  isFilterActive: _propTypes.default.bool,
148
148
  item: _propTypes.default.shape({
@@ -95,7 +95,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
95
95
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
96
96
  /**
97
97
  * It is `true` if the filter either has a value or an operator with no value
98
- * required is selected (e.g. `isEmpty`)
98
+ * required is selected (for example `isEmpty`)
99
99
  */
100
100
  isFilterActive: _propTypes.default.bool,
101
101
  item: _propTypes.default.shape({