@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
|
@@ -35,6 +35,8 @@ export const GridRootStyles = styled('div', {
|
|
|
35
35
|
[`& .${gridClasses.cellContent}`]: styles.cellContent
|
|
36
36
|
}, {
|
|
37
37
|
[`& .${gridClasses.cellCheckbox}`]: styles.cellCheckbox
|
|
38
|
+
}, {
|
|
39
|
+
[`& .${gridClasses.cellSkeleton}`]: styles.cellSkeleton
|
|
38
40
|
}, {
|
|
39
41
|
[`& .${gridClasses.checkboxInput}`]: styles.checkboxInput
|
|
40
42
|
}, {
|
|
@@ -175,13 +177,24 @@ export const GridRootStyles = styled('div', {
|
|
|
175
177
|
minWidth: 0,
|
|
176
178
|
flex: 1,
|
|
177
179
|
whiteSpace: 'nowrap',
|
|
178
|
-
|
|
180
|
+
overflow: 'hidden'
|
|
179
181
|
},
|
|
180
182
|
[`& .${gridClasses.columnHeaderTitleContainerContent}`]: {
|
|
181
183
|
overflow: 'hidden',
|
|
182
184
|
display: 'flex',
|
|
183
185
|
alignItems: 'center'
|
|
184
186
|
},
|
|
187
|
+
[`& .${gridClasses['columnHeader--filledGroup']} .${gridClasses.columnHeaderTitleContainer}`]: {
|
|
188
|
+
borderBottom: `solid ${borderColor} 1px`,
|
|
189
|
+
boxSizing: 'border-box'
|
|
190
|
+
},
|
|
191
|
+
[`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']} .${gridClasses.columnHeaderTitleContainer}`]: {
|
|
192
|
+
borderBottom: `none`
|
|
193
|
+
},
|
|
194
|
+
[`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']}`]: {
|
|
195
|
+
borderBottom: `solid ${borderColor} 1px`,
|
|
196
|
+
boxSizing: 'border-box'
|
|
197
|
+
},
|
|
185
198
|
[`& .${gridClasses.sortIcon}, & .${gridClasses.filterIcon}`]: {
|
|
186
199
|
fontSize: 'inherit'
|
|
187
200
|
},
|
|
@@ -361,7 +374,8 @@ export const GridRootStyles = styled('div', {
|
|
|
361
374
|
},
|
|
362
375
|
[`& .${gridClasses.columnHeaderDraggableContainer}`]: {
|
|
363
376
|
display: 'flex',
|
|
364
|
-
width: '100%'
|
|
377
|
+
width: '100%',
|
|
378
|
+
height: '100%'
|
|
365
379
|
},
|
|
366
380
|
[`& .${gridClasses.rowReorderCellPlaceholder}`]: {
|
|
367
381
|
display: 'none'
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { GridPanelWrapperProps } from './GridPanelWrapper';
|
|
3
3
|
export interface GridColumnsPanelProps extends GridPanelWrapperProps {
|
|
4
|
+
sort?: 'asc' | 'desc';
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
+
declare function GridColumnsPanel(props: GridColumnsPanelProps): JSX.Element;
|
|
7
|
+
declare namespace GridColumnsPanel {
|
|
8
|
+
var propTypes: any;
|
|
9
|
+
}
|
|
10
|
+
export { GridColumnsPanel };
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["sort"];
|
|
2
4
|
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
3
6
|
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
4
7
|
import IconButton from '@mui/material/IconButton';
|
|
5
8
|
import { switchClasses } from '@mui/material/Switch';
|
|
@@ -54,7 +57,9 @@ const GridColumnsPanelRowRoot = styled('div', {
|
|
|
54
57
|
const GridIconButtonRoot = styled(IconButton)({
|
|
55
58
|
justifyContent: 'flex-end'
|
|
56
59
|
});
|
|
57
|
-
|
|
60
|
+
const collator = new Intl.Collator();
|
|
61
|
+
|
|
62
|
+
function GridColumnsPanel(props) {
|
|
58
63
|
var _rootProps$components, _rootProps$components3, _rootProps$components4;
|
|
59
64
|
|
|
60
65
|
const apiRef = useGridApiContext();
|
|
@@ -68,6 +73,24 @@ export function GridColumnsPanel(props) {
|
|
|
68
73
|
};
|
|
69
74
|
const classes = useUtilityClasses(ownerState);
|
|
70
75
|
|
|
76
|
+
const {
|
|
77
|
+
sort
|
|
78
|
+
} = props,
|
|
79
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
80
|
+
|
|
81
|
+
const sortedColumns = React.useMemo(() => {
|
|
82
|
+
switch (sort) {
|
|
83
|
+
case 'asc':
|
|
84
|
+
return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));
|
|
85
|
+
|
|
86
|
+
case 'desc':
|
|
87
|
+
return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));
|
|
88
|
+
|
|
89
|
+
default:
|
|
90
|
+
return columns;
|
|
91
|
+
}
|
|
92
|
+
}, [columns, sort]);
|
|
93
|
+
|
|
71
94
|
const toggleColumn = event => {
|
|
72
95
|
const {
|
|
73
96
|
name: field
|
|
@@ -101,16 +124,16 @@ export function GridColumnsPanel(props) {
|
|
|
101
124
|
}, []);
|
|
102
125
|
const currentColumns = React.useMemo(() => {
|
|
103
126
|
if (!searchValue) {
|
|
104
|
-
return
|
|
127
|
+
return sortedColumns;
|
|
105
128
|
}
|
|
106
129
|
|
|
107
130
|
const searchValueToCheck = searchValue.toLowerCase();
|
|
108
|
-
return
|
|
109
|
-
}, [
|
|
131
|
+
return sortedColumns.filter(column => (column.headerName || column.field).toLowerCase().indexOf(searchValueToCheck) > -1);
|
|
132
|
+
}, [sortedColumns, searchValue]);
|
|
110
133
|
React.useEffect(() => {
|
|
111
134
|
searchInputRef.current.focus();
|
|
112
135
|
}, []);
|
|
113
|
-
return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({},
|
|
136
|
+
return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {
|
|
114
137
|
children: [/*#__PURE__*/_jsx(GridPanelHeader, {
|
|
115
138
|
children: /*#__PURE__*/_jsx(rootProps.components.BaseTextField, _extends({
|
|
116
139
|
label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),
|
|
@@ -161,4 +184,13 @@ export function GridColumnsPanel(props) {
|
|
|
161
184
|
}))]
|
|
162
185
|
})]
|
|
163
186
|
}));
|
|
164
|
-
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
|
|
190
|
+
// ----------------------------- Warning --------------------------------
|
|
191
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
192
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
193
|
+
// ----------------------------------------------------------------------
|
|
194
|
+
sort: PropTypes.oneOf(['asc', 'desc'])
|
|
195
|
+
} : void 0;
|
|
196
|
+
export { GridColumnsPanel };
|
|
@@ -18,5 +18,5 @@ export interface GridPanelProps extends StandardProps<MUIStyledCommonProps<Theme
|
|
|
18
18
|
open: boolean;
|
|
19
19
|
}
|
|
20
20
|
export declare const gridPanelClasses: Record<keyof GridPanelClasses, string>;
|
|
21
|
-
declare const GridPanel: React.ForwardRefExoticComponent<Pick<GridPanelProps, "hidden" | "color" | "style" | "open" | "translate" | "transition" | "slot" | "title" | "as" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "theme" | "classes" | "
|
|
21
|
+
declare const GridPanel: React.ForwardRefExoticComponent<Pick<GridPanelProps, "hidden" | "color" | "style" | "open" | "translate" | "transition" | "slot" | "title" | "key" | "as" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "component" | "sx" | "theme" | "classes" | "components" | "container" | "placement" | "disablePortal" | "modifiers" | "anchorEl" | "componentsProps" | "keepMounted" | "popperOptions" | "popperRef"> & React.RefAttributes<HTMLDivElement>>;
|
|
22
22
|
export { GridPanel };
|
|
@@ -7,7 +7,7 @@ import MUISwitch from '@mui/material/Switch';
|
|
|
7
7
|
import MUIButton from '@mui/material/Button';
|
|
8
8
|
import MUITooltip from '@mui/material/Tooltip';
|
|
9
9
|
import MUIPopper from '@mui/material/Popper';
|
|
10
|
-
import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton, GridSearchIcon } from '../components';
|
|
10
|
+
import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridSkeletonCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton, GridSearchIcon } from '../components';
|
|
11
11
|
import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
|
|
12
12
|
import { ErrorOverlay } from '../components/ErrorOverlay';
|
|
13
13
|
import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
|
|
@@ -52,6 +52,7 @@ export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, DEFAULT_GRID_ICON
|
|
|
52
52
|
BaseTooltip: MUITooltip,
|
|
53
53
|
BasePopper: MUIPopper,
|
|
54
54
|
Cell: GridCell,
|
|
55
|
+
SkeletonCell: GridSkeletonCell,
|
|
55
56
|
ColumnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
|
|
56
57
|
ColumnMenu: GridColumnMenu,
|
|
57
58
|
ErrorOverlay,
|
|
@@ -67,6 +67,10 @@ export interface GridClasses {
|
|
|
67
67
|
* Styles applied to the cell checkbox element.
|
|
68
68
|
*/
|
|
69
69
|
cellCheckbox: string;
|
|
70
|
+
/**
|
|
71
|
+
* Styles applied to the skeleton cell element.
|
|
72
|
+
*/
|
|
73
|
+
cellSkeleton: string;
|
|
70
74
|
/**
|
|
71
75
|
* Styles applied to the selection checkbox element.
|
|
72
76
|
*/
|
|
@@ -111,6 +115,10 @@ export interface GridClasses {
|
|
|
111
115
|
* Styles applied to the column header element.
|
|
112
116
|
*/
|
|
113
117
|
columnHeader: string;
|
|
118
|
+
/**
|
|
119
|
+
* Styles applied to the column group header element.
|
|
120
|
+
*/
|
|
121
|
+
columnGroupHeader: string;
|
|
114
122
|
/**
|
|
115
123
|
* Styles applied to the header checkbox cell element.
|
|
116
124
|
*/
|
|
@@ -139,6 +147,18 @@ export interface GridClasses {
|
|
|
139
147
|
* Styles applied to the column header's title excepted buttons.
|
|
140
148
|
*/
|
|
141
149
|
columnHeaderTitleContainerContent: string;
|
|
150
|
+
/**
|
|
151
|
+
* Styles applied to the column group header cell if not empty.
|
|
152
|
+
*/
|
|
153
|
+
'columnHeader--filledGroup': string;
|
|
154
|
+
/**
|
|
155
|
+
* Styles applied to the empty column group header cell.
|
|
156
|
+
*/
|
|
157
|
+
'columnHeader--emptyGroup': string;
|
|
158
|
+
/**
|
|
159
|
+
* Styles applied to the column group header cell when show column border.
|
|
160
|
+
*/
|
|
161
|
+
'columnHeader--showColumnBorder': string;
|
|
142
162
|
/**
|
|
143
163
|
* Styles applied to the column headers.
|
|
144
164
|
*/
|
|
@@ -375,6 +395,10 @@ export interface GridClasses {
|
|
|
375
395
|
* Styles applied to the row if it has dynamic row height.
|
|
376
396
|
*/
|
|
377
397
|
'row--dynamicHeight': string;
|
|
398
|
+
/**
|
|
399
|
+
* Styles applied to the row if its detail panel is open.
|
|
400
|
+
*/
|
|
401
|
+
'row--detailPanelExpanded': string;
|
|
378
402
|
/**
|
|
379
403
|
* Styles applied to the row element.
|
|
380
404
|
*/
|
package/constants/gridClasses.js
CHANGED
|
@@ -2,4 +2,4 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/material';
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export const gridClasses = 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']);
|
|
5
|
+
export const gridClasses = 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']);
|
|
@@ -3,7 +3,7 @@ import { GridCellIndexCoordinates, GridScrollParams, GridColDef } from '../../..
|
|
|
3
3
|
import { GridInitialStateCommunity } from '../../../models/gridStateCommunity';
|
|
4
4
|
import { GridExportStateParams, GridRestoreStatePreProcessingContext, GridRestoreStatePreProcessingValue } from '../../features/statePersistence/gridStatePersistenceInterface';
|
|
5
5
|
import { GridHydrateColumnsValue } from '../../features/columns/gridColumnsInterfaces';
|
|
6
|
-
import { GridRowEntry } from '../../../models/gridRows';
|
|
6
|
+
import { GridRowEntry, GridRowId } from '../../../models/gridRows';
|
|
7
7
|
import { GridHydrateRowsValue } from '../../features/rows/gridRowsState';
|
|
8
8
|
import { GridPreferencePanelsValue } from '../../features/preferencesPanel';
|
|
9
9
|
export declare type GridPipeProcessorGroup = keyof GridPipeProcessingLookup;
|
|
@@ -45,6 +45,10 @@ export interface GridPipeProcessingLookup {
|
|
|
45
45
|
value: Partial<GridScrollParams>;
|
|
46
46
|
context: Partial<GridCellIndexCoordinates>;
|
|
47
47
|
};
|
|
48
|
+
rowClassName: {
|
|
49
|
+
value: string[];
|
|
50
|
+
context: GridRowId;
|
|
51
|
+
};
|
|
48
52
|
}
|
|
49
53
|
export declare type GridPipeProcessor<P extends GridPipeProcessorGroup> = (value: GridPipeProcessingLookup[P]['value'], context: GridPipeProcessingLookup[P] extends {
|
|
50
54
|
context: any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
2
|
+
/**
|
|
3
|
+
* @category ColumnGrouping
|
|
4
|
+
* @ignore - do not document.
|
|
5
|
+
*/
|
|
6
|
+
export declare const gridColumnGroupingSelector: (state: GridStateCommunity) => import("./gridColumnGroupsInterfaces").GridColumnsGroupingState;
|
|
7
|
+
export declare const gridColumnGroupsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridColumnGroupsInterfaces").GridColumnGroupLookup>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createSelector } from '../../../utils/createSelector';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @category ColumnGrouping
|
|
5
|
+
* @ignore - do not document.
|
|
6
|
+
*/
|
|
7
|
+
export const gridColumnGroupingSelector = state => state.columnGrouping;
|
|
8
|
+
export const gridColumnGroupsLookupSelector = createSelector(gridColumnGroupingSelector, columnGrouping => columnGrouping.lookup);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
|
+
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
|
+
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
|
+
import { GridColumnGroupingModel, GridColumnGroup } from '../../../models/gridColumnGrouping';
|
|
6
|
+
import { GridStateColDef, GridColDef } from '../../../models/colDef';
|
|
7
|
+
export declare function hasGroupPath(lookupElement: GridColDef | GridStateColDef): lookupElement is GridStateColDef;
|
|
8
|
+
declare type UnwrappedGroupingModel = {
|
|
9
|
+
[key: GridColDef['field']]: GridColumnGroup['groupId'][];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* This is a function that provide for each column the array of its parents.
|
|
13
|
+
* Parents are ordered from the root to the leaf.
|
|
14
|
+
* @param columnGroupingModel The model such as provided in DataGrid props
|
|
15
|
+
* @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
|
|
16
|
+
*/
|
|
17
|
+
export declare const unwrapGroupingColumnModel: (columnGroupingModel?: GridColumnGroupingModel) => UnwrappedGroupingModel;
|
|
18
|
+
export declare const columnGroupsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'columnGroupingModel'>>;
|
|
19
|
+
/**
|
|
20
|
+
* @requires useGridColumns (method, event)
|
|
21
|
+
* @requires useGridParamsApi (method)
|
|
22
|
+
*/
|
|
23
|
+
export declare const useGridColumnGrouping: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnGroupingModel' | 'experimentalFeatures'>) => void;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["groupId", "children"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { isLeaf } from '../../../models/gridColumnGrouping';
|
|
6
|
+
import { gridColumnGroupsLookupSelector } from './gridColumnGroupsSelector';
|
|
7
|
+
import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
|
|
8
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
+
export function hasGroupPath(lookupElement) {
|
|
10
|
+
return lookupElement.groupPath !== undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// This is the recurrence function that help writing `unwrapGroupingColumnModel()`
|
|
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
|
+
};
|
|
51
|
+
|
|
52
|
+
const createGroupLookup = columnGroupingModel => {
|
|
53
|
+
let groupLookup = {};
|
|
54
|
+
columnGroupingModel.forEach(node => {
|
|
55
|
+
if (isLeaf(node)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const {
|
|
60
|
+
groupId,
|
|
61
|
+
children
|
|
62
|
+
} = node,
|
|
63
|
+
other = _objectWithoutPropertiesLoose(node, _excluded);
|
|
64
|
+
|
|
65
|
+
if (!groupId) {
|
|
66
|
+
throw new Error('MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (!children) {
|
|
70
|
+
console.warn(`MUI: group groupId=${groupId} has no children.`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const groupParam = _extends({}, other, {
|
|
74
|
+
groupId
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const subTreeLookup = createGroupLookup(children);
|
|
78
|
+
|
|
79
|
+
if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {
|
|
80
|
+
throw new Error(`MUI: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
groupLookup = _extends({}, groupLookup, subTreeLookup, {
|
|
84
|
+
[groupId]: groupParam
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return _extends({}, groupLookup);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const columnGroupsStateInitializer = (state, props) => {
|
|
91
|
+
var _props$columnGrouping;
|
|
92
|
+
|
|
93
|
+
const groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
|
|
94
|
+
return _extends({}, state, {
|
|
95
|
+
columnGrouping: {
|
|
96
|
+
lookup: groupLookup,
|
|
97
|
+
groupCollapsedModel: {}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* @requires useGridColumns (method, event)
|
|
103
|
+
* @requires useGridParamsApi (method)
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
export const useGridColumnGrouping = (apiRef, props) => {
|
|
107
|
+
var _props$experimentalFe2;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* API METHODS
|
|
111
|
+
*/
|
|
112
|
+
const getColumnGroupPath = React.useCallback(field => {
|
|
113
|
+
var _columnLookup$field$g, _columnLookup$field;
|
|
114
|
+
|
|
115
|
+
const columnLookup = gridColumnLookupSelector(apiRef);
|
|
116
|
+
return (_columnLookup$field$g = (_columnLookup$field = columnLookup[field]) == null ? void 0 : _columnLookup$field.groupPath) != null ? _columnLookup$field$g : [];
|
|
117
|
+
}, [apiRef]);
|
|
118
|
+
const getAllGroupDetails = React.useCallback(() => {
|
|
119
|
+
const columnGroupLookup = gridColumnGroupsLookupSelector(apiRef);
|
|
120
|
+
return columnGroupLookup;
|
|
121
|
+
}, [apiRef]);
|
|
122
|
+
const columnGroupingApi = {
|
|
123
|
+
unstable_getColumnGroupPath: getColumnGroupPath,
|
|
124
|
+
unstable_getAllGroupDetails: getAllGroupDetails
|
|
125
|
+
};
|
|
126
|
+
useGridApiMethod(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
|
|
127
|
+
/**
|
|
128
|
+
* EFFECTS
|
|
129
|
+
*/
|
|
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
|
+
|
|
133
|
+
const isFirstRender = React.useRef(true);
|
|
134
|
+
React.useEffect(() => {
|
|
135
|
+
var _props$experimentalFe, _props$columnGrouping2;
|
|
136
|
+
|
|
137
|
+
if (isFirstRender.current) {
|
|
138
|
+
isFirstRender.current = false;
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const groupLookup = createGroupLookup((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
|
|
147
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
148
|
+
columnGrouping: _extends({}, state.columnGrouping, {
|
|
149
|
+
lookup: groupLookup
|
|
150
|
+
})
|
|
151
|
+
}));
|
|
152
|
+
}, [apiRef, props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
|
|
153
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
3
|
+
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
4
|
+
export declare const useGridColumnGroupingPreProcessors: (apiRef: React.MutableRefObject<GridApiCommunity>, props: DataGridProcessedProps) => void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
4
|
+
import { isDeepEqual } from '../../../utils/utils';
|
|
5
|
+
import { unwrapGroupingColumnModel, hasGroupPath } from './useGridColumnGrouping';
|
|
6
|
+
export const useGridColumnGroupingPreProcessors = (apiRef, props) => {
|
|
7
|
+
var _props$experimentalFe2;
|
|
8
|
+
|
|
9
|
+
const addHeaderGroups = React.useCallback(columnsState => {
|
|
10
|
+
var _props$experimentalFe;
|
|
11
|
+
|
|
12
|
+
if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
|
|
13
|
+
return columnsState;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel);
|
|
17
|
+
columnsState.all.forEach(field => {
|
|
18
|
+
var _unwrappedGroupingMod, _unwrappedGroupingMod2;
|
|
19
|
+
|
|
20
|
+
const newGroupPath = (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
|
|
21
|
+
const lookupElement = columnsState.lookup[field];
|
|
22
|
+
|
|
23
|
+
if (hasGroupPath(lookupElement) && isDeepEqual(newGroupPath, lookupElement == null ? void 0 : lookupElement.groupPath)) {
|
|
24
|
+
// 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
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
columnsState.lookup[field] = _extends({}, columnsState.lookup[field], {
|
|
29
|
+
groupPath: (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod2 : []
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
return columnsState;
|
|
33
|
+
}, [props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
|
|
34
|
+
useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', addHeaderGroups);
|
|
35
|
+
};
|
|
@@ -4,13 +4,15 @@ interface UseGridColumnHeadersProps {
|
|
|
4
4
|
innerRef?: React.Ref<HTMLDivElement>;
|
|
5
5
|
minColumnIndex?: number;
|
|
6
6
|
}
|
|
7
|
+
interface GetHeadersParams {
|
|
8
|
+
renderContext: GridRenderContext | null;
|
|
9
|
+
minFirstColumn?: number;
|
|
10
|
+
maxLastColumn?: number;
|
|
11
|
+
}
|
|
7
12
|
export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) => {
|
|
8
13
|
renderContext: GridRenderContext | null;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
minFirstColumn?: number | undefined;
|
|
12
|
-
maxLastColumn?: number | undefined;
|
|
13
|
-
} | undefined, other?: {}) => JSX.Element[] | null;
|
|
14
|
+
getColumnHeaders: (params?: GetHeadersParams, other?: {}) => JSX.Element | null;
|
|
15
|
+
getColumnGroupHeaders: (params?: GetHeadersParams) => JSX.Element[] | null;
|
|
14
16
|
isDragging: boolean;
|
|
15
17
|
getRootProps: (other?: {}) => {
|
|
16
18
|
style: {
|
|
@@ -21,7 +23,6 @@ export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) =>
|
|
|
21
23
|
};
|
|
22
24
|
getInnerProps: () => {
|
|
23
25
|
ref: React.Ref<HTMLDivElement>;
|
|
24
|
-
'aria-rowindex': number;
|
|
25
26
|
role: string;
|
|
26
27
|
};
|
|
27
28
|
};
|