@mui/x-data-grid 6.0.0-alpha.2 → 6.0.0-alpha.4
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 +493 -141
- package/DataGrid/DataGrid.js +14 -34
- package/DataGrid/useDataGridComponent.js +8 -14
- package/DataGrid/useDataGridProps.js +3 -3
- package/colDef/gridCheckboxSelectionColDef.js +1 -1
- package/colDef/gridNumericOperators.d.ts +1 -1
- package/colDef/gridSingleSelectOperators.d.ts +1 -1
- package/colDef/gridStringOperators.d.ts +1 -1
- package/components/GridFooter.js +1 -1
- package/components/GridRow.js +2 -2
- package/components/base/GridBody.js +2 -2
- package/components/cell/GridEditInputCell.js +3 -8
- package/components/cell/GridEditSingleSelectCell.js +6 -38
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +32 -5
- package/components/columnSelection/GridHeaderCheckbox.js +3 -3
- package/components/containers/GridRoot.js +4 -3
- package/components/panel/GridColumnsPanel.d.ts +2 -0
- package/components/panel/GridColumnsPanel.js +10 -4
- package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
- package/components/panel/filterPanel/GridFilterForm.js +29 -7
- package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
- package/components/panel/filterPanel/GridFilterPanel.js +64 -19
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
- package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
- package/hooks/core/useGridInitialization.d.ts +1 -1
- package/hooks/core/useGridStateInitialization.d.ts +1 -1
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +10 -1
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +6 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +34 -1
- package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +15 -0
- package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +89 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -15
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +66 -66
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +60 -116
- package/hooks/features/density/densitySelector.d.ts +0 -2
- package/hooks/features/density/densitySelector.js +1 -3
- package/hooks/features/density/densityState.d.ts +0 -1
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/density/useGridDensity.js +9 -45
- package/hooks/features/dimensions/useGridDimensions.js +3 -2
- package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
- package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
- package/hooks/features/editing/index.d.ts +1 -0
- package/hooks/features/editing/index.js +1 -0
- package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
- package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
- package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
- package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
- package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
- package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
- package/hooks/features/export/useGridPrintExport.js +2 -2
- package/hooks/features/focus/gridFocusState.d.ts +6 -0
- package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
- package/hooks/features/focus/gridFocusStateSelector.js +6 -2
- package/hooks/features/focus/useGridFocus.js +69 -11
- package/hooks/features/index.d.ts +2 -2
- package/hooks/features/index.js +2 -2
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
- package/hooks/features/{selection/gridSelectionSelector.d.ts → rowSelection/gridRowSelectionSelector.d.ts} +1 -1
- package/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
- package/hooks/features/rowSelection/index.d.ts +1 -0
- package/hooks/features/rowSelection/index.js +1 -0
- package/hooks/features/rowSelection/useGridRowSelection.d.ts +12 -0
- package/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
- package/hooks/features/{selection/useGridSelectionPreProcessors.d.ts → rowSelection/useGridRowSelectionPreProcessors.d.ts} +1 -1
- package/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
- package/hooks/features/rows/gridRowsInterfaces.d.ts +4 -0
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +5 -2
- package/hooks/features/rows/useGridRows.js +23 -7
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/hooks/utils/useGridApi.d.ts +1 -1
- package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
- package/hooks/utils/useGridApiRef.d.ts +1 -1
- package/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
- package/hooks/utils/useGridSelector.d.ts +1 -1
- package/hooks/utils/useGridState.d.ts +1 -1
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +3 -5
- package/internals/index.js +3 -5
- package/legacy/DataGrid/DataGrid.js +14 -34
- package/legacy/DataGrid/useDataGridComponent.js +8 -14
- package/legacy/DataGrid/useDataGridProps.js +3 -3
- package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -1
- package/legacy/components/GridFooter.js +1 -1
- package/legacy/components/GridRow.js +2 -2
- package/legacy/components/base/GridBody.js +2 -2
- package/legacy/components/cell/GridEditInputCell.js +3 -8
- package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +46 -13
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
- package/legacy/components/containers/GridRoot.js +4 -3
- package/legacy/components/panel/GridColumnsPanel.js +10 -3
- package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +33 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +96 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +64 -64
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +70 -122
- package/legacy/hooks/features/density/densitySelector.js +0 -6
- package/legacy/hooks/features/density/useGridDensity.js +6 -44
- package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -2
- package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
- package/legacy/hooks/features/editing/index.js +1 -0
- package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
- package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
- package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
- package/legacy/hooks/features/export/useGridPrintExport.js +2 -2
- package/legacy/hooks/features/focus/gridFocusStateSelector.js +8 -0
- package/legacy/hooks/features/focus/useGridFocus.js +72 -11
- package/legacy/hooks/features/index.js +2 -2
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +129 -1
- package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +19 -0
- package/legacy/hooks/features/rowSelection/index.js +1 -0
- package/legacy/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
- package/legacy/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
- package/legacy/hooks/features/rows/gridRowsUtils.js +5 -2
- package/legacy/hooks/features/rows/useGridRows.js +25 -7
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +3 -5
- package/legacy/locales/trTR.js +17 -17
- package/legacy/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
- package/legacy/models/api/index.js +1 -1
- package/legacy/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
- package/legacy/models/index.js +1 -1
- package/{models/api/gridSelectionApi.js → legacy/models/params/gridColumnGroupHeaderParams.js} +0 -0
- package/legacy/models/params/gridEditCellParams.js +0 -4
- package/legacy/models/params/index.js +1 -0
- package/locales/trTR.js +17 -17
- package/models/api/gridApiCommon.d.ts +3 -6
- package/models/api/gridApiCommunity.d.ts +1 -7
- package/models/api/gridEditingApi.d.ts +36 -121
- package/models/api/gridFocusApi.d.ts +13 -0
- package/models/api/{gridSelectionApi.d.ts → gridRowSelectionApi.d.ts} +2 -2
- package/models/{gridSelectionModel.js → api/gridRowSelectionApi.js} +0 -0
- package/models/api/index.d.ts +2 -2
- package/models/api/index.js +1 -1
- package/models/colDef/gridColDef.d.ts +0 -8
- package/models/events/gridEventLookup.d.ts +30 -19
- package/models/gridColumnGrouping.d.ts +1 -26
- package/models/gridRowSelectionModel.d.ts +3 -0
- package/{modern/models/api/gridSelectionApi.js → models/gridRowSelectionModel.js} +0 -0
- package/models/gridStateCommunity.d.ts +2 -2
- package/models/index.d.ts +1 -1
- package/models/index.js +1 -1
- package/models/params/gridColumnGroupHeaderParams.d.ts +30 -0
- package/{modern/models/gridSelectionModel.js → models/params/gridColumnGroupHeaderParams.js} +0 -0
- package/models/params/gridEditCellParams.d.ts +4 -17
- package/models/params/gridEditCellParams.js +0 -4
- package/models/params/gridRowParams.d.ts +4 -4
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +1 -0
- package/models/props/DataGridProps.d.ts +8 -32
- package/modern/DataGrid/DataGrid.js +14 -34
- package/modern/DataGrid/useDataGridComponent.js +8 -12
- package/modern/DataGrid/useDataGridProps.js +3 -3
- package/modern/colDef/gridCheckboxSelectionColDef.js +1 -1
- package/modern/components/GridFooter.js +1 -1
- package/modern/components/GridRow.js +2 -2
- package/modern/components/base/GridBody.js +2 -2
- package/modern/components/cell/GridEditInputCell.js +3 -4
- package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +32 -5
- package/modern/components/columnSelection/GridHeaderCheckbox.js +3 -3
- package/modern/components/containers/GridRoot.js +4 -3
- package/modern/components/panel/GridColumnsPanel.js +10 -4
- package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
- package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +14 -1
- package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +83 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +50 -62
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +58 -98
- package/modern/hooks/features/density/densitySelector.js +1 -3
- package/modern/hooks/features/density/useGridDensity.js +9 -37
- package/modern/hooks/features/dimensions/useGridDimensions.js +3 -2
- package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
- package/modern/hooks/features/editing/index.js +1 -0
- package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
- package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
- package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
- package/modern/hooks/features/export/useGridPrintExport.js +2 -2
- package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -2
- package/modern/hooks/features/focus/useGridFocus.js +69 -11
- package/modern/hooks/features/index.js +2 -2
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
- package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
- package/modern/hooks/features/rowSelection/index.js +1 -0
- package/modern/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
- package/modern/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
- package/modern/hooks/features/rows/gridRowsUtils.js +5 -2
- package/modern/hooks/features/rows/useGridRows.js +23 -7
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -5
- package/modern/locales/trTR.js +17 -17
- package/modern/models/api/gridRowSelectionApi.js +1 -0
- package/modern/models/api/index.js +1 -1
- package/modern/models/gridRowSelectionModel.js +1 -0
- package/modern/models/index.js +1 -1
- package/modern/models/params/gridColumnGroupHeaderParams.js +1 -0
- package/modern/models/params/gridEditCellParams.js +0 -4
- package/modern/models/params/index.js +1 -0
- package/node/DataGrid/DataGrid.js +14 -34
- package/node/DataGrid/useDataGridComponent.js +9 -17
- package/node/DataGrid/useDataGridProps.js +3 -3
- package/node/colDef/gridCheckboxSelectionColDef.js +2 -2
- package/node/components/GridFooter.js +2 -2
- package/node/components/GridRow.js +2 -2
- package/node/components/base/GridBody.js +2 -2
- package/node/components/cell/GridEditInputCell.js +3 -9
- package/node/components/cell/GridEditSingleSelectCell.js +6 -38
- package/node/components/columnHeaders/GridColumnGroupHeader.js +32 -5
- package/node/components/columnSelection/GridHeaderCheckbox.js +3 -3
- package/node/components/containers/GridRoot.js +4 -2
- package/node/components/panel/GridColumnsPanel.js +10 -4
- package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
- package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +40 -3
- package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +102 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +68 -71
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +57 -113
- package/node/hooks/features/density/densitySelector.js +2 -6
- package/node/hooks/features/density/useGridDensity.js +9 -48
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
- package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
- package/node/hooks/features/{editRows → editing}/index.js +4 -4
- package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
- package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
- package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/focus/gridFocusStateSelector.js +10 -4
- package/node/hooks/features/focus/useGridFocus.js +68 -10
- package/node/hooks/features/index.js +8 -8
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +138 -1
- package/node/hooks/features/{selection/gridSelectionSelector.js → rowSelection/gridRowSelectionSelector.js} +6 -6
- package/node/hooks/features/rowSelection/index.js +18 -0
- package/node/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +43 -43
- package/node/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +3 -3
- package/node/hooks/features/rows/gridRowsUtils.js +5 -2
- package/node/hooks/features/rows/useGridRows.js +23 -7
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
- package/node/index.js +1 -1
- package/node/internals/index.js +23 -45
- package/node/locales/trTR.js +17 -17
- package/node/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
- package/node/models/api/index.js +4 -4
- package/node/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
- package/node/models/index.js +4 -4
- package/node/models/params/gridColumnGroupHeaderParams.js +5 -0
- package/node/models/params/gridEditCellParams.js +0 -3
- package/node/models/params/index.js +13 -0
- package/package.json +2 -2
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +0 -4
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
- package/hooks/features/editRows/index.d.ts +0 -1
- package/hooks/features/editRows/index.js +0 -1
- package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
- package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
- package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
- package/hooks/features/editRows/useGridEditing.old.js +0 -167
- package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
- package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
- package/hooks/features/selection/gridSelectionSelector.js +0 -9
- package/hooks/features/selection/index.d.ts +0 -1
- package/hooks/features/selection/index.js +0 -1
- package/hooks/features/selection/useGridSelection.d.ts +0 -12
- package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
- package/legacy/hooks/features/editRows/index.js +0 -1
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
- package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
- package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
- package/legacy/hooks/features/selection/gridSelectionSelector.js +0 -19
- package/legacy/hooks/features/selection/index.js +0 -1
- package/models/gridSelectionModel.d.ts +0 -3
- package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -29
- package/modern/hooks/features/editRows/index.js +0 -1
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
- package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
- package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
- package/modern/hooks/features/selection/gridSelectionSelector.js +0 -9
- package/modern/hooks/features/selection/index.js +0 -1
- package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -55
- package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
- package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
- package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
- package/node/hooks/features/selection/index.js +0 -18
|
@@ -3,51 +3,13 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["groupId", "children"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { isLeaf } from '../../../models/gridColumnGrouping';
|
|
6
|
-
import { gridColumnGroupsLookupSelector } from './gridColumnGroupsSelector';
|
|
7
|
-
import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
|
|
6
|
+
import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector } from './gridColumnGroupsSelector';
|
|
8
7
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplet) => {
|
|
15
|
-
if (isLeaf(columnGroupNode)) {
|
|
16
|
-
if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
|
|
17
|
-
throw new Error([`MUI: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurrs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplet[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const {
|
|
25
|
-
groupId,
|
|
26
|
-
children
|
|
27
|
-
} = columnGroupNode;
|
|
28
|
-
children.forEach(child => {
|
|
29
|
-
recurrentUnwrapGroupingColumnModel(child, [...parents, groupId], unwrappedGroupingModelToComplet);
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* This is a function that provide for each column the array of its parents.
|
|
34
|
-
* Parents are ordered from the root to the leaf.
|
|
35
|
-
* @param columnGroupingModel The model such as provided in DataGrid props
|
|
36
|
-
* @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
export const unwrapGroupingColumnModel = columnGroupingModel => {
|
|
41
|
-
if (!columnGroupingModel) {
|
|
42
|
-
return {};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const unwrappedSubTree = {};
|
|
46
|
-
columnGroupingModel.forEach(columnGroupNode => {
|
|
47
|
-
recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
|
|
48
|
-
});
|
|
49
|
-
return unwrappedSubTree;
|
|
50
|
-
};
|
|
8
|
+
import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
|
|
9
|
+
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
+
import { gridColumnFieldsSelector, // GridColumnsState,
|
|
11
|
+
gridVisibleColumnFieldsSelector } from '../columns';
|
|
12
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
51
13
|
|
|
52
14
|
const createGroupLookup = columnGroupingModel => {
|
|
53
15
|
let groupLookup = {};
|
|
@@ -87,14 +49,29 @@ const createGroupLookup = columnGroupingModel => {
|
|
|
87
49
|
return _extends({}, groupLookup);
|
|
88
50
|
};
|
|
89
51
|
|
|
90
|
-
export const columnGroupsStateInitializer = (state, props) => {
|
|
91
|
-
var _props$columnGrouping;
|
|
52
|
+
export const columnGroupsStateInitializer = (state, props, apiRef) => {
|
|
53
|
+
var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2;
|
|
54
|
+
|
|
55
|
+
if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
|
|
56
|
+
return state;
|
|
57
|
+
}
|
|
92
58
|
|
|
59
|
+
const columnFields = gridColumnFieldsSelector(apiRef);
|
|
60
|
+
const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
93
61
|
const groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
|
|
62
|
+
const unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
|
|
63
|
+
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
|
|
64
|
+
const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => {
|
|
65
|
+
var _unwrappedGroupingMod, _unwrappedGroupingMod2;
|
|
66
|
+
|
|
67
|
+
return (_unwrappedGroupingMod = (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod2.length) != null ? _unwrappedGroupingMod : 0;
|
|
68
|
+
}));
|
|
94
69
|
return _extends({}, state, {
|
|
95
70
|
columnGrouping: {
|
|
96
71
|
lookup: groupLookup,
|
|
97
|
-
|
|
72
|
+
unwrappedGroupingModel,
|
|
73
|
+
headerStructure: columnGroupsHeaderStructure,
|
|
74
|
+
maxDepth
|
|
98
75
|
}
|
|
99
76
|
});
|
|
100
77
|
};
|
|
@@ -104,16 +81,16 @@ export const columnGroupsStateInitializer = (state, props) => {
|
|
|
104
81
|
*/
|
|
105
82
|
|
|
106
83
|
export const useGridColumnGrouping = (apiRef, props) => {
|
|
107
|
-
var _props$
|
|
84
|
+
var _props$experimentalFe3;
|
|
108
85
|
|
|
109
86
|
/**
|
|
110
87
|
* API METHODS
|
|
111
88
|
*/
|
|
112
89
|
const getColumnGroupPath = React.useCallback(field => {
|
|
113
|
-
var
|
|
90
|
+
var _unwrappedGroupingMod3;
|
|
114
91
|
|
|
115
|
-
const
|
|
116
|
-
return (
|
|
92
|
+
const unwrappedGroupingModel = gridColumnGroupsUnwrappedModelSelector(apiRef);
|
|
93
|
+
return (_unwrappedGroupingMod3 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod3 : [];
|
|
117
94
|
}, [apiRef]);
|
|
118
95
|
const getAllGroupDetails = React.useCallback(() => {
|
|
119
96
|
const columnGroupLookup = gridColumnGroupsLookupSelector(apiRef);
|
|
@@ -124,30 +101,53 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
124
101
|
unstable_getAllGroupDetails: getAllGroupDetails
|
|
125
102
|
};
|
|
126
103
|
useGridApiMethod(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
|
|
104
|
+
const handleColumnReorderChange = React.useCallback(() => {
|
|
105
|
+
var _props$columnGrouping3;
|
|
106
|
+
|
|
107
|
+
const unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping3 = props.columnGroupingModel) != null ? _props$columnGrouping3 : []);
|
|
108
|
+
apiRef.current.setState(state => {
|
|
109
|
+
var _state$columns$all, _state$columns;
|
|
110
|
+
|
|
111
|
+
const orderedFields = (_state$columns$all = (_state$columns = state.columns) == null ? void 0 : _state$columns.all) != null ? _state$columns$all : [];
|
|
112
|
+
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel);
|
|
113
|
+
return _extends({}, state, {
|
|
114
|
+
columnGrouping: _extends({}, state.columnGrouping, {
|
|
115
|
+
headerStructure: columnGroupsHeaderStructure
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}, [apiRef, props.columnGroupingModel]);
|
|
120
|
+
useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
|
|
121
|
+
const columnFields = useGridSelector(apiRef, gridColumnFieldsSelector);
|
|
122
|
+
const visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
|
|
127
123
|
/**
|
|
128
124
|
* EFFECTS
|
|
129
125
|
*/
|
|
130
|
-
// The effect does not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
|
|
131
|
-
// As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
|
|
132
126
|
|
|
133
|
-
const isFirstRender = React.useRef(true);
|
|
134
127
|
React.useEffect(() => {
|
|
135
|
-
var _props$
|
|
128
|
+
var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
|
|
136
129
|
|
|
137
|
-
if (
|
|
138
|
-
isFirstRender.current = false;
|
|
130
|
+
if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
|
|
139
131
|
return;
|
|
140
132
|
}
|
|
141
133
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
134
|
+
const groupLookup = createGroupLookup((_props$columnGrouping4 = props.columnGroupingModel) != null ? _props$columnGrouping4 : []);
|
|
135
|
+
const unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping5 = props.columnGroupingModel) != null ? _props$columnGrouping5 : []);
|
|
136
|
+
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
|
|
137
|
+
const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => {
|
|
138
|
+
var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
|
|
145
139
|
|
|
146
|
-
|
|
147
|
-
apiRef.current.setState(state => _extends({}, state, {
|
|
148
|
-
columnGrouping: _extends({}, state.columnGrouping, {
|
|
149
|
-
lookup: groupLookup
|
|
150
|
-
})
|
|
140
|
+
return (_unwrappedGroupingMod4 = (_unwrappedGroupingMod5 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod5.length) != null ? _unwrappedGroupingMod4 : 0;
|
|
151
141
|
}));
|
|
152
|
-
|
|
142
|
+
apiRef.current.setState(state => {
|
|
143
|
+
return _extends({}, state, {
|
|
144
|
+
columnGrouping: {
|
|
145
|
+
lookup: groupLookup,
|
|
146
|
+
unwrappedGroupingModel,
|
|
147
|
+
headerStructure: columnGroupsHeaderStructure,
|
|
148
|
+
maxDepth
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}, [apiRef, columnFields, visibleColumnFields, props.columnGroupingModel, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
|
|
153
153
|
};
|
|
@@ -6,9 +6,9 @@ import { styled } from '@mui/material/styles';
|
|
|
6
6
|
import { defaultMemoize } from 'reselect';
|
|
7
7
|
import { useGridApiContext } from '../../utils/useGridApiContext';
|
|
8
8
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
9
|
-
import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
|
|
10
|
-
import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector } from '../focus/gridFocusStateSelector';
|
|
11
|
-
import { gridDensityHeaderHeightSelector
|
|
9
|
+
import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
|
|
10
|
+
import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector } from '../focus/gridFocusStateSelector';
|
|
11
|
+
import { gridDensityHeaderHeightSelector } from '../density/densitySelector';
|
|
12
12
|
import { gridFilterActiveItemsLookupSelector } from '../filter/gridFilterSelector';
|
|
13
13
|
import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
|
|
14
14
|
import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
|
|
@@ -19,10 +19,8 @@ import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
|
|
|
19
19
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
20
20
|
import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
|
|
21
21
|
import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
|
|
22
|
-
import {
|
|
23
|
-
|
|
22
|
+
import { gridTotalHeaderHeightSelector, gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
24
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
|
-
const MERGE_EMPTY_CELLS = true;
|
|
26
24
|
const GridColumnHeaderRow = styled('div', {
|
|
27
25
|
name: 'MuiDataGrid',
|
|
28
26
|
slot: 'ColumnHeaderRow',
|
|
@@ -45,15 +43,19 @@ export const useGridColumnHeaders = props => {
|
|
|
45
43
|
const apiRef = useGridApiContext();
|
|
46
44
|
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
47
45
|
const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
|
|
48
|
-
const
|
|
46
|
+
const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
|
|
49
47
|
const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
|
|
48
|
+
const columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);
|
|
50
49
|
const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
|
|
50
|
+
const columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);
|
|
51
51
|
const headerHeight = useGridSelector(apiRef, gridDensityHeaderHeightSelector);
|
|
52
|
-
const headerGroupingMaxDepth = useGridSelector(apiRef,
|
|
53
|
-
const totalHeaderHeight = useGridSelector(apiRef,
|
|
52
|
+
const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
|
|
53
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridTotalHeaderHeightSelector);
|
|
54
54
|
const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
|
|
55
55
|
const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
|
|
56
56
|
const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
|
|
57
|
+
const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
|
|
58
|
+
const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
|
|
57
59
|
const rootProps = useGridRootProps();
|
|
58
60
|
const innerRef = React.useRef(null);
|
|
59
61
|
const handleInnerRef = useForkRef(innerRefProp, innerRef);
|
|
@@ -203,8 +205,8 @@ export const useGridColumnHeaders = props => {
|
|
|
203
205
|
const column = renderedColumns[i];
|
|
204
206
|
const columnIndex = firstColumnToRender + i;
|
|
205
207
|
const isFirstColumn = columnIndex === 0;
|
|
206
|
-
const hasTabbableElement = !(
|
|
207
|
-
const tabIndex =
|
|
208
|
+
const hasTabbableElement = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
|
|
209
|
+
const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === column.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
|
|
208
210
|
const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === column.field;
|
|
209
211
|
const open = columnMenuState.open && columnMenuState.field === column.field;
|
|
210
212
|
columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[column.field], {
|
|
@@ -229,8 +231,6 @@ export const useGridColumnHeaders = props => {
|
|
|
229
231
|
});
|
|
230
232
|
};
|
|
231
233
|
|
|
232
|
-
const getParents = (path = [], depth) => path.slice(0, depth + 1);
|
|
233
|
-
|
|
234
234
|
const getColumnGroupHeaders = params => {
|
|
235
235
|
if (headerGroupingMaxDepth === 0) {
|
|
236
236
|
return null;
|
|
@@ -243,115 +243,55 @@ export const useGridColumnHeaders = props => {
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
const {
|
|
246
|
-
renderedColumns,
|
|
247
246
|
firstColumnToRender,
|
|
248
|
-
lastColumnToRender
|
|
249
|
-
maxLastColumn
|
|
247
|
+
lastColumnToRender
|
|
250
248
|
} = columnsToRender;
|
|
251
249
|
const columns = [];
|
|
252
250
|
const headerToRender = [];
|
|
253
251
|
|
|
254
252
|
for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
|
|
255
|
-
var
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
var _column$computedWidth7;
|
|
295
|
-
|
|
296
|
-
const lastItem = aggregated[aggregated.length - 1];
|
|
297
|
-
|
|
298
|
-
if (column.groupPath && column.groupPath.length > depth) {
|
|
299
|
-
var _column$computedWidth5;
|
|
300
|
-
|
|
301
|
-
if (lastItem && lastItem.groupId === column.groupPath[depth]) {
|
|
302
|
-
var _column$computedWidth4;
|
|
303
|
-
|
|
304
|
-
// Merge with the previous columns
|
|
305
|
-
return [...aggregated.slice(0, aggregated.length - 1), _extends({}, lastItem, {
|
|
306
|
-
width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
|
|
307
|
-
fields: [...lastItem.fields, column.field]
|
|
308
|
-
})];
|
|
309
|
-
} // Create a new grouping
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
return [...aggregated, {
|
|
313
|
-
groupId: column.groupPath[depth],
|
|
314
|
-
groupParents: getParents(column.groupPath, depth),
|
|
315
|
-
width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
|
|
316
|
-
fields: [column.field],
|
|
317
|
-
colIndex: firstColumnToRender + i
|
|
318
|
-
}];
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && isDeepEqual(getParents(column.groupPath, depth), lastItem.groupParents)) {
|
|
322
|
-
var _column$computedWidth6;
|
|
323
|
-
|
|
324
|
-
// We merge with previous column
|
|
325
|
-
return [...aggregated.slice(0, aggregated.length - 1), _extends({}, lastItem, {
|
|
326
|
-
width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
|
|
327
|
-
fields: [...lastItem.fields, column.field]
|
|
328
|
-
})];
|
|
329
|
-
} // We create new empty cell
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
return [...aggregated, {
|
|
333
|
-
groupId: null,
|
|
334
|
-
groupParents: getParents(column.groupPath, depth),
|
|
335
|
-
width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
|
|
336
|
-
fields: [column.field],
|
|
337
|
-
colIndex: firstColumnToRender + i
|
|
338
|
-
}];
|
|
339
|
-
}, initialHeader);
|
|
340
|
-
columnIndex = lastColumnToRender;
|
|
341
|
-
const lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
|
|
342
|
-
|
|
343
|
-
while (lastColumnToRenderGroup !== null && columnIndex < maxLastColumn && (_visibleColumns$colum3 = visibleColumns[columnIndex]) != null && _visibleColumns$colum3.groupPath && ((_visibleColumns$colum4 = visibleColumns[columnIndex]) == null ? void 0 : (_visibleColumns$colum5 = _visibleColumns$colum4.groupPath) == null ? void 0 : _visibleColumns$colum5[depth]) === lastColumnToRenderGroup) {
|
|
344
|
-
var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
|
|
345
|
-
|
|
346
|
-
const column = visibleColumns[columnIndex];
|
|
347
|
-
depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = column.computedWidth) != null ? _column$computedWidth8 : 0;
|
|
348
|
-
depthInfo[depthInfo.length - 1].fields.push(column.field);
|
|
349
|
-
columnIndex += 1;
|
|
350
|
-
}
|
|
351
|
-
|
|
253
|
+
var _apiRef$current$unsta, _apiRef$current$unsta2;
|
|
254
|
+
|
|
255
|
+
const rowStructure = columnGroupsHeaderStructure[depth];
|
|
256
|
+
const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
|
|
257
|
+
const firstGroupToRender = (_apiRef$current$unsta = apiRef.current.unstable_getColumnGroupPath(firstColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta : null;
|
|
258
|
+
const firstGroupIndex = rowStructure.findIndex(({
|
|
259
|
+
groupId,
|
|
260
|
+
columnFields
|
|
261
|
+
}) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
|
|
262
|
+
const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
|
|
263
|
+
const lastGroupToRender = (_apiRef$current$unsta2 = apiRef.current.unstable_getColumnGroupPath(lastColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta2 : null;
|
|
264
|
+
const lastGroupIndex = rowStructure.findIndex(({
|
|
265
|
+
groupId,
|
|
266
|
+
columnFields
|
|
267
|
+
}) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender));
|
|
268
|
+
const visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(groupStructure => {
|
|
269
|
+
return _extends({}, groupStructure, {
|
|
270
|
+
columnFields: groupStructure.columnFields.filter(field => columnVisibility[field] !== false)
|
|
271
|
+
});
|
|
272
|
+
}).filter(groupStructure => groupStructure.columnFields.length > 0);
|
|
273
|
+
const leftOverflow = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);
|
|
274
|
+
let columnIndex = firstColumnToRender;
|
|
275
|
+
const elements = visibleColumnGroupHeader.map(({
|
|
276
|
+
groupId,
|
|
277
|
+
columnFields
|
|
278
|
+
}) => {
|
|
279
|
+
const hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);
|
|
280
|
+
const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
|
|
281
|
+
const headerInfo = {
|
|
282
|
+
groupId,
|
|
283
|
+
width: columnFields.map(field => apiRef.current.getColumn(field).computedWidth).reduce((acc, val) => acc + val, 0),
|
|
284
|
+
fields: columnFields,
|
|
285
|
+
colIndex: columnIndex,
|
|
286
|
+
hasFocus,
|
|
287
|
+
tabIndex
|
|
288
|
+
};
|
|
289
|
+
columnIndex += columnFields.length;
|
|
290
|
+
return headerInfo;
|
|
291
|
+
});
|
|
352
292
|
headerToRender.push({
|
|
353
293
|
leftOverflow,
|
|
354
|
-
elements
|
|
294
|
+
elements
|
|
355
295
|
});
|
|
356
296
|
}
|
|
357
297
|
|
|
@@ -367,7 +307,9 @@ export const useGridColumnHeaders = props => {
|
|
|
367
307
|
groupId,
|
|
368
308
|
width,
|
|
369
309
|
fields,
|
|
370
|
-
colIndex
|
|
310
|
+
colIndex,
|
|
311
|
+
hasFocus,
|
|
312
|
+
tabIndex
|
|
371
313
|
}, groupIndex) => {
|
|
372
314
|
return /*#__PURE__*/_jsx(GridColumnGroupHeader, {
|
|
373
315
|
groupId: groupId,
|
|
@@ -378,7 +320,9 @@ export const useGridColumnHeaders = props => {
|
|
|
378
320
|
isLastColumn: colIndex === visibleColumns.length - fields.length,
|
|
379
321
|
extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
|
|
380
322
|
maxDepth: headerToRender.length,
|
|
381
|
-
height: headerHeight
|
|
323
|
+
height: headerHeight,
|
|
324
|
+
hasFocus: hasFocus,
|
|
325
|
+
tabIndex: tabIndex
|
|
382
326
|
}, groupIndex);
|
|
383
327
|
})
|
|
384
328
|
}, depthIndex));
|
|
@@ -3,6 +3,4 @@ export declare const gridDensitySelector: (state: GridStateCommunity) => import(
|
|
|
3
3
|
export declare const gridDensityValueSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridDensity>;
|
|
4
4
|
export declare const gridDensityRowHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
5
|
export declare const gridDensityHeaderHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
6
|
-
export declare const gridDensityHeaderGroupingMaxDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
7
6
|
export declare const gridDensityFactorSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
8
|
-
export declare const gridDensityTotalHeaderHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
@@ -3,6 +3,4 @@ export const gridDensitySelector = state => state.density;
|
|
|
3
3
|
export const gridDensityValueSelector = createSelector(gridDensitySelector, density => density.value);
|
|
4
4
|
export const gridDensityRowHeightSelector = createSelector(gridDensitySelector, density => density.rowHeight);
|
|
5
5
|
export const gridDensityHeaderHeightSelector = createSelector(gridDensitySelector, density => density.headerHeight);
|
|
6
|
-
export const
|
|
7
|
-
export const gridDensityFactorSelector = createSelector(gridDensitySelector, density => density.factor);
|
|
8
|
-
export const gridDensityTotalHeaderHeightSelector = createSelector(gridDensitySelector, density => density.headerHeight * (1 + density.headerGroupingMaxDepth));
|
|
6
|
+
export const gridDensityFactorSelector = createSelector(gridDensitySelector, density => density.factor);
|
|
@@ -4,5 +4,5 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
4
4
|
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
5
|
export declare const COMPACT_DENSITY_FACTOR = 0.7;
|
|
6
6
|
export declare const COMFORTABLE_DENSITY_FACTOR = 1.3;
|
|
7
|
-
export declare const densityStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'density' | 'headerHeight' | 'rowHeight'
|
|
7
|
+
export declare const densityStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'density' | 'headerHeight' | 'rowHeight'>>;
|
|
8
8
|
export declare const useGridDensity: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'headerHeight' | 'rowHeight' | 'density'>) => void;
|
|
@@ -5,20 +5,16 @@ import { useGridLogger } from '../../utils/useGridLogger';
|
|
|
5
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
6
|
import { gridDensitySelector } from './densitySelector';
|
|
7
7
|
import { isDeepEqual } from '../../../utils/utils';
|
|
8
|
-
import { useGridSelector } from '../../utils/useGridSelector';
|
|
9
|
-
import { gridVisibleColumnDefinitionsSelector } from '../columns';
|
|
10
|
-
import { unwrapGroupingColumnModel } from '../columnGrouping/useGridColumnGrouping';
|
|
11
8
|
export const COMPACT_DENSITY_FACTOR = 0.7;
|
|
12
9
|
export const COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight and rowHeight in state
|
|
13
10
|
|
|
14
|
-
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight
|
|
11
|
+
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
15
12
|
switch (newDensity) {
|
|
16
13
|
case GridDensityTypes.Compact:
|
|
17
14
|
return {
|
|
18
15
|
value: newDensity,
|
|
19
16
|
headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
|
|
20
17
|
rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
|
|
21
|
-
headerGroupingMaxDepth: newMaxDepth,
|
|
22
18
|
factor: COMPACT_DENSITY_FACTOR
|
|
23
19
|
};
|
|
24
20
|
|
|
@@ -27,7 +23,6 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMa
|
|
|
27
23
|
value: newDensity,
|
|
28
24
|
headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
29
25
|
rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
30
|
-
headerGroupingMaxDepth: newMaxDepth,
|
|
31
26
|
factor: COMFORTABLE_DENSITY_FACTOR
|
|
32
27
|
};
|
|
33
28
|
|
|
@@ -36,52 +31,21 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMa
|
|
|
36
31
|
value: newDensity,
|
|
37
32
|
headerHeight: newHeaderHeight,
|
|
38
33
|
rowHeight: newRowHeight,
|
|
39
|
-
headerGroupingMaxDepth: newMaxDepth,
|
|
40
34
|
factor: 1
|
|
41
35
|
};
|
|
42
36
|
}
|
|
43
37
|
};
|
|
44
38
|
|
|
45
|
-
export const densityStateInitializer = (state, props) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let maxDepth;
|
|
49
|
-
|
|
50
|
-
if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
|
|
51
|
-
maxDepth = 0;
|
|
52
|
-
} else {
|
|
53
|
-
const unwrappedGroupingColumnModel = unwrapGroupingColumnModel(props.columnGroupingModel);
|
|
54
|
-
const columnsState = state.columns;
|
|
55
|
-
const visibleColumns = columnsState.all.filter(field => columnsState.columnVisibilityModel[field] !== false);
|
|
56
|
-
|
|
57
|
-
if (visibleColumns.length === 0) {
|
|
58
|
-
maxDepth = 0;
|
|
59
|
-
} else {
|
|
60
|
-
maxDepth = Math.max(...visibleColumns.map(field => {
|
|
61
|
-
var _unwrappedGroupingCol, _unwrappedGroupingCol2;
|
|
62
|
-
|
|
63
|
-
return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return _extends({}, state, {
|
|
69
|
-
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
|
|
70
|
-
});
|
|
71
|
-
};
|
|
39
|
+
export const densityStateInitializer = (state, props) => _extends({}, state, {
|
|
40
|
+
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight)
|
|
41
|
+
});
|
|
72
42
|
export const useGridDensity = (apiRef, props) => {
|
|
73
|
-
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
74
|
-
const maxDepth = visibleColumns.length > 0 ? Math.max(...visibleColumns.map(column => {
|
|
75
|
-
var _column$groupPath$len, _column$groupPath;
|
|
76
|
-
|
|
77
|
-
return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
|
|
78
|
-
})) : 0;
|
|
79
43
|
const logger = useGridLogger(apiRef, 'useDensity');
|
|
80
|
-
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight
|
|
44
|
+
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight) => {
|
|
81
45
|
logger.debug(`Set grid density to ${newDensity}`);
|
|
82
46
|
apiRef.current.setState(state => {
|
|
83
47
|
const currentDensityState = gridDensitySelector(state);
|
|
84
|
-
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight
|
|
48
|
+
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
|
|
85
49
|
|
|
86
50
|
if (isDeepEqual(currentDensityState, newDensityState)) {
|
|
87
51
|
return state;
|
|
@@ -92,10 +56,10 @@ export const useGridDensity = (apiRef, props) => {
|
|
|
92
56
|
});
|
|
93
57
|
});
|
|
94
58
|
apiRef.current.forceUpdate();
|
|
95
|
-
}, [logger, apiRef, props.headerHeight, props.rowHeight
|
|
59
|
+
}, [logger, apiRef, props.headerHeight, props.rowHeight]);
|
|
96
60
|
React.useEffect(() => {
|
|
97
|
-
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight
|
|
98
|
-
}, [apiRef, props.density, props.rowHeight, props.headerHeight
|
|
61
|
+
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
|
|
62
|
+
}, [apiRef, props.density, props.rowHeight, props.headerHeight]);
|
|
99
63
|
const densityApi = {
|
|
100
64
|
setDensity
|
|
101
65
|
};
|
|
@@ -4,11 +4,12 @@ import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/use
|
|
|
4
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
6
|
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
7
|
-
import {
|
|
7
|
+
import { gridDensityRowHeightSelector } from '../density';
|
|
8
8
|
import { useGridSelector } from '../../utils';
|
|
9
9
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
10
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
11
11
|
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
12
|
+
import { gridTotalHeaderHeightSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
12
13
|
const isTestEnvironment = process.env.NODE_ENV === 'test';
|
|
13
14
|
|
|
14
15
|
const hasScroll = ({
|
|
@@ -42,7 +43,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
42
43
|
const rootDimensionsRef = React.useRef(null);
|
|
43
44
|
const fullDimensionsRef = React.useRef(null);
|
|
44
45
|
const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
45
|
-
const totalHeaderHeight = useGridSelector(apiRef,
|
|
46
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridTotalHeaderHeightSelector);
|
|
46
47
|
const updateGridDimensionsRef = React.useCallback(() => {
|
|
47
48
|
var _apiRef$current$rootE;
|
|
48
49
|
|
package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gridEditingSelectors';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gridEditingSelectors';
|
package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts}
RENAMED
|
File without changes
|