@mui/x-data-grid 7.23.5 → 7.24.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 (249) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/DataGrid/DataGrid.js +4 -5
  3. package/DataGrid/useDataGridComponent.d.ts +1 -1
  4. package/DataGrid/useDataGridComponent.js +1 -1
  5. package/components/GridHeaders.js +2 -2
  6. package/components/GridRow.d.ts +5 -9
  7. package/components/GridRow.js +28 -105
  8. package/components/GridSkeletonLoadingOverlay.js +18 -18
  9. package/components/cell/GridActionsCellItem.d.ts +3 -3
  10. package/components/cell/GridCell.d.ts +9 -16
  11. package/components/cell/GridCell.js +17 -35
  12. package/components/cell/GridEditDateCell.js +1 -1
  13. package/components/cell/GridEditInputCell.js +1 -1
  14. package/components/cell/GridEditSingleSelectCell.js +2 -2
  15. package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
  16. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -5
  17. package/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  18. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -5
  19. package/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  20. package/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
  21. package/components/columnSelection/GridHeaderCheckbox.js +6 -2
  22. package/components/containers/GridRoot.d.ts +2 -2
  23. package/components/containers/GridRoot.js +14 -6
  24. package/components/containers/GridRootStyles.js +1 -0
  25. package/components/panel/GridPanel.d.ts +1 -1
  26. package/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  27. package/components/panel/filterPanel/GridFilterInputValueProps.d.ts +1 -1
  28. package/components/virtualization/GridVirtualScrollbar.js +11 -12
  29. package/components/virtualization/GridVirtualScroller.js +4 -4
  30. package/context/GridContextProvider.d.ts +1 -1
  31. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +1 -1
  32. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +1 -1
  33. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  34. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  35. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  36. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  37. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  38. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +1 -1
  39. package/hooks/core/useGridApiInitialization.d.ts +1 -1
  40. package/hooks/core/useGridApiInitialization.js +2 -2
  41. package/hooks/core/useGridInitialization.d.ts +1 -1
  42. package/hooks/core/useGridIsRtl.d.ts +1 -1
  43. package/hooks/core/useGridLocaleText.d.ts +1 -1
  44. package/hooks/core/useGridLoggerFactory.d.ts +1 -1
  45. package/hooks/core/useGridRefs.d.ts +1 -1
  46. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  47. package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
  48. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  49. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +5 -7
  50. package/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
  51. package/hooks/features/columnMenu/useGridColumnMenu.d.ts +1 -1
  52. package/hooks/features/columnResize/useGridColumnResize.d.ts +1 -1
  53. package/hooks/features/columnResize/useGridColumnResize.js +8 -6
  54. package/hooks/features/columns/gridColumnsUtils.d.ts +3 -3
  55. package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
  56. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  57. package/hooks/features/density/useGridDensity.d.ts +1 -1
  58. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  59. package/hooks/features/dimensions/useGridDimensions.js +1 -1
  60. package/hooks/features/editing/useGridCellEditing.d.ts +1 -1
  61. package/hooks/features/editing/useGridEditing.d.ts +1 -1
  62. package/hooks/features/editing/useGridRowEditing.d.ts +1 -1
  63. package/hooks/features/editing/useGridRowEditing.js +1 -1
  64. package/hooks/features/events/useGridEvents.d.ts +1 -1
  65. package/hooks/features/export/serializers/csvSerializer.d.ts +1 -1
  66. package/hooks/features/export/useGridCsvExport.d.ts +1 -1
  67. package/hooks/features/export/useGridPrintExport.d.ts +1 -1
  68. package/hooks/features/export/useGridPrintExport.js +1 -1
  69. package/hooks/features/export/utils.d.ts +1 -1
  70. package/hooks/features/filter/gridFilterSelector.js +6 -1
  71. package/hooks/features/filter/gridFilterUtils.d.ts +6 -6
  72. package/hooks/features/filter/gridFilterUtils.js +3 -3
  73. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  74. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  75. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +1 -1
  76. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  77. package/hooks/features/keyboardNavigation/utils.d.ts +2 -2
  78. package/hooks/features/listView/useGridListView.d.ts +1 -1
  79. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +3 -0
  80. package/hooks/features/pagination/gridPaginationSelector.d.ts +20 -1
  81. package/hooks/features/pagination/gridPaginationSelector.js +39 -1
  82. package/hooks/features/pagination/useGridPagination.d.ts +2 -2
  83. package/hooks/features/pagination/useGridPagination.js +5 -3
  84. package/hooks/features/pagination/useGridPaginationMeta.d.ts +1 -1
  85. package/hooks/features/pagination/useGridPaginationModel.d.ts +1 -1
  86. package/hooks/features/pagination/useGridPaginationModel.js +23 -1
  87. package/hooks/features/pagination/useGridRowCount.d.ts +1 -1
  88. package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
  89. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  90. package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
  91. package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.d.ts +1 -1
  92. package/hooks/features/rowSelection/utils.d.ts +2 -2
  93. package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
  94. package/hooks/features/rows/gridRowsSelector.js +1 -1
  95. package/hooks/features/rows/gridRowsUtils.d.ts +3 -3
  96. package/hooks/features/rows/useGridParamsApi.d.ts +1 -1
  97. package/hooks/features/rows/useGridRowSpanning.d.ts +1 -1
  98. package/hooks/features/rows/useGridRows.d.ts +1 -1
  99. package/hooks/features/rows/useGridRows.js +2 -2
  100. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  101. package/hooks/features/rows/useGridRowsPreProcessors.d.ts +1 -1
  102. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  103. package/hooks/features/sorting/gridSortingUtils.d.ts +2 -2
  104. package/hooks/features/sorting/gridSortingUtils.js +2 -2
  105. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  106. package/hooks/features/statePersistence/useGridStatePersistence.d.ts +1 -1
  107. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +6 -0
  108. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
  109. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +5 -4
  110. package/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  111. package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
  112. package/hooks/utils/useGridApiContext.d.ts +1 -1
  113. package/hooks/utils/useGridApiEventHandler.d.ts +3 -3
  114. package/hooks/utils/useGridApiEventHandler.js +1 -1
  115. package/hooks/utils/useGridApiMethod.d.ts +1 -1
  116. package/hooks/utils/useGridApiRef.d.ts +1 -1
  117. package/hooks/utils/useGridInitializeState.d.ts +2 -2
  118. package/hooks/utils/useGridLogger.d.ts +1 -1
  119. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  120. package/hooks/utils/useGridPrivateApiContext.d.ts +1 -1
  121. package/hooks/utils/useGridSelector.d.ts +2 -2
  122. package/hooks/utils/useGridVisibleRows.d.ts +7 -5
  123. package/hooks/utils/useGridVisibleRows.js +5 -28
  124. package/index.js +1 -1
  125. package/internals/constants.d.ts +6 -0
  126. package/internals/constants.js +8 -1
  127. package/internals/index.d.ts +1 -0
  128. package/internals/index.js +1 -0
  129. package/internals/utils/attachPinnedStyle.d.ts +2 -0
  130. package/internals/utils/attachPinnedStyle.js +9 -0
  131. package/internals/utils/getPinnedCellOffset.d.ts +3 -3
  132. package/internals/utils/getPinnedCellOffset.js +6 -7
  133. package/internals/utils/index.d.ts +1 -0
  134. package/internals/utils/index.js +2 -1
  135. package/locales/urPK.js +9 -10
  136. package/models/api/gridCoreApi.d.ts +7 -7
  137. package/models/api/gridDensityApi.d.ts +1 -1
  138. package/models/colDef/gridColDef.d.ts +8 -8
  139. package/models/events/gridEventLookup.d.ts +6 -1
  140. package/models/gridExport.d.ts +1 -1
  141. package/models/gridFilterOperator.d.ts +1 -1
  142. package/models/gridStateCommunity.d.ts +4 -0
  143. package/models/props/DataGridProps.d.ts +1 -1
  144. package/modern/DataGrid/DataGrid.js +4 -5
  145. package/modern/DataGrid/useDataGridComponent.js +1 -1
  146. package/modern/components/GridHeaders.js +2 -2
  147. package/modern/components/GridRow.js +28 -105
  148. package/modern/components/GridSkeletonLoadingOverlay.js +18 -18
  149. package/modern/components/cell/GridCell.js +17 -35
  150. package/modern/components/cell/GridEditDateCell.js +1 -1
  151. package/modern/components/cell/GridEditInputCell.js +1 -1
  152. package/modern/components/cell/GridEditSingleSelectCell.js +2 -2
  153. package/modern/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  154. package/modern/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  155. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
  156. package/modern/components/columnSelection/GridHeaderCheckbox.js +6 -2
  157. package/modern/components/containers/GridRoot.js +14 -6
  158. package/modern/components/containers/GridRootStyles.js +1 -0
  159. package/modern/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  160. package/modern/components/virtualization/GridVirtualScrollbar.js +11 -12
  161. package/modern/components/virtualization/GridVirtualScroller.js +4 -4
  162. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  163. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  164. package/modern/hooks/core/useGridApiInitialization.js +2 -2
  165. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
  166. package/modern/hooks/features/columnResize/useGridColumnResize.js +8 -6
  167. package/modern/hooks/features/dimensions/useGridDimensions.js +1 -1
  168. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  169. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  170. package/modern/hooks/features/filter/gridFilterSelector.js +6 -1
  171. package/modern/hooks/features/filter/gridFilterUtils.js +3 -3
  172. package/modern/hooks/features/pagination/gridPaginationSelector.js +39 -1
  173. package/modern/hooks/features/pagination/useGridPagination.js +5 -3
  174. package/modern/hooks/features/pagination/useGridPaginationModel.js +23 -1
  175. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  176. package/modern/hooks/features/rows/gridRowsSelector.js +1 -1
  177. package/modern/hooks/features/rows/useGridRows.js +2 -2
  178. package/modern/hooks/features/sorting/gridSortingUtils.js +2 -2
  179. package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
  180. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  181. package/modern/hooks/utils/useGridApiEventHandler.js +1 -1
  182. package/modern/hooks/utils/useGridVisibleRows.js +5 -28
  183. package/modern/index.js +1 -1
  184. package/modern/internals/constants.js +8 -1
  185. package/modern/internals/index.js +1 -0
  186. package/modern/internals/utils/attachPinnedStyle.js +9 -0
  187. package/modern/internals/utils/getPinnedCellOffset.js +6 -7
  188. package/modern/internals/utils/index.js +2 -1
  189. package/modern/locales/urPK.js +9 -10
  190. package/modern/utils/cellBorderUtils.js +5 -5
  191. package/modern/utils/domUtils.js +7 -2
  192. package/modern/utils/rtlFlipSide.js +22 -0
  193. package/node/DataGrid/DataGrid.js +2 -3
  194. package/node/DataGrid/useDataGridComponent.js +1 -1
  195. package/node/components/GridHeaders.js +2 -2
  196. package/node/components/GridRow.js +27 -104
  197. package/node/components/GridSkeletonLoadingOverlay.js +17 -17
  198. package/node/components/cell/GridCell.js +18 -36
  199. package/node/components/cell/GridEditDateCell.js +1 -1
  200. package/node/components/cell/GridEditInputCell.js +1 -1
  201. package/node/components/cell/GridEditSingleSelectCell.js +2 -2
  202. package/node/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  203. package/node/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  204. package/node/components/columnSelection/GridCellCheckboxRenderer.js +3 -2
  205. package/node/components/columnSelection/GridHeaderCheckbox.js +6 -2
  206. package/node/components/containers/GridRoot.js +14 -6
  207. package/node/components/containers/GridRootStyles.js +1 -0
  208. package/node/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  209. package/node/components/virtualization/GridVirtualScrollbar.js +11 -12
  210. package/node/components/virtualization/GridVirtualScroller.js +4 -4
  211. package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  212. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  213. package/node/hooks/core/useGridApiInitialization.js +2 -2
  214. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +32 -74
  215. package/node/hooks/features/columnResize/useGridColumnResize.js +8 -6
  216. package/node/hooks/features/dimensions/useGridDimensions.js +1 -1
  217. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  218. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  219. package/node/hooks/features/filter/gridFilterSelector.js +6 -1
  220. package/node/hooks/features/filter/gridFilterUtils.js +3 -3
  221. package/node/hooks/features/pagination/gridPaginationSelector.js +41 -3
  222. package/node/hooks/features/pagination/useGridPagination.js +5 -3
  223. package/node/hooks/features/pagination/useGridPaginationModel.js +23 -1
  224. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  225. package/node/hooks/features/rows/gridRowsSelector.js +1 -1
  226. package/node/hooks/features/rows/useGridRows.js +1 -1
  227. package/node/hooks/features/sorting/gridSortingUtils.js +2 -2
  228. package/node/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +49 -0
  229. package/node/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  230. package/node/hooks/utils/useGridApiEventHandler.js +1 -1
  231. package/node/hooks/utils/useGridVisibleRows.js +3 -28
  232. package/node/index.js +1 -1
  233. package/node/internals/constants.js +9 -2
  234. package/node/internals/index.js +12 -0
  235. package/node/internals/utils/attachPinnedStyle.js +15 -0
  236. package/node/internals/utils/getPinnedCellOffset.js +6 -7
  237. package/node/internals/utils/index.js +11 -0
  238. package/node/locales/urPK.js +9 -10
  239. package/node/utils/cellBorderUtils.js +5 -5
  240. package/node/utils/domUtils.js +7 -2
  241. package/node/utils/rtlFlipSide.js +29 -0
  242. package/package.json +2 -2
  243. package/utils/cellBorderUtils.d.ts +3 -3
  244. package/utils/cellBorderUtils.js +5 -5
  245. package/utils/createSelector.d.ts +2 -2
  246. package/utils/domUtils.js +7 -2
  247. package/utils/getPublicApiRef.d.ts +1 -1
  248. package/utils/rtlFlipSide.d.ts +2 -0
  249. package/utils/rtlFlipSide.js +22 -0
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _utils = require("@mui/utils");
14
14
  var _fastMemo = require("@mui/x-internals/fastMemo");
15
+ var _RtlProvider = require("@mui/system/RtlProvider");
15
16
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
16
17
  var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
17
18
  var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
@@ -19,7 +20,8 @@ var _gridClasses = require("../../constants/gridClasses");
19
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
20
21
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
21
22
  var _domUtils = require("../../utils/domUtils");
22
- var _cellBorderUtils = require("../../utils/cellBorderUtils");
23
+ var _constants = require("../../internals/constants");
24
+ var _utils2 = require("../../internals/utils");
23
25
  var _jsxRuntime = require("react/jsx-runtime");
24
26
  const useUtilityClasses = ownerState => {
25
27
  const {
@@ -39,7 +41,7 @@ const useUtilityClasses = ownerState => {
39
41
  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
40
42
  const isColumnNumeric = colDef.type === 'number';
41
43
  const slots = {
42
- 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',
44
+ 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 === _constants.PinnedColumnPosition.LEFT && 'columnHeader--pinnedLeft', pinnedPosition === _constants.PinnedColumnPosition.RIGHT && 'columnHeader--pinnedRight',
43
45
  // TODO: Remove classes below and restore `:has` selectors when they are supported in jsdom
44
46
  // See https://github.com/mui/mui-x/pull/14559
45
47
  isLastUnpinned && 'columnHeader--lastUnpinned', isSiblingFocused && 'columnHeader--siblingFocused'],
@@ -64,14 +66,14 @@ function GridColumnHeaderItem(props) {
64
66
  tabIndex,
65
67
  disableReorder,
66
68
  separatorSide,
67
- style,
69
+ showLeftBorder,
70
+ showRightBorder,
68
71
  pinnedPosition,
69
- indexInSection,
70
- sectionLength,
71
- gridHasFiller
72
+ pinnedOffset
72
73
  } = props;
73
74
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
74
75
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
76
+ const isRtl = (0, _RtlProvider.useRtl)();
75
77
  const headerCellRef = React.useRef(null);
76
78
  const columnMenuId = (0, _utils.unstable_useId)();
77
79
  const columnMenuButtonId = (0, _utils.unstable_useId)();
@@ -82,8 +84,6 @@ function GridColumnHeaderItem(props) {
82
84
  if (colDef.renderHeader) {
83
85
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
84
86
  }
85
- const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
86
- const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showColumnVerticalBorder, gridHasFiller);
87
87
  const ownerState = (0, _extends2.default)({}, props, {
88
88
  classes: rootProps.classes,
89
89
  showRightBorder,
@@ -179,6 +179,7 @@ function GridColumnHeaderItem(props) {
179
179
  colDef
180
180
  }) : colDef.headerClassName;
181
181
  const label = colDef.headerName ?? colDef.field;
182
+ const style = React.useMemo(() => (0, _utils2.attachPinnedStyle)((0, _extends2.default)({}, props.style), isRtl, pinnedPosition, pinnedOffset), [pinnedPosition, pinnedOffset, props.style, isRtl]);
182
183
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridGenericColumnHeaderItem.GridGenericColumnHeaderItem, (0, _extends2.default)({
183
184
  ref: headerCellRef,
184
185
  classes: classes,
@@ -217,18 +218,18 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
217
218
  columnMenuOpen: _propTypes.default.bool.isRequired,
218
219
  disableReorder: _propTypes.default.bool,
219
220
  filterItemsCounter: _propTypes.default.number,
220
- gridHasFiller: _propTypes.default.bool.isRequired,
221
221
  hasFocus: _propTypes.default.bool,
222
222
  headerHeight: _propTypes.default.number.isRequired,
223
- indexInSection: _propTypes.default.number.isRequired,
224
223
  isDragging: _propTypes.default.bool.isRequired,
225
224
  isLast: _propTypes.default.bool.isRequired,
226
225
  isLastUnpinned: _propTypes.default.bool.isRequired,
227
226
  isResizing: _propTypes.default.bool.isRequired,
228
227
  isSiblingFocused: _propTypes.default.bool.isRequired,
229
- pinnedPosition: _propTypes.default.oneOf(['left', 'right']),
230
- sectionLength: _propTypes.default.number.isRequired,
228
+ pinnedOffset: _propTypes.default.number,
229
+ pinnedPosition: _propTypes.default.oneOf([0, 1, 2, 3]),
231
230
  separatorSide: _propTypes.default.oneOf(['left', 'right']),
231
+ showLeftBorder: _propTypes.default.bool.isRequired,
232
+ showRightBorder: _propTypes.default.bool.isRequired,
232
233
  sortDirection: _propTypes.default.oneOf(['asc', 'desc']),
233
234
  sortIndex: _propTypes.default.number,
234
235
  style: _propTypes.default.object,
@@ -84,7 +84,7 @@ const GridCellCheckboxForwardRef = exports.GridCellCheckboxForwardRef = (0, _for
84
84
  const {
85
85
  isIndeterminate,
86
86
  isChecked
87
- } = (0, _useGridSelector.useGridSelector)(apiRef, checkboxPropsSelector);
87
+ } = (0, _useGridSelector.useGridSelector)(apiRef, checkboxPropsSelector, _useGridSelector.objectShallowCompare);
88
88
  if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {
89
89
  return null;
90
90
  }
@@ -96,7 +96,8 @@ const GridCellCheckboxForwardRef = exports.GridCellCheckboxForwardRef = (0, _for
96
96
  onChange: handleChange,
97
97
  className: classes.root,
98
98
  inputProps: {
99
- 'aria-label': label
99
+ 'aria-label': label,
100
+ name: 'select_row'
100
101
  },
101
102
  onKeyDown: handleKeyDown,
102
103
  indeterminate: isIndeterminate,
@@ -50,13 +50,16 @@ const GridHeaderCheckbox = exports.GridHeaderCheckbox = (0, _forwardRef.forwardR
50
50
  return selection;
51
51
  }
52
52
  return selection.filter(id => {
53
+ if (rootProps.keepNonExistentRowsSelected) {
54
+ return true;
55
+ }
53
56
  // The row might have been deleted
54
57
  if (!apiRef.current.getRow(id)) {
55
58
  return false;
56
59
  }
57
60
  return rootProps.isRowSelectable(apiRef.current.getRowParams(id));
58
61
  });
59
- }, [apiRef, rootProps.isRowSelectable, selection]);
62
+ }, [apiRef, rootProps.isRowSelectable, selection, rootProps.keepNonExistentRowsSelected]);
60
63
 
61
64
  // All the rows that could be selected / unselected by toggling this checkbox
62
65
  const selectionCandidates = React.useMemo(() => {
@@ -109,7 +112,8 @@ const GridHeaderCheckbox = exports.GridHeaderCheckbox = (0, _forwardRef.forwardR
109
112
  onChange: handleChange,
110
113
  className: classes.root,
111
114
  inputProps: {
112
- 'aria-label': label
115
+ 'aria-label': label,
116
+ name: 'select_all_rows'
113
117
  },
114
118
  tabIndex: tabIndex,
115
119
  onKeyDown: handleKeyDown,
@@ -12,6 +12,7 @@ var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _clsx = _interopRequireDefault(require("clsx"));
14
14
  var _utils = require("@mui/utils");
15
+ var _fastMemo = require("@mui/x-internals/fastMemo");
15
16
  var _forwardRef = require("@mui/x-internals/forwardRef");
16
17
  var _GridRootStyles = require("./GridRootStyles");
17
18
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -19,8 +20,10 @@ var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiCont
19
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
20
21
  var _gridClasses = require("../../constants/gridClasses");
21
22
  var _densitySelector = require("../../hooks/features/density/densitySelector");
23
+ var _GridHeader = require("../GridHeader");
24
+ var _base = require("../base");
22
25
  var _jsxRuntime = require("react/jsx-runtime");
23
- const _excluded = ["className"];
26
+ const _excluded = ["className", "children"];
24
27
  const useUtilityClasses = (ownerState, density) => {
25
28
  const {
26
29
  autoHeight,
@@ -32,10 +35,11 @@ const useUtilityClasses = (ownerState, density) => {
32
35
  };
33
36
  return (0, _utils.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
34
37
  };
35
- const GridRoot = exports.GridRoot = (0, _forwardRef.forwardRef)(function GridRoot(props, ref) {
38
+ const GridRoot = (0, _forwardRef.forwardRef)(function GridRoot(props, ref) {
36
39
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
37
40
  const {
38
- className
41
+ className,
42
+ children
39
43
  } = props,
40
44
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
41
45
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
@@ -53,11 +57,14 @@ const GridRoot = exports.GridRoot = (0, _forwardRef.forwardRef)(function GridRoo
53
57
  if (!mountedState) {
54
58
  return null;
55
59
  }
56
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
57
61
  className: (0, _clsx.default)(classes.root, className),
58
62
  ownerState: ownerState
59
63
  }, other, {
60
- ref: handleRef
64
+ ref: handleRef,
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeader.GridHeader, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridBody, {
66
+ children: children
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridFooterPlaceholder, {})]
61
68
  }));
62
69
  });
63
70
  process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
@@ -69,4 +76,5 @@ process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
69
76
  * The system prop that allows defining system overrides as well as additional CSS styles.
70
77
  */
71
78
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
72
- } : void 0;
79
+ } : void 0;
80
+ const MemoizedGridRoot = exports.GridRoot = (0, _fastMemo.fastMemo)(GridRoot);
@@ -551,6 +551,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
551
551
  lineHeight: 'inherit'
552
552
  },
553
553
  [`& .${_gridClasses.gridClasses.cellEmpty}`]: {
554
+ flex: 1,
554
555
  padding: 0,
555
556
  height: 'unset'
556
557
  },
@@ -30,17 +30,17 @@ function GridFilterInputValue(props) {
30
30
  } = props,
31
31
  others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
32
32
  const filterTimeout = (0, _useTimeout.useTimeout)();
33
- const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value, type));
33
+ const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
34
34
  const [applying, setIsApplying] = React.useState(false);
35
35
  const id = (0, _utils.unstable_useId)();
36
36
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
37
37
  const onFilterChange = React.useCallback(event => {
38
- const value = sanitizeFilterItemValue(event.target.value, type);
38
+ const value = sanitizeFilterItemValue(event.target.value);
39
39
  setFilterValueState(value);
40
40
  setIsApplying(true);
41
41
  filterTimeout.start(rootProps.filterDebounceMs, () => {
42
42
  const newItem = (0, _extends2.default)({}, item, {
43
- value,
43
+ value: type === 'number' && !Number.isNaN(Number(value)) ? Number(value) : value,
44
44
  fromInput: id
45
45
  });
46
46
  applyValue(newItem);
@@ -50,14 +50,14 @@ function GridFilterInputValue(props) {
50
50
  React.useEffect(() => {
51
51
  const itemPlusTag = item;
52
52
  if (itemPlusTag.fromInput !== id || item.value == null) {
53
- setFilterValueState(sanitizeFilterItemValue(item.value, type));
53
+ setFilterValueState(sanitizeFilterItemValue(item.value));
54
54
  }
55
- }, [id, item, type]);
55
+ }, [id, item]);
56
56
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseTextField, (0, _extends2.default)({
57
57
  id: id,
58
58
  label: apiRef.current.getLocaleText('filterPanelInputLabel'),
59
59
  placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),
60
- value: filterValueState === undefined ? '' : String(filterValueState),
60
+ value: filterValueState ?? '',
61
61
  onChange: onFilterChange,
62
62
  variant: variant,
63
63
  type: type || 'text',
@@ -79,13 +79,10 @@ function GridFilterInputValue(props) {
79
79
  inputRef: focusElementRef
80
80
  }, others, rootProps.slotProps?.baseTextField));
81
81
  }
82
- function sanitizeFilterItemValue(value, type) {
82
+ function sanitizeFilterItemValue(value) {
83
83
  if (value == null || value === '') {
84
84
  return undefined;
85
85
  }
86
- if (type === 'number') {
87
- return Number(value);
88
- }
89
86
  return String(value);
90
87
  }
91
88
  process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
@@ -29,6 +29,9 @@ const Scrollbar = (0, _system.styled)('div')({
29
29
  position: 'absolute',
30
30
  display: 'inline-block',
31
31
  zIndex: 6,
32
+ '&:hover': {
33
+ zIndex: 7
34
+ },
32
35
  // In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider
33
36
  // their size to be 0px throughout all the calculations, but the floating scrollbar container does need
34
37
  // to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
@@ -110,19 +113,15 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
110
113
  (0, _useOnMount.useOnMount)(() => {
111
114
  const scroller = apiRef.current.virtualScrollerRef.current;
112
115
  const scrollbar = scrollbarRef.current;
113
- scroller.addEventListener('scroll', onScrollerScroll, {
114
- capture: true
115
- });
116
- scrollbar.addEventListener('scroll', onScrollbarScroll, {
117
- capture: true
118
- });
116
+ const options = {
117
+ capture: true,
118
+ passive: true
119
+ };
120
+ scroller.addEventListener('scroll', onScrollerScroll, options);
121
+ scrollbar.addEventListener('scroll', onScrollbarScroll, options);
119
122
  return () => {
120
- scroller.removeEventListener('scroll', onScrollerScroll, {
121
- capture: true
122
- });
123
- scrollbar.removeEventListener('scroll', onScrollbarScroll, {
124
- capture: true
125
- });
123
+ scroller.removeEventListener('scroll', onScrollerScroll, options);
124
+ scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
126
125
  };
127
126
  });
128
127
  React.useEffect(() => {
@@ -106,10 +106,10 @@ function GridVirtualScroller(props) {
106
106
  virtualScroller: virtualScroller
107
107
  })
108
108
  })]
109
- })), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
110
- position: "vertical"
111
- }, getScrollbarVerticalProps())), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
109
+ })), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
112
110
  position: "horizontal"
113
- }, getScrollbarHorizontalProps())), props.children]
111
+ }, getScrollbarHorizontalProps())), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
112
+ position: "vertical"
113
+ }, getScrollbarVerticalProps())), props.children]
114
114
  }));
115
115
  }
@@ -8,7 +8,7 @@ exports.useGridRegisterPipeApplier = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var _useFirstRender = require("../../utils/useFirstRender");
10
10
  const useGridRegisterPipeApplier = (apiRef, group, callback) => {
11
- const cleanup = React.useRef();
11
+ const cleanup = React.useRef(null);
12
12
  const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
13
13
  const registerPreProcessor = React.useCallback(() => {
14
14
  cleanup.current = apiRef.current.registerPipeApplier(group, id.current, callback);
@@ -8,7 +8,7 @@ exports.useGridRegisterPipeProcessor = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var _useFirstRender = require("../../utils/useFirstRender");
10
10
  const useGridRegisterPipeProcessor = (apiRef, group, callback) => {
11
- const cleanup = React.useRef();
11
+ const cleanup = React.useRef(null);
12
12
  const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
13
13
  const registerPreProcessor = React.useCallback(() => {
14
14
  cleanup.current = apiRef.current.registerPipeProcessor(group, id.current, callback);
@@ -76,8 +76,8 @@ function createPublicAPI(privateApiRef) {
76
76
  return publicApi;
77
77
  }
78
78
  function useGridApiInitialization(inputApiRef, props) {
79
- const publicApiRef = React.useRef();
80
- const privateApiRef = React.useRef();
79
+ const publicApiRef = React.useRef(null);
80
+ const privateApiRef = React.useRef(null);
81
81
  if (!privateApiRef.current) {
82
82
  privateApiRef.current = createPrivateAPI(publicApiRef);
83
83
  }
@@ -10,7 +10,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _clsx = _interopRequireDefault(require("clsx"));
12
12
  var _styles = require("@mui/material/styles");
13
- var _RtlProvider = require("@mui/system/RtlProvider");
14
13
  var _utils = require("../../utils");
15
14
  var _useGridRootProps = require("../../utils/useGridRootProps");
16
15
  var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
@@ -26,6 +25,8 @@ var _GridScrollbarFillerCell = require("../../../components/GridScrollbarFillerC
26
25
  var _getPinnedCellOffset = require("../../../internals/utils/getPinnedCellOffset");
27
26
  var _GridColumnHeaderSeparator = require("../../../components/columnHeaders/GridColumnHeaderSeparator");
28
27
  var _gridClasses = require("../../../constants/gridClasses");
28
+ var _cellBorderUtils = require("../../../utils/cellBorderUtils");
29
+ var _constants = require("../../../internals/constants");
29
30
  var _jsxRuntime = require("react/jsx-runtime");
30
31
  const GridColumnHeaderRow = exports.GridColumnHeaderRow = (0, _styles.styled)('div', {
31
32
  name: 'MuiDataGrid',
@@ -52,10 +53,8 @@ const useGridColumnHeaders = props => {
52
53
  const [dragCol, setDragCol] = React.useState('');
53
54
  const [resizeCol, setResizeCol] = React.useState('');
54
55
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
55
- const isRtl = (0, _RtlProvider.useRtl)();
56
56
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
57
57
  const dimensions = (0, _utils.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
58
- const hasColumnVirtualization = (0, _utils.useGridSelector)(apiRef, _virtualization.gridVirtualizationColumnEnabledSelector);
59
58
  const columnGroupsModel = (0, _utils.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsUnwrappedModelSelector);
60
59
  const columnPositions = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnPositionsSelector);
61
60
  const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
@@ -92,18 +91,10 @@ const useGridColumnHeaders = props => {
92
91
  // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
93
92
  const getColumnsToRender = params => {
94
93
  const {
95
- renderContext: currentContext = renderContext,
96
- maxLastColumn = visibleColumns.length
94
+ renderContext: currentContext = renderContext
97
95
  } = params || {};
98
- let firstColumnToRender;
99
- let lastColumnToRender;
100
- if (!rootProps.disableVirtualization && !hasColumnVirtualization) {
101
- firstColumnToRender = 0;
102
- lastColumnToRender = maxLastColumn;
103
- } else {
104
- firstColumnToRender = currentContext.firstColumnIndex;
105
- lastColumnToRender = currentContext.lastColumnIndex;
106
- }
96
+ const firstColumnToRender = currentContext.firstColumnIndex;
97
+ const lastColumnToRender = currentContext.lastColumnIndex;
107
98
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
108
99
  return {
109
100
  renderedColumns,
@@ -112,7 +103,7 @@ const useGridColumnHeaders = props => {
112
103
  };
113
104
  };
114
105
  const getFillers = (params, children, leftOverflow, borderBottom = false) => {
115
- const isPinnedRight = params?.position === _columns.GridPinnedColumnPosition.RIGHT;
106
+ const isPinnedRight = params?.position === _constants.PinnedColumnPosition.RIGHT;
116
107
  const isNotPinned = params?.position === undefined;
117
108
  const hasScrollbarFiller = pinnedColumns.right.length > 0 && isPinnedRight || pinnedColumns.right.length === 0 && isNotPinned;
118
109
  const leftOffsetWidth = offsetLeft - leftOverflow;
@@ -133,33 +124,6 @@ const useGridColumnHeaders = props => {
133
124
  })]
134
125
  });
135
126
  };
136
- const getCellOffsetStyle = ({
137
- pinnedPosition,
138
- columnIndex,
139
- computedWidth
140
- }) => {
141
- let style;
142
- const isLeftPinned = pinnedPosition === _columns.GridPinnedColumnPosition.LEFT;
143
- const isRightPinned = pinnedPosition === _columns.GridPinnedColumnPosition.RIGHT;
144
- if (isLeftPinned || isRightPinned) {
145
- const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, computedWidth, columnIndex, columnPositions, dimensions);
146
- let side = isLeftPinned ? 'left' : 'right';
147
- if (isRtl) {
148
- side = isLeftPinned ? 'right' : 'left';
149
- }
150
- if (pinnedPosition === 'left') {
151
- style = {
152
- [side]: pinnedOffset
153
- };
154
- }
155
- if (pinnedPosition === 'right') {
156
- style = {
157
- [side]: pinnedOffset
158
- };
159
- }
160
- }
161
- return style;
162
- };
163
127
  const getColumnHeaders = (params, other = {}) => {
164
128
  const {
165
129
  renderedColumns,
@@ -174,14 +138,15 @@ const useGridColumnHeaders = props => {
174
138
  const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;
175
139
  const open = columnMenuState.open && columnMenuState.field === colDef.field;
176
140
  const pinnedPosition = params?.position;
177
- const style = getCellOffsetStyle({
178
- pinnedPosition,
179
- columnIndex,
180
- computedWidth: colDef.computedWidth
181
- });
182
- const siblingWithBorderingSeparator = pinnedPosition === _columns.GridPinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];
141
+ const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
142
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, colDef.computedWidth, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
143
+ const siblingWithBorderingSeparator = pinnedPosition === _constants.PinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];
183
144
  const isSiblingFocused = siblingWithBorderingSeparator ? columnHeaderFocus !== null && columnHeaderFocus.field === siblingWithBorderingSeparator.field : false;
184
145
  const isLastUnpinned = columnIndex + 1 === columnPositions.length - pinnedColumns.right.length;
146
+ const indexInSection = i;
147
+ const sectionLength = renderedColumns.length;
148
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
149
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
185
150
  columns.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderItem.GridColumnHeaderItem, (0, _extends2.default)({}, sortColumnLookup[colDef.field], {
186
151
  columnMenuOpen: open,
187
152
  filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
@@ -194,12 +159,11 @@ const useGridColumnHeaders = props => {
194
159
  hasFocus: hasFocus,
195
160
  tabIndex: tabIndex,
196
161
  pinnedPosition: pinnedPosition,
197
- style: style,
198
- indexInSection: i,
199
- sectionLength: renderedColumns.length,
200
- gridHasFiller: gridHasFiller,
162
+ pinnedOffset: pinnedOffset,
201
163
  isLastUnpinned: isLastUnpinned,
202
- isSiblingFocused: isSiblingFocused
164
+ isSiblingFocused: isSiblingFocused,
165
+ showLeftBorder: showLeftBorder,
166
+ showRightBorder: showRightBorder
203
167
  }, other), colDef.field));
204
168
  }
205
169
  return getFillers(params, columns, 0);
@@ -211,18 +175,15 @@ const useGridColumnHeaders = props => {
211
175
  ownerState: rootProps,
212
176
  className: _gridClasses.gridClasses['row--borderBottom'],
213
177
  children: [leftRenderContext && getColumnHeaders({
214
- position: _columns.GridPinnedColumnPosition.LEFT,
215
- renderContext: leftRenderContext,
216
- maxLastColumn: leftRenderContext.lastColumnIndex
178
+ position: _constants.PinnedColumnPosition.LEFT,
179
+ renderContext: leftRenderContext
217
180
  }, {
218
181
  disableReorder: true
219
182
  }), getColumnHeaders({
220
- renderContext,
221
- maxLastColumn: visibleColumns.length - pinnedColumns.right.length
183
+ renderContext
222
184
  }), rightRenderContext && getColumnHeaders({
223
- position: _columns.GridPinnedColumnPosition.RIGHT,
224
- renderContext: rightRenderContext,
225
- maxLastColumn: rightRenderContext.lastColumnIndex
185
+ position: _constants.PinnedColumnPosition.RIGHT,
186
+ renderContext: rightRenderContext
226
187
  }, {
227
188
  disableReorder: true,
228
189
  separatorSide: _GridColumnHeaderSeparator.GridColumnHeaderSeparatorSides.Left
@@ -281,14 +242,11 @@ const useGridColumnHeaders = props => {
281
242
  tabIndex
282
243
  };
283
244
  const pinnedPosition = params.position;
284
- const style = getCellOffsetStyle({
285
- pinnedPosition,
286
- columnIndex,
287
- computedWidth: headerInfo.width
288
- });
245
+ const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
246
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, headerInfo.width, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
289
247
  columnIndex += columnFields.length;
290
248
  let indexInSection = index;
291
- if (pinnedPosition === 'left') {
249
+ if (pinnedPosition === _constants.PinnedColumnPosition.LEFT) {
292
250
  // Group headers can expand to multiple columns, we need to adjust the index
293
251
  indexInSection = columnIndex - 1;
294
252
  }
@@ -304,10 +262,9 @@ const useGridColumnHeaders = props => {
304
262
  hasFocus: hasFocus,
305
263
  tabIndex: tabIndex,
306
264
  pinnedPosition: pinnedPosition,
307
- style: style,
308
- indexInSection: indexInSection,
309
- sectionLength: visibleColumnGroupHeader.length,
310
- gridHasFiller: gridHasFiller
265
+ pinnedOffset: pinnedOffset,
266
+ showLeftBorder: (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection),
267
+ showRightBorder: (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, visibleColumnGroupHeader.length, rootProps.showCellVerticalBorder, gridHasFiller)
311
268
  }, index);
312
269
  });
313
270
  return getFillers(params, children, leftOverflow);
@@ -325,7 +282,7 @@ const useGridColumnHeaders = props => {
325
282
  children: [leftRenderContext && getColumnGroupHeaders({
326
283
  depth,
327
284
  params: {
328
- position: _columns.GridPinnedColumnPosition.LEFT,
285
+ position: _constants.PinnedColumnPosition.LEFT,
329
286
  renderContext: leftRenderContext,
330
287
  maxLastColumn: leftRenderContext.lastColumnIndex
331
288
  }
@@ -337,7 +294,7 @@ const useGridColumnHeaders = props => {
337
294
  }), rightRenderContext && getColumnGroupHeaders({
338
295
  depth,
339
296
  params: {
340
- position: _columns.GridPinnedColumnPosition.RIGHT,
297
+ position: _constants.PinnedColumnPosition.RIGHT,
341
298
  renderContext: rightRenderContext,
342
299
  maxLastColumn: rightRenderContext.lastColumnIndex
343
300
  }
@@ -352,11 +309,12 @@ const useGridColumnHeaders = props => {
352
309
  rightRenderContext,
353
310
  pinnedColumns,
354
311
  visibleColumns,
355
- getCellOffsetStyle,
312
+ columnPositions,
356
313
  getFillers,
357
314
  getColumnHeadersRow,
358
315
  getColumnsToRender,
359
316
  getColumnGroupHeadersRows,
317
+ getPinnedCellOffset: _getPinnedCellOffset.getPinnedCellOffset,
360
318
  isDragging: !!dragCol,
361
319
  getInnerProps: () => ({
362
320
  role: 'rowgroup'
@@ -78,7 +78,7 @@ function preventClick(event) {
78
78
  * is disabled.
79
79
  */
80
80
  function useColumnVirtualizationDisabled(apiRef) {
81
- const promise = React.useRef();
81
+ const promise = React.useRef(undefined);
82
82
  const selector = () => (0, _virtualization.gridVirtualizationColumnEnabledSelector)(apiRef);
83
83
  const value = (0, _utils2.useGridSelector)(apiRef, selector);
84
84
  React.useEffect(() => {
@@ -193,17 +193,19 @@ const useGridColumnResize = (apiRef, props) => {
193
193
  // To improve accessibility, the separator has padding on both sides.
194
194
  // Clicking inside the padding area should be treated as a click in the separator.
195
195
  // This ref stores the offset between the click and the separator.
196
- const initialOffsetToSeparator = React.useRef();
197
- const resizeDirection = React.useRef();
196
+ const initialOffsetToSeparator = React.useRef(null);
197
+ const resizeDirection = React.useRef(null);
198
198
  const stopResizeEventTimeout = (0, _useTimeout.useTimeout)();
199
- const touchId = React.useRef();
199
+ const touchId = React.useRef(undefined);
200
200
  const updateWidth = newWidth => {
201
201
  logger.debug(`Updating width to ${newWidth} for col ${refs.colDef.field}`);
202
202
  const prevWidth = refs.columnHeaderElement.offsetWidth;
203
203
  const widthDiff = newWidth - prevWidth;
204
204
  const columnWidthDiff = newWidth - refs.initialColWidth;
205
- const newTotalWidth = refs.initialTotalWidth + columnWidthDiff;
206
- apiRef.current.rootElementRef?.current?.style.setProperty('--DataGrid-rowWidth', `${newTotalWidth}px`);
205
+ if (columnWidthDiff > 0) {
206
+ const newTotalWidth = refs.initialTotalWidth + columnWidthDiff;
207
+ apiRef.current.rootElementRef?.current?.style.setProperty('--DataGrid-rowWidth', `${newTotalWidth}px`);
208
+ }
207
209
  refs.colDef.computedWidth = newWidth;
208
210
  refs.colDef.width = newWidth;
209
211
  refs.colDef.flex = 0;
@@ -77,7 +77,7 @@ function useGridDimensions(apiRef, props) {
77
77
  const [savedSize, setSavedSize] = React.useState();
78
78
  const debouncedSetSavedSize = React.useMemo(() => (0, _throttle.throttle)(setSavedSize, props.resizeThrottleMs), [props.resizeThrottleMs]);
79
79
  React.useEffect(() => debouncedSetSavedSize.clear, [debouncedSetSavedSize]);
80
- const previousSize = React.useRef();
80
+ const previousSize = React.useRef(undefined);
81
81
  const getRootDimensions = () => apiRef.current.state.dimensions;
82
82
  const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
83
83
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
@@ -29,7 +29,7 @@ const useGridRowEditing = (apiRef, props) => {
29
29
  const [rowModesModel, setRowModesModel] = React.useState({});
30
30
  const rowModesModelRef = React.useRef(rowModesModel);
31
31
  const prevRowModesModel = React.useRef({});
32
- const focusTimeout = React.useRef();
32
+ const focusTimeout = React.useRef(undefined);
33
33
  const nextFocusedCell = React.useRef(null);
34
34
  const {
35
35
  processRowUpdate,
@@ -52,7 +52,7 @@ const useGridPrintExport = (apiRef, props) => {
52
52
  const previousGridState = React.useRef(null);
53
53
  const previousColumnVisibility = React.useRef({});
54
54
  const previousRows = React.useRef([]);
55
- const previousVirtualizationState = React.useRef();
55
+ const previousVirtualizationState = React.useRef(null);
56
56
  React.useEffect(() => {
57
57
  doc.current = (0, _utils.unstable_ownerDocument)(apiRef.current.rootElementRef.current);
58
58
  }, [apiRef, hasRootReference]);
@@ -55,7 +55,12 @@ const gridFilteredDescendantCountLookupSelector = exports.gridFilteredDescendant
55
55
  * Does not contain the collapsed children.
56
56
  * @category Filtering
57
57
  */
58
- const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));
58
+ const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, gridFilterModelSelector, gridQuickFilterValuesSelector, (visibleRowsLookup, sortedRows, maxDepth, filterModel, quickFilterValues) => {
59
+ if (maxDepth < 2 && !filterModel.items.length && !quickFilterValues?.length) {
60
+ return sortedRows;
61
+ }
62
+ return sortedRows.filter(row => visibleRowsLookup[row.id] !== false);
63
+ });
59
64
 
60
65
  /**
61
66
  * Get the id of the rows accessible after the filtering process.