@mui/x-data-grid 5.15.3 → 5.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +150 -1
- package/DataGrid/DataGrid.js +2 -0
- package/DataGrid/useDataGridComponent.js +5 -0
- package/components/DataGridColumnHeaders.js +4 -3
- package/components/GridRow.d.ts +2 -1
- package/components/GridRow.js +136 -85
- package/components/base/GridBody.js +8 -5
- package/components/base/GridOverlays.js +3 -3
- package/components/cell/GridBooleanCell.js +2 -1
- package/components/cell/GridCell.js +9 -1
- package/components/cell/GridEditBooleanCell.js +2 -1
- package/components/cell/GridEditDateCell.js +2 -1
- package/components/cell/GridEditInputCell.js +2 -1
- package/components/cell/GridEditSingleSelectCell.js +2 -1
- package/components/cell/GridSkeletonCell.d.ts +12 -0
- package/components/cell/GridSkeletonCell.js +60 -0
- package/components/cell/index.d.ts +1 -0
- package/components/cell/index.js +2 -1
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
- package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/components/containers/GridRoot.js +3 -3
- package/components/containers/GridRootStyles.js +16 -2
- package/components/panel/GridColumnsPanel.d.ts +6 -1
- package/components/panel/GridColumnsPanel.js +38 -6
- package/components/panel/GridPanel.d.ts +1 -1
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +24 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/hooks/features/columnGrouping/index.d.ts +2 -0
- package/hooks/features/columnGrouping/index.js +2 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
- package/hooks/features/density/densitySelector.d.ts +2 -0
- package/hooks/features/density/densitySelector.js +3 -1
- package/hooks/features/density/densityState.d.ts +1 -0
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/density/useGridDensity.js +45 -9
- package/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/hooks/features/export/useGridPrintExport.js +3 -3
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
- package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.js +55 -54
- package/hooks/features/filter/useGridFilter.js +1 -1
- package/hooks/features/focus/useGridFocus.js +13 -3
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
- package/hooks/features/rows/useGridParamsApi.js +1 -1
- package/hooks/features/rows/useGridRows.js +65 -8
- package/hooks/features/rows/useGridRowsMeta.js +36 -16
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +3 -1
- package/internals/index.js +3 -1
- package/legacy/DataGrid/DataGrid.js +2 -0
- package/legacy/DataGrid/useDataGridComponent.js +5 -0
- package/legacy/components/DataGridColumnHeaders.js +4 -3
- package/legacy/components/GridRow.js +138 -85
- package/legacy/components/base/GridBody.js +8 -5
- package/legacy/components/base/GridOverlays.js +3 -3
- package/legacy/components/cell/GridBooleanCell.js +2 -1
- package/legacy/components/cell/GridCell.js +11 -1
- package/legacy/components/cell/GridEditBooleanCell.js +2 -1
- package/legacy/components/cell/GridEditDateCell.js +2 -1
- package/legacy/components/cell/GridEditInputCell.js +2 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +2 -1
- package/legacy/components/cell/GridSkeletonCell.js +57 -0
- package/legacy/components/cell/index.js +2 -1
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/legacy/components/containers/GridRoot.js +3 -3
- package/legacy/components/containers/GridRootStyles.js +14 -5
- package/legacy/components/panel/GridColumnsPanel.js +41 -6
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
- package/legacy/hooks/features/columnGrouping/index.js +2 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
- package/legacy/hooks/features/density/densitySelector.js +6 -0
- package/legacy/hooks/features/density/useGridDensity.js +44 -6
- package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
- package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
- package/legacy/hooks/features/filter/useGridFilter.js +1 -1
- package/legacy/hooks/features/focus/useGridFocus.js +13 -3
- package/legacy/hooks/features/index.js +1 -0
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
- package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +73 -8
- package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +3 -1
- package/legacy/models/api/gridColumnGroupingApi.js +1 -0
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridColumnGrouping.js +6 -0
- package/legacy/models/index.js +2 -1
- package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/legacy/utils/utils.js +18 -0
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnGroupingApi.d.ts +19 -0
- package/models/api/gridColumnGroupingApi.js +1 -0
- package/models/api/gridDensityApi.d.ts +2 -1
- package/models/api/gridParamsApi.d.ts +1 -1
- package/models/api/gridRowApi.d.ts +6 -0
- package/models/api/gridRowsMetaApi.d.ts +6 -1
- package/models/colDef/gridColDef.d.ts +15 -1
- package/models/events/gridEventLookup.d.ts +7 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridColumnGrouping.d.ts +67 -0
- package/models/gridColumnGrouping.js +6 -0
- package/models/gridRows.d.ts +5 -5
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridStateCommunity.d.ts +2 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/models/params/gridCellParams.d.ts +7 -2
- package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
- package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +6 -0
- package/modern/DataGrid/DataGrid.js +2 -0
- package/modern/DataGrid/useDataGridComponent.js +5 -0
- package/modern/components/DataGridColumnHeaders.js +4 -3
- package/modern/components/GridRow.js +133 -84
- package/modern/components/base/GridBody.js +8 -5
- package/modern/components/base/GridOverlays.js +3 -3
- package/modern/components/cell/GridBooleanCell.js +2 -1
- package/modern/components/cell/GridCell.js +9 -1
- package/modern/components/cell/GridEditBooleanCell.js +2 -1
- package/modern/components/cell/GridEditDateCell.js +2 -1
- package/modern/components/cell/GridEditInputCell.js +2 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +2 -1
- package/modern/components/cell/GridSkeletonCell.js +60 -0
- package/modern/components/cell/index.js +2 -1
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/containers/GridRootStyles.js +16 -2
- package/modern/components/panel/GridColumnsPanel.js +38 -6
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/modern/hooks/features/columnGrouping/index.js +2 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
- package/modern/hooks/features/density/densitySelector.js +3 -1
- package/modern/hooks/features/density/useGridDensity.js +37 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/modern/hooks/features/export/useGridPrintExport.js +3 -3
- package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
- package/modern/hooks/features/filter/useGridFilter.js +1 -1
- package/modern/hooks/features/focus/useGridFocus.js +13 -3
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
- package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +65 -8
- package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -1
- package/modern/models/api/gridColumnGroupingApi.js +1 -0
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridColumnGrouping.js +6 -0
- package/modern/models/index.js +2 -1
- package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/modern/utils/utils.js +16 -0
- package/node/DataGrid/DataGrid.js +2 -0
- package/node/DataGrid/useDataGridComponent.js +7 -0
- package/node/components/DataGridColumnHeaders.js +4 -3
- package/node/components/GridRow.js +136 -77
- package/node/components/base/GridBody.js +7 -4
- package/node/components/base/GridOverlays.js +2 -2
- package/node/components/cell/GridBooleanCell.js +2 -1
- package/node/components/cell/GridCell.js +9 -1
- package/node/components/cell/GridEditBooleanCell.js +2 -1
- package/node/components/cell/GridEditDateCell.js +2 -1
- package/node/components/cell/GridEditInputCell.js +2 -1
- package/node/components/cell/GridEditSingleSelectCell.js +2 -1
- package/node/components/cell/GridSkeletonCell.js +81 -0
- package/node/components/cell/index.js +13 -0
- package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
- package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/node/components/containers/GridRoot.js +4 -4
- package/node/components/containers/GridRootStyles.js +16 -2
- package/node/components/panel/GridColumnsPanel.js +36 -5
- package/node/constants/defaultGridSlotsComponents.js +1 -0
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
- package/node/hooks/features/columnGrouping/index.js +18 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
- package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
- package/node/hooks/features/density/densitySelector.js +6 -2
- package/node/hooks/features/density/useGridDensity.js +48 -9
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/filter/gridFilterUtils.js +55 -55
- package/node/hooks/features/filter/useGridFilter.js +1 -1
- package/node/hooks/features/focus/useGridFocus.js +13 -3
- package/node/hooks/features/index.js +13 -0
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
- package/node/hooks/features/rows/useGridParamsApi.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +60 -7
- package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/node/index.js +1 -1
- package/node/internals/index.js +28 -0
- package/node/models/api/gridColumnGroupingApi.js +5 -0
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridColumnGrouping.js +13 -0
- package/node/models/index.js +13 -0
- package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/node/utils/utils.js +18 -0
- package/package.json +3 -3
- package/utils/utils.d.ts +1 -0
- package/utils/utils.js +16 -0
|
@@ -12,5 +12,5 @@ function getDataGridUtilityClass(slot) {
|
|
|
12
12
|
return (0, _material.generateUtilityClass)('MuiDataGrid', slot);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const gridClasses = (0, _material.generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
15
|
+
const gridClasses = (0, _material.generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
16
16
|
exports.gridClasses = gridClasses;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.gridColumnGroupsLookupSelector = exports.gridColumnGroupingSelector = void 0;
|
|
7
|
+
|
|
8
|
+
var _createSelector = require("../../../utils/createSelector");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @category ColumnGrouping
|
|
12
|
+
* @ignore - do not document.
|
|
13
|
+
*/
|
|
14
|
+
const gridColumnGroupingSelector = state => state.columnGrouping;
|
|
15
|
+
|
|
16
|
+
exports.gridColumnGroupingSelector = gridColumnGroupingSelector;
|
|
17
|
+
const gridColumnGroupsLookupSelector = (0, _createSelector.createSelector)(gridColumnGroupingSelector, columnGrouping => columnGrouping.lookup);
|
|
18
|
+
exports.gridColumnGroupsLookupSelector = gridColumnGroupsLookupSelector;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _gridColumnGroupsSelector = require("./gridColumnGroupsSelector");
|
|
8
|
+
|
|
9
|
+
Object.keys(_gridColumnGroupsSelector).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _gridColumnGroupsSelector[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _gridColumnGroupsSelector[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.columnGroupsStateInitializer = void 0;
|
|
9
|
+
exports.hasGroupPath = hasGroupPath;
|
|
10
|
+
exports.useGridColumnGrouping = exports.unwrapGroupingColumnModel = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
15
|
+
|
|
16
|
+
var React = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _gridColumnGrouping = require("../../../models/gridColumnGrouping");
|
|
19
|
+
|
|
20
|
+
var _gridColumnGroupsSelector = require("./gridColumnGroupsSelector");
|
|
21
|
+
|
|
22
|
+
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
23
|
+
|
|
24
|
+
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
25
|
+
|
|
26
|
+
const _excluded = ["groupId", "children"];
|
|
27
|
+
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
32
|
+
function hasGroupPath(lookupElement) {
|
|
33
|
+
return lookupElement.groupPath !== undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// This is the recurrence function that help writing `unwrapGroupingColumnModel()`
|
|
37
|
+
const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplet) => {
|
|
38
|
+
if ((0, _gridColumnGrouping.isLeaf)(columnGroupNode)) {
|
|
39
|
+
if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
|
|
40
|
+
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'));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const {
|
|
48
|
+
groupId,
|
|
49
|
+
children
|
|
50
|
+
} = columnGroupNode;
|
|
51
|
+
children.forEach(child => {
|
|
52
|
+
recurrentUnwrapGroupingColumnModel(child, [...parents, groupId], unwrappedGroupingModelToComplet);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* This is a function that provide for each column the array of its parents.
|
|
57
|
+
* Parents are ordered from the root to the leaf.
|
|
58
|
+
* @param columnGroupingModel The model such as provided in DataGrid props
|
|
59
|
+
* @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
const unwrapGroupingColumnModel = columnGroupingModel => {
|
|
64
|
+
if (!columnGroupingModel) {
|
|
65
|
+
return {};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const unwrappedSubTree = {};
|
|
69
|
+
columnGroupingModel.forEach(columnGroupNode => {
|
|
70
|
+
recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
|
|
71
|
+
});
|
|
72
|
+
return unwrappedSubTree;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.unwrapGroupingColumnModel = unwrapGroupingColumnModel;
|
|
76
|
+
|
|
77
|
+
const createGroupLookup = columnGroupingModel => {
|
|
78
|
+
let groupLookup = {};
|
|
79
|
+
columnGroupingModel.forEach(node => {
|
|
80
|
+
if ((0, _gridColumnGrouping.isLeaf)(node)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const {
|
|
85
|
+
groupId,
|
|
86
|
+
children
|
|
87
|
+
} = node,
|
|
88
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(node, _excluded);
|
|
89
|
+
|
|
90
|
+
if (!groupId) {
|
|
91
|
+
throw new Error('MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (!children) {
|
|
95
|
+
console.warn(`MUI: group groupId=${groupId} has no children.`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const groupParam = (0, _extends2.default)({}, other, {
|
|
99
|
+
groupId
|
|
100
|
+
});
|
|
101
|
+
const subTreeLookup = createGroupLookup(children);
|
|
102
|
+
|
|
103
|
+
if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {
|
|
104
|
+
throw new Error(`MUI: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
groupLookup = (0, _extends2.default)({}, groupLookup, subTreeLookup, {
|
|
108
|
+
[groupId]: groupParam
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
return (0, _extends2.default)({}, groupLookup);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const columnGroupsStateInitializer = (state, props) => {
|
|
115
|
+
var _props$columnGrouping;
|
|
116
|
+
|
|
117
|
+
const groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
|
|
118
|
+
return (0, _extends2.default)({}, state, {
|
|
119
|
+
columnGrouping: {
|
|
120
|
+
lookup: groupLookup,
|
|
121
|
+
groupCollapsedModel: {}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* @requires useGridColumns (method, event)
|
|
127
|
+
* @requires useGridParamsApi (method)
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
exports.columnGroupsStateInitializer = columnGroupsStateInitializer;
|
|
132
|
+
|
|
133
|
+
const useGridColumnGrouping = (apiRef, props) => {
|
|
134
|
+
var _props$experimentalFe2;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* API METHODS
|
|
138
|
+
*/
|
|
139
|
+
const getColumnGroupPath = React.useCallback(field => {
|
|
140
|
+
var _columnLookup$field$g, _columnLookup$field;
|
|
141
|
+
|
|
142
|
+
const columnLookup = (0, _gridColumnsSelector.gridColumnLookupSelector)(apiRef);
|
|
143
|
+
return (_columnLookup$field$g = (_columnLookup$field = columnLookup[field]) == null ? void 0 : _columnLookup$field.groupPath) != null ? _columnLookup$field$g : [];
|
|
144
|
+
}, [apiRef]);
|
|
145
|
+
const getAllGroupDetails = React.useCallback(() => {
|
|
146
|
+
const columnGroupLookup = (0, _gridColumnGroupsSelector.gridColumnGroupsLookupSelector)(apiRef);
|
|
147
|
+
return columnGroupLookup;
|
|
148
|
+
}, [apiRef]);
|
|
149
|
+
const columnGroupingApi = {
|
|
150
|
+
unstable_getColumnGroupPath: getColumnGroupPath,
|
|
151
|
+
unstable_getAllGroupDetails: getAllGroupDetails
|
|
152
|
+
};
|
|
153
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
|
|
154
|
+
/**
|
|
155
|
+
* EFFECTS
|
|
156
|
+
*/
|
|
157
|
+
// The effect does not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
|
|
158
|
+
// As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
|
|
159
|
+
|
|
160
|
+
const isFirstRender = React.useRef(true);
|
|
161
|
+
React.useEffect(() => {
|
|
162
|
+
var _props$experimentalFe, _props$columnGrouping2;
|
|
163
|
+
|
|
164
|
+
if (isFirstRender.current) {
|
|
165
|
+
isFirstRender.current = false;
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const groupLookup = createGroupLookup((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
|
|
174
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
175
|
+
columnGrouping: (0, _extends2.default)({}, state.columnGrouping, {
|
|
176
|
+
lookup: groupLookup
|
|
177
|
+
})
|
|
178
|
+
}));
|
|
179
|
+
}, [apiRef, props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
exports.useGridColumnGrouping = useGridColumnGrouping;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridColumnGroupingPreProcessors = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
15
|
+
|
|
16
|
+
var _utils = require("../../../utils/utils");
|
|
17
|
+
|
|
18
|
+
var _useGridColumnGrouping = require("./useGridColumnGrouping");
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
const useGridColumnGroupingPreProcessors = (apiRef, props) => {
|
|
25
|
+
var _props$experimentalFe2;
|
|
26
|
+
|
|
27
|
+
const addHeaderGroups = React.useCallback(columnsState => {
|
|
28
|
+
var _props$experimentalFe;
|
|
29
|
+
|
|
30
|
+
if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
|
|
31
|
+
return columnsState;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const unwrappedGroupingModel = (0, _useGridColumnGrouping.unwrapGroupingColumnModel)(props.columnGroupingModel);
|
|
35
|
+
columnsState.all.forEach(field => {
|
|
36
|
+
var _unwrappedGroupingMod, _unwrappedGroupingMod2;
|
|
37
|
+
|
|
38
|
+
const newGroupPath = (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
|
|
39
|
+
const lookupElement = columnsState.lookup[field];
|
|
40
|
+
|
|
41
|
+
if ((0, _useGridColumnGrouping.hasGroupPath)(lookupElement) && (0, _utils.isDeepEqual)(newGroupPath, lookupElement == null ? void 0 : lookupElement.groupPath)) {
|
|
42
|
+
// Avoid modifying the pointer to allow shadow comparison in https://github.com/mui/mui-x/blob/f90afbf10a1264ee8b453d7549dd7cdd6110a4ed/packages/grid/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts#L446:L453
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
columnsState.lookup[field] = (0, _extends2.default)({}, columnsState.lookup[field], {
|
|
47
|
+
groupPath: (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod2 : []
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return columnsState;
|
|
51
|
+
}, [props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
|
|
52
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'hydrateColumns', addHeaderGroups);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.useGridColumnGroupingPreProcessors = useGridColumnGroupingPreProcessors;
|
|
@@ -15,6 +15,8 @@ var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
|
15
15
|
|
|
16
16
|
var _utils = require("@mui/material/utils");
|
|
17
17
|
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
|
|
18
20
|
var _reselect = require("reselect");
|
|
19
21
|
|
|
20
22
|
var _useGridApiContext = require("../../utils/useGridApiContext");
|
|
@@ -45,12 +47,26 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
|
45
47
|
|
|
46
48
|
var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller");
|
|
47
49
|
|
|
50
|
+
var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
|
|
51
|
+
|
|
52
|
+
var _utils2 = require("../../../utils/utils");
|
|
53
|
+
|
|
48
54
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
49
55
|
|
|
50
56
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
51
57
|
|
|
52
58
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
53
59
|
|
|
60
|
+
// TODO: add the possibility to switch this value if needed for customization
|
|
61
|
+
const MERGE_EMPTY_CELLS = true;
|
|
62
|
+
const GridColumnHeaderRow = (0, _styles.styled)('div', {
|
|
63
|
+
name: 'MuiDataGrid',
|
|
64
|
+
slot: 'ColumnHeaderRow',
|
|
65
|
+
overridesResolver: (props, styles) => styles.columnHeaderRow
|
|
66
|
+
})(() => ({
|
|
67
|
+
display: 'flex'
|
|
68
|
+
}));
|
|
69
|
+
|
|
54
70
|
function isUIEvent(event) {
|
|
55
71
|
return !!event.target;
|
|
56
72
|
}
|
|
@@ -69,6 +85,8 @@ const useGridColumnHeaders = props => {
|
|
|
69
85
|
const cellTabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridTabIndexCellSelector);
|
|
70
86
|
const columnHeaderFocus = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridFocusColumnHeaderSelector);
|
|
71
87
|
const headerHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderHeightSelector);
|
|
88
|
+
const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderGroupingMaxDepthSelector);
|
|
89
|
+
const totalHeaderHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityTotalHeaderHeightSelector);
|
|
72
90
|
const filterColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridFilterActiveItemsLookupSelector);
|
|
73
91
|
const sortColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridSortingSelector.gridSortColumnLookupSelector);
|
|
74
92
|
const columnMenuState = (0, _useGridSelector.useGridSelector)(apiRef, _columnMenuSelector.gridColumnMenuSelector);
|
|
@@ -164,9 +182,9 @@ const useGridColumnHeaders = props => {
|
|
|
164
182
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnResizeStop', handleColumnResizeStop);
|
|
165
183
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
|
|
166
184
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
|
|
167
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsScroll', handleScroll);
|
|
185
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsScroll', handleScroll); // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
|
|
168
186
|
|
|
169
|
-
const
|
|
187
|
+
const getColumnsToRender = params => {
|
|
170
188
|
const {
|
|
171
189
|
renderContext: nextRenderContext = renderContext,
|
|
172
190
|
minFirstColumn = minColumnIndex,
|
|
@@ -177,7 +195,6 @@ const useGridColumnHeaders = props => {
|
|
|
177
195
|
return null;
|
|
178
196
|
}
|
|
179
197
|
|
|
180
|
-
const columns = [];
|
|
181
198
|
const [firstRowToRender, lastRowToRender] = (0, _useGridVirtualScroller.getRenderableIndexes)({
|
|
182
199
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
183
200
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
@@ -196,6 +213,27 @@ const useGridColumnHeaders = props => {
|
|
|
196
213
|
});
|
|
197
214
|
const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
|
|
198
215
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
216
|
+
return {
|
|
217
|
+
renderedColumns,
|
|
218
|
+
firstColumnToRender,
|
|
219
|
+
lastColumnToRender,
|
|
220
|
+
minFirstColumn,
|
|
221
|
+
maxLastColumn
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const getColumnHeaders = (params, other = {}) => {
|
|
226
|
+
const columnsToRender = getColumnsToRender(params);
|
|
227
|
+
|
|
228
|
+
if (columnsToRender == null) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const {
|
|
233
|
+
renderedColumns,
|
|
234
|
+
firstColumnToRender
|
|
235
|
+
} = columnsToRender;
|
|
236
|
+
const columns = [];
|
|
199
237
|
|
|
200
238
|
for (let i = 0; i < renderedColumns.length; i += 1) {
|
|
201
239
|
const column = renderedColumns[i];
|
|
@@ -220,25 +258,186 @@ const useGridColumnHeaders = props => {
|
|
|
220
258
|
}, other), column.field));
|
|
221
259
|
}
|
|
222
260
|
|
|
261
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
|
|
262
|
+
role: "row",
|
|
263
|
+
"aria-rowindex": headerGroupingMaxDepth + 1,
|
|
264
|
+
children: columns
|
|
265
|
+
});
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
const getParents = (path = [], depth) => path.slice(0, depth + 1);
|
|
269
|
+
|
|
270
|
+
const getColumnGroupHeaders = params => {
|
|
271
|
+
if (headerGroupingMaxDepth === 0) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const columnsToRender = getColumnsToRender(params);
|
|
276
|
+
|
|
277
|
+
if (columnsToRender == null) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const {
|
|
282
|
+
renderedColumns,
|
|
283
|
+
firstColumnToRender,
|
|
284
|
+
lastColumnToRender,
|
|
285
|
+
maxLastColumn
|
|
286
|
+
} = columnsToRender;
|
|
287
|
+
const columns = [];
|
|
288
|
+
const headerToRender = [];
|
|
289
|
+
|
|
290
|
+
for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
|
|
291
|
+
var _visibleColumns$first, _visibleColumns$first2, _visibleColumns$first3;
|
|
292
|
+
|
|
293
|
+
// Initialize the header line with a grouping item containing all the columns on the left of the virtualization which are in the same group as the first group to render
|
|
294
|
+
const initialHeader = [];
|
|
295
|
+
let leftOverflow = 0;
|
|
296
|
+
let columnIndex = firstColumnToRender - 1;
|
|
297
|
+
const firstColumnToRenderGroup = (_visibleColumns$first = visibleColumns[firstColumnToRender]) == null ? void 0 : (_visibleColumns$first2 = _visibleColumns$first.groupPath) == null ? void 0 : _visibleColumns$first2[depth]; // The array of parent is used to manage empty grouping cell
|
|
298
|
+
// When two empty grouping cell are next to each other, we merge them if the belong to the same group.
|
|
299
|
+
|
|
300
|
+
const firstColumnToRenderGroupParents = getParents((_visibleColumns$first3 = visibleColumns[firstColumnToRender]) == null ? void 0 : _visibleColumns$first3.groupPath, depth);
|
|
301
|
+
|
|
302
|
+
while (firstColumnToRenderGroup !== null && columnIndex >= minColumnIndex && (_visibleColumns$colum = visibleColumns[columnIndex]) != null && _visibleColumns$colum.groupPath && (0, _utils2.isDeepEqual)(getParents((_visibleColumns$colum2 = visibleColumns[columnIndex]) == null ? void 0 : _visibleColumns$colum2.groupPath, depth), firstColumnToRenderGroupParents)) {
|
|
303
|
+
var _visibleColumns$colum, _visibleColumns$colum2, _column$computedWidth;
|
|
304
|
+
|
|
305
|
+
const column = visibleColumns[columnIndex];
|
|
306
|
+
leftOverflow += (_column$computedWidth = column.computedWidth) != null ? _column$computedWidth : 0;
|
|
307
|
+
|
|
308
|
+
if (initialHeader.length === 0) {
|
|
309
|
+
var _column$computedWidth2;
|
|
310
|
+
|
|
311
|
+
initialHeader.push({
|
|
312
|
+
width: (_column$computedWidth2 = column.computedWidth) != null ? _column$computedWidth2 : 0,
|
|
313
|
+
fields: [column.field],
|
|
314
|
+
groupId: firstColumnToRenderGroup,
|
|
315
|
+
groupParents: firstColumnToRenderGroupParents,
|
|
316
|
+
colIndex: columnIndex
|
|
317
|
+
});
|
|
318
|
+
} else {
|
|
319
|
+
var _column$computedWidth3;
|
|
320
|
+
|
|
321
|
+
initialHeader[0].width += (_column$computedWidth3 = column.computedWidth) != null ? _column$computedWidth3 : 0;
|
|
322
|
+
initialHeader[0].fields.push(column.field);
|
|
323
|
+
initialHeader[0].colIndex = columnIndex;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
columnIndex -= 1;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const depthInfo = renderedColumns.reduce((aggregated, column, i) => {
|
|
330
|
+
var _column$computedWidth7;
|
|
331
|
+
|
|
332
|
+
const lastItem = aggregated[aggregated.length - 1];
|
|
333
|
+
|
|
334
|
+
if (column.groupPath && column.groupPath.length > depth) {
|
|
335
|
+
var _column$computedWidth5;
|
|
336
|
+
|
|
337
|
+
if (lastItem && lastItem.groupId === column.groupPath[depth]) {
|
|
338
|
+
var _column$computedWidth4;
|
|
339
|
+
|
|
340
|
+
// Merge with the previous columns
|
|
341
|
+
return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
|
|
342
|
+
width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
|
|
343
|
+
fields: [...lastItem.fields, column.field]
|
|
344
|
+
})];
|
|
345
|
+
} // Create a new grouping
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
return [...aggregated, {
|
|
349
|
+
groupId: column.groupPath[depth],
|
|
350
|
+
groupParents: getParents(column.groupPath, depth),
|
|
351
|
+
width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
|
|
352
|
+
fields: [column.field],
|
|
353
|
+
colIndex: firstColumnToRender + i
|
|
354
|
+
}];
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && (0, _utils2.isDeepEqual)(getParents(column.groupPath, depth), lastItem.groupParents)) {
|
|
358
|
+
var _column$computedWidth6;
|
|
359
|
+
|
|
360
|
+
// We merge with previous column
|
|
361
|
+
return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
|
|
362
|
+
width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
|
|
363
|
+
fields: [...lastItem.fields, column.field]
|
|
364
|
+
})];
|
|
365
|
+
} // We create new empty cell
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
return [...aggregated, {
|
|
369
|
+
groupId: null,
|
|
370
|
+
groupParents: getParents(column.groupPath, depth),
|
|
371
|
+
width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
|
|
372
|
+
fields: [column.field],
|
|
373
|
+
colIndex: firstColumnToRender + i
|
|
374
|
+
}];
|
|
375
|
+
}, initialHeader);
|
|
376
|
+
columnIndex = lastColumnToRender;
|
|
377
|
+
const lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
|
|
378
|
+
|
|
379
|
+
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) {
|
|
380
|
+
var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
|
|
381
|
+
|
|
382
|
+
const column = visibleColumns[columnIndex];
|
|
383
|
+
depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = column.computedWidth) != null ? _column$computedWidth8 : 0;
|
|
384
|
+
depthInfo[depthInfo.length - 1].fields.push(column.field);
|
|
385
|
+
columnIndex += 1;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
headerToRender.push({
|
|
389
|
+
leftOverflow,
|
|
390
|
+
elements: [...depthInfo]
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
headerToRender.forEach((depthInfo, depthIndex) => {
|
|
395
|
+
columns.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
|
|
396
|
+
style: {
|
|
397
|
+
height: `${headerHeight}px`,
|
|
398
|
+
transform: `translateX(-${depthInfo.leftOverflow}px)`
|
|
399
|
+
},
|
|
400
|
+
role: "row",
|
|
401
|
+
"aria-rowindex": depthIndex + 1,
|
|
402
|
+
children: depthInfo.elements.map(({
|
|
403
|
+
groupId,
|
|
404
|
+
width,
|
|
405
|
+
fields,
|
|
406
|
+
colIndex
|
|
407
|
+
}, groupIndex) => {
|
|
408
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnGroupHeader.GridColumnGroupHeader, {
|
|
409
|
+
groupId: groupId,
|
|
410
|
+
width: width,
|
|
411
|
+
fields: fields,
|
|
412
|
+
colIndex: colIndex,
|
|
413
|
+
depth: depthIndex,
|
|
414
|
+
isLastColumn: colIndex === visibleColumns.length - fields.length,
|
|
415
|
+
extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
|
|
416
|
+
maxDepth: headerToRender.length,
|
|
417
|
+
height: headerHeight
|
|
418
|
+
}, groupIndex);
|
|
419
|
+
})
|
|
420
|
+
}, depthIndex));
|
|
421
|
+
});
|
|
223
422
|
return columns;
|
|
224
423
|
};
|
|
225
424
|
|
|
226
425
|
const rootStyle = {
|
|
227
|
-
minHeight:
|
|
228
|
-
maxHeight:
|
|
426
|
+
minHeight: totalHeaderHeight,
|
|
427
|
+
maxHeight: totalHeaderHeight,
|
|
229
428
|
lineHeight: `${headerHeight}px`
|
|
230
429
|
};
|
|
231
430
|
return {
|
|
232
431
|
renderContext,
|
|
233
|
-
|
|
432
|
+
getColumnHeaders,
|
|
433
|
+
getColumnGroupHeaders,
|
|
234
434
|
isDragging: !!dragCol,
|
|
235
435
|
getRootProps: (other = {}) => (0, _extends2.default)({
|
|
236
436
|
style: rootStyle
|
|
237
437
|
}, other),
|
|
238
438
|
getInnerProps: () => ({
|
|
239
439
|
ref: handleInnerRef,
|
|
240
|
-
'
|
|
241
|
-
role: 'row'
|
|
440
|
+
role: 'rowgroup'
|
|
242
441
|
})
|
|
243
442
|
};
|
|
244
443
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridDensityValueSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityFactorSelector = void 0;
|
|
6
|
+
exports.gridDensityValueSelector = exports.gridDensityTotalHeaderHeightSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityHeaderGroupingMaxDepthSelector = exports.gridDensityFactorSelector = void 0;
|
|
7
7
|
|
|
8
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
9
9
|
|
|
@@ -16,5 +16,9 @@ const gridDensityRowHeightSelector = (0, _createSelector.createSelector)(gridDen
|
|
|
16
16
|
exports.gridDensityRowHeightSelector = gridDensityRowHeightSelector;
|
|
17
17
|
const gridDensityHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight);
|
|
18
18
|
exports.gridDensityHeaderHeightSelector = gridDensityHeaderHeightSelector;
|
|
19
|
+
const gridDensityHeaderGroupingMaxDepthSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerGroupingMaxDepth);
|
|
20
|
+
exports.gridDensityHeaderGroupingMaxDepthSelector = gridDensityHeaderGroupingMaxDepthSelector;
|
|
19
21
|
const gridDensityFactorSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.factor);
|
|
20
|
-
exports.gridDensityFactorSelector = gridDensityFactorSelector;
|
|
22
|
+
exports.gridDensityFactorSelector = gridDensityFactorSelector;
|
|
23
|
+
const gridDensityTotalHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight * (1 + density.headerGroupingMaxDepth));
|
|
24
|
+
exports.gridDensityTotalHeaderHeightSelector = gridDensityTotalHeaderHeightSelector;
|