@mui/x-data-grid 6.7.0 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +145 -5541
- package/components/GridColumnHeaders.d.ts +2 -2
- package/components/GridColumnHeaders.js +3 -1
- package/components/GridPagination.d.ts +2 -2
- package/components/GridRow.d.ts +2 -2
- package/components/GridRow.js +33 -79
- package/components/cell/GridCell.d.ts +24 -15
- package/components/cell/GridCell.js +422 -45
- package/components/cell/GridEditInputCell.js +9 -9
- package/components/cell/index.d.ts +2 -1
- package/components/cell/index.js +1 -1
- package/components/containers/GridRootStyles.js +30 -16
- package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/toolbar/GridToolbar.js +2 -2
- package/components/virtualization/GridVirtualScroller.js +4 -9
- package/components/virtualization/GridVirtualScrollerContent.js +11 -20
- package/constants/defaultGridSlotsComponents.js +6 -2
- package/hooks/core/useGridApiInitialization.js +4 -1
- package/hooks/core/useGridStateInitialization.js +2 -9
- package/hooks/features/clipboard/useGridClipboard.js +1 -4
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
- package/hooks/features/columns/gridColumnsSelector.js +7 -7
- package/hooks/features/dimensions/useGridDimensions.js +6 -12
- package/hooks/features/editing/useGridCellEditing.js +5 -3
- package/hooks/features/editing/useGridRowEditing.js +14 -6
- package/hooks/features/filter/gridFilterSelector.js +8 -8
- package/hooks/features/filter/gridFilterUtils.d.ts +4 -1
- package/hooks/features/filter/gridFilterUtils.js +19 -13
- package/hooks/features/filter/useGridFilter.js +2 -1
- package/hooks/features/focus/useGridFocus.js +9 -4
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
- package/hooks/features/pagination/gridPaginationSelector.js +4 -4
- package/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
- package/hooks/features/rows/gridRowsSelector.js +3 -3
- package/hooks/features/rows/useGridParamsApi.d.ts +2 -0
- package/hooks/features/rows/useGridParamsApi.js +7 -15
- package/hooks/features/sorting/gridSortingSelector.js +3 -3
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +8 -816
- package/hooks/features/virtualization/useGridVirtualScroller.js +40 -38
- package/hooks/utils/index.d.ts +1 -1
- package/hooks/utils/index.js +1 -1
- package/hooks/utils/useGridSelector.d.ts +3 -1
- package/hooks/utils/useGridSelector.js +37 -6
- package/hooks/utils/useLazyRef.d.ts +2 -0
- package/hooks/utils/useLazyRef.js +9 -0
- package/hooks/utils/useOnMount.d.ts +2 -0
- package/hooks/utils/useOnMount.js +7 -0
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +1 -1
- package/legacy/components/GridColumnHeaders.js +3 -1
- package/legacy/components/GridRow.js +35 -79
- package/legacy/components/cell/GridCell.js +425 -46
- package/legacy/components/cell/GridEditInputCell.js +9 -9
- package/legacy/components/cell/index.js +1 -1
- package/legacy/components/containers/GridRootStyles.js +20 -17
- package/legacy/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/legacy/components/toolbar/GridToolbar.js +2 -2
- package/legacy/components/virtualization/GridVirtualScroller.js +4 -7
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +10 -17
- package/legacy/constants/defaultGridSlotsComponents.js +6 -2
- package/legacy/hooks/core/useGridApiInitialization.js +4 -1
- package/legacy/hooks/core/useGridStateInitialization.js +2 -7
- package/legacy/hooks/features/clipboard/useGridClipboard.js +1 -4
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
- package/legacy/hooks/features/columns/gridColumnsSelector.js +7 -7
- package/legacy/hooks/features/dimensions/useGridDimensions.js +6 -12
- package/legacy/hooks/features/editing/useGridCellEditing.js +5 -3
- package/legacy/hooks/features/editing/useGridRowEditing.js +15 -7
- package/legacy/hooks/features/filter/gridFilterSelector.js +8 -8
- package/legacy/hooks/features/filter/gridFilterUtils.js +23 -19
- package/legacy/hooks/features/filter/useGridFilter.js +2 -1
- package/legacy/hooks/features/focus/useGridFocus.js +9 -4
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
- package/legacy/hooks/features/pagination/gridPaginationSelector.js +4 -4
- package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
- package/legacy/hooks/features/rows/gridRowsSelector.js +3 -3
- package/legacy/hooks/features/rows/useGridParamsApi.js +23 -15
- package/legacy/hooks/features/sorting/gridSortingSelector.js +3 -3
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +38 -34
- package/legacy/hooks/utils/index.js +1 -1
- package/legacy/hooks/utils/useGridSelector.js +43 -5
- package/legacy/hooks/utils/useLazyRef.js +9 -0
- package/legacy/hooks/utils/useOnMount.js +7 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +1 -1
- package/legacy/locales/elGR.js +70 -79
- package/legacy/locales/ptBR.js +12 -13
- package/legacy/utils/Store.js +34 -0
- package/legacy/utils/createSelector.js +74 -6
- package/legacy/utils/doesSupportPreventScroll.js +13 -0
- package/legacy/utils/fastMemo.js +5 -0
- package/legacy/utils/fastObjectShallowCompare.js +32 -0
- package/legacy/utils/keyboardUtils.js +4 -2
- package/locales/elGR.js +66 -79
- package/locales/ptBR.js +12 -13
- package/models/api/gridCoreApi.d.ts +6 -0
- package/models/colDef/gridColDef.d.ts +4 -3
- package/models/colDef/gridColType.d.ts +3 -1
- package/models/events/gridEventLookup.d.ts +3 -3
- package/modern/components/GridColumnHeaders.js +3 -1
- package/modern/components/GridRow.js +32 -79
- package/modern/components/cell/GridCell.js +421 -45
- package/modern/components/cell/GridEditInputCell.js +9 -9
- package/modern/components/cell/index.js +1 -1
- package/modern/components/containers/GridRootStyles.js +30 -16
- package/modern/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/modern/components/toolbar/GridToolbar.js +2 -2
- package/modern/components/virtualization/GridVirtualScroller.js +4 -9
- package/modern/components/virtualization/GridVirtualScrollerContent.js +10 -20
- package/modern/constants/defaultGridSlotsComponents.js +6 -2
- package/modern/hooks/core/useGridApiInitialization.js +4 -1
- package/modern/hooks/core/useGridStateInitialization.js +2 -9
- package/modern/hooks/features/clipboard/useGridClipboard.js +1 -4
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
- package/modern/hooks/features/columns/gridColumnsSelector.js +7 -7
- package/modern/hooks/features/dimensions/useGridDimensions.js +6 -12
- package/modern/hooks/features/editing/useGridCellEditing.js +5 -3
- package/modern/hooks/features/editing/useGridRowEditing.js +14 -6
- package/modern/hooks/features/filter/gridFilterSelector.js +8 -8
- package/modern/hooks/features/filter/gridFilterUtils.js +17 -12
- package/modern/hooks/features/filter/useGridFilter.js +2 -1
- package/modern/hooks/features/focus/useGridFocus.js +8 -4
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
- package/modern/hooks/features/pagination/gridPaginationSelector.js +4 -4
- package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
- package/modern/hooks/features/rows/gridRowsSelector.js +3 -3
- package/modern/hooks/features/rows/useGridParamsApi.js +7 -15
- package/modern/hooks/features/sorting/gridSortingSelector.js +3 -3
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +40 -38
- package/modern/hooks/utils/index.js +1 -1
- package/modern/hooks/utils/useGridSelector.js +37 -6
- package/modern/hooks/utils/useLazyRef.js +9 -0
- package/modern/hooks/utils/useOnMount.js +7 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -1
- package/modern/locales/elGR.js +66 -79
- package/modern/locales/ptBR.js +12 -13
- package/modern/utils/Store.js +24 -0
- package/modern/utils/createSelector.js +74 -6
- package/modern/utils/doesSupportPreventScroll.js +13 -0
- package/modern/utils/fastMemo.js +5 -0
- package/modern/utils/fastObjectShallowCompare.js +32 -0
- package/modern/utils/keyboardUtils.js +4 -2
- package/node/components/GridColumnHeaders.js +4 -2
- package/node/components/GridRow.js +32 -79
- package/node/components/cell/GridCell.js +424 -47
- package/node/components/cell/GridEditInputCell.js +9 -9
- package/node/components/cell/index.js +17 -10
- package/node/components/containers/GridRootStyles.js +30 -16
- package/node/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/node/components/toolbar/GridToolbar.js +2 -2
- package/node/components/virtualization/GridVirtualScroller.js +4 -9
- package/node/components/virtualization/GridVirtualScrollerContent.js +10 -20
- package/node/constants/defaultGridSlotsComponents.js +4 -1
- package/node/hooks/core/useGridApiInitialization.js +4 -1
- package/node/hooks/core/useGridStateInitialization.js +2 -9
- package/node/hooks/features/clipboard/useGridClipboard.js +1 -4
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +3 -3
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +8 -2
- package/node/hooks/features/columns/gridColumnsSelector.js +6 -6
- package/node/hooks/features/dimensions/useGridDimensions.js +6 -12
- package/node/hooks/features/editing/useGridCellEditing.js +5 -3
- package/node/hooks/features/editing/useGridRowEditing.js +14 -6
- package/node/hooks/features/filter/gridFilterSelector.js +7 -7
- package/node/hooks/features/filter/gridFilterUtils.js +17 -12
- package/node/hooks/features/filter/useGridFilter.js +2 -1
- package/node/hooks/features/focus/useGridFocus.js +8 -4
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
- package/node/hooks/features/pagination/gridPaginationSelector.js +3 -3
- package/node/hooks/features/rowSelection/gridRowSelectionSelector.js +2 -2
- package/node/hooks/features/rows/gridRowsSelector.js +2 -2
- package/node/hooks/features/rows/useGridParamsApi.js +9 -15
- package/node/hooks/features/sorting/gridSortingSelector.js +2 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +40 -36
- package/node/hooks/utils/index.js +14 -10
- package/node/hooks/utils/useGridSelector.js +41 -7
- package/node/hooks/utils/useLazyRef.js +17 -0
- package/node/hooks/utils/useOnMount.js +15 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +7 -0
- package/node/locales/elGR.js +66 -79
- package/node/locales/ptBR.js +12 -13
- package/node/utils/Store.js +31 -0
- package/node/utils/createSelector.js +77 -8
- package/node/utils/doesSupportPreventScroll.js +19 -0
- package/node/utils/fastMemo.js +13 -0
- package/node/utils/fastObjectShallowCompare.js +38 -0
- package/node/utils/keyboardUtils.js +4 -2
- package/package.json +2 -2
- package/utils/Store.d.ts +11 -0
- package/utils/Store.js +24 -0
- package/utils/createSelector.d.ts +1 -0
- package/utils/createSelector.js +74 -6
- package/utils/doesSupportPreventScroll.d.ts +1 -0
- package/utils/doesSupportPreventScroll.js +13 -0
- package/utils/fastMemo.d.ts +1 -0
- package/utils/fastMemo.js +5 -0
- package/utils/fastObjectShallowCompare.d.ts +1 -0
- package/utils/fastObjectShallowCompare.js +32 -0
- package/utils/keyboardUtils.js +4 -2
|
@@ -53,7 +53,7 @@ const gridFilteredDescendantCountLookupSelector = (0, _createSelector.createSele
|
|
|
53
53
|
* @category Filtering
|
|
54
54
|
*/
|
|
55
55
|
exports.gridFilteredDescendantCountLookupSelector = gridFilteredDescendantCountLookupSelector;
|
|
56
|
-
const gridExpandedSortedRowEntriesSelector = (0, _createSelector.
|
|
56
|
+
const gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -61,7 +61,7 @@ const gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelector)
|
|
|
61
61
|
* @category Filtering
|
|
62
62
|
*/
|
|
63
63
|
exports.gridExpandedSortedRowEntriesSelector = gridExpandedSortedRowEntriesSelector;
|
|
64
|
-
const gridExpandedSortedRowIdsSelector = (0, _createSelector.
|
|
64
|
+
const gridExpandedSortedRowIdsSelector = (0, _createSelector.createSelectorMemoized)(gridExpandedSortedRowEntriesSelector, visibleSortedRowEntries => visibleSortedRowEntries.map(row => row.id));
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* Get the id and the model of the rows accessible after the filtering process.
|
|
@@ -69,7 +69,7 @@ const gridExpandedSortedRowIdsSelector = (0, _createSelector.createSelector)(gri
|
|
|
69
69
|
* @category Filtering
|
|
70
70
|
*/
|
|
71
71
|
exports.gridExpandedSortedRowIdsSelector = gridExpandedSortedRowIdsSelector;
|
|
72
|
-
const gridFilteredSortedRowEntriesSelector = (0, _createSelector.
|
|
72
|
+
const gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -77,14 +77,14 @@ const gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelector)
|
|
|
77
77
|
* @category Filtering
|
|
78
78
|
*/
|
|
79
79
|
exports.gridFilteredSortedRowEntriesSelector = gridFilteredSortedRowEntriesSelector;
|
|
80
|
-
const gridFilteredSortedRowIdsSelector = (0, _createSelector.
|
|
80
|
+
const gridFilteredSortedRowIdsSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.map(row => row.id));
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
83
|
* Get the id and the model of the top level rows accessible after the filtering process.
|
|
84
84
|
* @category Filtering
|
|
85
85
|
*/
|
|
86
86
|
exports.gridFilteredSortedRowIdsSelector = gridFilteredSortedRowIdsSelector;
|
|
87
|
-
const gridFilteredSortedTopLevelRowEntriesSelector = (0, _createSelector.
|
|
87
|
+
const gridFilteredSortedTopLevelRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridExpandedSortedRowEntriesSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {
|
|
88
88
|
if (rowTreeDepth < 2) {
|
|
89
89
|
return visibleSortedRows;
|
|
90
90
|
}
|
|
@@ -110,7 +110,7 @@ const gridFilteredTopLevelRowCountSelector = (0, _createSelector.createSelector)
|
|
|
110
110
|
* @ignore - do not document.
|
|
111
111
|
*/
|
|
112
112
|
exports.gridFilteredTopLevelRowCountSelector = gridFilteredTopLevelRowCountSelector;
|
|
113
|
-
const gridFilterActiveItemsSelector = (0, _createSelector.
|
|
113
|
+
const gridFilterActiveItemsSelector = (0, _createSelector.createSelectorMemoized)(gridFilterModelSelector, _gridColumnsSelector.gridColumnLookupSelector, (filterModel, columnLookup) => filterModel.items?.filter(item => {
|
|
114
114
|
if (!item.field) {
|
|
115
115
|
return false;
|
|
116
116
|
}
|
|
@@ -129,7 +129,7 @@ exports.gridFilterActiveItemsSelector = gridFilterActiveItemsSelector;
|
|
|
129
129
|
* @category Filtering
|
|
130
130
|
* @ignore - do not document.
|
|
131
131
|
*/
|
|
132
|
-
const gridFilterActiveItemsLookupSelector = (0, _createSelector.
|
|
132
|
+
const gridFilterActiveItemsLookupSelector = (0, _createSelector.createSelectorMemoized)(gridFilterActiveItemsSelector, activeFilters => {
|
|
133
133
|
const result = activeFilters.reduce((res, filterItem) => {
|
|
134
134
|
if (!res[filterItem.field]) {
|
|
135
135
|
res[filterItem.field] = [filterItem];
|
|
@@ -194,21 +194,25 @@ const buildAggregatedFilterApplier = (filterModel, apiRef) => {
|
|
|
194
194
|
});
|
|
195
195
|
};
|
|
196
196
|
exports.buildAggregatedFilterApplier = buildAggregatedFilterApplier;
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
197
|
+
const isNotNull = result => result != null;
|
|
198
|
+
const filterModelItems = (cache, apiRef, items) => {
|
|
199
|
+
if (!cache.cleanedFilterItems) {
|
|
200
|
+
cache.cleanedFilterItems = items.filter(item => getFilterCallbackFromItem(item, apiRef) !== null);
|
|
201
|
+
}
|
|
202
|
+
return cache.cleanedFilterItems;
|
|
203
|
+
};
|
|
204
|
+
const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel, apiRef, cache) => {
|
|
205
|
+
const cleanedFilterItems = filterModelItems(cache, apiRef, filterModel.items);
|
|
206
|
+
const cleanedFilterItemResults = allFilterItemResults.filter(isNotNull);
|
|
207
|
+
const cleanedQuickFilterResults = allQuickFilterResults.filter(isNotNull);
|
|
205
208
|
|
|
206
209
|
// get result for filter items model
|
|
207
|
-
if (
|
|
210
|
+
if (cleanedFilterItemResults.length > 0) {
|
|
208
211
|
// Return true if the item pass with one of the rows
|
|
209
212
|
const filterItemPredicate = item => {
|
|
210
|
-
return
|
|
213
|
+
return cleanedFilterItemResults.some(filterItemResult => filterItemResult[item.id]);
|
|
211
214
|
};
|
|
215
|
+
const logicOperator = filterModel.logicOperator ?? (0, _gridFilterState.getDefaultGridFilterModel)().logicOperator;
|
|
212
216
|
if (logicOperator === _models.GridLogicOperator.And) {
|
|
213
217
|
const passesAllFilters = cleanedFilterItems.every(filterItemPredicate);
|
|
214
218
|
if (!passesAllFilters) {
|
|
@@ -223,11 +227,12 @@ const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterMode
|
|
|
223
227
|
}
|
|
224
228
|
|
|
225
229
|
// get result for quick filter model
|
|
226
|
-
if (
|
|
230
|
+
if (cleanedQuickFilterResults.length > 0 && filterModel.quickFilterValues != null) {
|
|
227
231
|
// Return true if the item pass with one of the rows
|
|
228
232
|
const quickFilterValuePredicate = value => {
|
|
229
|
-
return
|
|
233
|
+
return cleanedQuickFilterResults.some(quickFilterValueResult => quickFilterValueResult[value]);
|
|
230
234
|
};
|
|
235
|
+
const quickFilterLogicOperator = filterModel.quickFilterLogicOperator ?? (0, _gridFilterState.getDefaultGridFilterModel)().quickFilterLogicOperator;
|
|
231
236
|
if (quickFilterLogicOperator === _models.GridLogicOperator.And) {
|
|
232
237
|
const passesAllQuickFilterValues = filterModel.quickFilterValues.every(quickFilterValuePredicate);
|
|
233
238
|
if (!passesAllQuickFilterValues) {
|
|
@@ -265,6 +265,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
265
265
|
const tree = (0, _rows.gridRowTreeSelector)(apiRef);
|
|
266
266
|
const rowIds = tree[_rows.GRID_ROOT_GROUP_ID].children;
|
|
267
267
|
const filteredRowsLookup = {};
|
|
268
|
+
const filterCache = {};
|
|
268
269
|
for (let i = 0; i < rowIds.length; i += 1) {
|
|
269
270
|
const rowId = rowIds[i];
|
|
270
271
|
let isRowPassing;
|
|
@@ -275,7 +276,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
275
276
|
passingFilterItems,
|
|
276
277
|
passingQuickFilterValues
|
|
277
278
|
} = params.isRowMatchingFilters(rowId);
|
|
278
|
-
isRowPassing = (0, _gridFilterUtils.passFilterLogic)([passingFilterItems], [passingQuickFilterValues], params.filterModel, apiRef);
|
|
279
|
+
isRowPassing = (0, _gridFilterUtils.passFilterLogic)([passingFilterItems], [passingQuickFilterValues], params.filterModel, apiRef, filterCache);
|
|
279
280
|
}
|
|
280
281
|
filteredRowsLookup[rowId] = isRowPassing;
|
|
281
282
|
}
|
|
@@ -8,6 +8,7 @@ exports.useGridFocus = exports.focusStateInitializer = void 0;
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _utils = require("@mui/utils");
|
|
11
|
+
var _gridClasses = require("../../../constants/gridClasses");
|
|
11
12
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
12
13
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
13
14
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
@@ -246,7 +247,6 @@ const useGridFocus = (apiRef, props) => {
|
|
|
246
247
|
}
|
|
247
248
|
apiRef.current.setColumnHeaderFocus(field, event);
|
|
248
249
|
}, [apiRef]);
|
|
249
|
-
const focussedColumnGroup = (0, _gridFocusStateSelector.unstable_gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
250
250
|
const handleColumnGroupHeaderFocus = React.useCallback(({
|
|
251
251
|
fields,
|
|
252
252
|
depth
|
|
@@ -254,13 +254,17 @@ const useGridFocus = (apiRef, props) => {
|
|
|
254
254
|
if (event.target !== event.currentTarget) {
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
|
-
|
|
257
|
+
const focusedColumnGroup = (0, _gridFocusStateSelector.unstable_gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
258
|
+
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
258
259
|
// This group cell has already been focused
|
|
259
260
|
return;
|
|
260
261
|
}
|
|
261
262
|
apiRef.current.setColumnGroupHeaderFocus(fields[0], depth, event);
|
|
262
|
-
}, [apiRef
|
|
263
|
-
const handleBlur = React.useCallback(() => {
|
|
263
|
+
}, [apiRef]);
|
|
264
|
+
const handleBlur = React.useCallback((_, event) => {
|
|
265
|
+
if (event.relatedTarget?.className.includes(_gridClasses.gridClasses.columnHeader)) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
264
268
|
logger.debug(`Clearing focus`);
|
|
265
269
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
266
270
|
focus: {
|
|
@@ -19,7 +19,6 @@ var _gridDetailPanelToggleField = require("../../../constants/gridDetailPanelTog
|
|
|
19
19
|
var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
20
20
|
var _focus = require("../focus");
|
|
21
21
|
var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
|
|
22
|
-
var _useGridSelector = require("../../utils/useGridSelector");
|
|
23
22
|
var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilteringSelectors");
|
|
24
23
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
25
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); }
|
|
@@ -330,12 +329,12 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
330
329
|
event.preventDefault();
|
|
331
330
|
}
|
|
332
331
|
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
333
|
-
const focusedColumnGroup = (0, _useGridSelector.useGridSelector)(apiRef, _focus.unstable_gridFocusColumnGroupHeaderSelector);
|
|
334
332
|
const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {
|
|
335
333
|
const dimensions = apiRef.current.getRootDimensions();
|
|
336
334
|
if (!dimensions) {
|
|
337
335
|
return;
|
|
338
336
|
}
|
|
337
|
+
const focusedColumnGroup = (0, _focus.unstable_gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
339
338
|
if (focusedColumnGroup === null) {
|
|
340
339
|
return;
|
|
341
340
|
}
|
|
@@ -419,7 +418,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
419
418
|
if (shouldPreventDefault) {
|
|
420
419
|
event.preventDefault();
|
|
421
420
|
}
|
|
422
|
-
}, [apiRef,
|
|
421
|
+
}, [apiRef, currentPageRows.length, goToHeader, goToGroupHeader, goToCell, getRowIdFromIndex]);
|
|
423
422
|
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
424
423
|
// Ignore portal
|
|
425
424
|
if (!event.currentTarget.contains(event.target)) {
|
|
@@ -47,7 +47,7 @@ const gridPageCountSelector = (0, _createSelector.createSelector)(gridPagination
|
|
|
47
47
|
* @category Pagination
|
|
48
48
|
*/
|
|
49
49
|
exports.gridPageCountSelector = gridPageCountSelector;
|
|
50
|
-
const gridPaginationRowRangeSelector = (0, _createSelector.
|
|
50
|
+
const gridPaginationRowRangeSelector = (0, _createSelector.createSelectorMemoized)(gridPaginationModelSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, _gridFilterSelector.gridExpandedSortedRowEntriesSelector, _gridFilterSelector.gridFilteredSortedTopLevelRowEntriesSelector, (paginationModel, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {
|
|
51
51
|
const visibleTopLevelRowCount = visibleSortedTopLevelRowEntries.length;
|
|
52
52
|
const topLevelFirstRowIndex = Math.min(paginationModel.pageSize * paginationModel.page, visibleTopLevelRowCount - 1);
|
|
53
53
|
const topLevelLastRowIndex = Math.min(topLevelFirstRowIndex + paginationModel.pageSize - 1, visibleTopLevelRowCount - 1);
|
|
@@ -90,7 +90,7 @@ const gridPaginationRowRangeSelector = (0, _createSelector.createSelector)(gridP
|
|
|
90
90
|
* @category Pagination
|
|
91
91
|
*/
|
|
92
92
|
exports.gridPaginationRowRangeSelector = gridPaginationRowRangeSelector;
|
|
93
|
-
const gridPaginatedVisibleSortedGridRowEntriesSelector = (0, _createSelector.
|
|
93
|
+
const gridPaginatedVisibleSortedGridRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(_gridFilterSelector.gridExpandedSortedRowEntriesSelector, gridPaginationRowRangeSelector, (visibleSortedRowEntries, paginationRange) => {
|
|
94
94
|
if (!paginationRange) {
|
|
95
95
|
return [];
|
|
96
96
|
}
|
|
@@ -102,7 +102,7 @@ const gridPaginatedVisibleSortedGridRowEntriesSelector = (0, _createSelector.cre
|
|
|
102
102
|
* @category Pagination
|
|
103
103
|
*/
|
|
104
104
|
exports.gridPaginatedVisibleSortedGridRowEntriesSelector = gridPaginatedVisibleSortedGridRowEntriesSelector;
|
|
105
|
-
const gridPaginatedVisibleSortedGridRowIdsSelector = (0, _createSelector.
|
|
105
|
+
const gridPaginatedVisibleSortedGridRowIdsSelector = (0, _createSelector.createSelectorMemoized)(_gridFilterSelector.gridExpandedSortedRowIdsSelector, gridPaginationRowRangeSelector, (visibleSortedRowIds, paginationRange) => {
|
|
106
106
|
if (!paginationRange) {
|
|
107
107
|
return [];
|
|
108
108
|
}
|
|
@@ -10,9 +10,9 @@ const gridRowSelectionStateSelector = state => state.rowSelection;
|
|
|
10
10
|
exports.gridRowSelectionStateSelector = gridRowSelectionStateSelector;
|
|
11
11
|
const selectedGridRowsCountSelector = (0, _createSelector.createSelector)(gridRowSelectionStateSelector, selection => selection.length);
|
|
12
12
|
exports.selectedGridRowsCountSelector = selectedGridRowsCountSelector;
|
|
13
|
-
const selectedGridRowsSelector = (0, _createSelector.
|
|
13
|
+
const selectedGridRowsSelector = (0, _createSelector.createSelectorMemoized)(gridRowSelectionStateSelector, _gridRowsSelector.gridRowsLookupSelector, (selectedRows, rowsLookup) => new Map(selectedRows.map(id => [id, rowsLookup[id]])));
|
|
14
14
|
exports.selectedGridRowsSelector = selectedGridRowsSelector;
|
|
15
|
-
const selectedIdsLookupSelector = (0, _createSelector.
|
|
15
|
+
const selectedIdsLookupSelector = (0, _createSelector.createSelectorMemoized)(gridRowSelectionStateSelector, selection => selection.reduce((lookup, rowId) => {
|
|
16
16
|
lookup[rowId] = rowId;
|
|
17
17
|
return lookup;
|
|
18
18
|
}, {}));
|
|
@@ -24,7 +24,7 @@ const gridRowGroupingNameSelector = (0, _createSelector.createSelector)(gridRows
|
|
|
24
24
|
exports.gridRowGroupingNameSelector = gridRowGroupingNameSelector;
|
|
25
25
|
const gridRowTreeDepthsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.treeDepths);
|
|
26
26
|
exports.gridRowTreeDepthsSelector = gridRowTreeDepthsSelector;
|
|
27
|
-
const gridRowMaximumTreeDepthSelector = (0, _createSelector.
|
|
27
|
+
const gridRowMaximumTreeDepthSelector = (0, _createSelector.createSelectorMemoized)(gridRowsStateSelector, rows => {
|
|
28
28
|
const entries = Object.entries(rows.treeDepths);
|
|
29
29
|
if (entries.length === 0) {
|
|
30
30
|
return 1;
|
|
@@ -44,7 +44,7 @@ const gridAdditionalRowGroupsSelector = (0, _createSelector.createSelector)(grid
|
|
|
44
44
|
* @ignore - do not document.
|
|
45
45
|
*/
|
|
46
46
|
exports.gridAdditionalRowGroupsSelector = gridAdditionalRowGroupsSelector;
|
|
47
|
-
const gridPinnedRowsSelector = (0, _createSelector.
|
|
47
|
+
const gridPinnedRowsSelector = (0, _createSelector.createSelectorMemoized)(gridAdditionalRowGroupsSelector, additionalRowGroups => {
|
|
48
48
|
const rawPinnedRows = additionalRowGroups?.pinnedRows;
|
|
49
49
|
return {
|
|
50
50
|
bottom: rawPinnedRows?.bottom?.map(rowEntry => ({
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.MissingRowIdError = void 0;
|
|
6
7
|
exports.useGridParamsApi = useGridParamsApi;
|
|
7
8
|
var React = _interopRequireWildcard(require("react"));
|
|
8
9
|
var _domUtils = require("../../../utils/domUtils");
|
|
@@ -10,11 +11,7 @@ var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
|
10
11
|
var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
|
|
11
12
|
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); }
|
|
12
13
|
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; }
|
|
13
|
-
|
|
14
|
-
function warnMissingColumn(field) {
|
|
15
|
-
console.warn([`MUI: You are calling getValue('${field}') but the column \`${field}\` is not defined.`, `Instead, you can access the data from \`params.row.${field}\`.`].join('\n'));
|
|
16
|
-
warnedOnceMissingColumn = true;
|
|
17
|
-
}
|
|
14
|
+
class MissingRowIdError extends Error {}
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
17
|
* @requires useGridColumns (method)
|
|
@@ -24,6 +21,7 @@ function warnMissingColumn(field) {
|
|
|
24
21
|
* TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi
|
|
25
22
|
* TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi
|
|
26
23
|
*/
|
|
24
|
+
exports.MissingRowIdError = MissingRowIdError;
|
|
27
25
|
function useGridParamsApi(apiRef) {
|
|
28
26
|
const getColumnHeaderParams = React.useCallback(field => ({
|
|
29
27
|
field,
|
|
@@ -32,7 +30,7 @@ function useGridParamsApi(apiRef) {
|
|
|
32
30
|
const getRowParams = React.useCallback(id => {
|
|
33
31
|
const row = apiRef.current.getRow(id);
|
|
34
32
|
if (!row) {
|
|
35
|
-
throw new
|
|
33
|
+
throw new MissingRowIdError(`No row with id #${id} found`);
|
|
36
34
|
}
|
|
37
35
|
const params = {
|
|
38
36
|
id,
|
|
@@ -45,7 +43,7 @@ function useGridParamsApi(apiRef) {
|
|
|
45
43
|
const row = apiRef.current.getRow(id);
|
|
46
44
|
const rowNode = apiRef.current.getRowNode(id);
|
|
47
45
|
if (!row || !rowNode) {
|
|
48
|
-
throw new
|
|
46
|
+
throw new MissingRowIdError(`No row with id #${id} found`);
|
|
49
47
|
}
|
|
50
48
|
const cellFocus = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
|
|
51
49
|
const cellTabIndex = (0, _gridFocusStateSelector.gridTabIndexCellSelector)(apiRef);
|
|
@@ -69,7 +67,7 @@ function useGridParamsApi(apiRef) {
|
|
|
69
67
|
const row = apiRef.current.getRow(id);
|
|
70
68
|
const rowNode = apiRef.current.getRowNode(id);
|
|
71
69
|
if (!row || !rowNode) {
|
|
72
|
-
throw new
|
|
70
|
+
throw new MissingRowIdError(`No row with id #${id} found`);
|
|
73
71
|
}
|
|
74
72
|
const cellFocus = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
|
|
75
73
|
const cellTabIndex = (0, _gridFocusStateSelector.gridTabIndexCellSelector)(apiRef);
|
|
@@ -83,7 +81,8 @@ function useGridParamsApi(apiRef) {
|
|
|
83
81
|
hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,
|
|
84
82
|
tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1,
|
|
85
83
|
value,
|
|
86
|
-
formattedValue: value
|
|
84
|
+
formattedValue: value,
|
|
85
|
+
isEditable: false
|
|
87
86
|
};
|
|
88
87
|
if (colDef && colDef.valueFormatter) {
|
|
89
88
|
params.formattedValue = colDef.valueFormatter({
|
|
@@ -98,15 +97,10 @@ function useGridParamsApi(apiRef) {
|
|
|
98
97
|
}, [apiRef]);
|
|
99
98
|
const getCellValue = React.useCallback((id, field) => {
|
|
100
99
|
const colDef = apiRef.current.getColumn(field);
|
|
101
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
102
|
-
if (!colDef && !warnedOnceMissingColumn) {
|
|
103
|
-
warnMissingColumn(field);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
100
|
if (!colDef || !colDef.valueGetter) {
|
|
107
101
|
const rowModel = apiRef.current.getRow(id);
|
|
108
102
|
if (!rowModel) {
|
|
109
|
-
throw new
|
|
103
|
+
throw new MissingRowIdError(`No row with id #${id} found`);
|
|
110
104
|
}
|
|
111
105
|
return rowModel[field];
|
|
112
106
|
}
|
|
@@ -23,7 +23,7 @@ const gridSortedRowIdsSelector = (0, _createSelector.createSelector)(gridSorting
|
|
|
23
23
|
* @category Sorting
|
|
24
24
|
*/
|
|
25
25
|
exports.gridSortedRowIdsSelector = gridSortedRowIdsSelector;
|
|
26
|
-
const gridSortedRowEntriesSelector = (0, _createSelector.
|
|
26
|
+
const gridSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridSortedRowIdsSelector, _gridRowsSelector.gridRowsLookupSelector,
|
|
27
27
|
// TODO rows v6: Is this the best approach ?
|
|
28
28
|
(sortedIds, idRowsLookup) => sortedIds.map(id => ({
|
|
29
29
|
id,
|
|
@@ -41,7 +41,7 @@ exports.gridSortModelSelector = gridSortModelSelector;
|
|
|
41
41
|
* @category Sorting
|
|
42
42
|
* @ignore - do not document.
|
|
43
43
|
*/
|
|
44
|
-
const gridSortColumnLookupSelector = (0, _createSelector.
|
|
44
|
+
const gridSortColumnLookupSelector = (0, _createSelector.createSelectorMemoized)(gridSortModelSelector, sortModel => {
|
|
45
45
|
const result = sortModel.reduce((res, sortItem, index) => {
|
|
46
46
|
res[sortItem.field] = {
|
|
47
47
|
sortDirection: sortItem.sort,
|
|
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.areRenderContextsEqual = void 0;
|
|
7
8
|
exports.binarySearch = binarySearch;
|
|
8
9
|
exports.useGridVirtualScroller = exports.getRenderableIndexes = void 0;
|
|
9
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -27,8 +28,7 @@ var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
|
27
28
|
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
28
29
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
30
|
const _excluded = ["style"],
|
|
30
|
-
_excluded2 = ["style"]
|
|
31
|
-
_excluded3 = ["style"];
|
|
31
|
+
_excluded2 = ["style"];
|
|
32
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); }
|
|
33
33
|
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; }
|
|
34
34
|
// Uses binary search to avoid looping through all possible positions
|
|
@@ -67,6 +67,12 @@ const areRenderContextsEqual = (context1, context2) => {
|
|
|
67
67
|
}
|
|
68
68
|
return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
|
|
69
69
|
};
|
|
70
|
+
exports.areRenderContextsEqual = areRenderContextsEqual;
|
|
71
|
+
// The `maxSize` is 3 so that reselect caches the `renderedColumns` values for the pinned left,
|
|
72
|
+
// unpinned, and pinned right sections.
|
|
73
|
+
const MEMOIZE_OPTIONS = {
|
|
74
|
+
maxSize: 3
|
|
75
|
+
};
|
|
70
76
|
const useGridVirtualScroller = props => {
|
|
71
77
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
72
78
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -106,7 +112,7 @@ const useGridVirtualScroller = props => {
|
|
|
106
112
|
const prevRootRowStyle = React.useRef();
|
|
107
113
|
const getRenderedColumnsRef = React.useRef((0, _reselect.defaultMemoize)((columns, firstColumnToRender, lastColumnToRender) => {
|
|
108
114
|
return columns.slice(firstColumnToRender, lastColumnToRender);
|
|
109
|
-
}));
|
|
115
|
+
}, MEMOIZE_OPTIONS));
|
|
110
116
|
const getNearestIndexToRender = React.useCallback(offset => {
|
|
111
117
|
const lastMeasuredIndexRelativeToAllRows = apiRef.current.getLastMeasuredRowIndex();
|
|
112
118
|
let allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;
|
|
@@ -264,7 +270,7 @@ const useGridVirtualScroller = props => {
|
|
|
264
270
|
};
|
|
265
271
|
apiRef.current.publishEvent('scrollPositionChange', params);
|
|
266
272
|
}, [apiRef, computeRenderContext, containerDimensions.width, updateRenderContext]);
|
|
267
|
-
const handleScroll = event => {
|
|
273
|
+
const handleScroll = (0, _utils.unstable_useEventCallback)(event => {
|
|
268
274
|
const {
|
|
269
275
|
scrollTop,
|
|
270
276
|
scrollLeft
|
|
@@ -306,13 +312,13 @@ const useGridVirtualScroller = props => {
|
|
|
306
312
|
});
|
|
307
313
|
prevTotalWidth.current = columnsTotalWidth;
|
|
308
314
|
}
|
|
309
|
-
};
|
|
310
|
-
const handleWheel = event => {
|
|
315
|
+
});
|
|
316
|
+
const handleWheel = (0, _utils.unstable_useEventCallback)(event => {
|
|
311
317
|
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
312
|
-
};
|
|
313
|
-
const handleTouchMove = event => {
|
|
318
|
+
});
|
|
319
|
+
const handleTouchMove = (0, _utils.unstable_useEventCallback)(event => {
|
|
314
320
|
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
315
|
-
};
|
|
321
|
+
});
|
|
316
322
|
const getRows = (params = {
|
|
317
323
|
renderContext
|
|
318
324
|
}) => {
|
|
@@ -457,22 +463,25 @@ const useGridVirtualScroller = props => {
|
|
|
457
463
|
height,
|
|
458
464
|
minHeight: shouldExtendContent ? '100%' : 'auto'
|
|
459
465
|
};
|
|
466
|
+
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
467
|
+
size.height = (0, _gridRowsUtils.getMinimalContentHeight)(apiRef, rootProps.rowHeight); // Give room to show the overlay when there no rows.
|
|
468
|
+
}
|
|
469
|
+
|
|
460
470
|
return size;
|
|
461
|
-
}, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, needsHorizontalScrollbar]);
|
|
471
|
+
}, [apiRef, rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, needsHorizontalScrollbar, rootProps.autoHeight, rootProps.rowHeight, currentPage.rows.length]);
|
|
462
472
|
React.useEffect(() => {
|
|
463
473
|
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
464
474
|
}, [apiRef, contentSize]);
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
}
|
|
475
|
+
const rootStyle = React.useMemo(() => {
|
|
476
|
+
const style = {};
|
|
477
|
+
if (!needsHorizontalScrollbar) {
|
|
478
|
+
style.overflowX = 'hidden';
|
|
479
|
+
}
|
|
480
|
+
if (rootProps.autoHeight) {
|
|
481
|
+
style.overflowY = 'hidden';
|
|
482
|
+
}
|
|
483
|
+
return style;
|
|
484
|
+
}, [needsHorizontalScrollbar, rootProps.autoHeight]);
|
|
476
485
|
const getRenderContext = React.useCallback(() => {
|
|
477
486
|
return prevRenderContext.current;
|
|
478
487
|
}, []);
|
|
@@ -483,23 +492,18 @@ const useGridVirtualScroller = props => {
|
|
|
483
492
|
renderContext,
|
|
484
493
|
updateRenderZonePosition,
|
|
485
494
|
getRows,
|
|
486
|
-
getRootProps: (
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
onWheel: handleWheel,
|
|
495
|
-
onTouchMove: handleTouchMove,
|
|
496
|
-
style: (0, _extends2.default)({}, style, rootStyle)
|
|
497
|
-
}, other);
|
|
498
|
-
},
|
|
495
|
+
getRootProps: (inputProps = {}) => (0, _extends2.default)({
|
|
496
|
+
ref: handleRef,
|
|
497
|
+
onScroll: handleScroll,
|
|
498
|
+
onWheel: handleWheel,
|
|
499
|
+
onTouchMove: handleTouchMove
|
|
500
|
+
}, inputProps, {
|
|
501
|
+
style: inputProps.style ? (0, _extends2.default)({}, inputProps.style, rootStyle) : rootStyle
|
|
502
|
+
}),
|
|
499
503
|
getContentProps: ({
|
|
500
|
-
style
|
|
504
|
+
style
|
|
501
505
|
} = {}) => ({
|
|
502
|
-
style: (0, _extends2.default)({}, style, contentSize)
|
|
506
|
+
style: style ? (0, _extends2.default)({}, style, contentSize) : contentSize
|
|
503
507
|
}),
|
|
504
508
|
getRenderZoneProps: () => ({
|
|
505
509
|
ref: renderZoneRef
|
|
@@ -3,9 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
useGridSelector: true
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "useGridSelector", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _useGridSelector.useGridSelector;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
6
15
|
var _useGridApiEventHandler = require("./useGridApiEventHandler");
|
|
7
16
|
Object.keys(_useGridApiEventHandler).forEach(function (key) {
|
|
8
17
|
if (key === "default" || key === "__esModule") return;
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
9
19
|
if (key in exports && exports[key] === _useGridApiEventHandler[key]) return;
|
|
10
20
|
Object.defineProperty(exports, key, {
|
|
11
21
|
enumerable: true,
|
|
@@ -17,6 +27,7 @@ Object.keys(_useGridApiEventHandler).forEach(function (key) {
|
|
|
17
27
|
var _useGridApiMethod = require("./useGridApiMethod");
|
|
18
28
|
Object.keys(_useGridApiMethod).forEach(function (key) {
|
|
19
29
|
if (key === "default" || key === "__esModule") return;
|
|
30
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
31
|
if (key in exports && exports[key] === _useGridApiMethod[key]) return;
|
|
21
32
|
Object.defineProperty(exports, key, {
|
|
22
33
|
enumerable: true,
|
|
@@ -28,6 +39,7 @@ Object.keys(_useGridApiMethod).forEach(function (key) {
|
|
|
28
39
|
var _useGridLogger = require("./useGridLogger");
|
|
29
40
|
Object.keys(_useGridLogger).forEach(function (key) {
|
|
30
41
|
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
31
43
|
if (key in exports && exports[key] === _useGridLogger[key]) return;
|
|
32
44
|
Object.defineProperty(exports, key, {
|
|
33
45
|
enumerable: true,
|
|
@@ -37,19 +49,10 @@ Object.keys(_useGridLogger).forEach(function (key) {
|
|
|
37
49
|
});
|
|
38
50
|
});
|
|
39
51
|
var _useGridSelector = require("./useGridSelector");
|
|
40
|
-
Object.keys(_useGridSelector).forEach(function (key) {
|
|
41
|
-
if (key === "default" || key === "__esModule") return;
|
|
42
|
-
if (key in exports && exports[key] === _useGridSelector[key]) return;
|
|
43
|
-
Object.defineProperty(exports, key, {
|
|
44
|
-
enumerable: true,
|
|
45
|
-
get: function () {
|
|
46
|
-
return _useGridSelector[key];
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
52
|
var _useGridNativeEventListener = require("./useGridNativeEventListener");
|
|
51
53
|
Object.keys(_useGridNativeEventListener).forEach(function (key) {
|
|
52
54
|
if (key === "default" || key === "__esModule") return;
|
|
55
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
53
56
|
if (key in exports && exports[key] === _useGridNativeEventListener[key]) return;
|
|
54
57
|
Object.defineProperty(exports, key, {
|
|
55
58
|
enumerable: true,
|
|
@@ -61,6 +64,7 @@ Object.keys(_useGridNativeEventListener).forEach(function (key) {
|
|
|
61
64
|
var _useFirstRender = require("./useFirstRender");
|
|
62
65
|
Object.keys(_useFirstRender).forEach(function (key) {
|
|
63
66
|
if (key === "default" || key === "__esModule") return;
|
|
67
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
64
68
|
if (key in exports && exports[key] === _useFirstRender[key]) return;
|
|
65
69
|
Object.defineProperty(exports, key, {
|
|
66
70
|
enumerable: true,
|
|
@@ -3,21 +3,55 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useGridSelector = void 0;
|
|
6
|
+
exports.useGridSelector = exports.objectShallowCompare = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _useLazyRef = require("./useLazyRef");
|
|
9
|
+
var _useOnMount = require("./useOnMount");
|
|
7
10
|
var _warning = require("../../utils/warning");
|
|
11
|
+
var _fastObjectShallowCompare = require("../../utils/fastObjectShallowCompare");
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
14
|
+
const stateNotInitializedWarning = (0, _warning.buildWarning)(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
|
|
8
15
|
function isOutputSelector(selector) {
|
|
9
16
|
return selector.acceptsApiRef;
|
|
10
17
|
}
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
function applySelector(apiRef, selector) {
|
|
19
|
+
if (isOutputSelector(selector)) {
|
|
20
|
+
return selector(apiRef);
|
|
21
|
+
}
|
|
22
|
+
return selector(apiRef.current.state);
|
|
23
|
+
}
|
|
24
|
+
const defaultCompare = Object.is;
|
|
25
|
+
const objectShallowCompare = _fastObjectShallowCompare.fastObjectShallowCompare;
|
|
26
|
+
exports.objectShallowCompare = objectShallowCompare;
|
|
27
|
+
const createRefs = () => ({
|
|
28
|
+
state: null,
|
|
29
|
+
equals: null,
|
|
30
|
+
selector: null
|
|
31
|
+
});
|
|
32
|
+
const useGridSelector = (apiRef, selector, equals = defaultCompare) => {
|
|
13
33
|
if (process.env.NODE_ENV !== 'production') {
|
|
14
34
|
if (!apiRef.current.state) {
|
|
15
35
|
stateNotInitializedWarning();
|
|
16
36
|
}
|
|
17
37
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
38
|
+
const refs = (0, _useLazyRef.useLazyRef)(createRefs);
|
|
39
|
+
const didInit = refs.current.selector !== null;
|
|
40
|
+
const [state, setState] = React.useState(
|
|
41
|
+
// We don't use an initialization function to avoid allocations
|
|
42
|
+
didInit ? null : applySelector(apiRef, selector));
|
|
43
|
+
refs.current.state = state;
|
|
44
|
+
refs.current.equals = equals;
|
|
45
|
+
refs.current.selector = selector;
|
|
46
|
+
(0, _useOnMount.useOnMount)(() => {
|
|
47
|
+
return apiRef.current.store.subscribe(() => {
|
|
48
|
+
const newState = applySelector(apiRef, refs.current.selector);
|
|
49
|
+
if (!refs.current.equals(refs.current.state, newState)) {
|
|
50
|
+
refs.current.state = newState;
|
|
51
|
+
setState(newState);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
return state;
|
|
22
56
|
};
|
|
23
57
|
exports.useGridSelector = useGridSelector;
|