@mui/x-data-grid 6.0.0-alpha.0 → 6.0.0-alpha.2
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 +209 -0
- package/DataGrid/useDataGridProps.js +4 -4
- package/components/DataGridVirtualScroller.js +5 -3
- package/components/GridPagination.d.ts +43 -1
- package/components/GridPagination.js +1 -2
- package/components/GridRow.d.ts +1 -4
- package/components/GridRow.js +9 -8
- package/components/base/GridBody.js +1 -2
- package/components/base/GridOverlays.js +52 -12
- package/components/cell/GridBooleanCell.js +2 -1
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
- package/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
- package/components/containers/GridOverlay.js +0 -5
- package/components/panel/filterPanel/GridFilterForm.js +2 -1
- package/components/toolbar/GridToolbarFilterButton.js +8 -4
- package/constants/gridClasses.d.ts +8 -0
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +1 -1
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +18 -9
- package/hooks/features/editRows/useGridEditing.new.js +3 -2
- package/hooks/features/editRows/useGridEditing.old.js +2 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +18 -9
- package/hooks/features/export/useGridPrintExport.js +31 -17
- package/hooks/features/export/utils.js +1 -5
- package/hooks/features/filter/gridFilterSelector.js +2 -2
- package/hooks/features/filter/useGridFilter.js +6 -6
- package/hooks/features/pagination/gridPaginationSelector.js +2 -2
- package/hooks/features/rows/gridRowsInterfaces.d.ts +106 -0
- package/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
- package/hooks/features/rows/gridRowsSelector.d.ts +17 -7
- package/hooks/features/rows/gridRowsSelector.js +38 -6
- package/hooks/features/rows/gridRowsUtils.d.ts +16 -4
- package/hooks/features/rows/gridRowsUtils.js +222 -39
- package/hooks/features/rows/index.d.ts +3 -3
- package/hooks/features/rows/index.js +2 -2
- package/hooks/features/rows/useGridRows.js +161 -124
- package/hooks/features/rows/useGridRowsPreProcessors.js +78 -26
- package/hooks/features/selection/useGridSelection.js +2 -2
- package/hooks/features/sorting/gridSortingSelector.js +9 -4
- package/hooks/features/sorting/gridSortingState.d.ts +2 -2
- package/hooks/features/sorting/useGridSorting.js +9 -33
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +4 -7
- package/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
- package/index.js +1 -1
- package/internals/index.d.ts +2 -1
- package/internals/index.js +1 -0
- package/legacy/DataGrid/useDataGridProps.js +4 -4
- package/legacy/components/DataGridVirtualScroller.js +5 -3
- package/legacy/components/GridPagination.js +1 -2
- package/legacy/components/GridRow.js +9 -8
- package/legacy/components/base/GridBody.js +1 -2
- package/legacy/components/base/GridOverlays.js +54 -12
- package/legacy/components/cell/GridBooleanCell.js +2 -1
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
- package/legacy/components/containers/GridOverlay.js +0 -5
- package/legacy/components/panel/filterPanel/GridFilterForm.js +2 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +18 -9
- package/legacy/hooks/features/editRows/useGridEditing.new.js +3 -2
- package/legacy/hooks/features/editRows/useGridEditing.old.js +2 -1
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +18 -9
- package/legacy/hooks/features/export/useGridPrintExport.js +33 -20
- package/legacy/hooks/features/export/utils.js +1 -3
- package/legacy/hooks/features/filter/gridFilterSelector.js +2 -2
- package/legacy/hooks/features/filter/useGridFilter.js +6 -6
- package/legacy/hooks/features/pagination/gridPaginationSelector.js +2 -2
- package/legacy/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
- package/legacy/hooks/features/rows/gridRowsSelector.js +52 -9
- package/legacy/hooks/features/rows/gridRowsUtils.js +238 -46
- package/legacy/hooks/features/rows/index.js +2 -2
- package/legacy/hooks/features/rows/useGridRows.js +163 -134
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +81 -26
- package/legacy/hooks/features/selection/useGridSelection.js +2 -2
- package/legacy/hooks/features/sorting/gridSortingSelector.js +5 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +11 -33
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +1 -0
- package/legacy/models/gridFeatureMode.js +1 -4
- package/models/api/gridParamsApi.d.ts +2 -2
- package/models/api/gridRowApi.d.ts +7 -5
- package/models/events/gridEventLookup.d.ts +3 -3
- package/models/gridApiCaches.d.ts +1 -1
- package/models/gridFeatureMode.d.ts +0 -4
- package/models/gridFeatureMode.js +1 -4
- package/models/gridRows.d.ts +100 -30
- package/models/gridSortModel.d.ts +2 -2
- package/models/params/gridCellParams.d.ts +7 -11
- package/modern/DataGrid/useDataGridProps.js +4 -4
- package/modern/components/DataGridVirtualScroller.js +5 -3
- package/modern/components/GridPagination.js +1 -2
- package/modern/components/GridRow.js +9 -8
- package/modern/components/base/GridBody.js +1 -2
- package/modern/components/base/GridOverlays.js +52 -12
- package/modern/components/cell/GridBooleanCell.js +2 -1
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
- package/modern/components/containers/GridOverlay.js +0 -5
- package/modern/components/panel/filterPanel/GridFilterForm.js +2 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +1 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +18 -9
- package/modern/hooks/features/editRows/useGridEditing.new.js +3 -2
- package/modern/hooks/features/editRows/useGridEditing.old.js +2 -1
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +18 -9
- package/modern/hooks/features/export/useGridPrintExport.js +30 -16
- package/modern/hooks/features/export/utils.js +1 -1
- package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
- package/modern/hooks/features/filter/useGridFilter.js +6 -6
- package/modern/hooks/features/pagination/gridPaginationSelector.js +2 -2
- package/modern/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
- package/modern/hooks/features/rows/gridRowsSelector.js +28 -6
- package/modern/hooks/features/rows/gridRowsUtils.js +220 -37
- package/modern/hooks/features/rows/index.js +2 -2
- package/modern/hooks/features/rows/useGridRows.js +158 -121
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +78 -26
- package/modern/hooks/features/selection/useGridSelection.js +2 -2
- package/modern/hooks/features/sorting/gridSortingSelector.js +3 -2
- package/modern/hooks/features/sorting/useGridSorting.js +9 -33
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +10 -16
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -0
- package/modern/models/gridFeatureMode.js +1 -4
- package/node/DataGrid/useDataGridProps.js +3 -3
- package/node/components/DataGridVirtualScroller.js +5 -3
- package/node/components/GridPagination.js +1 -2
- package/node/components/GridRow.js +9 -7
- package/node/components/base/GridBody.js +1 -3
- package/node/components/base/GridOverlays.js +57 -12
- package/node/components/cell/GridBooleanCell.js +3 -1
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
- package/node/components/containers/GridOverlay.js +0 -5
- package/node/components/panel/filterPanel/GridFilterForm.js +2 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +8 -4
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/node/hooks/features/editRows/useGridCellEditing.new.js +20 -10
- package/node/hooks/features/editRows/useGridEditing.new.js +4 -2
- package/node/hooks/features/editRows/useGridEditing.old.js +3 -1
- package/node/hooks/features/editRows/useGridRowEditing.new.js +20 -10
- package/node/hooks/features/export/useGridPrintExport.js +31 -17
- package/node/hooks/features/export/utils.js +1 -5
- package/node/hooks/features/filter/gridFilterSelector.js +1 -1
- package/node/hooks/features/filter/useGridFilter.js +5 -6
- package/node/hooks/features/pagination/gridPaginationSelector.js +1 -1
- package/node/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
- package/node/hooks/features/rows/gridRowsSelector.js +43 -10
- package/node/hooks/features/rows/gridRowsUtils.js +239 -40
- package/node/hooks/features/rows/index.js +23 -9
- package/node/hooks/features/rows/useGridRows.js +161 -122
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +81 -26
- package/node/hooks/features/selection/useGridSelection.js +2 -2
- package/node/hooks/features/sorting/gridSortingSelector.js +9 -4
- package/node/hooks/features/sorting/useGridSorting.js +9 -33
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
- package/node/index.js +1 -1
- package/node/internals/index.js +14 -2
- package/node/models/gridFeatureMode.js +1 -7
- package/package.json +1 -1
- package/themeAugmentation/props.d.ts +2 -2
- package/hooks/features/rows/gridRowsState.d.ts +0 -60
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { GridRowEntry, GridRowId, GridRowTreeConfig, GridValidRowModel } from '../../../models/gridRows';
|
|
2
|
+
import type { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
3
|
+
export interface GridRowsInternalCache {
|
|
4
|
+
/**
|
|
5
|
+
* The rows as they were the last time all the rows have been updated at once
|
|
6
|
+
* It is used to avoid processing several time the same set of rows
|
|
7
|
+
*/
|
|
8
|
+
rowsBeforePartialUpdates: DataGridProcessedProps['rows'];
|
|
9
|
+
/**
|
|
10
|
+
* The value of the `loading` prop since the last time that the rows state was updated.
|
|
11
|
+
*/
|
|
12
|
+
loadingPropBeforePartialUpdates: DataGridProcessedProps['loading'];
|
|
13
|
+
/**
|
|
14
|
+
* Lookup containing the latest model at all time (even those not stored in the state yet).
|
|
15
|
+
*/
|
|
16
|
+
dataRowIdToModelLookup: GridRowIdToModelLookup;
|
|
17
|
+
/**
|
|
18
|
+
* Lookup containing the latest ids at all time (even those not stored in the state yet).
|
|
19
|
+
*/
|
|
20
|
+
dataRowIdToIdLookup: GridRowIdToIdLookup;
|
|
21
|
+
/**
|
|
22
|
+
* List of updates (partial or full) applied since the last time the state was synced with the cache.
|
|
23
|
+
* It is used to build the tree.
|
|
24
|
+
* If the update is a full update, we rebuild the tree from scratch.
|
|
25
|
+
* If the update is a partial update, we only modify the impacted nodes.
|
|
26
|
+
*/
|
|
27
|
+
updates: GridRowsPartialUpdates | GridRowsFullUpdate;
|
|
28
|
+
}
|
|
29
|
+
export interface GridRowsState {
|
|
30
|
+
/**
|
|
31
|
+
* Name of the algorithm used to group the rows
|
|
32
|
+
* It is useful to decide which filtering / sorting algorithm to apply, to avoid applying tree-data filtering on a grouping-by-column dataset for instance.
|
|
33
|
+
*/
|
|
34
|
+
groupingName: string;
|
|
35
|
+
tree: GridRowTreeConfig;
|
|
36
|
+
/**
|
|
37
|
+
* Amount of nodes at each depth (including auto-generated ones)
|
|
38
|
+
*/
|
|
39
|
+
treeDepths: GridTreeDepths;
|
|
40
|
+
dataRowIds: GridRowId[];
|
|
41
|
+
/**
|
|
42
|
+
* Matches the value of the `loading` prop.
|
|
43
|
+
*/
|
|
44
|
+
loading?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Amount of data rows provided to the grid.
|
|
47
|
+
* Includes the filtered and collapsed rows.
|
|
48
|
+
* Does not include the auto-generated rows (auto generated groups and footers).
|
|
49
|
+
*/
|
|
50
|
+
totalRowCount: number;
|
|
51
|
+
/**
|
|
52
|
+
* Amount of top level rows.
|
|
53
|
+
* Includes the filtered rows and the auto-generated root footer if any.
|
|
54
|
+
* Does not include the rows of depth > 0 (rows inside a group).
|
|
55
|
+
*/
|
|
56
|
+
totalTopLevelRowCount: number;
|
|
57
|
+
dataRowIdToModelLookup: GridRowIdToModelLookup;
|
|
58
|
+
dataRowIdToIdLookup: GridRowIdToIdLookup;
|
|
59
|
+
additionalRowGroups?: {
|
|
60
|
+
pinnedRows?: GridPinnedRowsState;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface GridRowTreeCreationParams {
|
|
64
|
+
previousTree: GridRowTreeConfig | null;
|
|
65
|
+
previousTreeDepths: GridTreeDepths | null;
|
|
66
|
+
updates: GridRowsPartialUpdates | GridRowsFullUpdate;
|
|
67
|
+
dataRowIdToIdLookup: GridRowIdToIdLookup;
|
|
68
|
+
dataRowIdToModelLookup: GridRowIdToModelLookup;
|
|
69
|
+
}
|
|
70
|
+
export declare type GridRowTreeUpdateGroupAction = 'removeChildren' | 'insertChildren' | 'modifyChildren';
|
|
71
|
+
export declare type GridRowTreeUpdatedGroupsValue = {
|
|
72
|
+
[groupId: GridRowId]: {
|
|
73
|
+
[action in GridRowTreeUpdateGroupAction]?: boolean;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export declare type GridRowTreeUpdatedGroupsManager = {
|
|
77
|
+
value: GridRowTreeUpdatedGroupsValue;
|
|
78
|
+
addAction: (groupId: GridRowId, action: GridRowTreeUpdateGroupAction) => void;
|
|
79
|
+
};
|
|
80
|
+
export declare type GridRowTreeCreationValue = Pick<GridRowsState, 'groupingName' | 'tree' | 'treeDepths' | 'dataRowIds'> & {
|
|
81
|
+
updatedGroupsManager?: GridRowTreeUpdatedGroupsManager;
|
|
82
|
+
};
|
|
83
|
+
export declare type GridHydrateRowsValue = Pick<GridRowsState, 'tree' | 'treeDepths' | 'dataRowIds' | 'dataRowIdToIdLookup' | 'dataRowIdToModelLookup' | 'additionalRowGroups'>;
|
|
84
|
+
export declare type GridRowsPartialUpdateAction = 'insert' | 'modify' | 'remove';
|
|
85
|
+
export declare type GridRowIdToModelLookup<R extends GridValidRowModel = GridValidRowModel> = Record<string, R>;
|
|
86
|
+
export declare type GridRowIdToIdLookup = Record<string, GridRowId>;
|
|
87
|
+
export declare type GridTreeDepths = {
|
|
88
|
+
[depth: number]: number;
|
|
89
|
+
};
|
|
90
|
+
export interface GridRowsFullUpdate {
|
|
91
|
+
type: 'full';
|
|
92
|
+
rows: GridRowId[];
|
|
93
|
+
}
|
|
94
|
+
export interface GridRowsPartialUpdates {
|
|
95
|
+
type: 'partial';
|
|
96
|
+
actions: {
|
|
97
|
+
[action in GridRowsPartialUpdateAction]: GridRowId[];
|
|
98
|
+
};
|
|
99
|
+
idToActionLookup: {
|
|
100
|
+
[id: GridRowId]: GridRowsPartialUpdateAction | undefined;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export interface GridPinnedRowsState {
|
|
104
|
+
top?: GridRowEntry[];
|
|
105
|
+
bottom?: GridRowEntry[];
|
|
106
|
+
}
|
|
File without changes
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
2
|
-
export declare const gridRowsStateSelector: (state: GridStateCommunity) => import("./
|
|
2
|
+
export declare const gridRowsStateSelector: (state: GridStateCommunity) => import("./gridRowsInterfaces").GridRowsState;
|
|
3
3
|
export declare const gridRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
4
4
|
export declare const gridRowsLoadingSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, boolean | undefined>;
|
|
5
5
|
export declare const gridTopLevelRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
6
|
-
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridRowsInterfaces").GridRowIdToModelLookup<import("../../..").GridValidRowModel>>;
|
|
7
|
+
export declare const gridRowsDataRowIdToIdLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridRowsInterfaces").GridRowIdToIdLookup>;
|
|
8
8
|
export declare const gridRowTreeSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowTreeConfig>;
|
|
9
9
|
export declare const gridRowGroupingNameSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, string>;
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const gridRowTreeDepthsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridRowsInterfaces").GridTreeDepths>;
|
|
11
|
+
export declare const gridRowMaximumTreeDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
12
|
+
export declare const gridDataRowIdsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowId[]>;
|
|
12
13
|
/**
|
|
13
14
|
* @ignore - do not document.
|
|
14
15
|
*/
|
|
15
16
|
export declare const gridAdditionalRowGroupsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
16
|
-
pinnedRows?: import("./
|
|
17
|
+
pinnedRows?: import("./gridRowsInterfaces").GridPinnedRowsState | undefined;
|
|
17
18
|
} | undefined>;
|
|
18
19
|
/**
|
|
19
20
|
* @ignore - do not document.
|
|
20
21
|
*/
|
|
21
|
-
export declare const gridPinnedRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity,
|
|
22
|
+
export declare const gridPinnedRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
23
|
+
bottom: {
|
|
24
|
+
id: import("../../..").GridRowId;
|
|
25
|
+
model: import("../../..").GridValidRowModel;
|
|
26
|
+
}[] | undefined;
|
|
27
|
+
top: {
|
|
28
|
+
id: import("../../..").GridRowId;
|
|
29
|
+
model: import("../../..").GridValidRowModel;
|
|
30
|
+
}[] | undefined;
|
|
31
|
+
}>;
|
|
22
32
|
/**
|
|
23
33
|
* @ignore - do not document.
|
|
24
34
|
*/
|
|
@@ -2,13 +2,23 @@ import { createSelector } from '../../../utils/createSelector';
|
|
|
2
2
|
export const gridRowsStateSelector = state => state.rows;
|
|
3
3
|
export const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);
|
|
4
4
|
export const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);
|
|
5
|
-
export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
|
|
6
|
-
|
|
7
|
-
export const
|
|
5
|
+
export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount); // TODO rows v6: Rename
|
|
6
|
+
|
|
7
|
+
export const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);
|
|
8
|
+
export const gridRowsDataRowIdToIdLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToIdLookup);
|
|
8
9
|
export const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);
|
|
9
10
|
export const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);
|
|
10
|
-
export const
|
|
11
|
-
export const
|
|
11
|
+
export const gridRowTreeDepthsSelector = createSelector(gridRowsStateSelector, rows => rows.treeDepths);
|
|
12
|
+
export const gridRowMaximumTreeDepthSelector = createSelector(gridRowsStateSelector, rows => {
|
|
13
|
+
const entries = Object.entries(rows.treeDepths);
|
|
14
|
+
|
|
15
|
+
if (entries.length === 0) {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return entries.filter(([, nodeCount]) => nodeCount > 0).map(([depth]) => Number(depth)).sort((a, b) => b - a)[0] + 1;
|
|
20
|
+
});
|
|
21
|
+
export const gridDataRowIdsSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIds);
|
|
12
22
|
/**
|
|
13
23
|
* @ignore - do not document.
|
|
14
24
|
*/
|
|
@@ -18,7 +28,29 @@ export const gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelec
|
|
|
18
28
|
* @ignore - do not document.
|
|
19
29
|
*/
|
|
20
30
|
|
|
21
|
-
export const gridPinnedRowsSelector = createSelector(gridAdditionalRowGroupsSelector, additionalRowGroups =>
|
|
31
|
+
export const gridPinnedRowsSelector = createSelector(gridAdditionalRowGroupsSelector, additionalRowGroups => {
|
|
32
|
+
var _rawPinnedRows$bottom, _rawPinnedRows$top;
|
|
33
|
+
|
|
34
|
+
const rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;
|
|
35
|
+
return {
|
|
36
|
+
bottom: rawPinnedRows == null ? void 0 : (_rawPinnedRows$bottom = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom.map(rowEntry => {
|
|
37
|
+
var _rowEntry$model;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
id: rowEntry.id,
|
|
41
|
+
model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}
|
|
42
|
+
};
|
|
43
|
+
}),
|
|
44
|
+
top: rawPinnedRows == null ? void 0 : (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {
|
|
45
|
+
var _rowEntry$model2;
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
id: rowEntry.id,
|
|
49
|
+
model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}
|
|
50
|
+
};
|
|
51
|
+
})
|
|
52
|
+
};
|
|
53
|
+
});
|
|
22
54
|
/**
|
|
23
55
|
* @ignore - do not document.
|
|
24
56
|
*/
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { GridRowId, GridRowIdGetter, GridRowModel, GridRowTreeConfig } from '../../../models';
|
|
2
|
+
import { GridAutoGeneratedGroupNode, GridAutoGeneratedPinnedRowNode, GridFooterNode, GridGroupNode, GridRowId, GridRowIdGetter, GridRowModel, GridRowModelUpdate, GridRowTreeConfig, GridSkeletonRowNode, GridTreeNode } from '../../../models';
|
|
3
3
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
4
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
5
|
-
import { GridRowsInternalCache, GridRowsState } from './
|
|
5
|
+
import { GridRowsInternalCache, GridRowsState, GridRowTreeCreationParams } from './gridRowsInterfaces';
|
|
6
|
+
export declare const GRID_ROOT_GROUP_ID: GridRowId;
|
|
7
|
+
export declare const buildRootGroup: () => GridGroupNode;
|
|
6
8
|
/**
|
|
7
9
|
* A helper function to check if the id provided is valid.
|
|
8
10
|
* @param {GridRowId} id Id as [[GridRowId]].
|
|
@@ -12,14 +14,24 @@ import { GridRowsInternalCache, GridRowsState } from './gridRowsState';
|
|
|
12
14
|
export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
|
|
13
15
|
export declare const getRowIdFromRowModel: (rowModel: GridRowModel, getRowId?: GridRowIdGetter, detailErrorMessage?: string) => GridRowId;
|
|
14
16
|
export declare const createRowsInternalCache: ({ rows, getRowId, loading, }: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'loading'>) => GridRowsInternalCache;
|
|
15
|
-
export declare const
|
|
17
|
+
export declare const getTopLevelRowCount: ({ tree, rowCountProp, }: {
|
|
18
|
+
tree: GridRowTreeConfig;
|
|
19
|
+
rowCountProp: DataGridProcessedProps['rowCount'];
|
|
20
|
+
}) => number;
|
|
21
|
+
export declare const getRowsStateFromCache: ({ apiRef, rowCountProp, loadingProp, previousTree, previousTreeDepths, }: Pick<GridRowTreeCreationParams, "previousTree" | "previousTreeDepths"> & {
|
|
16
22
|
apiRef: React.MutableRefObject<GridApiCommunity>;
|
|
17
|
-
previousTree: GridRowTreeConfig | null;
|
|
18
23
|
rowCountProp: number | undefined;
|
|
19
24
|
loadingProp: boolean | undefined;
|
|
20
25
|
}) => GridRowsState;
|
|
26
|
+
export declare const isAutoGeneratedRow: (rowNode: GridTreeNode) => rowNode is GridAutoGeneratedGroupNode | GridFooterNode | GridSkeletonRowNode | GridAutoGeneratedPinnedRowNode;
|
|
21
27
|
export declare const getTreeNodeDescendants: (tree: GridRowTreeConfig, parentId: GridRowId, skipAutoGeneratedRows: boolean) => GridRowId[];
|
|
28
|
+
export declare const updateCacheWithNewRows: ({ previousCache, getRowId, updates, }: {
|
|
29
|
+
previousCache: GridRowsInternalCache;
|
|
30
|
+
getRowId: DataGridProcessedProps['getRowId'];
|
|
31
|
+
updates: GridRowModelUpdate[];
|
|
32
|
+
}) => GridRowsInternalCache;
|
|
22
33
|
export declare function calculatePinnedRowsHeight(apiRef: React.MutableRefObject<GridApiCommunity>): {
|
|
23
34
|
top: number;
|
|
24
35
|
bottom: number;
|
|
25
36
|
};
|
|
37
|
+
export declare function getMinimalContentHeight(apiRef: React.MutableRefObject<GridApiCommunity>): number;
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["rowsBeforePartialUpdates"];
|
|
4
2
|
import { gridPinnedRowsSelector } from './gridRowsSelector';
|
|
3
|
+
import { gridDensityRowHeightSelector } from '../density/densitySelector';
|
|
4
|
+
export const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
|
|
5
|
+
export const buildRootGroup = () => ({
|
|
6
|
+
type: 'group',
|
|
7
|
+
id: GRID_ROOT_GROUP_ID,
|
|
8
|
+
depth: -1,
|
|
9
|
+
groupingField: null,
|
|
10
|
+
groupingKey: null,
|
|
11
|
+
isAutoGenerated: true,
|
|
12
|
+
children: [],
|
|
13
|
+
childrenFromPath: {},
|
|
14
|
+
childrenExpanded: true,
|
|
15
|
+
parent: null
|
|
16
|
+
});
|
|
5
17
|
/**
|
|
6
18
|
* A helper function to check if the id provided is valid.
|
|
7
19
|
* @param {GridRowId} id Id as [[GridRowId]].
|
|
@@ -24,70 +36,237 @@ export const createRowsInternalCache = ({
|
|
|
24
36
|
getRowId,
|
|
25
37
|
loading
|
|
26
38
|
}) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
idRowsLookup: {},
|
|
31
|
-
idToIdLookup: {},
|
|
32
|
-
ids: []
|
|
39
|
+
const updates = {
|
|
40
|
+
type: 'full',
|
|
41
|
+
rows: []
|
|
33
42
|
};
|
|
43
|
+
const dataRowIdToModelLookup = {};
|
|
44
|
+
const dataRowIdToIdLookup = {};
|
|
34
45
|
|
|
35
46
|
for (let i = 0; i < rows.length; i += 1) {
|
|
36
|
-
const
|
|
37
|
-
const id = getRowIdFromRowModel(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
const model = rows[i];
|
|
48
|
+
const id = getRowIdFromRowModel(model, getRowId);
|
|
49
|
+
dataRowIdToModelLookup[id] = model;
|
|
50
|
+
dataRowIdToIdLookup[id] = id;
|
|
51
|
+
updates.rows.push(id);
|
|
41
52
|
}
|
|
42
53
|
|
|
43
|
-
return
|
|
54
|
+
return {
|
|
55
|
+
rowsBeforePartialUpdates: rows,
|
|
56
|
+
loadingPropBeforePartialUpdates: loading,
|
|
57
|
+
updates,
|
|
58
|
+
dataRowIdToIdLookup,
|
|
59
|
+
dataRowIdToModelLookup
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export const getTopLevelRowCount = ({
|
|
63
|
+
tree,
|
|
64
|
+
rowCountProp = 0
|
|
65
|
+
}) => {
|
|
66
|
+
const rootGroupNode = tree[GRID_ROOT_GROUP_ID];
|
|
67
|
+
return Math.max(rowCountProp, rootGroupNode.children.length + (rootGroupNode.footerId == null ? 0 : 1));
|
|
44
68
|
};
|
|
45
69
|
export const getRowsStateFromCache = ({
|
|
46
70
|
apiRef,
|
|
71
|
+
rowCountProp = 0,
|
|
72
|
+
loadingProp,
|
|
47
73
|
previousTree,
|
|
48
|
-
|
|
49
|
-
loadingProp
|
|
74
|
+
previousTreeDepths
|
|
50
75
|
}) => {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
76
|
+
const cache = apiRef.current.unstable_caches.rows; // 1. Apply the "rowTreeCreation" family processing.
|
|
77
|
+
|
|
78
|
+
const {
|
|
79
|
+
tree: unProcessedTree,
|
|
80
|
+
treeDepths: unProcessedTreeDepths,
|
|
81
|
+
dataRowIds: unProcessedDataRowIds,
|
|
82
|
+
groupingName
|
|
83
|
+
} = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', {
|
|
84
|
+
previousTree,
|
|
85
|
+
previousTreeDepths,
|
|
86
|
+
updates: cache.updates,
|
|
87
|
+
dataRowIdToIdLookup: cache.dataRowIdToIdLookup,
|
|
88
|
+
dataRowIdToModelLookup: cache.dataRowIdToModelLookup
|
|
89
|
+
}); // 2. Apply the "hydrateRows" pipe-processing.
|
|
90
|
+
|
|
91
|
+
const groupingParamsWithHydrateRows = apiRef.current.unstable_applyPipeProcessors('hydrateRows', {
|
|
92
|
+
tree: unProcessedTree,
|
|
93
|
+
treeDepths: unProcessedTreeDepths,
|
|
94
|
+
dataRowIdToIdLookup: cache.dataRowIdToIdLookup,
|
|
95
|
+
dataRowIds: unProcessedDataRowIds,
|
|
96
|
+
dataRowIdToModelLookup: cache.dataRowIdToModelLookup
|
|
97
|
+
}); // 3. Reset the cache updates
|
|
98
|
+
|
|
99
|
+
apiRef.current.unstable_caches.rows.updates = {
|
|
100
|
+
type: 'partial',
|
|
101
|
+
actions: {
|
|
102
|
+
insert: [],
|
|
103
|
+
modify: [],
|
|
104
|
+
remove: []
|
|
105
|
+
},
|
|
106
|
+
idToActionLookup: {}
|
|
107
|
+
};
|
|
108
|
+
return _extends({}, groupingParamsWithHydrateRows, {
|
|
109
|
+
totalRowCount: Math.max(rowCountProp, groupingParamsWithHydrateRows.dataRowIds.length),
|
|
110
|
+
totalTopLevelRowCount: getTopLevelRowCount({
|
|
111
|
+
tree: groupingParamsWithHydrateRows.tree,
|
|
112
|
+
rowCountProp
|
|
113
|
+
}),
|
|
114
|
+
groupingName,
|
|
115
|
+
loading: loadingProp
|
|
65
116
|
});
|
|
66
117
|
};
|
|
118
|
+
export const isAutoGeneratedRow = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;
|
|
67
119
|
export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const children = (_tree$parentId = tree[parentId]) == null ? void 0 : _tree$parentId.children;
|
|
120
|
+
const node = tree[parentId];
|
|
71
121
|
|
|
72
|
-
if (
|
|
122
|
+
if (node.type !== 'group') {
|
|
73
123
|
return [];
|
|
74
124
|
}
|
|
75
125
|
|
|
76
126
|
const validDescendants = [];
|
|
77
127
|
|
|
78
|
-
for (let i = 0; i < children.length; i += 1) {
|
|
79
|
-
const child = children[i];
|
|
80
|
-
const childNode = tree[child];
|
|
128
|
+
for (let i = 0; i < node.children.length; i += 1) {
|
|
129
|
+
const child = node.children[i];
|
|
81
130
|
|
|
82
|
-
if (!skipAutoGeneratedRows || !
|
|
131
|
+
if (!skipAutoGeneratedRows || !isAutoGeneratedRow(tree[child])) {
|
|
83
132
|
validDescendants.push(child);
|
|
84
133
|
}
|
|
85
134
|
|
|
86
|
-
validDescendants.push(...getTreeNodeDescendants(tree,
|
|
135
|
+
validDescendants.push(...getTreeNodeDescendants(tree, child, skipAutoGeneratedRows));
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (!skipAutoGeneratedRows && node.footerId != null) {
|
|
139
|
+
validDescendants.push(node.footerId);
|
|
87
140
|
}
|
|
88
141
|
|
|
89
142
|
return validDescendants;
|
|
90
143
|
};
|
|
144
|
+
export const updateCacheWithNewRows = ({
|
|
145
|
+
previousCache,
|
|
146
|
+
getRowId,
|
|
147
|
+
updates
|
|
148
|
+
}) => {
|
|
149
|
+
var _previousCache$update, _previousCache$update2, _previousCache$update3;
|
|
150
|
+
|
|
151
|
+
if (previousCache.updates.type === 'full') {
|
|
152
|
+
throw new Error('MUI: Unable to prepare a partial update if a full update is not applied yet');
|
|
153
|
+
} // Remove duplicate updates.
|
|
154
|
+
// A server can batch updates, and send several updates for the same row in one fn call.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
const uniqueUpdates = new Map();
|
|
158
|
+
updates.forEach(update => {
|
|
159
|
+
const id = getRowIdFromRowModel(update, getRowId, 'A row was provided without id when calling updateRows():');
|
|
160
|
+
|
|
161
|
+
if (uniqueUpdates.has(id)) {
|
|
162
|
+
uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));
|
|
163
|
+
} else {
|
|
164
|
+
uniqueUpdates.set(id, update);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
const partialUpdates = {
|
|
168
|
+
type: 'partial',
|
|
169
|
+
actions: {
|
|
170
|
+
insert: [...((_previousCache$update = previousCache.updates.actions.insert) != null ? _previousCache$update : [])],
|
|
171
|
+
modify: [...((_previousCache$update2 = previousCache.updates.actions.modify) != null ? _previousCache$update2 : [])],
|
|
172
|
+
remove: [...((_previousCache$update3 = previousCache.updates.actions.remove) != null ? _previousCache$update3 : [])]
|
|
173
|
+
},
|
|
174
|
+
idToActionLookup: _extends({}, previousCache.updates.idToActionLookup)
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
const dataRowIdToModelLookup = _extends({}, previousCache.dataRowIdToModelLookup);
|
|
178
|
+
|
|
179
|
+
const dataRowIdToIdLookup = _extends({}, previousCache.dataRowIdToIdLookup);
|
|
180
|
+
|
|
181
|
+
const alreadyAppliedActionsToRemove = {
|
|
182
|
+
insert: {},
|
|
183
|
+
modify: {},
|
|
184
|
+
remove: {}
|
|
185
|
+
}; // Depending on the action already applied to the data row,
|
|
186
|
+
// We might want drop the already-applied-update.
|
|
187
|
+
// For instance:
|
|
188
|
+
// - if you delete then insert, then you don't want to apply the deletion in the tree.
|
|
189
|
+
// - if you insert, then modify, then you just want to apply the insertion in the tree.
|
|
190
|
+
|
|
191
|
+
uniqueUpdates.forEach((partialRow, id) => {
|
|
192
|
+
const actionAlreadyAppliedToRow = partialUpdates.idToActionLookup[id]; // Action === "delete"
|
|
193
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
194
|
+
|
|
195
|
+
if (partialRow._action === 'delete') {
|
|
196
|
+
// If the data row has been removed since the last state update,
|
|
197
|
+
// Then do nothing.
|
|
198
|
+
if (actionAlreadyAppliedToRow === 'remove' || !dataRowIdToModelLookup[id]) {
|
|
199
|
+
return;
|
|
200
|
+
} // If the data row has been inserted / modified since the last state update,
|
|
201
|
+
// Then drop this "insert" / "modify" update.
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
if (actionAlreadyAppliedToRow != null) {
|
|
205
|
+
alreadyAppliedActionsToRemove[actionAlreadyAppliedToRow][id] = true;
|
|
206
|
+
} // Remove the data row from the lookups and add it to the "delete" update.
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
partialUpdates.actions.remove.push(id);
|
|
210
|
+
delete dataRowIdToModelLookup[id];
|
|
211
|
+
delete dataRowIdToIdLookup[id];
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const oldRow = dataRowIdToModelLookup[id]; // Action === "modify"
|
|
216
|
+
|
|
217
|
+
if (oldRow) {
|
|
218
|
+
// If the data row has been removed since the last state update,
|
|
219
|
+
// Then drop this "remove" update and add it to the "modify" update instead.
|
|
220
|
+
if (actionAlreadyAppliedToRow === 'remove') {
|
|
221
|
+
alreadyAppliedActionsToRemove.remove[id] = true;
|
|
222
|
+
partialUpdates.actions.modify.push(id);
|
|
223
|
+
} // If the date has not been inserted / modified since the last state update,
|
|
224
|
+
// Then add it to the "modify" update (if it has been inserted it should just remain "inserted").
|
|
225
|
+
else if (actionAlreadyAppliedToRow == null) {
|
|
226
|
+
partialUpdates.actions.modify.push(id);
|
|
227
|
+
} // Update the data row lookups.
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
dataRowIdToModelLookup[id] = _extends({}, oldRow, partialRow);
|
|
231
|
+
return;
|
|
232
|
+
} // Action === "insert"
|
|
233
|
+
// If the data row has been removed since the last state update,
|
|
234
|
+
// Then drop the "remove" update and add it to the "insert" update instead.
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
if (actionAlreadyAppliedToRow === 'remove') {
|
|
238
|
+
alreadyAppliedActionsToRemove.remove[id] = true;
|
|
239
|
+
partialUpdates.actions.insert.push(id);
|
|
240
|
+
} // If the data row has not been inserted since the last state update,
|
|
241
|
+
// Then add it to the "insert" update.
|
|
242
|
+
// `actionAlreadyAppliedToRow` can't be equal to "modify", otherwise we would have an `oldRow` above.
|
|
243
|
+
else if (actionAlreadyAppliedToRow == null) {
|
|
244
|
+
partialUpdates.actions.insert.push(id);
|
|
245
|
+
} // Update the data row lookups.
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
dataRowIdToModelLookup[id] = partialRow;
|
|
249
|
+
dataRowIdToIdLookup[id] = id;
|
|
250
|
+
});
|
|
251
|
+
const actionTypeWithActionsToRemove = Object.keys(alreadyAppliedActionsToRemove);
|
|
252
|
+
|
|
253
|
+
for (let i = 0; i < actionTypeWithActionsToRemove.length; i += 1) {
|
|
254
|
+
const actionType = actionTypeWithActionsToRemove[i];
|
|
255
|
+
const idsToRemove = alreadyAppliedActionsToRemove[actionType];
|
|
256
|
+
|
|
257
|
+
if (Object.keys(idsToRemove).length > 0) {
|
|
258
|
+
partialUpdates.actions[actionType] = partialUpdates.actions[actionType].filter(id => !idsToRemove[id]);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return {
|
|
263
|
+
dataRowIdToModelLookup,
|
|
264
|
+
dataRowIdToIdLookup,
|
|
265
|
+
updates: partialUpdates,
|
|
266
|
+
rowsBeforePartialUpdates: previousCache.rowsBeforePartialUpdates,
|
|
267
|
+
loadingPropBeforePartialUpdates: previousCache.loadingPropBeforePartialUpdates
|
|
268
|
+
};
|
|
269
|
+
};
|
|
91
270
|
export function calculatePinnedRowsHeight(apiRef) {
|
|
92
271
|
var _pinnedRows$top, _pinnedRows$bottom;
|
|
93
272
|
|
|
@@ -104,4 +283,8 @@ export function calculatePinnedRowsHeight(apiRef) {
|
|
|
104
283
|
top: topPinnedRowsHeight,
|
|
105
284
|
bottom: bottomPinnedRowsHeight
|
|
106
285
|
};
|
|
286
|
+
}
|
|
287
|
+
export function getMinimalContentHeight(apiRef) {
|
|
288
|
+
const rowHeight = gridDensityRowHeightSelector(apiRef);
|
|
289
|
+
return 2 * rowHeight;
|
|
107
290
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './gridRowsMetaSelector';
|
|
2
2
|
export * from './gridRowsMetaState';
|
|
3
|
-
export { gridRowsStateSelector, gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector,
|
|
4
|
-
export type { GridRowsState } from './
|
|
5
|
-
export { checkGridRowIdIsValid } from './gridRowsUtils';
|
|
3
|
+
export { gridRowsStateSelector, gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowsDataRowIdToIdLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, } from './gridRowsSelector';
|
|
4
|
+
export type { GridRowsState, GridRowIdToModelLookup } from './gridRowsInterfaces';
|
|
5
|
+
export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid } from './gridRowsUtils';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './gridRowsMetaSelector';
|
|
2
2
|
export * from './gridRowsMetaState';
|
|
3
|
-
export { gridRowsStateSelector, gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector,
|
|
4
|
-
export { checkGridRowIdIsValid } from './gridRowsUtils';
|
|
3
|
+
export { gridRowsStateSelector, gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowsDataRowIdToIdLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector } from './gridRowsSelector';
|
|
4
|
+
export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid } from './gridRowsUtils';
|