@mui/x-data-grid-pro 8.0.0-beta.3 → 8.1.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 +388 -96
- package/DataGridPro/DataGridPro.js +8 -7
- package/DataGridPro/useDataGridProComponent.d.ts +2 -2
- package/DataGridPro/useDataGridProComponent.js +2 -3
- package/components/GridDetailPanel.js +1 -2
- package/components/headerFiltering/GridHeaderFilterMenu.js +2 -2
- package/esm/DataGridPro/DataGridPro.js +9 -8
- package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
- package/esm/DataGridPro/useDataGridProComponent.js +2 -3
- package/esm/components/GridDetailPanel.js +1 -2
- package/esm/components/headerFiltering/GridHeaderFilterMenu.js +2 -2
- package/esm/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
- package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +36 -8
- 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 -3
- package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
- package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
- package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
- package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +38 -1
- 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 +3 -3
- package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
- package/esm/package.json +1 -1
- package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
- package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
- package/hooks/features/dataSource/utils.d.ts +3 -2
- package/hooks/features/dataSource/utils.js +15 -2
- package/hooks/features/detailPanel/useGridDetailPanel.js +4 -3
- package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
- package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
- package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
- package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +37 -0
- 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 +3 -3
- package/models/gridProIconSlotsComponent.d.ts +6 -3
- package/package.json +8 -14
- 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 -1020
- 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 -325
- 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
- /package/esm/{locales.d.ts → locales/index.d.ts} +0 -0
- /package/esm/{locales.js → locales/index.js} +0 -0
- /package/{locales.d.ts → locales/index.d.ts} +0 -0
- /package/{locales.js → locales/index.js} +0 -0
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
|
|
2
|
-
// Single-linked list node
|
|
3
|
-
class Node {
|
|
4
|
-
constructor(data, next) {
|
|
5
|
-
this.next = void 0;
|
|
6
|
-
this.data = void 0;
|
|
7
|
-
this.next = next;
|
|
8
|
-
this.data = data;
|
|
9
|
-
}
|
|
10
|
-
insertAfter(list) {
|
|
11
|
-
if (!list.first || !list.last) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const next = this.next;
|
|
15
|
-
this.next = list.first;
|
|
16
|
-
list.last.next = next;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Single-linked list container
|
|
21
|
-
class List {
|
|
22
|
-
constructor(first, last) {
|
|
23
|
-
this.first = void 0;
|
|
24
|
-
this.last = void 0;
|
|
25
|
-
this.first = first;
|
|
26
|
-
this.last = last;
|
|
27
|
-
}
|
|
28
|
-
data() {
|
|
29
|
-
const array = [];
|
|
30
|
-
this.forEach(node => {
|
|
31
|
-
array.push(node.data);
|
|
32
|
-
});
|
|
33
|
-
return array;
|
|
34
|
-
}
|
|
35
|
-
forEach(fn) {
|
|
36
|
-
let current = this.first;
|
|
37
|
-
while (current !== null) {
|
|
38
|
-
fn(current);
|
|
39
|
-
current = current.next;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
static from(array) {
|
|
43
|
-
if (array.length === 0) {
|
|
44
|
-
return new List(null, null);
|
|
45
|
-
}
|
|
46
|
-
let index = 0;
|
|
47
|
-
const first = new Node(array[index], null);
|
|
48
|
-
let current = first;
|
|
49
|
-
while (index + 1 < array.length) {
|
|
50
|
-
index += 1;
|
|
51
|
-
const node = new Node(array[index], null);
|
|
52
|
-
current.next = node;
|
|
53
|
-
current = node;
|
|
54
|
-
}
|
|
55
|
-
return new List(first, current);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export const sortRowTree = params => {
|
|
59
|
-
const {
|
|
60
|
-
rowTree,
|
|
61
|
-
disableChildrenSorting,
|
|
62
|
-
sortRowList,
|
|
63
|
-
shouldRenderGroupBelowLeaves
|
|
64
|
-
} = params;
|
|
65
|
-
const sortedGroupedByParentRows = new Map();
|
|
66
|
-
const sortGroup = node => {
|
|
67
|
-
const shouldSortGroup = !!sortRowList && (!disableChildrenSorting || node.depth === -1);
|
|
68
|
-
let sortedRowIds;
|
|
69
|
-
if (shouldSortGroup) {
|
|
70
|
-
for (let i = 0; i < node.children.length; i += 1) {
|
|
71
|
-
const childNode = rowTree[node.children[i]];
|
|
72
|
-
if (childNode.type === 'group') {
|
|
73
|
-
sortGroup(childNode);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
sortedRowIds = sortRowList(node.children.map(childId => rowTree[childId]));
|
|
77
|
-
} else if (shouldRenderGroupBelowLeaves) {
|
|
78
|
-
const childrenLeaves = [];
|
|
79
|
-
const childrenGroups = [];
|
|
80
|
-
for (let i = 0; i < node.children.length; i += 1) {
|
|
81
|
-
const childId = node.children[i];
|
|
82
|
-
const childNode = rowTree[childId];
|
|
83
|
-
if (childNode.type === 'group') {
|
|
84
|
-
sortGroup(childNode);
|
|
85
|
-
childrenGroups.push(childId);
|
|
86
|
-
} else if (childNode.type === 'leaf') {
|
|
87
|
-
childrenLeaves.push(childId);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
sortedRowIds = [...childrenLeaves, ...childrenGroups];
|
|
91
|
-
} else {
|
|
92
|
-
for (let i = 0; i < node.children.length; i += 1) {
|
|
93
|
-
const childNode = rowTree[node.children[i]];
|
|
94
|
-
if (childNode.type === 'group') {
|
|
95
|
-
sortGroup(childNode);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
sortedRowIds = [...node.children];
|
|
99
|
-
}
|
|
100
|
-
if (node.footerId != null) {
|
|
101
|
-
sortedRowIds.push(node.footerId);
|
|
102
|
-
}
|
|
103
|
-
sortedGroupedByParentRows.set(node.id, sortedRowIds);
|
|
104
|
-
};
|
|
105
|
-
sortGroup(rowTree[GRID_ROOT_GROUP_ID]);
|
|
106
|
-
const rootList = List.from(sortedGroupedByParentRows.get(GRID_ROOT_GROUP_ID));
|
|
107
|
-
rootList.forEach(node => {
|
|
108
|
-
const children = sortedGroupedByParentRows.get(node.data);
|
|
109
|
-
if (children?.length) {
|
|
110
|
-
node.insertAfter(List.from(children));
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
return rootList.data();
|
|
114
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { GridGroupNode, GridRowId, GridRowTreeConfig } from '@mui/x-data-grid';
|
|
2
|
-
import { GridRowTreeCreationValue, GridTreeDepths } from '@mui/x-data-grid/internals';
|
|
3
|
-
import { GridTreePathDuplicateHandler, RowTreeBuilderNode } from "./models.js";
|
|
4
|
-
export interface UpdateRowTreeNodes {
|
|
5
|
-
inserted: RowTreeBuilderNode[];
|
|
6
|
-
modified: RowTreeBuilderNode[];
|
|
7
|
-
removed: GridRowId[];
|
|
8
|
-
}
|
|
9
|
-
interface UpdateRowTreeParams {
|
|
10
|
-
previousTree: GridRowTreeConfig;
|
|
11
|
-
previousTreeDepth: GridTreeDepths;
|
|
12
|
-
nodes: UpdateRowTreeNodes;
|
|
13
|
-
defaultGroupingExpansionDepth: number;
|
|
14
|
-
isGroupExpandedByDefault?: (node: GridGroupNode) => boolean;
|
|
15
|
-
groupingName: string;
|
|
16
|
-
onDuplicatePath?: GridTreePathDuplicateHandler;
|
|
17
|
-
previousGroupsToFetch?: GridRowId[];
|
|
18
|
-
}
|
|
19
|
-
export declare const updateRowTree: (params: UpdateRowTreeParams) => GridRowTreeCreationValue;
|
|
20
|
-
export {};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
|
|
3
|
-
import { getTreeNodeDescendants } from '@mui/x-data-grid/internals';
|
|
4
|
-
import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
|
|
5
|
-
import { insertDataRowInTree } from "./insertDataRowInTree.js";
|
|
6
|
-
import { removeDataRowFromTree } from "./removeDataRowFromTree.js";
|
|
7
|
-
import { createUpdatedGroupsManager, getNodePathInTree } from "./utils.js";
|
|
8
|
-
export const updateRowTree = params => {
|
|
9
|
-
const tree = _extends({}, params.previousTree);
|
|
10
|
-
const treeDepths = _extends({}, params.previousTreeDepth);
|
|
11
|
-
const updatedGroupsManager = createUpdatedGroupsManager();
|
|
12
|
-
const groupsToFetch = params.previousGroupsToFetch ? new Set([...params.previousGroupsToFetch]) : new Set([]);
|
|
13
|
-
for (let i = 0; i < params.nodes.inserted.length; i += 1) {
|
|
14
|
-
const {
|
|
15
|
-
id,
|
|
16
|
-
path,
|
|
17
|
-
serverChildrenCount
|
|
18
|
-
} = params.nodes.inserted[i];
|
|
19
|
-
insertDataRowInTree({
|
|
20
|
-
previousTree: params.previousTree,
|
|
21
|
-
tree,
|
|
22
|
-
treeDepths,
|
|
23
|
-
updatedGroupsManager,
|
|
24
|
-
id,
|
|
25
|
-
path,
|
|
26
|
-
serverChildrenCount,
|
|
27
|
-
onDuplicatePath: params.onDuplicatePath,
|
|
28
|
-
isGroupExpandedByDefault: params.isGroupExpandedByDefault,
|
|
29
|
-
defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth,
|
|
30
|
-
groupsToFetch
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
for (let i = 0; i < params.nodes.removed.length; i += 1) {
|
|
34
|
-
const nodeId = params.nodes.removed[i];
|
|
35
|
-
removeDataRowFromTree({
|
|
36
|
-
tree,
|
|
37
|
-
treeDepths,
|
|
38
|
-
updatedGroupsManager,
|
|
39
|
-
id: nodeId
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
for (let i = 0; i < params.nodes.modified.length; i += 1) {
|
|
43
|
-
const {
|
|
44
|
-
id,
|
|
45
|
-
path,
|
|
46
|
-
serverChildrenCount
|
|
47
|
-
} = params.nodes.modified[i];
|
|
48
|
-
const pathInPreviousTree = getNodePathInTree({
|
|
49
|
-
tree,
|
|
50
|
-
id
|
|
51
|
-
});
|
|
52
|
-
const isInSameGroup = isDeepEqual(pathInPreviousTree, path);
|
|
53
|
-
if (!isInSameGroup) {
|
|
54
|
-
removeDataRowFromTree({
|
|
55
|
-
tree,
|
|
56
|
-
treeDepths,
|
|
57
|
-
updatedGroupsManager,
|
|
58
|
-
id
|
|
59
|
-
});
|
|
60
|
-
insertDataRowInTree({
|
|
61
|
-
previousTree: params.previousTree,
|
|
62
|
-
tree,
|
|
63
|
-
treeDepths,
|
|
64
|
-
updatedGroupsManager,
|
|
65
|
-
id,
|
|
66
|
-
path,
|
|
67
|
-
serverChildrenCount,
|
|
68
|
-
onDuplicatePath: params.onDuplicatePath,
|
|
69
|
-
isGroupExpandedByDefault: params.isGroupExpandedByDefault,
|
|
70
|
-
defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth,
|
|
71
|
-
groupsToFetch
|
|
72
|
-
});
|
|
73
|
-
} else {
|
|
74
|
-
updatedGroupsManager?.addAction(tree[id].parent, 'modifyChildren');
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// TODO rows v6: Avoid walking the whole tree, we should be able to generate the new list only using slices.
|
|
79
|
-
const dataRowIds = getTreeNodeDescendants(tree, GRID_ROOT_GROUP_ID, true);
|
|
80
|
-
return {
|
|
81
|
-
tree,
|
|
82
|
-
treeDepths,
|
|
83
|
-
groupingName: params.groupingName,
|
|
84
|
-
dataRowIds,
|
|
85
|
-
updatedGroupsManager,
|
|
86
|
-
groupsToFetch: Array.from(groupsToFetch)
|
|
87
|
-
};
|
|
88
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { GridFilterState, GridGroupNode, GridRowId, GridRowTreeConfig, GridRowsState, GridTreeNode } from '@mui/x-data-grid';
|
|
2
|
-
import { GridTreeDepths, GridRowTreeUpdatedGroupsManager } from '@mui/x-data-grid/internals';
|
|
3
|
-
import { RowTreeBuilderGroupingCriterion } from "./models.js";
|
|
4
|
-
import { DataGridProProps } from "../../models/dataGridProProps.js";
|
|
5
|
-
export declare const getGroupRowIdFromPath: (path: RowTreeBuilderGroupingCriterion[]) => string;
|
|
6
|
-
export declare const getNodePathInTree: ({
|
|
7
|
-
id,
|
|
8
|
-
tree
|
|
9
|
-
}: {
|
|
10
|
-
id: GridRowId;
|
|
11
|
-
tree: GridRowTreeConfig;
|
|
12
|
-
}) => RowTreeBuilderGroupingCriterion[];
|
|
13
|
-
export declare const checkGroupChildrenExpansion: (node: GridGroupNode, defaultGroupingExpansionDepth: number, isGroupExpandedByDefault?: DataGridProProps["isGroupExpandedByDefault"]) => boolean;
|
|
14
|
-
export declare const updateGroupDefaultExpansion: (node: GridGroupNode, defaultGroupingExpansionDepth: number, isGroupExpandedByDefault?: DataGridProProps["isGroupExpandedByDefault"]) => GridGroupNode;
|
|
15
|
-
/**
|
|
16
|
-
* Insert a node in the tree
|
|
17
|
-
*/
|
|
18
|
-
export declare const insertNodeInTree: (node: GridTreeNode, tree: GridRowTreeConfig, treeDepths: GridTreeDepths, previousTree: GridRowTreeConfig | null) => void;
|
|
19
|
-
/**
|
|
20
|
-
* Removes a node from the tree
|
|
21
|
-
*/
|
|
22
|
-
export declare const removeNodeFromTree: ({
|
|
23
|
-
node,
|
|
24
|
-
tree,
|
|
25
|
-
treeDepths
|
|
26
|
-
}: {
|
|
27
|
-
node: GridTreeNode;
|
|
28
|
-
tree: GridRowTreeConfig;
|
|
29
|
-
treeDepths: GridTreeDepths;
|
|
30
|
-
}) => void;
|
|
31
|
-
/**
|
|
32
|
-
* Updates the `id` and `isAutoGenerated` properties of a group node.
|
|
33
|
-
*/
|
|
34
|
-
export declare const updateGroupNodeIdAndAutoGenerated: ({
|
|
35
|
-
node,
|
|
36
|
-
updatedNode,
|
|
37
|
-
previousTree,
|
|
38
|
-
tree,
|
|
39
|
-
treeDepths
|
|
40
|
-
}: {
|
|
41
|
-
previousTree: GridRowTreeConfig | null;
|
|
42
|
-
node: GridGroupNode;
|
|
43
|
-
updatedNode: Pick<GridGroupNode, "id" | "isAutoGenerated">;
|
|
44
|
-
tree: GridRowTreeConfig;
|
|
45
|
-
treeDepths: GridTreeDepths;
|
|
46
|
-
}) => void;
|
|
47
|
-
export declare const createUpdatedGroupsManager: () => GridRowTreeUpdatedGroupsManager;
|
|
48
|
-
export declare const getVisibleRowsLookup: ({
|
|
49
|
-
tree,
|
|
50
|
-
filteredRowsLookup
|
|
51
|
-
}: {
|
|
52
|
-
tree: GridRowsState["tree"];
|
|
53
|
-
filteredRowsLookup: GridFilterState["filteredRowsLookup"];
|
|
54
|
-
}) => import("@mui/x-data-grid/hooks/features/filter/gridFilterState").GridVisibleRowsLookupState;
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
|
|
3
|
-
export const getGroupRowIdFromPath = path => {
|
|
4
|
-
const pathStr = path.map(groupingCriteria => `${groupingCriteria.field}/${groupingCriteria.key}`).join('-');
|
|
5
|
-
return `auto-generated-row-${pathStr}`;
|
|
6
|
-
};
|
|
7
|
-
export const getNodePathInTree = ({
|
|
8
|
-
id,
|
|
9
|
-
tree
|
|
10
|
-
}) => {
|
|
11
|
-
const path = [];
|
|
12
|
-
let node = tree[id];
|
|
13
|
-
while (node.id !== GRID_ROOT_GROUP_ID) {
|
|
14
|
-
path.push({
|
|
15
|
-
field: node.type === 'leaf' ? null : node.groupingField,
|
|
16
|
-
key: node.groupingKey
|
|
17
|
-
});
|
|
18
|
-
node = tree[node.parent];
|
|
19
|
-
}
|
|
20
|
-
path.reverse();
|
|
21
|
-
return path;
|
|
22
|
-
};
|
|
23
|
-
export const checkGroupChildrenExpansion = (node, defaultGroupingExpansionDepth, isGroupExpandedByDefault) => {
|
|
24
|
-
let childrenExpanded;
|
|
25
|
-
if (node.id === GRID_ROOT_GROUP_ID) {
|
|
26
|
-
childrenExpanded = true;
|
|
27
|
-
} else if (isGroupExpandedByDefault) {
|
|
28
|
-
childrenExpanded = isGroupExpandedByDefault(node);
|
|
29
|
-
} else {
|
|
30
|
-
childrenExpanded = defaultGroupingExpansionDepth === -1 || defaultGroupingExpansionDepth > node.depth;
|
|
31
|
-
}
|
|
32
|
-
return childrenExpanded;
|
|
33
|
-
};
|
|
34
|
-
export const updateGroupDefaultExpansion = (node, defaultGroupingExpansionDepth, isGroupExpandedByDefault) => {
|
|
35
|
-
const childrenExpanded = checkGroupChildrenExpansion(node, defaultGroupingExpansionDepth, isGroupExpandedByDefault);
|
|
36
|
-
node.childrenExpanded = childrenExpanded;
|
|
37
|
-
return node;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Insert a node in the tree
|
|
42
|
-
*/
|
|
43
|
-
export const insertNodeInTree = (node, tree, treeDepths, previousTree) => {
|
|
44
|
-
// 1. Insert node in the tree.
|
|
45
|
-
tree[node.id] = node;
|
|
46
|
-
|
|
47
|
-
// 2. Increment the `treeDepths` object for the node's depth.
|
|
48
|
-
treeDepths[node.depth] = (treeDepths[node.depth] ?? 0) + 1;
|
|
49
|
-
|
|
50
|
-
// 3. Register the new node in its parent.
|
|
51
|
-
const parentNode = tree[node.parent];
|
|
52
|
-
if (node.type === 'group' || node.type === 'leaf') {
|
|
53
|
-
// For groups and leaves,
|
|
54
|
-
// Register the node from its parents `children` and `childrenFromPath` properties.
|
|
55
|
-
const groupingFieldName = node.groupingField ?? '__no_field__';
|
|
56
|
-
const groupingKeyName = node.groupingKey ?? '__no_key__';
|
|
57
|
-
const groupingField = parentNode.childrenFromPath?.[groupingFieldName];
|
|
58
|
-
if (previousTree !== null && previousTree[parentNode.id] === tree[parentNode.id]) {
|
|
59
|
-
parentNode.children = [...parentNode.children, node.id];
|
|
60
|
-
} else {
|
|
61
|
-
parentNode.children.push(node.id);
|
|
62
|
-
}
|
|
63
|
-
if (groupingField == null) {
|
|
64
|
-
parentNode.childrenFromPath[groupingFieldName] = {
|
|
65
|
-
[groupingKeyName.toString()]: node.id
|
|
66
|
-
};
|
|
67
|
-
} else {
|
|
68
|
-
groupingField[groupingKeyName.toString()] = node.id;
|
|
69
|
-
}
|
|
70
|
-
} else if (node.type === 'footer') {
|
|
71
|
-
// For footers,
|
|
72
|
-
// Register the node from its parent `footerId` property.
|
|
73
|
-
parentNode.footerId = node.id;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Removes a node from the tree
|
|
79
|
-
*/
|
|
80
|
-
export const removeNodeFromTree = ({
|
|
81
|
-
node,
|
|
82
|
-
tree,
|
|
83
|
-
treeDepths
|
|
84
|
-
}) => {
|
|
85
|
-
// 1. Remove node from the tree.
|
|
86
|
-
delete tree[node.id];
|
|
87
|
-
|
|
88
|
-
// 2. Decrement the `treeDepths` object for the node's depth.
|
|
89
|
-
const nodeDepth = node.depth;
|
|
90
|
-
const currentNodeCount = treeDepths[nodeDepth];
|
|
91
|
-
if (currentNodeCount === 1) {
|
|
92
|
-
delete treeDepths[nodeDepth];
|
|
93
|
-
} else {
|
|
94
|
-
treeDepths[nodeDepth] = currentNodeCount - 1;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// 3. Unregister the new node in its parent.
|
|
98
|
-
const parentNode = tree[node.parent];
|
|
99
|
-
// For footers,
|
|
100
|
-
// Unregister the node from its parent `footerId` property.
|
|
101
|
-
if (node.type === 'footer') {
|
|
102
|
-
tree[parentNode.id] = _extends({}, parentNode, {
|
|
103
|
-
footerId: null
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
// For groups and leaves,
|
|
107
|
-
// Unregister the node from its parents `children` and `childrenFromPath` properties.
|
|
108
|
-
else {
|
|
109
|
-
const groupingField = node.groupingField ?? '__no_field__';
|
|
110
|
-
const groupingKey = node.groupingKey ?? '__no_key__';
|
|
111
|
-
|
|
112
|
-
// TODO rows v6: Can we avoid this linear complexity ?
|
|
113
|
-
const children = parentNode.children.filter(childId => childId !== node.id);
|
|
114
|
-
const childrenFromPath = parentNode.childrenFromPath;
|
|
115
|
-
delete childrenFromPath[groupingField][groupingKey.toString()];
|
|
116
|
-
tree[parentNode.id] = _extends({}, parentNode, {
|
|
117
|
-
children,
|
|
118
|
-
childrenFromPath
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Updates the `id` and `isAutoGenerated` properties of a group node.
|
|
125
|
-
*/
|
|
126
|
-
export const updateGroupNodeIdAndAutoGenerated = ({
|
|
127
|
-
node,
|
|
128
|
-
updatedNode,
|
|
129
|
-
previousTree,
|
|
130
|
-
tree,
|
|
131
|
-
treeDepths
|
|
132
|
-
}) => {
|
|
133
|
-
// 1. Set the new parent for all children from the old group
|
|
134
|
-
node.children.forEach(childId => {
|
|
135
|
-
tree[childId] = _extends({}, tree[childId], {
|
|
136
|
-
parent: updatedNode.id
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
// 2. Remove the old group from the tree
|
|
141
|
-
removeNodeFromTree({
|
|
142
|
-
node,
|
|
143
|
-
tree,
|
|
144
|
-
treeDepths
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
// 3. Add the new group in the tree
|
|
148
|
-
const groupNode = _extends({}, node, updatedNode);
|
|
149
|
-
insertNodeInTree(groupNode, tree, treeDepths, previousTree);
|
|
150
|
-
};
|
|
151
|
-
export const createUpdatedGroupsManager = () => ({
|
|
152
|
-
value: {},
|
|
153
|
-
addAction(groupId, action) {
|
|
154
|
-
if (!this.value[groupId]) {
|
|
155
|
-
this.value[groupId] = {};
|
|
156
|
-
}
|
|
157
|
-
this.value[groupId][action] = true;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
export const getVisibleRowsLookup = ({
|
|
161
|
-
tree,
|
|
162
|
-
filteredRowsLookup
|
|
163
|
-
}) => {
|
|
164
|
-
if (!filteredRowsLookup) {
|
|
165
|
-
return {};
|
|
166
|
-
}
|
|
167
|
-
const visibleRowsLookup = {};
|
|
168
|
-
const handleTreeNode = (node, areAncestorsExpanded) => {
|
|
169
|
-
const isPassingFiltering = filteredRowsLookup[node.id] !== false;
|
|
170
|
-
if (node.type === 'group') {
|
|
171
|
-
node.children.forEach(childId => {
|
|
172
|
-
const childNode = tree[childId];
|
|
173
|
-
handleTreeNode(childNode, areAncestorsExpanded && !!node.childrenExpanded);
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
const isVisible = isPassingFiltering && areAncestorsExpanded;
|
|
177
|
-
if (!isVisible) {
|
|
178
|
-
visibleRowsLookup[node.id] = isVisible;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// TODO rows v6: Should we keep storing the visibility status of footer independently or rely on the group visibility in the selector ?
|
|
182
|
-
if (node.type === 'group' && node.footerId != null) {
|
|
183
|
-
const isFooterVisible = isPassingFiltering && areAncestorsExpanded && !!node.childrenExpanded;
|
|
184
|
-
if (!isFooterVisible) {
|
|
185
|
-
visibleRowsLookup[node.footerId] = isFooterVisible;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
const nodes = Object.values(tree);
|
|
190
|
-
for (let i = 0; i < nodes.length; i += 1) {
|
|
191
|
-
const node = nodes[i];
|
|
192
|
-
if (node.depth === 0) {
|
|
193
|
-
handleTreeNode(node, true);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return visibleRowsLookup;
|
|
197
|
-
};
|