@mui/x-data-grid 8.9.1 → 8.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -2
- package/DataGrid/DataGrid.js +5 -0
- package/DataGrid/useDataGridComponent.js +2 -0
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/components/GridDetailPanels.d.ts +2 -2
- package/components/GridPinnedRows.d.ts +2 -2
- package/components/GridRow.js +5 -0
- package/components/cell/GridCell.js +7 -5
- package/components/cell/GridEditSingleSelectCell.js +1 -1
- package/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/components/containers/GridRootStyles.d.ts +1 -1
- package/components/toolbarV8/Toolbar.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +5 -5
- package/constants/dataGridPropsDefaultValues.js +1 -0
- package/esm/DataGrid/DataGrid.js +5 -0
- package/esm/DataGrid/useDataGridComponent.js +2 -0
- package/esm/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/esm/components/GridDetailPanels.d.ts +2 -2
- package/esm/components/GridPinnedRows.d.ts +2 -2
- package/esm/components/GridRow.js +5 -0
- package/esm/components/cell/GridCell.js +7 -5
- package/esm/components/cell/GridEditSingleSelectCell.js +1 -1
- package/esm/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/esm/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/esm/components/containers/GridRootStyles.d.ts +1 -1
- package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
- package/esm/components/virtualization/GridVirtualScroller.js +5 -5
- package/esm/constants/dataGridPropsDefaultValues.js +1 -0
- package/esm/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/esm/hooks/core/useGridVirtualizer.js +223 -0
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -2
- package/esm/hooks/features/columns/useGridColumnSpanning.js +5 -90
- package/esm/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -1
- package/esm/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/esm/hooks/features/keyboardNavigation/utils.js +5 -5
- package/esm/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/esm/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/esm/hooks/features/pivoting/gridPivotingSelectors.js +1 -2
- package/esm/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/esm/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/esm/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/esm/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/esm/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/esm/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/esm/hooks/features/rows/useGridRowsMeta.js +17 -187
- package/esm/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/esm/hooks/features/virtualization/index.d.ts +1 -0
- package/esm/hooks/features/virtualization/index.js +1 -0
- package/esm/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/esm/hooks/features/virtualization/useGridVirtualization.js +41 -22
- package/esm/hooks/utils/index.d.ts +1 -1
- package/esm/hooks/utils/index.js +1 -1
- package/esm/hooks/utils/useFirstRender.d.ts +1 -1
- package/esm/hooks/utils/useFirstRender.js +1 -8
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -1
- package/esm/internals/index.js +1 -1
- package/esm/internals/utils/getPinnedCellOffset.js +5 -0
- package/esm/locales/frFR.js +18 -21
- package/esm/locales/heIL.js +12 -12
- package/esm/locales/plPL.js +22 -24
- package/esm/models/api/gridApiCommon.d.ts +4 -1
- package/esm/models/api/gridColumnSpanning.d.ts +5 -11
- package/esm/models/props/DataGridProps.d.ts +5 -0
- package/esm/utils/roundToDecimalPlaces.d.ts +1 -1
- package/esm/utils/roundToDecimalPlaces.js +1 -3
- package/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/hooks/core/useGridVirtualizer.js +231 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -3
- package/hooks/features/columns/useGridColumnSpanning.js +5 -91
- package/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -1
- package/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/hooks/features/keyboardNavigation/utils.js +5 -5
- package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/hooks/features/pivoting/gridPivotingSelectors.js +2 -3
- package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +15 -186
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/hooks/features/virtualization/index.d.ts +1 -0
- package/hooks/features/virtualization/index.js +12 -0
- package/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/hooks/features/virtualization/useGridVirtualization.js +42 -24
- package/hooks/utils/index.d.ts +1 -1
- package/hooks/utils/index.js +12 -12
- package/hooks/utils/useFirstRender.d.ts +1 -1
- package/hooks/utils/useFirstRender.js +11 -11
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +4 -11
- package/internals/utils/getPinnedCellOffset.js +5 -0
- package/locales/frFR.js +18 -21
- package/locales/heIL.js +12 -12
- package/locales/plPL.js +22 -24
- package/models/api/gridApiCommon.d.ts +4 -1
- package/models/api/gridColumnSpanning.d.ts +5 -11
- package/models/props/DataGridProps.d.ts +5 -0
- package/package.json +5 -5
- package/utils/roundToDecimalPlaces.d.ts +1 -1
- package/utils/roundToDecimalPlaces.js +7 -4
- package/esm/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/esm/hooks/features/rows/gridRowSpanningSelectors.js +0 -5
- package/esm/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/esm/hooks/features/virtualization/useGridVirtualScroller.js +0 -843
- package/esm/hooks/utils/useRunOnce.d.ts +0 -5
- package/esm/hooks/utils/useRunOnce.js +0 -18
- package/esm/utils/platform.d.ts +0 -1
- package/esm/utils/platform.js +0 -2
- package/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/hooks/features/rows/gridRowSpanningSelectors.js +0 -11
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/hooks/features/virtualization/useGridVirtualScroller.js +0 -854
- package/hooks/utils/useRunOnce.d.ts +0 -5
- package/hooks/utils/useRunOnce.js +0 -27
- package/utils/platform.d.ts +0 -1
- package/utils/platform.js +0 -8
package/esm/locales/plPL.js
CHANGED
|
@@ -3,8 +3,8 @@ const plPLGrid = {
|
|
|
3
3
|
// Root
|
|
4
4
|
noRowsLabel: 'Brak danych',
|
|
5
5
|
noResultsOverlayLabel: 'Nie znaleziono wyników.',
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
noColumnsOverlayLabel: 'Brak kolumn',
|
|
7
|
+
noColumnsOverlayManageColumns: 'Zarządzaj kolumnami',
|
|
8
8
|
// emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
|
|
9
9
|
|
|
10
10
|
// Density selector toolbar button text
|
|
@@ -36,8 +36,7 @@ const plPLGrid = {
|
|
|
36
36
|
// toolbarPivot: 'Pivot',
|
|
37
37
|
|
|
38
38
|
// Toolbar AI Assistant button
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
toolbarAssistant: 'Asystent AI',
|
|
41
40
|
// Columns management text
|
|
42
41
|
columnsManagementSearchTitle: 'Szukaj',
|
|
43
42
|
columnsManagementNoColumns: 'Brak kolumn',
|
|
@@ -155,18 +154,18 @@ const plPLGrid = {
|
|
|
155
154
|
collapseDetailPanel: 'Zwiń',
|
|
156
155
|
// Pagination
|
|
157
156
|
paginationRowsPerPage: 'Wierszy na stronę:',
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
157
|
+
paginationDisplayedRows: ({
|
|
158
|
+
from,
|
|
159
|
+
to,
|
|
160
|
+
count,
|
|
161
|
+
estimated
|
|
162
|
+
}) => {
|
|
163
|
+
if (!estimated) {
|
|
164
|
+
return `${from}–${to} z ${count !== -1 ? count : `więcej niż ${to}`}`;
|
|
165
|
+
}
|
|
166
|
+
const estimatedLabel = estimated && estimated > to ? `około ${estimated}` : `więcej niż ${to}`;
|
|
167
|
+
return `${from}–${to} z ${count !== -1 ? count : estimatedLabel}`;
|
|
168
|
+
},
|
|
170
169
|
paginationItemAriaLabel: type => {
|
|
171
170
|
if (type === 'first') {
|
|
172
171
|
return 'Przejdź do pierwszej strony';
|
|
@@ -219,19 +218,18 @@ const plPLGrid = {
|
|
|
219
218
|
// pivotQuarterColumnHeaderName: '(Quarter)',
|
|
220
219
|
|
|
221
220
|
// AI Assistant panel
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
221
|
+
aiAssistantPanelTitle: 'Asystent AI',
|
|
222
|
+
aiAssistantPanelClose: 'Zamknij asystenta AI',
|
|
223
|
+
aiAssistantPanelNewConversation: 'Nowa konwersacja',
|
|
224
|
+
aiAssistantPanelConversationHistory: 'Historia konwersacji',
|
|
225
|
+
aiAssistantPanelEmptyConversation: 'Brak historii poleceń',
|
|
226
|
+
aiAssistantSuggestions: 'Sugestie',
|
|
229
227
|
// Prompt field
|
|
230
228
|
promptFieldLabel: 'Wprowadź polecenie',
|
|
231
229
|
promptFieldPlaceholder: 'Wpisz polecenie…',
|
|
232
230
|
promptFieldPlaceholderWithRecording: 'Wpisz lub nagraj polecenie…',
|
|
233
231
|
promptFieldPlaceholderListening: 'Nasłuchiwanie polecenia…',
|
|
234
|
-
|
|
232
|
+
promptFieldSpeechRecognitionNotSupported: 'Rozpoznawanie głosu nie jest obsługiwane przez Twoją przeglądarkę.',
|
|
235
233
|
promptFieldSend: 'Wyślij',
|
|
236
234
|
promptFieldRecord: 'Nagrywaj',
|
|
237
235
|
promptFieldStopRecording: 'Zatrzymaj nagrywanie'
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Virtualizer } from '@mui/x-virtualizer';
|
|
1
2
|
import type { GridColumnApi } from "./gridColumnApi.js";
|
|
2
3
|
import type { GridColumnMenuApi } from "./gridColumnMenuApi.js";
|
|
3
4
|
import type { GridCoreApi, GridCorePrivateApi } from "./gridCoreApi.js";
|
|
@@ -31,5 +32,7 @@ import type { DataGridProcessedProps } from "../props/DataGridProps.js";
|
|
|
31
32
|
import type { GridColumnResizeApi } from "../../hooks/features/columnResize/index.js";
|
|
32
33
|
import type { GridPivotingPrivateApiCommunity } from "../../hooks/features/pivoting/gridPivotingInterfaces.js";
|
|
33
34
|
export interface GridApiCommon<GridState extends GridStateCommunity = any, GridInitialState extends GridInitialStateCommunity = any> extends GridCoreApi, GridPipeProcessingApi, GridDensityApi, GridDimensionsApi, GridRowApi, GridRowsMetaApi, GridEditingApi, GridParamsApi, GridColumnApi, GridRowSelectionApi, GridSortApi, GridPaginationApi, GridCsvExportApi, GridFocusApi, GridFilterApi, GridColumnMenuApi, GridPreferencesPanelApi, GridPrintExportApi, GridVirtualizationApi, GridLocaleTextApi, GridScrollApi, GridColumnSpanningApi, GridStateApi<GridState>, GridStatePersistenceApi<GridInitialState>, GridColumnGroupingApi, GridHeaderFilteringApi, GridColumnResizeApi {}
|
|
34
|
-
export interface GridPrivateOnlyApiCommon<Api extends GridApiCommon, PrivateApi extends GridPrivateApiCommon, Props extends DataGridProcessedProps> extends GridCorePrivateApi<Api, PrivateApi, Props>, GridStatePrivateApi<PrivateApi['state']>, GridPipeProcessingPrivateApi, GridStrategyProcessingApi, GridColumnSpanningPrivateApi, GridRowsMetaPrivateApi, GridDimensionsPrivateApi, GridEditingPrivateApi, GridLoggerApi, GridFocusPrivateApi, GridHeaderFilteringPrivateApi, GridVirtualizationPrivateApi, GridRowProPrivateApi, GridParamsPrivateApi, GridPivotingPrivateApiCommunity {
|
|
35
|
+
export interface GridPrivateOnlyApiCommon<Api extends GridApiCommon, PrivateApi extends GridPrivateApiCommon, Props extends DataGridProcessedProps> extends GridCorePrivateApi<Api, PrivateApi, Props>, GridStatePrivateApi<PrivateApi['state']>, GridPipeProcessingPrivateApi, GridStrategyProcessingApi, GridColumnSpanningPrivateApi, GridRowsMetaPrivateApi, GridDimensionsPrivateApi, GridEditingPrivateApi, GridLoggerApi, GridFocusPrivateApi, GridHeaderFilteringPrivateApi, GridVirtualizationPrivateApi, GridRowProPrivateApi, GridParamsPrivateApi, GridPivotingPrivateApiCommunity {
|
|
36
|
+
virtualizer: Virtualizer;
|
|
37
|
+
}
|
|
35
38
|
export interface GridPrivateApiCommon extends GridApiCommon, GridPrivateOnlyApiCommon<GridApiCommon, GridPrivateApiCommon, DataGridProcessedProps> {}
|
|
@@ -19,16 +19,10 @@ export interface GridColumnSpanningPrivateApi {
|
|
|
19
19
|
resetColSpan: () => void;
|
|
20
20
|
/**
|
|
21
21
|
* Calculate column spanning for each cell in the row
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {number}
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {GridStateColDef[]} options.columns List of columns to calculate colSpan for
|
|
22
|
+
* @param {GridRowId} rowId The row id
|
|
23
|
+
* @param {number} minFirstColumn First visible column index
|
|
24
|
+
* @param {number} maxLastColumn Last visible column index
|
|
25
|
+
* @param {GridStateColDef[]} columns List of columns to calculate colSpan for
|
|
27
26
|
*/
|
|
28
|
-
calculateColSpan: (
|
|
29
|
-
rowId: GridRowId;
|
|
30
|
-
minFirstColumn: number;
|
|
31
|
-
maxLastColumn: number;
|
|
32
|
-
columns: GridStateColDef[];
|
|
33
|
-
}) => void;
|
|
27
|
+
calculateColSpan: (rowId: GridRowId, minFirstColumn: number, maxLastColumn: number, columns: GridStateColDef[]) => void;
|
|
34
28
|
}
|
|
@@ -196,6 +196,11 @@ export interface DataGridPropsWithDefaultValues<R extends GridValidRowModel = an
|
|
|
196
196
|
* @default 150
|
|
197
197
|
*/
|
|
198
198
|
filterDebounceMs: number;
|
|
199
|
+
/**
|
|
200
|
+
* The milliseconds delay to wait after a keystroke before triggering filtering in the columns menu.
|
|
201
|
+
* @default 150
|
|
202
|
+
*/
|
|
203
|
+
columnFilterDebounceMs: number;
|
|
199
204
|
/**
|
|
200
205
|
* Sets the height in pixel of the column headers in the Data Grid.
|
|
201
206
|
* @default 56
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { roundToDecimalPlaces } from '@mui/x-internals/math';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RefObject } from '@mui/x-internals/types';
|
|
2
|
+
import { GridPrivateApiCommunity } from "../../models/api/gridApiCommunity.js";
|
|
3
|
+
import { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
|
|
4
|
+
type RootProps = DataGridProcessedProps;
|
|
5
|
+
/**
|
|
6
|
+
* Virtualizer setup
|
|
7
|
+
*/
|
|
8
|
+
export declare function useGridVirtualizer(apiRef: RefObject<GridPrivateApiCommunity>, rootProps: RootProps): void;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,231 @@
|
|
|
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.useGridVirtualizer = useGridVirtualizer;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
|
+
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
13
|
+
var _math = require("@mui/x-internals/math");
|
|
14
|
+
var _store = require("@mui/x-internals/store");
|
|
15
|
+
var _xVirtualizer = require("@mui/x-virtualizer");
|
|
16
|
+
var _useFirstRender = require("../utils/useFirstRender");
|
|
17
|
+
var _createSelector = require("../../utils/createSelector");
|
|
18
|
+
var _useGridSelector = require("../utils/useGridSelector");
|
|
19
|
+
var _gridDimensionsSelectors = require("../features/dimensions/gridDimensionsSelectors");
|
|
20
|
+
var _density = require("../features/density");
|
|
21
|
+
var _gridColumnsSelector = require("../features/columns/gridColumnsSelector");
|
|
22
|
+
var _gridRowsSelector = require("../features/rows/gridRowsSelector");
|
|
23
|
+
var _useGridVisibleRows = require("../utils/useGridVisibleRows");
|
|
24
|
+
var _pagination = require("../features/pagination");
|
|
25
|
+
var _gridFocusedVirtualCellSelector = require("../features/virtualization/gridFocusedVirtualCellSelector");
|
|
26
|
+
var _rowSelection = require("../features/rowSelection");
|
|
27
|
+
var _dataGridPropsDefaultValues = require("../../constants/dataGridPropsDefaultValues");
|
|
28
|
+
var _gridRowsUtils = require("../features/rows/gridRowsUtils");
|
|
29
|
+
var _gridColumnsUtils = require("../features/columns/gridColumnsUtils");
|
|
30
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
|
+
function identity(x) {
|
|
32
|
+
return x;
|
|
33
|
+
}
|
|
34
|
+
const columnsTotalWidthSelector = (0, _createSelector.createSelector)(_gridColumnsSelector.gridVisibleColumnDefinitionsSelector, _gridColumnsSelector.gridColumnPositionsSelector, (visibleColumns, positions) => {
|
|
35
|
+
const colCount = visibleColumns.length;
|
|
36
|
+
if (colCount === 0) {
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
return (0, _math.roundToDecimalPlaces)(positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth, 1);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Virtualizer setup
|
|
44
|
+
*/
|
|
45
|
+
function useGridVirtualizer(apiRef, rootProps) {
|
|
46
|
+
const isRtl = (0, _RtlProvider.useRtl)();
|
|
47
|
+
const {
|
|
48
|
+
listView
|
|
49
|
+
} = rootProps;
|
|
50
|
+
const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
|
|
51
|
+
const pinnedRows = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridPinnedRowsSelector);
|
|
52
|
+
const pinnedColumns = (0, _gridColumnsSelector.gridVisiblePinnedColumnDefinitionsSelector)(apiRef);
|
|
53
|
+
const rowSelectionManager = (0, _useGridSelector.useGridSelector)(apiRef, _rowSelection.gridRowSelectionManagerSelector);
|
|
54
|
+
const isRowSelected = id => rowSelectionManager.has(id) && apiRef.current.isRowSelectable(id);
|
|
55
|
+
const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef);
|
|
56
|
+
const hasColSpan = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridHasColSpanSelector);
|
|
57
|
+
|
|
58
|
+
/* TODO: extract dimensions code */
|
|
59
|
+
const contentHeight = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridContentHeightSelector);
|
|
60
|
+
const verticalScrollbarWidth = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridVerticalScrollbarWidthSelector);
|
|
61
|
+
const hasFiller = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasFillerSelector);
|
|
62
|
+
const {
|
|
63
|
+
autoHeight
|
|
64
|
+
} = rootProps;
|
|
65
|
+
const scrollReset = listView;
|
|
66
|
+
|
|
67
|
+
// <DIMENSIONS>
|
|
68
|
+
const density = (0, _useGridSelector.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
|
|
69
|
+
const baseRowHeight = (0, _gridRowsUtils.getValidRowHeight)(rootProps.rowHeight, _dataGridPropsDefaultValues.DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, _gridRowsUtils.rowHeightWarning);
|
|
70
|
+
const rowHeight = Math.floor(baseRowHeight * density);
|
|
71
|
+
const headerHeight = Math.floor(rootProps.columnHeaderHeight * density);
|
|
72
|
+
const groupHeaderHeight = Math.floor((rootProps.columnGroupHeaderHeight ?? rootProps.columnHeaderHeight) * density);
|
|
73
|
+
const headerFilterHeight = Math.floor((rootProps.headerFilterHeight ?? rootProps.columnHeaderHeight) * density);
|
|
74
|
+
const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, columnsTotalWidthSelector);
|
|
75
|
+
const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, rootProps);
|
|
76
|
+
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
77
|
+
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
78
|
+
const dimensions = {
|
|
79
|
+
rowHeight,
|
|
80
|
+
headerHeight,
|
|
81
|
+
groupHeaderHeight,
|
|
82
|
+
headerFilterHeight,
|
|
83
|
+
columnsTotalWidth,
|
|
84
|
+
headersTotalHeight,
|
|
85
|
+
leftPinnedWidth,
|
|
86
|
+
rightPinnedWidth
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// </DIMENSIONS>
|
|
90
|
+
|
|
91
|
+
// <ROWS_META>
|
|
92
|
+
const dataRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowCountSelector);
|
|
93
|
+
const pagination = (0, _useGridSelector.useGridSelector)(apiRef, _pagination.gridPaginationSelector);
|
|
94
|
+
const rowCount = Math.min(pagination.enabled ? pagination.paginationModel.pageSize : dataRowCount, dataRowCount);
|
|
95
|
+
const {
|
|
96
|
+
getRowHeight,
|
|
97
|
+
getEstimatedRowHeight,
|
|
98
|
+
getRowSpacing
|
|
99
|
+
} = rootProps;
|
|
100
|
+
// </ROWS_META>
|
|
101
|
+
|
|
102
|
+
const focusedVirtualCell = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusedVirtualCellSelector.gridFocusedVirtualCellSelector);
|
|
103
|
+
const virtualizer = (0, _xVirtualizer.useVirtualizer)({
|
|
104
|
+
scrollbarSize: rootProps.scrollbarSize,
|
|
105
|
+
dimensions,
|
|
106
|
+
initialState: {
|
|
107
|
+
scroll: rootProps.initialState?.scroll,
|
|
108
|
+
dimensions: apiRef.current.state.dimensions,
|
|
109
|
+
rowSpanning: apiRef.current.state.rowSpanning,
|
|
110
|
+
virtualization: apiRef.current.state.virtualization
|
|
111
|
+
},
|
|
112
|
+
isRtl,
|
|
113
|
+
rows: currentPage.rows,
|
|
114
|
+
range: currentPage.range,
|
|
115
|
+
rowIdToIndexMap: currentPage.rowIdToIndexMap,
|
|
116
|
+
rowCount,
|
|
117
|
+
columns: visibleColumns,
|
|
118
|
+
pinnedRows,
|
|
119
|
+
pinnedColumns,
|
|
120
|
+
refs: {
|
|
121
|
+
container: apiRef.current.mainElementRef,
|
|
122
|
+
scroller: apiRef.current.virtualScrollerRef,
|
|
123
|
+
scrollbarVertical: apiRef.current.virtualScrollbarVerticalRef,
|
|
124
|
+
scrollbarHorizontal: apiRef.current.virtualScrollbarHorizontalRef
|
|
125
|
+
},
|
|
126
|
+
hasColSpan,
|
|
127
|
+
contentHeight,
|
|
128
|
+
minimalContentHeight: _gridRowsUtils.minimalContentHeight,
|
|
129
|
+
autoHeight,
|
|
130
|
+
getRowHeight: React.useMemo(() => {
|
|
131
|
+
if (!getRowHeight) {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
return rowEntry => getRowHeight((0, _extends2.default)({}, rowEntry, {
|
|
135
|
+
densityFactor: density
|
|
136
|
+
}));
|
|
137
|
+
}, [getRowHeight, density]),
|
|
138
|
+
getEstimatedRowHeight: React.useMemo(() => getEstimatedRowHeight ? rowEntry => getEstimatedRowHeight((0, _extends2.default)({}, rowEntry, {
|
|
139
|
+
densityFactor: density
|
|
140
|
+
})) : undefined, [getEstimatedRowHeight, density]),
|
|
141
|
+
getRowSpacing: React.useMemo(() => getRowSpacing ? (rowEntry, visibility) => getRowSpacing((0, _extends2.default)({}, rowEntry, visibility, {
|
|
142
|
+
indexRelativeToCurrentPage: apiRef.current.getRowIndexRelativeToVisibleRows(rowEntry.id)
|
|
143
|
+
})) : undefined, [apiRef, getRowSpacing]),
|
|
144
|
+
applyRowHeight: (0, _useEventCallback.default)((entry, row) => apiRef.current.unstable_applyPipeProcessors('rowHeight', entry, row)),
|
|
145
|
+
virtualizeColumnsWithAutoRowHeight: rootProps.virtualizeColumnsWithAutoRowHeight,
|
|
146
|
+
focusedVirtualCell: (0, _useEventCallback.default)(() => focusedVirtualCell),
|
|
147
|
+
rowBufferPx: rootProps.rowBufferPx,
|
|
148
|
+
columnBufferPx: rootProps.columnBufferPx,
|
|
149
|
+
resizeThrottleMs: rootProps.resizeThrottleMs,
|
|
150
|
+
onResize: (0, _useEventCallback.default)(size => apiRef.current.publishEvent('resize', size)),
|
|
151
|
+
onWheel: (0, _useEventCallback.default)(event => {
|
|
152
|
+
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
153
|
+
}),
|
|
154
|
+
onTouchMove: (0, _useEventCallback.default)(event => {
|
|
155
|
+
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
156
|
+
}),
|
|
157
|
+
onRenderContextChange: (0, _useEventCallback.default)(nextRenderContext => {
|
|
158
|
+
apiRef.current.publishEvent('renderedRowsIntervalChange', nextRenderContext);
|
|
159
|
+
}),
|
|
160
|
+
onScrollChange: (scrollPosition, nextRenderContext) => {
|
|
161
|
+
apiRef.current.publishEvent('scrollPositionChange', {
|
|
162
|
+
top: scrollPosition.top,
|
|
163
|
+
left: scrollPosition.left,
|
|
164
|
+
renderContext: nextRenderContext
|
|
165
|
+
});
|
|
166
|
+
},
|
|
167
|
+
scrollReset,
|
|
168
|
+
getColspan: (rowId, column) => {
|
|
169
|
+
if (typeof column.colSpan === 'function') {
|
|
170
|
+
const row = apiRef.current.getRow(rowId);
|
|
171
|
+
const value = apiRef.current.getRowValue(row, column);
|
|
172
|
+
return column.colSpan(value, row, column, apiRef) ?? 0;
|
|
173
|
+
}
|
|
174
|
+
return column.colSpan ?? 0;
|
|
175
|
+
},
|
|
176
|
+
renderRow: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.row, (0, _extends2.default)({
|
|
177
|
+
row: params.model,
|
|
178
|
+
rowId: params.id,
|
|
179
|
+
index: params.rowIndex,
|
|
180
|
+
selected: isRowSelected(params.id),
|
|
181
|
+
offsetLeft: params.offsetLeft,
|
|
182
|
+
columnsTotalWidth: columnsTotalWidth,
|
|
183
|
+
rowHeight: params.baseRowHeight,
|
|
184
|
+
pinnedColumns: pinnedColumns,
|
|
185
|
+
visibleColumns: params.columns,
|
|
186
|
+
firstColumnIndex: params.firstColumnIndex,
|
|
187
|
+
lastColumnIndex: params.lastColumnIndex,
|
|
188
|
+
focusedColumnIndex: params.focusedColumnIndex,
|
|
189
|
+
isFirstVisible: params.isFirstVisible,
|
|
190
|
+
isLastVisible: params.isLastVisible,
|
|
191
|
+
isNotVisible: params.isVirtualFocusRow,
|
|
192
|
+
showBottomBorder: params.showBottomBorder,
|
|
193
|
+
scrollbarWidth: verticalScrollbarWidth,
|
|
194
|
+
gridHasFiller: hasFiller
|
|
195
|
+
}, rootProps.slotProps?.row), params.id),
|
|
196
|
+
renderInfiniteLoadingTrigger: id => apiRef.current.getInfiniteLoadingTriggerElement?.({
|
|
197
|
+
lastRowId: id
|
|
198
|
+
})
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// HACK: Keep the grid's store in sync with the virtualizer store. We set up the
|
|
202
|
+
// subscription in the render phase rather than in an effect because other grid
|
|
203
|
+
// initialization code runs between those two moments.
|
|
204
|
+
//
|
|
205
|
+
// TODO(v9): Remove this
|
|
206
|
+
(0, _useFirstRender.useFirstRender)(() => {
|
|
207
|
+
apiRef.current.store.state.dimensions = virtualizer.store.state.dimensions;
|
|
208
|
+
apiRef.current.store.state.rowsMeta = virtualizer.store.state.rowsMeta;
|
|
209
|
+
apiRef.current.store.state.virtualization = virtualizer.store.state.virtualization;
|
|
210
|
+
});
|
|
211
|
+
(0, _store.useStoreEffect)(virtualizer.store, identity, (_, state) => {
|
|
212
|
+
if (state.dimensions !== apiRef.current.state.dimensions) {
|
|
213
|
+
apiRef.current.setState(gridState => (0, _extends2.default)({}, gridState, {
|
|
214
|
+
dimensions: state.dimensions
|
|
215
|
+
}));
|
|
216
|
+
}
|
|
217
|
+
if (state.rowsMeta !== apiRef.current.state.rowsMeta) {
|
|
218
|
+
apiRef.current.setState(gridState => (0, _extends2.default)({}, gridState, {
|
|
219
|
+
rowsMeta: state.rowsMeta
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
if (state.virtualization !== apiRef.current.state.virtualization) {
|
|
223
|
+
apiRef.current.setState(gridState => (0, _extends2.default)({}, gridState, {
|
|
224
|
+
virtualization: state.virtualization
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
apiRef.current.register('private', {
|
|
229
|
+
virtualizer
|
|
230
|
+
});
|
|
231
|
+
}
|
|
@@ -31,7 +31,7 @@ export interface GetHeadersParams {
|
|
|
31
31
|
type OwnerState = DataGridProcessedProps;
|
|
32
32
|
export declare const GridColumnHeaderRow: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
33
33
|
ownerState: OwnerState;
|
|
34
|
-
}, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.
|
|
34
|
+
}, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
35
35
|
export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) => {
|
|
36
36
|
renderContext: GridColumnsRenderContext;
|
|
37
37
|
leftRenderContext: {
|
|
@@ -11,6 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
13
|
var _styles = require("@mui/material/styles");
|
|
14
|
+
var _xVirtualizer = require("@mui/x-virtualizer");
|
|
14
15
|
var _utils = require("../../utils");
|
|
15
16
|
var _useGridRootProps = require("../../utils/useGridRootProps");
|
|
16
17
|
var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
|
|
@@ -18,7 +19,6 @@ var _useGridEvent = require("../../utils/useGridEvent");
|
|
|
18
19
|
var _GridColumnHeaderItem = require("../../../components/columnHeaders/GridColumnHeaderItem");
|
|
19
20
|
var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
|
|
20
21
|
var _virtualization = require("../virtualization");
|
|
21
|
-
var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller");
|
|
22
22
|
var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
|
|
23
23
|
var _columns = require("../columns");
|
|
24
24
|
var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
|
|
@@ -59,7 +59,7 @@ const useGridColumnHeaders = props => {
|
|
|
59
59
|
const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
|
|
60
60
|
const pinnedColumns = (0, _utils.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
|
|
61
61
|
const columnsLookup = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnLookupSelector);
|
|
62
|
-
const offsetLeft = (0,
|
|
62
|
+
const offsetLeft = (0, _xVirtualizer.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length);
|
|
63
63
|
const columnsTotalWidth = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridColumnsTotalWidthSelector);
|
|
64
64
|
const gridHasFiller = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasFillerSelector);
|
|
65
65
|
const headerHeight = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHeaderHeightSelector);
|
|
@@ -92,7 +92,8 @@ const useGridColumnHeaders = props => {
|
|
|
92
92
|
renderContext: currentContext = renderContext
|
|
93
93
|
} = params || {};
|
|
94
94
|
const firstColumnToRender = currentContext.firstColumnIndex;
|
|
95
|
-
|
|
95
|
+
// HACK: renderContext ins't always synchronized, this should be handled properly.
|
|
96
|
+
const lastColumnToRender = Math.min(currentContext.lastColumnIndex, visibleColumns.length);
|
|
96
97
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
97
98
|
return {
|
|
98
99
|
renderedColumns,
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.useGridColumnSpanning = void 0;
|
|
8
|
-
var React = _interopRequireWildcard(require("react"));
|
|
9
7
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
10
8
|
var _useGridEvent = require("../../utils/useGridEvent");
|
|
11
9
|
/**
|
|
@@ -13,36 +11,10 @@ var _useGridEvent = require("../../utils/useGridEvent");
|
|
|
13
11
|
* @requires useGridParamsApi (method)
|
|
14
12
|
*/
|
|
15
13
|
const useGridColumnSpanning = apiRef => {
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const resetColSpan = () => {
|
|
21
|
-
lookup.current = {};
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Calculate `colSpan` for each cell in the row
|
|
25
|
-
const calculateColSpan = React.useCallback(({
|
|
26
|
-
rowId,
|
|
27
|
-
minFirstColumn,
|
|
28
|
-
maxLastColumn,
|
|
29
|
-
columns
|
|
30
|
-
}) => {
|
|
31
|
-
for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
|
|
32
|
-
const cellProps = calculateCellColSpan({
|
|
33
|
-
apiRef,
|
|
34
|
-
lookup: lookup.current,
|
|
35
|
-
columnIndex: i,
|
|
36
|
-
rowId,
|
|
37
|
-
minFirstColumnIndex: minFirstColumn,
|
|
38
|
-
maxLastColumnIndex: maxLastColumn,
|
|
39
|
-
columns
|
|
40
|
-
});
|
|
41
|
-
if (cellProps.colSpan > 1) {
|
|
42
|
-
i += cellProps.colSpan - 1;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}, [apiRef]);
|
|
14
|
+
const virtualizer = apiRef.current.virtualizer;
|
|
15
|
+
const resetColSpan = virtualizer.api.resetColSpan;
|
|
16
|
+
const getCellColSpanInfo = virtualizer.api.getCellColSpanInfo;
|
|
17
|
+
const calculateColSpan = virtualizer.api.calculateColSpan;
|
|
46
18
|
const columnSpanningPublicApi = {
|
|
47
19
|
unstable_getCellColSpanInfo: getCellColSpanInfo
|
|
48
20
|
};
|
|
@@ -54,62 +26,4 @@ const useGridColumnSpanning = apiRef => {
|
|
|
54
26
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, columnSpanningPrivateApi, 'private');
|
|
55
27
|
(0, _useGridEvent.useGridEvent)(apiRef, 'columnOrderChange', resetColSpan);
|
|
56
28
|
};
|
|
57
|
-
exports.useGridColumnSpanning = useGridColumnSpanning;
|
|
58
|
-
function calculateCellColSpan(params) {
|
|
59
|
-
const {
|
|
60
|
-
apiRef,
|
|
61
|
-
lookup,
|
|
62
|
-
columnIndex,
|
|
63
|
-
rowId,
|
|
64
|
-
minFirstColumnIndex,
|
|
65
|
-
maxLastColumnIndex,
|
|
66
|
-
columns
|
|
67
|
-
} = params;
|
|
68
|
-
const columnsLength = columns.length;
|
|
69
|
-
const column = columns[columnIndex];
|
|
70
|
-
const row = apiRef.current.getRow(rowId);
|
|
71
|
-
const value = apiRef.current.getRowValue(row, column);
|
|
72
|
-
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(value, row, column, apiRef) : column.colSpan;
|
|
73
|
-
if (!colSpan || colSpan === 1) {
|
|
74
|
-
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
75
|
-
spannedByColSpan: false,
|
|
76
|
-
cellProps: {
|
|
77
|
-
colSpan: 1,
|
|
78
|
-
width: column.computedWidth
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return {
|
|
82
|
-
colSpan: 1
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
let width = column.computedWidth;
|
|
86
|
-
for (let j = 1; j < colSpan; j += 1) {
|
|
87
|
-
const nextColumnIndex = columnIndex + j;
|
|
88
|
-
// Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
89
|
-
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
90
|
-
const nextColumn = columns[nextColumnIndex];
|
|
91
|
-
width += nextColumn.computedWidth;
|
|
92
|
-
setCellColSpanInfo(lookup, rowId, columnIndex + j, {
|
|
93
|
-
spannedByColSpan: true,
|
|
94
|
-
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
95
|
-
leftVisibleCellIndex: columnIndex
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
99
|
-
spannedByColSpan: false,
|
|
100
|
-
cellProps: {
|
|
101
|
-
colSpan,
|
|
102
|
-
width
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
return {
|
|
107
|
-
colSpan
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function setCellColSpanInfo(lookup, rowId, columnIndex, cellColSpanInfo) {
|
|
111
|
-
if (!lookup[rowId]) {
|
|
112
|
-
lookup[rowId] = {};
|
|
113
|
-
}
|
|
114
|
-
lookup[rowId][columnIndex] = cellColSpanInfo;
|
|
115
|
-
}
|
|
29
|
+
exports.useGridColumnSpanning = useGridColumnSpanning;
|