@mui/x-data-grid 7.19.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 +224 -43
- package/DataGrid/DataGrid.js +8 -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/columnHeaders/GridColumnHeaderItem.js +1 -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/core/useGridRefs.js +4 -0
- 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 +6 -4
- package/hooks/features/editing/useGridCellEditing.js +3 -1
- package/hooks/features/editing/useGridRowEditing.js +3 -1
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +1 -0
- package/hooks/features/filter/gridFilterUtils.js +1 -1
- 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 +6 -6
- 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 +15 -2
- package/hooks/features/rows/useGridParamsApi.d.ts +2 -1
- package/hooks/features/rows/useGridParamsApi.js +4 -3
- package/hooks/features/rows/useGridRowSpanning.js +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +135 -154
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.js +10 -5
- package/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +25 -11
- package/hooks/utils/useGridApiContext.js +1 -1
- package/hooks/utils/useGridApiEventHandler.d.ts +1 -1
- package/hooks/utils/useGridApiEventHandler.js +1 -1
- package/hooks/utils/useGridApiMethod.js +2 -1
- package/hooks/utils/useGridConfiguration.js +1 -1
- package/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/index.d.ts +3 -2
- package/index.js +4 -3
- package/internals/index.d.ts +2 -1
- package/internals/index.js +2 -1
- package/joy/icons.js +0 -1
- package/locales/jaJP.js +4 -4
- package/models/api/gridApiCommunity.d.ts +1 -1
- package/models/api/gridCoreApi.d.ts +9 -1
- package/models/api/gridFilterApi.d.ts +1 -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/events/gridEventLookup.d.ts +7 -0
- package/models/gridApiCaches.d.ts +2 -0
- package/models/gridStateCommunity.d.ts +4 -2
- package/models/props/DataGridProps.d.ts +37 -17
- package/modern/DataGrid/DataGrid.js +8 -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/columnHeaders/GridColumnHeaderItem.js +1 -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/core/useGridRefs.js +4 -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 +6 -4
- package/modern/hooks/features/editing/useGridCellEditing.js +3 -1
- package/modern/hooks/features/editing/useGridRowEditing.js +3 -1
- package/modern/hooks/features/events/useGridEvents.js +1 -0
- package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
- 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 +6 -6
- package/modern/hooks/features/rows/gridRowsMetaInterfaces.js +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +15 -2
- package/modern/hooks/features/rows/useGridParamsApi.js +4 -3
- package/modern/hooks/features/rows/useGridRowSpanning.js +1 -1
- package/modern/hooks/features/rows/useGridRowsMeta.js +135 -154
- package/modern/hooks/features/scroll/useGridScroll.js +10 -5
- package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +25 -11
- package/modern/hooks/utils/useGridApiContext.js +1 -1
- package/modern/hooks/utils/useGridApiEventHandler.js +1 -1
- package/modern/hooks/utils/useGridApiMethod.js +2 -1
- package/modern/hooks/utils/useGridConfiguration.js +1 -1
- package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/modern/index.js +4 -3
- package/modern/internals/index.js +2 -1
- package/modern/joy/icons.js +0 -1
- package/modern/locales/jaJP.js +4 -4
- package/modern/utils/ResizeObserver.js +10 -0
- package/modern/utils/domUtils.js +1 -1
- package/modern/utils/keyboardUtils.js +12 -4
- package/node/DataGrid/DataGrid.js +8 -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/columnHeaders/GridColumnHeaderItem.js +1 -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/core/useGridRefs.js +4 -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 +5 -3
- package/node/hooks/features/editing/useGridCellEditing.js +3 -1
- package/node/hooks/features/editing/useGridRowEditing.js +3 -1
- package/node/hooks/features/events/useGridEvents.js +1 -0
- package/node/hooks/features/filter/gridFilterUtils.js +1 -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 +6 -6
- package/node/hooks/features/rows/gridRowsMetaInterfaces.js +5 -0
- package/node/hooks/features/rows/gridRowsUtils.js +17 -3
- package/node/hooks/features/rows/useGridParamsApi.js +4 -3
- package/node/hooks/features/rows/useGridRowSpanning.js +1 -1
- package/node/hooks/features/rows/useGridRowsMeta.js +136 -154
- package/node/hooks/features/scroll/useGridScroll.js +10 -5
- package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +25 -11
- package/node/hooks/utils/useGridApiContext.js +1 -1
- package/node/hooks/utils/useGridApiEventHandler.js +1 -1
- package/node/hooks/utils/useGridApiMethod.js +3 -1
- package/node/hooks/utils/useGridConfiguration.js +1 -1
- package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/node/index.js +13 -1
- package/node/internals/index.js +22 -0
- package/node/joy/icons.js +0 -1
- package/node/locales/jaJP.js +4 -4
- package/node/utils/ResizeObserver.js +16 -0
- package/node/utils/domUtils.js +1 -1
- package/node/utils/keyboardUtils.js +15 -5
- package/package.json +4 -4
- package/utils/ResizeObserver.d.ts +4 -0
- package/utils/ResizeObserver.js +10 -0
- package/utils/domUtils.js +1 -1
- package/utils/keyboardUtils.d.ts +1 -0
- package/utils/keyboardUtils.js +12 -4
|
@@ -53,6 +53,38 @@ const GridGenericColumnMenu = exports.GridGenericColumnMenu = /*#__PURE__*/React
|
|
|
53
53
|
children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, (0, _extends2.default)({}, otherProps), index))
|
|
54
54
|
}));
|
|
55
55
|
});
|
|
56
|
+
process.env.NODE_ENV !== "production" ? GridGenericColumnMenu.propTypes = {
|
|
57
|
+
// ----------------------------- Warning --------------------------------
|
|
58
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
59
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
60
|
+
// ----------------------------------------------------------------------
|
|
61
|
+
colDef: _propTypes.default.object.isRequired,
|
|
62
|
+
/**
|
|
63
|
+
* Initial `slotProps` - it is internal, to be overrriden by Pro or Premium packages
|
|
64
|
+
* @ignore - do not document.
|
|
65
|
+
*/
|
|
66
|
+
defaultSlotProps: _propTypes.default.object.isRequired,
|
|
67
|
+
/**
|
|
68
|
+
* Initial `slots` - it is internal, to be overrriden by Pro or Premium packages
|
|
69
|
+
* @ignore - do not document.
|
|
70
|
+
*/
|
|
71
|
+
defaultSlots: _propTypes.default.object.isRequired,
|
|
72
|
+
hideMenu: _propTypes.default.func.isRequired,
|
|
73
|
+
id: _propTypes.default.string,
|
|
74
|
+
labelledby: _propTypes.default.string,
|
|
75
|
+
open: _propTypes.default.bool.isRequired,
|
|
76
|
+
/**
|
|
77
|
+
* Could be used to pass new props or override props specific to a column menu component
|
|
78
|
+
* e.g. `displayOrder`
|
|
79
|
+
*/
|
|
80
|
+
slotProps: _propTypes.default.object,
|
|
81
|
+
/**
|
|
82
|
+
* `slots` could be used to add new and (or) override default column menu items
|
|
83
|
+
* If you register a nee component you must pass it's `displayOrder` in `slotProps`
|
|
84
|
+
* or it will be placed in the end of the list
|
|
85
|
+
*/
|
|
86
|
+
slots: _propTypes.default.object
|
|
87
|
+
} : void 0;
|
|
56
88
|
const GridColumnMenu = exports.GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {
|
|
57
89
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridGenericColumnMenu, (0, _extends2.default)({}, props, {
|
|
58
90
|
ref: ref,
|
|
@@ -35,6 +35,26 @@ function GridCsvExportMenuItem(props) {
|
|
|
35
35
|
children: apiRef.current.getLocaleText('toolbarExportCSV')
|
|
36
36
|
}));
|
|
37
37
|
}
|
|
38
|
+
process.env.NODE_ENV !== "production" ? GridCsvExportMenuItem.propTypes = {
|
|
39
|
+
// ----------------------------- Warning --------------------------------
|
|
40
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
41
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
42
|
+
// ----------------------------------------------------------------------
|
|
43
|
+
hideMenu: _propTypes.default.func,
|
|
44
|
+
options: _propTypes.default.shape({
|
|
45
|
+
allColumns: _propTypes.default.bool,
|
|
46
|
+
delimiter: _propTypes.default.string,
|
|
47
|
+
disableToolbarButton: _propTypes.default.bool,
|
|
48
|
+
escapeFormulas: _propTypes.default.bool,
|
|
49
|
+
fields: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
50
|
+
fileName: _propTypes.default.string,
|
|
51
|
+
getRowsToExport: _propTypes.default.func,
|
|
52
|
+
includeColumnGroupsHeaders: _propTypes.default.bool,
|
|
53
|
+
includeHeaders: _propTypes.default.bool,
|
|
54
|
+
shouldAppendQuotes: _propTypes.default.bool,
|
|
55
|
+
utf8WithBom: _propTypes.default.bool
|
|
56
|
+
})
|
|
57
|
+
} : void 0;
|
|
38
58
|
function GridPrintExportMenuItem(props) {
|
|
39
59
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
40
60
|
const {
|
|
@@ -51,6 +71,38 @@ function GridPrintExportMenuItem(props) {
|
|
|
51
71
|
children: apiRef.current.getLocaleText('toolbarExportPrint')
|
|
52
72
|
}));
|
|
53
73
|
}
|
|
74
|
+
process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
|
|
75
|
+
// ----------------------------- Warning --------------------------------
|
|
76
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
77
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
78
|
+
// ----------------------------------------------------------------------
|
|
79
|
+
hideMenu: _propTypes.default.func,
|
|
80
|
+
options: _propTypes.default.shape({
|
|
81
|
+
allColumns: _propTypes.default.bool,
|
|
82
|
+
bodyClassName: _propTypes.default.string,
|
|
83
|
+
copyStyles: _propTypes.default.bool,
|
|
84
|
+
disableToolbarButton: _propTypes.default.bool,
|
|
85
|
+
fields: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
86
|
+
fileName: _propTypes.default.string,
|
|
87
|
+
getRowsToExport: _propTypes.default.func,
|
|
88
|
+
hideFooter: _propTypes.default.bool,
|
|
89
|
+
hideToolbar: _propTypes.default.bool,
|
|
90
|
+
includeCheckboxes: _propTypes.default.bool,
|
|
91
|
+
pageStyle: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
92
|
+
'__@hasInstance@646': _propTypes.default.func.isRequired,
|
|
93
|
+
'__@metadata@648': _propTypes.default.any,
|
|
94
|
+
apply: _propTypes.default.func.isRequired,
|
|
95
|
+
arguments: _propTypes.default.any.isRequired,
|
|
96
|
+
bind: _propTypes.default.func.isRequired,
|
|
97
|
+
call: _propTypes.default.func.isRequired,
|
|
98
|
+
caller: _propTypes.default.object.isRequired,
|
|
99
|
+
length: _propTypes.default.number.isRequired,
|
|
100
|
+
name: _propTypes.default.string.isRequired,
|
|
101
|
+
prototype: _propTypes.default.any.isRequired,
|
|
102
|
+
toString: _propTypes.default.func.isRequired
|
|
103
|
+
}), _propTypes.default.string])
|
|
104
|
+
})
|
|
105
|
+
} : void 0;
|
|
54
106
|
const GridToolbarExport = exports.GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
|
|
55
107
|
const {
|
|
56
108
|
csvOptions = {},
|
|
@@ -126,6 +126,10 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = /*#__PURE__*/React.f
|
|
|
126
126
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
|
|
127
127
|
ref: (0, _utils.unstable_useForkRef)(ref, scrollbarRef),
|
|
128
128
|
className: classes.root,
|
|
129
|
+
style: props.position === 'vertical' && rootProps.unstable_listView ? {
|
|
130
|
+
height: '100%',
|
|
131
|
+
top: 0
|
|
132
|
+
} : undefined,
|
|
129
133
|
tabIndex: -1,
|
|
130
134
|
"aria-hidden": "true",
|
|
131
135
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -86,7 +86,7 @@ function GridVirtualScroller(props) {
|
|
|
86
86
|
}, getScrollerProps(), {
|
|
87
87
|
ownerState: rootProps,
|
|
88
88
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridTopContainer.GridTopContainer, {
|
|
89
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeaders.GridHeaders, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
|
|
89
|
+
children: [!rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeaders.GridHeaders, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
|
|
90
90
|
position: "top",
|
|
91
91
|
virtualScroller: virtualScroller
|
|
92
92
|
})]
|
|
@@ -106,7 +106,7 @@ function GridVirtualScroller(props) {
|
|
|
106
106
|
})]
|
|
107
107
|
})), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
108
108
|
position: "vertical"
|
|
109
|
-
}, getScrollbarVerticalProps())), dimensions.hasScrollX && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
109
|
+
}, getScrollbarVerticalProps())), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
110
110
|
position: "horizontal"
|
|
111
111
|
}, getScrollbarHorizontalProps())), props.children]
|
|
112
112
|
}));
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DATA_GRID_PROPS_DEFAULT_VALUES = void 0;
|
|
7
|
+
var _gridEditRowModel = require("../models/gridEditRowModel");
|
|
8
|
+
/**
|
|
9
|
+
* The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.
|
|
10
|
+
*/
|
|
11
|
+
const DATA_GRID_PROPS_DEFAULT_VALUES = exports.DATA_GRID_PROPS_DEFAULT_VALUES = {
|
|
12
|
+
autoHeight: false,
|
|
13
|
+
autoPageSize: false,
|
|
14
|
+
autosizeOnMount: false,
|
|
15
|
+
checkboxSelection: false,
|
|
16
|
+
checkboxSelectionVisibleOnly: false,
|
|
17
|
+
clipboardCopyCellDelimiter: '\t',
|
|
18
|
+
columnBufferPx: 150,
|
|
19
|
+
columnHeaderHeight: 56,
|
|
20
|
+
disableAutosize: false,
|
|
21
|
+
disableColumnFilter: false,
|
|
22
|
+
disableColumnMenu: false,
|
|
23
|
+
disableColumnReorder: false,
|
|
24
|
+
disableColumnResize: false,
|
|
25
|
+
disableColumnSelector: false,
|
|
26
|
+
disableColumnSorting: false,
|
|
27
|
+
disableDensitySelector: false,
|
|
28
|
+
disableEval: false,
|
|
29
|
+
disableMultipleColumnsFiltering: false,
|
|
30
|
+
disableMultipleColumnsSorting: false,
|
|
31
|
+
disableMultipleRowSelection: false,
|
|
32
|
+
disableRowSelectionOnClick: false,
|
|
33
|
+
disableVirtualization: false,
|
|
34
|
+
editMode: _gridEditRowModel.GridEditModes.Cell,
|
|
35
|
+
filterDebounceMs: 150,
|
|
36
|
+
filterMode: 'client',
|
|
37
|
+
hideFooter: false,
|
|
38
|
+
hideFooterPagination: false,
|
|
39
|
+
hideFooterRowCount: false,
|
|
40
|
+
hideFooterSelectedRowCount: false,
|
|
41
|
+
ignoreDiacritics: false,
|
|
42
|
+
ignoreValueFormatterDuringExport: false,
|
|
43
|
+
// TODO v8: Update to 'select'
|
|
44
|
+
indeterminateCheckboxAction: 'deselect',
|
|
45
|
+
keepColumnPositionIfDraggedOutside: false,
|
|
46
|
+
keepNonExistentRowsSelected: false,
|
|
47
|
+
loading: false,
|
|
48
|
+
logger: console,
|
|
49
|
+
logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',
|
|
50
|
+
pageSizeOptions: [25, 50, 100],
|
|
51
|
+
pagination: false,
|
|
52
|
+
paginationMode: 'client',
|
|
53
|
+
resizeThrottleMs: 60,
|
|
54
|
+
rowBufferPx: 150,
|
|
55
|
+
rowHeight: 52,
|
|
56
|
+
rowPositionsDebounceMs: 166,
|
|
57
|
+
rows: [],
|
|
58
|
+
rowSelection: true,
|
|
59
|
+
rowSpacingType: 'margin',
|
|
60
|
+
showCellVerticalBorder: false,
|
|
61
|
+
showColumnVerticalBorder: false,
|
|
62
|
+
sortingMode: 'client',
|
|
63
|
+
sortingOrder: ['asc', 'desc', null],
|
|
64
|
+
throttleRowsMs: 0,
|
|
65
|
+
unstable_rowSpanning: false
|
|
66
|
+
};
|
|
@@ -10,6 +10,8 @@ const useGridRefs = apiRef => {
|
|
|
10
10
|
const rootElementRef = React.useRef(null);
|
|
11
11
|
const mainElementRef = React.useRef(null);
|
|
12
12
|
const virtualScrollerRef = React.useRef(null);
|
|
13
|
+
const virtualScrollbarVerticalRef = React.useRef(null);
|
|
14
|
+
const virtualScrollbarHorizontalRef = React.useRef(null);
|
|
13
15
|
const columnHeadersContainerRef = React.useRef(null);
|
|
14
16
|
apiRef.current.register('public', {
|
|
15
17
|
rootElementRef
|
|
@@ -17,6 +19,8 @@ const useGridRefs = apiRef => {
|
|
|
17
19
|
apiRef.current.register('private', {
|
|
18
20
|
mainElementRef,
|
|
19
21
|
virtualScrollerRef,
|
|
22
|
+
virtualScrollbarVerticalRef,
|
|
23
|
+
virtualScrollbarHorizontalRef,
|
|
20
24
|
columnHeadersContainerRef
|
|
21
25
|
});
|
|
22
26
|
};
|
|
@@ -9,6 +9,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _utils = require("../../utils");
|
|
10
10
|
var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
|
|
11
11
|
var _csvSerializer = require("../export/serializers/csvSerializer");
|
|
12
|
+
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
12
13
|
function writeToClipboardPolyfill(data) {
|
|
13
14
|
const span = document.createElement('span');
|
|
14
15
|
span.style.whiteSpace = 'pre';
|
|
@@ -60,7 +61,7 @@ const useGridClipboard = (apiRef, props) => {
|
|
|
60
61
|
const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
|
|
61
62
|
const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
|
|
62
63
|
const handleCopy = React.useCallback(event => {
|
|
63
|
-
if (!(
|
|
64
|
+
if (!(0, _keyboardUtils.isCopyShortcut)(event)) {
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
67
|
|
|
@@ -64,7 +64,9 @@ const useGridColumnHeaders = props => {
|
|
|
64
64
|
const offsetLeft = (0, _useGridVirtualScroller.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length);
|
|
65
65
|
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
66
66
|
React.useEffect(() => {
|
|
67
|
-
apiRef.current.columnHeadersContainerRef.current
|
|
67
|
+
if (apiRef.current.columnHeadersContainerRef.current) {
|
|
68
|
+
apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
|
|
69
|
+
}
|
|
68
70
|
}, [apiRef]);
|
|
69
71
|
const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
|
|
70
72
|
const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
|
|
@@ -327,6 +327,9 @@ function getFirstNonSpannedColumnToRender({
|
|
|
327
327
|
return firstNonSpannedColumnToRender;
|
|
328
328
|
}
|
|
329
329
|
function getTotalHeaderHeight(apiRef, props) {
|
|
330
|
+
if (props.unstable_listView) {
|
|
331
|
+
return 0;
|
|
332
|
+
}
|
|
330
333
|
const densityFactor = (0, _densitySelector.gridDensityFactorSelector)(apiRef);
|
|
331
334
|
const maxDepth = (0, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector)(apiRef);
|
|
332
335
|
const isHeaderFilteringEnabled = (0, _gridHeaderFilteringSelectors.gridHeaderFilteringEnabledSelector)(apiRef);
|
|
@@ -23,6 +23,7 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
|
23
23
|
var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
|
|
24
24
|
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
25
25
|
var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
26
|
+
var _dataGridPropsDefaultValues = require("../../../constants/dataGridPropsDefaultValues");
|
|
26
27
|
const EMPTY_SIZE = {
|
|
27
28
|
width: 0,
|
|
28
29
|
height: 0
|
|
@@ -64,7 +65,8 @@ function useGridDimensions(apiRef, props) {
|
|
|
64
65
|
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
65
66
|
const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
|
|
66
67
|
const densityFactor = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
|
|
67
|
-
const
|
|
68
|
+
const validRowHeight = React.useMemo(() => (0, _gridRowsUtils.getValidRowHeight)(props.rowHeight, _dataGridPropsDefaultValues.DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, _gridRowsUtils.rowHeightWarning), [props.rowHeight]);
|
|
69
|
+
const rowHeight = Math.floor(validRowHeight * densityFactor);
|
|
68
70
|
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
69
71
|
const groupHeaderHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);
|
|
70
72
|
const headerFilterHeight = Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor);
|
|
@@ -248,11 +250,11 @@ function useGridDimensions(apiRef, props) {
|
|
|
248
250
|
// jsdom has no layout capabilities
|
|
249
251
|
const isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
250
252
|
if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {
|
|
251
|
-
logger.error(['The parent DOM element of the
|
|
253
|
+
logger.error(['The parent DOM element of the Data Grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
252
254
|
errorShown.current = true;
|
|
253
255
|
}
|
|
254
256
|
if (size.width === 0 && !errorShown.current && !isJSDOM) {
|
|
255
|
-
logger.error(['The parent DOM element of the
|
|
257
|
+
logger.error(['The parent DOM element of the Data Grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
256
258
|
errorShown.current = true;
|
|
257
259
|
}
|
|
258
260
|
if (isFirstSizing.current) {
|
|
@@ -332,7 +332,9 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
332
332
|
};
|
|
333
333
|
try {
|
|
334
334
|
const row = apiRef.current.getRow(id);
|
|
335
|
-
Promise.resolve(processRowUpdate(rowUpdate, row
|
|
335
|
+
Promise.resolve(processRowUpdate(rowUpdate, row, {
|
|
336
|
+
rowId: id
|
|
337
|
+
})).then(finalRowUpdate => {
|
|
336
338
|
apiRef.current.updateRows([finalRowUpdate]);
|
|
337
339
|
finishCellEditMode();
|
|
338
340
|
}).catch(handleError);
|
|
@@ -405,7 +405,9 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
405
405
|
}
|
|
406
406
|
};
|
|
407
407
|
try {
|
|
408
|
-
Promise.resolve(processRowUpdate(rowUpdate, row
|
|
408
|
+
Promise.resolve(processRowUpdate(rowUpdate, row, {
|
|
409
|
+
rowId: id
|
|
410
|
+
})).then(finalRowUpdate => {
|
|
409
411
|
apiRef.current.updateRows([finalRowUpdate]);
|
|
410
412
|
finishRowEditMode();
|
|
411
413
|
}).catch(handleError);
|
|
@@ -11,6 +11,7 @@ var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
|
11
11
|
*/
|
|
12
12
|
function useGridEvents(apiRef, props) {
|
|
13
13
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnHeaderClick', props.onColumnHeaderClick);
|
|
14
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnHeaderContextMenu', props.onColumnHeaderContextMenu);
|
|
14
15
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnHeaderDoubleClick', props.onColumnHeaderDoubleClick);
|
|
15
16
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnHeaderOver', props.onColumnHeaderOver);
|
|
16
17
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnHeaderOut', props.onColumnHeaderOut);
|
|
@@ -49,7 +49,7 @@ const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) =>
|
|
|
49
49
|
let items;
|
|
50
50
|
if (hasSeveralItems && disableMultipleColumnsFiltering) {
|
|
51
51
|
if (process.env.NODE_ENV !== 'production') {
|
|
52
|
-
(0, _warning.warnOnce)(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the
|
|
52
|
+
(0, _warning.warnOnce)(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the Data Grid, this prop is always `true`.'], 'error');
|
|
53
53
|
}
|
|
54
54
|
items = [model.items[0]];
|
|
55
55
|
} else {
|
|
@@ -23,6 +23,7 @@ var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilter
|
|
|
23
23
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
24
24
|
var _domUtils = require("../../../utils/domUtils");
|
|
25
25
|
var _utils = require("./utils");
|
|
26
|
+
var _gridListViewSelectors = require("../listView/gridListViewSelectors");
|
|
26
27
|
/**
|
|
27
28
|
* @requires useGridSorting (method) - can be after
|
|
28
29
|
* @requires useGridFilter (state) - can be after
|
|
@@ -36,6 +37,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
36
37
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridKeyboardNavigation');
|
|
37
38
|
const initialCurrentPageRows = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props).rows;
|
|
38
39
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
40
|
+
const listView = props.unstable_listView;
|
|
39
41
|
const currentPageRows = React.useMemo(() => (0, _utils.enrichPageRowsWithPinnedRows)(apiRef, initialCurrentPageRows), [apiRef, initialCurrentPageRows]);
|
|
40
42
|
const headerFilteringEnabled = props.signature !== 'DataGrid' && props.headerFilters;
|
|
41
43
|
|
|
@@ -56,7 +58,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
56
58
|
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
const field = (0, _gridColumnsSelector.gridVisibleColumnFieldsSelector)(apiRef)[colIndex];
|
|
61
|
+
const field = listView ? (0, _gridListViewSelectors.gridListColumnSelector)(apiRef.current.state).field : (0, _gridColumnsSelector.gridVisibleColumnFieldsSelector)(apiRef)[colIndex];
|
|
60
62
|
const nonRowSpannedRowId = (0, _utils.findNonRowSpannedCell)(apiRef, rowId, field, rowSpanScanDirection);
|
|
61
63
|
// `scrollToIndexes` requires a rowIndex relative to all visible rows.
|
|
62
64
|
// Those rows do not include pinned rows, but pinned rows do not need scroll anyway.
|
|
@@ -67,7 +69,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
67
69
|
rowIndex: rowIndexRelativeToAllRows
|
|
68
70
|
});
|
|
69
71
|
apiRef.current.setCellFocus(nonRowSpannedRowId, field);
|
|
70
|
-
}, [apiRef, logger]);
|
|
72
|
+
}, [apiRef, logger, listView]);
|
|
71
73
|
const goToHeader = React.useCallback((colIndex, event) => {
|
|
72
74
|
logger.debug(`Navigating to header col ${colIndex}`);
|
|
73
75
|
apiRef.current.scrollToIndexes({
|
|
@@ -390,12 +392,14 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
390
392
|
return;
|
|
391
393
|
}
|
|
392
394
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
393
|
-
const
|
|
395
|
+
const getColumnIndexFn = listView ? () => 0 : apiRef.current.getColumnIndex;
|
|
396
|
+
const colIndexBefore = params.field ? getColumnIndexFn(params.field) : 0;
|
|
394
397
|
const rowIndexBefore = currentPageRows.findIndex(row => row.id === params.id);
|
|
395
398
|
const firstRowIndexInPage = 0;
|
|
396
399
|
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
397
400
|
const firstColIndex = 0;
|
|
398
|
-
const
|
|
401
|
+
const visibleColumns = listView ? [(0, _gridListViewSelectors.gridListColumnSelector)(apiRef.current.state)] : (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
|
|
402
|
+
const lastColIndex = visibleColumns.length - 1;
|
|
399
403
|
let shouldPreventDefault = true;
|
|
400
404
|
switch (event.key) {
|
|
401
405
|
case 'ArrowDown':
|
|
@@ -514,7 +518,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
514
518
|
if (shouldPreventDefault) {
|
|
515
519
|
event.preventDefault();
|
|
516
520
|
}
|
|
517
|
-
}, [apiRef, currentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader]);
|
|
521
|
+
}, [apiRef, currentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader, listView]);
|
|
518
522
|
const checkIfCanStartEditing = React.useCallback((initialValue, {
|
|
519
523
|
event
|
|
520
524
|
}) => {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.gridListColumnSelector = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Get a list column definition
|
|
9
|
+
*/
|
|
10
|
+
const gridListColumnSelector = state => state.listViewColumn;
|
|
11
|
+
exports.gridListColumnSelector = gridListColumnSelector;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.listViewStateInitializer = void 0;
|
|
9
|
+
exports.useGridListView = useGridListView;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _dimensions = require("../dimensions");
|
|
13
|
+
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
14
|
+
const listViewStateInitializer = (state, props, apiRef) => (0, _extends2.default)({}, state, {
|
|
15
|
+
listViewColumn: (0, _extends2.default)({}, props.unstable_listColumn, {
|
|
16
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
17
|
+
})
|
|
18
|
+
});
|
|
19
|
+
exports.listViewStateInitializer = listViewStateInitializer;
|
|
20
|
+
function useGridListView(apiRef, props) {
|
|
21
|
+
/*
|
|
22
|
+
* EVENTS
|
|
23
|
+
*/
|
|
24
|
+
const updateListColumnWidth = () => {
|
|
25
|
+
apiRef.current.setState(state => {
|
|
26
|
+
if (!state.listViewColumn) {
|
|
27
|
+
return state;
|
|
28
|
+
}
|
|
29
|
+
return (0, _extends2.default)({}, state, {
|
|
30
|
+
listViewColumn: (0, _extends2.default)({}, state.listViewColumn, {
|
|
31
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const prevInnerWidth = React.useRef(null);
|
|
37
|
+
const handleGridSizeChange = viewportInnerSize => {
|
|
38
|
+
if (prevInnerWidth.current !== viewportInnerSize.width) {
|
|
39
|
+
prevInnerWidth.current = viewportInnerSize.width;
|
|
40
|
+
updateListColumnWidth();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
|
|
44
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnVisibilityModelChange', updateListColumnWidth);
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* EFFECTS
|
|
48
|
+
*/
|
|
49
|
+
React.useEffect(() => {
|
|
50
|
+
const listColumn = props.unstable_listColumn;
|
|
51
|
+
if (listColumn) {
|
|
52
|
+
apiRef.current.setState(state => {
|
|
53
|
+
return (0, _extends2.default)({}, state, {
|
|
54
|
+
listViewColumn: (0, _extends2.default)({}, listColumn, {
|
|
55
|
+
computedWidth: getListColumnWidth(apiRef)
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}, [apiRef, props.unstable_listColumn]);
|
|
61
|
+
}
|
|
62
|
+
function getListColumnWidth(apiRef) {
|
|
63
|
+
return (0, _dimensions.gridDimensionsSelector)(apiRef.current.state).viewportInnerSize.width;
|
|
64
|
+
}
|
|
@@ -255,7 +255,11 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
255
255
|
/*
|
|
256
256
|
* EVENTS
|
|
257
257
|
*/
|
|
258
|
+
const isFirstRender = React.useRef(true);
|
|
258
259
|
const removeOutdatedSelection = React.useCallback((sortModelUpdated = false) => {
|
|
260
|
+
if (isFirstRender.current) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
259
263
|
const currentSelection = (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state);
|
|
260
264
|
const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
|
|
261
265
|
|
|
@@ -263,7 +267,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
263
267
|
const selectionLookup = (0, _extends2.default)({}, (0, _gridRowSelectionSelector.selectedIdsLookupSelector)(apiRef));
|
|
264
268
|
let hasChanged = false;
|
|
265
269
|
currentSelection.forEach(id => {
|
|
266
|
-
if (filteredRowsLookup[id]
|
|
270
|
+
if (filteredRowsLookup[id] !== true) {
|
|
267
271
|
if (props.keepNonExistentRowsSelected) {
|
|
268
272
|
return;
|
|
269
273
|
}
|
|
@@ -417,7 +421,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
417
421
|
handleSingleRowSelection(params.id, event);
|
|
418
422
|
return;
|
|
419
423
|
}
|
|
420
|
-
if (event.
|
|
424
|
+
if (String.fromCharCode(event.keyCode) === 'A' && (event.ctrlKey || event.metaKey)) {
|
|
421
425
|
event.preventDefault();
|
|
422
426
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
423
427
|
}
|
|
@@ -471,5 +475,10 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
471
475
|
React.useEffect(() => {
|
|
472
476
|
runIfRowSelectionIsEnabled(removeOutdatedSelection);
|
|
473
477
|
}, [removeOutdatedSelection, runIfRowSelectionIsEnabled]);
|
|
478
|
+
React.useEffect(() => {
|
|
479
|
+
if (isFirstRender.current) {
|
|
480
|
+
isFirstRender.current = false;
|
|
481
|
+
}
|
|
482
|
+
}, []);
|
|
474
483
|
};
|
|
475
484
|
exports.useGridRowSelection = useGridRowSelection;
|
|
@@ -52,21 +52,21 @@ function getCheckboxPropsSelector(groupId, autoSelectParents) {
|
|
|
52
52
|
isChecked: true
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
let
|
|
56
|
-
let
|
|
55
|
+
let selectableDescendantsCount = 0;
|
|
56
|
+
let selectedDescendantsCount = 0;
|
|
57
57
|
const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;
|
|
58
58
|
for (let index = startIndex; index < sortedRowIds.length && rowTree[sortedRowIds[index]]?.depth > groupNode.depth; index += 1) {
|
|
59
59
|
const id = sortedRowIds[index];
|
|
60
60
|
if (filteredRowsLookup[id] !== false) {
|
|
61
|
-
|
|
61
|
+
selectableDescendantsCount += 1;
|
|
62
62
|
if (rowSelectionLookup[id] !== undefined) {
|
|
63
|
-
|
|
63
|
+
selectedDescendantsCount += 1;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
return {
|
|
68
|
-
isIndeterminate:
|
|
69
|
-
isChecked: autoSelectParents ?
|
|
68
|
+
isIndeterminate: selectedDescendantsCount > 0 && (selectedDescendantsCount < selectableDescendantsCount || rowSelectionLookup[groupId] === undefined),
|
|
69
|
+
isChecked: autoSelectParents ? selectedDescendantsCount > 0 : rowSelectionLookup[groupId] === groupId
|
|
70
70
|
};
|
|
71
71
|
});
|
|
72
72
|
}
|
|
@@ -10,7 +10,7 @@ exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
|
|
|
10
10
|
exports.computeRowsUpdates = computeRowsUpdates;
|
|
11
11
|
exports.createRowsInternalCache = void 0;
|
|
12
12
|
exports.getMinimalContentHeight = getMinimalContentHeight;
|
|
13
|
-
exports.updateCacheWithNewRows = exports.isAutogeneratedRowNode = exports.isAutogeneratedRow = exports.getTreeNodeDescendants = exports.getTopLevelRowCount = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = void 0;
|
|
13
|
+
exports.updateCacheWithNewRows = exports.rowHeightWarning = exports.isAutogeneratedRowNode = exports.isAutogeneratedRow = exports.getValidRowHeight = exports.getTreeNodeDescendants = exports.getTopLevelRowCount = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = exports.getRowHeightWarning = void 0;
|
|
14
14
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
15
|
var _gridRowsSelector = require("./gridRowsSelector");
|
|
16
16
|
var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
|
|
@@ -38,7 +38,7 @@ const buildRootGroup = () => ({
|
|
|
38
38
|
exports.buildRootGroup = buildRootGroup;
|
|
39
39
|
function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {
|
|
40
40
|
if (id == null) {
|
|
41
|
-
throw new Error(['MUI X: The
|
|
41
|
+
throw new Error(['MUI X: The Data Grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {
|
|
@@ -328,4 +328,18 @@ function computeRowsUpdates(apiRef, updates, getRowId) {
|
|
|
328
328
|
}
|
|
329
329
|
});
|
|
330
330
|
return nonPinnedRowsUpdates;
|
|
331
|
-
}
|
|
331
|
+
}
|
|
332
|
+
let warnedOnceInvalidRowHeight = false;
|
|
333
|
+
const getValidRowHeight = (rowHeightProp, defaultRowHeight, warningMessage) => {
|
|
334
|
+
if (typeof rowHeightProp === 'number' && rowHeightProp > 0) {
|
|
335
|
+
return rowHeightProp;
|
|
336
|
+
}
|
|
337
|
+
if (process.env.NODE_ENV !== 'production' && !warnedOnceInvalidRowHeight && typeof rowHeightProp !== 'undefined' && rowHeightProp !== null) {
|
|
338
|
+
console.warn(warningMessage);
|
|
339
|
+
warnedOnceInvalidRowHeight = true;
|
|
340
|
+
}
|
|
341
|
+
return defaultRowHeight;
|
|
342
|
+
};
|
|
343
|
+
exports.getValidRowHeight = getValidRowHeight;
|
|
344
|
+
const rowHeightWarning = exports.rowHeightWarning = [`MUI X: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
|
|
345
|
+
const getRowHeightWarning = exports.getRowHeightWarning = [`MUI X: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
|
|
@@ -10,6 +10,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _domUtils = require("../../../utils/domUtils");
|
|
11
11
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
12
12
|
var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
|
|
13
|
+
var _gridListViewSelectors = require("../listView/gridListViewSelectors");
|
|
13
14
|
class MissingRowIdError extends Error {}
|
|
14
15
|
|
|
15
16
|
/**
|
|
@@ -21,7 +22,7 @@ class MissingRowIdError extends Error {}
|
|
|
21
22
|
* TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi
|
|
22
23
|
*/
|
|
23
24
|
exports.MissingRowIdError = MissingRowIdError;
|
|
24
|
-
function useGridParamsApi(apiRef) {
|
|
25
|
+
function useGridParamsApi(apiRef, props) {
|
|
25
26
|
const getColumnHeaderParams = React.useCallback(field => ({
|
|
26
27
|
field,
|
|
27
28
|
colDef: apiRef.current.getColumn(field)
|
|
@@ -39,7 +40,7 @@ function useGridParamsApi(apiRef) {
|
|
|
39
40
|
return params;
|
|
40
41
|
}, [apiRef]);
|
|
41
42
|
const getCellParams = React.useCallback((id, field) => {
|
|
42
|
-
const colDef = apiRef.current.getColumn(field);
|
|
43
|
+
const colDef = props.unstable_listView ? (0, _gridListViewSelectors.gridListColumnSelector)(apiRef.current.state) : apiRef.current.getColumn(field);
|
|
43
44
|
const row = apiRef.current.getRow(id);
|
|
44
45
|
const rowNode = apiRef.current.getRowNode(id);
|
|
45
46
|
if (!row || !rowNode) {
|
|
@@ -68,7 +69,7 @@ function useGridParamsApi(apiRef) {
|
|
|
68
69
|
}
|
|
69
70
|
params.isEditable = colDef && apiRef.current.isCellEditable(params);
|
|
70
71
|
return params;
|
|
71
|
-
}, [apiRef]);
|
|
72
|
+
}, [apiRef, props.unstable_listView]);
|
|
72
73
|
const getCellValue = React.useCallback((id, field) => {
|
|
73
74
|
const colDef = apiRef.current.getColumn(field);
|
|
74
75
|
const row = apiRef.current.getRow(id);
|
|
@@ -211,7 +211,7 @@ const useGridRowSpanning = (apiRef, props) => {
|
|
|
211
211
|
}
|
|
212
212
|
const rangeToProcess = (0, _gridRowSpanningUtils.getUnprocessedRange)({
|
|
213
213
|
firstRowIndex: renderContext.firstRowIndex,
|
|
214
|
-
lastRowIndex: renderContext.lastRowIndex - 1
|
|
214
|
+
lastRowIndex: Math.min(renderContext.lastRowIndex - 1, range.lastRowIndex)
|
|
215
215
|
}, processedRange.current);
|
|
216
216
|
if (rangeToProcess === null) {
|
|
217
217
|
return;
|