@mui/x-data-grid-pro 7.28.3 → 7.29.1
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 +155 -0
- package/DataGridPro/DataGrid.js +2 -9
- package/DataGridPro/DataGridPro.js +232 -238
- package/DataGridPro/index.js +3 -39
- package/DataGridPro/package.json +2 -2
- package/DataGridPro/useDataGridProComponent.js +91 -99
- package/DataGridPro/useDataGridProProps.js +17 -26
- package/components/GridColumnHeaderCollapseIcon.js +0 -1
- package/components/GridColumnHeaders.js +39 -46
- package/components/GridColumnMenuPinningItem.js +39 -46
- package/components/GridDataSourceTreeDataGroupingCell.js +30 -38
- package/components/GridDetailPanel.js +14 -18
- package/components/GridDetailPanelToggleCell.js +35 -42
- package/components/GridDetailPanels.js +19 -25
- package/components/GridPinnedRows.js +12 -20
- package/components/GridProColumnMenu.js +11 -19
- package/components/GridRowReorderCell.js +36 -45
- package/components/GridTreeDataGroupingCell.js +37 -44
- package/components/headerFiltering/GridHeaderFilterCell.js +71 -78
- package/components/headerFiltering/GridHeaderFilterClearButton.js +9 -16
- package/components/headerFiltering/GridHeaderFilterMenu.js +36 -43
- package/components/headerFiltering/GridHeaderFilterMenuContainer.js +41 -48
- package/components/headerFiltering/index.js +3 -38
- package/components/index.js +7 -71
- package/components/package.json +2 -2
- package/components/reexports.js +1 -24
- package/constants/dataGridProDefaultSlotsComponents.js +16 -23
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +30 -39
- package/hooks/features/columnPinning/gridColumnPinningInterface.js +1 -5
- package/hooks/features/columnPinning/index.js +1 -16
- package/hooks/features/columnPinning/useGridColumnPinning.js +32 -42
- package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +10 -19
- package/hooks/features/columnReorder/columnReorderInterfaces.js +1 -5
- package/hooks/features/columnReorder/columnReorderSelector.js +3 -10
- package/hooks/features/columnReorder/index.js +2 -16
- package/hooks/features/columnReorder/useGridColumnReorder.js +25 -35
- package/hooks/features/dataSource/cache.js +3 -11
- package/hooks/features/dataSource/gridDataSourceSelector.js +10 -18
- package/hooks/features/dataSource/interfaces.js +1 -5
- package/hooks/features/dataSource/useGridDataSource.js +34 -44
- package/hooks/features/dataSource/utils.js +9 -17
- package/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -5
- package/hooks/features/detailPanel/gridDetailPanelSelector.js +5 -14
- package/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +14 -27
- package/hooks/features/detailPanel/index.js +3 -53
- package/hooks/features/detailPanel/useGridDetailPanel.js +39 -48
- package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +18 -27
- package/hooks/features/index.js +9 -99
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +18 -27
- package/hooks/features/lazyLoader/useGridLazyLoader.js +14 -22
- package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +13 -22
- package/hooks/features/rowPinning/gridRowPinningInterface.js +1 -5
- package/hooks/features/rowPinning/gridRowPinningSelector.js +1 -18
- package/hooks/features/rowPinning/index.js +1 -16
- package/hooks/features/rowPinning/useGridRowPinning.js +13 -23
- package/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +1 -1
- package/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +24 -34
- package/hooks/features/rowReorder/gridRowReorderColDef.js +5 -12
- package/hooks/features/rowReorder/index.js +1 -16
- package/hooks/features/rowReorder/useGridRowReorder.js +20 -29
- package/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +12 -21
- package/hooks/features/rows/index.js +1 -16
- package/hooks/features/rows/useGridRowAriaAttributes.js +14 -22
- package/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +37 -46
- package/hooks/features/serverSideTreeData/utils.js +6 -13
- package/hooks/features/treeData/gridTreeDataGroupColDef.js +9 -20
- package/hooks/features/treeData/gridTreeDataUtils.js +6 -12
- package/hooks/features/treeData/index.js +1 -12
- package/hooks/features/treeData/useGridTreeData.js +7 -15
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +37 -46
- package/hooks/index.js +1 -16
- package/hooks/package.json +2 -2
- package/hooks/utils/useGridApiContext.js +2 -8
- package/hooks/utils/useGridApiRef.js +2 -8
- package/hooks/utils/useGridAriaAttributes.js +8 -16
- package/hooks/utils/useGridPrivateApiContext.js +2 -8
- package/hooks/utils/useGridRootProps.js +2 -8
- package/index.js +19 -210
- package/internals/index.js +34 -301
- package/internals/package.json +2 -2
- package/internals/propValidation.js +2 -8
- package/locales/package.json +6 -0
- package/material/icons.js +7 -14
- package/material/index.js +6 -13
- package/material/package.json +2 -2
- package/models/dataGridProProps.js +1 -5
- package/models/gridApiPro.js +1 -5
- package/models/gridFetchRowsParams.js +1 -5
- package/models/gridGroupingColDefOverride.js +1 -5
- package/models/gridProIconSlotsComponent.js +1 -5
- package/models/gridProSlotProps.js +1 -5
- package/models/gridProSlotsComponent.js +1 -5
- package/models/gridRowOrderChangeParams.js +1 -5
- package/models/gridRowScrollEndParams.js +1 -5
- package/models/gridStatePro.js +1 -5
- package/models/index.js +8 -82
- package/models/package.json +2 -2
- package/modern/DataGridPro/DataGridPro.js +2 -1
- package/modern/components/GridDetailPanel.js +2 -0
- package/modern/components/GridDetailPanels.js +2 -0
- package/modern/components/headerFiltering/GridHeaderFilterMenu.js +2 -2
- package/modern/hooks/features/detailPanel/useGridDetailPanel.js +3 -2
- package/modern/index.js +1 -1
- package/modern/utils/releaseInfo.js +1 -1
- package/{esm → node}/DataGridPro/DataGrid.js +9 -2
- package/{esm → node}/DataGridPro/DataGridPro.js +239 -231
- package/node/DataGridPro/index.js +39 -0
- package/node/DataGridPro/useDataGridProComponent.js +111 -0
- package/node/DataGridPro/useDataGridProProps.js +61 -0
- package/node/components/GridColumnHeaderCollapseIcon.js +1 -0
- package/node/components/GridColumnHeaders.js +99 -0
- package/node/components/GridColumnMenuPinningItem.js +97 -0
- package/node/components/GridDataSourceTreeDataGroupingCell.js +118 -0
- package/{esm → node}/components/GridDetailPanel.js +20 -13
- package/node/components/GridDetailPanelToggleCell.js +128 -0
- package/node/components/GridDetailPanels.js +69 -0
- package/node/components/GridPinnedRows.js +48 -0
- package/node/components/GridProColumnMenu.js +29 -0
- package/{esm → node}/components/GridRowReorderCell.js +45 -36
- package/{esm → node}/components/GridTreeDataGroupingCell.js +44 -37
- package/{esm → node}/components/headerFiltering/GridHeaderFilterCell.js +78 -71
- package/node/components/headerFiltering/GridHeaderFilterClearButton.js +28 -0
- package/node/components/headerFiltering/GridHeaderFilterMenu.js +95 -0
- package/node/components/headerFiltering/GridHeaderFilterMenuContainer.js +106 -0
- package/node/components/headerFiltering/index.js +38 -0
- package/node/components/index.js +71 -0
- package/node/components/reexports.js +24 -0
- package/node/constants/dataGridProDefaultSlotsComponents.js +24 -0
- package/{esm → node}/hooks/features/columnHeaders/useGridColumnHeaders.js +39 -30
- package/node/hooks/features/columnPinning/gridColumnPinningInterface.js +5 -0
- package/node/hooks/features/columnPinning/index.js +16 -0
- package/{esm → node}/hooks/features/columnPinning/useGridColumnPinning.js +42 -32
- package/{esm → node}/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +19 -10
- package/node/hooks/features/columnReorder/columnReorderInterfaces.js +5 -0
- package/node/hooks/features/columnReorder/columnReorderSelector.js +10 -0
- package/node/hooks/features/columnReorder/index.js +16 -0
- package/{esm → node}/hooks/features/columnReorder/useGridColumnReorder.js +35 -25
- package/{esm → node}/hooks/features/dataSource/cache.js +11 -3
- package/node/hooks/features/dataSource/gridDataSourceSelector.js +32 -0
- package/node/hooks/features/dataSource/interfaces.js +5 -0
- package/{esm → node}/hooks/features/dataSource/useGridDataSource.js +44 -34
- package/{esm → node}/hooks/features/dataSource/utils.js +17 -9
- package/node/hooks/features/detailPanel/gridDetailPanelInterface.js +5 -0
- package/node/hooks/features/detailPanel/gridDetailPanelSelector.js +21 -0
- package/node/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +47 -0
- package/node/hooks/features/detailPanel/index.js +53 -0
- package/{esm → node}/hooks/features/detailPanel/useGridDetailPanel.js +49 -38
- package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +52 -0
- package/node/hooks/features/index.js +99 -0
- package/{esm → node}/hooks/features/infiniteLoader/useGridInfiniteLoader.js +27 -18
- package/{esm → node}/hooks/features/lazyLoader/useGridLazyLoader.js +22 -14
- package/node/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +43 -0
- package/node/hooks/features/rowPinning/gridRowPinningInterface.js +5 -0
- package/node/hooks/features/rowPinning/gridRowPinningSelector.js +18 -0
- package/node/hooks/features/rowPinning/index.js +16 -0
- package/node/hooks/features/rowPinning/useGridRowPinning.js +62 -0
- package/{esm → node}/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +34 -24
- package/node/hooks/features/rowReorder/gridRowReorderColDef.js +27 -0
- package/node/hooks/features/rowReorder/index.js +16 -0
- package/{esm → node}/hooks/features/rowReorder/useGridRowReorder.js +29 -20
- package/{esm → node}/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +21 -12
- package/node/hooks/features/rows/index.js +16 -0
- package/node/hooks/features/rows/useGridRowAriaAttributes.js +45 -0
- package/{esm → node}/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +46 -37
- package/node/hooks/features/serverSideTreeData/utils.js +27 -0
- package/node/hooks/features/treeData/gridTreeDataGroupColDef.js +38 -0
- package/{esm → node}/hooks/features/treeData/gridTreeDataUtils.js +12 -6
- package/node/hooks/features/treeData/index.js +12 -0
- package/node/hooks/features/treeData/useGridTreeData.js +30 -0
- package/{esm → node}/hooks/features/treeData/useGridTreeDataPreProcessors.js +46 -37
- package/node/hooks/index.js +16 -0
- package/node/hooks/utils/useGridApiContext.js +8 -0
- package/node/hooks/utils/useGridApiRef.js +8 -0
- package/node/hooks/utils/useGridAriaAttributes.js +19 -0
- package/node/hooks/utils/useGridPrivateApiContext.js +8 -0
- package/node/hooks/utils/useGridRootProps.js +8 -0
- package/node/index.js +220 -0
- package/node/internals/index.js +302 -0
- package/node/internals/propValidation.js +8 -0
- package/node/material/icons.js +24 -0
- package/node/material/index.js +15 -0
- package/node/models/dataGridProProps.js +5 -0
- package/node/models/gridApiPro.js +5 -0
- package/node/models/gridFetchRowsParams.js +5 -0
- package/node/models/gridGroupingColDefOverride.js +5 -0
- package/node/models/gridProIconSlotsComponent.js +5 -0
- package/node/models/gridProSlotProps.js +5 -0
- package/node/models/gridProSlotsComponent.js +5 -0
- package/node/models/gridRowOrderChangeParams.js +5 -0
- package/node/models/gridRowScrollEndParams.js +5 -0
- package/node/models/gridStatePro.js +5 -0
- package/node/models/index.js +82 -0
- package/node/themeAugmentation/index.js +27 -0
- package/node/themeAugmentation/overrides.js +5 -0
- package/node/themeAugmentation/props.js +5 -0
- package/node/typeOverloads/index.js +16 -0
- package/node/typeOverloads/modules.js +5 -0
- package/node/typeOverloads/reexports.js +26 -0
- package/node/utils/index.js +16 -0
- package/node/utils/releaseInfo.js +20 -0
- package/{esm → node}/utils/tree/createRowTree.js +14 -7
- package/node/utils/tree/index.js +12 -0
- package/{esm → node}/utils/tree/insertDataRowInTree.js +18 -11
- package/node/utils/tree/models.js +5 -0
- package/{esm → node}/utils/tree/removeDataRowFromTree.js +16 -9
- package/{esm → node}/utils/tree/sortRowTree.js +12 -5
- package/{esm → node}/utils/tree/updateRowTree.js +26 -18
- package/{esm → node}/utils/tree/utils.js +34 -18
- package/package.json +9 -9
- package/themeAugmentation/index.js +4 -27
- package/themeAugmentation/overrides.js +1 -5
- package/themeAugmentation/package.json +2 -2
- package/themeAugmentation/props.js +1 -5
- package/typeOverloads/index.js +1 -16
- package/typeOverloads/modules.js +1 -5
- package/typeOverloads/package.json +2 -2
- package/typeOverloads/reexports.js +14 -25
- package/utils/index.js +1 -16
- package/utils/package.json +2 -2
- package/utils/releaseInfo.js +5 -12
- package/utils/tree/createRowTree.js +7 -14
- package/utils/tree/index.js +1 -12
- package/utils/tree/insertDataRowInTree.js +11 -18
- package/utils/tree/models.js +1 -5
- package/utils/tree/removeDataRowFromTree.js +9 -16
- package/utils/tree/sortRowTree.js +5 -12
- package/utils/tree/updateRowTree.js +18 -26
- package/utils/tree/utils.js +18 -34
- package/esm/DataGridPro/index.js +0 -3
- package/esm/DataGridPro/useDataGridProComponent.js +0 -103
- package/esm/DataGridPro/useDataGridProProps.js +0 -52
- package/esm/components/GridColumnHeaderCollapseIcon.js +0 -0
- package/esm/components/GridColumnHeaders.js +0 -92
- package/esm/components/GridColumnMenuPinningItem.js +0 -90
- package/esm/components/GridDataSourceTreeDataGroupingCell.js +0 -110
- package/esm/components/GridDetailPanelToggleCell.js +0 -121
- package/esm/components/GridDetailPanels.js +0 -60
- package/esm/components/GridPinnedRows.js +0 -40
- package/esm/components/GridProColumnMenu.js +0 -21
- package/esm/components/headerFiltering/GridHeaderFilterClearButton.js +0 -21
- package/esm/components/headerFiltering/GridHeaderFilterMenu.js +0 -88
- package/esm/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -99
- package/esm/components/headerFiltering/index.js +0 -3
- package/esm/components/index.js +0 -7
- package/esm/components/reexports.js +0 -1
- package/esm/constants/dataGridProDefaultSlotsComponents.js +0 -17
- package/esm/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
- package/esm/hooks/features/columnPinning/index.js +0 -1
- package/esm/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
- package/esm/hooks/features/columnReorder/columnReorderSelector.js +0 -3
- package/esm/hooks/features/columnReorder/index.js +0 -2
- package/esm/hooks/features/dataSource/gridDataSourceSelector.js +0 -24
- package/esm/hooks/features/dataSource/interfaces.js +0 -1
- package/esm/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
- package/esm/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -12
- package/esm/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
- package/esm/hooks/features/detailPanel/index.js +0 -3
- package/esm/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
- package/esm/hooks/features/index.js +0 -9
- package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
- package/esm/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
- package/esm/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
- package/esm/hooks/features/rowPinning/index.js +0 -1
- package/esm/hooks/features/rowPinning/useGridRowPinning.js +0 -52
- package/esm/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
- package/esm/hooks/features/rowReorder/index.js +0 -1
- package/esm/hooks/features/rows/index.js +0 -1
- package/esm/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
- package/esm/hooks/features/serverSideTreeData/utils.js +0 -20
- package/esm/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
- package/esm/hooks/features/treeData/index.js +0 -1
- package/esm/hooks/features/treeData/useGridTreeData.js +0 -22
- package/esm/hooks/index.js +0 -1
- package/esm/hooks/utils/useGridApiContext.js +0 -2
- package/esm/hooks/utils/useGridApiRef.js +0 -2
- package/esm/hooks/utils/useGridAriaAttributes.js +0 -11
- package/esm/hooks/utils/useGridPrivateApiContext.js +0 -2
- package/esm/hooks/utils/useGridRootProps.js +0 -2
- package/esm/index.js +0 -22
- package/esm/internals/index.js +0 -35
- package/esm/internals/propValidation.js +0 -2
- package/esm/material/icons.js +0 -17
- package/esm/material/index.js +0 -8
- package/esm/models/dataGridProProps.js +0 -1
- package/esm/models/gridApiPro.js +0 -1
- package/esm/models/gridFetchRowsParams.js +0 -1
- package/esm/models/gridGroupingColDefOverride.js +0 -1
- package/esm/models/gridProIconSlotsComponent.js +0 -1
- package/esm/models/gridProSlotProps.js +0 -1
- package/esm/models/gridProSlotsComponent.js +0 -1
- package/esm/models/gridRowOrderChangeParams.js +0 -1
- package/esm/models/gridRowScrollEndParams.js +0 -1
- package/esm/models/gridStatePro.js +0 -1
- package/esm/models/index.js +0 -8
- package/esm/themeAugmentation/index.js +0 -4
- package/esm/themeAugmentation/overrides.js +0 -1
- package/esm/themeAugmentation/props.js +0 -1
- package/esm/typeOverloads/index.js +0 -1
- package/esm/typeOverloads/modules.js +0 -1
- package/esm/typeOverloads/reexports.js +0 -15
- package/esm/utils/index.js +0 -1
- package/esm/utils/releaseInfo.js +0 -13
- package/esm/utils/tree/index.js +0 -1
- package/esm/utils/tree/models.js +0 -1
- /package/{locales.d.ts → locales/index.d.ts} +0 -0
- /package/{esm/locales.js → locales/index.js} +0 -0
- /package/modern/{locales.js → locales/index.js} +0 -0
- /package/{locales.js → node/locales/index.js} +0 -0
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridDataSource = exports.dataSourceStateInitializer = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|
|
12
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
13
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
14
|
+
var _utils = require("@mui/utils");
|
|
15
|
+
var _gridDataSourceSelector = require("./gridDataSourceSelector");
|
|
16
|
+
var _utils2 = require("./utils");
|
|
17
|
+
var _cache = require("./cache");
|
|
10
18
|
const INITIAL_STATE = {
|
|
11
19
|
loading: {},
|
|
12
20
|
errors: {}
|
|
@@ -20,16 +28,17 @@ function getCache(cacheProp) {
|
|
|
20
28
|
if (cacheProp === null) {
|
|
21
29
|
return noopCache;
|
|
22
30
|
}
|
|
23
|
-
return cacheProp ?? new GridDataSourceCacheDefault({});
|
|
31
|
+
return cacheProp ?? new _cache.GridDataSourceCacheDefault({});
|
|
24
32
|
}
|
|
25
|
-
|
|
26
|
-
return
|
|
33
|
+
const dataSourceStateInitializer = state => {
|
|
34
|
+
return (0, _extends2.default)({}, state, {
|
|
27
35
|
dataSource: INITIAL_STATE
|
|
28
36
|
});
|
|
29
37
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
38
|
+
exports.dataSourceStateInitializer = dataSourceStateInitializer;
|
|
39
|
+
const useGridDataSource = (apiRef, props) => {
|
|
40
|
+
const nestedDataManager = (0, _useLazyRef.default)(() => new _utils2.NestedDataManager(apiRef)).current;
|
|
41
|
+
const groupsToAutoFetch = (0, _xDataGrid.useGridSelector)(apiRef, _internals.gridRowGroupsToFetchSelector);
|
|
33
42
|
const scheduledGroups = React.useRef(0);
|
|
34
43
|
const onError = props.unstable_onDataSourceError;
|
|
35
44
|
const [cache, setCache] = React.useState(() => getCache(props.unstable_dataSourceCache));
|
|
@@ -48,7 +57,7 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
48
57
|
if (dataSourceState !== INITIAL_STATE) {
|
|
49
58
|
apiRef.current.resetDataSourceState();
|
|
50
59
|
}
|
|
51
|
-
const fetchParams =
|
|
60
|
+
const fetchParams = (0, _extends2.default)({}, (0, _gridDataSourceSelector.gridGetRowsParamsSelector)(apiRef), apiRef.current.unstable_applyPipeProcessors('getRowsParams', {}));
|
|
52
61
|
const cachedData = apiRef.current.unstable_dataSource.cache.get(fetchParams);
|
|
53
62
|
if (cachedData !== undefined) {
|
|
54
63
|
const rows = cachedData.rows;
|
|
@@ -58,7 +67,7 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
58
67
|
}
|
|
59
68
|
return;
|
|
60
69
|
}
|
|
61
|
-
const isLoading = gridRowsLoadingSelector(apiRef);
|
|
70
|
+
const isLoading = (0, _xDataGrid.gridRowsLoadingSelector)(apiRef);
|
|
62
71
|
if (!isLoading) {
|
|
63
72
|
apiRef.current.setLoading(true);
|
|
64
73
|
}
|
|
@@ -92,7 +101,7 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
92
101
|
nestedDataManager.clearPendingRequest(id);
|
|
93
102
|
return;
|
|
94
103
|
}
|
|
95
|
-
const fetchParams =
|
|
104
|
+
const fetchParams = (0, _extends2.default)({}, (0, _gridDataSourceSelector.gridGetRowsParamsSelector)(apiRef), pipedParams, {
|
|
96
105
|
groupKeys: rowNode.path
|
|
97
106
|
});
|
|
98
107
|
const cachedData = apiRef.current.unstable_dataSource.cache.get(fetchParams);
|
|
@@ -107,7 +116,7 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
107
116
|
apiRef.current.unstable_dataSource.setChildrenLoading(id, false);
|
|
108
117
|
return;
|
|
109
118
|
}
|
|
110
|
-
const existingError = gridDataSourceErrorsSelector(apiRef)[id] ?? null;
|
|
119
|
+
const existingError = (0, _gridDataSourceSelector.gridDataSourceErrorsSelector)(apiRef)[id] ?? null;
|
|
111
120
|
if (existingError) {
|
|
112
121
|
apiRef.current.unstable_dataSource.setChildrenFetchError(id, null);
|
|
113
122
|
}
|
|
@@ -118,7 +127,7 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
118
127
|
nestedDataManager.clearPendingRequest(id);
|
|
119
128
|
return;
|
|
120
129
|
}
|
|
121
|
-
if (nestedDataManager.getRequestStatus(id) === RequestStatus.UNKNOWN) {
|
|
130
|
+
if (nestedDataManager.getRequestStatus(id) === _utils2.RequestStatus.UNKNOWN) {
|
|
122
131
|
apiRef.current.unstable_dataSource.setChildrenLoading(id, false);
|
|
123
132
|
return;
|
|
124
133
|
}
|
|
@@ -143,14 +152,14 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
143
152
|
if (!state.dataSource.loading[parentId] && isLoading === false) {
|
|
144
153
|
return state;
|
|
145
154
|
}
|
|
146
|
-
const newLoadingState =
|
|
155
|
+
const newLoadingState = (0, _extends2.default)({}, state.dataSource.loading);
|
|
147
156
|
if (isLoading === false) {
|
|
148
157
|
delete newLoadingState[parentId];
|
|
149
158
|
} else {
|
|
150
159
|
newLoadingState[parentId] = isLoading;
|
|
151
160
|
}
|
|
152
|
-
return
|
|
153
|
-
dataSource:
|
|
161
|
+
return (0, _extends2.default)({}, state, {
|
|
162
|
+
dataSource: (0, _extends2.default)({}, state.dataSource, {
|
|
154
163
|
loading: newLoadingState
|
|
155
164
|
})
|
|
156
165
|
});
|
|
@@ -158,14 +167,14 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
158
167
|
}, [apiRef]);
|
|
159
168
|
const setChildrenFetchError = React.useCallback((parentId, error) => {
|
|
160
169
|
apiRef.current.setState(state => {
|
|
161
|
-
const newErrorsState =
|
|
170
|
+
const newErrorsState = (0, _extends2.default)({}, state.dataSource.errors);
|
|
162
171
|
if (error === null && newErrorsState[parentId] !== undefined) {
|
|
163
172
|
delete newErrorsState[parentId];
|
|
164
173
|
} else {
|
|
165
174
|
newErrorsState[parentId] = error;
|
|
166
175
|
}
|
|
167
|
-
return
|
|
168
|
-
dataSource:
|
|
176
|
+
return (0, _extends2.default)({}, state, {
|
|
177
|
+
dataSource: (0, _extends2.default)({}, state.dataSource, {
|
|
169
178
|
errors: newErrorsState
|
|
170
179
|
})
|
|
171
180
|
});
|
|
@@ -173,12 +182,12 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
173
182
|
}, [apiRef]);
|
|
174
183
|
const resetDataSourceState = React.useCallback(() => {
|
|
175
184
|
apiRef.current.setState(state => {
|
|
176
|
-
return
|
|
185
|
+
return (0, _extends2.default)({}, state, {
|
|
177
186
|
dataSource: INITIAL_STATE
|
|
178
187
|
});
|
|
179
188
|
});
|
|
180
189
|
}, [apiRef]);
|
|
181
|
-
const debouncedFetchRows = React.useMemo(() =>
|
|
190
|
+
const debouncedFetchRows = React.useMemo(() => (0, _utils.unstable_debounce)(fetchRows, 0), [fetchRows]);
|
|
182
191
|
const dataSourceApi = {
|
|
183
192
|
unstable_dataSource: {
|
|
184
193
|
setChildrenLoading,
|
|
@@ -191,11 +200,11 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
191
200
|
fetchRowChildren,
|
|
192
201
|
resetDataSourceState
|
|
193
202
|
};
|
|
194
|
-
useGridApiMethod(apiRef, dataSourceApi, 'public');
|
|
195
|
-
useGridApiMethod(apiRef, dataSourcePrivateApi, 'private');
|
|
196
|
-
useGridApiEventHandler(apiRef, 'sortModelChange', runIfServerMode(props.sortingMode, debouncedFetchRows));
|
|
197
|
-
useGridApiEventHandler(apiRef, 'filterModelChange', runIfServerMode(props.filterMode, debouncedFetchRows));
|
|
198
|
-
useGridApiEventHandler(apiRef, 'paginationModelChange', runIfServerMode(props.paginationMode, debouncedFetchRows));
|
|
203
|
+
(0, _xDataGrid.useGridApiMethod)(apiRef, dataSourceApi, 'public');
|
|
204
|
+
(0, _xDataGrid.useGridApiMethod)(apiRef, dataSourcePrivateApi, 'private');
|
|
205
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'sortModelChange', (0, _utils2.runIfServerMode)(props.sortingMode, debouncedFetchRows));
|
|
206
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'filterModelChange', (0, _utils2.runIfServerMode)(props.filterMode, debouncedFetchRows));
|
|
207
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'paginationModelChange', (0, _utils2.runIfServerMode)(props.paginationMode, debouncedFetchRows));
|
|
199
208
|
const isFirstRender = React.useRef(true);
|
|
200
209
|
React.useEffect(() => {
|
|
201
210
|
if (isFirstRender.current) {
|
|
@@ -218,4 +227,5 @@ export const useGridDataSource = (apiRef, props) => {
|
|
|
218
227
|
scheduledGroups.current = groupsToAutoFetch.length;
|
|
219
228
|
}
|
|
220
229
|
}, [apiRef, nestedDataManager, groupsToAutoFetch]);
|
|
221
|
-
};
|
|
230
|
+
};
|
|
231
|
+
exports.useGridDataSource = useGridDataSource;
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.runIfServerMode = exports.RequestStatus = exports.NestedDataManager = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
2
9
|
const MAX_CONCURRENT_REQUESTS = Infinity;
|
|
3
|
-
|
|
10
|
+
const runIfServerMode = (modeProp, fn) => () => {
|
|
4
11
|
if (modeProp === 'server') {
|
|
5
12
|
fn();
|
|
6
13
|
}
|
|
7
14
|
};
|
|
8
|
-
|
|
15
|
+
exports.runIfServerMode = runIfServerMode;
|
|
16
|
+
let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus) {
|
|
9
17
|
RequestStatus[RequestStatus["QUEUED"] = 0] = "QUEUED";
|
|
10
18
|
RequestStatus[RequestStatus["PENDING"] = 1] = "PENDING";
|
|
11
19
|
RequestStatus[RequestStatus["SETTLED"] = 2] = "SETTLED";
|
|
12
20
|
RequestStatus[RequestStatus["UNKNOWN"] = 3] = "UNKNOWN";
|
|
13
21
|
return RequestStatus;
|
|
14
22
|
}({});
|
|
15
|
-
|
|
16
23
|
/**
|
|
17
24
|
* Fetches row children from the server with option to limit the number of concurrent requests
|
|
18
25
|
* Determines the status of a request based on the enum `RequestStatus`
|
|
19
26
|
* Uses `GridRowId` to uniquely identify a request
|
|
20
27
|
*/
|
|
21
|
-
|
|
28
|
+
class NestedDataManager {
|
|
22
29
|
constructor(privateApiRef, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
|
|
23
30
|
this.pendingRequests = new Set();
|
|
24
31
|
this.queuedRequests = new Set();
|
|
@@ -47,9 +54,9 @@ export class NestedDataManager {
|
|
|
47
54
|
this.queuedRequests.add(id);
|
|
48
55
|
loadingIds[id] = true;
|
|
49
56
|
});
|
|
50
|
-
this.api.setState(state =>
|
|
51
|
-
dataSource:
|
|
52
|
-
loading:
|
|
57
|
+
this.api.setState(state => (0, _extends2.default)({}, state, {
|
|
58
|
+
dataSource: (0, _extends2.default)({}, state.dataSource, {
|
|
59
|
+
loading: (0, _extends2.default)({}, state.dataSource.loading, loadingIds)
|
|
53
60
|
})
|
|
54
61
|
}));
|
|
55
62
|
this.processQueue();
|
|
@@ -84,4 +91,5 @@ export class NestedDataManager {
|
|
|
84
91
|
this.api = privateApiRef.current;
|
|
85
92
|
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
86
93
|
}
|
|
87
|
-
}
|
|
94
|
+
}
|
|
95
|
+
exports.NestedDataManager = NestedDataManager;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.gridDetailPanelRawHeightCacheSelector = exports.gridDetailPanelExpandedRowsHeightCacheSelector = exports.gridDetailPanelExpandedRowsContentCacheSelector = exports.gridDetailPanelExpandedRowIdsSelector = void 0;
|
|
7
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
8
|
+
const gridDetailPanelExpandedRowIdsSelector = state => state.detailPanel.expandedRowIds;
|
|
9
|
+
exports.gridDetailPanelExpandedRowIdsSelector = gridDetailPanelExpandedRowIdsSelector;
|
|
10
|
+
const gridDetailPanelExpandedRowsContentCacheSelector = state => state.detailPanel.contentCache;
|
|
11
|
+
exports.gridDetailPanelExpandedRowsContentCacheSelector = gridDetailPanelExpandedRowsContentCacheSelector;
|
|
12
|
+
const gridDetailPanelRawHeightCacheSelector = state => state.detailPanel.heightCache;
|
|
13
|
+
|
|
14
|
+
// TODO v6: Make this selector return the full object, including the autoHeight flag
|
|
15
|
+
exports.gridDetailPanelRawHeightCacheSelector = gridDetailPanelRawHeightCacheSelector;
|
|
16
|
+
const gridDetailPanelExpandedRowsHeightCacheSelector = exports.gridDetailPanelExpandedRowsHeightCacheSelector = (0, _internals.createSelectorMemoized)(gridDetailPanelRawHeightCacheSelector, heightCache => Object.entries(heightCache).reduce((acc, [id, {
|
|
17
|
+
height
|
|
18
|
+
}]) => {
|
|
19
|
+
acc[id] = height || 0;
|
|
20
|
+
return acc;
|
|
21
|
+
}, {}));
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = void 0;
|
|
9
|
+
Object.defineProperty(exports, "GRID_DETAIL_PANEL_TOGGLE_FIELD", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _internals.GRID_DETAIL_PANEL_TOGGLE_FIELD;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
16
|
+
var React = _interopRequireWildcard(require("react"));
|
|
17
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
18
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
19
|
+
var _GridDetailPanelToggleCell = require("../../../components/GridDetailPanelToggleCell");
|
|
20
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
21
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
+
const GRID_DETAIL_PANEL_TOGGLE_COL_DEF = exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = (0, _extends2.default)({}, _xDataGrid.GRID_STRING_COL_DEF, {
|
|
23
|
+
type: 'custom',
|
|
24
|
+
field: _internals.GRID_DETAIL_PANEL_TOGGLE_FIELD,
|
|
25
|
+
editable: false,
|
|
26
|
+
sortable: false,
|
|
27
|
+
filterable: false,
|
|
28
|
+
resizable: false,
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
aggregable: false,
|
|
31
|
+
disableColumnMenu: true,
|
|
32
|
+
disableReorder: true,
|
|
33
|
+
disableExport: true,
|
|
34
|
+
align: 'left',
|
|
35
|
+
width: 40,
|
|
36
|
+
valueGetter: (value, row, column, apiRef) => {
|
|
37
|
+
const rowId = (0, _xDataGrid.gridRowIdSelector)(apiRef.current.state, row);
|
|
38
|
+
const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state);
|
|
39
|
+
return expandedRowIds.includes(rowId);
|
|
40
|
+
},
|
|
41
|
+
renderCell: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridDetailPanelToggleCell.GridDetailPanelToggleCell, (0, _extends2.default)({}, params)),
|
|
42
|
+
renderHeader: ({
|
|
43
|
+
colDef
|
|
44
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
45
|
+
"aria-label": colDef.headerName
|
|
46
|
+
})
|
|
47
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
gridDetailPanelExpandedRowIdsSelector: true,
|
|
8
|
+
gridDetailPanelExpandedRowsContentCacheSelector: true,
|
|
9
|
+
gridDetailPanelExpandedRowsHeightCacheSelector: true
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "gridDetailPanelExpandedRowIdsSelector", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () {
|
|
14
|
+
return _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "gridDetailPanelExpandedRowsContentCacheSelector", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return _gridDetailPanelSelector.gridDetailPanelExpandedRowsContentCacheSelector;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "gridDetailPanelExpandedRowsHeightCacheSelector", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return _gridDetailPanelSelector.gridDetailPanelExpandedRowsHeightCacheSelector;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
|
|
30
|
+
Object.keys(_gridDetailPanelToggleColDef).forEach(function (key) {
|
|
31
|
+
if (key === "default" || key === "__esModule") return;
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
33
|
+
if (key in exports && exports[key] === _gridDetailPanelToggleColDef[key]) return;
|
|
34
|
+
Object.defineProperty(exports, key, {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () {
|
|
37
|
+
return _gridDetailPanelToggleColDef[key];
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
42
|
+
var _gridDetailPanelInterface = require("./gridDetailPanelInterface");
|
|
43
|
+
Object.keys(_gridDetailPanelInterface).forEach(function (key) {
|
|
44
|
+
if (key === "default" || key === "__esModule") return;
|
|
45
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
46
|
+
if (key in exports && exports[key] === _gridDetailPanelInterface[key]) return;
|
|
47
|
+
Object.defineProperty(exports, key, {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
get: function () {
|
|
50
|
+
return _gridDetailPanelInterface[key];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridDetailPanel = exports.detailPanelStateInitializer = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
12
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
13
|
+
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
|
|
14
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
15
|
+
const detailPanelStateInitializer = (state, props) => {
|
|
16
|
+
return (0, _extends2.default)({}, state, {
|
|
9
17
|
detailPanel: {
|
|
10
18
|
heightCache: {},
|
|
11
19
|
expandedRowIds: props.detailPanelExpandedRowIds ?? props.initialState?.detailPanel?.expandedRowIds ?? []
|
|
12
20
|
}
|
|
13
21
|
});
|
|
14
22
|
};
|
|
23
|
+
exports.detailPanelStateInitializer = detailPanelStateInitializer;
|
|
15
24
|
function cacheContentAndHeight(apiRef, getDetailPanelContent, getDetailPanelHeight, previousHeightCache) {
|
|
16
25
|
if (typeof getDetailPanelContent !== 'function') {
|
|
17
26
|
return {};
|
|
@@ -19,7 +28,7 @@ function cacheContentAndHeight(apiRef, getDetailPanelContent, getDetailPanelHeig
|
|
|
19
28
|
|
|
20
29
|
// TODO change to lazy approach using a Proxy
|
|
21
30
|
// only call getDetailPanelContent when asked for an id
|
|
22
|
-
const rowIds = gridDataRowIdsSelector(apiRef);
|
|
31
|
+
const rowIds = (0, _xDataGrid.gridDataRowIdsSelector)(apiRef);
|
|
23
32
|
const contentCache = rowIds.reduce((acc, id) => {
|
|
24
33
|
const params = apiRef.current.getRowParams(id);
|
|
25
34
|
acc[id] = getDetailPanelContent(params);
|
|
@@ -43,11 +52,10 @@ function cacheContentAndHeight(apiRef, getDetailPanelContent, getDetailPanelHeig
|
|
|
43
52
|
heightCache
|
|
44
53
|
};
|
|
45
54
|
}
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
const contentCache = useGridSelector(apiRef, gridDetailPanelExpandedRowsContentCacheSelector);
|
|
55
|
+
const useGridDetailPanel = (apiRef, props) => {
|
|
56
|
+
const contentCache = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelExpandedRowsContentCacheSelector);
|
|
49
57
|
const handleCellClick = React.useCallback((params, event) => {
|
|
50
|
-
if (params.field !== GRID_DETAIL_PANEL_TOGGLE_FIELD || props.getDetailPanelContent == null) {
|
|
58
|
+
if (params.field !== _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD || props.getDetailPanelContent == null) {
|
|
51
59
|
return;
|
|
52
60
|
}
|
|
53
61
|
const content = contentCache[params.id];
|
|
@@ -65,17 +73,17 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
65
73
|
if (props.getDetailPanelContent == null) {
|
|
66
74
|
return;
|
|
67
75
|
}
|
|
68
|
-
if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD && event.key === ' ') {
|
|
76
|
+
if (params.field === _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD && event.key === ' ') {
|
|
69
77
|
apiRef.current.toggleDetailPanel(params.id);
|
|
70
78
|
}
|
|
71
79
|
}, [apiRef, props.getDetailPanelContent]);
|
|
72
|
-
useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
|
|
73
|
-
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
80
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellClick', handleCellClick);
|
|
81
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
74
82
|
apiRef.current.registerControlState({
|
|
75
83
|
stateId: 'detailPanels',
|
|
76
84
|
propModel: props.detailPanelExpandedRowIds,
|
|
77
85
|
propOnChange: props.onDetailPanelExpandedRowIdsChange,
|
|
78
|
-
stateSelector: gridDetailPanelExpandedRowIdsSelector,
|
|
86
|
+
stateSelector: _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector,
|
|
79
87
|
changeEvent: 'detailPanelsExpandedRowIdsChange'
|
|
80
88
|
});
|
|
81
89
|
const toggleDetailPanel = React.useCallback(id => {
|
|
@@ -89,26 +97,27 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
89
97
|
const ids = apiRef.current.getExpandedDetailPanels();
|
|
90
98
|
apiRef.current.setExpandedDetailPanels(ids.includes(id) ? ids.filter(rowId => rowId !== id) : [...ids, id]);
|
|
91
99
|
}, [apiRef, contentCache, props.getDetailPanelContent]);
|
|
92
|
-
const getExpandedDetailPanels = React.useCallback(() => gridDetailPanelExpandedRowIdsSelector(apiRef.current.state), [apiRef]);
|
|
100
|
+
const getExpandedDetailPanels = React.useCallback(() => (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state), [apiRef]);
|
|
93
101
|
const setExpandedDetailPanels = React.useCallback(ids => {
|
|
94
102
|
apiRef.current.setState(state => {
|
|
95
|
-
return
|
|
96
|
-
detailPanel:
|
|
103
|
+
return (0, _extends2.default)({}, state, {
|
|
104
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, {
|
|
97
105
|
expandedRowIds: ids
|
|
98
106
|
})
|
|
99
107
|
});
|
|
100
108
|
});
|
|
109
|
+
apiRef.current.requestPipeProcessorsApplication('rowHeight');
|
|
101
110
|
}, [apiRef]);
|
|
102
111
|
const storeDetailPanelHeight = React.useCallback((id, height) => {
|
|
103
|
-
const heightCache = gridDetailPanelRawHeightCacheSelector(apiRef.current.state);
|
|
112
|
+
const heightCache = (0, _gridDetailPanelSelector.gridDetailPanelRawHeightCacheSelector)(apiRef.current.state);
|
|
104
113
|
if (!heightCache[id] || heightCache[id].height === height) {
|
|
105
114
|
return;
|
|
106
115
|
}
|
|
107
116
|
apiRef.current.setState(state => {
|
|
108
|
-
return
|
|
109
|
-
detailPanel:
|
|
110
|
-
heightCache:
|
|
111
|
-
[id]:
|
|
117
|
+
return (0, _extends2.default)({}, state, {
|
|
118
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, {
|
|
119
|
+
heightCache: (0, _extends2.default)({}, heightCache, {
|
|
120
|
+
[id]: (0, _extends2.default)({}, heightCache[id], {
|
|
112
121
|
height
|
|
113
122
|
})
|
|
114
123
|
})
|
|
@@ -118,7 +127,7 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
118
127
|
apiRef.current.requestPipeProcessorsApplication('rowHeight');
|
|
119
128
|
}, [apiRef]);
|
|
120
129
|
const detailPanelHasAutoHeight = React.useCallback(id => {
|
|
121
|
-
const heightCache = gridDetailPanelRawHeightCacheSelector(apiRef.current.state);
|
|
130
|
+
const heightCache = (0, _gridDetailPanelSelector.gridDetailPanelRawHeightCacheSelector)(apiRef.current.state);
|
|
122
131
|
return heightCache[id] ? heightCache[id].autoHeight : false;
|
|
123
132
|
}, [apiRef]);
|
|
124
133
|
const detailPanelPubicApi = {
|
|
@@ -130,11 +139,11 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
130
139
|
storeDetailPanelHeight,
|
|
131
140
|
detailPanelHasAutoHeight
|
|
132
141
|
};
|
|
133
|
-
useGridApiMethod(apiRef, detailPanelPubicApi, 'public');
|
|
134
|
-
useGridApiMethod(apiRef, detailPanelPrivateApi, 'private');
|
|
142
|
+
(0, _xDataGrid.useGridApiMethod)(apiRef, detailPanelPubicApi, 'public');
|
|
143
|
+
(0, _xDataGrid.useGridApiMethod)(apiRef, detailPanelPrivateApi, 'private');
|
|
135
144
|
React.useEffect(() => {
|
|
136
145
|
if (props.detailPanelExpandedRowIds) {
|
|
137
|
-
const currentModel = gridDetailPanelExpandedRowIdsSelector(apiRef.current.state);
|
|
146
|
+
const currentModel = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state);
|
|
138
147
|
if (currentModel !== props.detailPanelExpandedRowIds) {
|
|
139
148
|
apiRef.current.setExpandedDetailPanels(props.detailPanelExpandedRowIds);
|
|
140
149
|
}
|
|
@@ -145,13 +154,13 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
145
154
|
return;
|
|
146
155
|
}
|
|
147
156
|
apiRef.current.setState(state => {
|
|
148
|
-
return
|
|
149
|
-
detailPanel:
|
|
157
|
+
return (0, _extends2.default)({}, state, {
|
|
158
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, cacheContentAndHeight(apiRef, props.getDetailPanelContent, props.getDetailPanelHeight, state.detailPanel.heightCache))
|
|
150
159
|
});
|
|
151
160
|
});
|
|
152
161
|
apiRef.current.forceUpdate();
|
|
153
162
|
}, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
|
|
154
|
-
useGridApiEventHandler(apiRef, 'sortedRowsSet', updateCachesAndForceUpdate);
|
|
163
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, 'sortedRowsSet', updateCachesAndForceUpdate);
|
|
155
164
|
const previousGetDetailPanelContentProp = React.useRef(undefined);
|
|
156
165
|
const previousGetDetailPanelHeightProp = React.useRef(undefined);
|
|
157
166
|
const updateCachesIfNeeded = React.useCallback(() => {
|
|
@@ -159,25 +168,26 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
159
168
|
return;
|
|
160
169
|
}
|
|
161
170
|
apiRef.current.setState(state => {
|
|
162
|
-
return
|
|
163
|
-
detailPanel:
|
|
171
|
+
return (0, _extends2.default)({}, state, {
|
|
172
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, cacheContentAndHeight(apiRef, props.getDetailPanelContent, props.getDetailPanelHeight, state.detailPanel.heightCache))
|
|
164
173
|
});
|
|
165
174
|
});
|
|
166
175
|
previousGetDetailPanelContentProp.current = props.getDetailPanelContent;
|
|
167
176
|
previousGetDetailPanelHeightProp.current = props.getDetailPanelHeight;
|
|
168
177
|
}, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
|
|
169
178
|
const addDetailHeight = React.useCallback((initialValue, row) => {
|
|
179
|
+
const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state);
|
|
170
180
|
if (!expandedRowIds || expandedRowIds.length === 0 || !expandedRowIds.includes(row.id)) {
|
|
171
181
|
initialValue.detail = 0;
|
|
172
182
|
return initialValue;
|
|
173
183
|
}
|
|
174
184
|
updateCachesIfNeeded();
|
|
175
|
-
const heightCache = gridDetailPanelExpandedRowsHeightCacheSelector(apiRef);
|
|
185
|
+
const heightCache = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowsHeightCacheSelector)(apiRef);
|
|
176
186
|
initialValue.detail = heightCache[row.id] ?? 0; // Fallback to zero because the cache might not be ready yet (for example page was changed)
|
|
177
187
|
return initialValue;
|
|
178
|
-
}, [apiRef,
|
|
188
|
+
}, [apiRef, updateCachesIfNeeded]);
|
|
179
189
|
const enabled = props.getDetailPanelContent !== undefined;
|
|
180
|
-
useGridRegisterPipeProcessor(apiRef, 'rowHeight', addDetailHeight, enabled);
|
|
190
|
+
(0, _internals.useGridRegisterPipeProcessor)(apiRef, 'rowHeight', addDetailHeight, enabled);
|
|
181
191
|
const isFirstRender = React.useRef(true);
|
|
182
192
|
if (isFirstRender.current) {
|
|
183
193
|
updateCachesIfNeeded();
|
|
@@ -188,4 +198,5 @@ export const useGridDetailPanel = (apiRef, props) => {
|
|
|
188
198
|
}
|
|
189
199
|
isFirstRender.current = false;
|
|
190
200
|
}, [apiRef, updateCachesIfNeeded]);
|
|
191
|
-
};
|
|
201
|
+
};
|
|
202
|
+
exports.useGridDetailPanel = useGridDetailPanel;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridDetailPanelPreProcessors = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
12
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
13
|
+
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
|
|
14
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
15
|
+
const useGridDetailPanelPreProcessors = (privateApiRef, props) => {
|
|
16
|
+
const addToggleColumn = React.useCallback(columnsState => {
|
|
17
|
+
if (props.getDetailPanelContent == null) {
|
|
18
|
+
// Remove the toggle column, when it exists
|
|
19
|
+
if (columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD]) {
|
|
20
|
+
delete columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD];
|
|
21
|
+
columnsState.orderedFields = columnsState.orderedFields.filter(field => field !== _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD);
|
|
22
|
+
}
|
|
23
|
+
return columnsState;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Don't add the toggle column if there's already one
|
|
27
|
+
// The user might have manually added it to have it in a custom position
|
|
28
|
+
if (columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD]) {
|
|
29
|
+
return columnsState;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Otherwise, add the toggle column at the beginning
|
|
33
|
+
columnsState.orderedFields = [_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD, ...columnsState.orderedFields];
|
|
34
|
+
columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD] = (0, _extends2.default)({}, _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_COL_DEF, {
|
|
35
|
+
headerName: privateApiRef.current.getLocaleText('detailPanelToggle')
|
|
36
|
+
});
|
|
37
|
+
return columnsState;
|
|
38
|
+
}, [privateApiRef, props.getDetailPanelContent]);
|
|
39
|
+
const addExpandedClassToRow = React.useCallback((classes, id) => {
|
|
40
|
+
if (props.getDetailPanelContent == null) {
|
|
41
|
+
return classes;
|
|
42
|
+
}
|
|
43
|
+
const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(privateApiRef.current.state);
|
|
44
|
+
if (!expandedRowIds.includes(id)) {
|
|
45
|
+
return classes;
|
|
46
|
+
}
|
|
47
|
+
return [...classes, _xDataGrid.gridClasses['row--detailPanelExpanded']];
|
|
48
|
+
}, [privateApiRef, props.getDetailPanelContent]);
|
|
49
|
+
(0, _internals.useGridRegisterPipeProcessor)(privateApiRef, 'hydrateColumns', addToggleColumn);
|
|
50
|
+
(0, _internals.useGridRegisterPipeProcessor)(privateApiRef, 'rowClassName', addExpandedClassToRow);
|
|
51
|
+
};
|
|
52
|
+
exports.useGridDetailPanelPreProcessors = useGridDetailPanelPreProcessors;
|