@mui/x-data-grid 8.8.0 → 8.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +225 -24
- package/DataGrid/DataGrid.js +5 -0
- package/DataGrid/index.d.ts +0 -1
- package/DataGrid/useDataGridComponent.js +10 -0
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/components/GridDetailPanels.d.ts +2 -2
- package/components/GridPinnedRows.d.ts +2 -2
- package/components/GridRow.js +5 -0
- package/components/GridScrollArea.js +1 -1
- package/components/cell/GridCell.js +7 -5
- package/components/cell/GridEditSingleSelectCell.js +1 -1
- package/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/components/containers/GridRootStyles.d.ts +1 -1
- package/components/containers/GridRootStyles.js +39 -0
- package/components/toolbarV8/Toolbar.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +5 -5
- package/constants/dataGridPropsDefaultValues.js +1 -0
- package/constants/gridClasses.d.ts +12 -0
- package/constants/gridClasses.js +3 -1
- package/esm/DataGrid/DataGrid.js +5 -0
- package/esm/DataGrid/index.d.ts +0 -1
- package/esm/DataGrid/useDataGridComponent.js +10 -0
- package/esm/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/esm/components/GridDetailPanels.d.ts +2 -2
- package/esm/components/GridPinnedRows.d.ts +2 -2
- package/esm/components/GridRow.js +5 -0
- package/esm/components/GridScrollArea.js +1 -1
- package/esm/components/cell/GridCell.js +7 -5
- package/esm/components/cell/GridEditSingleSelectCell.js +1 -1
- package/esm/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/esm/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/esm/components/containers/GridRootStyles.d.ts +1 -1
- package/esm/components/containers/GridRootStyles.js +39 -0
- package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
- package/esm/components/virtualization/GridVirtualScroller.js +5 -5
- package/esm/constants/dataGridPropsDefaultValues.js +1 -0
- package/esm/constants/gridClasses.d.ts +12 -0
- package/esm/constants/gridClasses.js +3 -1
- package/esm/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
- package/esm/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
- package/esm/hooks/core/useGridProps.d.ts +2 -2
- package/esm/hooks/core/useGridProps.js +3 -1
- package/esm/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/esm/hooks/core/useGridVirtualizer.js +223 -0
- package/esm/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
- package/esm/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
- package/esm/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -2
- package/esm/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
- package/esm/hooks/features/columns/gridColumnsSelector.js +6 -2
- package/esm/hooks/features/columns/gridColumnsUtils.js +6 -4
- package/esm/hooks/features/columns/useGridColumnSpanning.js +5 -90
- package/esm/hooks/features/columns/useGridColumns.js +8 -10
- package/esm/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/esm/hooks/features/export/utils.js +1 -1
- package/esm/hooks/features/filter/useGridFilter.js +3 -3
- package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
- package/esm/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/esm/hooks/features/keyboardNavigation/utils.js +5 -5
- package/esm/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
- package/esm/hooks/features/listView/gridListViewSelectors.js +7 -0
- package/esm/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/esm/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/esm/hooks/features/pivoting/gridPivotingSelectors.js +1 -2
- package/esm/hooks/features/rowSelection/useGridRowSelection.js +5 -4
- package/esm/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/esm/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/esm/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/esm/hooks/features/rows/gridRowsUtils.js +5 -2
- package/esm/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/esm/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/esm/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/esm/hooks/features/rows/useGridRows.js +4 -3
- package/esm/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/esm/hooks/features/rows/useGridRowsMeta.js +17 -187
- package/esm/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/esm/hooks/features/scroll/useGridScroll.js +2 -3
- package/esm/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/esm/hooks/features/virtualization/index.d.ts +1 -0
- package/esm/hooks/features/virtualization/index.js +1 -0
- package/esm/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/esm/hooks/features/virtualization/useGridVirtualization.js +41 -22
- package/esm/hooks/utils/index.d.ts +2 -1
- package/esm/hooks/utils/index.js +2 -1
- package/esm/hooks/utils/useFirstRender.d.ts +1 -1
- package/esm/hooks/utils/useFirstRender.js +1 -8
- package/esm/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/esm/hooks/utils/useGridInitializeState.js +6 -1
- package/esm/hooks/utils/useRunOncePerLoop.d.ts +1 -0
- package/esm/hooks/utils/useRunOncePerLoop.js +26 -0
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -1
- package/esm/internals/index.js +1 -1
- package/esm/internals/utils/getPinnedCellOffset.js +5 -0
- package/esm/locales/frFR.js +18 -21
- package/esm/locales/heIL.js +12 -12
- package/esm/locales/plPL.js +22 -24
- package/esm/models/api/gridApiCommon.d.ts +4 -1
- package/esm/models/api/gridColumnSpanning.d.ts +5 -11
- package/esm/models/api/gridRowApi.d.ts +5 -0
- package/esm/models/events/gridEventLookup.d.ts +2 -1
- package/esm/models/gridApiCaches.d.ts +8 -2
- package/esm/models/gridStateCommunity.d.ts +2 -2
- package/esm/models/props/DataGridProps.d.ts +5 -0
- package/esm/utils/roundToDecimalPlaces.d.ts +1 -1
- package/esm/utils/roundToDecimalPlaces.js +1 -3
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
- package/hooks/core/useGridProps.d.ts +2 -2
- package/hooks/core/useGridProps.js +3 -1
- package/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/hooks/core/useGridVirtualizer.js +231 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
- package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -3
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
- package/hooks/features/columns/gridColumnsSelector.js +6 -2
- package/hooks/features/columns/gridColumnsUtils.js +6 -4
- package/hooks/features/columns/useGridColumnSpanning.js +5 -91
- package/hooks/features/columns/useGridColumns.js +8 -10
- package/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/hooks/features/export/utils.js +1 -1
- package/hooks/features/filter/useGridFilter.js +3 -3
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
- package/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/hooks/features/keyboardNavigation/utils.js +5 -5
- package/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
- package/hooks/features/listView/gridListViewSelectors.js +8 -1
- package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/hooks/features/pivoting/gridPivotingSelectors.js +2 -3
- package/hooks/features/rowSelection/useGridRowSelection.js +5 -4
- package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +5 -2
- package/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/hooks/features/rows/useGridRows.js +4 -3
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +15 -186
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.js +2 -3
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/hooks/features/virtualization/index.d.ts +1 -0
- package/hooks/features/virtualization/index.js +12 -0
- package/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/hooks/features/virtualization/useGridVirtualization.js +42 -24
- package/hooks/utils/index.d.ts +2 -1
- package/hooks/utils/index.js +16 -4
- package/hooks/utils/useFirstRender.d.ts +1 -1
- package/hooks/utils/useFirstRender.js +11 -11
- package/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/hooks/utils/useGridInitializeState.js +6 -1
- package/hooks/utils/useRunOncePerLoop.d.ts +1 -0
- package/hooks/utils/useRunOncePerLoop.js +33 -0
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +4 -11
- package/internals/utils/getPinnedCellOffset.js +5 -0
- package/locales/frFR.js +18 -21
- package/locales/heIL.js +12 -12
- package/locales/plPL.js +22 -24
- package/models/api/gridApiCommon.d.ts +4 -1
- package/models/api/gridColumnSpanning.d.ts +5 -11
- package/models/api/gridRowApi.d.ts +5 -0
- package/models/events/gridEventLookup.d.ts +2 -1
- package/models/gridApiCaches.d.ts +8 -2
- package/models/gridStateCommunity.d.ts +2 -2
- package/models/props/DataGridProps.d.ts +5 -0
- package/package.json +5 -5
- package/utils/roundToDecimalPlaces.d.ts +1 -1
- package/utils/roundToDecimalPlaces.js +7 -4
- package/esm/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/esm/hooks/features/rows/gridRowSpanningSelectors.js +0 -5
- package/esm/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/esm/hooks/features/virtualization/useGridVirtualScroller.js +0 -846
- package/esm/hooks/utils/useRunOnce.d.ts +0 -5
- package/esm/hooks/utils/useRunOnce.js +0 -18
- package/esm/utils/platform.d.ts +0 -1
- package/esm/utils/platform.js +0 -2
- package/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/hooks/features/rows/gridRowSpanningSelectors.js +0 -11
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/hooks/features/virtualization/useGridVirtualScroller.js +0 -857
- package/hooks/utils/useRunOnce.d.ts +0 -5
- package/hooks/utils/useRunOnce.js +0 -27
- package/utils/platform.d.ts +0 -1
- package/utils/platform.js +0 -8
|
@@ -2,4 +2,4 @@ import { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
|
|
|
2
2
|
export type OwnerState = DataGridProcessedProps;
|
|
3
3
|
export declare const GridRootStyles: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
4
4
|
ownerState: OwnerState;
|
|
5
|
-
}, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("react").
|
|
5
|
+
}, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("react").ClassAttributes<HTMLDivElement> | keyof import("react").HTMLAttributes<HTMLDivElement>>, {}>;
|
|
@@ -247,6 +247,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
247
247
|
[`& .${_gridClasses.gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
|
|
248
248
|
}, {
|
|
249
249
|
[`& .${_gridClasses.gridClasses.withBorderColor}`]: styles.withBorderColor
|
|
250
|
+
}, {
|
|
251
|
+
[`& .${_gridClasses.gridClasses['row--dropAbove']}`]: styles['row--dropAbove']
|
|
252
|
+
}, {
|
|
253
|
+
[`& .${_gridClasses.gridClasses['row--dropBelow']}`]: styles['row--dropBelow']
|
|
254
|
+
}, {
|
|
255
|
+
[`& .${_gridClasses.gridClasses['row--beingDragged']}`]: styles['row--beingDragged']
|
|
250
256
|
}]
|
|
251
257
|
})(() => {
|
|
252
258
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
@@ -868,6 +874,39 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
868
874
|
[`& .${_gridClasses.gridClasses['scrollbar--vertical']}, & .${_gridClasses.gridClasses.pinnedRows}, & .${_gridClasses.gridClasses.virtualScroller} > .${_gridClasses.gridClasses.filler}`]: {
|
|
869
875
|
display: 'none'
|
|
870
876
|
}
|
|
877
|
+
},
|
|
878
|
+
[`& .${_gridClasses.gridClasses['row--dropAbove']}`]: {
|
|
879
|
+
position: 'relative',
|
|
880
|
+
'&::before': {
|
|
881
|
+
content: '""',
|
|
882
|
+
position: 'absolute',
|
|
883
|
+
top: 0,
|
|
884
|
+
left: 0,
|
|
885
|
+
width: '100%',
|
|
886
|
+
height: '2px',
|
|
887
|
+
backgroundColor: _cssVariables.vars.colors.interactive.selected
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
[`& .${_gridClasses.gridClasses['row--dropBelow']}`]: {
|
|
891
|
+
position: 'relative',
|
|
892
|
+
'&::before': {
|
|
893
|
+
content: '""',
|
|
894
|
+
position: 'absolute',
|
|
895
|
+
bottom: '-2px',
|
|
896
|
+
left: 0,
|
|
897
|
+
width: '100%',
|
|
898
|
+
height: '2px',
|
|
899
|
+
backgroundColor: _cssVariables.vars.colors.interactive.selected
|
|
900
|
+
},
|
|
901
|
+
[`&.${_gridClasses.gridClasses['row--lastVisible']}`]: {
|
|
902
|
+
'&::before': {
|
|
903
|
+
bottom: 'calc(var(--DataGrid-hasScrollY) * 0px + (1 - var(--DataGrid-hasScrollY)) * -2px)'
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
},
|
|
907
|
+
[`& .${_gridClasses.gridClasses['row--beingDragged']}`]: {
|
|
908
|
+
backgroundColor: _cssVariables.vars.colors.background.overlay,
|
|
909
|
+
color: _cssVariables.vars.colors.foreground.disabled
|
|
871
910
|
}
|
|
872
911
|
};
|
|
873
912
|
return gridStyle;
|
|
@@ -6,7 +6,7 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
6
6
|
*/
|
|
7
7
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
8
8
|
};
|
|
9
|
-
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.
|
|
9
|
+
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
10
10
|
/**
|
|
11
11
|
* The top level Toolbar component that provides context to child components.
|
|
12
12
|
* It renders a styled `<div />` element.
|
|
@@ -11,12 +11,12 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _system = require("@mui/system");
|
|
12
12
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
13
13
|
var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
|
|
14
|
+
var _rows = require("../../hooks/features/rows");
|
|
14
15
|
var _GridScrollArea = require("../GridScrollArea");
|
|
15
16
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
16
|
-
var
|
|
17
|
+
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
17
18
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
18
19
|
var _gridClasses = require("../../constants/gridClasses");
|
|
19
|
-
var _useGridVirtualScroller = require("../../hooks/features/virtualization/useGridVirtualScroller");
|
|
20
20
|
var _useGridOverlays = require("../../hooks/features/overlays/useGridOverlays");
|
|
21
21
|
var _GridHeaders = require("../GridHeaders");
|
|
22
22
|
var _GridMainContainer = require("./GridMainContainer");
|
|
@@ -69,7 +69,7 @@ const Scroller = (0, _system.styled)('div', {
|
|
|
69
69
|
});
|
|
70
70
|
const hasPinnedRightSelector = apiRef => apiRef.current.state.dimensions.rightPinnedWidth > 0;
|
|
71
71
|
function GridVirtualScroller(props) {
|
|
72
|
-
const apiRef = (0,
|
|
72
|
+
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
73
73
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
74
74
|
const hasScrollY = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollYSelector);
|
|
75
75
|
const hasScrollX = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollXSelector);
|
|
@@ -85,7 +85,7 @@ function GridVirtualScroller(props) {
|
|
|
85
85
|
hasPinnedRight
|
|
86
86
|
}, overlaysProps);
|
|
87
87
|
const classes = useUtilityClasses(ownerState);
|
|
88
|
-
const virtualScroller =
|
|
88
|
+
const virtualScroller = apiRef.current.virtualizer.api.useVirtualization().getters;
|
|
89
89
|
const {
|
|
90
90
|
getContainerProps,
|
|
91
91
|
getScrollerProps,
|
|
@@ -96,7 +96,7 @@ function GridVirtualScroller(props) {
|
|
|
96
96
|
getRows,
|
|
97
97
|
getScrollAreaProps
|
|
98
98
|
} = virtualScroller;
|
|
99
|
-
const rows = getRows();
|
|
99
|
+
const rows = getRows(undefined, (0, _rows.gridRowTreeSelector)(apiRef));
|
|
100
100
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridMainContainer.GridMainContainer, (0, _extends2.default)({
|
|
101
101
|
className: classes.root
|
|
102
102
|
}, getContainerProps(), {
|
|
@@ -16,6 +16,7 @@ const DATA_GRID_PROPS_DEFAULT_VALUES = exports.DATA_GRID_PROPS_DEFAULT_VALUES =
|
|
|
16
16
|
checkboxSelectionVisibleOnly: false,
|
|
17
17
|
clipboardCopyCellDelimiter: '\t',
|
|
18
18
|
columnBufferPx: 150,
|
|
19
|
+
columnFilterDebounceMs: 150,
|
|
19
20
|
columnHeaderHeight: 56,
|
|
20
21
|
disableAutosize: false,
|
|
21
22
|
disableColumnFilter: false,
|
|
@@ -577,6 +577,18 @@ export interface GridClasses {
|
|
|
577
577
|
* Styles applied to the floating special row reorder cell element when it is dragged.
|
|
578
578
|
*/
|
|
579
579
|
'row--dragging': string;
|
|
580
|
+
/**
|
|
581
|
+
* Styles applied to the row element when it is a drop target above.
|
|
582
|
+
*/
|
|
583
|
+
'row--dropAbove': string;
|
|
584
|
+
/**
|
|
585
|
+
* Styles applied to the row element when it is a drop target below.
|
|
586
|
+
*/
|
|
587
|
+
'row--dropBelow': string;
|
|
588
|
+
/**
|
|
589
|
+
* Styles applied to the row element when it is being dragged (entire row).
|
|
590
|
+
*/
|
|
591
|
+
'row--beingDragged': string;
|
|
580
592
|
/**
|
|
581
593
|
* Styles applied to the first visible row element on every page of the grid.
|
|
582
594
|
*/
|
package/constants/gridClasses.js
CHANGED
|
@@ -11,4 +11,6 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
|
|
|
11
11
|
function getDataGridUtilityClass(slot) {
|
|
12
12
|
return (0, _generateUtilityClass.default)('MuiDataGrid', slot);
|
|
13
13
|
}
|
|
14
|
-
const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
|
|
14
|
+
const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
|
|
15
|
+
// TODO v9: Rename to `cell--dragging`
|
|
16
|
+
'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
|
package/esm/DataGrid/DataGrid.js
CHANGED
|
@@ -126,6 +126,11 @@ DataGridRaw.propTypes = {
|
|
|
126
126
|
* @default 150
|
|
127
127
|
*/
|
|
128
128
|
columnBufferPx: PropTypes.number,
|
|
129
|
+
/**
|
|
130
|
+
* The milliseconds delay to wait after a keystroke before triggering filtering in the columns menu.
|
|
131
|
+
* @default 150
|
|
132
|
+
*/
|
|
133
|
+
columnFilterDebounceMs: PropTypes.number,
|
|
129
134
|
/**
|
|
130
135
|
* Sets the height in pixels of the column group headers in the Data Grid.
|
|
131
136
|
* Inherits the `columnHeaderHeight` value if not set.
|
package/esm/DataGrid/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
1
4
|
import { useGridInitialization } from "../hooks/core/useGridInitialization.js";
|
|
5
|
+
import { useGridVirtualizer } from "../hooks/core/useGridVirtualizer.js";
|
|
2
6
|
import { useGridInitializeState } from "../hooks/utils/useGridInitializeState.js";
|
|
3
7
|
import { useGridClipboard } from "../hooks/features/clipboard/useGridClipboard.js";
|
|
4
8
|
import { columnMenuStateInitializer, useGridColumnMenu } from "../hooks/features/columnMenu/useGridColumnMenu.js";
|
|
@@ -62,6 +66,7 @@ export const useDataGridComponent = (apiRef, props) => {
|
|
|
62
66
|
useGridInitializeState(dimensionsStateInitializer, apiRef, props);
|
|
63
67
|
useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
|
|
64
68
|
useGridInitializeState(listViewStateInitializer, apiRef, props);
|
|
69
|
+
useGridVirtualizer(apiRef, props);
|
|
65
70
|
useGridKeyboardNavigation(apiRef, props);
|
|
66
71
|
useGridRowSelection(apiRef, props);
|
|
67
72
|
useGridColumns(apiRef, props);
|
|
@@ -90,4 +95,9 @@ export const useDataGridComponent = (apiRef, props) => {
|
|
|
90
95
|
useGridVirtualization(apiRef, props);
|
|
91
96
|
useGridListView(apiRef, props);
|
|
92
97
|
useGridDataSource(apiRef, props);
|
|
98
|
+
|
|
99
|
+
// Should be the last thing to run, because all pre-processors should have been registered by now.
|
|
100
|
+
React.useEffect(() => {
|
|
101
|
+
apiRef.current.runAppliersForPendingProcessors();
|
|
102
|
+
});
|
|
93
103
|
};
|
|
@@ -24,6 +24,7 @@ export const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF
|
|
|
24
24
|
const rowId = gridRowIdSelector(apiRef, row);
|
|
25
25
|
return apiRef.current.isRowSelected(rowId);
|
|
26
26
|
},
|
|
27
|
+
rowSpanValueGetter: (_, row, column, apiRef) => gridRowIdSelector(apiRef, row),
|
|
27
28
|
renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),
|
|
28
29
|
renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))
|
|
29
30
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { VirtualScrollerCompat } from '@mui/x-virtualizer';
|
|
2
2
|
export interface GridDetailPanelsProps {
|
|
3
|
-
virtualScroller:
|
|
3
|
+
virtualScroller: VirtualScrollerCompat;
|
|
4
4
|
}
|
|
5
5
|
export declare function GridDetailPanels(_: GridDetailPanelsProps): null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { VirtualScrollerCompat } from '@mui/x-virtualizer';
|
|
2
2
|
export interface GridPinnedRowsProps {
|
|
3
3
|
position: 'top' | 'bottom';
|
|
4
|
-
virtualScroller:
|
|
4
|
+
virtualScroller: VirtualScrollerCompat;
|
|
5
5
|
}
|
|
6
6
|
export declare function GridPinnedRows(_: GridPinnedRowsProps): null;
|
|
@@ -202,6 +202,11 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
202
202
|
});
|
|
203
203
|
rowClassNames.push(rootProps.getRowClassName(rowParams));
|
|
204
204
|
}
|
|
205
|
+
|
|
206
|
+
// XXX: fix this properly
|
|
207
|
+
if (!rowNode) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
205
210
|
const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedColumnPosition.NONE) => {
|
|
206
211
|
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
|
|
207
212
|
if (cellColSpanInfo?.spannedByColSpan) {
|
|
@@ -183,7 +183,7 @@ function GridVerticalScrollAreaContent(props) {
|
|
|
183
183
|
if (scrollDirection === 'down') {
|
|
184
184
|
// Only render if the user has not reached yet the bottom of the list
|
|
185
185
|
const totalRowsHeight = rowsMeta.currentPageTotalHeight || 0;
|
|
186
|
-
const maxScrollTop = totalRowsHeight - dimensions.viewportInnerSize.height - dimensions.scrollbarSize;
|
|
186
|
+
const maxScrollTop = totalRowsHeight - dimensions.viewportInnerSize.height - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
|
|
187
187
|
return scrollPosition.current.top < maxScrollTop;
|
|
188
188
|
}
|
|
189
189
|
return false;
|
|
@@ -14,6 +14,8 @@ import capitalize from '@mui/utils/capitalize';
|
|
|
14
14
|
import { fastMemo } from '@mui/x-internals/fastMemo';
|
|
15
15
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
16
16
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
17
|
+
import { useStore } from '@mui/x-internals/store';
|
|
18
|
+
import { Rowspan } from '@mui/x-virtualizer';
|
|
17
19
|
import { doesSupportPreventScroll } from "../../utils/doesSupportPreventScroll.js";
|
|
18
20
|
import { getDataGridUtilityClass, gridClasses } from "../../constants/gridClasses.js";
|
|
19
21
|
import { GridCellModes } from "../../models/index.js";
|
|
@@ -22,7 +24,6 @@ import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
|
|
|
22
24
|
import { gridFocusCellSelector, gridTabIndexCellSelector } from "../../hooks/features/focus/gridFocusStateSelector.js";
|
|
23
25
|
import { GridPinnedColumnPosition } from "../../hooks/features/columns/gridColumnsInterfaces.js";
|
|
24
26
|
import { PinnedColumnPosition } from "../../internals/constants.js";
|
|
25
|
-
import { gridRowSpanningHiddenCellsSelector, gridRowSpanningSpannedCellsSelector } from "../../hooks/features/rows/gridRowSpanningSelectors.js";
|
|
26
27
|
import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.js";
|
|
27
28
|
import { gridEditCellStateSelector } from "../../hooks/features/editing/gridEditingSelectors.js";
|
|
28
29
|
import { attachPinnedStyle } from "../../internals/utils/index.js";
|
|
@@ -116,8 +117,9 @@ const GridCell = forwardRef(function GridCell(props, ref) {
|
|
|
116
117
|
id: rowId,
|
|
117
118
|
field
|
|
118
119
|
}));
|
|
119
|
-
const
|
|
120
|
-
const
|
|
120
|
+
const store = apiRef.current.virtualizer.store;
|
|
121
|
+
const hiddenCells = useStore(store, Rowspan.selectors.hiddenCells);
|
|
122
|
+
const spannedCells = useStore(store, Rowspan.selectors.spannedCells);
|
|
121
123
|
const {
|
|
122
124
|
hasFocus,
|
|
123
125
|
isEditable = false,
|
|
@@ -186,8 +188,8 @@ const GridCell = forwardRef(function GridCell(props, ref) {
|
|
|
186
188
|
propHandler(event);
|
|
187
189
|
}
|
|
188
190
|
}, [apiRef, field, rowId]);
|
|
189
|
-
const isCellRowSpanned = hiddenCells[rowId]?.[
|
|
190
|
-
const rowSpan = spannedCells[rowId]?.[
|
|
191
|
+
const isCellRowSpanned = hiddenCells[rowId]?.[colIndex] ?? false;
|
|
192
|
+
const rowSpan = spannedCells[rowId]?.[colIndex] ?? 1;
|
|
191
193
|
const style = React.useMemo(() => {
|
|
192
194
|
if (isNotVisible) {
|
|
193
195
|
return {
|
|
@@ -14,7 +14,7 @@ import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
|
14
14
|
import { createElement as _createElement } from "react";
|
|
15
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
16
|
function isKeyboardEvent(event) {
|
|
17
|
-
return !!event.key;
|
|
17
|
+
return 'key' in event && !!event.key;
|
|
18
18
|
}
|
|
19
19
|
function GridEditSingleSelectCell(props) {
|
|
20
20
|
const rootProps = useGridRootProps();
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TextFieldProps } from "../../models/gridBaseSlots.js";
|
|
3
|
+
import type { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
|
|
3
4
|
import type { GridColDef } from "../../models/colDef/gridColDef.js";
|
|
4
5
|
export interface GridColumnsManagementProps {
|
|
5
6
|
sort?: 'asc' | 'desc';
|
|
6
7
|
searchPredicate?: (column: GridColDef, searchValue: string) => boolean;
|
|
7
8
|
searchInputProps?: Partial<TextFieldProps>;
|
|
9
|
+
/**
|
|
10
|
+
* The milliseconds delay to wait after a keystroke before triggering filtering in the columns menu.
|
|
11
|
+
* @default 150
|
|
12
|
+
*/
|
|
13
|
+
searchDebounceMs?: DataGridProcessedProps['columnFilterDebounceMs'];
|
|
8
14
|
/**
|
|
9
15
|
* If `true`, the column search field will be focused automatically.
|
|
10
16
|
* If `false`, the first column switch input will be focused automatically.
|
|
@@ -5,6 +5,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
|
+
import debounce from '@mui/utils/debounce';
|
|
8
9
|
import { styled } from '@mui/material/styles';
|
|
9
10
|
import { inputBaseClasses } from '@mui/material/InputBase';
|
|
10
11
|
import { vars } from "../../constants/cssVariables.js";
|
|
@@ -52,8 +53,12 @@ function GridColumnsManagement(props) {
|
|
|
52
53
|
disableResetButton = false,
|
|
53
54
|
toggleAllMode = 'all',
|
|
54
55
|
getTogglableColumns,
|
|
55
|
-
searchInputProps
|
|
56
|
+
searchInputProps,
|
|
57
|
+
searchDebounceMs = rootProps.columnFilterDebounceMs
|
|
56
58
|
} = props;
|
|
59
|
+
const debouncedFilter = React.useMemo(() => debounce(value => {
|
|
60
|
+
setSearchValue(value);
|
|
61
|
+
}, searchDebounceMs ?? 150), [searchDebounceMs]);
|
|
57
62
|
const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
|
|
58
63
|
const sortedColumns = React.useMemo(() => {
|
|
59
64
|
switch (sort) {
|
|
@@ -98,8 +103,8 @@ function GridColumnsManagement(props) {
|
|
|
98
103
|
return apiRef.current.setColumnVisibilityModel(newModel);
|
|
99
104
|
}, [apiRef, columns, getTogglableColumns, toggleAllMode, currentColumns]);
|
|
100
105
|
const handleSearchValueChange = React.useCallback(event => {
|
|
101
|
-
|
|
102
|
-
}, []);
|
|
106
|
+
debouncedFilter(event.target.value);
|
|
107
|
+
}, [debouncedFilter]);
|
|
103
108
|
const hideableColumns = React.useMemo(() => currentColumns.filter(col => col.hideable), [currentColumns]);
|
|
104
109
|
const allHideableColumnsVisible = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] == null || columnVisibilityModel[column.field] !== false), [columnVisibilityModel, hideableColumns]);
|
|
105
110
|
const allHideableColumnsHidden = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] === false), [columnVisibilityModel, hideableColumns]);
|
|
@@ -121,7 +126,10 @@ function GridColumnsManagement(props) {
|
|
|
121
126
|
};
|
|
122
127
|
const handleSearchReset = React.useCallback(() => {
|
|
123
128
|
setSearchValue('');
|
|
124
|
-
searchInputRef.current
|
|
129
|
+
if (searchInputRef.current) {
|
|
130
|
+
searchInputRef.current.value = '';
|
|
131
|
+
searchInputRef.current.focus();
|
|
132
|
+
}
|
|
125
133
|
}, []);
|
|
126
134
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
127
135
|
children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {
|
|
@@ -133,7 +141,6 @@ function GridColumnsManagement(props) {
|
|
|
133
141
|
placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),
|
|
134
142
|
inputRef: searchInputRef,
|
|
135
143
|
className: classes.searchInput,
|
|
136
|
-
value: searchValue,
|
|
137
144
|
onChange: handleSearchValueChange,
|
|
138
145
|
size: "small",
|
|
139
146
|
type: "search",
|
|
@@ -236,6 +243,11 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
|
|
|
236
243
|
* @returns {GridColDef['field'][]} The list of togglable columns' field names.
|
|
237
244
|
*/
|
|
238
245
|
getTogglableColumns: PropTypes.func,
|
|
246
|
+
/**
|
|
247
|
+
* The milliseconds delay to wait after a keystroke before triggering filtering in the columns menu.
|
|
248
|
+
* @default 150
|
|
249
|
+
*/
|
|
250
|
+
searchDebounceMs: PropTypes.number,
|
|
239
251
|
searchInputProps: PropTypes.object,
|
|
240
252
|
searchPredicate: PropTypes.func,
|
|
241
253
|
sort: PropTypes.oneOf(['asc', 'desc']),
|
|
@@ -2,4 +2,4 @@ import { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
|
|
|
2
2
|
export type OwnerState = DataGridProcessedProps;
|
|
3
3
|
export declare const GridRootStyles: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
4
4
|
ownerState: OwnerState;
|
|
5
|
-
}, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("react").
|
|
5
|
+
}, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("react").ClassAttributes<HTMLDivElement> | keyof import("react").HTMLAttributes<HTMLDivElement>>, {}>;
|
|
@@ -241,6 +241,12 @@ export const GridRootStyles = styled('div', {
|
|
|
241
241
|
[`& .${c.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
|
|
242
242
|
}, {
|
|
243
243
|
[`& .${c.withBorderColor}`]: styles.withBorderColor
|
|
244
|
+
}, {
|
|
245
|
+
[`& .${c['row--dropAbove']}`]: styles['row--dropAbove']
|
|
246
|
+
}, {
|
|
247
|
+
[`& .${c['row--dropBelow']}`]: styles['row--dropBelow']
|
|
248
|
+
}, {
|
|
249
|
+
[`& .${c['row--beingDragged']}`]: styles['row--beingDragged']
|
|
244
250
|
}]
|
|
245
251
|
})(() => {
|
|
246
252
|
const apiRef = useGridPrivateApiContext();
|
|
@@ -862,6 +868,39 @@ export const GridRootStyles = styled('div', {
|
|
|
862
868
|
[`& .${c['scrollbar--vertical']}, & .${c.pinnedRows}, & .${c.virtualScroller} > .${c.filler}`]: {
|
|
863
869
|
display: 'none'
|
|
864
870
|
}
|
|
871
|
+
},
|
|
872
|
+
[`& .${c['row--dropAbove']}`]: {
|
|
873
|
+
position: 'relative',
|
|
874
|
+
'&::before': {
|
|
875
|
+
content: '""',
|
|
876
|
+
position: 'absolute',
|
|
877
|
+
top: 0,
|
|
878
|
+
left: 0,
|
|
879
|
+
width: '100%',
|
|
880
|
+
height: '2px',
|
|
881
|
+
backgroundColor: vars.colors.interactive.selected
|
|
882
|
+
}
|
|
883
|
+
},
|
|
884
|
+
[`& .${c['row--dropBelow']}`]: {
|
|
885
|
+
position: 'relative',
|
|
886
|
+
'&::before': {
|
|
887
|
+
content: '""',
|
|
888
|
+
position: 'absolute',
|
|
889
|
+
bottom: '-2px',
|
|
890
|
+
left: 0,
|
|
891
|
+
width: '100%',
|
|
892
|
+
height: '2px',
|
|
893
|
+
backgroundColor: vars.colors.interactive.selected
|
|
894
|
+
},
|
|
895
|
+
[`&.${c['row--lastVisible']}`]: {
|
|
896
|
+
'&::before': {
|
|
897
|
+
bottom: 'calc(var(--DataGrid-hasScrollY) * 0px + (1 - var(--DataGrid-hasScrollY)) * -2px)'
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
},
|
|
901
|
+
[`& .${c['row--beingDragged']}`]: {
|
|
902
|
+
backgroundColor: vars.colors.background.overlay,
|
|
903
|
+
color: vars.colors.foreground.disabled
|
|
865
904
|
}
|
|
866
905
|
};
|
|
867
906
|
return gridStyle;
|
|
@@ -6,7 +6,7 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
6
6
|
*/
|
|
7
7
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
8
8
|
};
|
|
9
|
-
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.
|
|
9
|
+
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
10
10
|
/**
|
|
11
11
|
* The top level Toolbar component that provides context to child components.
|
|
12
12
|
* It renders a styled `<div />` element.
|
|
@@ -3,12 +3,12 @@ import * as React from 'react';
|
|
|
3
3
|
import { styled } from '@mui/system';
|
|
4
4
|
import composeClasses from '@mui/utils/composeClasses';
|
|
5
5
|
import { gridHasBottomFillerSelector, gridHasScrollXSelector, gridHasScrollYSelector } from "../../hooks/features/dimensions/gridDimensionsSelectors.js";
|
|
6
|
+
import { gridRowTreeSelector } from "../../hooks/features/rows/index.js";
|
|
6
7
|
import { GridScrollArea } from "../GridScrollArea.js";
|
|
7
8
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
|
|
8
|
-
import {
|
|
9
|
+
import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.js";
|
|
9
10
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
10
11
|
import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
|
|
11
|
-
import { useGridVirtualScroller } from "../../hooks/features/virtualization/useGridVirtualScroller.js";
|
|
12
12
|
import { useGridOverlays } from "../../hooks/features/overlays/useGridOverlays.js";
|
|
13
13
|
import { GridHeaders } from "../GridHeaders.js";
|
|
14
14
|
import { GridMainContainer as Container } from "./GridMainContainer.js";
|
|
@@ -61,7 +61,7 @@ const Scroller = styled('div', {
|
|
|
61
61
|
});
|
|
62
62
|
const hasPinnedRightSelector = apiRef => apiRef.current.state.dimensions.rightPinnedWidth > 0;
|
|
63
63
|
function GridVirtualScroller(props) {
|
|
64
|
-
const apiRef =
|
|
64
|
+
const apiRef = useGridPrivateApiContext();
|
|
65
65
|
const rootProps = useGridRootProps();
|
|
66
66
|
const hasScrollY = useGridSelector(apiRef, gridHasScrollYSelector);
|
|
67
67
|
const hasScrollX = useGridSelector(apiRef, gridHasScrollXSelector);
|
|
@@ -77,7 +77,7 @@ function GridVirtualScroller(props) {
|
|
|
77
77
|
hasPinnedRight
|
|
78
78
|
}, overlaysProps);
|
|
79
79
|
const classes = useUtilityClasses(ownerState);
|
|
80
|
-
const virtualScroller =
|
|
80
|
+
const virtualScroller = apiRef.current.virtualizer.api.useVirtualization().getters;
|
|
81
81
|
const {
|
|
82
82
|
getContainerProps,
|
|
83
83
|
getScrollerProps,
|
|
@@ -88,7 +88,7 @@ function GridVirtualScroller(props) {
|
|
|
88
88
|
getRows,
|
|
89
89
|
getScrollAreaProps
|
|
90
90
|
} = virtualScroller;
|
|
91
|
-
const rows = getRows();
|
|
91
|
+
const rows = getRows(undefined, gridRowTreeSelector(apiRef));
|
|
92
92
|
return /*#__PURE__*/_jsxs(Container, _extends({
|
|
93
93
|
className: classes.root
|
|
94
94
|
}, getContainerProps(), {
|
|
@@ -10,6 +10,7 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES = {
|
|
|
10
10
|
checkboxSelectionVisibleOnly: false,
|
|
11
11
|
clipboardCopyCellDelimiter: '\t',
|
|
12
12
|
columnBufferPx: 150,
|
|
13
|
+
columnFilterDebounceMs: 150,
|
|
13
14
|
columnHeaderHeight: 56,
|
|
14
15
|
disableAutosize: false,
|
|
15
16
|
disableColumnFilter: false,
|
|
@@ -577,6 +577,18 @@ export interface GridClasses {
|
|
|
577
577
|
* Styles applied to the floating special row reorder cell element when it is dragged.
|
|
578
578
|
*/
|
|
579
579
|
'row--dragging': string;
|
|
580
|
+
/**
|
|
581
|
+
* Styles applied to the row element when it is a drop target above.
|
|
582
|
+
*/
|
|
583
|
+
'row--dropAbove': string;
|
|
584
|
+
/**
|
|
585
|
+
* Styles applied to the row element when it is a drop target below.
|
|
586
|
+
*/
|
|
587
|
+
'row--dropBelow': string;
|
|
588
|
+
/**
|
|
589
|
+
* Styles applied to the row element when it is being dragged (entire row).
|
|
590
|
+
*/
|
|
591
|
+
'row--beingDragged': string;
|
|
580
592
|
/**
|
|
581
593
|
* Styles applied to the first visible row element on every page of the grid.
|
|
582
594
|
*/
|
|
@@ -3,4 +3,6 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
|
3
3
|
export function getDataGridUtilityClass(slot) {
|
|
4
4
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
5
5
|
}
|
|
6
|
-
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
|
|
6
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
|
|
7
|
+
// TODO v9: Rename to `cell--dragging`
|
|
8
|
+
'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
|
|
@@ -138,5 +138,10 @@ export interface GridPipeProcessingPrivateApi {
|
|
|
138
138
|
* @param {GridPipeProcessorGroup} group The group to apply.
|
|
139
139
|
*/
|
|
140
140
|
requestPipeProcessorsApplication: (group: GridPipeProcessorGroup) => void;
|
|
141
|
+
/**
|
|
142
|
+
* Checks of there are any processors that have been updated and runs appliers for them.
|
|
143
|
+
* It is intended to be called in a useEffect in the top-level data grid hook (`useDataGridComponent`).
|
|
144
|
+
*/
|
|
145
|
+
runAppliersForPendingProcessors: () => void;
|
|
141
146
|
}
|
|
142
147
|
export {};
|