@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.
- package/CHANGELOG.md +117 -1
- package/DataGrid/DataGrid.js +44 -0
- package/DataGrid/useDataGridComponent.js +3 -0
- package/DataGrid/useDataGridProps.js +3 -2
- package/components/GridColumnHeaders.d.ts +1 -2
- package/components/GridColumnHeaders.js +6 -17
- package/components/GridHeaders.js +1 -4
- package/components/GridPagination.js +2 -7
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +4 -19
- package/components/GridScrollArea.d.ts +10 -0
- package/components/GridScrollArea.js +150 -0
- package/components/cell/GridCell.d.ts +7 -0
- package/components/cell/GridCell.js +11 -3
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/components/containers/GridRootStyles.js +12 -20
- package/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/components/virtualization/GridVirtualScroller.js +6 -1
- package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/constants/gridClasses.d.ts +6 -32
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
- package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeState.js +1 -0
- package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
- package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
- package/hooks/features/columnResize/index.d.ts +3 -0
- package/hooks/features/columnResize/index.js +3 -0
- package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
- package/hooks/features/columnResize/useGridColumnResize.js +563 -0
- package/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/hooks/features/dimensions/useGridDimensions.js +4 -5
- package/hooks/features/editing/useGridCellEditing.js +21 -2
- package/hooks/features/export/useGridPrintExport.js +8 -7
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
- package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
- package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
- package/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/hooks/features/pagination/useGridPagination.d.ts +1 -6
- package/hooks/features/pagination/useGridPagination.js +9 -157
- package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
- package/hooks/features/pagination/useGridPaginationModel.js +170 -0
- package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
- package/hooks/features/pagination/useGridRowCount.js +97 -0
- package/hooks/features/scroll/useGridScroll.js +1 -1
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
- package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
- package/hooks/utils/useLazyRef.d.ts +1 -2
- package/hooks/utils/useLazyRef.js +1 -11
- package/hooks/utils/useOnMount.d.ts +1 -2
- package/hooks/utils/useOnMount.js +1 -7
- package/hooks/utils/useTimeout.d.ts +1 -11
- package/hooks/utils/useTimeout.js +1 -36
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +1 -1
- package/internals/utils/getPinnedCellOffset.d.ts +3 -0
- package/internals/utils/getPinnedCellOffset.js +17 -0
- package/joy/joySlots.js +13 -52
- package/locales/jaJP.js +3 -4
- package/material/index.js +0 -2
- package/models/api/gridApiCommon.d.ts +3 -3
- package/models/api/gridCoreApi.d.ts +1 -5
- package/models/events/gridEventLookup.d.ts +6 -0
- package/models/gridHeaderFilteringModel.d.ts +1 -0
- package/models/gridSlotsComponent.d.ts +0 -5
- package/models/gridStateCommunity.d.ts +2 -0
- package/models/params/gridScrollParams.d.ts +5 -3
- package/models/props/DataGridProps.d.ts +35 -1
- package/modern/DataGrid/DataGrid.js +44 -0
- package/modern/DataGrid/useDataGridComponent.js +3 -0
- package/modern/DataGrid/useDataGridProps.js +3 -2
- package/modern/components/GridColumnHeaders.js +6 -17
- package/modern/components/GridHeaders.js +1 -4
- package/modern/components/GridPagination.js +2 -4
- package/modern/components/GridRow.js +4 -19
- package/modern/components/GridScrollArea.js +150 -0
- package/modern/components/cell/GridCell.js +11 -3
- package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/modern/components/containers/GridRootStyles.js +12 -20
- package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/modern/components/virtualization/GridVirtualScroller.js +6 -1
- package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
- package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
- package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
- package/modern/hooks/features/columnResize/index.js +3 -0
- package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
- package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
- package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
- package/modern/hooks/features/export/useGridPrintExport.js +8 -7
- package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
- package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/modern/hooks/features/pagination/useGridPagination.js +8 -149
- package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
- package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
- package/modern/hooks/features/scroll/useGridScroll.js +1 -1
- package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/modern/hooks/utils/useLazyRef.js +1 -11
- package/modern/hooks/utils/useOnMount.js +1 -7
- package/modern/hooks/utils/useTimeout.js +1 -36
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -1
- package/modern/internals/utils/getPinnedCellOffset.js +17 -0
- package/modern/joy/joySlots.js +11 -50
- package/modern/locales/jaJP.js +3 -4
- package/modern/material/index.js +0 -2
- package/modern/utils/cellBorderUtils.js +8 -0
- package/modern/utils/domUtils.js +144 -0
- package/node/DataGrid/DataGrid.js +44 -0
- package/node/DataGrid/useDataGridComponent.js +3 -0
- package/node/DataGrid/useDataGridProps.js +3 -2
- package/node/components/GridColumnHeaders.js +6 -16
- package/node/components/GridHeaders.js +1 -4
- package/node/components/GridPagination.js +1 -3
- package/node/components/GridRow.js +3 -18
- package/node/components/GridScrollArea.js +158 -0
- package/node/components/cell/GridCell.js +12 -4
- package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/node/components/containers/GridRootStyles.js +12 -20
- package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/node/components/virtualization/GridVirtualScroller.js +6 -1
- package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
- package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
- package/node/hooks/features/columnResize/columnResizeState.js +5 -0
- package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
- package/node/hooks/features/columnResize/index.js +38 -0
- package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
- package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
- package/node/hooks/features/editing/useGridCellEditing.js +21 -2
- package/node/hooks/features/export/useGridPrintExport.js +8 -7
- package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
- package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
- package/node/hooks/features/index.js +11 -0
- package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/node/hooks/features/pagination/useGridPagination.js +9 -153
- package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
- package/node/hooks/features/pagination/useGridRowCount.js +103 -0
- package/node/hooks/features/scroll/useGridScroll.js +1 -1
- package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/node/hooks/utils/useLazyRef.js +7 -13
- package/node/hooks/utils/useOnMount.js +8 -10
- package/node/hooks/utils/useTimeout.js +7 -37
- package/node/index.js +1 -1
- package/node/internals/index.js +15 -8
- package/node/internals/utils/getPinnedCellOffset.js +24 -0
- package/node/joy/joySlots.js +11 -50
- package/node/locales/jaJP.js +3 -4
- package/node/material/index.js +0 -2
- package/node/utils/cellBorderUtils.js +16 -0
- package/node/utils/domUtils.js +155 -0
- package/package.json +1 -1
- package/utils/cellBorderUtils.d.ts +3 -0
- package/utils/cellBorderUtils.js +8 -0
- package/utils/domUtils.d.ts +14 -1
- package/utils/domUtils.js +147 -0
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
- package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
- 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)(
|
|
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 =
|
|
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
|
-
|
|
17
|
-
|
|
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.
|
|
28
|
+
exports.paginationStateInitializer = paginationStateInitializer;
|
|
52
29
|
const useGridPagination = (apiRef, props) => {
|
|
53
|
-
|
|
54
|
-
|
|
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.
|
|
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
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
19
|
-
|
|
12
|
+
});
|
|
13
|
+
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|