@mui/x-data-grid 7.20.0 → 7.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -31
- package/DataGrid/DataGrid.js +1 -0
- package/DataGrid/index.d.ts +0 -1
- package/DataGrid/index.js +1 -2
- package/DataGrid/useDataGridComponent.js +4 -1
- package/DataGrid/useDataGridProps.d.ts +1 -5
- package/DataGrid/useDataGridProps.js +3 -62
- package/components/GridPagination.js +1 -0
- package/components/GridRow.js +25 -36
- package/components/base/GridOverlays.js +8 -0
- package/components/containers/GridRootStyles.js +1 -0
- package/components/menu/columnMenu/GridColumnMenu.js +32 -0
- package/components/toolbar/GridToolbarExport.d.ts +9 -3
- package/components/toolbar/GridToolbarExport.js +55 -3
- package/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/components/virtualization/GridVirtualScroller.js +2 -2
- package/constants/dataGridPropsDefaultValues.d.ts +5 -0
- package/constants/dataGridPropsDefaultValues.js +60 -0
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +2 -1
- package/hooks/features/clipboard/useGridClipboard.js +2 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
- package/hooks/features/columns/gridColumnsUtils.js +3 -0
- package/hooks/features/dimensions/useGridDimensions.js +4 -2
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
- package/hooks/features/listView/gridListViewSelectors.d.ts +5 -0
- package/hooks/features/listView/gridListViewSelectors.js +4 -0
- package/hooks/features/listView/useGridListView.d.ts +10 -0
- package/hooks/features/listView/useGridListView.js +54 -0
- package/hooks/features/rowSelection/useGridRowSelection.js +11 -2
- package/hooks/features/rowSelection/utils.js +1 -1
- package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +16 -0
- package/hooks/features/rows/gridRowsMetaInterfaces.js +1 -0
- package/hooks/features/rows/gridRowsUtils.d.ts +3 -0
- package/hooks/features/rows/gridRowsUtils.js +14 -1
- package/hooks/features/rows/useGridParamsApi.d.ts +2 -1
- package/hooks/features/rows/useGridParamsApi.js +4 -3
- package/hooks/features/rows/useGridRowsMeta.js +135 -154
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.js +3 -2
- package/hooks/features/virtualization/useGridVirtualScroller.js +23 -9
- package/hooks/utils/useGridApiMethod.js +2 -1
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/internals/index.d.ts +2 -1
- package/internals/index.js +2 -1
- package/models/api/gridRowsMetaApi.d.ts +15 -14
- package/models/colDef/gridColDef.d.ts +6 -0
- package/models/colDef/index.d.ts +1 -1
- package/models/gridApiCaches.d.ts +2 -0
- package/models/gridStateCommunity.d.ts +2 -0
- package/models/props/DataGridProps.d.ts +14 -3
- package/modern/DataGrid/DataGrid.js +1 -0
- package/modern/DataGrid/index.js +1 -2
- package/modern/DataGrid/useDataGridComponent.js +4 -1
- package/modern/DataGrid/useDataGridProps.js +3 -62
- package/modern/components/GridPagination.js +1 -0
- package/modern/components/GridRow.js +25 -36
- package/modern/components/base/GridOverlays.js +8 -0
- package/modern/components/containers/GridRootStyles.js +1 -0
- package/modern/components/menu/columnMenu/GridColumnMenu.js +32 -0
- package/modern/components/toolbar/GridToolbarExport.js +55 -3
- package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/modern/components/virtualization/GridVirtualScroller.js +2 -2
- package/modern/constants/dataGridPropsDefaultValues.js +60 -0
- package/modern/hooks/features/clipboard/useGridClipboard.js +2 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
- package/modern/hooks/features/columns/gridColumnsUtils.js +3 -0
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -2
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
- package/modern/hooks/features/listView/gridListViewSelectors.js +4 -0
- package/modern/hooks/features/listView/useGridListView.js +54 -0
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +11 -2
- package/modern/hooks/features/rowSelection/utils.js +1 -1
- package/modern/hooks/features/rows/gridRowsMetaInterfaces.js +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +14 -1
- package/modern/hooks/features/rows/useGridParamsApi.js +4 -3
- package/modern/hooks/features/rows/useGridRowsMeta.js +135 -154
- package/modern/hooks/features/scroll/useGridScroll.js +3 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +23 -9
- package/modern/hooks/utils/useGridApiMethod.js +2 -1
- package/modern/index.js +2 -1
- package/modern/internals/index.js +2 -1
- package/modern/utils/ResizeObserver.js +10 -0
- package/modern/utils/keyboardUtils.js +12 -4
- package/node/DataGrid/DataGrid.js +1 -0
- package/node/DataGrid/index.js +1 -12
- package/node/DataGrid/useDataGridComponent.js +4 -1
- package/node/DataGrid/useDataGridProps.js +6 -65
- package/node/components/GridPagination.js +1 -0
- package/node/components/GridRow.js +25 -36
- package/node/components/base/GridOverlays.js +8 -0
- package/node/components/containers/GridRootStyles.js +1 -0
- package/node/components/menu/columnMenu/GridColumnMenu.js +32 -0
- package/node/components/toolbar/GridToolbarExport.js +52 -0
- package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/node/components/virtualization/GridVirtualScroller.js +2 -2
- package/node/constants/dataGridPropsDefaultValues.js +66 -0
- package/node/hooks/features/clipboard/useGridClipboard.js +2 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +3 -0
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
- package/node/hooks/features/listView/gridListViewSelectors.js +11 -0
- package/node/hooks/features/listView/useGridListView.js +64 -0
- package/node/hooks/features/rowSelection/useGridRowSelection.js +11 -2
- package/node/hooks/features/rowSelection/utils.js +1 -1
- package/node/hooks/features/rows/gridRowsMetaInterfaces.js +5 -0
- package/node/hooks/features/rows/gridRowsUtils.js +16 -2
- package/node/hooks/features/rows/useGridParamsApi.js +4 -3
- package/node/hooks/features/rows/useGridRowsMeta.js +136 -154
- package/node/hooks/features/scroll/useGridScroll.js +3 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +23 -9
- package/node/hooks/utils/useGridApiMethod.js +3 -1
- package/node/index.js +13 -1
- package/node/internals/index.js +22 -0
- package/node/utils/ResizeObserver.js +16 -0
- package/node/utils/keyboardUtils.js +15 -5
- package/package.json +2 -2
- package/utils/ResizeObserver.d.ts +4 -0
- package/utils/ResizeObserver.js +10 -0
- package/utils/keyboardUtils.d.ts +1 -0
- package/utils/keyboardUtils.js +12 -4
|
@@ -45,6 +45,38 @@ const GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGeneric
|
|
|
45
45
|
children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/_jsx(Component, _extends({}, otherProps), index))
|
|
46
46
|
}));
|
|
47
47
|
});
|
|
48
|
+
process.env.NODE_ENV !== "production" ? GridGenericColumnMenu.propTypes = {
|
|
49
|
+
// ----------------------------- Warning --------------------------------
|
|
50
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
51
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
52
|
+
// ----------------------------------------------------------------------
|
|
53
|
+
colDef: PropTypes.object.isRequired,
|
|
54
|
+
/**
|
|
55
|
+
* Initial `slotProps` - it is internal, to be overrriden by Pro or Premium packages
|
|
56
|
+
* @ignore - do not document.
|
|
57
|
+
*/
|
|
58
|
+
defaultSlotProps: PropTypes.object.isRequired,
|
|
59
|
+
/**
|
|
60
|
+
* Initial `slots` - it is internal, to be overrriden by Pro or Premium packages
|
|
61
|
+
* @ignore - do not document.
|
|
62
|
+
*/
|
|
63
|
+
defaultSlots: PropTypes.object.isRequired,
|
|
64
|
+
hideMenu: PropTypes.func.isRequired,
|
|
65
|
+
id: PropTypes.string,
|
|
66
|
+
labelledby: PropTypes.string,
|
|
67
|
+
open: PropTypes.bool.isRequired,
|
|
68
|
+
/**
|
|
69
|
+
* Could be used to pass new props or override props specific to a column menu component
|
|
70
|
+
* e.g. `displayOrder`
|
|
71
|
+
*/
|
|
72
|
+
slotProps: PropTypes.object,
|
|
73
|
+
/**
|
|
74
|
+
* `slots` could be used to add new and (or) override default column menu items
|
|
75
|
+
* If you register a nee component you must pass it's `displayOrder` in `slotProps`
|
|
76
|
+
* or it will be placed in the end of the list
|
|
77
|
+
*/
|
|
78
|
+
slots: PropTypes.object
|
|
79
|
+
} : void 0;
|
|
48
80
|
const GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {
|
|
49
81
|
return /*#__PURE__*/_jsx(GridGenericColumnMenu, _extends({}, props, {
|
|
50
82
|
ref: ref,
|
|
@@ -28,7 +28,13 @@ export interface GridToolbarExportProps {
|
|
|
28
28
|
};
|
|
29
29
|
[key: string]: any;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
declare function GridCsvExportMenuItem(props: GridCsvExportMenuItemProps): React.JSX.Element;
|
|
32
|
+
declare namespace GridCsvExportMenuItem {
|
|
33
|
+
var propTypes: any;
|
|
34
|
+
}
|
|
35
|
+
declare function GridPrintExportMenuItem(props: GridPrintExportMenuItemProps): React.JSX.Element;
|
|
36
|
+
declare namespace GridPrintExportMenuItem {
|
|
37
|
+
var propTypes: any;
|
|
38
|
+
}
|
|
33
39
|
declare const GridToolbarExport: React.ForwardRefExoticComponent<Omit<GridToolbarExportProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
34
|
-
export { GridToolbarExport };
|
|
40
|
+
export { GridToolbarExport, GridCsvExportMenuItem, GridPrintExportMenuItem };
|
|
@@ -9,7 +9,7 @@ import MenuItem from '@mui/material/MenuItem';
|
|
|
9
9
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
10
10
|
import { GridToolbarExportContainer } from "./GridToolbarExportContainer.js";
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
|
|
12
|
+
function GridCsvExportMenuItem(props) {
|
|
13
13
|
const apiRef = useGridApiContext();
|
|
14
14
|
const {
|
|
15
15
|
hideMenu,
|
|
@@ -25,7 +25,27 @@ export function GridCsvExportMenuItem(props) {
|
|
|
25
25
|
children: apiRef.current.getLocaleText('toolbarExportCSV')
|
|
26
26
|
}));
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
process.env.NODE_ENV !== "production" ? GridCsvExportMenuItem.propTypes = {
|
|
29
|
+
// ----------------------------- Warning --------------------------------
|
|
30
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
31
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
32
|
+
// ----------------------------------------------------------------------
|
|
33
|
+
hideMenu: PropTypes.func,
|
|
34
|
+
options: PropTypes.shape({
|
|
35
|
+
allColumns: PropTypes.bool,
|
|
36
|
+
delimiter: PropTypes.string,
|
|
37
|
+
disableToolbarButton: PropTypes.bool,
|
|
38
|
+
escapeFormulas: PropTypes.bool,
|
|
39
|
+
fields: PropTypes.arrayOf(PropTypes.string),
|
|
40
|
+
fileName: PropTypes.string,
|
|
41
|
+
getRowsToExport: PropTypes.func,
|
|
42
|
+
includeColumnGroupsHeaders: PropTypes.bool,
|
|
43
|
+
includeHeaders: PropTypes.bool,
|
|
44
|
+
shouldAppendQuotes: PropTypes.bool,
|
|
45
|
+
utf8WithBom: PropTypes.bool
|
|
46
|
+
})
|
|
47
|
+
} : void 0;
|
|
48
|
+
function GridPrintExportMenuItem(props) {
|
|
29
49
|
const apiRef = useGridApiContext();
|
|
30
50
|
const {
|
|
31
51
|
hideMenu,
|
|
@@ -41,6 +61,38 @@ export function GridPrintExportMenuItem(props) {
|
|
|
41
61
|
children: apiRef.current.getLocaleText('toolbarExportPrint')
|
|
42
62
|
}));
|
|
43
63
|
}
|
|
64
|
+
process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
|
|
65
|
+
// ----------------------------- Warning --------------------------------
|
|
66
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
67
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
68
|
+
// ----------------------------------------------------------------------
|
|
69
|
+
hideMenu: PropTypes.func,
|
|
70
|
+
options: PropTypes.shape({
|
|
71
|
+
allColumns: PropTypes.bool,
|
|
72
|
+
bodyClassName: PropTypes.string,
|
|
73
|
+
copyStyles: PropTypes.bool,
|
|
74
|
+
disableToolbarButton: PropTypes.bool,
|
|
75
|
+
fields: PropTypes.arrayOf(PropTypes.string),
|
|
76
|
+
fileName: PropTypes.string,
|
|
77
|
+
getRowsToExport: PropTypes.func,
|
|
78
|
+
hideFooter: PropTypes.bool,
|
|
79
|
+
hideToolbar: PropTypes.bool,
|
|
80
|
+
includeCheckboxes: PropTypes.bool,
|
|
81
|
+
pageStyle: PropTypes.oneOfType([PropTypes.shape({
|
|
82
|
+
'__@hasInstance@646': PropTypes.func.isRequired,
|
|
83
|
+
'__@metadata@648': PropTypes.any,
|
|
84
|
+
apply: PropTypes.func.isRequired,
|
|
85
|
+
arguments: PropTypes.any.isRequired,
|
|
86
|
+
bind: PropTypes.func.isRequired,
|
|
87
|
+
call: PropTypes.func.isRequired,
|
|
88
|
+
caller: PropTypes.object.isRequired,
|
|
89
|
+
length: PropTypes.number.isRequired,
|
|
90
|
+
name: PropTypes.string.isRequired,
|
|
91
|
+
prototype: PropTypes.any.isRequired,
|
|
92
|
+
toString: PropTypes.func.isRequired
|
|
93
|
+
}), PropTypes.string])
|
|
94
|
+
})
|
|
95
|
+
} : void 0;
|
|
44
96
|
const GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
|
|
45
97
|
const {
|
|
46
98
|
csvOptions = {},
|
|
@@ -77,4 +129,4 @@ process.env.NODE_ENV !== "production" ? GridToolbarExport.propTypes = {
|
|
|
77
129
|
*/
|
|
78
130
|
slotProps: PropTypes.object
|
|
79
131
|
} : void 0;
|
|
80
|
-
export { GridToolbarExport };
|
|
132
|
+
export { GridToolbarExport, GridCsvExportMenuItem, GridPrintExportMenuItem };
|
|
@@ -119,6 +119,10 @@ const GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualS
|
|
|
119
119
|
return /*#__PURE__*/_jsx(Container, {
|
|
120
120
|
ref: useForkRef(ref, scrollbarRef),
|
|
121
121
|
className: classes.root,
|
|
122
|
+
style: props.position === 'vertical' && rootProps.unstable_listView ? {
|
|
123
|
+
height: '100%',
|
|
124
|
+
top: 0
|
|
125
|
+
} : undefined,
|
|
122
126
|
tabIndex: -1,
|
|
123
127
|
"aria-hidden": "true",
|
|
124
128
|
children: /*#__PURE__*/_jsx("div", {
|
|
@@ -78,7 +78,7 @@ function GridVirtualScroller(props) {
|
|
|
78
78
|
}, getScrollerProps(), {
|
|
79
79
|
ownerState: rootProps,
|
|
80
80
|
children: [/*#__PURE__*/_jsxs(TopContainer, {
|
|
81
|
-
children: [/*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
|
|
81
|
+
children: [!rootProps.unstable_listView && /*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
|
|
82
82
|
position: "top",
|
|
83
83
|
virtualScroller: virtualScroller
|
|
84
84
|
})]
|
|
@@ -98,7 +98,7 @@ function GridVirtualScroller(props) {
|
|
|
98
98
|
})]
|
|
99
99
|
})), dimensions.hasScrollY && /*#__PURE__*/_jsx(Scrollbar, _extends({
|
|
100
100
|
position: "vertical"
|
|
101
|
-
}, getScrollbarVerticalProps())), dimensions.hasScrollX && /*#__PURE__*/_jsx(Scrollbar, _extends({
|
|
101
|
+
}, getScrollbarVerticalProps())), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/_jsx(Scrollbar, _extends({
|
|
102
102
|
position: "horizontal"
|
|
103
103
|
}, getScrollbarHorizontalProps())), props.children]
|
|
104
104
|
}));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DataGridPropsWithDefaultValues } from '../models/props/DataGridProps';
|
|
2
|
+
/**
|
|
3
|
+
* The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DATA_GRID_PROPS_DEFAULT_VALUES: DataGridPropsWithDefaultValues;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { GridEditModes } from "../models/gridEditRowModel.js";
|
|
2
|
+
/**
|
|
3
|
+
* The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.
|
|
4
|
+
*/
|
|
5
|
+
export const DATA_GRID_PROPS_DEFAULT_VALUES = {
|
|
6
|
+
autoHeight: false,
|
|
7
|
+
autoPageSize: false,
|
|
8
|
+
autosizeOnMount: false,
|
|
9
|
+
checkboxSelection: false,
|
|
10
|
+
checkboxSelectionVisibleOnly: false,
|
|
11
|
+
clipboardCopyCellDelimiter: '\t',
|
|
12
|
+
columnBufferPx: 150,
|
|
13
|
+
columnHeaderHeight: 56,
|
|
14
|
+
disableAutosize: false,
|
|
15
|
+
disableColumnFilter: false,
|
|
16
|
+
disableColumnMenu: false,
|
|
17
|
+
disableColumnReorder: false,
|
|
18
|
+
disableColumnResize: false,
|
|
19
|
+
disableColumnSelector: false,
|
|
20
|
+
disableColumnSorting: false,
|
|
21
|
+
disableDensitySelector: false,
|
|
22
|
+
disableEval: false,
|
|
23
|
+
disableMultipleColumnsFiltering: false,
|
|
24
|
+
disableMultipleColumnsSorting: false,
|
|
25
|
+
disableMultipleRowSelection: false,
|
|
26
|
+
disableRowSelectionOnClick: false,
|
|
27
|
+
disableVirtualization: false,
|
|
28
|
+
editMode: GridEditModes.Cell,
|
|
29
|
+
filterDebounceMs: 150,
|
|
30
|
+
filterMode: 'client',
|
|
31
|
+
hideFooter: false,
|
|
32
|
+
hideFooterPagination: false,
|
|
33
|
+
hideFooterRowCount: false,
|
|
34
|
+
hideFooterSelectedRowCount: false,
|
|
35
|
+
ignoreDiacritics: false,
|
|
36
|
+
ignoreValueFormatterDuringExport: false,
|
|
37
|
+
// TODO v8: Update to 'select'
|
|
38
|
+
indeterminateCheckboxAction: 'deselect',
|
|
39
|
+
keepColumnPositionIfDraggedOutside: false,
|
|
40
|
+
keepNonExistentRowsSelected: false,
|
|
41
|
+
loading: false,
|
|
42
|
+
logger: console,
|
|
43
|
+
logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',
|
|
44
|
+
pageSizeOptions: [25, 50, 100],
|
|
45
|
+
pagination: false,
|
|
46
|
+
paginationMode: 'client',
|
|
47
|
+
resizeThrottleMs: 60,
|
|
48
|
+
rowBufferPx: 150,
|
|
49
|
+
rowHeight: 52,
|
|
50
|
+
rowPositionsDebounceMs: 166,
|
|
51
|
+
rows: [],
|
|
52
|
+
rowSelection: true,
|
|
53
|
+
rowSpacingType: 'margin',
|
|
54
|
+
showCellVerticalBorder: false,
|
|
55
|
+
showColumnVerticalBorder: false,
|
|
56
|
+
sortingMode: 'client',
|
|
57
|
+
sortingOrder: ['asc', 'desc', null],
|
|
58
|
+
throttleRowsMs: 0,
|
|
59
|
+
unstable_rowSpanning: false
|
|
60
|
+
};
|
|
@@ -6,6 +6,7 @@ import { GridHydrateColumnsValue, GridPinnedColumnPosition } from '../../feature
|
|
|
6
6
|
import { GridRowEntry, GridRowId } from '../../../models/gridRows';
|
|
7
7
|
import { GridHydrateRowsValue } from '../../features/rows/gridRowsInterfaces';
|
|
8
8
|
import { GridPreferencePanelsValue } from '../../features/preferencesPanel';
|
|
9
|
+
import { HeightEntry } from '../../features/rows/gridRowsMetaInterfaces';
|
|
9
10
|
export type GridPipeProcessorGroup = keyof GridPipeProcessingLookup;
|
|
10
11
|
export interface GridPipeProcessingLookup {
|
|
11
12
|
columnMenu: {
|
|
@@ -38,7 +39,7 @@ export interface GridPipeProcessingLookup {
|
|
|
38
39
|
context: GridRestoreStatePreProcessingContext<GridInitialStateCommunity>;
|
|
39
40
|
};
|
|
40
41
|
rowHeight: {
|
|
41
|
-
value:
|
|
42
|
+
value: HeightEntry;
|
|
42
43
|
context: GridRowEntry;
|
|
43
44
|
};
|
|
44
45
|
scrollToIndexes: {
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { useGridApiOptionHandler, useGridNativeEventListener } from "../../utils/index.js";
|
|
3
3
|
import { gridFocusCellSelector } from "../focus/gridFocusStateSelector.js";
|
|
4
4
|
import { serializeCellValue } from "../export/serializers/csvSerializer.js";
|
|
5
|
+
import { isCopyShortcut } from "../../../utils/keyboardUtils.js";
|
|
5
6
|
function writeToClipboardPolyfill(data) {
|
|
6
7
|
const span = document.createElement('span');
|
|
7
8
|
span.style.whiteSpace = 'pre';
|
|
@@ -53,7 +54,7 @@ export const useGridClipboard = (apiRef, props) => {
|
|
|
53
54
|
const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
|
|
54
55
|
const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
|
|
55
56
|
const handleCopy = React.useCallback(event => {
|
|
56
|
-
if (!(
|
|
57
|
+
if (!isCopyShortcut(event)) {
|
|
57
58
|
return;
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -56,7 +56,9 @@ export const useGridColumnHeaders = props => {
|
|
|
56
56
|
const offsetLeft = computeOffsetLeft(columnPositions, renderContext, pinnedColumns.left.length);
|
|
57
57
|
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
58
58
|
React.useEffect(() => {
|
|
59
|
-
apiRef.current.columnHeadersContainerRef.current
|
|
59
|
+
if (apiRef.current.columnHeadersContainerRef.current) {
|
|
60
|
+
apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
|
|
61
|
+
}
|
|
60
62
|
}, [apiRef]);
|
|
61
63
|
const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
|
|
62
64
|
const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
|
|
@@ -53,4 +53,4 @@ export declare function getFirstNonSpannedColumnToRender({ firstColumnToRender,
|
|
|
53
53
|
lastRowToRender: number;
|
|
54
54
|
visibleRows: GridRowEntry[];
|
|
55
55
|
}): number;
|
|
56
|
-
export declare function getTotalHeaderHeight(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight'>): number;
|
|
56
|
+
export declare function getTotalHeaderHeight(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'unstable_listView'>): number;
|
|
@@ -312,6 +312,9 @@ export function getFirstNonSpannedColumnToRender({
|
|
|
312
312
|
return firstNonSpannedColumnToRender;
|
|
313
313
|
}
|
|
314
314
|
export function getTotalHeaderHeight(apiRef, props) {
|
|
315
|
+
if (props.unstable_listView) {
|
|
316
|
+
return 0;
|
|
317
|
+
}
|
|
315
318
|
const densityFactor = gridDensityFactorSelector(apiRef);
|
|
316
319
|
const maxDepth = gridColumnGroupsHeaderMaxDepthSelector(apiRef);
|
|
317
320
|
const isHeaderFilteringEnabled = gridHeaderFilteringEnabledSelector(apiRef);
|
|
@@ -12,8 +12,9 @@ import { gridRenderContextSelector } from "../virtualization/index.js";
|
|
|
12
12
|
import { useGridSelector } from "../../utils/index.js";
|
|
13
13
|
import { getVisibleRows } from "../../utils/useGridVisibleRows.js";
|
|
14
14
|
import { gridRowsMetaSelector } from "../rows/gridRowsMetaSelector.js";
|
|
15
|
-
import { calculatePinnedRowsHeight } from "../rows/gridRowsUtils.js";
|
|
15
|
+
import { calculatePinnedRowsHeight, getValidRowHeight, rowHeightWarning } from "../rows/gridRowsUtils.js";
|
|
16
16
|
import { getTotalHeaderHeight } from "../columns/gridColumnsUtils.js";
|
|
17
|
+
import { DATA_GRID_PROPS_DEFAULT_VALUES } from "../../../constants/dataGridPropsDefaultValues.js";
|
|
17
18
|
const EMPTY_SIZE = {
|
|
18
19
|
width: 0,
|
|
19
20
|
height: 0
|
|
@@ -54,7 +55,8 @@ export function useGridDimensions(apiRef, props) {
|
|
|
54
55
|
const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
55
56
|
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
56
57
|
const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
|
|
57
|
-
const
|
|
58
|
+
const validRowHeight = React.useMemo(() => getValidRowHeight(props.rowHeight, DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, rowHeightWarning), [props.rowHeight]);
|
|
59
|
+
const rowHeight = Math.floor(validRowHeight * densityFactor);
|
|
58
60
|
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
59
61
|
const groupHeaderHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);
|
|
60
62
|
const headerFilterHeight = Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor);
|
|
@@ -10,4 +10,4 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
10
10
|
* @requires useGridScroll (method) - can be after
|
|
11
11
|
* @requires useGridColumnSpanning (method) - can be after
|
|
12
12
|
*/
|
|
13
|
-
export declare const useGridKeyboardNavigation: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "experimentalFeatures" | "signature" | "headerFilters">) => void;
|
|
13
|
+
export declare const useGridKeyboardNavigation: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "experimentalFeatures" | "signature" | "headerFilters" | "unstable_listView">) => void;
|
|
@@ -16,6 +16,7 @@ import { gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector }
|
|
|
16
16
|
import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.js";
|
|
17
17
|
import { isEventTargetInPortal } from "../../../utils/domUtils.js";
|
|
18
18
|
import { enrichPageRowsWithPinnedRows, getLeftColumnIndex, getRightColumnIndex, findNonRowSpannedCell } from "./utils.js";
|
|
19
|
+
import { gridListColumnSelector } from "../listView/gridListViewSelectors.js";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* @requires useGridSorting (method) - can be after
|
|
@@ -30,6 +31,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
30
31
|
const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');
|
|
31
32
|
const initialCurrentPageRows = useGridVisibleRows(apiRef, props).rows;
|
|
32
33
|
const isRtl = useRtl();
|
|
34
|
+
const listView = props.unstable_listView;
|
|
33
35
|
const currentPageRows = React.useMemo(() => enrichPageRowsWithPinnedRows(apiRef, initialCurrentPageRows), [apiRef, initialCurrentPageRows]);
|
|
34
36
|
const headerFilteringEnabled = props.signature !== 'DataGrid' && props.headerFilters;
|
|
35
37
|
|
|
@@ -50,7 +52,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
50
52
|
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
|
-
const field = gridVisibleColumnFieldsSelector(apiRef)[colIndex];
|
|
55
|
+
const field = listView ? gridListColumnSelector(apiRef.current.state).field : gridVisibleColumnFieldsSelector(apiRef)[colIndex];
|
|
54
56
|
const nonRowSpannedRowId = findNonRowSpannedCell(apiRef, rowId, field, rowSpanScanDirection);
|
|
55
57
|
// `scrollToIndexes` requires a rowIndex relative to all visible rows.
|
|
56
58
|
// Those rows do not include pinned rows, but pinned rows do not need scroll anyway.
|
|
@@ -61,7 +63,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
61
63
|
rowIndex: rowIndexRelativeToAllRows
|
|
62
64
|
});
|
|
63
65
|
apiRef.current.setCellFocus(nonRowSpannedRowId, field);
|
|
64
|
-
}, [apiRef, logger]);
|
|
66
|
+
}, [apiRef, logger, listView]);
|
|
65
67
|
const goToHeader = React.useCallback((colIndex, event) => {
|
|
66
68
|
logger.debug(`Navigating to header col ${colIndex}`);
|
|
67
69
|
apiRef.current.scrollToIndexes({
|
|
@@ -384,12 +386,14 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
384
386
|
return;
|
|
385
387
|
}
|
|
386
388
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
387
|
-
const
|
|
389
|
+
const getColumnIndexFn = listView ? () => 0 : apiRef.current.getColumnIndex;
|
|
390
|
+
const colIndexBefore = params.field ? getColumnIndexFn(params.field) : 0;
|
|
388
391
|
const rowIndexBefore = currentPageRows.findIndex(row => row.id === params.id);
|
|
389
392
|
const firstRowIndexInPage = 0;
|
|
390
393
|
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
391
394
|
const firstColIndex = 0;
|
|
392
|
-
const
|
|
395
|
+
const visibleColumns = listView ? [gridListColumnSelector(apiRef.current.state)] : gridVisibleColumnDefinitionsSelector(apiRef);
|
|
396
|
+
const lastColIndex = visibleColumns.length - 1;
|
|
393
397
|
let shouldPreventDefault = true;
|
|
394
398
|
switch (event.key) {
|
|
395
399
|
case 'ArrowDown':
|
|
@@ -508,7 +512,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
508
512
|
if (shouldPreventDefault) {
|
|
509
513
|
event.preventDefault();
|
|
510
514
|
}
|
|
511
|
-
}, [apiRef, currentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader]);
|
|
515
|
+
}, [apiRef, currentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader, listView]);
|
|
512
516
|
const checkIfCanStartEditing = React.useCallback((initialValue, {
|
|
513
517
|
event
|
|
514
518
|
}) => {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { GridListColDef } from '../../../models/colDef/gridColDef';
|
|
3
|
+
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
4
|
+
import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
5
|
+
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
6
|
+
export type GridListViewState = (GridListColDef & {
|
|
7
|
+
computedWidth: number;
|
|
8
|
+
}) | undefined;
|
|
9
|
+
export declare const listViewStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'unstable_listColumn'>>;
|
|
10
|
+
export declare function useGridListView(apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'unstable_listColumn'>): void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { gridDimensionsSelector } from "../dimensions/index.js";
|
|
4
|
+
import { useGridApiEventHandler } from "../../utils/useGridApiEventHandler.js";
|
|
5
|
+
export const listViewStateInitializer = (state, props, apiRef) => _extends({}, state, {
|
|
6
|
+
listViewColumn: _extends({}, props.unstable_listColumn, {
|
|
7
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
8
|
+
})
|
|
9
|
+
});
|
|
10
|
+
export function useGridListView(apiRef, props) {
|
|
11
|
+
/*
|
|
12
|
+
* EVENTS
|
|
13
|
+
*/
|
|
14
|
+
const updateListColumnWidth = () => {
|
|
15
|
+
apiRef.current.setState(state => {
|
|
16
|
+
if (!state.listViewColumn) {
|
|
17
|
+
return state;
|
|
18
|
+
}
|
|
19
|
+
return _extends({}, state, {
|
|
20
|
+
listViewColumn: _extends({}, state.listViewColumn, {
|
|
21
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const prevInnerWidth = React.useRef(null);
|
|
27
|
+
const handleGridSizeChange = viewportInnerSize => {
|
|
28
|
+
if (prevInnerWidth.current !== viewportInnerSize.width) {
|
|
29
|
+
prevInnerWidth.current = viewportInnerSize.width;
|
|
30
|
+
updateListColumnWidth();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
|
|
34
|
+
useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', updateListColumnWidth);
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* EFFECTS
|
|
38
|
+
*/
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
const listColumn = props.unstable_listColumn;
|
|
41
|
+
if (listColumn) {
|
|
42
|
+
apiRef.current.setState(state => {
|
|
43
|
+
return _extends({}, state, {
|
|
44
|
+
listViewColumn: _extends({}, listColumn, {
|
|
45
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}, [apiRef, props.unstable_listColumn]);
|
|
51
|
+
}
|
|
52
|
+
function getListColumnWidth(apiRef) {
|
|
53
|
+
return gridDimensionsSelector(apiRef.current.state).viewportInnerSize.width;
|
|
54
|
+
}
|
|
@@ -246,7 +246,11 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
246
246
|
/*
|
|
247
247
|
* EVENTS
|
|
248
248
|
*/
|
|
249
|
+
const isFirstRender = React.useRef(true);
|
|
249
250
|
const removeOutdatedSelection = React.useCallback((sortModelUpdated = false) => {
|
|
251
|
+
if (isFirstRender.current) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
250
254
|
const currentSelection = gridRowSelectionStateSelector(apiRef.current.state);
|
|
251
255
|
const filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);
|
|
252
256
|
|
|
@@ -254,7 +258,7 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
254
258
|
const selectionLookup = _extends({}, selectedIdsLookupSelector(apiRef));
|
|
255
259
|
let hasChanged = false;
|
|
256
260
|
currentSelection.forEach(id => {
|
|
257
|
-
if (filteredRowsLookup[id]
|
|
261
|
+
if (filteredRowsLookup[id] !== true) {
|
|
258
262
|
if (props.keepNonExistentRowsSelected) {
|
|
259
263
|
return;
|
|
260
264
|
}
|
|
@@ -408,7 +412,7 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
408
412
|
handleSingleRowSelection(params.id, event);
|
|
409
413
|
return;
|
|
410
414
|
}
|
|
411
|
-
if (event.
|
|
415
|
+
if (String.fromCharCode(event.keyCode) === 'A' && (event.ctrlKey || event.metaKey)) {
|
|
412
416
|
event.preventDefault();
|
|
413
417
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
414
418
|
}
|
|
@@ -462,4 +466,9 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
462
466
|
React.useEffect(() => {
|
|
463
467
|
runIfRowSelectionIsEnabled(removeOutdatedSelection);
|
|
464
468
|
}, [removeOutdatedSelection, runIfRowSelectionIsEnabled]);
|
|
469
|
+
React.useEffect(() => {
|
|
470
|
+
if (isFirstRender.current) {
|
|
471
|
+
isFirstRender.current = false;
|
|
472
|
+
}
|
|
473
|
+
}, []);
|
|
465
474
|
};
|
|
@@ -57,7 +57,7 @@ export function getCheckboxPropsSelector(groupId, autoSelectParents) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
return {
|
|
60
|
-
isIndeterminate: selectedDescendantsCount > 0 && selectedDescendantsCount < selectableDescendantsCount ||
|
|
60
|
+
isIndeterminate: selectedDescendantsCount > 0 && (selectedDescendantsCount < selectableDescendantsCount || rowSelectionLookup[groupId] === undefined),
|
|
61
61
|
isChecked: autoSelectParents ? selectedDescendantsCount > 0 : rowSelectionLookup[groupId] === groupId
|
|
62
62
|
};
|
|
63
63
|
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GridRowId } from '../../../models/gridRows';
|
|
2
|
+
export type HeightEntry = {
|
|
3
|
+
content: number;
|
|
4
|
+
spacingTop: number;
|
|
5
|
+
spacingBottom: number;
|
|
6
|
+
detail: number;
|
|
7
|
+
autoHeight: boolean;
|
|
8
|
+
needsFirstMeasurement: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type HeightCache = Map<GridRowId, HeightEntry>;
|
|
11
|
+
export interface GridRowsMetaInternalCache {
|
|
12
|
+
/**
|
|
13
|
+
* Map of height cache entries.
|
|
14
|
+
*/
|
|
15
|
+
heights: HeightCache;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -39,3 +39,6 @@ export declare function calculatePinnedRowsHeight(apiRef: React.MutableRefObject
|
|
|
39
39
|
};
|
|
40
40
|
export declare function getMinimalContentHeight(apiRef: React.MutableRefObject<GridApiCommunity>): string;
|
|
41
41
|
export declare function computeRowsUpdates(apiRef: React.MutableRefObject<GridApiCommunity>, updates: GridRowModelUpdate[], getRowId: DataGridProcessedProps['getRowId']): GridRowModelUpdate[];
|
|
42
|
+
export declare const getValidRowHeight: (rowHeightProp: any, defaultRowHeight: number, warningMessage: string) => number;
|
|
43
|
+
export declare const rowHeightWarning: string;
|
|
44
|
+
export declare const getRowHeightWarning: string;
|
|
@@ -306,4 +306,17 @@ export function computeRowsUpdates(apiRef, updates, getRowId) {
|
|
|
306
306
|
}
|
|
307
307
|
});
|
|
308
308
|
return nonPinnedRowsUpdates;
|
|
309
|
-
}
|
|
309
|
+
}
|
|
310
|
+
let warnedOnceInvalidRowHeight = false;
|
|
311
|
+
export const getValidRowHeight = (rowHeightProp, defaultRowHeight, warningMessage) => {
|
|
312
|
+
if (typeof rowHeightProp === 'number' && rowHeightProp > 0) {
|
|
313
|
+
return rowHeightProp;
|
|
314
|
+
}
|
|
315
|
+
if (process.env.NODE_ENV !== 'production' && !warnedOnceInvalidRowHeight && typeof rowHeightProp !== 'undefined' && rowHeightProp !== null) {
|
|
316
|
+
console.warn(warningMessage);
|
|
317
|
+
warnedOnceInvalidRowHeight = true;
|
|
318
|
+
}
|
|
319
|
+
return defaultRowHeight;
|
|
320
|
+
};
|
|
321
|
+
export const rowHeightWarning = [`MUI X: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
|
|
322
|
+
export const getRowHeightWarning = [`MUI X: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
|
+
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
3
4
|
export declare class MissingRowIdError extends Error {
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
@@ -10,4 +11,4 @@ export declare class MissingRowIdError extends Error {
|
|
|
10
11
|
* TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi
|
|
11
12
|
* TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi
|
|
12
13
|
*/
|
|
13
|
-
export declare function useGridParamsApi(apiRef: React.MutableRefObject<GridPrivateApiCommunity>): void;
|
|
14
|
+
export declare function useGridParamsApi(apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'unstable_listView'>): void;
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { getGridCellElement, getGridColumnHeaderElement, getGridRowElement } from "../../../utils/domUtils.js";
|
|
3
3
|
import { useGridApiMethod } from "../../utils/useGridApiMethod.js";
|
|
4
4
|
import { gridFocusCellSelector, gridTabIndexCellSelector } from "../focus/gridFocusStateSelector.js";
|
|
5
|
+
import { gridListColumnSelector } from "../listView/gridListViewSelectors.js";
|
|
5
6
|
export class MissingRowIdError extends Error {}
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -12,7 +13,7 @@ export class MissingRowIdError extends Error {}
|
|
|
12
13
|
* TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi
|
|
13
14
|
* TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi
|
|
14
15
|
*/
|
|
15
|
-
export function useGridParamsApi(apiRef) {
|
|
16
|
+
export function useGridParamsApi(apiRef, props) {
|
|
16
17
|
const getColumnHeaderParams = React.useCallback(field => ({
|
|
17
18
|
field,
|
|
18
19
|
colDef: apiRef.current.getColumn(field)
|
|
@@ -30,7 +31,7 @@ export function useGridParamsApi(apiRef) {
|
|
|
30
31
|
return params;
|
|
31
32
|
}, [apiRef]);
|
|
32
33
|
const getCellParams = React.useCallback((id, field) => {
|
|
33
|
-
const colDef = apiRef.current.getColumn(field);
|
|
34
|
+
const colDef = props.unstable_listView ? gridListColumnSelector(apiRef.current.state) : apiRef.current.getColumn(field);
|
|
34
35
|
const row = apiRef.current.getRow(id);
|
|
35
36
|
const rowNode = apiRef.current.getRowNode(id);
|
|
36
37
|
if (!row || !rowNode) {
|
|
@@ -59,7 +60,7 @@ export function useGridParamsApi(apiRef) {
|
|
|
59
60
|
}
|
|
60
61
|
params.isEditable = colDef && apiRef.current.isCellEditable(params);
|
|
61
62
|
return params;
|
|
62
|
-
}, [apiRef]);
|
|
63
|
+
}, [apiRef, props.unstable_listView]);
|
|
63
64
|
const getCellValue = React.useCallback((id, field) => {
|
|
64
65
|
const colDef = apiRef.current.getColumn(field);
|
|
65
66
|
const row = apiRef.current.getRow(id);
|