@mui/x-data-grid 8.0.0-alpha.10 → 8.0.0-alpha.11

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 (148) hide show
  1. package/CHANGELOG.md +107 -2
  2. package/DataGrid/useDataGridComponent.js +2 -2
  3. package/components/GridRow.js +6 -2
  4. package/components/GridScrollArea.d.ts +5 -2
  5. package/components/GridScrollArea.js +31 -24
  6. package/components/GridSkeletonLoadingOverlay.js +2 -1
  7. package/components/containers/GridRoot.js +11 -9
  8. package/components/containers/GridRootStyles.js +3 -3
  9. package/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  10. package/components/virtualization/GridMainContainer.d.ts +2 -2
  11. package/components/virtualization/GridMainContainer.js +1 -1
  12. package/components/virtualization/GridVirtualScroller.js +21 -14
  13. package/constants/index.d.ts +1 -0
  14. package/constants/index.js +2 -1
  15. package/constants/signature.d.ts +9 -0
  16. package/constants/signature.js +10 -0
  17. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  18. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  19. package/hooks/core/useGridApiInitialization.js +1 -1
  20. package/hooks/core/useGridStateInitialization.js +3 -2
  21. package/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  22. package/hooks/features/columns/gridColumnsSelector.d.ts +0 -5
  23. package/hooks/features/columns/gridColumnsSelector.js +0 -12
  24. package/hooks/features/columns/useGridColumns.js +2 -1
  25. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +16 -0
  26. package/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
  27. package/hooks/features/dimensions/index.d.ts +1 -1
  28. package/hooks/features/dimensions/index.js +1 -2
  29. package/hooks/features/dimensions/useGridDimensions.js +97 -70
  30. package/hooks/features/editing/gridEditingSelectors.d.ts +5 -1
  31. package/hooks/features/editing/gridEditingSelectors.js +6 -1
  32. package/hooks/features/editing/useGridRowEditing.js +4 -4
  33. package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
  34. package/hooks/features/filter/gridFilterSelector.js +4 -3
  35. package/hooks/features/filter/gridFilterState.d.ts +8 -3
  36. package/hooks/features/filter/gridFilterState.js +5 -0
  37. package/hooks/features/filter/useGridFilter.js +9 -14
  38. package/hooks/features/overlays/useGridOverlays.js +1 -1
  39. package/hooks/features/pagination/gridPaginationUtils.js +1 -1
  40. package/hooks/features/pagination/useGridPagination.js +1 -1
  41. package/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  42. package/hooks/features/rowSelection/utils.js +2 -2
  43. package/hooks/features/rows/gridRowsMetaState.d.ts +8 -0
  44. package/hooks/features/rows/gridRowsUtils.d.ts +0 -4
  45. package/hooks/features/rows/gridRowsUtils.js +0 -16
  46. package/hooks/features/rows/useGridRows.js +4 -2
  47. package/hooks/features/rows/useGridRowsMeta.js +33 -17
  48. package/hooks/features/sorting/gridSortingSelector.js +10 -9
  49. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +6 -0
  50. package/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
  51. package/hooks/utils/index.d.ts +1 -1
  52. package/hooks/utils/index.js +1 -1
  53. package/hooks/utils/useGridApiEventHandler.d.ts +7 -17
  54. package/hooks/utils/useGridApiEventHandler.js +68 -75
  55. package/hooks/utils/useGridSelector.js +23 -5
  56. package/hooks/utils/useIsSSR.d.ts +1 -0
  57. package/hooks/utils/useIsSSR.js +5 -0
  58. package/index.js +1 -1
  59. package/internals/index.d.ts +3 -1
  60. package/internals/index.js +3 -1
  61. package/internals/utils/propValidation.js +1 -1
  62. package/models/api/gridStateApi.d.ts +1 -0
  63. package/models/events/gridEventLookup.d.ts +6 -0
  64. package/modern/DataGrid/useDataGridComponent.js +2 -2
  65. package/modern/components/GridRow.js +6 -2
  66. package/modern/components/GridScrollArea.js +31 -24
  67. package/modern/components/GridSkeletonLoadingOverlay.js +2 -1
  68. package/modern/components/containers/GridRoot.js +11 -9
  69. package/modern/components/containers/GridRootStyles.js +3 -3
  70. package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  71. package/modern/components/virtualization/GridMainContainer.js +1 -1
  72. package/modern/components/virtualization/GridVirtualScroller.js +21 -14
  73. package/modern/constants/index.js +2 -1
  74. package/modern/constants/signature.js +10 -0
  75. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  76. package/modern/hooks/core/useGridApiInitialization.js +1 -1
  77. package/modern/hooks/core/useGridStateInitialization.js +3 -2
  78. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  79. package/modern/hooks/features/columns/gridColumnsSelector.js +0 -12
  80. package/modern/hooks/features/columns/useGridColumns.js +2 -1
  81. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
  82. package/modern/hooks/features/dimensions/index.js +1 -2
  83. package/modern/hooks/features/dimensions/useGridDimensions.js +97 -70
  84. package/modern/hooks/features/editing/gridEditingSelectors.js +6 -1
  85. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  86. package/modern/hooks/features/filter/gridFilterSelector.js +4 -3
  87. package/modern/hooks/features/filter/gridFilterState.js +5 -0
  88. package/modern/hooks/features/filter/useGridFilter.js +9 -14
  89. package/modern/hooks/features/overlays/useGridOverlays.js +1 -1
  90. package/modern/hooks/features/pagination/gridPaginationUtils.js +1 -1
  91. package/modern/hooks/features/pagination/useGridPagination.js +1 -1
  92. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  93. package/modern/hooks/features/rowSelection/utils.js +2 -2
  94. package/modern/hooks/features/rows/gridRowsUtils.js +0 -16
  95. package/modern/hooks/features/rows/useGridRows.js +4 -2
  96. package/modern/hooks/features/rows/useGridRowsMeta.js +33 -17
  97. package/modern/hooks/features/sorting/gridSortingSelector.js +10 -9
  98. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
  99. package/modern/hooks/utils/index.js +1 -1
  100. package/modern/hooks/utils/useGridApiEventHandler.js +68 -75
  101. package/modern/hooks/utils/useGridSelector.js +23 -5
  102. package/modern/hooks/utils/useIsSSR.js +5 -0
  103. package/modern/index.js +1 -1
  104. package/modern/internals/index.js +3 -1
  105. package/modern/internals/utils/propValidation.js +1 -1
  106. package/node/DataGrid/useDataGridComponent.js +2 -2
  107. package/node/components/GridRow.js +6 -2
  108. package/node/components/GridScrollArea.js +31 -24
  109. package/node/components/GridSkeletonLoadingOverlay.js +2 -1
  110. package/node/components/containers/GridRoot.js +10 -8
  111. package/node/components/containers/GridRootStyles.js +3 -3
  112. package/node/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  113. package/node/components/virtualization/GridMainContainer.js +1 -1
  114. package/node/components/virtualization/GridVirtualScroller.js +21 -14
  115. package/node/constants/index.js +11 -0
  116. package/node/constants/signature.js +16 -0
  117. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  118. package/node/hooks/core/useGridApiInitialization.js +2 -2
  119. package/node/hooks/core/useGridStateInitialization.js +3 -2
  120. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  121. package/node/hooks/features/columns/gridColumnsSelector.js +1 -13
  122. package/node/hooks/features/columns/useGridColumns.js +2 -1
  123. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +38 -2
  124. package/node/hooks/features/dimensions/index.js +13 -11
  125. package/node/hooks/features/dimensions/useGridDimensions.js +94 -67
  126. package/node/hooks/features/editing/gridEditingSelectors.js +5 -1
  127. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  128. package/node/hooks/features/filter/gridFilterSelector.js +4 -3
  129. package/node/hooks/features/filter/gridFilterState.js +6 -1
  130. package/node/hooks/features/filter/useGridFilter.js +8 -13
  131. package/node/hooks/features/overlays/useGridOverlays.js +1 -1
  132. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  133. package/node/hooks/features/pagination/useGridPagination.js +1 -1
  134. package/node/hooks/features/rowSelection/useGridRowSelection.js +5 -4
  135. package/node/hooks/features/rowSelection/utils.js +3 -3
  136. package/node/hooks/features/rows/gridRowsUtils.js +0 -17
  137. package/node/hooks/features/rows/useGridRows.js +6 -4
  138. package/node/hooks/features/rows/useGridRowsMeta.js +31 -15
  139. package/node/hooks/features/sorting/gridSortingSelector.js +10 -9
  140. package/node/hooks/features/virtualization/useGridVirtualScroller.js +42 -26
  141. package/node/hooks/utils/index.js +21 -11
  142. package/node/hooks/utils/useGridApiEventHandler.js +71 -78
  143. package/node/hooks/utils/useGridSelector.js +23 -5
  144. package/node/hooks/utils/useIsSSR.js +12 -0
  145. package/node/index.js +1 -1
  146. package/node/internals/index.js +32 -7
  147. package/node/internals/utils/propValidation.js +2 -2
  148. package/package.json +3 -2
@@ -10,12 +10,12 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _system = require("@mui/system");
12
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
13
+ var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
13
14
  var _GridScrollArea = require("../GridScrollArea");
14
15
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
15
16
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
16
17
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
17
18
  var _gridClasses = require("../../constants/gridClasses");
18
- var _dimensions = require("../../hooks/features/dimensions");
19
19
  var _useGridVirtualScroller = require("../../hooks/features/virtualization/useGridVirtualScroller");
20
20
  var _useGridOverlays = require("../../hooks/features/overlays/useGridOverlays");
21
21
  var _GridHeaders = require("../GridHeaders");
@@ -30,12 +30,13 @@ var _jsxRuntime = require("react/jsx-runtime");
30
30
  const useUtilityClasses = ownerState => {
31
31
  const {
32
32
  classes,
33
- dimensions,
33
+ hasScrollX,
34
+ hasPinnedRight,
34
35
  loadingOverlayVariant
35
36
  } = ownerState;
36
37
  const slots = {
37
- root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight', loadingOverlayVariant === 'skeleton' && 'main--hasSkeletonLoadingOverlay'],
38
- scroller: ['virtualScroller', dimensions.hasScrollX && 'virtualScroller--hasScrollX']
38
+ root: ['main', hasPinnedRight && 'main--hasPinnedRight', loadingOverlayVariant === 'skeleton' && 'main--hasSkeletonLoadingOverlay'],
39
+ scroller: ['virtualScroller', hasScrollX && 'virtualScroller--hasScrollX']
39
40
  };
40
41
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
41
42
  };
@@ -46,7 +47,7 @@ const Scroller = (0, _system.styled)('div', {
46
47
  const {
47
48
  ownerState
48
49
  } = props;
49
- return [styles.virtualScroller, ownerState.dimensions.hasScrollX && styles['virtualScroller--hasScrollX']];
50
+ return [styles.virtualScroller, ownerState.hasScrollX && styles['virtualScroller--hasScrollX']];
50
51
  }
51
52
  })({
52
53
  position: 'relative',
@@ -65,17 +66,22 @@ const Scroller = (0, _system.styled)('div', {
65
66
  // See https://github.com/mui/mui-x/issues/10547
66
67
  zIndex: 0
67
68
  });
69
+ const hasPinnedRightSelector = state => state.dimensions.rightPinnedWidth > 0;
68
70
  function GridVirtualScroller(props) {
69
71
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
70
72
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
71
- const dimensions = (0, _useGridSelector.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
73
+ const hasScrollY = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollYSelector);
74
+ const hasScrollX = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollXSelector);
75
+ const hasPinnedRight = (0, _useGridSelector.useGridSelector)(apiRef, hasPinnedRightSelector);
76
+ const hasBottomFiller = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasBottomFillerSelector);
72
77
  const {
73
78
  getOverlay,
74
79
  overlaysProps
75
80
  } = (0, _useGridOverlays.useGridOverlays)();
76
81
  const ownerState = {
77
82
  classes: rootProps.classes,
78
- dimensions,
83
+ hasScrollX,
84
+ hasPinnedRight,
79
85
  loadingOverlayVariant: overlaysProps.loadingOverlayVariant
80
86
  };
81
87
  const classes = useUtilityClasses(ownerState);
@@ -87,18 +93,19 @@ function GridVirtualScroller(props) {
87
93
  getRenderZoneProps,
88
94
  getScrollbarVerticalProps,
89
95
  getScrollbarHorizontalProps,
90
- getRows
96
+ getRows,
97
+ getScrollAreaProps
91
98
  } = virtualScroller;
92
99
  const rows = getRows();
93
100
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridMainContainer.GridMainContainer, (0, _extends2.default)({
94
101
  className: classes.root
95
102
  }, getContainerProps(), {
96
103
  ownerState: ownerState,
97
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, {
104
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, (0, _extends2.default)({
98
105
  scrollDirection: "left"
99
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, {
106
+ }, getScrollAreaProps())), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, (0, _extends2.default)({
100
107
  scrollDirection: "right"
101
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(Scroller, (0, _extends2.default)({
108
+ }, getScrollAreaProps())), /*#__PURE__*/(0, _jsxRuntime.jsxs)(Scroller, (0, _extends2.default)({
102
109
  className: classes.scroller
103
110
  }, getScrollerProps(), {
104
111
  ownerState: ownerState,
@@ -113,7 +120,7 @@ function GridVirtualScroller(props) {
113
120
  virtualScroller: virtualScroller
114
121
  })]
115
122
  }))
116
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerFiller.GridVirtualScrollerFiller, {
123
+ })), hasBottomFiller && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerFiller.GridVirtualScrollerFiller, {
117
124
  rowsLength: rows.length
118
125
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridBottomContainer.GridBottomContainer, {
119
126
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
@@ -121,9 +128,9 @@ function GridVirtualScroller(props) {
121
128
  virtualScroller: virtualScroller
122
129
  })
123
130
  })]
124
- })), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
131
+ })), hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
125
132
  position: "horizontal"
126
- }, getScrollbarHorizontalProps())), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
133
+ }, getScrollbarHorizontalProps())), hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
127
134
  position: "vertical"
128
135
  }, getScrollbarVerticalProps())), props.children]
129
136
  }));
@@ -35,4 +35,15 @@ Object.keys(_gridClasses).forEach(function (key) {
35
35
  return _gridClasses[key];
36
36
  }
37
37
  });
38
+ });
39
+ var _signature = require("./signature");
40
+ Object.keys(_signature).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _signature[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _signature[key];
47
+ }
48
+ });
38
49
  });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GridSignature = void 0;
7
+ /**
8
+ * Signal to the underlying logic what version of the public component API
9
+ * of the Data Grid is exposed.
10
+ */
11
+ let GridSignature = exports.GridSignature = /*#__PURE__*/function (GridSignature) {
12
+ GridSignature["DataGrid"] = "DataGrid";
13
+ GridSignature["DataGridPro"] = "DataGridPro";
14
+ GridSignature["DataGridPremium"] = "DataGridPremium";
15
+ return GridSignature;
16
+ }({});
@@ -7,20 +7,22 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useGridRegisterPipeProcessor = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var _useFirstRender = require("../../utils/useFirstRender");
10
- const useGridRegisterPipeProcessor = (apiRef, group, callback) => {
10
+ const useGridRegisterPipeProcessor = (apiRef, group, callback, enabled = true) => {
11
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);
15
15
  }, [apiRef, callback, group]);
16
16
  (0, _useFirstRender.useFirstRender)(() => {
17
- registerPreProcessor();
17
+ if (enabled) {
18
+ registerPreProcessor();
19
+ }
18
20
  });
19
21
  const isFirstRender = React.useRef(true);
20
22
  React.useEffect(() => {
21
23
  if (isFirstRender.current) {
22
24
  isFirstRender.current = false;
23
- } else {
25
+ } else if (enabled) {
24
26
  registerPreProcessor();
25
27
  }
26
28
  return () => {
@@ -29,6 +31,6 @@ const useGridRegisterPipeProcessor = (apiRef, group, callback) => {
29
31
  cleanup.current = null;
30
32
  }
31
33
  };
32
- }, [registerPreProcessor]);
34
+ }, [registerPreProcessor, enabled]);
33
35
  };
34
36
  exports.useGridRegisterPipeProcessor = useGridRegisterPipeProcessor;
@@ -10,7 +10,7 @@ var React = _interopRequireWildcard(require("react"));
10
10
  var _EventManager = require("@mui/x-internals/EventManager");
11
11
  var _Store = require("../../utils/Store");
12
12
  var _useGridApiMethod = require("../utils/useGridApiMethod");
13
- var _useGridApiEventHandler = require("../utils/useGridApiEventHandler");
13
+ var _signature = require("../../constants/signature");
14
14
  const SYMBOL_API_PRIVATE = Symbol('mui.api_private');
15
15
  const isSyntheticEvent = event => {
16
16
  return event.isPropagationStopped !== undefined;
@@ -90,7 +90,7 @@ function useGridApiInitialization(inputApiRef, props) {
90
90
  if (isSyntheticEvent(event) && event.isPropagationStopped()) {
91
91
  return;
92
92
  }
93
- const details = props.signature === _useGridApiEventHandler.GridSignature.DataGridPro || props.signature === _useGridApiEventHandler.GridSignature.DataGridPremium ? {
93
+ const details = props.signature === _signature.GridSignature.DataGridPro || props.signature === _signature.GridSignature.DataGridPremium ? {
94
94
  api: privateApiRef.current.getPublicApi()
95
95
  } : {};
96
96
  privateApiRef.current.eventManager.emit(name, params, event, details);
@@ -12,7 +12,6 @@ var _utils = require("../utils");
12
12
  var _utils2 = require("../../utils/utils");
13
13
  const useGridStateInitialization = apiRef => {
14
14
  const controlStateMapRef = React.useRef({});
15
- const [, rawForceUpdate] = React.useState();
16
15
  const registerControlState = React.useCallback(controlStateItem => {
17
16
  controlStateMapRef.current[controlStateItem.stateId] = controlStateItem;
18
17
  }, []);
@@ -87,7 +86,9 @@ const useGridStateInitialization = apiRef => {
87
86
  });
88
87
  }, reason);
89
88
  }, [apiRef]);
90
- const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);
89
+ const forceUpdate = React.useCallback(() => {
90
+ // @deprecated - do nothing
91
+ }, []);
91
92
  const publicStateApi = {
92
93
  setState,
93
94
  forceUpdate
@@ -15,7 +15,7 @@ var _useGridRootProps = require("../../utils/useGridRootProps");
15
15
  var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
16
16
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
17
17
  var _GridColumnHeaderItem = require("../../../components/columnHeaders/GridColumnHeaderItem");
18
- var _dimensions = require("../dimensions");
18
+ var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
19
19
  var _virtualization = require("../virtualization");
20
20
  var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller");
21
21
  var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
@@ -54,19 +54,17 @@ const useGridColumnHeaders = props => {
54
54
  const [resizeCol, setResizeCol] = React.useState('');
55
55
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
56
56
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
57
- const dimensions = (0, _utils.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
58
57
  const columnGroupsModel = (0, _utils.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsUnwrappedModelSelector);
59
58
  const columnPositions = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnPositionsSelector);
60
59
  const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
61
60
  const pinnedColumns = (0, _utils.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
62
61
  const columnsLookup = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnLookupSelector);
63
62
  const offsetLeft = (0, _useGridVirtualScroller.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length);
64
- const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
65
- React.useEffect(() => {
66
- if (apiRef.current.columnHeadersContainerRef.current) {
67
- apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
68
- }
69
- }, [apiRef]);
63
+ const columnsTotalWidth = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridColumnsTotalWidthSelector);
64
+ const gridHasFiller = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasFillerSelector);
65
+ const headerHeight = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHeaderHeightSelector);
66
+ const groupHeaderHeight = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridGroupHeaderHeightSelector);
67
+ const scrollbarWidth = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridVerticalScrollbarWidthSelector);
70
68
  const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
71
69
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
72
70
  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
@@ -138,8 +136,7 @@ const useGridColumnHeaders = props => {
138
136
  const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;
139
137
  const open = columnMenuState.open && columnMenuState.field === colDef.field;
140
138
  const pinnedPosition = params?.position;
141
- const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
142
- const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, colDef.computedWidth, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
139
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, colDef.computedWidth, columnIndex, columnPositions, columnsTotalWidth, scrollbarWidth);
143
140
  const siblingWithBorderingSeparator = pinnedPosition === _constants.PinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];
144
141
  const isSiblingFocused = siblingWithBorderingSeparator ? columnHeaderFocus !== null && columnHeaderFocus.field === siblingWithBorderingSeparator.field : false;
145
142
  const isLastUnpinned = columnIndex + 1 === columnPositions.length - pinnedColumns.right.length;
@@ -150,7 +147,7 @@ const useGridColumnHeaders = props => {
150
147
  columns.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderItem.GridColumnHeaderItem, (0, _extends2.default)({}, sortColumnLookup[colDef.field], {
151
148
  columnMenuOpen: open,
152
149
  filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
153
- headerHeight: dimensions.headerHeight,
150
+ headerHeight: headerHeight,
154
151
  isDragging: colDef.field === dragCol,
155
152
  colDef: colDef,
156
153
  colIndex: columnIndex,
@@ -242,8 +239,7 @@ const useGridColumnHeaders = props => {
242
239
  tabIndex
243
240
  };
244
241
  const pinnedPosition = params.position;
245
- const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
246
- const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, headerInfo.width, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
242
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, headerInfo.width, columnIndex, columnPositions, columnsTotalWidth, scrollbarWidth);
247
243
  columnIndex += columnFields.length;
248
244
  let indexInSection = index;
249
245
  if (pinnedPosition === _constants.PinnedColumnPosition.LEFT) {
@@ -258,7 +254,7 @@ const useGridColumnHeaders = props => {
258
254
  depth: depth,
259
255
  isLastColumn: index === visibleColumnGroupHeader.length - 1,
260
256
  maxDepth: headerGroupingMaxDepth,
261
- height: dimensions.groupHeaderHeight,
257
+ height: groupHeaderHeight,
262
258
  hasFocus: hasFocus,
263
259
  tabIndex: tabIndex,
264
260
  pinnedPosition: pinnedPosition,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridVisiblePinnedColumnDefinitionsSelector = exports.gridVisibleColumnFieldsSelector = exports.gridVisibleColumnDefinitionsSelector = exports.gridPinnedColumnsSelector = exports.gridHasColSpanSelector = exports.gridFilterableColumnLookupSelector = exports.gridFilterableColumnDefinitionsSelector = exports.gridColumnsTotalWidthSelector = exports.gridColumnsStateSelector = exports.gridColumnVisibilityModelSelector = exports.gridColumnPositionsSelector = exports.gridColumnLookupSelector = exports.gridColumnFieldsSelector = exports.gridColumnDefinitionsSelector = void 0;
6
+ exports.gridVisiblePinnedColumnDefinitionsSelector = exports.gridVisibleColumnFieldsSelector = exports.gridVisibleColumnDefinitionsSelector = exports.gridPinnedColumnsSelector = exports.gridHasColSpanSelector = exports.gridFilterableColumnLookupSelector = exports.gridFilterableColumnDefinitionsSelector = exports.gridColumnsStateSelector = exports.gridColumnVisibilityModelSelector = exports.gridColumnPositionsSelector = exports.gridColumnLookupSelector = exports.gridColumnFieldsSelector = exports.gridColumnDefinitionsSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  var _gridColumnsInterfaces = require("./gridColumnsInterfaces");
9
9
  var _gridCoreSelector = require("../../core/gridCoreSelector");
@@ -114,18 +114,6 @@ const gridColumnPositionsSelector = exports.gridColumnPositionsSelector = (0, _c
114
114
  return positions;
115
115
  });
116
116
 
117
- /**
118
- * Get the summed width of all the visible columns.
119
- * @category Visible Columns
120
- */
121
- const gridColumnsTotalWidthSelector = exports.gridColumnsTotalWidthSelector = (0, _createSelector.createSelector)(gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, (visibleColumns, positions) => {
122
- const colCount = visibleColumns.length;
123
- if (colCount === 0) {
124
- return 0;
125
- }
126
- return positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth;
127
- });
128
-
129
117
  /**
130
118
  * Get the filterable columns as an array.
131
119
  * @category Columns
@@ -12,6 +12,7 @@ var React = _interopRequireWildcard(require("react"));
12
12
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
13
13
  var _useGridLogger = require("../../utils/useGridLogger");
14
14
  var _gridColumnsSelector = require("./gridColumnsSelector");
15
+ var _signature = require("../../../constants/signature");
15
16
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
16
17
  var _pipeProcessing = require("../../core/pipeProcessing");
17
18
  var _gridColumnsInterfaces = require("./gridColumnsInterfaces");
@@ -166,7 +167,7 @@ function useGridColumns(apiRef, props) {
166
167
  setColumnIndex
167
168
  };
168
169
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, columnApi, 'public');
169
- (0, _useGridApiMethod.useGridApiMethod)(apiRef, columnReorderApi, props.signature === _useGridApiEventHandler.GridSignature.DataGrid ? 'private' : 'public');
170
+ (0, _useGridApiMethod.useGridApiMethod)(apiRef, columnReorderApi, props.signature === _signature.GridSignature.DataGrid ? 'private' : 'public');
170
171
 
171
172
  /**
172
173
  * PRE-PROCESSING
@@ -3,6 +3,42 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridDimensionsSelector = void 0;
6
+ exports.gridVerticalScrollbarWidthSelector = exports.gridRowHeightSelector = exports.gridHorizontalScrollbarHeightSelector = exports.gridHeaderHeightSelector = exports.gridHeaderFilterHeightSelector = exports.gridHasScrollYSelector = exports.gridHasScrollXSelector = exports.gridHasFillerSelector = exports.gridHasBottomFillerSelector = exports.gridGroupHeaderHeightSelector = exports.gridDimensionsSelector = exports.gridContentHeightSelector = exports.gridColumnsTotalWidthSelector = void 0;
7
+ var _createSelector = require("../../../utils/createSelector");
7
8
  const gridDimensionsSelector = state => state.dimensions;
8
- exports.gridDimensionsSelector = gridDimensionsSelector;
9
+
10
+ /**
11
+ * Get the summed width of all the visible columns.
12
+ * @category Visible Columns
13
+ */
14
+ exports.gridDimensionsSelector = gridDimensionsSelector;
15
+ const gridColumnsTotalWidthSelector = exports.gridColumnsTotalWidthSelector = (0, _createSelector.createSelector)(gridDimensionsSelector, dimensions => dimensions.columnsTotalWidth);
16
+ const gridRowHeightSelector = state => state.dimensions.rowHeight;
17
+ exports.gridRowHeightSelector = gridRowHeightSelector;
18
+ const gridContentHeightSelector = state => state.dimensions.contentSize.height;
19
+ exports.gridContentHeightSelector = gridContentHeightSelector;
20
+ const gridHasScrollXSelector = state => state.dimensions.hasScrollX;
21
+ exports.gridHasScrollXSelector = gridHasScrollXSelector;
22
+ const gridHasScrollYSelector = state => state.dimensions.hasScrollY;
23
+ exports.gridHasScrollYSelector = gridHasScrollYSelector;
24
+ const gridHasFillerSelector = state => state.dimensions.columnsTotalWidth < state.dimensions.viewportOuterSize.width;
25
+ exports.gridHasFillerSelector = gridHasFillerSelector;
26
+ const gridHeaderHeightSelector = state => state.dimensions.headerHeight;
27
+ exports.gridHeaderHeightSelector = gridHeaderHeightSelector;
28
+ const gridGroupHeaderHeightSelector = state => state.dimensions.groupHeaderHeight;
29
+ exports.gridGroupHeaderHeightSelector = gridGroupHeaderHeightSelector;
30
+ const gridHeaderFilterHeightSelector = state => state.dimensions.headerFilterHeight;
31
+ exports.gridHeaderFilterHeightSelector = gridHeaderFilterHeightSelector;
32
+ const gridVerticalScrollbarWidthSelector = state => state.dimensions.hasScrollY ? state.dimensions.scrollbarSize : 0;
33
+ exports.gridVerticalScrollbarWidthSelector = gridVerticalScrollbarWidthSelector;
34
+ const gridHorizontalScrollbarHeightSelector = state => state.dimensions.hasScrollX ? state.dimensions.scrollbarSize : 0;
35
+ exports.gridHorizontalScrollbarHeightSelector = gridHorizontalScrollbarHeightSelector;
36
+ const gridHasBottomFillerSelector = state => {
37
+ const height = state.dimensions.hasScrollX ? state.dimensions.scrollbarSize : 0;
38
+ const needsLastRowBorder = state.dimensions.viewportOuterSize.height - state.dimensions.minimumSize.height > 0;
39
+ if (height === 0 && !needsLastRowBorder) {
40
+ return false;
41
+ }
42
+ return true;
43
+ };
44
+ exports.gridHasBottomFillerSelector = gridHasBottomFillerSelector;
@@ -3,14 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
7
- Object.keys(_gridDimensionsSelectors).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _gridDimensionsSelectors[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _gridDimensionsSelectors[key];
14
- }
15
- });
16
- });
6
+ Object.defineProperty(exports, "gridColumnsTotalWidthSelector", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _gridDimensionsSelectors.gridColumnsTotalWidthSelector;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "gridDimensionsSelector", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _gridDimensionsSelectors.gridDimensionsSelector;
16
+ }
17
+ });
18
+ var _gridDimensionsSelectors = require("./gridDimensionsSelectors");