@mui/x-data-grid-pro 8.0.0-beta.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +423 -96
- package/DataGridPro/DataGridPro.js +31 -24
- package/DataGridPro/useDataGridProComponent.d.ts +2 -2
- package/DataGridPro/useDataGridProComponent.js +2 -3
- package/DataGridPro/useDataGridProProps.js +1 -1
- package/esm/DataGridPro/DataGridPro.js +32 -25
- package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
- package/esm/DataGridPro/useDataGridProComponent.js +2 -3
- package/esm/DataGridPro/useDataGridProProps.js +1 -1
- package/esm/hooks/features/columnPinning/useGridColumnPinning.js +2 -2
- package/esm/hooks/features/columnReorder/useGridColumnReorder.js +8 -8
- package/esm/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
- package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +36 -8
- package/esm/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
- package/esm/hooks/features/dataSource/utils.d.ts +3 -2
- package/esm/hooks/features/dataSource/utils.js +13 -1
- package/esm/hooks/features/detailPanel/useGridDetailPanel.js +4 -4
- package/esm/hooks/features/infiniteLoader/useGridInfiniteLoader.js +2 -2
- package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
- package/esm/hooks/features/lazyLoader/useGridLazyLoader.js +5 -5
- package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
- package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
- package/esm/hooks/features/rowReorder/useGridRowReorder.js +6 -6
- package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +90 -18
- package/esm/hooks/features/treeData/useGridTreeData.js +2 -2
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -0
- package/esm/internals/index.js +1 -0
- package/esm/material/icons.d.ts +3 -6
- package/esm/material/icons.js +1 -1
- package/esm/material/index.d.ts +2 -2
- package/esm/models/dataGridProProps.d.ts +8 -8
- package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
- package/esm/package.json +1 -1
- package/hooks/features/columnPinning/useGridColumnPinning.js +1 -1
- package/hooks/features/columnReorder/useGridColumnReorder.js +7 -7
- package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
- package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
- package/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
- package/hooks/features/dataSource/utils.d.ts +3 -2
- package/hooks/features/dataSource/utils.js +15 -2
- package/hooks/features/detailPanel/useGridDetailPanel.js +3 -3
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
- package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
- package/hooks/features/lazyLoader/useGridLazyLoader.js +4 -4
- package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
- package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
- package/hooks/features/rowReorder/useGridRowReorder.js +5 -5
- package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +89 -17
- package/hooks/features/treeData/useGridTreeData.js +1 -1
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +15 -7
- package/material/icons.d.ts +3 -6
- package/material/icons.js +3 -3
- package/material/index.d.ts +2 -2
- package/models/dataGridProProps.d.ts +8 -8
- package/models/gridProIconSlotsComponent.d.ts +6 -3
- package/package.json +11 -17
- package/esm/utils/releaseInfo.d.ts +0 -1
- package/esm/utils/releaseInfo.js +0 -13
- package/modern/DataGridPro/DataGrid.d.ts +0 -8
- package/modern/DataGridPro/DataGrid.js +0 -19
- package/modern/DataGridPro/DataGridPro.d.ts +0 -16
- package/modern/DataGridPro/DataGridPro.js +0 -1014
- package/modern/DataGridPro/index.d.ts +0 -3
- package/modern/DataGridPro/index.js +0 -3
- package/modern/DataGridPro/useDataGridProComponent.d.ts +0 -4
- package/modern/DataGridPro/useDataGridProComponent.js +0 -105
- package/modern/DataGridPro/useDataGridProProps.d.ts +0 -7
- package/modern/DataGridPro/useDataGridProProps.js +0 -54
- package/modern/components/GridColumnHeaders.d.ts +0 -5
- package/modern/components/GridColumnHeaders.js +0 -92
- package/modern/components/GridColumnMenuPinningItem.d.ts +0 -7
- package/modern/components/GridColumnMenuPinningItem.js +0 -77
- package/modern/components/GridDataSourceTreeDataGroupingCell.d.ts +0 -12
- package/modern/components/GridDataSourceTreeDataGroupingCell.js +0 -107
- package/modern/components/GridDetailPanel.d.ts +0 -14
- package/modern/components/GridDetailPanel.js +0 -53
- package/modern/components/GridDetailPanelToggleCell.d.ts +0 -7
- package/modern/components/GridDetailPanelToggleCell.js +0 -121
- package/modern/components/GridDetailPanels.d.ts +0 -3
- package/modern/components/GridDetailPanels.js +0 -67
- package/modern/components/GridPinnedRows.d.ts +0 -6
- package/modern/components/GridPinnedRows.js +0 -40
- package/modern/components/GridProColumnMenu.d.ts +0 -24
- package/modern/components/GridProColumnMenu.js +0 -21
- package/modern/components/GridRowReorderCell.d.ts +0 -8
- package/modern/components/GridRowReorderCell.js +0 -140
- package/modern/components/GridTreeDataGroupingCell.d.ts +0 -15
- package/modern/components/GridTreeDataGroupingCell.js +0 -133
- package/modern/components/headerFiltering/GridHeaderFilterCell.d.ts +0 -26
- package/modern/components/headerFiltering/GridHeaderFilterCell.js +0 -362
- package/modern/components/headerFiltering/GridHeaderFilterClearButton.d.ts +0 -6
- package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +0 -17
- package/modern/components/headerFiltering/GridHeaderFilterMenu.d.ts +0 -30
- package/modern/components/headerFiltering/GridHeaderFilterMenu.js +0 -137
- package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.d.ts +0 -17
- package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -138
- package/modern/components/headerFiltering/index.d.ts +0 -3
- package/modern/components/headerFiltering/index.js +0 -3
- package/modern/components/index.d.ts +0 -6
- package/modern/components/index.js +0 -7
- package/modern/components/reexports.d.ts +0 -1
- package/modern/components/reexports.js +0 -1
- package/modern/constants/dataGridProDefaultSlotsComponents.d.ts +0 -2
- package/modern/constants/dataGridProDefaultSlotsComponents.js +0 -17
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -12
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -143
- package/modern/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +0 -40
- package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
- package/modern/hooks/features/columnPinning/index.d.ts +0 -1
- package/modern/hooks/features/columnPinning/index.js +0 -1
- package/modern/hooks/features/columnPinning/useGridColumnPinning.d.ts +0 -6
- package/modern/hooks/features/columnPinning/useGridColumnPinning.js +0 -228
- package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +0 -4
- package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +0 -105
- package/modern/hooks/features/columnReorder/columnReorderInterfaces.d.ts +0 -6
- package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
- package/modern/hooks/features/columnReorder/columnReorderSelector.d.ts +0 -3
- package/modern/hooks/features/columnReorder/columnReorderSelector.js +0 -3
- package/modern/hooks/features/columnReorder/index.d.ts +0 -2
- package/modern/hooks/features/columnReorder/index.js +0 -2
- package/modern/hooks/features/columnReorder/useGridColumnReorder.d.ts +0 -9
- package/modern/hooks/features/columnReorder/useGridColumnReorder.js +0 -242
- package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +0 -7
- package/modern/hooks/features/dataSource/gridDataSourceSelector.js +0 -6
- package/modern/hooks/features/dataSource/models.d.ts +0 -75
- package/modern/hooks/features/dataSource/models.js +0 -1
- package/modern/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +0 -33
- package/modern/hooks/features/dataSource/useGridDataSourceBasePro.js +0 -179
- package/modern/hooks/features/dataSource/useGridDataSourcePro.d.ts +0 -6
- package/modern/hooks/features/dataSource/useGridDataSourcePro.js +0 -35
- package/modern/hooks/features/dataSource/utils.d.ts +0 -29
- package/modern/hooks/features/dataSource/utils.js +0 -82
- package/modern/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +0 -41
- package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
- package/modern/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +0 -14
- package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -5
- package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +0 -4
- package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
- package/modern/hooks/features/detailPanel/index.d.ts +0 -3
- package/modern/hooks/features/detailPanel/index.js +0 -3
- package/modern/hooks/features/detailPanel/useGridDetailPanel.d.ts +0 -6
- package/modern/hooks/features/detailPanel/useGridDetailPanel.js +0 -191
- package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +0 -4
- package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
- package/modern/hooks/features/index.d.ts +0 -7
- package/modern/hooks/features/index.js +0 -8
- package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +0 -9
- package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +0 -104
- package/modern/hooks/features/lazyLoader/useGridLazyLoader.d.ts +0 -10
- package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +0 -90
- package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +0 -5
- package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
- package/modern/hooks/features/lazyLoader/utils.d.ts +0 -18
- package/modern/hooks/features/lazyLoader/utils.js +0 -34
- package/modern/hooks/features/rowPinning/gridRowPinningInterface.d.ts +0 -17
- package/modern/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
- package/modern/hooks/features/rowPinning/gridRowPinningSelector.d.ts +0 -1
- package/modern/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
- package/modern/hooks/features/rowPinning/index.d.ts +0 -1
- package/modern/hooks/features/rowPinning/index.js +0 -1
- package/modern/hooks/features/rowPinning/useGridRowPinning.d.ts +0 -6
- package/modern/hooks/features/rowPinning/useGridRowPinning.js +0 -52
- package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +0 -38
- package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +0 -119
- package/modern/hooks/features/rowReorder/gridRowReorderColDef.d.ts +0 -2
- package/modern/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
- package/modern/hooks/features/rowReorder/index.d.ts +0 -1
- package/modern/hooks/features/rowReorder/index.js +0 -1
- package/modern/hooks/features/rowReorder/useGridRowReorder.d.ts +0 -8
- package/modern/hooks/features/rowReorder/useGridRowReorder.js +0 -141
- package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +0 -4
- package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +0 -46
- package/modern/hooks/features/rows/index.d.ts +0 -1
- package/modern/hooks/features/rows/index.js +0 -1
- package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -3
- package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
- package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.d.ts +0 -10
- package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +0 -290
- package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.d.ts +0 -4
- package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +0 -148
- package/modern/hooks/features/serverSideTreeData/utils.d.ts +0 -7
- package/modern/hooks/features/serverSideTreeData/utils.js +0 -18
- package/modern/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +0 -8
- package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
- package/modern/hooks/features/treeData/gridTreeDataUtils.d.ts +0 -22
- package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -95
- package/modern/hooks/features/treeData/index.d.ts +0 -1
- package/modern/hooks/features/treeData/index.js +0 -1
- package/modern/hooks/features/treeData/useGridTreeData.d.ts +0 -4
- package/modern/hooks/features/treeData/useGridTreeData.js +0 -22
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +0 -4
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +0 -148
- package/modern/hooks/index.d.ts +0 -1
- package/modern/hooks/index.js +0 -1
- package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
- package/modern/hooks/utils/useGridApiContext.js +0 -2
- package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
- package/modern/hooks/utils/useGridApiRef.js +0 -2
- package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
- package/modern/hooks/utils/useGridAriaAttributes.js +0 -11
- package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
- package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
- package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
- package/modern/hooks/utils/useGridRootProps.js +0 -2
- package/modern/index.d.ts +0 -22
- package/modern/index.js +0 -25
- package/modern/internals/index.d.ts +0 -33
- package/modern/internals/index.js +0 -38
- package/modern/internals/propValidation.d.ts +0 -3
- package/modern/internals/propValidation.js +0 -2
- package/modern/locales.d.ts +0 -1
- package/modern/locales.js +0 -1
- package/modern/material/icons.d.ts +0 -6
- package/modern/material/icons.js +0 -17
- package/modern/material/index.d.ts +0 -5
- package/modern/material/index.js +0 -8
- package/modern/models/dataGridProProps.d.ts +0 -222
- package/modern/models/dataGridProProps.js +0 -1
- package/modern/models/gridApiPro.d.ts +0 -11
- package/modern/models/gridApiPro.js +0 -1
- package/modern/models/gridFetchRowsParams.d.ts +0 -22
- package/modern/models/gridFetchRowsParams.js +0 -1
- package/modern/models/gridGroupingColDefOverride.d.ts +0 -30
- package/modern/models/gridGroupingColDefOverride.js +0 -1
- package/modern/models/gridProIconSlotsComponent.d.ts +0 -13
- package/modern/models/gridProIconSlotsComponent.js +0 -1
- package/modern/models/gridProSlotProps.d.ts +0 -8
- package/modern/models/gridProSlotProps.js +0 -1
- package/modern/models/gridProSlotsComponent.d.ts +0 -18
- package/modern/models/gridProSlotsComponent.js +0 -1
- package/modern/models/gridRowOrderChangeParams.d.ts +0 -18
- package/modern/models/gridRowOrderChangeParams.js +0 -1
- package/modern/models/gridRowScrollEndParams.d.ts +0 -18
- package/modern/models/gridRowScrollEndParams.js +0 -1
- package/modern/models/gridStatePro.d.ts +0 -19
- package/modern/models/gridStatePro.js +0 -1
- package/modern/models/index.d.ts +0 -7
- package/modern/models/index.js +0 -7
- package/modern/package.json +0 -1
- package/modern/themeAugmentation/index.d.ts +0 -2
- package/modern/themeAugmentation/index.js +0 -4
- package/modern/themeAugmentation/overrides.d.ts +0 -7
- package/modern/themeAugmentation/overrides.js +0 -1
- package/modern/themeAugmentation/props.d.ts +0 -15
- package/modern/themeAugmentation/props.js +0 -1
- package/modern/typeOverloads/index.d.ts +0 -1
- package/modern/typeOverloads/index.js +0 -1
- package/modern/typeOverloads/modules.d.ts +0 -70
- package/modern/typeOverloads/modules.js +0 -1
- package/modern/typeOverloads/reexports.d.ts +0 -17
- package/modern/typeOverloads/reexports.js +0 -15
- package/modern/utils/index.d.ts +0 -1
- package/modern/utils/index.js +0 -1
- package/modern/utils/releaseInfo.d.ts +0 -1
- package/modern/utils/releaseInfo.js +0 -13
- package/modern/utils/tree/createRowTree.d.ts +0 -17
- package/modern/utils/tree/createRowTree.js +0 -37
- package/modern/utils/tree/index.d.ts +0 -1
- package/modern/utils/tree/index.js +0 -1
- package/modern/utils/tree/insertDataRowInTree.d.ts +0 -69
- package/modern/utils/tree/insertDataRowInTree.js +0 -141
- package/modern/utils/tree/models.d.ts +0 -14
- package/modern/utils/tree/models.js +0 -1
- package/modern/utils/tree/removeDataRowFromTree.d.ts +0 -45
- package/modern/utils/tree/removeDataRowFromTree.js +0 -94
- package/modern/utils/tree/sortRowTree.d.ts +0 -15
- package/modern/utils/tree/sortRowTree.js +0 -114
- package/modern/utils/tree/updateRowTree.d.ts +0 -20
- package/modern/utils/tree/updateRowTree.js +0 -88
- package/modern/utils/tree/utils.d.ts +0 -54
- package/modern/utils/tree/utils.js +0 -197
- package/tsconfig.build.tsbuildinfo +0 -1
- package/utils/releaseInfo.d.ts +0 -1
- package/utils/releaseInfo.js +0 -20
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import composeClasses from '@mui/utils/composeClasses';
|
|
3
|
-
import { useGridLogger,
|
|
3
|
+
import { useGridLogger, useGridEvent, getDataGridUtilityClass, useGridSelector, gridSortModelSelector, gridRowMaximumTreeDepthSelector, useGridEventPriority, gridRowNodeSelector } from '@mui/x-data-grid';
|
|
4
4
|
import { gridEditRowsStateSelector, gridSortedRowIndexLookupSelector } from '@mui/x-data-grid/internals';
|
|
5
5
|
import { GRID_REORDER_COL_DEF } from "./gridRowReorderColDef.js";
|
|
6
6
|
var Direction = /*#__PURE__*/function (Direction) {
|
|
@@ -133,9 +133,9 @@ export const useGridRowReorder = (apiRef, props) => {
|
|
|
133
133
|
}
|
|
134
134
|
setDragRowId('');
|
|
135
135
|
}, [apiRef, dragRowId, isRowReorderDisabled, logger, sortedRowIndexLookup]);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
useGridEvent(apiRef, 'rowDragStart', handleDragStart);
|
|
137
|
+
useGridEvent(apiRef, 'rowDragOver', handleDragOver);
|
|
138
|
+
useGridEvent(apiRef, 'rowDragEnd', handleDragEnd);
|
|
139
|
+
useGridEvent(apiRef, 'cellDragOver', handleDragOver);
|
|
140
|
+
useGridEventPriority(apiRef, 'rowOrderChange', props.onRowOrderChange);
|
|
141
141
|
};
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { throttle } from '@mui/x-internals/throttle';
|
|
4
4
|
import { unstable_debounce as debounce } from '@mui/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { useGridEvent, gridSortModelSelector, gridFilterModelSelector, GRID_ROOT_GROUP_ID, gridPaginationModelSelector, gridDimensionsSelector, gridFilteredSortedRowIdsSelector, gridRowIdSelector } from '@mui/x-data-grid';
|
|
6
6
|
import { getVisibleRows, gridRenderContextSelector, GridStrategyGroup, useGridRegisterStrategyProcessor, runIf, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
|
|
7
7
|
import { findSkeletonRowsSection } from "../lazyLoader/utils.js";
|
|
8
8
|
import { GRID_SKELETON_ROW_ROOT_ID } from "../lazyLoader/useGridLazyLoaderPreProcessors.js";
|
|
@@ -87,6 +87,7 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
87
87
|
}, [privateApiRef, resetGrid]);
|
|
88
88
|
const addSkeletonRows = React.useCallback(() => {
|
|
89
89
|
const tree = privateApiRef.current.state.rows.tree;
|
|
90
|
+
const dataRowIdToModelLookup = privateApiRef.current.state.rows.dataRowIdToModelLookup;
|
|
90
91
|
const rootGroup = tree[GRID_ROOT_GROUP_ID];
|
|
91
92
|
const rootGroupChildren = [...rootGroup.children];
|
|
92
93
|
const pageRowCount = privateApiRef.current.state.pagination.rowCount;
|
|
@@ -94,18 +95,28 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
94
95
|
|
|
95
96
|
/**
|
|
96
97
|
* Do nothing if
|
|
97
|
-
* - rowCount is unknown
|
|
98
98
|
* - children count is 0
|
|
99
|
-
* - children count is equal to rowCount
|
|
100
99
|
*/
|
|
101
|
-
if (
|
|
100
|
+
if (rootChildrenCount === 0) {
|
|
102
101
|
return;
|
|
103
102
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
const pageToSkip = adjustRowParams({
|
|
104
|
+
start: renderedRowsIntervalCache.current.firstRowToRender,
|
|
105
|
+
end: renderedRowsIntervalCache.current.lastRowToRender
|
|
106
|
+
});
|
|
107
|
+
let hasChanged = false;
|
|
108
|
+
const isInitialPage = renderedRowsIntervalCache.current.firstRowToRender === 0 && renderedRowsIntervalCache.current.lastRowToRender === 0;
|
|
109
|
+
for (let i = 0; i < rootChildrenCount; i += 1) {
|
|
110
|
+
if (isInitialPage) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
// replace the rows not in the viewport with skeleton rows
|
|
114
|
+
if (pageToSkip.start <= i && i <= pageToSkip.end || tree[rootGroupChildren[i]]?.type === 'skeletonRow') {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const skeletonId = getSkeletonRowId(i); // to avoid duplicate keys on rebuild
|
|
118
|
+
const removedRow = rootGroupChildren[i];
|
|
119
|
+
rootGroupChildren[i] = skeletonId;
|
|
109
120
|
const skeletonRowNode = {
|
|
110
121
|
type: 'skeletonRow',
|
|
111
122
|
id: skeletonId,
|
|
@@ -113,16 +124,40 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
113
124
|
depth: 0
|
|
114
125
|
};
|
|
115
126
|
tree[skeletonId] = skeletonRowNode;
|
|
127
|
+
delete tree[removedRow];
|
|
128
|
+
delete dataRowIdToModelLookup[removedRow];
|
|
129
|
+
hasChanged = true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Should only happen with VIEWPORT loading trigger
|
|
133
|
+
if (loadingTrigger.current === LoadingTrigger.VIEWPORT) {
|
|
134
|
+
// fill the grid with skeleton rows
|
|
135
|
+
for (let i = 0; i < pageRowCount - rootChildrenCount; i += 1) {
|
|
136
|
+
const skeletonId = getSkeletonRowId(i + rootChildrenCount); // to avoid duplicate keys on rebuild
|
|
137
|
+
rootGroupChildren.push(skeletonId);
|
|
138
|
+
const skeletonRowNode = {
|
|
139
|
+
type: 'skeletonRow',
|
|
140
|
+
id: skeletonId,
|
|
141
|
+
parent: GRID_ROOT_GROUP_ID,
|
|
142
|
+
depth: 0
|
|
143
|
+
};
|
|
144
|
+
tree[skeletonId] = skeletonRowNode;
|
|
145
|
+
hasChanged = true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!hasChanged) {
|
|
149
|
+
return;
|
|
116
150
|
}
|
|
117
151
|
tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {
|
|
118
152
|
children: rootGroupChildren
|
|
119
153
|
});
|
|
120
154
|
privateApiRef.current.setState(state => _extends({}, state, {
|
|
121
155
|
rows: _extends({}, state.rows, {
|
|
122
|
-
tree
|
|
156
|
+
tree,
|
|
157
|
+
dataRowIdToModelLookup
|
|
123
158
|
})
|
|
124
159
|
}), 'addSkeletonRows');
|
|
125
|
-
}, [privateApiRef]);
|
|
160
|
+
}, [privateApiRef, adjustRowParams]);
|
|
126
161
|
const updateLoadingTrigger = React.useCallback(rowCount => {
|
|
127
162
|
const newLoadingTrigger = rowCount === -1 ? LoadingTrigger.SCROLL_END : LoadingTrigger.VIEWPORT;
|
|
128
163
|
if (loadingTrigger.current !== null) {
|
|
@@ -141,6 +176,8 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
141
176
|
fetchParams
|
|
142
177
|
} = params;
|
|
143
178
|
const pageRowCount = privateApiRef.current.state.pagination.rowCount;
|
|
179
|
+
const tree = privateApiRef.current.state.rows.tree;
|
|
180
|
+
const dataRowIdToModelLookup = privateApiRef.current.state.rows.dataRowIdToModelLookup;
|
|
144
181
|
if (response.rowCount !== undefined || pageRowCount === undefined) {
|
|
145
182
|
privateApiRef.current.setRowCount(response.rowCount === undefined ? -1 : response.rowCount);
|
|
146
183
|
}
|
|
@@ -153,8 +190,43 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
153
190
|
// the rows can safely be replaced. skeleton rows will be added later
|
|
154
191
|
privateApiRef.current.setRows(response.rows);
|
|
155
192
|
} else {
|
|
193
|
+
const rootGroup = tree[GRID_ROOT_GROUP_ID];
|
|
194
|
+
const rootGroupChildren = [...rootGroup.children];
|
|
156
195
|
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(privateApiRef);
|
|
157
196
|
const startingIndex = typeof fetchParams.start === 'string' ? Math.max(filteredSortedRowIds.indexOf(fetchParams.start), 0) : fetchParams.start;
|
|
197
|
+
|
|
198
|
+
// Check for duplicate rows
|
|
199
|
+
let duplicateRowCount = 0;
|
|
200
|
+
response.rows.forEach(row => {
|
|
201
|
+
const rowId = gridRowIdSelector(privateApiRef, row);
|
|
202
|
+
if (tree[rowId] || dataRowIdToModelLookup[rowId]) {
|
|
203
|
+
const index = rootGroupChildren.indexOf(rowId);
|
|
204
|
+
if (index !== -1) {
|
|
205
|
+
const skeletonId = getSkeletonRowId(index);
|
|
206
|
+
rootGroupChildren[index] = skeletonId;
|
|
207
|
+
tree[skeletonId] = {
|
|
208
|
+
type: 'skeletonRow',
|
|
209
|
+
id: skeletonId,
|
|
210
|
+
parent: GRID_ROOT_GROUP_ID,
|
|
211
|
+
depth: 0
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
delete tree[rowId];
|
|
215
|
+
delete dataRowIdToModelLookup[rowId];
|
|
216
|
+
duplicateRowCount += 1;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
if (duplicateRowCount > 0) {
|
|
220
|
+
tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {
|
|
221
|
+
children: rootGroupChildren
|
|
222
|
+
});
|
|
223
|
+
privateApiRef.current.setState(state => _extends({}, state, {
|
|
224
|
+
rows: _extends({}, state.rows, {
|
|
225
|
+
tree,
|
|
226
|
+
dataRowIdToModelLookup
|
|
227
|
+
})
|
|
228
|
+
}));
|
|
229
|
+
}
|
|
158
230
|
privateApiRef.current.unstable_replaceRows(startingIndex, response.rows);
|
|
159
231
|
}
|
|
160
232
|
rowsStale.current = false;
|
|
@@ -204,7 +276,7 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
204
276
|
}
|
|
205
277
|
}, [privateApiRef, props.scrollEndThreshold, adjustRowParams, fetchRows]);
|
|
206
278
|
const handleRenderedRowsIntervalChange = React.useCallback(params => {
|
|
207
|
-
if (rowsStale.current
|
|
279
|
+
if (rowsStale.current) {
|
|
208
280
|
return;
|
|
209
281
|
}
|
|
210
282
|
const sortModel = gridSortModelSelector(privateApiRef);
|
|
@@ -278,12 +350,12 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
278
350
|
setLazyLoadingRowsUpdateStrategyActive(privateApiRef.current.getActiveStrategy(GridStrategyGroup.DataSource) === DataSourceRowsUpdateStrategy.LazyLoading);
|
|
279
351
|
}, [privateApiRef]);
|
|
280
352
|
useGridRegisterStrategyProcessor(privateApiRef, DataSourceRowsUpdateStrategy.LazyLoading, 'dataSourceRowsUpdate', handleDataUpdate);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
353
|
+
useGridEvent(privateApiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
354
|
+
useGridEvent(privateApiRef, 'rowCountChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleRowCountChange));
|
|
355
|
+
useGridEvent(privateApiRef, 'scrollPositionChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleScrolling));
|
|
356
|
+
useGridEvent(privateApiRef, 'renderedRowsIntervalChange', runIf(lazyLoadingRowsUpdateStrategyActive, throttledHandleRenderedRowsIntervalChange));
|
|
357
|
+
useGridEvent(privateApiRef, 'sortModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridSortModelChange));
|
|
358
|
+
useGridEvent(privateApiRef, 'filterModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridFilterModelChange));
|
|
287
359
|
React.useEffect(() => {
|
|
288
360
|
setStrategyAvailability();
|
|
289
361
|
}, [setStrategyAvailability]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useGridEvent } from '@mui/x-data-grid';
|
|
3
3
|
import { GRID_TREE_DATA_GROUPING_FIELD } from "./gridTreeDataGroupColDef.js";
|
|
4
4
|
export const useGridTreeData = (apiRef, props) => {
|
|
5
5
|
/**
|
|
@@ -18,5 +18,5 @@ export const useGridTreeData = (apiRef, props) => {
|
|
|
18
18
|
apiRef.current.setRowChildrenExpansion(params.id, !params.rowNode.childrenExpanded);
|
|
19
19
|
}
|
|
20
20
|
}, [apiRef, props.dataSource]);
|
|
21
|
-
|
|
21
|
+
useGridEvent(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
22
22
|
};
|
package/esm/index.js
CHANGED
package/esm/internals/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export { useGridDataSourceLazyLoader } from "../hooks/features/serverSideLazyLoa
|
|
|
23
23
|
export { dataSourceStateInitializer } from "../hooks/features/dataSource/useGridDataSourcePro.js";
|
|
24
24
|
export { useGridDataSourceBasePro } from "../hooks/features/dataSource/useGridDataSourceBasePro.js";
|
|
25
25
|
export { gridDataSourceErrorSelector, gridDataSourceLoadingIdSelector } from "../hooks/features/dataSource/gridDataSourceSelector.js";
|
|
26
|
+
export { getGroupKeys } from "../hooks/features/dataSource/utils.js";
|
|
26
27
|
export type { GridExperimentalProFeatures, DataGridProPropsWithoutDefaultValue, DataGridProPropsWithDefaultValue } from '../models/dataGridProProps';
|
|
27
28
|
export { createRowTree } from "../utils/tree/createRowTree.js";
|
|
28
29
|
export { updateRowTree } from "../utils/tree/updateRowTree.js";
|
package/esm/internals/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { useGridDataSourceLazyLoader } from "../hooks/features/serverSideLazyLoa
|
|
|
30
30
|
export { dataSourceStateInitializer } from "../hooks/features/dataSource/useGridDataSourcePro.js";
|
|
31
31
|
export { useGridDataSourceBasePro } from "../hooks/features/dataSource/useGridDataSourceBasePro.js";
|
|
32
32
|
export { gridDataSourceErrorSelector, gridDataSourceLoadingIdSelector } from "../hooks/features/dataSource/gridDataSourceSelector.js";
|
|
33
|
+
export { getGroupKeys } from "../hooks/features/dataSource/utils.js";
|
|
33
34
|
export { createRowTree } from "../utils/tree/createRowTree.js";
|
|
34
35
|
export { updateRowTree } from "../utils/tree/updateRowTree.js";
|
|
35
36
|
export { sortRowTree } from "../utils/tree/sortRowTree.js";
|
package/esm/material/icons.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare const GridPushPinLeftIcon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
5
|
-
muiName: string;
|
|
6
|
-
};
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const GridPushPinRightIcon: (props: import("@mui/x-data-grid").GridBaseIconProps) => React.ReactNode;
|
|
3
|
+
export declare const GridPushPinLeftIcon: (props: import("@mui/x-data-grid").GridBaseIconProps) => React.ReactNode;
|
package/esm/material/icons.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { createSvgIcon } from '@mui/
|
|
2
|
+
import { createSvgIcon } from '@mui/x-data-grid/internals';
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
export const GridPushPinRightIcon = createSvgIcon(/*#__PURE__*/_jsx("g", {
|
|
5
5
|
transform: "rotate(-30 15 10)",
|
package/esm/material/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare const materialSlots: {
|
|
2
|
-
columnMenuPinLeftIcon: React.JSXElementConstructor<
|
|
3
|
-
columnMenuPinRightIcon: React.JSXElementConstructor<
|
|
2
|
+
columnMenuPinLeftIcon: React.JSXElementConstructor<import("@mui/x-data-grid/models/gridBaseSlots").IconProps>;
|
|
3
|
+
columnMenuPinRightIcon: React.JSXElementConstructor<import("@mui/x-data-grid/models/gridBaseSlots").IconProps>;
|
|
4
4
|
};
|
|
5
5
|
export default materialSlots;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { RefObject } from '@mui/x-internals/types';
|
|
3
|
-
import { GridEventListener, GridCallbackDetails, GridRowParams, GridRowId, GridValidRowModel, GridGroupNode, GridFeatureMode,
|
|
3
|
+
import { GridEventListener, GridCallbackDetails, GridRowParams, GridRowId, GridValidRowModel, GridGroupNode, GridFeatureMode, GridListViewColDef, GridGetRowsError, GridUpdateRowError } from '@mui/x-data-grid';
|
|
4
4
|
import type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, GridPinnedColumnFields, DataGridProSharedPropsWithDefaultValue, DataGridProSharedPropsWithoutDefaultValue } from '@mui/x-data-grid/internals';
|
|
5
5
|
import type { GridPinnedRowsProp } from '../hooks/features/rowPinning';
|
|
6
6
|
import { GridApiPro } from "./gridApiPro.js";
|
|
@@ -90,7 +90,7 @@ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel =
|
|
|
90
90
|
* Set it to 'client' if you would like enable infnite loading.
|
|
91
91
|
* Set it to 'server' if you would like to enable lazy loading.
|
|
92
92
|
* @default "client"
|
|
93
|
-
* @deprecated Use the {@link https://
|
|
93
|
+
* @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
|
|
94
94
|
*/
|
|
95
95
|
rowsLoadingMode: GridFeatureMode;
|
|
96
96
|
/**
|
|
@@ -113,9 +113,9 @@ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel =
|
|
|
113
113
|
lazyLoadingRequestThrottleMs: number;
|
|
114
114
|
/**
|
|
115
115
|
* If `true`, displays the data in a list view.
|
|
116
|
-
* Use in combination with `
|
|
116
|
+
* Use in combination with `listViewColumn`.
|
|
117
117
|
*/
|
|
118
|
-
|
|
118
|
+
listView: boolean;
|
|
119
119
|
}
|
|
120
120
|
interface DataGridProRegularProps<R extends GridValidRowModel> {
|
|
121
121
|
/**
|
|
@@ -149,7 +149,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
|
|
|
149
149
|
* @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
|
|
150
150
|
* @param {MuiEvent<{}>} event The event object.
|
|
151
151
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
152
|
-
* @deprecated Use the {@link https://
|
|
152
|
+
* @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} instead.
|
|
153
153
|
*/
|
|
154
154
|
onRowsScrollEnd?: GridEventListener<'rowsScrollEnd'>;
|
|
155
155
|
/**
|
|
@@ -194,7 +194,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
|
|
|
194
194
|
* @param {GridFetchRowsParams} params With all properties from [[GridFetchRowsParams]].
|
|
195
195
|
* @param {MuiEvent<{}>} event The event object.
|
|
196
196
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
197
|
-
* @deprecated Use the {@link https://
|
|
197
|
+
* @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
|
|
198
198
|
*/
|
|
199
199
|
onFetchRows?: GridEventListener<'fetchRows'>;
|
|
200
200
|
/**
|
|
@@ -206,9 +206,9 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
|
|
|
206
206
|
*/
|
|
207
207
|
slotProps?: GridProSlotProps;
|
|
208
208
|
/**
|
|
209
|
-
* Definition of the column rendered when the `
|
|
209
|
+
* Definition of the column rendered when the `listView` prop is enabled.
|
|
210
210
|
*/
|
|
211
|
-
|
|
211
|
+
listViewColumn?: GridListViewColDef<R>;
|
|
212
212
|
/**
|
|
213
213
|
* The data source of the Data Grid Pro.
|
|
214
214
|
*/
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { BaseSlots } from '@mui/x-data-grid/internals';
|
|
3
|
+
type IconProps = BaseSlots.IconProps;
|
|
2
4
|
export interface GridProIconSlotsComponent {
|
|
3
5
|
/**
|
|
4
6
|
* Icon displayed in column menu for left pinning
|
|
5
7
|
* @default GridPushPinLeftIcon
|
|
6
8
|
*/
|
|
7
|
-
columnMenuPinLeftIcon: React.JSXElementConstructor<
|
|
9
|
+
columnMenuPinLeftIcon: React.JSXElementConstructor<IconProps>;
|
|
8
10
|
/**
|
|
9
11
|
* Icon displayed in column menu for right pinning
|
|
10
12
|
* @default GridPushPinRightIcon
|
|
11
13
|
*/
|
|
12
|
-
columnMenuPinRightIcon: React.JSXElementConstructor<
|
|
13
|
-
}
|
|
14
|
+
columnMenuPinRightIcon: React.JSXElementConstructor<IconProps>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
package/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","sideEffects":
|
|
1
|
+
{"type":"module","sideEffects":["**/*.css"]}
|
|
@@ -223,7 +223,7 @@ const useGridColumnPinning = (apiRef, props) => {
|
|
|
223
223
|
}
|
|
224
224
|
apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
|
|
225
225
|
};
|
|
226
|
-
(0, _xDataGrid.
|
|
226
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'columnOrderChange', handleColumnOrderChange);
|
|
227
227
|
React.useEffect(() => {
|
|
228
228
|
if (props.pinnedColumns) {
|
|
229
229
|
apiRef.current.setPinnedColumns(props.pinnedColumns);
|
|
@@ -241,12 +241,12 @@ const useGridColumnReorder = (apiRef, props) => {
|
|
|
241
241
|
})
|
|
242
242
|
}));
|
|
243
243
|
}, [apiRef, props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, classes.columnHeaderDragging]);
|
|
244
|
-
(0, _xDataGrid.
|
|
245
|
-
(0, _xDataGrid.
|
|
246
|
-
(0, _xDataGrid.
|
|
247
|
-
(0, _xDataGrid.
|
|
248
|
-
(0, _xDataGrid.
|
|
249
|
-
(0, _xDataGrid.
|
|
250
|
-
(0, _xDataGrid.
|
|
244
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragStart', handleDragStart);
|
|
245
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragEnter', handleDragEnter);
|
|
246
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragOver', handleDragOver);
|
|
247
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragEnd', handleDragEnd);
|
|
248
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'cellDragEnter', handleDragEnter);
|
|
249
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'cellDragOver', handleDragOver);
|
|
250
|
+
(0, _xDataGrid.useGridEventPriority)(apiRef, 'columnOrderChange', props.onColumnOrderChange);
|
|
251
251
|
};
|
|
252
252
|
exports.useGridColumnReorder = useGridColumnReorder;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RefObject } from '@mui/x-internals/types';
|
|
2
|
-
import {
|
|
3
|
-
import { CacheChunkManager, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
|
|
2
|
+
import { CacheChunkManager, DataSourceRowsUpdateStrategy, GridDataSourceBaseOptions } from '@mui/x-data-grid/internals';
|
|
4
3
|
import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
|
|
5
4
|
import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
|
|
6
5
|
import { GridDataSourceApiPro, GridDataSourcePrivateApiPro } from "./models.js";
|
|
@@ -8,14 +7,12 @@ export declare const INITIAL_STATE: {
|
|
|
8
7
|
loading: {};
|
|
9
8
|
errors: {};
|
|
10
9
|
};
|
|
11
|
-
export declare const useGridDataSourceBasePro: <Api extends GridPrivateApiPro>(apiRef: RefObject<Api>, props: DataGridProProcessedProps, options?: {
|
|
12
|
-
cacheOptions?: GridDataSourceCacheDefaultConfig;
|
|
13
|
-
fetchRowChildren?: (parentId: GridRowId) => void;
|
|
14
|
-
}) => {
|
|
10
|
+
export declare const useGridDataSourceBasePro: <Api extends GridPrivateApiPro>(apiRef: RefObject<Api>, props: DataGridProProcessedProps, options?: GridDataSourceBaseOptions) => {
|
|
15
11
|
api: {
|
|
16
12
|
public: GridDataSourceApiPro;
|
|
17
13
|
private: GridDataSourcePrivateApiPro;
|
|
18
14
|
};
|
|
15
|
+
debouncedFetchRows: ((parentId?: import("@mui/x-data-grid").GridRowId, params?: Partial<import("@mui/x-data-grid").GridGetRowsParams>) => void) & import("@mui/utils/debounce").Cancelable;
|
|
19
16
|
strategyProcessor: {
|
|
20
17
|
strategyName: DataSourceRowsUpdateStrategy;
|
|
21
18
|
group: "dataSourceRowsUpdate";
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.useGridDataSourceBasePro = exports.INITIAL_STATE = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _isDeepEqual = require("@mui/x-internals/isDeepEqual");
|
|
11
12
|
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|
|
12
13
|
var _xDataGrid = require("@mui/x-data-grid");
|
|
13
14
|
var _internals = require("@mui/x-data-grid/internals");
|
|
@@ -31,16 +32,26 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
31
32
|
}
|
|
32
33
|
return null;
|
|
33
34
|
}, [apiRef, nestedDataManager]);
|
|
35
|
+
const handleEditRow = React.useCallback((params, updatedRow) => {
|
|
36
|
+
const groupKeys = (0, _utils.getGroupKeys)((0, _xDataGrid.gridRowTreeSelector)(apiRef), params.rowId);
|
|
37
|
+
apiRef.current.updateNestedRows([updatedRow], groupKeys);
|
|
38
|
+
if (updatedRow && !(0, _isDeepEqual.isDeepEqual)(updatedRow, params.previousRow)) {
|
|
39
|
+
// Reset the outdated cache, only if the row is _actually_ updated
|
|
40
|
+
apiRef.current.dataSource.cache.clear();
|
|
41
|
+
}
|
|
42
|
+
}, [apiRef]);
|
|
34
43
|
const {
|
|
35
44
|
api,
|
|
45
|
+
debouncedFetchRows,
|
|
36
46
|
strategyProcessor,
|
|
37
47
|
events,
|
|
38
48
|
cacheChunkManager,
|
|
39
49
|
cache
|
|
40
|
-
} = (0, _internals.useGridDataSourceBase)(apiRef, props, (0, _extends2.default)({
|
|
50
|
+
} = (0, _internals.useGridDataSourceBase)(apiRef, props, (0, _extends2.default)({
|
|
41
51
|
fetchRowChildren: nestedDataManager.queue,
|
|
42
|
-
clearDataSourceState
|
|
43
|
-
|
|
52
|
+
clearDataSourceState,
|
|
53
|
+
handleEditRow
|
|
54
|
+
}, options));
|
|
44
55
|
const setStrategyAvailability = React.useCallback(() => {
|
|
45
56
|
apiRef.current.setStrategyAvailability(_internals.GridStrategyGroup.DataSource, _internals.DataSourceRowsUpdateStrategy.Default, props.dataSource && !props.lazyLoading ? () => true : () => false);
|
|
46
57
|
}, [apiRef, props.dataSource, props.lazyLoading]);
|
|
@@ -70,7 +81,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
70
81
|
if (cachedData !== undefined) {
|
|
71
82
|
const rows = cachedData.rows;
|
|
72
83
|
nestedDataManager.setRequestSettled(id);
|
|
73
|
-
apiRef.current.
|
|
84
|
+
apiRef.current.updateNestedRows(rows, rowNode.path);
|
|
74
85
|
apiRef.current.setRowCount(cachedData.rowCount === undefined ? -1 : cachedData.rowCount);
|
|
75
86
|
apiRef.current.setRowChildrenExpansion(id, true);
|
|
76
87
|
apiRef.current.dataSource.setChildrenLoading(id, false);
|
|
@@ -97,7 +108,23 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
97
108
|
cache.set(key, response);
|
|
98
109
|
});
|
|
99
110
|
apiRef.current.setRowCount(getRowsResponse.rowCount === undefined ? -1 : getRowsResponse.rowCount);
|
|
100
|
-
|
|
111
|
+
// Remove existing outdated rows before setting the new ones
|
|
112
|
+
const rowsToDelete = [];
|
|
113
|
+
getRowsResponse.rows.forEach(row => {
|
|
114
|
+
const rowId = (0, _xDataGrid.gridRowIdSelector)(apiRef, row);
|
|
115
|
+
const treeNode = (0, _xDataGrid.gridRowNodeSelector)(apiRef, rowId);
|
|
116
|
+
if (treeNode) {
|
|
117
|
+
rowsToDelete.push({
|
|
118
|
+
id: rowId,
|
|
119
|
+
_action: 'delete'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
if (rowsToDelete.length > 0) {
|
|
124
|
+
// TODO: Make this happen in a single pass by modifying the pre-processing of the rows
|
|
125
|
+
apiRef.current.updateNestedRows(rowsToDelete, rowNode.path);
|
|
126
|
+
}
|
|
127
|
+
apiRef.current.updateNestedRows(getRowsResponse.rows, rowNode.path);
|
|
101
128
|
apiRef.current.setRowChildrenExpansion(id, true);
|
|
102
129
|
} catch (error) {
|
|
103
130
|
const childrenFetchError = error;
|
|
@@ -109,7 +136,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
109
136
|
cause: childrenFetchError
|
|
110
137
|
}));
|
|
111
138
|
} else if (process.env.NODE_ENV !== 'production') {
|
|
112
|
-
(0, _warning.warnOnce)(['MUI X: A call to `dataSource.getRows()` threw an error which was not handled because `
|
|
139
|
+
(0, _warning.warnOnce)(['MUI X: A call to `dataSource.getRows()` threw an error which was not handled because `onDataSourceError()` is missing.', 'To handle the error pass a callback to the `onDataSourceError` prop, for example `<DataGrid onDataSourceError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/server-side-data/#error-handling.'], 'error');
|
|
113
140
|
}
|
|
114
141
|
} finally {
|
|
115
142
|
apiRef.current.dataSource.setChildrenLoading(id, false);
|
|
@@ -178,6 +205,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
178
205
|
public: dataSourceApi,
|
|
179
206
|
private: dataSourcePrivateApi
|
|
180
207
|
},
|
|
208
|
+
debouncedFetchRows,
|
|
181
209
|
strategyProcessor,
|
|
182
210
|
events,
|
|
183
211
|
setStrategyAvailability,
|
|
@@ -36,7 +36,7 @@ const useGridDataSourcePro = (apiRef, props) => {
|
|
|
36
36
|
(0, _xDataGrid.useGridApiMethod)(apiRef, api.private, 'private');
|
|
37
37
|
(0, _internals.useGridRegisterStrategyProcessor)(apiRef, strategyProcessor.strategyName, strategyProcessor.group, strategyProcessor.processor);
|
|
38
38
|
Object.entries(events).forEach(([event, handler]) => {
|
|
39
|
-
(0, _xDataGrid.
|
|
39
|
+
(0, _xDataGrid.useGridEvent)(apiRef, event, handler);
|
|
40
40
|
});
|
|
41
41
|
React.useEffect(() => {
|
|
42
42
|
setStrategyAvailability();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RefObject } from '@mui/x-internals/types';
|
|
2
|
-
import { GridRowId } from '@mui/x-data-grid';
|
|
2
|
+
import { GridKeyValue, GridRowId, GridRowTreeConfig } from '@mui/x-data-grid';
|
|
3
3
|
import { GridPrivateApiPro } from "../../../models/index.js";
|
|
4
4
|
export declare enum RequestStatus {
|
|
5
5
|
QUEUED = 0,
|
|
@@ -26,4 +26,5 @@ export declare class NestedDataManager {
|
|
|
26
26
|
clearPendingRequest: (id: GridRowId) => void;
|
|
27
27
|
getRequestStatus: (id: GridRowId) => RequestStatus;
|
|
28
28
|
getActiveRequestsCount: () => number;
|
|
29
|
-
}
|
|
29
|
+
}
|
|
30
|
+
export declare const getGroupKeys: (tree: GridRowTreeConfig, rowId: GridRowId) => GridKeyValue[];
|
|
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.RequestStatus = exports.NestedDataManager = void 0;
|
|
7
|
+
exports.getGroupKeys = exports.RequestStatus = exports.NestedDataManager = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
9
10
|
const MAX_CONCURRENT_REQUESTS = Infinity;
|
|
10
11
|
let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus) {
|
|
11
12
|
RequestStatus[RequestStatus["QUEUED"] = 0] = "QUEUED";
|
|
@@ -86,4 +87,16 @@ class NestedDataManager {
|
|
|
86
87
|
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
|
-
exports.NestedDataManager = NestedDataManager;
|
|
90
|
+
exports.NestedDataManager = NestedDataManager;
|
|
91
|
+
const getGroupKeys = (tree, rowId) => {
|
|
92
|
+
const rowNode = tree[rowId];
|
|
93
|
+
let currentNodeId = rowNode.parent;
|
|
94
|
+
const groupKeys = [];
|
|
95
|
+
while (currentNodeId && currentNodeId !== _xDataGrid.GRID_ROOT_GROUP_ID) {
|
|
96
|
+
const currentNode = tree[currentNodeId];
|
|
97
|
+
groupKeys.push(currentNode.groupingKey ?? '');
|
|
98
|
+
currentNodeId = currentNode.parent;
|
|
99
|
+
}
|
|
100
|
+
return groupKeys.reverse();
|
|
101
|
+
};
|
|
102
|
+
exports.getGroupKeys = getGroupKeys;
|
|
@@ -78,8 +78,8 @@ const useGridDetailPanel = (apiRef, props) => {
|
|
|
78
78
|
apiRef.current.toggleDetailPanel(params.id);
|
|
79
79
|
}
|
|
80
80
|
}, [apiRef, props.getDetailPanelContent]);
|
|
81
|
-
(0, _xDataGrid.
|
|
82
|
-
(0, _xDataGrid.
|
|
81
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'cellClick', handleCellClick);
|
|
82
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
83
83
|
apiRef.current.registerControlState({
|
|
84
84
|
stateId: 'detailPanels',
|
|
85
85
|
propModel: props.detailPanelExpandedRowIds,
|
|
@@ -160,7 +160,7 @@ const useGridDetailPanel = (apiRef, props) => {
|
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
162
|
}, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
|
|
163
|
-
(0, _xDataGrid.
|
|
163
|
+
(0, _xDataGrid.useGridEvent)(apiRef, 'sortedRowsSet', updateCaches);
|
|
164
164
|
const previousGetDetailPanelContentProp = React.useRef(undefined);
|
|
165
165
|
const previousGetDetailPanelHeightProp = React.useRef(undefined);
|
|
166
166
|
const updateCachesIfNeeded = React.useCallback(() => {
|
|
@@ -108,6 +108,6 @@ const useGridInfiniteLoader = (apiRef, props) => {
|
|
|
108
108
|
getInfiniteLoadingTriggerElement
|
|
109
109
|
};
|
|
110
110
|
(0, _xDataGrid.useGridApiMethod)(apiRef, infiniteLoaderPrivateApi, 'private');
|
|
111
|
-
(0, _xDataGrid.
|
|
111
|
+
(0, _xDataGrid.useGridEventPriority)(apiRef, 'rowsScrollEnd', props.onRowsScrollEnd);
|
|
112
112
|
};
|
|
113
113
|
exports.useGridInfiniteLoader = useGridInfiniteLoader;
|
|
@@ -7,4 +7,4 @@ import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
|
|
|
7
7
|
* @requires useGridDimensions (method) - can be after
|
|
8
8
|
* @requires useGridScroll (method
|
|
9
9
|
*/
|
|
10
|
-
export declare const useGridLazyLoader: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "onFetchRows" | "rowsLoadingMode" | "pagination" | "paginationMode"
|
|
10
|
+
export declare const useGridLazyLoader: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "onFetchRows" | "rowsLoadingMode" | "pagination" | "paginationMode">) => void;
|
|
@@ -89,9 +89,9 @@ const useGridLazyLoader = (privateApiRef, props) => {
|
|
|
89
89
|
};
|
|
90
90
|
privateApiRef.current.publishEvent('fetchRows', fetchRowsParams);
|
|
91
91
|
}, [privateApiRef, isDisabled, sortModel]);
|
|
92
|
-
(0, _xDataGrid.
|
|
93
|
-
(0, _xDataGrid.
|
|
94
|
-
(0, _xDataGrid.
|
|
95
|
-
(0, _xDataGrid.
|
|
92
|
+
(0, _xDataGrid.useGridEvent)(privateApiRef, 'renderedRowsIntervalChange', handleRenderedRowsIntervalChange);
|
|
93
|
+
(0, _xDataGrid.useGridEvent)(privateApiRef, 'sortModelChange', handleGridSortModelChange);
|
|
94
|
+
(0, _xDataGrid.useGridEvent)(privateApiRef, 'filterModelChange', handleGridFilterModelChange);
|
|
95
|
+
(0, _xDataGrid.useGridEventPriority)(privateApiRef, 'fetchRows', props.onFetchRows);
|
|
96
96
|
};
|
|
97
97
|
exports.useGridLazyLoader = useGridLazyLoader;
|
|
@@ -2,4 +2,4 @@ import { RefObject } from '@mui/x-internals/types';
|
|
|
2
2
|
import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
|
|
3
3
|
import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
|
|
4
4
|
export declare const GRID_SKELETON_ROW_ROOT_ID = "auto-generated-skeleton-row-root";
|
|
5
|
-
export declare const useGridLazyLoaderPreProcessors: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "rowCount" | "rowsLoadingMode"
|
|
5
|
+
export declare const useGridLazyLoaderPreProcessors: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "rowCount" | "rowsLoadingMode">) => void;
|
|
@@ -2,5 +2,5 @@ import { RefObject } from '@mui/x-internals/types';
|
|
|
2
2
|
import { GridStateInitializer } from '@mui/x-data-grid/internals';
|
|
3
3
|
import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
|
|
4
4
|
import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
|
|
5
|
-
export declare const rowPinningStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'pinnedRows' | 'getRowId'
|
|
5
|
+
export declare const rowPinningStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'pinnedRows' | 'getRowId'>>;
|
|
6
6
|
export declare const useGridRowPinning: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "pinnedRows" | "getRowId">) => void;
|