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

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 (189) hide show
  1. package/CHANGELOG.md +117 -1
  2. package/DataGrid/DataGrid.js +44 -0
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +3 -2
  5. package/components/GridColumnHeaders.d.ts +1 -2
  6. package/components/GridColumnHeaders.js +6 -17
  7. package/components/GridHeaders.js +1 -4
  8. package/components/GridPagination.js +2 -7
  9. package/components/GridRow.d.ts +1 -1
  10. package/components/GridRow.js +4 -19
  11. package/components/GridScrollArea.d.ts +10 -0
  12. package/components/GridScrollArea.js +150 -0
  13. package/components/cell/GridCell.d.ts +7 -0
  14. package/components/cell/GridCell.js +11 -3
  15. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  16. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  17. package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  18. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  19. package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  20. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  21. package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  22. package/components/containers/GridRootStyles.js +12 -20
  23. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  24. package/components/virtualization/GridVirtualScroller.js +6 -1
  25. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  26. package/constants/gridClasses.d.ts +6 -32
  27. package/constants/gridClasses.js +1 -1
  28. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  29. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  30. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
  31. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  32. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  33. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  34. package/hooks/features/columnResize/columnResizeState.js +1 -0
  35. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  36. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  37. package/hooks/features/columnResize/index.d.ts +3 -0
  38. package/hooks/features/columnResize/index.js +3 -0
  39. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  40. package/hooks/features/columnResize/useGridColumnResize.js +563 -0
  41. package/hooks/features/columns/gridColumnsUtils.js +4 -1
  42. package/hooks/features/dimensions/useGridDimensions.js +4 -5
  43. package/hooks/features/editing/useGridCellEditing.js +21 -2
  44. package/hooks/features/export/useGridPrintExport.js +8 -7
  45. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  46. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
  47. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
  48. package/hooks/features/index.d.ts +1 -0
  49. package/hooks/features/index.js +1 -0
  50. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  51. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  52. package/hooks/features/pagination/gridPaginationSelector.js +8 -2
  53. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  54. package/hooks/features/pagination/useGridPagination.js +9 -157
  55. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  56. package/hooks/features/pagination/useGridPaginationModel.js +170 -0
  57. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  58. package/hooks/features/pagination/useGridRowCount.js +97 -0
  59. package/hooks/features/scroll/useGridScroll.js +1 -1
  60. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  61. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  62. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  63. package/hooks/utils/useLazyRef.d.ts +1 -2
  64. package/hooks/utils/useLazyRef.js +1 -11
  65. package/hooks/utils/useOnMount.d.ts +1 -2
  66. package/hooks/utils/useOnMount.js +1 -7
  67. package/hooks/utils/useTimeout.d.ts +1 -11
  68. package/hooks/utils/useTimeout.js +1 -36
  69. package/index.js +1 -1
  70. package/internals/index.d.ts +1 -1
  71. package/internals/index.js +1 -1
  72. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  73. package/internals/utils/getPinnedCellOffset.js +17 -0
  74. package/joy/joySlots.js +13 -52
  75. package/locales/jaJP.js +3 -4
  76. package/material/index.js +0 -2
  77. package/models/api/gridApiCommon.d.ts +3 -3
  78. package/models/api/gridCoreApi.d.ts +1 -5
  79. package/models/events/gridEventLookup.d.ts +6 -0
  80. package/models/gridHeaderFilteringModel.d.ts +1 -0
  81. package/models/gridSlotsComponent.d.ts +0 -5
  82. package/models/gridStateCommunity.d.ts +2 -0
  83. package/models/params/gridScrollParams.d.ts +5 -3
  84. package/models/props/DataGridProps.d.ts +35 -1
  85. package/modern/DataGrid/DataGrid.js +44 -0
  86. package/modern/DataGrid/useDataGridComponent.js +3 -0
  87. package/modern/DataGrid/useDataGridProps.js +3 -2
  88. package/modern/components/GridColumnHeaders.js +6 -17
  89. package/modern/components/GridHeaders.js +1 -4
  90. package/modern/components/GridPagination.js +2 -4
  91. package/modern/components/GridRow.js +4 -19
  92. package/modern/components/GridScrollArea.js +150 -0
  93. package/modern/components/cell/GridCell.js +11 -3
  94. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  95. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  96. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  97. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  98. package/modern/components/containers/GridRootStyles.js +12 -20
  99. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  100. package/modern/components/virtualization/GridVirtualScroller.js +6 -1
  101. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  102. package/modern/constants/gridClasses.js +1 -1
  103. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  104. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  105. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  106. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  107. package/modern/hooks/features/columnResize/index.js +3 -0
  108. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  109. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
  110. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
  111. package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
  112. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  113. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  114. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  115. package/modern/hooks/features/index.js +1 -0
  116. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  117. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  118. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  119. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  120. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  121. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  122. package/modern/hooks/utils/useLazyRef.js +1 -11
  123. package/modern/hooks/utils/useOnMount.js +1 -7
  124. package/modern/hooks/utils/useTimeout.js +1 -36
  125. package/modern/index.js +1 -1
  126. package/modern/internals/index.js +1 -1
  127. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  128. package/modern/joy/joySlots.js +11 -50
  129. package/modern/locales/jaJP.js +3 -4
  130. package/modern/material/index.js +0 -2
  131. package/modern/utils/cellBorderUtils.js +8 -0
  132. package/modern/utils/domUtils.js +144 -0
  133. package/node/DataGrid/DataGrid.js +44 -0
  134. package/node/DataGrid/useDataGridComponent.js +3 -0
  135. package/node/DataGrid/useDataGridProps.js +3 -2
  136. package/node/components/GridColumnHeaders.js +6 -16
  137. package/node/components/GridHeaders.js +1 -4
  138. package/node/components/GridPagination.js +1 -3
  139. package/node/components/GridRow.js +3 -18
  140. package/node/components/GridScrollArea.js +158 -0
  141. package/node/components/cell/GridCell.js +12 -4
  142. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  143. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  144. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  145. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  146. package/node/components/containers/GridRootStyles.js +12 -20
  147. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  148. package/node/components/virtualization/GridVirtualScroller.js +6 -1
  149. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  150. package/node/constants/gridClasses.js +1 -1
  151. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  152. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  153. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  154. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  155. package/node/hooks/features/columnResize/index.js +38 -0
  156. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  157. package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
  158. package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
  159. package/node/hooks/features/editing/useGridCellEditing.js +21 -2
  160. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  161. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  162. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  163. package/node/hooks/features/index.js +11 -0
  164. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  165. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  166. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  167. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  168. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  169. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  170. package/node/hooks/utils/useLazyRef.js +7 -13
  171. package/node/hooks/utils/useOnMount.js +8 -10
  172. package/node/hooks/utils/useTimeout.js +7 -37
  173. package/node/index.js +1 -1
  174. package/node/internals/index.js +15 -8
  175. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  176. package/node/joy/joySlots.js +11 -50
  177. package/node/locales/jaJP.js +3 -4
  178. package/node/material/index.js +0 -2
  179. package/node/utils/cellBorderUtils.js +16 -0
  180. package/node/utils/domUtils.js +155 -0
  181. package/package.json +1 -1
  182. package/utils/cellBorderUtils.d.ts +3 -0
  183. package/utils/cellBorderUtils.js +8 -0
  184. package/utils/domUtils.d.ts +14 -1
  185. package/utils/domUtils.js +147 -0
  186. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  187. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  188. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  189. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -3,9 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridHeaderFilteringStateSelector = exports.gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringEditFieldSelector = void 0;
6
+ exports.gridHeaderFilteringStateSelector = exports.gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringEnabledSelector = exports.gridHeaderFilteringEditFieldSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  const gridHeaderFilteringStateSelector = state => state.headerFiltering;
9
9
  exports.gridHeaderFilteringStateSelector = gridHeaderFilteringStateSelector;
10
+ const gridHeaderFilteringEnabledSelector = exports.gridHeaderFilteringEnabledSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector,
11
+ // No initialization in MIT, so we need to default to false to be used by `getTotalHeaderHeight`
12
+ headerFilteringState => headerFilteringState?.enabled ?? false);
10
13
  const gridHeaderFilteringEditFieldSelector = exports.gridHeaderFilteringEditFieldSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);
11
14
  const gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringMenuSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);
@@ -12,8 +12,10 @@ var _utils = require("../../utils");
12
12
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
13
13
  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); }
14
14
  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; }
15
- const headerFilteringStateInitializer = state => (0, _extends2.default)({}, state, {
15
+ const headerFilteringStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
16
+ // @ts-expect-error Access `Pro` prop in MIT
16
17
  headerFiltering: {
18
+ enabled: props.headerFilters ?? false,
17
19
  editing: null,
18
20
  menuOpen: null
19
21
  }
@@ -21,6 +23,8 @@ const headerFilteringStateInitializer = state => (0, _extends2.default)({}, stat
21
23
  exports.headerFilteringStateInitializer = headerFilteringStateInitializer;
22
24
  const useGridHeaderFiltering = (apiRef, props) => {
23
25
  const logger = (0, _utils.useGridLogger)(apiRef, 'useGridHeaderFiltering');
26
+ // @ts-expect-error Access `Pro` prop in MIT
27
+ const isHeaderFilteringEnabled = props.headerFilters ?? false;
24
28
  const setHeaderFilterState = React.useCallback(headerFilterState => {
25
29
  apiRef.current.setState(state => {
26
30
  // Safety check to avoid MIT users from using it
@@ -30,13 +34,14 @@ const useGridHeaderFiltering = (apiRef, props) => {
30
34
  }
31
35
  return (0, _extends2.default)({}, state, {
32
36
  headerFiltering: {
37
+ enabled: isHeaderFilteringEnabled ?? false,
33
38
  editing: headerFilterState.editing ?? null,
34
39
  menuOpen: headerFilterState.menuOpen ?? null
35
40
  }
36
41
  });
37
42
  });
38
43
  apiRef.current.forceUpdate();
39
- }, [apiRef, props.signature]);
44
+ }, [apiRef, props.signature, isHeaderFilteringEnabled]);
40
45
  const startHeaderFilterEditMode = React.useCallback(field => {
41
46
  logger.debug(`Starting edit mode on header filter for field: ${field}`);
42
47
  apiRef.current.setHeaderFilterState({
@@ -97,5 +102,19 @@ const useGridHeaderFiltering = (apiRef, props) => {
97
102
  };
98
103
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterApi, 'public');
99
104
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterPrivateApi, 'private');
105
+
106
+ /*
107
+ * EFFECTS
108
+ */
109
+ const isFirstRender = React.useRef(true);
110
+ React.useEffect(() => {
111
+ if (isFirstRender.current) {
112
+ isFirstRender.current = false;
113
+ } else {
114
+ apiRef.current.setHeaderFilterState({
115
+ enabled: isHeaderFilteringEnabled
116
+ });
117
+ }
118
+ }, [apiRef, isHeaderFilteringEnabled]);
100
119
  };
101
120
  exports.useGridHeaderFiltering = useGridHeaderFiltering;
@@ -36,6 +36,17 @@ Object.keys(_columnGrouping).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _columnResize = require("./columnResize");
40
+ Object.keys(_columnResize).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _columnResize[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _columnResize[key];
47
+ }
48
+ });
49
+ });
39
50
  var _density = require("./density");
40
51
  Object.keys(_density).forEach(function (key) {
41
52
  if (key === "default" || key === "__esModule") return;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridPaginationSelector = exports.gridPaginationRowRangeSelector = exports.gridPaginationModelSelector = exports.gridPaginatedVisibleSortedGridRowIdsSelector = exports.gridPaginatedVisibleSortedGridRowEntriesSelector = exports.gridPageSizeSelector = exports.gridPageSelector = exports.gridPageCountSelector = void 0;
6
+ exports.gridPaginationSelector = exports.gridPaginationRowRangeSelector = exports.gridPaginationRowCountSelector = exports.gridPaginationModelSelector = exports.gridPaginatedVisibleSortedGridRowIdsSelector = exports.gridPaginatedVisibleSortedGridRowEntriesSelector = exports.gridPageSizeSelector = exports.gridPageSelector = exports.gridPageCountSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  var _gridFilterSelector = require("../filter/gridFilterSelector");
9
9
  var _gridRowsSelector = require("../rows/gridRowsSelector");
@@ -21,6 +21,12 @@ const gridPaginationSelector = state => state.pagination;
21
21
  exports.gridPaginationSelector = gridPaginationSelector;
22
22
  const gridPaginationModelSelector = exports.gridPaginationModelSelector = (0, _createSelector.createSelector)(gridPaginationSelector, pagination => pagination.paginationModel);
23
23
 
24
+ /**
25
+ * Get the row count
26
+ * @category Pagination
27
+ */
28
+ const gridPaginationRowCountSelector = exports.gridPaginationRowCountSelector = (0, _createSelector.createSelector)(gridPaginationSelector, pagination => pagination.rowCount);
29
+
24
30
  /**
25
31
  * Get the index of the page to render if the pagination is enabled
26
32
  * @category Pagination
@@ -37,7 +43,7 @@ const gridPageSizeSelector = exports.gridPageSizeSelector = (0, _createSelector.
37
43
  * Get the amount of pages needed to display all the rows if the pagination is enabled
38
44
  * @category Pagination
39
45
  */
40
- const gridPageCountSelector = exports.gridPageCountSelector = (0, _createSelector.createSelector)(gridPaginationModelSelector, _gridFilterSelector.gridFilteredTopLevelRowCountSelector, (paginationModel, visibleTopLevelRowCount) => (0, _gridPaginationUtils.getPageCount)(visibleTopLevelRowCount, paginationModel.pageSize));
46
+ const gridPageCountSelector = exports.gridPageCountSelector = (0, _createSelector.createSelector)(gridPageSizeSelector, gridPaginationRowCountSelector, (pageSize, rowCount) => (0, _gridPaginationUtils.getPageCount)(rowCount, pageSize));
41
47
 
42
48
  /**
43
49
  * Get the index of the first and the last row to include in the current page if the pagination is enabled.
@@ -4,174 +4,30 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useGridPagination = exports.paginationStateInitializer = exports.mergeStateWithPaginationModel = void 0;
7
+ exports.useGridPagination = exports.paginationStateInitializer = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var React = _interopRequireWildcard(require("react"));
10
- var _filter = require("../filter");
11
- var _density = require("../density");
12
- var _utils = require("../../utils");
13
- var _pipeProcessing = require("../../core/pipeProcessing");
14
- var _gridPaginationSelector = require("./gridPaginationSelector");
15
9
  var _gridPaginationUtils = require("./gridPaginationUtils");
16
- 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); }
17
- 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; }
10
+ var _useGridPaginationModel = require("./useGridPaginationModel");
11
+ var _useGridRowCount = require("./useGridRowCount");
18
12
  const paginationStateInitializer = (state, props) => {
19
13
  const paginationModel = (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);
20
14
  (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, props.signature);
15
+ const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount;
21
16
  return (0, _extends2.default)({}, state, {
22
17
  pagination: {
23
- paginationModel
18
+ paginationModel,
19
+ rowCount
24
20
  }
25
21
  });
26
22
  };
27
- exports.paginationStateInitializer = paginationStateInitializer;
28
- const mergeStateWithPaginationModel = (rowCount, signature, paginationModelProp) => paginationState => {
29
- let paginationModel = paginationState.paginationModel;
30
- const pageSize = paginationModelProp?.pageSize ?? paginationModel.pageSize;
31
- const pageCount = (0, _gridPaginationUtils.getPageCount)(rowCount, pageSize);
32
- if (paginationModelProp && (paginationModelProp?.page !== paginationModel.page || paginationModelProp?.pageSize !== paginationModel.pageSize)) {
33
- paginationModel = paginationModelProp;
34
- }
35
- const validPage = (0, _gridPaginationUtils.getValidPage)(paginationModel.page, pageCount);
36
- if (validPage !== paginationModel.page) {
37
- paginationModel = (0, _extends2.default)({}, paginationModel, {
38
- page: validPage
39
- });
40
- }
41
- (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, signature);
42
- return {
43
- paginationModel
44
- };
45
- };
46
23
 
47
24
  /**
48
25
  * @requires useGridFilter (state)
49
26
  * @requires useGridDimensions (event) - can be after
50
27
  */
51
- exports.mergeStateWithPaginationModel = mergeStateWithPaginationModel;
28
+ exports.paginationStateInitializer = paginationStateInitializer;
52
29
  const useGridPagination = (apiRef, props) => {
53
- const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPagination');
54
- const visibleTopLevelRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridFilteredTopLevelRowCountSelector);
55
- const densityFactor = (0, _utils.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
56
- const rowHeight = Math.floor(props.rowHeight * densityFactor);
57
- apiRef.current.registerControlState({
58
- stateId: 'pagination',
59
- propModel: props.paginationModel,
60
- propOnChange: props.onPaginationModelChange,
61
- stateSelector: _gridPaginationSelector.gridPaginationModelSelector,
62
- changeEvent: 'paginationModelChange'
63
- });
64
-
65
- /**
66
- * API METHODS
67
- */
68
- const setPage = React.useCallback(page => {
69
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
70
- if (page === currentModel.page) {
71
- return;
72
- }
73
- logger.debug(`Setting page to ${page}`);
74
- apiRef.current.setPaginationModel({
75
- page,
76
- pageSize: currentModel.pageSize
77
- });
78
- }, [apiRef, logger]);
79
- const setPageSize = React.useCallback(pageSize => {
80
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
81
- if (pageSize === currentModel.pageSize) {
82
- return;
83
- }
84
- logger.debug(`Setting page size to ${pageSize}`);
85
- apiRef.current.setPaginationModel({
86
- pageSize,
87
- page: currentModel.page
88
- });
89
- }, [apiRef, logger]);
90
- const setPaginationModel = React.useCallback(paginationModel => {
91
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
92
- if (paginationModel === currentModel) {
93
- return;
94
- }
95
- logger.debug("Setting 'paginationModel' to", paginationModel);
96
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, paginationModel), 'setPaginationModel');
97
- apiRef.current.forceUpdate();
98
- }, [apiRef, logger, props.rowCount, props.signature, visibleTopLevelRowCount]);
99
- const pageApi = {
100
- setPage,
101
- setPageSize,
102
- setPaginationModel
103
- };
104
- (0, _utils.useGridApiMethod)(apiRef, pageApi, 'public');
105
-
106
- /**
107
- * PRE-PROCESSING
108
- */
109
- const stateExportPreProcessing = React.useCallback((prevState, context) => {
110
- const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
111
- const shouldExportPaginationModel =
112
- // Always export if the `exportOnlyDirtyModels` property is not activated
113
- !context.exportOnlyDirtyModels ||
114
- // Always export if the `paginationModel` is controlled
115
- props.paginationModel != null ||
116
- // Always export if the `paginationModel` has been initialized
117
- props.initialState?.pagination?.paginationModel != null ||
118
- // Export if `page` or `pageSize` is not equal to the default value
119
- paginationModel.page !== 0 && paginationModel.pageSize !== (0, _gridPaginationUtils.defaultPageSize)(props.autoPageSize);
120
- if (!shouldExportPaginationModel) {
121
- return prevState;
122
- }
123
- return (0, _extends2.default)({}, prevState, {
124
- pagination: (0, _extends2.default)({}, prevState.pagination, {
125
- paginationModel
126
- })
127
- });
128
- }, [apiRef, props.paginationModel, props.initialState?.pagination?.paginationModel, props.autoPageSize]);
129
- const stateRestorePreProcessing = React.useCallback((params, context) => {
130
- const paginationModel = context.stateToRestore.pagination?.paginationModel ? (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), context.stateToRestore.pagination?.paginationModel) : (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
131
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, paginationModel), 'stateRestorePreProcessing');
132
- return params;
133
- }, [apiRef, props.autoPageSize, props.rowCount, props.signature, visibleTopLevelRowCount]);
134
- (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
135
- (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
136
-
137
- /**
138
- * EVENTS
139
- */
140
- const handlePaginationModelChange = () => {
141
- const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
142
- if (apiRef.current.virtualScrollerRef?.current) {
143
- apiRef.current.scrollToIndexes({
144
- rowIndex: paginationModel.page * paginationModel.pageSize
145
- });
146
- }
147
- apiRef.current.forceUpdate();
148
- };
149
- const handleUpdateAutoPageSize = React.useCallback(() => {
150
- if (!props.autoPageSize) {
151
- return;
152
- }
153
- const dimensions = apiRef.current.getRootDimensions();
154
- const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
155
- apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
156
- }, [apiRef, props.autoPageSize, rowHeight]);
157
- (0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
158
- (0, _utils.useGridApiEventHandler)(apiRef, 'paginationModelChange', handlePaginationModelChange);
159
-
160
- /**
161
- * EFFECTS
162
- */
163
- React.useEffect(() => {
164
- if (process.env.NODE_ENV !== 'production') {
165
- if (props.paginationMode === 'server' && props.rowCount == null) {
166
- (0, _gridPaginationUtils.noRowCountInServerMode)();
167
- }
168
- }
169
- }, [props.rowCount, props.paginationMode]);
170
- React.useEffect(() => {
171
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, props.paginationModel));
172
- }, [apiRef, props.paginationModel, props.rowCount, props.paginationMode, visibleTopLevelRowCount, props.signature]);
173
- React.useEffect(() => {
174
- handleUpdateAutoPageSize();
175
- }, [handleUpdateAutoPageSize]);
30
+ (0, _useGridPaginationModel.useGridPaginationModel)(apiRef, props);
31
+ (0, _useGridRowCount.useGridRowCount)(apiRef, props);
176
32
  };
177
33
  exports.useGridPagination = useGridPagination;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useGridPaginationModel = exports.getDerivedPaginationModel = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _density = require("../density");
11
+ var _utils = require("../../utils");
12
+ var _pipeProcessing = require("../../core/pipeProcessing");
13
+ var _gridPaginationSelector = require("./gridPaginationSelector");
14
+ var _gridPaginationUtils = require("./gridPaginationUtils");
15
+ 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); }
16
+ 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; }
17
+ const getDerivedPaginationModel = (paginationState, signature, paginationModelProp) => {
18
+ let paginationModel = paginationState.paginationModel;
19
+ const rowCount = paginationState.rowCount;
20
+ const pageSize = paginationModelProp?.pageSize ?? paginationModel.pageSize;
21
+ const pageCount = (0, _gridPaginationUtils.getPageCount)(rowCount, pageSize);
22
+ if (paginationModelProp && (paginationModelProp?.page !== paginationModel.page || paginationModelProp?.pageSize !== paginationModel.pageSize)) {
23
+ paginationModel = paginationModelProp;
24
+ }
25
+ const validPage = (0, _gridPaginationUtils.getValidPage)(paginationModel.page, pageCount);
26
+ if (validPage !== paginationModel.page) {
27
+ paginationModel = (0, _extends2.default)({}, paginationModel, {
28
+ page: validPage
29
+ });
30
+ }
31
+ (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, signature);
32
+ return paginationModel;
33
+ };
34
+
35
+ /**
36
+ * @requires useGridFilter (state)
37
+ * @requires useGridDimensions (event) - can be after
38
+ */
39
+ exports.getDerivedPaginationModel = getDerivedPaginationModel;
40
+ const useGridPaginationModel = (apiRef, props) => {
41
+ const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPaginationModel');
42
+ const densityFactor = (0, _utils.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
43
+ const rowHeight = Math.floor(props.rowHeight * densityFactor);
44
+ apiRef.current.registerControlState({
45
+ stateId: 'paginationModel',
46
+ propModel: props.paginationModel,
47
+ propOnChange: props.onPaginationModelChange,
48
+ stateSelector: _gridPaginationSelector.gridPaginationModelSelector,
49
+ changeEvent: 'paginationModelChange'
50
+ });
51
+
52
+ /**
53
+ * API METHODS
54
+ */
55
+ const setPage = React.useCallback(page => {
56
+ const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
57
+ if (page === currentModel.page) {
58
+ return;
59
+ }
60
+ logger.debug(`Setting page to ${page}`);
61
+ apiRef.current.setPaginationModel({
62
+ page,
63
+ pageSize: currentModel.pageSize
64
+ });
65
+ }, [apiRef, logger]);
66
+ const setPageSize = React.useCallback(pageSize => {
67
+ const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
68
+ if (pageSize === currentModel.pageSize) {
69
+ return;
70
+ }
71
+ logger.debug(`Setting page size to ${pageSize}`);
72
+ apiRef.current.setPaginationModel({
73
+ pageSize,
74
+ page: currentModel.page
75
+ });
76
+ }, [apiRef, logger]);
77
+ const setPaginationModel = React.useCallback(paginationModel => {
78
+ const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
79
+ if (paginationModel === currentModel) {
80
+ return;
81
+ }
82
+ logger.debug("Setting 'paginationModel' to", paginationModel);
83
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
84
+ pagination: (0, _extends2.default)({}, state.pagination, {
85
+ paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
86
+ })
87
+ }));
88
+ }, [apiRef, logger, props.signature]);
89
+ const paginationModelApi = {
90
+ setPage,
91
+ setPageSize,
92
+ setPaginationModel
93
+ };
94
+ (0, _utils.useGridApiMethod)(apiRef, paginationModelApi, 'public');
95
+
96
+ /**
97
+ * PRE-PROCESSING
98
+ */
99
+ const stateExportPreProcessing = React.useCallback((prevState, context) => {
100
+ const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
101
+ const shouldExportPaginationModel =
102
+ // Always export if the `exportOnlyDirtyModels` property is not activated
103
+ !context.exportOnlyDirtyModels ||
104
+ // Always export if the `paginationModel` is controlled
105
+ props.paginationModel != null ||
106
+ // Always export if the `paginationModel` has been initialized
107
+ props.initialState?.pagination?.paginationModel != null ||
108
+ // Export if `page` or `pageSize` is not equal to the default value
109
+ paginationModel.page !== 0 && paginationModel.pageSize !== (0, _gridPaginationUtils.defaultPageSize)(props.autoPageSize);
110
+ if (!shouldExportPaginationModel) {
111
+ return prevState;
112
+ }
113
+ return (0, _extends2.default)({}, prevState, {
114
+ pagination: (0, _extends2.default)({}, prevState.pagination, {
115
+ paginationModel
116
+ })
117
+ });
118
+ }, [apiRef, props.paginationModel, props.initialState?.pagination?.paginationModel, props.autoPageSize]);
119
+ const stateRestorePreProcessing = React.useCallback((params, context) => {
120
+ const paginationModel = context.stateToRestore.pagination?.paginationModel ? (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), context.stateToRestore.pagination?.paginationModel) : (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
121
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
122
+ pagination: (0, _extends2.default)({}, state.pagination, {
123
+ paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
124
+ })
125
+ }));
126
+ return params;
127
+ }, [apiRef, props.autoPageSize, props.signature]);
128
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
129
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
130
+
131
+ /**
132
+ * EVENTS
133
+ */
134
+ const handlePaginationModelChange = () => {
135
+ const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
136
+ if (apiRef.current.virtualScrollerRef?.current) {
137
+ apiRef.current.scrollToIndexes({
138
+ rowIndex: paginationModel.page * paginationModel.pageSize
139
+ });
140
+ }
141
+ };
142
+ const handleUpdateAutoPageSize = React.useCallback(() => {
143
+ if (!props.autoPageSize) {
144
+ return;
145
+ }
146
+ const dimensions = apiRef.current.getRootDimensions();
147
+ const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
148
+ apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
149
+ }, [apiRef, props.autoPageSize, rowHeight]);
150
+ const handleRowCountChange = React.useCallback(newRowCount => {
151
+ if (newRowCount == null) {
152
+ return;
153
+ }
154
+ const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
155
+ const pageCount = (0, _gridPaginationSelector.gridPageCountSelector)(apiRef);
156
+ if (paginationModel.page > pageCount - 1) {
157
+ apiRef.current.setPage(Math.max(0, pageCount - 1));
158
+ }
159
+ }, [apiRef]);
160
+ (0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
161
+ (0, _utils.useGridApiEventHandler)(apiRef, 'paginationModelChange', handlePaginationModelChange);
162
+ (0, _utils.useGridApiEventHandler)(apiRef, 'rowCountChange', handleRowCountChange);
163
+
164
+ /**
165
+ * EFFECTS
166
+ */
167
+ React.useEffect(() => {
168
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
169
+ pagination: (0, _extends2.default)({}, state.pagination, {
170
+ paginationModel: getDerivedPaginationModel(state.pagination, props.signature, props.paginationModel)
171
+ })
172
+ }));
173
+ }, [apiRef, props.paginationModel, props.paginationMode, props.signature]);
174
+ React.useEffect(handleUpdateAutoPageSize, [handleUpdateAutoPageSize]);
175
+ };
176
+ exports.useGridPaginationModel = useGridPaginationModel;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useGridRowCount = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _filter = require("../filter");
11
+ var _utils = require("../../utils");
12
+ var _pipeProcessing = require("../../core/pipeProcessing");
13
+ var _gridPaginationSelector = require("./gridPaginationSelector");
14
+ var _gridPaginationUtils = require("./gridPaginationUtils");
15
+ 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); }
16
+ 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; }
17
+ /**
18
+ * @requires useGridFilter (state)
19
+ * @requires useGridDimensions (event) - can be after
20
+ */
21
+ const useGridRowCount = (apiRef, props) => {
22
+ const logger = (0, _utils.useGridLogger)(apiRef, 'useGridRowCount');
23
+ const visibleTopLevelRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridFilteredTopLevelRowCountSelector);
24
+ const rowCount = (0, _utils.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationRowCountSelector);
25
+ apiRef.current.registerControlState({
26
+ stateId: 'paginationRowCount',
27
+ propModel: props.rowCount,
28
+ propOnChange: props.onRowCountChange,
29
+ stateSelector: _gridPaginationSelector.gridPaginationRowCountSelector,
30
+ changeEvent: 'rowCountChange'
31
+ });
32
+
33
+ /**
34
+ * API METHODS
35
+ */
36
+ const setRowCount = React.useCallback(newRowCount => {
37
+ if (rowCount === newRowCount) {
38
+ return;
39
+ }
40
+ logger.debug("Setting 'rowCount' to", newRowCount);
41
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
42
+ pagination: (0, _extends2.default)({}, state.pagination, {
43
+ rowCount: newRowCount
44
+ })
45
+ }));
46
+ }, [apiRef, logger, rowCount]);
47
+ const paginationRowCountApi = {
48
+ setRowCount
49
+ };
50
+ (0, _utils.useGridApiMethod)(apiRef, paginationRowCountApi, 'public');
51
+
52
+ /**
53
+ * PRE-PROCESSING
54
+ */
55
+ const stateExportPreProcessing = React.useCallback((prevState, context) => {
56
+ const exportedRowCount = (0, _gridPaginationSelector.gridPaginationRowCountSelector)(apiRef);
57
+ const shouldExportRowCount =
58
+ // Always export if the `exportOnlyDirtyModels` property is not activated
59
+ !context.exportOnlyDirtyModels ||
60
+ // Always export if the `rowCount` is controlled
61
+ props.rowCount != null ||
62
+ // Always export if the `rowCount` has been initialized
63
+ props.initialState?.pagination?.rowCount != null;
64
+ if (!shouldExportRowCount) {
65
+ return prevState;
66
+ }
67
+ return (0, _extends2.default)({}, prevState, {
68
+ pagination: (0, _extends2.default)({}, prevState.pagination, {
69
+ rowCount: exportedRowCount
70
+ })
71
+ });
72
+ }, [apiRef, props.rowCount, props.initialState?.pagination?.rowCount]);
73
+ const stateRestorePreProcessing = React.useCallback((params, context) => {
74
+ const restoredRowCount = context.stateToRestore.pagination?.rowCount ? context.stateToRestore.pagination.rowCount : (0, _gridPaginationSelector.gridPaginationRowCountSelector)(apiRef);
75
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
76
+ pagination: (0, _extends2.default)({}, state.pagination, {
77
+ rowCount: restoredRowCount
78
+ })
79
+ }));
80
+ return params;
81
+ }, [apiRef]);
82
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
83
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
84
+
85
+ /**
86
+ * EFFECTS
87
+ */
88
+ React.useEffect(() => {
89
+ if (process.env.NODE_ENV !== 'production') {
90
+ if (props.paginationMode === 'server' && props.rowCount == null) {
91
+ (0, _gridPaginationUtils.noRowCountInServerMode)();
92
+ }
93
+ }
94
+ }, [props.rowCount, props.paginationMode]);
95
+ React.useEffect(() => {
96
+ if (props.paginationMode === 'client') {
97
+ apiRef.current.setRowCount(visibleTopLevelRowCount);
98
+ } else if (props.rowCount != null) {
99
+ apiRef.current.setRowCount(props.rowCount);
100
+ }
101
+ }, [apiRef, visibleTopLevelRowCount, props.paginationMode, props.rowCount]);
102
+ };
103
+ exports.useGridRowCount = useGridRowCount;
@@ -52,7 +52,7 @@ function scrollIntoView(dimensions) {
52
52
  const useGridScroll = (apiRef, props) => {
53
53
  const theme = (0, _styles.useTheme)();
54
54
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridScroll');
55
- const colRef = apiRef.current.columnHeadersElementRef;
55
+ const colRef = apiRef.current.columnHeadersContainerRef;
56
56
  const virtualScrollerRef = apiRef.current.virtualScrollerRef;
57
57
  const visibleSortedRows = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridExpandedSortedRowEntriesSelector);
58
58
  const scrollToIndexes = React.useCallback(params => {
@@ -38,8 +38,6 @@ const gridRenderContextSelector = exports.gridRenderContextSelector = (0, _creat
38
38
  * @ignore - do not document.
39
39
  */
40
40
  const gridRenderContextColumnsSelector = exports.gridRenderContextColumnsSelector = (0, _createSelector.createSelectorMemoized)(state => state.virtualization.renderContext.firstColumnIndex, state => state.virtualization.renderContext.lastColumnIndex, (firstColumnIndex, lastColumnIndex) => ({
41
- firstRowIndex: -1,
42
- lastRowIndex: -1,
43
41
  firstColumnIndex,
44
42
  lastColumnIndex
45
43
  }));
@@ -1,19 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.useLazyRef = useLazyRef;
7
- var React = _interopRequireWildcard(require("react"));
8
- 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); }
9
- 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; }
10
- const UNINITIALIZED = {};
11
-
12
- // See https://github.com/facebook/react/issues/14490 for when to use this.
13
- function useLazyRef(init, initArg) {
14
- const ref = React.useRef(UNINITIALIZED);
15
- if (ref.current === UNINITIALIZED) {
16
- ref.current = init(initArg);
7
+ Object.defineProperty(exports, "useLazyRef", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _useLazyRef.default;
17
11
  }
18
- return ref;
19
- }
12
+ });
13
+ var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));