@mui/x-data-grid 5.8.0 → 5.9.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 +141 -63
- package/DataGrid/DataGrid.js +1 -1
- package/DataGrid/useDataGridComponent.js +3 -1
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/components/GridRow.d.ts +4 -0
- package/components/GridRow.js +49 -23
- package/components/base/GridOverlays.js +4 -3
- package/components/cell/GridActionsCell.d.ts +5 -1
- package/components/cell/GridActionsCell.js +170 -21
- package/components/cell/GridActionsCellItem.d.ts +66 -4
- package/components/cell/GridActionsCellItem.js +7 -5
- package/components/cell/GridCell.d.ts +1 -0
- package/components/cell/GridCell.js +28 -7
- package/components/cell/GridEditInputCell.js +1 -1
- package/components/cell/GridEditSingleSelectCell.js +22 -13
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -7
- package/components/columnHeaders/GridColumnHeaders.d.ts +0 -1
- package/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +20 -3
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
- package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +2 -0
- package/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/constants/gridDetailPanelToggleField.d.ts +1 -0
- package/constants/gridDetailPanelToggleField.js +2 -0
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +32 -15
- package/hooks/core/pipeProcessing/index.d.ts +1 -0
- package/hooks/core/pipeProcessing/index.js +2 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +76 -10
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
- package/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
- package/hooks/features/columns/useGridColumnSpanning.js +109 -0
- package/hooks/features/columns/useGridColumns.js +24 -18
- package/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/hooks/features/editRows/useGridCellEditing.new.js +18 -10
- package/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/hooks/features/editRows/useGridRowEditing.new.js +23 -15
- package/hooks/features/filter/useGridFilter.js +14 -9
- package/hooks/features/focus/useGridFocus.js +19 -9
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +39 -7
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -0
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsState.d.ts +4 -0
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +5 -4
- package/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/hooks/features/scroll/useGridScroll.d.ts +2 -0
- package/hooks/features/scroll/useGridScroll.js +25 -3
- package/hooks/features/selection/useGridSelection.js +3 -2
- package/hooks/features/sorting/useGridSorting.js +10 -10
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +7 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +54 -27
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/legacy/DataGrid/DataGrid.js +1 -1
- package/legacy/DataGrid/useDataGridComponent.js +3 -1
- package/legacy/components/GridRow.js +47 -23
- package/legacy/components/base/GridOverlays.js +4 -3
- package/legacy/components/cell/GridActionsCell.js +188 -27
- package/legacy/components/cell/GridActionsCellItem.js +7 -5
- package/legacy/components/cell/GridCell.js +29 -7
- package/legacy/components/cell/GridEditInputCell.js +1 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +33 -24
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +4 -7
- package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +21 -3
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/legacy/constants/gridDetailPanelToggleField.js +2 -0
- package/legacy/hooks/core/pipeProcessing/index.js +2 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +89 -10
- package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/legacy/hooks/features/columns/useGridColumns.js +24 -18
- package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -8
- package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +32 -24
- package/legacy/hooks/features/filter/useGridFilter.js +14 -9
- package/legacy/hooks/features/focus/useGridFocus.js +19 -9
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +39 -6
- package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
- package/legacy/hooks/features/rows/useGridRows.js +5 -4
- package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/legacy/hooks/features/scroll/useGridScroll.js +25 -3
- package/legacy/hooks/features/selection/useGridSelection.js +3 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +5 -7
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +65 -37
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +1 -0
- package/legacy/locales/huHU.js +120 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/models/api/gridColumnSpanning.js +1 -0
- package/legacy/models/events/gridEvents.js +2 -3
- package/legacy/models/gridColumnSpanning.js +1 -0
- package/locales/huHU.d.ts +2 -0
- package/locales/huHU.js +108 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnSpanning.d.ts +28 -0
- package/models/api/gridColumnSpanning.js +1 -0
- package/models/api/gridEditingApi.d.ts +49 -3
- package/models/colDef/gridColDef.d.ts +5 -0
- package/models/events/gridEventLookup.d.ts +3 -8
- package/models/events/gridEvents.d.ts +9 -14
- package/models/events/gridEvents.js +2 -3
- package/models/gridColumnSpanning.d.ts +12 -0
- package/models/gridColumnSpanning.js +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/params/gridCellParams.d.ts +12 -2
- package/models/params/gridRowParams.d.ts +5 -0
- package/models/props/DataGridProps.d.ts +1 -1
- package/modern/DataGrid/DataGrid.js +1 -1
- package/modern/DataGrid/useDataGridComponent.js +3 -1
- package/modern/components/GridRow.js +47 -21
- package/modern/components/base/GridOverlays.js +4 -3
- package/modern/components/cell/GridActionsCell.js +168 -21
- package/modern/components/cell/GridActionsCellItem.js +7 -5
- package/modern/components/cell/GridCell.js +28 -7
- package/modern/components/cell/GridEditInputCell.js +1 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +20 -11
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -7
- package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +20 -3
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/virtualization/GridVirtualScroller.js +2 -0
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/modern/constants/gridDetailPanelToggleField.js +2 -0
- package/modern/hooks/core/pipeProcessing/index.js +2 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +76 -10
- package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/modern/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/modern/hooks/features/columns/useGridColumns.js +24 -18
- package/modern/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +18 -10
- package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +23 -15
- package/modern/hooks/features/filter/useGridFilter.js +14 -9
- package/modern/hooks/features/focus/useGridFocus.js +19 -9
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +37 -7
- package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
- package/modern/hooks/features/rows/useGridRows.js +5 -4
- package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/modern/hooks/features/scroll/useGridScroll.js +23 -3
- package/modern/hooks/features/selection/useGridSelection.js +3 -2
- package/modern/hooks/features/sorting/useGridSorting.js +10 -10
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +54 -23
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -0
- package/modern/locales/huHU.js +108 -0
- package/modern/locales/index.js +1 -0
- package/modern/models/api/gridColumnSpanning.js +1 -0
- package/modern/models/events/gridEvents.js +2 -3
- package/modern/models/gridColumnSpanning.js +1 -0
- package/node/DataGrid/DataGrid.js +1 -1
- package/node/DataGrid/useDataGridComponent.js +4 -1
- package/node/components/GridRow.js +50 -23
- package/node/components/base/GridOverlays.js +3 -2
- package/node/components/cell/GridActionsCell.js +172 -21
- package/node/components/cell/GridActionsCellItem.js +7 -4
- package/node/components/cell/GridCell.js +28 -7
- package/node/components/cell/GridEditInputCell.js +1 -1
- package/node/components/cell/GridEditSingleSelectCell.js +23 -13
- package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -7
- package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +20 -3
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
- package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/virtualization/GridVirtualScroller.js +2 -0
- package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/node/constants/gridDetailPanelToggleField.js +9 -0
- package/node/hooks/core/pipeProcessing/index.js +13 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +80 -10
- package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
- package/node/hooks/features/columns/useGridColumnSpanning.js +130 -0
- package/node/hooks/features/columns/useGridColumns.js +23 -17
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/node/hooks/features/editRows/useGridCellEditing.new.js +18 -10
- package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
- package/node/hooks/features/editRows/useGridRowEditing.new.js +21 -14
- package/node/hooks/features/filter/useGridFilter.js +14 -9
- package/node/hooks/features/focus/useGridFocus.js +19 -9
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +40 -7
- package/node/hooks/features/rows/gridRowsSelector.js +3 -1
- package/node/hooks/features/rows/useGridRows.js +5 -4
- package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
- package/node/hooks/features/scroll/useGridScroll.js +26 -2
- package/node/hooks/features/selection/useGridSelection.js +4 -2
- package/node/hooks/features/sorting/useGridSorting.js +10 -10
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +59 -27
- package/node/index.js +1 -1
- package/node/internals/index.js +8 -0
- package/node/locales/huHU.js +118 -0
- package/node/locales/index.js +13 -0
- package/node/models/api/gridColumnSpanning.js +5 -0
- package/node/models/events/gridEvents.js +2 -3
- package/node/models/gridColumnSpanning.js +5 -0
- package/package.json +4 -4
- package/utils/domUtils.d.ts +2 -2
|
@@ -7,8 +7,7 @@ import { gridDensityRowHeightSelector, gridDensityFactorSelector } from '../dens
|
|
|
7
7
|
import { gridFilterStateSelector } from '../filter/gridFilterSelector';
|
|
8
8
|
import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
|
|
9
9
|
import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
|
|
10
|
-
import {
|
|
11
|
-
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
+
import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
12
11
|
export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
13
12
|
rowsMeta: {
|
|
14
13
|
currentPageTotalHeight: 0,
|
|
@@ -65,10 +64,11 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
65
64
|
if (getRowSpacing) {
|
|
66
65
|
var _spacing$top, _spacing$bottom;
|
|
67
66
|
|
|
68
|
-
const
|
|
67
|
+
const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
69
68
|
const spacing = getRowSpacing(_extends({}, row, {
|
|
70
|
-
isFirstVisible:
|
|
71
|
-
isLastVisible:
|
|
69
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
+
indexRelativeToCurrentPage
|
|
72
72
|
}));
|
|
73
73
|
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
74
74
|
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
@@ -120,14 +120,7 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
120
120
|
React.useEffect(() => {
|
|
121
121
|
hydrateRowsMeta();
|
|
122
122
|
}, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
123
|
-
|
|
124
|
-
if (name !== 'rowHeight') {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
hydrateRowsMeta();
|
|
129
|
-
}, [hydrateRowsMeta]);
|
|
130
|
-
useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
|
|
123
|
+
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
131
124
|
const rowsMetaApi = {
|
|
132
125
|
unstable_getRowHeight: getTargetRowHeight,
|
|
133
126
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
@@ -6,5 +6,7 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
6
6
|
* @requires useGridColumns (state) - can be after, async only
|
|
7
7
|
* @requires useGridRows (state) - can be after, async only
|
|
8
8
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
9
|
+
* @requires useGridFilter (state)
|
|
10
|
+
* @requires useGridColumnSpanning (method)
|
|
9
11
|
*/
|
|
10
12
|
export declare const useGridScroll: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination'>) => void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
3
3
|
import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
4
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
4
5
|
import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
|
|
5
6
|
import { gridRowCountSelector } from '../rows/gridRowsSelector';
|
|
6
7
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
7
|
-
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
+
import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
8
10
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
9
11
|
|
|
10
12
|
function scrollIntoView(dimensions) {
|
|
@@ -31,6 +33,8 @@ function scrollIntoView(dimensions) {
|
|
|
31
33
|
* @requires useGridColumns (state) - can be after, async only
|
|
32
34
|
* @requires useGridRows (state) - can be after, async only
|
|
33
35
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
36
|
+
* @requires useGridFilter (state)
|
|
37
|
+
* @requires useGridColumnSpanning (method)
|
|
34
38
|
*/
|
|
35
39
|
|
|
36
40
|
|
|
@@ -38,6 +42,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
38
42
|
const logger = useGridLogger(apiRef, 'useGridScroll');
|
|
39
43
|
const colRef = apiRef.current.columnHeadersElementRef;
|
|
40
44
|
const windowRef = apiRef.current.windowRef;
|
|
45
|
+
const visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
|
|
41
46
|
const scrollToIndexes = React.useCallback(params => {
|
|
42
47
|
const totalRowCount = gridRowCountSelector(apiRef);
|
|
43
48
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
@@ -52,10 +57,27 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
52
57
|
|
|
53
58
|
if (params.colIndex != null) {
|
|
54
59
|
const columnPositions = gridColumnPositionsSelector(apiRef);
|
|
60
|
+
let cellWidth;
|
|
61
|
+
|
|
62
|
+
if (typeof params.rowIndex !== 'undefined') {
|
|
63
|
+
var _visibleSortedRows$pa;
|
|
64
|
+
|
|
65
|
+
const rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
|
|
66
|
+
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
|
|
67
|
+
|
|
68
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
69
|
+
cellWidth = cellColSpanInfo.cellProps.width;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (typeof cellWidth === 'undefined') {
|
|
74
|
+
cellWidth = visibleColumns[params.colIndex].computedWidth;
|
|
75
|
+
}
|
|
76
|
+
|
|
55
77
|
scrollCoordinates.left = scrollIntoView({
|
|
56
78
|
clientHeight: windowRef.current.clientWidth,
|
|
57
79
|
scrollTop: windowRef.current.scrollLeft,
|
|
58
|
-
offsetHeight:
|
|
80
|
+
offsetHeight: cellWidth,
|
|
59
81
|
offsetTop: columnPositions[params.colIndex]
|
|
60
82
|
});
|
|
61
83
|
}
|
|
@@ -82,7 +104,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
82
104
|
}
|
|
83
105
|
|
|
84
106
|
return false;
|
|
85
|
-
}, [logger, apiRef, windowRef, props.pagination]);
|
|
107
|
+
}, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
|
|
86
108
|
const scroll = React.useCallback(params => {
|
|
87
109
|
if (windowRef.current && params.left != null && colRef.current) {
|
|
88
110
|
colRef.current.scrollLeft = params.left;
|
|
@@ -13,6 +13,7 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../..
|
|
|
13
13
|
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
14
14
|
import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
|
|
15
15
|
import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
16
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
16
17
|
|
|
17
18
|
const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
|
|
18
19
|
if (selectionModelProp == null) {
|
|
@@ -240,7 +241,7 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
240
241
|
return;
|
|
241
242
|
}
|
|
242
243
|
|
|
243
|
-
if (params.field ===
|
|
244
|
+
if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
244
245
|
// click to open the detail panel should not select the row
|
|
245
246
|
return;
|
|
246
247
|
}
|
|
@@ -348,7 +349,7 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
348
349
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
349
350
|
}
|
|
350
351
|
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
351
|
-
useGridApiEventHandler(apiRef, GridEvents.
|
|
352
|
+
useGridApiEventHandler(apiRef, GridEvents.sortedRowsSet, removeOutdatedSelection);
|
|
352
353
|
useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
|
|
353
354
|
useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
|
|
354
355
|
useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
|
|
@@ -80,17 +80,16 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
80
80
|
*/
|
|
81
81
|
|
|
82
82
|
const applySorting = React.useCallback(() => {
|
|
83
|
-
if (props.sortingMode === GridFeatureModeConstant.server) {
|
|
84
|
-
logger.debug('Skipping sorting rows as sortingMode = server');
|
|
85
|
-
apiRef.current.setState(state => _extends({}, state, {
|
|
86
|
-
sorting: _extends({}, state.sorting, {
|
|
87
|
-
sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
|
|
88
|
-
})
|
|
89
|
-
}));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
83
|
apiRef.current.setState(state => {
|
|
84
|
+
if (props.sortingMode === GridFeatureModeConstant.server) {
|
|
85
|
+
logger.debug('Skipping sorting rows as sortingMode = server');
|
|
86
|
+
return _extends({}, state, {
|
|
87
|
+
sorting: _extends({}, state.sorting, {
|
|
88
|
+
sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
|
|
89
|
+
})
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
94
93
|
const sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
|
|
95
94
|
const sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
|
|
96
95
|
const sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
|
|
@@ -102,6 +101,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
102
101
|
})
|
|
103
102
|
});
|
|
104
103
|
});
|
|
104
|
+
apiRef.current.publishEvent(GridEvents.sortedRowsSet);
|
|
105
105
|
apiRef.current.forceUpdate();
|
|
106
106
|
}, [apiRef, logger, props.sortingMode]);
|
|
107
107
|
const setSortModel = React.useCallback(model => {
|
|
@@ -2,6 +2,13 @@ import * as React from 'react';
|
|
|
2
2
|
import { GridRenderContext } from '../../../models';
|
|
3
3
|
import { GridRowId, GridRowModel } from '../../../models/gridRows';
|
|
4
4
|
export declare function getIndexFromScroll(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
|
|
5
|
+
export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
|
|
6
|
+
firstIndex: number;
|
|
7
|
+
lastIndex: number;
|
|
8
|
+
buffer: number;
|
|
9
|
+
minFirstIndex: number;
|
|
10
|
+
maxLastIndex: number;
|
|
11
|
+
}) => number[];
|
|
5
12
|
interface UseGridVirtualScrollerProps {
|
|
6
13
|
ref: React.Ref<HTMLDivElement>;
|
|
7
14
|
disableVirtualization?: boolean;
|
|
@@ -2,6 +2,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
const _excluded = ["style"];
|
|
4
4
|
import * as React from 'react';
|
|
5
|
+
import * as ReactDOM from 'react-dom';
|
|
5
6
|
import { useForkRef } from '@mui/material/utils';
|
|
6
7
|
import { useGridApiContext } from '../../utils/useGridApiContext';
|
|
7
8
|
import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
@@ -16,8 +17,9 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
|
16
17
|
import { clamp } from '../../../utils/utils';
|
|
17
18
|
import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
|
|
18
19
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
20
|
+
import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
|
|
21
|
+
|
|
19
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
|
-
// Uses binary search to avoid looping through all possible positions
|
|
21
23
|
export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd = positions.length) {
|
|
22
24
|
if (positions.length <= 0) {
|
|
23
25
|
return -1;
|
|
@@ -31,9 +33,16 @@ export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd =
|
|
|
31
33
|
const itemOffset = positions[pivot];
|
|
32
34
|
return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
|
|
33
35
|
}
|
|
36
|
+
export const getRenderableIndexes = ({
|
|
37
|
+
firstIndex,
|
|
38
|
+
lastIndex,
|
|
39
|
+
buffer,
|
|
40
|
+
minFirstIndex,
|
|
41
|
+
maxLastIndex
|
|
42
|
+
}) => {
|
|
43
|
+
return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
|
|
44
|
+
};
|
|
34
45
|
export const useGridVirtualScroller = props => {
|
|
35
|
-
var _currentPage$range2;
|
|
36
|
-
|
|
37
46
|
const apiRef = useGridApiContext();
|
|
38
47
|
const rootProps = useGridRootProps();
|
|
39
48
|
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
@@ -108,34 +117,28 @@ export const useGridVirtualScroller = props => {
|
|
|
108
117
|
}
|
|
109
118
|
}, []);
|
|
110
119
|
useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
|
|
111
|
-
|
|
112
|
-
const getRenderableIndexes = ({
|
|
113
|
-
firstIndex,
|
|
114
|
-
lastIndex,
|
|
115
|
-
buffer,
|
|
116
|
-
minFirstIndex,
|
|
117
|
-
maxLastIndex
|
|
118
|
-
}) => {
|
|
119
|
-
return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
|
|
120
|
-
};
|
|
121
|
-
|
|
122
120
|
const updateRenderZonePosition = React.useCallback(nextRenderContext => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const [firstRowToRender] = getRenderableIndexes({
|
|
121
|
+
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
126
122
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
127
123
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
128
124
|
minFirstIndex: 0,
|
|
129
|
-
maxLastIndex:
|
|
125
|
+
maxLastIndex: currentPage.rows.length,
|
|
130
126
|
buffer: rootProps.rowBuffer
|
|
131
127
|
});
|
|
132
|
-
const [
|
|
128
|
+
const [initialFirstColumnToRender] = getRenderableIndexes({
|
|
133
129
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
134
130
|
lastIndex: nextRenderContext.lastColumnIndex,
|
|
135
131
|
minFirstIndex: renderZoneMinColumnIndex,
|
|
136
132
|
maxLastIndex: renderZoneMaxColumnIndex,
|
|
137
133
|
buffer: rootProps.columnBuffer
|
|
138
134
|
});
|
|
135
|
+
const firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
136
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
137
|
+
apiRef,
|
|
138
|
+
firstRowToRender,
|
|
139
|
+
lastRowToRender,
|
|
140
|
+
visibleRows: currentPage.rows
|
|
141
|
+
});
|
|
139
142
|
const top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
|
|
140
143
|
const left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
|
|
141
144
|
|
|
@@ -147,19 +150,22 @@ export const useGridVirtualScroller = props => {
|
|
|
147
150
|
left
|
|
148
151
|
});
|
|
149
152
|
}
|
|
150
|
-
}, [apiRef,
|
|
153
|
+
}, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
|
|
154
|
+
React.useLayoutEffect(() => {
|
|
155
|
+
if (renderContext) {
|
|
156
|
+
updateRenderZonePosition(renderContext);
|
|
157
|
+
}
|
|
158
|
+
}, [renderContext, updateRenderZonePosition]);
|
|
151
159
|
const updateRenderContext = React.useCallback(nextRenderContext => {
|
|
152
160
|
setRenderContext(nextRenderContext);
|
|
153
|
-
updateRenderZonePosition(nextRenderContext);
|
|
154
161
|
prevRenderContext.current = nextRenderContext;
|
|
155
|
-
}, [setRenderContext, prevRenderContext
|
|
162
|
+
}, [setRenderContext, prevRenderContext]);
|
|
156
163
|
React.useEffect(() => {
|
|
157
164
|
if (containerWidth == null) {
|
|
158
165
|
return;
|
|
159
166
|
}
|
|
160
167
|
|
|
161
168
|
const initialRenderContext = computeRenderContext();
|
|
162
|
-
prevRenderContext.current = initialRenderContext;
|
|
163
169
|
updateRenderContext(initialRenderContext);
|
|
164
170
|
const {
|
|
165
171
|
top,
|
|
@@ -197,10 +203,13 @@ export const useGridVirtualScroller = props => {
|
|
|
197
203
|
top: scrollTop,
|
|
198
204
|
left: scrollLeft,
|
|
199
205
|
renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
|
|
200
|
-
});
|
|
206
|
+
}, event);
|
|
201
207
|
|
|
202
208
|
if (shouldSetState) {
|
|
203
|
-
|
|
209
|
+
// Prevents batching render context changes
|
|
210
|
+
ReactDOM.flushSync(() => {
|
|
211
|
+
updateRenderContext(nextRenderContext);
|
|
212
|
+
});
|
|
204
213
|
prevTotalWidth.current = columnsTotalWidth;
|
|
205
214
|
}
|
|
206
215
|
};
|
|
@@ -228,14 +237,32 @@ export const useGridVirtualScroller = props => {
|
|
|
228
237
|
maxLastIndex: currentPage.rows.length,
|
|
229
238
|
buffer: rowBuffer
|
|
230
239
|
});
|
|
231
|
-
const
|
|
240
|
+
const renderedRows = [];
|
|
241
|
+
|
|
242
|
+
for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
|
|
243
|
+
const row = currentPage.rows[i];
|
|
244
|
+
renderedRows.push(row);
|
|
245
|
+
apiRef.current.unstable_calculateColSpan({
|
|
246
|
+
rowId: row.id,
|
|
247
|
+
minFirstColumn,
|
|
248
|
+
maxLastColumn
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const [initialFirstColumnToRender, lastColumnToRender] = getRenderableIndexes({
|
|
232
253
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
233
254
|
lastIndex: nextRenderContext.lastColumnIndex,
|
|
234
255
|
minFirstIndex: minFirstColumn,
|
|
235
256
|
maxLastIndex: maxLastColumn,
|
|
236
257
|
buffer: columnBuffer
|
|
237
258
|
});
|
|
238
|
-
const
|
|
259
|
+
const firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
260
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
261
|
+
apiRef,
|
|
262
|
+
firstRowToRender,
|
|
263
|
+
lastRowToRender,
|
|
264
|
+
visibleRows: currentPage.rows
|
|
265
|
+
});
|
|
239
266
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
240
267
|
const rows = [];
|
|
241
268
|
|
package/index.js
CHANGED
package/internals/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
|
|
|
12
12
|
export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
|
|
13
13
|
export { useGridColumnMenu, columnMenuStateInitializer, } from '../hooks/features/columnMenu/useGridColumnMenu';
|
|
14
14
|
export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
|
|
15
|
+
export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
15
16
|
export type { GridColumnRawLookup, GridColumnsRawState, GridHydrateColumnsValue, } from '../hooks/features/columns/gridColumnsInterfaces';
|
|
16
17
|
export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
|
|
17
18
|
export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
|
package/internals/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
|
|
|
10
10
|
export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
|
|
11
11
|
export { useGridColumnMenu, columnMenuStateInitializer } from '../hooks/features/columnMenu/useGridColumnMenu';
|
|
12
12
|
export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
|
|
13
|
+
export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
13
14
|
export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
|
|
14
15
|
export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
|
|
15
16
|
export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport';
|
|
@@ -460,7 +460,7 @@ DataGridRaw.propTypes = {
|
|
|
460
460
|
* @param {GridEditCellPropsParams} params With all properties from [[GridEditCellPropsParams]].
|
|
461
461
|
* @param {MuiEvent<React.SyntheticEvent>} event The event that caused this prop to be called.
|
|
462
462
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
463
|
-
* @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/api/data-grid/grid-col-def/)
|
|
463
|
+
* @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/x/api/data-grid/grid-col-def/)
|
|
464
464
|
*/
|
|
465
465
|
onEditCellPropsChange: PropTypes.func,
|
|
466
466
|
|
|
@@ -24,6 +24,7 @@ import { useGridEvents } from '../hooks/features/events/useGridEvents';
|
|
|
24
24
|
import { useGridDimensions } from '../hooks/features/dimensions/useGridDimensions';
|
|
25
25
|
import { rowsMetaStateInitializer, useGridRowsMeta } from '../hooks/features/rows/useGridRowsMeta';
|
|
26
26
|
import { useGridStatePersistence } from '../hooks/features/statePersistence/useGridStatePersistence';
|
|
27
|
+
import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
27
28
|
export var useDataGridComponent = function useDataGridComponent(props) {
|
|
28
29
|
var _props$experimentalFe, _props$experimentalFe2;
|
|
29
30
|
|
|
@@ -55,12 +56,13 @@ export var useDataGridComponent = function useDataGridComponent(props) {
|
|
|
55
56
|
useGridColumns(apiRef, props);
|
|
56
57
|
useGridRows(apiRef, props);
|
|
57
58
|
useGridParamsApi(apiRef);
|
|
59
|
+
useGridColumnSpanning(apiRef);
|
|
58
60
|
var useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
|
|
59
61
|
useGridEditing(apiRef, props);
|
|
60
62
|
useGridFocus(apiRef, props);
|
|
61
|
-
useGridSorting(apiRef, props);
|
|
62
63
|
useGridPreferencesPanel(apiRef);
|
|
63
64
|
useGridFilter(apiRef, props);
|
|
65
|
+
useGridSorting(apiRef, props);
|
|
64
66
|
useGridDensity(apiRef, props);
|
|
65
67
|
useGridPagination(apiRef, props);
|
|
66
68
|
useGridRowsMeta(apiRef, props);
|
|
@@ -20,6 +20,7 @@ import { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
|
|
|
20
20
|
import { findParentElementFromClassName } from '../utils/domUtils';
|
|
21
21
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../colDef/gridCheckboxSelectionColDef';
|
|
22
22
|
import { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';
|
|
23
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';
|
|
23
24
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
25
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
26
|
|
|
@@ -134,7 +135,7 @@ function GridRow(props) {
|
|
|
134
135
|
} // User opened a detail panel
|
|
135
136
|
|
|
136
137
|
|
|
137
|
-
if (field ===
|
|
138
|
+
if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
138
139
|
return;
|
|
139
140
|
} // User is editing a cell
|
|
140
141
|
|
|
@@ -179,7 +180,8 @@ function GridRow(props) {
|
|
|
179
180
|
|
|
180
181
|
var rowParams = _extends({}, apiRef.current.getRowParams(rowId), {
|
|
181
182
|
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
182
|
-
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1
|
|
183
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
184
|
+
indexRelativeToCurrentPage: indexRelativeToCurrentPage
|
|
183
185
|
});
|
|
184
186
|
|
|
185
187
|
rowClassName = rootProps.getRowClassName(rowParams);
|
|
@@ -188,8 +190,6 @@ function GridRow(props) {
|
|
|
188
190
|
var cells = [];
|
|
189
191
|
|
|
190
192
|
for (var i = 0; i < renderedColumns.length; i += 1) {
|
|
191
|
-
var _rootProps$components;
|
|
192
|
-
|
|
193
193
|
var column = renderedColumns[i];
|
|
194
194
|
var indexRelativeToAllColumns = firstColumnToRender + i;
|
|
195
195
|
var isLastColumn = indexRelativeToAllColumns === visibleColumns.length - 1;
|
|
@@ -218,7 +218,16 @@ function GridRow(props) {
|
|
|
218
218
|
if (editCellState != null && column.renderEditCell) {
|
|
219
219
|
var _rootProps$classes2;
|
|
220
220
|
|
|
221
|
-
var
|
|
221
|
+
var updatedRow = row;
|
|
222
|
+
|
|
223
|
+
if (apiRef.current.unstable_getRowWithUpdatedValues) {
|
|
224
|
+
// Only the new editing API has this method
|
|
225
|
+
updatedRow = apiRef.current.unstable_getRowWithUpdatedValues(rowId, column.field);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
var params = _extends({}, cellParams, {
|
|
229
|
+
row: updatedRow
|
|
230
|
+
}, editCellState, {
|
|
222
231
|
api: apiRef.current
|
|
223
232
|
});
|
|
224
233
|
|
|
@@ -234,24 +243,34 @@ function GridRow(props) {
|
|
|
234
243
|
|
|
235
244
|
var hasFocus = cellFocus !== null && cellFocus.id === rowId && cellFocus.field === column.field;
|
|
236
245
|
var tabIndex = cellTabIndex !== null && cellTabIndex.id === rowId && cellTabIndex.field === column.field && cellParams.cellMode === 'view' ? 0 : -1;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
246
|
+
var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
|
|
247
|
+
|
|
248
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
249
|
+
var _rootProps$components;
|
|
250
|
+
|
|
251
|
+
var _cellColSpanInfo$cell = cellColSpanInfo.cellProps,
|
|
252
|
+
colSpan = _cellColSpanInfo$cell.colSpan,
|
|
253
|
+
width = _cellColSpanInfo$cell.width;
|
|
254
|
+
cells.push( /*#__PURE__*/_jsx(rootProps.components.Cell, _extends({
|
|
255
|
+
value: cellParams.value,
|
|
256
|
+
field: column.field,
|
|
257
|
+
width: width,
|
|
258
|
+
rowId: rowId,
|
|
259
|
+
height: rowHeight,
|
|
260
|
+
showRightBorder: showRightBorder,
|
|
261
|
+
formattedValue: cellParams.formattedValue,
|
|
262
|
+
align: column.align || 'left',
|
|
263
|
+
cellMode: cellParams.cellMode,
|
|
264
|
+
colIndex: indexRelativeToAllColumns,
|
|
265
|
+
isEditable: cellParams.isEditable,
|
|
266
|
+
hasFocus: hasFocus,
|
|
267
|
+
tabIndex: tabIndex,
|
|
268
|
+
className: clsx(classNames),
|
|
269
|
+
colSpan: colSpan
|
|
270
|
+
}, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.cell, {
|
|
271
|
+
children: content
|
|
272
|
+
}), column.field));
|
|
273
|
+
}
|
|
255
274
|
}
|
|
256
275
|
|
|
257
276
|
var emptyCellWidth = containerWidth - columnsTotalWidth;
|
|
@@ -285,6 +304,11 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
|
|
|
285
304
|
containerWidth: PropTypes.number.isRequired,
|
|
286
305
|
editRowsState: PropTypes.object.isRequired,
|
|
287
306
|
firstColumnToRender: PropTypes.number.isRequired,
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Index of the row in the whole sorted and filtered dataset.
|
|
310
|
+
* If some rows above have expanded children, this index also take those children into account.
|
|
311
|
+
*/
|
|
288
312
|
index: PropTypes.number.isRequired,
|
|
289
313
|
isLastVisible: PropTypes.bool,
|
|
290
314
|
lastColumnToRender: PropTypes.number.isRequired,
|
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
|
|
5
5
|
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
6
6
|
import { gridVisibleRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';
|
|
7
|
-
import { gridRowCountSelector } from '../../hooks/features/rows/gridRowsSelector';
|
|
7
|
+
import { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';
|
|
8
8
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
9
9
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
10
10
|
import { gridDensityHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
|
|
@@ -61,8 +61,9 @@ export function GridOverlays() {
|
|
|
61
61
|
var rootProps = useGridRootProps();
|
|
62
62
|
var totalRowCount = useGridSelector(apiRef, gridRowCountSelector);
|
|
63
63
|
var visibleRowCount = useGridSelector(apiRef, gridVisibleRowCountSelector);
|
|
64
|
-
var
|
|
65
|
-
var
|
|
64
|
+
var loading = useGridSelector(apiRef, gridRowsLoadingSelector);
|
|
65
|
+
var showNoRowsOverlay = !loading && totalRowCount === 0;
|
|
66
|
+
var showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;
|
|
66
67
|
var overlay = null;
|
|
67
68
|
|
|
68
69
|
if (showNoRowsOverlay) {
|