@mui/x-data-grid 5.14.0 → 5.15.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 +147 -5
- package/DataGrid/DataGrid.js +7 -1
- package/DataGrid/useDataGridProps.js +1 -0
- package/colDef/gridStringColDef.js +1 -1
- package/components/GridRow.js +5 -1
- package/components/base/GridOverlays.js +2 -2
- package/components/cell/GridEditInputCell.d.ts +2 -5
- package/components/cell/GridEditInputCell.js +13 -14
- package/components/cell/GridEditSingleSelectCell.d.ts +4 -0
- package/components/cell/GridEditSingleSelectCell.js +11 -4
- package/components/columnSelection/GridCellCheckboxRenderer.js +5 -0
- package/components/containers/GridRoot.js +4 -2
- package/components/toolbar/GridToolbarDensitySelector.js +13 -4
- package/components/toolbar/GridToolbarExportContainer.js +13 -2
- package/constants/envConstants.d.ts +1 -1
- package/constants/envConstants.js +2 -11
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +6 -1
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +26 -16
- package/hooks/features/editRows/useGridCellEditing.old.js +2 -2
- package/hooks/features/editRows/useGridEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridEditing.new.js +4 -0
- package/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +16 -10
- package/hooks/features/export/utils.js +8 -1
- package/hooks/features/filter/gridFilterState.d.ts +12 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +8 -5
- package/hooks/features/filter/gridFilterUtils.js +74 -43
- package/hooks/features/filter/useGridFilter.js +16 -3
- package/hooks/features/focus/useGridFocus.js +11 -6
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +42 -34
- package/hooks/features/pagination/useGridPageSize.js +3 -1
- package/hooks/features/rows/gridRowsSelector.d.ts +14 -0
- package/hooks/features/rows/gridRowsSelector.js +20 -1
- package/hooks/features/rows/gridRowsState.d.ts +8 -1
- package/hooks/features/rows/gridRowsUtils.d.ts +4 -0
- package/hooks/features/rows/gridRowsUtils.js +21 -3
- package/hooks/features/rows/index.d.ts +1 -1
- package/hooks/features/rows/index.js +1 -1
- package/hooks/features/rows/useGridRows.js +5 -2
- package/hooks/features/rows/useGridRowsMeta.js +19 -4
- package/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
- package/hooks/features/scroll/useGridScroll.js +7 -2
- package/hooks/features/selection/useGridSelection.js +7 -3
- package/hooks/features/sorting/useGridSorting.js +8 -0
- package/hooks/features/statePersistence/gridStatePersistenceInterface.d.ts +3 -0
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +31 -16
- package/index.js +1 -1
- package/internals/index.d.ts +5 -1
- package/internals/index.js +4 -0
- package/legacy/DataGrid/DataGrid.js +7 -1
- package/legacy/DataGrid/useDataGridProps.js +1 -0
- package/legacy/colDef/gridStringColDef.js +1 -1
- package/legacy/components/GridRow.js +5 -1
- package/legacy/components/base/GridOverlays.js +2 -2
- package/legacy/components/cell/GridEditInputCell.js +13 -14
- package/legacy/components/cell/GridEditSingleSelectCell.js +11 -3
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +5 -0
- package/legacy/components/containers/GridRoot.js +4 -2
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +14 -5
- package/legacy/components/toolbar/GridToolbarExportContainer.js +15 -2
- package/legacy/constants/envConstants.js +2 -11
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +1 -1
- package/legacy/hooks/features/dimensions/useGridDimensions.js +6 -1
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +27 -17
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +2 -2
- package/legacy/hooks/features/editRows/useGridEditing.new.js +4 -0
- package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +16 -10
- package/legacy/hooks/features/export/utils.js +13 -1
- package/legacy/hooks/features/filter/gridFilterUtils.js +84 -55
- package/legacy/hooks/features/filter/useGridFilter.js +16 -3
- package/legacy/hooks/features/focus/useGridFocus.js +11 -6
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +47 -34
- package/legacy/hooks/features/pagination/useGridPageSize.js +3 -1
- package/legacy/hooks/features/rows/gridRowsSelector.js +23 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +21 -3
- package/legacy/hooks/features/rows/index.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +5 -2
- package/legacy/hooks/features/rows/useGridRowsMeta.js +19 -4
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
- package/legacy/hooks/features/scroll/useGridScroll.js +7 -2
- package/legacy/hooks/features/selection/useGridSelection.js +7 -3
- package/legacy/hooks/features/sorting/useGridSorting.js +8 -0
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +32 -16
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +4 -0
- package/legacy/locales/arSD.js +1 -1
- package/legacy/locales/bgBG.js +1 -1
- package/legacy/locales/csCZ.js +1 -1
- package/legacy/locales/daDK.js +1 -1
- package/legacy/locales/deDE.js +9 -9
- package/legacy/locales/elGR.js +1 -1
- package/legacy/locales/esES.js +1 -1
- package/legacy/locales/faIR.js +1 -1
- package/legacy/locales/fiFI.js +1 -1
- package/legacy/locales/frFR.js +1 -1
- package/legacy/locales/heIL.js +1 -1
- package/legacy/locales/huHU.js +1 -1
- package/legacy/locales/itIT.js +15 -15
- package/legacy/locales/jaJP.js +3 -3
- package/legacy/locales/koKR.js +34 -30
- package/legacy/locales/nbNO.js +1 -1
- package/legacy/locales/nlNL.js +1 -1
- package/legacy/locales/plPL.js +1 -1
- package/legacy/locales/ptBR.js +1 -1
- package/legacy/locales/roRO.js +1 -1
- package/legacy/locales/ruRU.js +1 -1
- package/legacy/locales/skSK.js +1 -1
- package/legacy/locales/svSE.js +1 -1
- package/legacy/locales/trTR.js +1 -1
- package/legacy/locales/ukUA.js +1 -1
- package/legacy/locales/viVN.js +1 -1
- package/legacy/locales/zhCN.js +37 -33
- package/legacy/locales/zhTW.js +1 -1
- package/legacy/utils/keyboardUtils.js +8 -5
- package/locales/arSD.js +1 -1
- package/locales/bgBG.js +1 -1
- package/locales/csCZ.js +1 -1
- package/locales/daDK.js +1 -1
- package/locales/deDE.js +9 -9
- package/locales/elGR.js +1 -1
- package/locales/esES.js +1 -1
- package/locales/faIR.js +1 -1
- package/locales/fiFI.js +1 -1
- package/locales/frFR.js +1 -1
- package/locales/heIL.js +1 -1
- package/locales/huHU.js +1 -1
- package/locales/itIT.js +15 -15
- package/locales/jaJP.js +3 -3
- package/locales/koKR.js +30 -30
- package/locales/nbNO.js +1 -1
- package/locales/nlNL.js +1 -1
- package/locales/plPL.js +1 -1
- package/locales/ptBR.js +1 -1
- package/locales/roRO.js +1 -1
- package/locales/ruRU.js +1 -1
- package/locales/skSK.js +1 -1
- package/locales/svSE.js +1 -1
- package/locales/trTR.js +1 -1
- package/locales/ukUA.js +1 -1
- package/locales/viVN.js +1 -1
- package/locales/zhCN.js +33 -33
- package/locales/zhTW.js +1 -1
- package/models/gridRows.d.ts +5 -0
- package/models/props/DataGridProps.d.ts +8 -3
- package/modern/DataGrid/DataGrid.js +7 -1
- package/modern/DataGrid/useDataGridProps.js +1 -0
- package/modern/colDef/gridStringColDef.js +1 -1
- package/modern/components/GridRow.js +5 -1
- package/modern/components/base/GridOverlays.js +2 -2
- package/modern/components/cell/GridEditInputCell.js +13 -14
- package/modern/components/cell/GridEditSingleSelectCell.js +11 -4
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +5 -0
- package/modern/components/containers/GridRoot.js +4 -2
- package/modern/components/toolbar/GridToolbarDensitySelector.js +11 -4
- package/modern/components/toolbar/GridToolbarExportContainer.js +11 -2
- package/modern/constants/envConstants.js +2 -11
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +1 -1
- package/modern/hooks/features/dimensions/useGridDimensions.js +6 -1
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +24 -16
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +2 -2
- package/modern/hooks/features/editRows/useGridEditing.new.js +4 -0
- package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +16 -10
- package/modern/hooks/features/export/utils.js +6 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +73 -42
- package/modern/hooks/features/filter/useGridFilter.js +16 -3
- package/modern/hooks/features/focus/useGridFocus.js +11 -6
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +42 -30
- package/modern/hooks/features/pagination/useGridPageSize.js +3 -1
- package/modern/hooks/features/rows/gridRowsSelector.js +18 -1
- package/modern/hooks/features/rows/gridRowsUtils.js +19 -3
- package/modern/hooks/features/rows/index.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +5 -2
- package/modern/hooks/features/rows/useGridRowsMeta.js +17 -4
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
- package/modern/hooks/features/scroll/useGridScroll.js +5 -2
- package/modern/hooks/features/selection/useGridSelection.js +7 -1
- package/modern/hooks/features/sorting/useGridSorting.js +8 -0
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +30 -15
- package/modern/index.js +1 -1
- package/modern/internals/index.js +4 -0
- package/modern/locales/arSD.js +1 -1
- package/modern/locales/bgBG.js +1 -1
- package/modern/locales/csCZ.js +1 -1
- package/modern/locales/daDK.js +1 -1
- package/modern/locales/deDE.js +9 -9
- package/modern/locales/elGR.js +1 -1
- package/modern/locales/esES.js +1 -1
- package/modern/locales/faIR.js +1 -1
- package/modern/locales/fiFI.js +1 -1
- package/modern/locales/frFR.js +1 -1
- package/modern/locales/heIL.js +1 -1
- package/modern/locales/huHU.js +1 -1
- package/modern/locales/itIT.js +15 -15
- package/modern/locales/jaJP.js +3 -3
- package/modern/locales/koKR.js +30 -30
- package/modern/locales/nbNO.js +1 -1
- package/modern/locales/nlNL.js +1 -1
- package/modern/locales/plPL.js +1 -1
- package/modern/locales/ptBR.js +1 -1
- package/modern/locales/roRO.js +1 -1
- package/modern/locales/ruRU.js +1 -1
- package/modern/locales/skSK.js +1 -1
- package/modern/locales/svSE.js +1 -1
- package/modern/locales/trTR.js +1 -1
- package/modern/locales/ukUA.js +1 -1
- package/modern/locales/viVN.js +1 -1
- package/modern/locales/zhCN.js +33 -33
- package/modern/locales/zhTW.js +1 -1
- package/modern/utils/keyboardUtils.js +7 -2
- package/node/DataGrid/DataGrid.js +7 -1
- package/node/DataGrid/useDataGridProps.js +1 -0
- package/node/colDef/gridStringColDef.js +1 -1
- package/node/components/GridRow.js +5 -1
- package/node/components/base/GridOverlays.js +2 -2
- package/node/components/cell/GridEditInputCell.js +15 -16
- package/node/components/cell/GridEditSingleSelectCell.js +10 -4
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +5 -0
- package/node/components/containers/GridRoot.js +3 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +13 -4
- package/node/components/toolbar/GridToolbarExportContainer.js +13 -2
- package/node/constants/envConstants.js +2 -13
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +1 -1
- package/node/hooks/features/dimensions/useGridDimensions.js +7 -1
- package/node/hooks/features/editRows/useGridCellEditing.new.js +26 -16
- package/node/hooks/features/editRows/useGridCellEditing.old.js +2 -2
- package/node/hooks/features/editRows/useGridEditing.new.js +4 -0
- package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/node/hooks/features/editRows/useGridRowEditing.new.js +16 -10
- package/node/hooks/features/export/utils.js +7 -0
- package/node/hooks/features/filter/gridFilterUtils.js +81 -47
- package/node/hooks/features/filter/useGridFilter.js +15 -2
- package/node/hooks/features/focus/useGridFocus.js +11 -6
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -34
- package/node/hooks/features/pagination/useGridPageSize.js +4 -1
- package/node/hooks/features/rows/gridRowsSelector.js +24 -2
- package/node/hooks/features/rows/gridRowsUtils.js +23 -2
- package/node/hooks/features/rows/index.js +70 -12
- package/node/hooks/features/rows/useGridRows.js +5 -2
- package/node/hooks/features/rows/useGridRowsMeta.js +20 -4
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -1
- package/node/hooks/features/scroll/useGridScroll.js +7 -1
- package/node/hooks/features/selection/useGridSelection.js +7 -3
- package/node/hooks/features/sorting/useGridSorting.js +8 -0
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +31 -16
- package/node/index.js +1 -1
- package/node/internals/index.js +36 -0
- package/node/locales/arSD.js +1 -1
- package/node/locales/bgBG.js +1 -1
- package/node/locales/csCZ.js +1 -1
- package/node/locales/daDK.js +1 -1
- package/node/locales/deDE.js +9 -9
- package/node/locales/elGR.js +1 -1
- package/node/locales/esES.js +1 -1
- package/node/locales/faIR.js +1 -1
- package/node/locales/fiFI.js +1 -1
- package/node/locales/frFR.js +1 -1
- package/node/locales/heIL.js +1 -1
- package/node/locales/huHU.js +1 -1
- package/node/locales/itIT.js +15 -15
- package/node/locales/jaJP.js +3 -3
- package/node/locales/koKR.js +30 -30
- package/node/locales/nbNO.js +1 -1
- package/node/locales/nlNL.js +1 -1
- package/node/locales/plPL.js +1 -1
- package/node/locales/ptBR.js +1 -1
- package/node/locales/roRO.js +1 -1
- package/node/locales/ruRU.js +1 -1
- package/node/locales/skSK.js +1 -1
- package/node/locales/svSE.js +1 -1
- package/node/locales/trTR.js +1 -1
- package/node/locales/ukUA.js +1 -1
- package/node/locales/viVN.js +1 -1
- package/node/locales/zhCN.js +33 -33
- package/node/locales/zhTW.js +1 -1
- package/node/utils/keyboardUtils.js +10 -4
- package/package.json +1 -1
- package/utils/keyboardUtils.d.ts +2 -2
- package/utils/keyboardUtils.js +7 -2
|
@@ -27,10 +27,16 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
|
27
27
|
|
|
28
28
|
var _gridDetailPanelToggleField = require("../../../constants/gridDetailPanelToggleField");
|
|
29
29
|
|
|
30
|
+
var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
31
|
+
|
|
30
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
33
|
|
|
32
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
35
|
|
|
36
|
+
function enrichPageRowsWithPinnedRows(apiRef, rows) {
|
|
37
|
+
const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef) || {};
|
|
38
|
+
return [...(pinnedRows.top || []), ...rows, ...(pinnedRows.bottom || [])];
|
|
39
|
+
}
|
|
34
40
|
/**
|
|
35
41
|
* @requires useGridSorting (method) - can be after
|
|
36
42
|
* @requires useGridFilter (state) - can be after
|
|
@@ -40,20 +46,20 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
40
46
|
* @requires useGridScroll (method) - can be after
|
|
41
47
|
* @requires useGridColumnSpanning (method) - can be after
|
|
42
48
|
*/
|
|
49
|
+
|
|
50
|
+
|
|
43
51
|
const useGridKeyboardNavigation = (apiRef, props) => {
|
|
44
52
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridKeyboardNavigation');
|
|
45
|
-
const
|
|
53
|
+
const initialCurrentPageRows = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props).rows;
|
|
54
|
+
const currentPageRows = React.useMemo(() => enrichPageRowsWithPinnedRows(apiRef, initialCurrentPageRows), [apiRef, initialCurrentPageRows]);
|
|
46
55
|
/**
|
|
47
56
|
* @param {number} colIndex Index of the column to focus
|
|
48
57
|
* @param {number} rowIndex index of the row to focus
|
|
49
58
|
* @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
|
|
50
59
|
*/
|
|
51
60
|
|
|
52
|
-
const goToCell = React.useCallback((colIndex,
|
|
53
|
-
var _visibleSortedRows$ro;
|
|
54
|
-
|
|
61
|
+
const goToCell = React.useCallback((colIndex, rowId, closestColumnToUse = 'left') => {
|
|
55
62
|
const visibleSortedRows = (0, _gridFilterSelector.gridVisibleSortedRowEntriesSelector)(apiRef);
|
|
56
|
-
const rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
|
|
57
63
|
const nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
|
|
58
64
|
|
|
59
65
|
if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
|
|
@@ -62,12 +68,15 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
62
68
|
} else if (closestColumnToUse === 'right') {
|
|
63
69
|
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
64
70
|
}
|
|
65
|
-
}
|
|
71
|
+
} // `scrollToIndexes` requires a rowIndex relative to all visible rows.
|
|
72
|
+
// Those rows do not include pinned rows, but pinned rows do not need scroll anyway.
|
|
73
|
+
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
const rowIndexRelativeToAllRows = visibleSortedRows.findIndex(row => row.id === rowId);
|
|
76
|
+
logger.debug(`Navigating to cell row ${rowIndexRelativeToAllRows}, col ${colIndex}`);
|
|
68
77
|
apiRef.current.scrollToIndexes({
|
|
69
78
|
colIndex,
|
|
70
|
-
rowIndex
|
|
79
|
+
rowIndex: rowIndexRelativeToAllRows
|
|
71
80
|
});
|
|
72
81
|
const field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
73
82
|
apiRef.current.setCellFocus(rowId, field);
|
|
@@ -80,19 +89,21 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
80
89
|
const field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
81
90
|
apiRef.current.setColumnHeaderFocus(field, event);
|
|
82
91
|
}, [apiRef, logger]);
|
|
92
|
+
const getRowIdFromIndex = React.useCallback(rowIndex => {
|
|
93
|
+
return currentPageRows[rowIndex].id;
|
|
94
|
+
}, [currentPageRows]);
|
|
83
95
|
const handleCellNavigationKeyDown = React.useCallback((params, event) => {
|
|
84
96
|
const dimensions = apiRef.current.getRootDimensions();
|
|
85
97
|
|
|
86
|
-
if (
|
|
98
|
+
if (currentPageRows.length === 0 || !dimensions) {
|
|
87
99
|
return;
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
const viewportPageSize = apiRef.current.unstable_getViewportPageSize();
|
|
91
|
-
const visibleSortedRows = (0, _gridFilterSelector.gridVisibleSortedRowEntriesSelector)(apiRef);
|
|
92
103
|
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
93
|
-
const rowIndexBefore =
|
|
94
|
-
const firstRowIndexInPage =
|
|
95
|
-
const lastRowIndexInPage =
|
|
104
|
+
const rowIndexBefore = currentPageRows.findIndex(row => row.id === params.id);
|
|
105
|
+
const firstRowIndexInPage = 0;
|
|
106
|
+
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
96
107
|
const firstColIndex = 0;
|
|
97
108
|
const lastColIndex = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef).length - 1;
|
|
98
109
|
let shouldPreventDefault = true;
|
|
@@ -103,7 +114,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
103
114
|
{
|
|
104
115
|
// "Enter" is only triggered by the row / cell editing feature
|
|
105
116
|
if (rowIndexBefore < lastRowIndexInPage) {
|
|
106
|
-
goToCell(colIndexBefore, rowIndexBefore + 1);
|
|
117
|
+
goToCell(colIndexBefore, getRowIdFromIndex(rowIndexBefore + 1));
|
|
107
118
|
}
|
|
108
119
|
|
|
109
120
|
break;
|
|
@@ -112,7 +123,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
112
123
|
case 'ArrowUp':
|
|
113
124
|
{
|
|
114
125
|
if (rowIndexBefore > firstRowIndexInPage) {
|
|
115
|
-
goToCell(colIndexBefore, rowIndexBefore - 1);
|
|
126
|
+
goToCell(colIndexBefore, getRowIdFromIndex(rowIndexBefore - 1));
|
|
116
127
|
} else {
|
|
117
128
|
goToHeader(colIndexBefore, event);
|
|
118
129
|
}
|
|
@@ -123,7 +134,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
123
134
|
case 'ArrowRight':
|
|
124
135
|
{
|
|
125
136
|
if (colIndexBefore < lastColIndex) {
|
|
126
|
-
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
137
|
+
goToCell(colIndexBefore + 1, getRowIdFromIndex(rowIndexBefore), 'right');
|
|
127
138
|
}
|
|
128
139
|
|
|
129
140
|
break;
|
|
@@ -132,7 +143,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
132
143
|
case 'ArrowLeft':
|
|
133
144
|
{
|
|
134
145
|
if (colIndexBefore > firstColIndex) {
|
|
135
|
-
goToCell(colIndexBefore - 1, rowIndexBefore);
|
|
146
|
+
goToCell(colIndexBefore - 1, getRowIdFromIndex(rowIndexBefore));
|
|
136
147
|
}
|
|
137
148
|
|
|
138
149
|
break;
|
|
@@ -142,9 +153,9 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
142
153
|
{
|
|
143
154
|
// "Tab" is only triggered by the row / cell editing feature
|
|
144
155
|
if (event.shiftKey && colIndexBefore > firstColIndex) {
|
|
145
|
-
goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
|
|
156
|
+
goToCell(colIndexBefore - 1, getRowIdFromIndex(rowIndexBefore), 'left');
|
|
146
157
|
} else if (!event.shiftKey && colIndexBefore < lastColIndex) {
|
|
147
|
-
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
158
|
+
goToCell(colIndexBefore + 1, getRowIdFromIndex(rowIndexBefore), 'right');
|
|
148
159
|
}
|
|
149
160
|
|
|
150
161
|
break;
|
|
@@ -165,7 +176,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
165
176
|
}
|
|
166
177
|
|
|
167
178
|
if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
|
|
168
|
-
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
179
|
+
goToCell(colIndexBefore, getRowIdFromIndex(Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage)));
|
|
169
180
|
}
|
|
170
181
|
|
|
171
182
|
break;
|
|
@@ -174,7 +185,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
174
185
|
case 'PageDown':
|
|
175
186
|
{
|
|
176
187
|
if (rowIndexBefore < lastRowIndexInPage) {
|
|
177
|
-
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
188
|
+
goToCell(colIndexBefore, getRowIdFromIndex(Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage)));
|
|
178
189
|
}
|
|
179
190
|
|
|
180
191
|
break;
|
|
@@ -186,7 +197,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
186
197
|
const nextRowIndex = Math.max(rowIndexBefore - viewportPageSize, firstRowIndexInPage);
|
|
187
198
|
|
|
188
199
|
if (nextRowIndex !== rowIndexBefore && nextRowIndex >= firstRowIndexInPage) {
|
|
189
|
-
goToCell(colIndexBefore, nextRowIndex);
|
|
200
|
+
goToCell(colIndexBefore, getRowIdFromIndex(nextRowIndex));
|
|
190
201
|
} else {
|
|
191
202
|
goToHeader(colIndexBefore, event);
|
|
192
203
|
}
|
|
@@ -197,9 +208,9 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
197
208
|
case 'Home':
|
|
198
209
|
{
|
|
199
210
|
if (event.ctrlKey || event.metaKey || event.shiftKey) {
|
|
200
|
-
goToCell(firstColIndex, firstRowIndexInPage);
|
|
211
|
+
goToCell(firstColIndex, getRowIdFromIndex(firstRowIndexInPage));
|
|
201
212
|
} else {
|
|
202
|
-
goToCell(firstColIndex, rowIndexBefore);
|
|
213
|
+
goToCell(firstColIndex, getRowIdFromIndex(rowIndexBefore));
|
|
203
214
|
}
|
|
204
215
|
|
|
205
216
|
break;
|
|
@@ -208,9 +219,9 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
208
219
|
case 'End':
|
|
209
220
|
{
|
|
210
221
|
if (event.ctrlKey || event.metaKey || event.shiftKey) {
|
|
211
|
-
goToCell(lastColIndex, lastRowIndexInPage);
|
|
222
|
+
goToCell(lastColIndex, getRowIdFromIndex(lastRowIndexInPage));
|
|
212
223
|
} else {
|
|
213
|
-
goToCell(lastColIndex, rowIndexBefore);
|
|
224
|
+
goToCell(lastColIndex, getRowIdFromIndex(rowIndexBefore));
|
|
214
225
|
}
|
|
215
226
|
|
|
216
227
|
break;
|
|
@@ -225,10 +236,8 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
225
236
|
if (shouldPreventDefault) {
|
|
226
237
|
event.preventDefault();
|
|
227
238
|
}
|
|
228
|
-
}, [apiRef,
|
|
239
|
+
}, [apiRef, currentPageRows, goToCell, goToHeader, getRowIdFromIndex]);
|
|
229
240
|
const handleColumnHeaderKeyDown = React.useCallback((params, event) => {
|
|
230
|
-
var _currentPage$range$fi, _currentPage$range, _currentPage$range$la, _currentPage$range2;
|
|
231
|
-
|
|
232
241
|
const headerTitleNode = event.currentTarget.querySelector(`.${_gridClasses.gridClasses.columnHeaderTitleContainerContent}`);
|
|
233
242
|
const isFromInsideContent = !!headerTitleNode && headerTitleNode.contains(event.target);
|
|
234
243
|
|
|
@@ -246,8 +255,8 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
246
255
|
|
|
247
256
|
const viewportPageSize = apiRef.current.unstable_getViewportPageSize();
|
|
248
257
|
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
249
|
-
const firstRowIndexInPage =
|
|
250
|
-
const lastRowIndexInPage =
|
|
258
|
+
const firstRowIndexInPage = 0;
|
|
259
|
+
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
251
260
|
const firstColIndex = 0;
|
|
252
261
|
const lastColIndex = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef).length - 1;
|
|
253
262
|
let shouldPreventDefault = true;
|
|
@@ -256,7 +265,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
256
265
|
case 'ArrowDown':
|
|
257
266
|
{
|
|
258
267
|
if (firstRowIndexInPage !== null) {
|
|
259
|
-
goToCell(colIndexBefore, firstRowIndexInPage);
|
|
268
|
+
goToCell(colIndexBefore, getRowIdFromIndex(firstRowIndexInPage));
|
|
260
269
|
}
|
|
261
270
|
|
|
262
271
|
break;
|
|
@@ -283,7 +292,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
283
292
|
case 'PageDown':
|
|
284
293
|
{
|
|
285
294
|
if (firstRowIndexInPage !== null && lastRowIndexInPage !== null) {
|
|
286
|
-
goToCell(colIndexBefore, Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage));
|
|
295
|
+
goToCell(colIndexBefore, getRowIdFromIndex(Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage)));
|
|
287
296
|
}
|
|
288
297
|
|
|
289
298
|
break;
|
|
@@ -325,7 +334,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
325
334
|
if (shouldPreventDefault) {
|
|
326
335
|
event.preventDefault();
|
|
327
336
|
}
|
|
328
|
-
}, [apiRef,
|
|
337
|
+
}, [apiRef, currentPageRows, goToCell, goToHeader, getRowIdFromIndex]);
|
|
329
338
|
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
330
339
|
// Ignore portal
|
|
331
340
|
if (!event.currentTarget.contains(event.target)) {
|
|
@@ -19,6 +19,8 @@ var _density = require("../density");
|
|
|
19
19
|
|
|
20
20
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
21
21
|
|
|
22
|
+
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
23
|
+
|
|
22
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
25
|
|
|
24
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -118,7 +120,8 @@ const useGridPageSize = (apiRef, props) => {
|
|
|
118
120
|
return;
|
|
119
121
|
}
|
|
120
122
|
|
|
121
|
-
const
|
|
123
|
+
const pinnedRowsHeight = (0, _gridRowsUtils.calculatePinnedRowsHeight)(apiRef);
|
|
124
|
+
const maximumPageSizeWithoutScrollBar = Math.floor((dimensions.viewportInnerSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom) / rowHeight);
|
|
122
125
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
123
126
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
124
127
|
(0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowsLoadingSelector = exports.gridRowsIdToIdLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthSelector = exports.gridRowIdsSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = void 0;
|
|
6
|
+
exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowsLoadingSelector = exports.gridRowsIdToIdLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthSelector = exports.gridRowIdsSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = exports.gridPinnedRowsSelector = exports.gridPinnedRowsCountSelector = exports.gridAdditionalRowGroupsSelector = void 0;
|
|
7
7
|
|
|
8
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
9
9
|
|
|
@@ -27,4 +27,26 @@ exports.gridRowGroupingNameSelector = gridRowGroupingNameSelector;
|
|
|
27
27
|
const gridRowTreeDepthSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.treeDepth);
|
|
28
28
|
exports.gridRowTreeDepthSelector = gridRowTreeDepthSelector;
|
|
29
29
|
const gridRowIdsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.ids);
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* @ignore - do not document.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
exports.gridRowIdsSelector = gridRowIdsSelector;
|
|
35
|
+
const gridAdditionalRowGroupsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows == null ? void 0 : rows.additionalRowGroups);
|
|
36
|
+
/**
|
|
37
|
+
* @ignore - do not document.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
exports.gridAdditionalRowGroupsSelector = gridAdditionalRowGroupsSelector;
|
|
41
|
+
const gridPinnedRowsSelector = (0, _createSelector.createSelector)(gridAdditionalRowGroupsSelector, additionalRowGroups => additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows);
|
|
42
|
+
/**
|
|
43
|
+
* @ignore - do not document.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
exports.gridPinnedRowsSelector = gridPinnedRowsSelector;
|
|
47
|
+
const gridPinnedRowsCountSelector = (0, _createSelector.createSelector)(gridPinnedRowsSelector, pinnedRows => {
|
|
48
|
+
var _pinnedRows$top, _pinnedRows$bottom;
|
|
49
|
+
|
|
50
|
+
return ((pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.length) || 0) + ((pinnedRows == null ? void 0 : (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.length) || 0);
|
|
51
|
+
});
|
|
52
|
+
exports.gridPinnedRowsCountSelector = gridPinnedRowsCountSelector;
|
|
@@ -5,6 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.calculatePinnedRowsHeight = calculatePinnedRowsHeight;
|
|
8
9
|
exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
|
|
9
10
|
exports.getTreeNodeDescendants = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = exports.createRowsInternalCache = void 0;
|
|
10
11
|
|
|
@@ -12,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
12
13
|
|
|
13
14
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
14
15
|
|
|
16
|
+
var _gridRowsSelector = require("./gridRowsSelector");
|
|
17
|
+
|
|
15
18
|
const _excluded = ["rowsBeforePartialUpdates"];
|
|
16
19
|
|
|
17
20
|
/**
|
|
@@ -73,7 +76,7 @@ const getRowsStateFromCache = ({
|
|
|
73
76
|
previousTree
|
|
74
77
|
}));
|
|
75
78
|
const processedGroupingResponse = apiRef.current.unstable_applyPipeProcessors('hydrateRows', groupingResponse);
|
|
76
|
-
const dataTopLevelRowCount = processedGroupingResponse.treeDepth === 1 ? processedGroupingResponse.ids.length : Object.values(processedGroupingResponse.tree).filter(node => node.parent == null).length;
|
|
79
|
+
const dataTopLevelRowCount = processedGroupingResponse.treeDepth === 1 ? processedGroupingResponse.ids.length : Object.values(processedGroupingResponse.tree).filter(node => node.parent == null && !node.isPinned).length;
|
|
77
80
|
return (0, _extends2.default)({}, processedGroupingResponse, {
|
|
78
81
|
groupingResponseBeforeRowHydration: groupingResponse,
|
|
79
82
|
loading: loadingProp,
|
|
@@ -109,4 +112,22 @@ const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
|
|
|
109
112
|
return validDescendants;
|
|
110
113
|
};
|
|
111
114
|
|
|
112
|
-
exports.getTreeNodeDescendants = getTreeNodeDescendants;
|
|
115
|
+
exports.getTreeNodeDescendants = getTreeNodeDescendants;
|
|
116
|
+
|
|
117
|
+
function calculatePinnedRowsHeight(apiRef) {
|
|
118
|
+
var _pinnedRows$top, _pinnedRows$bottom;
|
|
119
|
+
|
|
120
|
+
const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef);
|
|
121
|
+
const topPinnedRowsHeight = (pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.reduce((acc, value) => {
|
|
122
|
+
acc += apiRef.current.unstable_getRowHeight(value.id);
|
|
123
|
+
return acc;
|
|
124
|
+
}, 0)) || 0;
|
|
125
|
+
const bottomPinnedRowsHeight = (pinnedRows == null ? void 0 : (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.reduce((acc, value) => {
|
|
126
|
+
acc += apiRef.current.unstable_getRowHeight(value.id);
|
|
127
|
+
return acc;
|
|
128
|
+
}, 0)) || 0;
|
|
129
|
+
return {
|
|
130
|
+
top: topPinnedRowsHeight,
|
|
131
|
+
bottom: bottomPinnedRowsHeight
|
|
132
|
+
};
|
|
133
|
+
}
|
|
@@ -4,6 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
var _exportNames = {
|
|
7
|
+
gridRowsStateSelector: true,
|
|
8
|
+
gridRowCountSelector: true,
|
|
9
|
+
gridRowsLoadingSelector: true,
|
|
10
|
+
gridTopLevelRowCountSelector: true,
|
|
11
|
+
gridRowsLookupSelector: true,
|
|
12
|
+
gridRowsIdToIdLookupSelector: true,
|
|
13
|
+
gridRowTreeSelector: true,
|
|
14
|
+
gridRowGroupingNameSelector: true,
|
|
15
|
+
gridRowTreeDepthSelector: true,
|
|
16
|
+
gridRowIdsSelector: true,
|
|
7
17
|
checkGridRowIdIsValid: true
|
|
8
18
|
};
|
|
9
19
|
Object.defineProperty(exports, "checkGridRowIdIsValid", {
|
|
@@ -12,6 +22,66 @@ Object.defineProperty(exports, "checkGridRowIdIsValid", {
|
|
|
12
22
|
return _gridRowsUtils.checkGridRowIdIsValid;
|
|
13
23
|
}
|
|
14
24
|
});
|
|
25
|
+
Object.defineProperty(exports, "gridRowCountSelector", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _gridRowsSelector.gridRowCountSelector;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "gridRowGroupingNameSelector", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _gridRowsSelector.gridRowGroupingNameSelector;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "gridRowIdsSelector", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () {
|
|
40
|
+
return _gridRowsSelector.gridRowIdsSelector;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "gridRowTreeDepthSelector", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _gridRowsSelector.gridRowTreeDepthSelector;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "gridRowTreeSelector", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () {
|
|
52
|
+
return _gridRowsSelector.gridRowTreeSelector;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "gridRowsIdToIdLookupSelector", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () {
|
|
58
|
+
return _gridRowsSelector.gridRowsIdToIdLookupSelector;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "gridRowsLoadingSelector", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () {
|
|
64
|
+
return _gridRowsSelector.gridRowsLoadingSelector;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, "gridRowsLookupSelector", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function () {
|
|
70
|
+
return _gridRowsSelector.gridRowsLookupSelector;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "gridRowsStateSelector", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function () {
|
|
76
|
+
return _gridRowsSelector.gridRowsStateSelector;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, "gridTopLevelRowCountSelector", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function () {
|
|
82
|
+
return _gridRowsSelector.gridTopLevelRowCountSelector;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
15
85
|
|
|
16
86
|
var _gridRowsMetaSelector = require("./gridRowsMetaSelector");
|
|
17
87
|
|
|
@@ -43,16 +113,4 @@ Object.keys(_gridRowsMetaState).forEach(function (key) {
|
|
|
43
113
|
|
|
44
114
|
var _gridRowsSelector = require("./gridRowsSelector");
|
|
45
115
|
|
|
46
|
-
Object.keys(_gridRowsSelector).forEach(function (key) {
|
|
47
|
-
if (key === "default" || key === "__esModule") return;
|
|
48
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
49
|
-
if (key in exports && exports[key] === _gridRowsSelector[key]) return;
|
|
50
|
-
Object.defineProperty(exports, key, {
|
|
51
|
-
enumerable: true,
|
|
52
|
-
get: function () {
|
|
53
|
-
return _gridRowsSelector[key];
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
116
|
var _gridRowsUtils = require("./gridRowsUtils");
|
|
@@ -53,8 +53,11 @@ exports.rowsStateInitializer = rowsStateInitializer;
|
|
|
53
53
|
|
|
54
54
|
const useGridRows = (apiRef, props) => {
|
|
55
55
|
if (process.env.NODE_ENV !== 'production') {
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
try {
|
|
57
|
+
// Freeze the `rows` prop so developers have a fast failure if they try to use Array.prototype.push().
|
|
58
|
+
Object.freeze(props.rows);
|
|
59
|
+
} catch (error) {// Sometimes, it's impossible to freeze, so we give up on it.
|
|
60
|
+
}
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridRows');
|
|
@@ -29,6 +29,8 @@ var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
|
29
29
|
|
|
30
30
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
31
31
|
|
|
32
|
+
var _gridRowsSelector = require("./gridRowsSelector");
|
|
33
|
+
|
|
32
34
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
35
|
|
|
34
36
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -62,13 +64,14 @@ const useGridRowsMeta = (apiRef, props) => {
|
|
|
62
64
|
const paginationState = (0, _useGridSelector.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationSelector);
|
|
63
65
|
const sortingState = (0, _useGridSelector.useGridSelector)(apiRef, _gridSortingSelector.gridSortingStateSelector);
|
|
64
66
|
const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props);
|
|
67
|
+
const pinnedRows = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridPinnedRowsSelector);
|
|
65
68
|
const hydrateRowsMeta = React.useCallback(() => {
|
|
69
|
+
var _pinnedRows$top, _pinnedRows$bottom;
|
|
70
|
+
|
|
66
71
|
hasRowWithAutoHeight.current = false;
|
|
67
72
|
const densityFactor = (0, _densitySelector.gridDensityFactorSelector)(apiRef.current.state, apiRef.current.instanceId);
|
|
68
|
-
const positions = [];
|
|
69
|
-
const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
|
|
70
|
-
positions.push(acc);
|
|
71
73
|
|
|
74
|
+
const calculateRowProcessedSizes = row => {
|
|
72
75
|
if (!rowsHeightLookup.current[row.id]) {
|
|
73
76
|
rowsHeightLookup.current[row.id] = {
|
|
74
77
|
sizes: {
|
|
@@ -140,9 +143,22 @@ const useGridRowsMeta = (apiRef, props) => {
|
|
|
140
143
|
|
|
141
144
|
const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
142
145
|
rowsHeightLookup.current[row.id].sizes = processedSizes;
|
|
146
|
+
return processedSizes;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const positions = [];
|
|
150
|
+
const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
|
|
151
|
+
positions.push(acc);
|
|
152
|
+
const processedSizes = calculateRowProcessedSizes(row);
|
|
143
153
|
const finalRowHeight = Object.values(processedSizes).reduce((acc2, value) => acc2 + value, 0);
|
|
144
154
|
return acc + finalRowHeight;
|
|
145
155
|
}, 0);
|
|
156
|
+
pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.forEach(row => {
|
|
157
|
+
calculateRowProcessedSizes(row);
|
|
158
|
+
});
|
|
159
|
+
pinnedRows == null ? void 0 : (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.forEach(row => {
|
|
160
|
+
calculateRowProcessedSizes(row);
|
|
161
|
+
});
|
|
146
162
|
apiRef.current.setState(state => {
|
|
147
163
|
return (0, _extends2.default)({}, state, {
|
|
148
164
|
rowsMeta: {
|
|
@@ -158,7 +174,7 @@ const useGridRowsMeta = (apiRef, props) => {
|
|
|
158
174
|
}
|
|
159
175
|
|
|
160
176
|
apiRef.current.forceUpdate();
|
|
161
|
-
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
|
|
177
|
+
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight, pinnedRows]);
|
|
162
178
|
const getRowHeight = React.useCallback(rowId => {
|
|
163
179
|
const height = rowsHeightLookup.current[rowId];
|
|
164
180
|
return height ? height.sizes.base : rowHeightFromDensity;
|
|
@@ -18,7 +18,8 @@ const flatRowTreeCreationMethod = ({
|
|
|
18
18
|
for (let i = 0; i < ids.length; i += 1) {
|
|
19
19
|
const rowId = ids[i];
|
|
20
20
|
|
|
21
|
-
if (previousTree && previousTree[rowId] && previousTree[rowId].depth === 0 && previousTree[rowId].parent == null
|
|
21
|
+
if (previousTree && previousTree[rowId] && previousTree[rowId].depth === 0 && previousTree[rowId].parent == null && // pinned row can be unpinned
|
|
22
|
+
!previousTree[rowId].isPinned) {
|
|
22
23
|
tree[rowId] = previousTree[rowId];
|
|
23
24
|
} else {
|
|
24
25
|
tree[rowId] = {
|
|
@@ -23,6 +23,8 @@ var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
|
23
23
|
|
|
24
24
|
var _gridFilterSelector = require("../filter/gridFilterSelector");
|
|
25
25
|
|
|
26
|
+
var _gridClasses = require("../../../constants/gridClasses");
|
|
27
|
+
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
29
|
|
|
28
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -108,13 +110,17 @@ const useGridScroll = (apiRef, props) => {
|
|
|
108
110
|
}
|
|
109
111
|
|
|
110
112
|
if (params.rowIndex != null) {
|
|
113
|
+
var _querySelector, _querySelector2;
|
|
114
|
+
|
|
111
115
|
const rowsMeta = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state);
|
|
112
116
|
const page = (0, _gridPaginationSelector.gridPageSelector)(apiRef);
|
|
113
117
|
const pageSize = (0, _gridPaginationSelector.gridPageSizeSelector)(apiRef);
|
|
114
118
|
const elementIndex = !props.pagination ? params.rowIndex : params.rowIndex - page * pageSize;
|
|
115
119
|
const targetOffsetHeight = rowsMeta.positions[elementIndex + 1] ? rowsMeta.positions[elementIndex + 1] - rowsMeta.positions[elementIndex] : rowsMeta.currentPageTotalHeight - rowsMeta.positions[elementIndex];
|
|
120
|
+
const topPinnedRowsHeight = ((_querySelector = windowRef.current.querySelector(`.${_gridClasses.gridClasses['pinnedRows--top']}`)) == null ? void 0 : _querySelector.clientHeight) || 0;
|
|
121
|
+
const bottomPinnedRowsHeight = ((_querySelector2 = windowRef.current.querySelector(`.${_gridClasses.gridClasses['pinnedRows--bottom']}`)) == null ? void 0 : _querySelector2.clientHeight) || 0;
|
|
116
122
|
scrollCoordinates.top = scrollIntoView({
|
|
117
|
-
clientHeight: windowRef.current.clientHeight,
|
|
123
|
+
clientHeight: windowRef.current.clientHeight - topPinnedRowsHeight - bottomPinnedRowsHeight,
|
|
118
124
|
scrollTop: windowRef.current.scrollTop,
|
|
119
125
|
offsetHeight: targetOffsetHeight,
|
|
120
126
|
offsetTop: rowsMeta.positions[elementIndex]
|
|
@@ -143,13 +143,13 @@ const useGridSelection = (apiRef, props) => {
|
|
|
143
143
|
}, [apiRef, logger]);
|
|
144
144
|
const isRowSelected = React.useCallback(id => (0, _gridSelectionSelector.gridSelectionStateSelector)(apiRef.current.state).includes(id), [apiRef]);
|
|
145
145
|
const isRowSelectable = React.useCallback(id => {
|
|
146
|
-
var _apiRef$current$getRo;
|
|
147
|
-
|
|
148
146
|
if (propIsRowSelectable && !propIsRowSelectable(apiRef.current.getRowParams(id))) {
|
|
149
147
|
return false;
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
|
|
150
|
+
const rowNode = apiRef.current.getRowNode(id);
|
|
151
|
+
|
|
152
|
+
if ((rowNode == null ? void 0 : rowNode.position) === 'footer' || rowNode != null && rowNode.isPinned) {
|
|
153
153
|
return false;
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -299,6 +299,10 @@ const useGridSelection = (apiRef, props) => {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
+
if (params.rowNode.isPinned) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
|
|
302
306
|
if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
|
|
303
307
|
expandMouseRowRangeSelection(params.id);
|
|
304
308
|
} else {
|
|
@@ -225,6 +225,10 @@ const useGridSorting = (apiRef, props) => {
|
|
|
225
225
|
const bodyRowIds = [];
|
|
226
226
|
const footerRowIds = [];
|
|
227
227
|
(0, _rows.gridRowIdsSelector)(apiRef).forEach(rowId => {
|
|
228
|
+
if (rowTree[rowId].isPinned) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
|
|
228
232
|
if (rowTree[rowId].position === 'footer') {
|
|
229
233
|
footerRowIds.push(rowId);
|
|
230
234
|
} else {
|
|
@@ -237,6 +241,10 @@ const useGridSorting = (apiRef, props) => {
|
|
|
237
241
|
const bodyRows = [];
|
|
238
242
|
const footerRowIds = [];
|
|
239
243
|
Object.values(rowTree).forEach(rowNode => {
|
|
244
|
+
if (rowNode.isPinned) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
240
248
|
if (rowNode.position === 'footer') {
|
|
241
249
|
footerRowIds.push(rowNode.id);
|
|
242
250
|
} else {
|