@mui/x-data-grid 7.16.0 → 7.18.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 +184 -4
- package/DataGrid/DataGrid.js +11 -1
- package/DataGrid/useDataGridComponent.js +3 -0
- package/DataGrid/useDataGridProps.js +2 -1
- package/colDef/gridStringOperators.js +49 -33
- package/components/GridRow.js +1 -0
- package/components/cell/GridCell.js +30 -5
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +9 -2
- package/components/columnHeaders/GridColumnHeaderTitle.js +3 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +1 -2
- package/components/containers/GridRootStyles.js +3 -7
- package/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/constants/gridClasses.d.ts +10 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +4 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +17 -12
- package/hooks/features/columnResize/useGridColumnResize.js +6 -6
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +4 -0
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +4 -1
- package/hooks/features/editing/useGridCellEditing.js +3 -19
- package/hooks/features/editing/useGridRowEditing.js +7 -2
- package/hooks/features/editing/utils.d.ts +2 -0
- package/hooks/features/editing/utils.js +15 -0
- package/hooks/features/export/serializers/csvSerializer.js +1 -1
- package/hooks/features/export/useGridPrintExport.js +2 -1
- package/hooks/features/filter/gridFilterUtils.js +1 -1
- package/hooks/features/focus/useGridFocus.js +2 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +10 -46
- package/hooks/features/keyboardNavigation/utils.d.ts +17 -0
- package/hooks/features/keyboardNavigation/utils.js +58 -0
- package/hooks/features/rows/gridRowSpanningSelectors.d.ts +4 -0
- package/hooks/features/rows/gridRowSpanningSelectors.js +5 -0
- package/hooks/features/rows/gridRowSpanningUtils.d.ts +10 -0
- package/hooks/features/rows/gridRowSpanningUtils.js +42 -0
- package/hooks/features/rows/useGridRowSpanning.d.ts +27 -0
- package/hooks/features/rows/useGridRowSpanning.js +257 -0
- package/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
- package/hooks/utils/useGridApiEventHandler.js +0 -1
- package/hooks/utils/useGridSelector.js +1 -1
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/utils/index.d.ts +0 -1
- package/internals/utils/index.js +1 -2
- package/internals/utils/propValidation.js +1 -1
- package/locales/arSD.js +4 -0
- package/locales/beBY.js +4 -0
- package/locales/bgBG.js +4 -0
- package/locales/csCZ.js +4 -0
- package/locales/daDK.js +4 -0
- package/locales/deDE.js +4 -0
- package/locales/elGR.js +4 -0
- package/locales/esES.js +4 -0
- package/locales/faIR.js +4 -0
- package/locales/fiFI.js +4 -0
- package/locales/frFR.js +4 -0
- package/locales/heIL.js +4 -0
- package/locales/hrHR.js +4 -0
- package/locales/huHU.js +11 -8
- package/locales/isIS.js +4 -0
- package/locales/itIT.js +4 -0
- package/locales/jaJP.js +4 -0
- package/locales/koKR.js +4 -0
- package/locales/nbNO.js +4 -0
- package/locales/nlNL.js +4 -0
- package/locales/nnNO.js +4 -0
- package/locales/plPL.js +4 -0
- package/locales/ptBR.js +4 -0
- package/locales/ptPT.js +4 -0
- package/locales/roRO.js +4 -0
- package/locales/ruRU.js +4 -0
- package/locales/skSK.js +4 -0
- package/locales/svSE.js +4 -0
- package/locales/trTR.js +4 -0
- package/locales/ukUA.js +4 -0
- package/locales/urPK.js +4 -0
- package/locales/viVN.js +4 -0
- package/locales/zhCN.js +4 -0
- package/locales/zhHK.js +4 -0
- package/locales/zhTW.js +4 -0
- package/models/api/gridLocaleTextApi.d.ts +4 -0
- package/models/colDef/gridColDef.d.ts +4 -0
- package/models/gridStateCommunity.d.ts +2 -0
- package/models/props/DataGridProps.d.ts +10 -0
- package/modern/DataGrid/DataGrid.js +11 -1
- package/modern/DataGrid/useDataGridComponent.js +3 -0
- package/modern/DataGrid/useDataGridProps.js +2 -1
- package/modern/colDef/gridStringOperators.js +49 -33
- package/modern/components/GridRow.js +1 -0
- package/modern/components/cell/GridCell.js +30 -5
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +9 -2
- package/modern/components/columnHeaders/GridColumnHeaderTitle.js +3 -1
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +1 -2
- package/modern/components/containers/GridRootStyles.js +3 -7
- package/modern/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +4 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +17 -12
- package/modern/hooks/features/columnResize/useGridColumnResize.js +6 -6
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -1
- package/modern/hooks/features/editing/useGridCellEditing.js +3 -19
- package/modern/hooks/features/editing/useGridRowEditing.js +7 -2
- package/modern/hooks/features/editing/utils.js +15 -0
- package/modern/hooks/features/export/serializers/csvSerializer.js +1 -1
- package/modern/hooks/features/export/useGridPrintExport.js +2 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
- package/modern/hooks/features/focus/useGridFocus.js +2 -1
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +10 -46
- package/modern/hooks/features/keyboardNavigation/utils.js +58 -0
- package/modern/hooks/features/rows/gridRowSpanningSelectors.js +5 -0
- package/modern/hooks/features/rows/gridRowSpanningUtils.js +42 -0
- package/modern/hooks/features/rows/useGridRowSpanning.js +257 -0
- package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
- package/modern/hooks/utils/useGridApiEventHandler.js +0 -1
- package/modern/hooks/utils/useGridSelector.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -0
- package/modern/internals/utils/index.js +1 -2
- package/modern/internals/utils/propValidation.js +1 -1
- package/modern/locales/arSD.js +4 -0
- package/modern/locales/beBY.js +4 -0
- package/modern/locales/bgBG.js +4 -0
- package/modern/locales/csCZ.js +4 -0
- package/modern/locales/daDK.js +4 -0
- package/modern/locales/deDE.js +4 -0
- package/modern/locales/elGR.js +4 -0
- package/modern/locales/esES.js +4 -0
- package/modern/locales/faIR.js +4 -0
- package/modern/locales/fiFI.js +4 -0
- package/modern/locales/frFR.js +4 -0
- package/modern/locales/heIL.js +4 -0
- package/modern/locales/hrHR.js +4 -0
- package/modern/locales/huHU.js +11 -8
- package/modern/locales/isIS.js +4 -0
- package/modern/locales/itIT.js +4 -0
- package/modern/locales/jaJP.js +4 -0
- package/modern/locales/koKR.js +4 -0
- package/modern/locales/nbNO.js +4 -0
- package/modern/locales/nlNL.js +4 -0
- package/modern/locales/nnNO.js +4 -0
- package/modern/locales/plPL.js +4 -0
- package/modern/locales/ptBR.js +4 -0
- package/modern/locales/ptPT.js +4 -0
- package/modern/locales/roRO.js +4 -0
- package/modern/locales/ruRU.js +4 -0
- package/modern/locales/skSK.js +4 -0
- package/modern/locales/svSE.js +4 -0
- package/modern/locales/trTR.js +4 -0
- package/modern/locales/ukUA.js +4 -0
- package/modern/locales/urPK.js +4 -0
- package/modern/locales/viVN.js +4 -0
- package/modern/locales/zhCN.js +4 -0
- package/modern/locales/zhHK.js +4 -0
- package/modern/locales/zhTW.js +4 -0
- package/modern/utils/createSelector.js +1 -1
- package/modern/utils/domUtils.js +12 -12
- package/node/DataGrid/DataGrid.js +11 -1
- package/node/DataGrid/useDataGridComponent.js +3 -0
- package/node/DataGrid/useDataGridProps.js +2 -1
- package/node/colDef/gridStringOperators.js +49 -33
- package/node/components/GridRow.js +1 -0
- package/node/components/cell/GridCell.js +30 -5
- package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -2
- package/node/components/columnHeaders/GridColumnHeaderTitle.js +3 -1
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +1 -2
- package/node/components/containers/GridRootStyles.js +3 -7
- package/node/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +4 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +17 -12
- package/node/hooks/features/columnResize/useGridColumnResize.js +6 -6
- package/node/hooks/features/dimensions/useGridDimensions.js +4 -1
- package/node/hooks/features/editing/useGridCellEditing.js +3 -19
- package/node/hooks/features/editing/useGridRowEditing.js +7 -2
- package/node/hooks/features/editing/utils.js +22 -0
- package/node/hooks/features/export/serializers/csvSerializer.js +1 -1
- package/node/hooks/features/export/useGridPrintExport.js +2 -1
- package/node/hooks/features/filter/gridFilterUtils.js +1 -1
- package/node/hooks/features/focus/useGridFocus.js +2 -1
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +16 -53
- package/node/hooks/features/keyboardNavigation/utils.js +68 -0
- package/node/hooks/features/rows/gridRowSpanningSelectors.js +11 -0
- package/node/hooks/features/rows/gridRowSpanningUtils.js +52 -0
- package/node/hooks/features/rows/useGridRowSpanning.js +267 -0
- package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
- package/node/hooks/utils/useGridApiEventHandler.js +0 -1
- package/node/hooks/utils/useGridSelector.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/index.js +15 -0
- package/node/internals/utils/index.js +0 -11
- package/node/internals/utils/propValidation.js +1 -1
- package/node/locales/arSD.js +4 -0
- package/node/locales/beBY.js +4 -0
- package/node/locales/bgBG.js +4 -0
- package/node/locales/csCZ.js +4 -0
- package/node/locales/daDK.js +4 -0
- package/node/locales/deDE.js +4 -0
- package/node/locales/elGR.js +4 -0
- package/node/locales/esES.js +4 -0
- package/node/locales/faIR.js +4 -0
- package/node/locales/fiFI.js +4 -0
- package/node/locales/frFR.js +4 -0
- package/node/locales/heIL.js +4 -0
- package/node/locales/hrHR.js +4 -0
- package/node/locales/huHU.js +11 -8
- package/node/locales/isIS.js +4 -0
- package/node/locales/itIT.js +4 -0
- package/node/locales/jaJP.js +4 -0
- package/node/locales/koKR.js +4 -0
- package/node/locales/nbNO.js +4 -0
- package/node/locales/nlNL.js +4 -0
- package/node/locales/nnNO.js +4 -0
- package/node/locales/plPL.js +4 -0
- package/node/locales/ptBR.js +4 -0
- package/node/locales/ptPT.js +4 -0
- package/node/locales/roRO.js +4 -0
- package/node/locales/ruRU.js +4 -0
- package/node/locales/skSK.js +4 -0
- package/node/locales/svSE.js +4 -0
- package/node/locales/trTR.js +4 -0
- package/node/locales/ukUA.js +4 -0
- package/node/locales/urPK.js +4 -0
- package/node/locales/viVN.js +4 -0
- package/node/locales/zhCN.js +4 -0
- package/node/locales/zhHK.js +4 -0
- package/node/locales/zhTW.js +4 -0
- package/node/utils/createSelector.js +1 -1
- package/node/utils/domUtils.js +12 -12
- package/package.json +3 -3
- package/utils/createSelector.js +1 -1
- package/utils/domUtils.d.ts +4 -4
- package/utils/domUtils.js +12 -12
- package/internals/utils/warning.d.ts +0 -2
- package/internals/utils/warning.js +0 -21
- package/modern/internals/utils/warning.js +0 -21
- package/node/internals/utils/warning.js +0 -28
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import useLazyRef from '@mui/utils/useLazyRef';
|
|
4
|
+
import { gridVisibleColumnDefinitionsSelector } from "../columns/gridColumnsSelector.js";
|
|
5
|
+
import { useGridVisibleRows } from "../../utils/useGridVisibleRows.js";
|
|
6
|
+
import { gridRenderContextSelector } from "../virtualization/gridVirtualizationSelectors.js";
|
|
7
|
+
import { useGridSelector } from "../../utils/useGridSelector.js";
|
|
8
|
+
import { getUnprocessedRange, isRowRangeUpdated, isRowContextInitialized, getCellValue } from "./gridRowSpanningUtils.js";
|
|
9
|
+
const EMPTY_STATE = {
|
|
10
|
+
spannedCells: {},
|
|
11
|
+
hiddenCells: {},
|
|
12
|
+
hiddenCellOriginMap: {}
|
|
13
|
+
};
|
|
14
|
+
const EMPTY_RANGE = {
|
|
15
|
+
firstRowIndex: 0,
|
|
16
|
+
lastRowIndex: 0
|
|
17
|
+
};
|
|
18
|
+
const skippedFields = new Set(['__check__', '__reorder__', '__detail_panel_toggle__']);
|
|
19
|
+
/**
|
|
20
|
+
* Default number of rows to process during state initialization to avoid flickering.
|
|
21
|
+
* Number `20` is arbitrarily chosen to be large enough to cover most of the cases without
|
|
22
|
+
* compromising performance.
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_ROWS_TO_PROCESS = 20;
|
|
25
|
+
const computeRowSpanningState = (apiRef, colDefs, visibleRows, range, rangeToProcess, resetState, processedRange) => {
|
|
26
|
+
const spannedCells = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.spannedCells);
|
|
27
|
+
const hiddenCells = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.hiddenCells);
|
|
28
|
+
const hiddenCellOriginMap = resetState ? {} : _extends({}, apiRef.current.state.rowSpanning.hiddenCellOriginMap);
|
|
29
|
+
if (resetState) {
|
|
30
|
+
processedRange = EMPTY_RANGE;
|
|
31
|
+
}
|
|
32
|
+
colDefs.forEach(colDef => {
|
|
33
|
+
if (skippedFields.has(colDef.field)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (let index = rangeToProcess.firstRowIndex; index <= rangeToProcess.lastRowIndex; index += 1) {
|
|
37
|
+
const row = visibleRows[index];
|
|
38
|
+
if (hiddenCells[row.id]?.[colDef.field]) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const cellValue = getCellValue(row.model, colDef, apiRef);
|
|
42
|
+
if (cellValue == null) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
let spannedRowId = row.id;
|
|
46
|
+
let spannedRowIndex = index;
|
|
47
|
+
let rowSpan = 0;
|
|
48
|
+
|
|
49
|
+
// For first index, also scan in the previous rows to handle the reset state case e.g by sorting
|
|
50
|
+
const backwardsHiddenCells = [];
|
|
51
|
+
if (index === rangeToProcess.firstRowIndex) {
|
|
52
|
+
let prevIndex = index - 1;
|
|
53
|
+
const prevRowEntry = visibleRows[prevIndex];
|
|
54
|
+
while (prevIndex >= range.firstRowIndex && getCellValue(prevRowEntry.model, colDef, apiRef) === cellValue) {
|
|
55
|
+
const currentRow = visibleRows[prevIndex + 1];
|
|
56
|
+
if (hiddenCells[currentRow.id]) {
|
|
57
|
+
hiddenCells[currentRow.id][colDef.field] = true;
|
|
58
|
+
} else {
|
|
59
|
+
hiddenCells[currentRow.id] = {
|
|
60
|
+
[colDef.field]: true
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
backwardsHiddenCells.push(index);
|
|
64
|
+
rowSpan += 1;
|
|
65
|
+
spannedRowId = prevRowEntry.id;
|
|
66
|
+
spannedRowIndex = prevIndex;
|
|
67
|
+
prevIndex -= 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
backwardsHiddenCells.forEach(hiddenCellIndex => {
|
|
71
|
+
if (hiddenCellOriginMap[hiddenCellIndex]) {
|
|
72
|
+
hiddenCellOriginMap[hiddenCellIndex][colDef.field] = spannedRowIndex;
|
|
73
|
+
} else {
|
|
74
|
+
hiddenCellOriginMap[hiddenCellIndex] = {
|
|
75
|
+
[colDef.field]: spannedRowIndex
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Scan the next rows
|
|
81
|
+
let relativeIndex = index + 1;
|
|
82
|
+
while (relativeIndex <= range.lastRowIndex && visibleRows[relativeIndex] && getCellValue(visibleRows[relativeIndex].model, colDef, apiRef) === cellValue) {
|
|
83
|
+
const currentRow = visibleRows[relativeIndex];
|
|
84
|
+
if (hiddenCells[currentRow.id]) {
|
|
85
|
+
hiddenCells[currentRow.id][colDef.field] = true;
|
|
86
|
+
} else {
|
|
87
|
+
hiddenCells[currentRow.id] = {
|
|
88
|
+
[colDef.field]: true
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (hiddenCellOriginMap[relativeIndex]) {
|
|
92
|
+
hiddenCellOriginMap[relativeIndex][colDef.field] = spannedRowIndex;
|
|
93
|
+
} else {
|
|
94
|
+
hiddenCellOriginMap[relativeIndex] = {
|
|
95
|
+
[colDef.field]: spannedRowIndex
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
relativeIndex += 1;
|
|
99
|
+
rowSpan += 1;
|
|
100
|
+
}
|
|
101
|
+
if (rowSpan > 0) {
|
|
102
|
+
if (spannedCells[spannedRowId]) {
|
|
103
|
+
spannedCells[spannedRowId][colDef.field] = rowSpan + 1;
|
|
104
|
+
} else {
|
|
105
|
+
spannedCells[spannedRowId] = {
|
|
106
|
+
[colDef.field]: rowSpan + 1
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
processedRange = {
|
|
112
|
+
firstRowIndex: Math.min(processedRange.firstRowIndex, rangeToProcess.firstRowIndex),
|
|
113
|
+
lastRowIndex: Math.max(processedRange.lastRowIndex, rangeToProcess.lastRowIndex)
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
spannedCells,
|
|
118
|
+
hiddenCells,
|
|
119
|
+
hiddenCellOriginMap,
|
|
120
|
+
processedRange
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @requires columnsStateInitializer (method) - should be initialized before
|
|
126
|
+
* @requires rowsStateInitializer (method) - should be initialized before
|
|
127
|
+
* @requires filterStateInitializer (method) - should be initialized before
|
|
128
|
+
*/
|
|
129
|
+
export const rowSpanningStateInitializer = (state, props, apiRef) => {
|
|
130
|
+
if (props.unstable_rowSpanning) {
|
|
131
|
+
const rowIds = state.rows.dataRowIds || [];
|
|
132
|
+
const orderedFields = state.columns.orderedFields || [];
|
|
133
|
+
const dataRowIdToModelLookup = state.rows.dataRowIdToModelLookup;
|
|
134
|
+
const columnsLookup = state.columns.lookup;
|
|
135
|
+
const isFilteringPending = Boolean(state.filter.filterModel.items.length) || Boolean(state.filter.filterModel.quickFilterValues?.length);
|
|
136
|
+
if (!rowIds.length || !orderedFields.length || !dataRowIdToModelLookup || !columnsLookup || isFilteringPending) {
|
|
137
|
+
return _extends({}, state, {
|
|
138
|
+
rowSpanning: EMPTY_STATE
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const rangeToProcess = {
|
|
142
|
+
firstRowIndex: 0,
|
|
143
|
+
lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS - 1, Math.max(rowIds.length - 1, 0))
|
|
144
|
+
};
|
|
145
|
+
const rows = rowIds.map(id => ({
|
|
146
|
+
id,
|
|
147
|
+
model: dataRowIdToModelLookup[id]
|
|
148
|
+
}));
|
|
149
|
+
const colDefs = orderedFields.map(field => columnsLookup[field]);
|
|
150
|
+
const {
|
|
151
|
+
spannedCells,
|
|
152
|
+
hiddenCells,
|
|
153
|
+
hiddenCellOriginMap
|
|
154
|
+
} = computeRowSpanningState(apiRef, colDefs, rows, rangeToProcess, rangeToProcess, true, EMPTY_RANGE);
|
|
155
|
+
return _extends({}, state, {
|
|
156
|
+
rowSpanning: {
|
|
157
|
+
spannedCells,
|
|
158
|
+
hiddenCells,
|
|
159
|
+
hiddenCellOriginMap
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return _extends({}, state, {
|
|
164
|
+
rowSpanning: EMPTY_STATE
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
export const useGridRowSpanning = (apiRef, props) => {
|
|
168
|
+
const {
|
|
169
|
+
range,
|
|
170
|
+
rows: visibleRows
|
|
171
|
+
} = useGridVisibleRows(apiRef, props);
|
|
172
|
+
const renderContext = useGridSelector(apiRef, gridRenderContextSelector);
|
|
173
|
+
const colDefs = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
174
|
+
const processedRange = useLazyRef(() => {
|
|
175
|
+
return Object.keys(apiRef.current.state.rowSpanning.spannedCells).length > 0 ? {
|
|
176
|
+
firstRowIndex: 0,
|
|
177
|
+
lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS - 1, Math.max(apiRef.current.state.rows.dataRowIds.length - 1, 0))
|
|
178
|
+
} : EMPTY_RANGE;
|
|
179
|
+
});
|
|
180
|
+
const lastRange = React.useRef(EMPTY_RANGE);
|
|
181
|
+
const updateRowSpanningState = React.useCallback(
|
|
182
|
+
// A reset needs to occur when:
|
|
183
|
+
// - The `unstable_rowSpanning` prop is updated (feature flag)
|
|
184
|
+
// - The filtering is applied
|
|
185
|
+
// - The sorting is applied
|
|
186
|
+
// - The `paginationModel` is updated
|
|
187
|
+
// - The rows are updated
|
|
188
|
+
(resetState = true) => {
|
|
189
|
+
if (!props.unstable_rowSpanning) {
|
|
190
|
+
if (apiRef.current.state.rowSpanning !== EMPTY_STATE) {
|
|
191
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
192
|
+
rowSpanning: EMPTY_STATE
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (range === null || !isRowContextInitialized(renderContext)) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (resetState) {
|
|
201
|
+
processedRange.current = EMPTY_RANGE;
|
|
202
|
+
}
|
|
203
|
+
const rangeToProcess = getUnprocessedRange({
|
|
204
|
+
firstRowIndex: renderContext.firstRowIndex,
|
|
205
|
+
lastRowIndex: renderContext.lastRowIndex - 1
|
|
206
|
+
}, processedRange.current);
|
|
207
|
+
if (rangeToProcess === null) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const {
|
|
211
|
+
spannedCells,
|
|
212
|
+
hiddenCells,
|
|
213
|
+
hiddenCellOriginMap,
|
|
214
|
+
processedRange: newProcessedRange
|
|
215
|
+
} = computeRowSpanningState(apiRef, colDefs, visibleRows, range, rangeToProcess, resetState, processedRange.current);
|
|
216
|
+
processedRange.current = newProcessedRange;
|
|
217
|
+
const newSpannedCellsCount = Object.keys(spannedCells).length;
|
|
218
|
+
const newHiddenCellsCount = Object.keys(hiddenCells).length;
|
|
219
|
+
const currentSpannedCellsCount = Object.keys(apiRef.current.state.rowSpanning.spannedCells).length;
|
|
220
|
+
const currentHiddenCellsCount = Object.keys(apiRef.current.state.rowSpanning.hiddenCells).length;
|
|
221
|
+
const shouldUpdateState = resetState || newSpannedCellsCount !== currentSpannedCellsCount || newHiddenCellsCount !== currentHiddenCellsCount;
|
|
222
|
+
if (!shouldUpdateState) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
apiRef.current.setState(state => {
|
|
226
|
+
return _extends({}, state, {
|
|
227
|
+
rowSpanning: {
|
|
228
|
+
spannedCells,
|
|
229
|
+
hiddenCells,
|
|
230
|
+
hiddenCellOriginMap
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
}, [apiRef, props.unstable_rowSpanning, range, renderContext, visibleRows, colDefs, processedRange]);
|
|
235
|
+
const prevRenderContext = React.useRef(renderContext);
|
|
236
|
+
const isFirstRender = React.useRef(true);
|
|
237
|
+
const shouldResetState = React.useRef(false);
|
|
238
|
+
React.useEffect(() => {
|
|
239
|
+
const firstRender = isFirstRender.current;
|
|
240
|
+
if (isFirstRender.current) {
|
|
241
|
+
isFirstRender.current = false;
|
|
242
|
+
}
|
|
243
|
+
if (range && lastRange.current && isRowRangeUpdated(range, lastRange.current)) {
|
|
244
|
+
lastRange.current = range;
|
|
245
|
+
shouldResetState.current = true;
|
|
246
|
+
}
|
|
247
|
+
if (!firstRender && prevRenderContext.current !== renderContext) {
|
|
248
|
+
if (isRowRangeUpdated(prevRenderContext.current, renderContext)) {
|
|
249
|
+
updateRowSpanningState(shouldResetState.current);
|
|
250
|
+
shouldResetState.current = false;
|
|
251
|
+
}
|
|
252
|
+
prevRenderContext.current = renderContext;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
updateRowSpanningState();
|
|
256
|
+
}, [updateRowSpanningState, renderContext, range, lastRange]);
|
|
257
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { warnOnce } from
|
|
2
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
3
3
|
export const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {
|
|
4
4
|
if (disableMultipleColumnsSorting && model.length > 1) {
|
|
5
5
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -40,4 +40,4 @@ export declare const useGridVirtualScroller: () => {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
export declare function areRenderContextsEqual(context1: GridRenderContext, context2: GridRenderContext): boolean;
|
|
43
|
-
export declare function computeOffsetLeft(columnPositions: number[], renderContext: GridColumnsRenderContext,
|
|
43
|
+
export declare function computeOffsetLeft(columnPositions: number[], renderContext: GridColumnsRenderContext, pinnedLeftLength: number): number;
|
|
@@ -24,6 +24,7 @@ import { getFirstNonSpannedColumnToRender } from "../columns/gridColumnsUtils.js
|
|
|
24
24
|
import { getMinimalContentHeight } from "../rows/gridRowsUtils.js";
|
|
25
25
|
import { gridRenderContextSelector, gridVirtualizationRowEnabledSelector, gridVirtualizationColumnEnabledSelector } from "./gridVirtualizationSelectors.js";
|
|
26
26
|
import { EMPTY_RENDER_CONTEXT } from "./useGridVirtualization.js";
|
|
27
|
+
import { gridRowSpanningHiddenCellsOriginMapSelector } from "../rows/gridRowSpanningSelectors.js";
|
|
27
28
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
28
29
|
const MINIMUM_COLUMN_WIDTH = 50;
|
|
29
30
|
var ScrollDirection = /*#__PURE__*/function (ScrollDirection) {
|
|
@@ -325,7 +326,7 @@ export const useGridVirtualScroller = () => {
|
|
|
325
326
|
if (!isPinnedSection && frozenContext.current && rowIndexInPage >= frozenContext.current.firstRowIndex && rowIndexInPage < frozenContext.current.lastRowIndex) {
|
|
326
327
|
currentRenderContext = frozenContext.current;
|
|
327
328
|
}
|
|
328
|
-
const offsetLeft = computeOffsetLeft(columnPositions, currentRenderContext,
|
|
329
|
+
const offsetLeft = computeOffsetLeft(columnPositions, currentRenderContext, pinnedColumns.left.length);
|
|
329
330
|
const showBottomBorder = isLastVisibleInSection && params.position === 'top';
|
|
330
331
|
rows.push(/*#__PURE__*/_jsx(rootProps.slots.row, _extends({
|
|
331
332
|
row: model,
|
|
@@ -353,7 +354,7 @@ export const useGridVirtualScroller = () => {
|
|
|
353
354
|
if (panel) {
|
|
354
355
|
rows.push(panel);
|
|
355
356
|
}
|
|
356
|
-
if (
|
|
357
|
+
if (params.position === undefined && isLastVisibleInSection) {
|
|
357
358
|
rows.push(apiRef.current.getInfiniteLoadingTriggerElement?.({
|
|
358
359
|
lastRowId: id
|
|
359
360
|
}));
|
|
@@ -447,6 +448,7 @@ function inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns) {
|
|
|
447
448
|
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
448
449
|
const currentPage = getVisibleRows(apiRef, rootProps);
|
|
449
450
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
451
|
+
const hiddenCellsOriginMap = gridRowSpanningHiddenCellsOriginMapSelector(apiRef);
|
|
450
452
|
const lastRowId = apiRef.current.state.rows.dataRowIds.at(-1);
|
|
451
453
|
const lastColumn = visibleColumns.at(-1);
|
|
452
454
|
return {
|
|
@@ -467,7 +469,8 @@ function inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns) {
|
|
|
467
469
|
rows: currentPage.rows,
|
|
468
470
|
range: currentPage.range,
|
|
469
471
|
pinnedColumns: gridVisiblePinnedColumnDefinitionsSelector(apiRef),
|
|
470
|
-
visibleColumns
|
|
472
|
+
visibleColumns,
|
|
473
|
+
hiddenCellsOriginMap
|
|
471
474
|
};
|
|
472
475
|
}
|
|
473
476
|
function computeRenderContext(inputs, scrollPosition, scrollCache) {
|
|
@@ -485,10 +488,18 @@ function computeRenderContext(inputs, scrollPosition, scrollCache) {
|
|
|
485
488
|
if (inputs.enabledForRows) {
|
|
486
489
|
// Clamp the value because the search may return an index out of bounds.
|
|
487
490
|
// In the last index, this is not needed because Array.slice doesn't include it.
|
|
488
|
-
|
|
491
|
+
let firstRowIndex = Math.min(getNearestIndexToRender(inputs, top, {
|
|
489
492
|
atStart: true,
|
|
490
493
|
lastPosition: inputs.rowsMeta.positions[inputs.rowsMeta.positions.length - 1] + inputs.lastRowHeight
|
|
491
494
|
}), inputs.rowsMeta.positions.length - 1);
|
|
495
|
+
|
|
496
|
+
// If any of the cells in the `firstRowIndex` is hidden due to an extended row span,
|
|
497
|
+
// Make sure the row from where the rowSpan is originated is visible.
|
|
498
|
+
const rowSpanHiddenCellOrigin = inputs.hiddenCellsOriginMap[firstRowIndex];
|
|
499
|
+
if (rowSpanHiddenCellOrigin) {
|
|
500
|
+
const minSpannedRowIndex = Math.min(...Object.values(rowSpanHiddenCellOrigin));
|
|
501
|
+
firstRowIndex = Math.min(firstRowIndex, minSpannedRowIndex);
|
|
502
|
+
}
|
|
492
503
|
const lastRowIndex = inputs.autoHeight ? firstRowIndex + inputs.rows.length : getNearestIndexToRender(inputs, top + inputs.viewportInnerHeight);
|
|
493
504
|
renderContext.firstRowIndex = firstRowIndex;
|
|
494
505
|
renderContext.lastRowIndex = lastRowIndex;
|
|
@@ -642,9 +653,8 @@ export function areRenderContextsEqual(context1, context2) {
|
|
|
642
653
|
}
|
|
643
654
|
return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
|
|
644
655
|
}
|
|
645
|
-
export function computeOffsetLeft(columnPositions, renderContext,
|
|
646
|
-
const
|
|
647
|
-
const left = factor * (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0);
|
|
656
|
+
export function computeOffsetLeft(columnPositions, renderContext, pinnedLeftLength) {
|
|
657
|
+
const left = (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0);
|
|
648
658
|
return Math.abs(left);
|
|
649
659
|
}
|
|
650
660
|
function directionForDelta(dx, dy) {
|
|
@@ -90,7 +90,6 @@ const optionsSubscriberOptions = {
|
|
|
90
90
|
isFirst: true
|
|
91
91
|
};
|
|
92
92
|
export function useGridApiOptionHandler(apiRef, eventName, handler) {
|
|
93
|
-
// Validate that only one per event name?
|
|
94
93
|
useGridApiEventHandler(apiRef, eventName, handler, optionsSubscriberOptions);
|
|
95
94
|
}
|
|
96
95
|
export { GridSignature };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
|
|
3
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
3
4
|
import { useLazyRef } from "./useLazyRef.js";
|
|
4
5
|
import { useOnMount } from "./useOnMount.js";
|
|
5
|
-
import { warnOnce } from "../../internals/utils/warning.js";
|
|
6
6
|
function isOutputSelector(selector) {
|
|
7
7
|
return selector.acceptsApiRef;
|
|
8
8
|
}
|
package/index.js
CHANGED
package/internals/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export { useGridPreferencesPanel, preferencePanelStateInitializer, } from '../ho
|
|
|
41
41
|
export { useGridEditing, editingStateInitializer } from '../hooks/features/editing/useGridEditing';
|
|
42
42
|
export { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';
|
|
43
43
|
export { useGridRows, rowsStateInitializer } from '../hooks/features/rows/useGridRows';
|
|
44
|
+
export { useGridRowSpanning, rowSpanningStateInitializer, } from '../hooks/features/rows/useGridRowSpanning';
|
|
44
45
|
export { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes';
|
|
45
46
|
export { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes';
|
|
46
47
|
export { useGridRowsPreProcessors } from '../hooks/features/rows/useGridRowsPreProcessors';
|
package/internals/index.js
CHANGED
|
@@ -32,6 +32,7 @@ export { useGridPreferencesPanel, preferencePanelStateInitializer } from "../hoo
|
|
|
32
32
|
export { useGridEditing, editingStateInitializer } from "../hooks/features/editing/useGridEditing.js";
|
|
33
33
|
export { gridEditRowsStateSelector } from "../hooks/features/editing/gridEditingSelectors.js";
|
|
34
34
|
export { useGridRows, rowsStateInitializer } from "../hooks/features/rows/useGridRows.js";
|
|
35
|
+
export { useGridRowSpanning, rowSpanningStateInitializer } from "../hooks/features/rows/useGridRowSpanning.js";
|
|
35
36
|
export { useGridAriaAttributes } from "../hooks/utils/useGridAriaAttributes.js";
|
|
36
37
|
export { useGridRowAriaAttributes } from "../hooks/features/rows/useGridRowAriaAttributes.js";
|
|
37
38
|
export { useGridRowsPreProcessors } from "../hooks/features/rows/useGridRowsPreProcessors.js";
|
package/internals/utils/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { warnOnce } from
|
|
1
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
2
2
|
import { isNumber } from "../../utils/utils.js";
|
|
3
3
|
import { GridSignature } from "../../hooks/utils/useGridApiEventHandler.js";
|
|
4
4
|
export const propValidatorsDataGrid = [props => props.autoPageSize && props.autoHeight && ['MUI X: `<DataGrid autoPageSize={true} autoHeight={true} />` are not valid props.', 'You cannot use both the `autoPageSize` and `autoHeight` props at the same time because `autoHeight` scales the height of the Data Grid according to the `pageSize`.', '', 'Please remove one of these two props.'].join('\n') || undefined, props => props.paginationMode === 'client' && props.paginationMeta != null && ['MUI X: Usage of the `paginationMeta` prop with client-side pagination (`paginationMode="client"`) has no effect.', '`paginationMeta` is only meant to be used with `paginationMode="server"`.'].join('\n') || undefined, props => props.signature === GridSignature.DataGrid && props.paginationMode === 'client' && isNumber(props.rowCount) && ['MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect.', '`rowCount` is only meant to be used with `paginationMode="server"`.'].join('\n') || undefined, props => props.paginationMode === 'server' && props.rowCount == null && !props.unstable_dataSource && ["MUI X: The `rowCount` prop must be passed using `paginationMode='server'`", 'For more detail, see http://mui.com/components/data-grid/pagination/#index-based-pagination'].join('\n') || undefined];
|
package/locales/arSD.js
CHANGED
|
@@ -48,7 +48,9 @@ const arSDGrid = {
|
|
|
48
48
|
filterPanelInputPlaceholder: 'ترشِيح قيمة',
|
|
49
49
|
// Filter operators text
|
|
50
50
|
filterOperatorContains: 'يحتوي',
|
|
51
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
51
52
|
filterOperatorEquals: 'يساوي',
|
|
53
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
52
54
|
filterOperatorStartsWith: 'يبدأ بـ',
|
|
53
55
|
filterOperatorEndsWith: 'ينتهي بـ',
|
|
54
56
|
filterOperatorIs: 'يكون',
|
|
@@ -68,7 +70,9 @@ const arSDGrid = {
|
|
|
68
70
|
'filterOperator<=': '<=',
|
|
69
71
|
// Header filter operators text
|
|
70
72
|
headerFilterOperatorContains: 'يحتوي على',
|
|
73
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
71
74
|
headerFilterOperatorEquals: 'يساوي',
|
|
75
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
72
76
|
headerFilterOperatorStartsWith: 'يبدأ ب',
|
|
73
77
|
headerFilterOperatorEndsWith: 'ينتهي ب',
|
|
74
78
|
headerFilterOperatorIs: 'هو',
|
package/locales/beBY.js
CHANGED
|
@@ -62,7 +62,9 @@ const beBYGrid = {
|
|
|
62
62
|
filterPanelInputPlaceholder: 'Значэнне фільтра',
|
|
63
63
|
// Filter operators text
|
|
64
64
|
filterOperatorContains: 'змяшчае',
|
|
65
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
65
66
|
filterOperatorEquals: 'роўны',
|
|
67
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
66
68
|
filterOperatorStartsWith: 'пачынаецца з',
|
|
67
69
|
filterOperatorEndsWith: 'скончваецца на',
|
|
68
70
|
filterOperatorIs: 'роўны',
|
|
@@ -83,7 +85,9 @@ const beBYGrid = {
|
|
|
83
85
|
|
|
84
86
|
// Header filter operators text
|
|
85
87
|
// headerFilterOperatorContains: 'Contains',
|
|
88
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
86
89
|
// headerFilterOperatorEquals: 'Equals',
|
|
90
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
87
91
|
// headerFilterOperatorStartsWith: 'Starts with',
|
|
88
92
|
// headerFilterOperatorEndsWith: 'Ends with',
|
|
89
93
|
// headerFilterOperatorIs: 'Is',
|
package/locales/bgBG.js
CHANGED
|
@@ -48,7 +48,9 @@ const bgBGGrid = {
|
|
|
48
48
|
filterPanelInputPlaceholder: 'Стойност на филтъра',
|
|
49
49
|
// Filter operators text
|
|
50
50
|
filterOperatorContains: 'съдържа',
|
|
51
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
51
52
|
filterOperatorEquals: 'равно',
|
|
53
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
52
54
|
filterOperatorStartsWith: 'започва с',
|
|
53
55
|
filterOperatorEndsWith: 'завършва с',
|
|
54
56
|
filterOperatorIs: 'е',
|
|
@@ -68,7 +70,9 @@ const bgBGGrid = {
|
|
|
68
70
|
'filterOperator<=': '<=',
|
|
69
71
|
// Header filter operators text
|
|
70
72
|
headerFilterOperatorContains: 'Съдържа',
|
|
73
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
71
74
|
headerFilterOperatorEquals: 'Равнo',
|
|
75
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
72
76
|
headerFilterOperatorStartsWith: 'Започва с',
|
|
73
77
|
headerFilterOperatorEndsWith: 'Завършва с',
|
|
74
78
|
headerFilterOperatorIs: 'Равно е на',
|
package/locales/csCZ.js
CHANGED
|
@@ -55,7 +55,9 @@ const csCZGrid = {
|
|
|
55
55
|
filterPanelInputPlaceholder: 'Hodnota filtru',
|
|
56
56
|
// Filter operators text
|
|
57
57
|
filterOperatorContains: 'obsahuje',
|
|
58
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
58
59
|
filterOperatorEquals: 'rovná se',
|
|
60
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
59
61
|
filterOperatorStartsWith: 'začíná na',
|
|
60
62
|
filterOperatorEndsWith: 'končí na',
|
|
61
63
|
filterOperatorIs: 'je',
|
|
@@ -75,7 +77,9 @@ const csCZGrid = {
|
|
|
75
77
|
'filterOperator<=': '<=',
|
|
76
78
|
// Header filter operators text
|
|
77
79
|
headerFilterOperatorContains: 'Obsahuje',
|
|
80
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
78
81
|
headerFilterOperatorEquals: 'Rovná se',
|
|
82
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
79
83
|
headerFilterOperatorStartsWith: 'Začíná na',
|
|
80
84
|
headerFilterOperatorEndsWith: 'Končí na',
|
|
81
85
|
headerFilterOperatorIs: 'Je',
|
package/locales/daDK.js
CHANGED
|
@@ -48,7 +48,9 @@ const daDKGrid = {
|
|
|
48
48
|
filterPanelInputPlaceholder: 'Filterværdi',
|
|
49
49
|
// Filter operators text
|
|
50
50
|
filterOperatorContains: 'indeholder',
|
|
51
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
51
52
|
filterOperatorEquals: 'lig med',
|
|
53
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
52
54
|
filterOperatorStartsWith: 'begynder med',
|
|
53
55
|
filterOperatorEndsWith: 'ender med',
|
|
54
56
|
filterOperatorIs: 'er lig med',
|
|
@@ -68,7 +70,9 @@ const daDKGrid = {
|
|
|
68
70
|
'filterOperator<=': '<=',
|
|
69
71
|
// Header filter operators text
|
|
70
72
|
headerFilterOperatorContains: 'Indeholder',
|
|
73
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
71
74
|
headerFilterOperatorEquals: 'Lig med',
|
|
75
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
72
76
|
headerFilterOperatorStartsWith: 'Begynder med',
|
|
73
77
|
headerFilterOperatorEndsWith: 'Ender med',
|
|
74
78
|
headerFilterOperatorIs: 'Er lig med',
|
package/locales/deDE.js
CHANGED
|
@@ -47,7 +47,9 @@ const deDEGrid = {
|
|
|
47
47
|
filterPanelInputPlaceholder: 'Wert filtern',
|
|
48
48
|
// Filter operators text
|
|
49
49
|
filterOperatorContains: 'enthält',
|
|
50
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
50
51
|
filterOperatorEquals: 'ist gleich',
|
|
52
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
51
53
|
filterOperatorStartsWith: 'beginnt mit',
|
|
52
54
|
filterOperatorEndsWith: 'endet mit',
|
|
53
55
|
filterOperatorIs: 'ist',
|
|
@@ -67,7 +69,9 @@ const deDEGrid = {
|
|
|
67
69
|
'filterOperator<=': '<=',
|
|
68
70
|
// Header filter operators text
|
|
69
71
|
headerFilterOperatorContains: 'Enthält',
|
|
72
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
70
73
|
headerFilterOperatorEquals: 'Gleich',
|
|
74
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
71
75
|
headerFilterOperatorStartsWith: 'Beginnt mit',
|
|
72
76
|
headerFilterOperatorEndsWith: 'Endet mit',
|
|
73
77
|
headerFilterOperatorIs: 'Ist',
|
package/locales/elGR.js
CHANGED
|
@@ -48,7 +48,9 @@ const elGRGrid = {
|
|
|
48
48
|
filterPanelInputPlaceholder: 'Τιμή φίλτρου',
|
|
49
49
|
// Filter operators text
|
|
50
50
|
filterOperatorContains: 'περιέχει',
|
|
51
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
51
52
|
filterOperatorEquals: 'ισούται',
|
|
53
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
52
54
|
filterOperatorStartsWith: 'ξεκινάει με',
|
|
53
55
|
filterOperatorEndsWith: 'τελειώνει με',
|
|
54
56
|
filterOperatorIs: 'είναι',
|
|
@@ -68,7 +70,9 @@ const elGRGrid = {
|
|
|
68
70
|
'filterOperator<=': '<=',
|
|
69
71
|
// Header filter operators text
|
|
70
72
|
headerFilterOperatorContains: 'Περιέχει',
|
|
73
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
71
74
|
headerFilterOperatorEquals: 'Ισούται',
|
|
75
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
72
76
|
headerFilterOperatorStartsWith: 'Ξεκινάει με',
|
|
73
77
|
headerFilterOperatorEndsWith: 'Τελειώνει με',
|
|
74
78
|
headerFilterOperatorIs: 'Είναι',
|
package/locales/esES.js
CHANGED
|
@@ -47,7 +47,9 @@ const esESGrid = {
|
|
|
47
47
|
filterPanelInputPlaceholder: 'Valor de filtro',
|
|
48
48
|
// Filter operators text
|
|
49
49
|
filterOperatorContains: 'contiene',
|
|
50
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
50
51
|
filterOperatorEquals: 'es igual',
|
|
52
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
51
53
|
filterOperatorStartsWith: 'comienza con',
|
|
52
54
|
filterOperatorEndsWith: 'termina con',
|
|
53
55
|
filterOperatorIs: 'es',
|
|
@@ -67,7 +69,9 @@ const esESGrid = {
|
|
|
67
69
|
'filterOperator<=': '<=',
|
|
68
70
|
// Header filter operators text
|
|
69
71
|
headerFilterOperatorContains: 'Contiene',
|
|
72
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
70
73
|
headerFilterOperatorEquals: 'Es igual a',
|
|
74
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
71
75
|
headerFilterOperatorStartsWith: 'Comienza con',
|
|
72
76
|
headerFilterOperatorEndsWith: 'Termina con',
|
|
73
77
|
headerFilterOperatorIs: 'Es',
|
package/locales/faIR.js
CHANGED
|
@@ -47,7 +47,9 @@ const faIRGrid = {
|
|
|
47
47
|
filterPanelInputPlaceholder: 'فیلتر مقدار',
|
|
48
48
|
// Filter operators text
|
|
49
49
|
filterOperatorContains: 'شامل',
|
|
50
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
50
51
|
filterOperatorEquals: 'مساوی',
|
|
52
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
51
53
|
filterOperatorStartsWith: 'شروع با',
|
|
52
54
|
filterOperatorEndsWith: 'پایان با',
|
|
53
55
|
filterOperatorIs: 'هست',
|
|
@@ -67,7 +69,9 @@ const faIRGrid = {
|
|
|
67
69
|
'filterOperator<=': '<=',
|
|
68
70
|
// Header filter operators text
|
|
69
71
|
headerFilterOperatorContains: 'شامل',
|
|
72
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
70
73
|
headerFilterOperatorEquals: 'مساوی',
|
|
74
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
71
75
|
headerFilterOperatorStartsWith: 'شروع با',
|
|
72
76
|
headerFilterOperatorEndsWith: 'پایان با',
|
|
73
77
|
headerFilterOperatorIs: 'هست',
|
package/locales/fiFI.js
CHANGED
|
@@ -47,7 +47,9 @@ const fiFIGrid = {
|
|
|
47
47
|
filterPanelInputPlaceholder: 'Suodattimen arvo',
|
|
48
48
|
// Filter operators text
|
|
49
49
|
filterOperatorContains: 'sisältää',
|
|
50
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
50
51
|
filterOperatorEquals: 'on yhtä suuri kuin',
|
|
52
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
51
53
|
filterOperatorStartsWith: 'alkaa',
|
|
52
54
|
filterOperatorEndsWith: 'päättyy',
|
|
53
55
|
filterOperatorIs: 'on',
|
|
@@ -67,7 +69,9 @@ const fiFIGrid = {
|
|
|
67
69
|
'filterOperator<=': '<=',
|
|
68
70
|
// Header filter operators text
|
|
69
71
|
headerFilterOperatorContains: 'Sisältää',
|
|
72
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
70
73
|
headerFilterOperatorEquals: 'On yhtä suuri kuin',
|
|
74
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
71
75
|
headerFilterOperatorStartsWith: 'Alkaa',
|
|
72
76
|
headerFilterOperatorEndsWith: 'Päättyy',
|
|
73
77
|
headerFilterOperatorIs: 'On',
|
package/locales/frFR.js
CHANGED
|
@@ -47,7 +47,9 @@ const frFRGrid = {
|
|
|
47
47
|
filterPanelInputPlaceholder: 'Filtrer la valeur',
|
|
48
48
|
// Filter operators text
|
|
49
49
|
filterOperatorContains: 'contient',
|
|
50
|
+
// filterOperatorDoesNotContain: 'does not contain',
|
|
50
51
|
filterOperatorEquals: 'est égal à',
|
|
52
|
+
// filterOperatorDoesNotEqual: 'does not equal',
|
|
51
53
|
filterOperatorStartsWith: 'commence par',
|
|
52
54
|
filterOperatorEndsWith: 'se termine par',
|
|
53
55
|
filterOperatorIs: 'est',
|
|
@@ -67,7 +69,9 @@ const frFRGrid = {
|
|
|
67
69
|
'filterOperator<=': '<=',
|
|
68
70
|
// Header filter operators text
|
|
69
71
|
headerFilterOperatorContains: 'Contient',
|
|
72
|
+
// headerFilterOperatorDoesNotContain: 'Does not contain',
|
|
70
73
|
headerFilterOperatorEquals: 'Est égal à',
|
|
74
|
+
// headerFilterOperatorDoesNotEqual: 'Does not equal',
|
|
71
75
|
headerFilterOperatorStartsWith: 'Commence par',
|
|
72
76
|
headerFilterOperatorEndsWith: 'Se termine par',
|
|
73
77
|
headerFilterOperatorIs: 'Est',
|