@mui/x-data-grid 5.7.0 → 5.8.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 +74 -0
- package/DataGrid/DataGrid.d.ts +8 -3
- package/DataGrid/DataGrid.js +27 -4
- package/DataGrid/useDataGridComponent.js +2 -4
- package/DataGrid/useDataGridProps.d.ts +2 -1
- package/colDef/gridBooleanColDef.d.ts +1 -1
- package/colDef/gridBooleanOperators.d.ts +1 -1
- package/colDef/gridDateColDef.d.ts +5 -9
- package/colDef/gridDateColDef.js +2 -2
- package/colDef/gridDateOperators.d.ts +1 -1
- package/{models/colDef → colDef}/gridDefaultColumnTypes.d.ts +1 -1
- package/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/colDef/gridNumericColDef.d.ts +1 -1
- package/colDef/gridNumericOperators.d.ts +2 -2
- package/colDef/gridStringColDef.d.ts +1 -1
- package/colDef/gridStringOperators.d.ts +1 -1
- package/colDef/index.d.ts +1 -0
- package/colDef/index.js +2 -1
- package/components/GridRow.js +1 -1
- package/components/cell/GridCell.d.ts +4 -4
- package/components/cell/GridCell.js +2 -2
- package/components/cell/GridEditInputCell.js +2 -2
- package/components/cell/GridEditSingleSelectCell.js +2 -2
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
- package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/components/columnHeaders/GridColumnHeaderItem.js +5 -5
- package/components/columnHeaders/index.d.ts +1 -0
- package/components/columnHeaders/index.js +1 -0
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
- package/components/containers/GridRoot.js +29 -17
- package/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/components/panel/GridPanel.d.ts +2 -2
- package/components/panel/GridPreferencesPanel.js +1 -1
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +15 -3
- package/hooks/core/index.d.ts +1 -1
- package/hooks/core/{preProcessing/gridPreProcessingApi.d.ts → pipeProcessing/gridPipeProcessingApi.d.ts} +19 -18
- package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/hooks/core/pipeProcessing/index.d.ts +3 -0
- package/hooks/core/pipeProcessing/index.js +3 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +27 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +74 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +7 -0
- package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +27 -16
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/hooks/core/useGridInitialization.js +2 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
- package/hooks/features/columns/gridColumnsUtils.d.ts +3 -3
- package/hooks/features/columns/gridColumnsUtils.js +49 -17
- package/hooks/features/columns/useGridColumns.js +36 -27
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +22 -7
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +22 -7
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +2 -0
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -9
- package/hooks/features/filter/useGridFilter.js +4 -4
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +2 -5
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -3
- package/hooks/features/pagination/useGridPage.js +9 -4
- package/hooks/features/pagination/useGridPageSize.js +3 -3
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.d.ts +8 -0
- package/hooks/features/rows/gridRowsUtils.js +11 -0
- package/hooks/features/rows/index.d.ts +1 -0
- package/hooks/features/rows/index.js +1 -1
- package/hooks/features/rows/useGridRows.js +3 -3
- package/hooks/features/rows/useGridRowsMeta.js +3 -3
- package/hooks/features/scroll/useGridScroll.js +4 -13
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
- package/hooks/features/selection/useGridSelection.d.ts +4 -2
- package/hooks/features/selection/useGridSelection.js +72 -25
- package/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -3
- package/hooks/features/sorting/gridSortingUtils.d.ts +1 -2
- package/hooks/features/sorting/useGridSorting.js +3 -3
- package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/hooks/utils/useGridRootProps.d.ts +1 -1
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +3 -6
- package/internals/index.js +2 -3
- package/legacy/DataGrid/DataGrid.js +27 -4
- package/legacy/DataGrid/useDataGridComponent.js +2 -4
- package/legacy/colDef/gridDateColDef.js +2 -2
- package/legacy/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/legacy/colDef/index.js +2 -1
- package/legacy/components/GridRow.js +1 -1
- package/legacy/components/cell/GridCell.js +2 -2
- package/legacy/components/cell/GridEditInputCell.js +2 -2
- package/legacy/components/cell/GridEditSingleSelectCell.js +2 -2
- package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +5 -5
- package/legacy/components/columnHeaders/index.js +1 -0
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/legacy/components/containers/GridRoot.js +34 -17
- package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/legacy/components/panel/GridPreferencesPanel.js +1 -1
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/legacy/hooks/core/pipeProcessing/index.js +3 -0
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +83 -0
- package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/legacy/hooks/core/useGridInitialization.js +2 -2
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/legacy/hooks/features/columns/gridColumnsUtils.js +49 -18
- package/legacy/hooks/features/columns/useGridColumns.js +36 -27
- package/legacy/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +22 -7
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +22 -7
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/useGridFilter.js +4 -4
- package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
- package/legacy/hooks/features/pagination/useGridPage.js +11 -4
- package/legacy/hooks/features/pagination/useGridPageSize.js +3 -3
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/legacy/hooks/features/rows/gridRowsUtils.js +13 -0
- package/legacy/hooks/features/rows/index.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +5 -5
- package/legacy/hooks/features/rows/useGridRowsMeta.js +3 -3
- package/legacy/hooks/features/scroll/useGridScroll.js +4 -13
- package/legacy/hooks/features/selection/useGridSelection.js +74 -25
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +3 -3
- package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +2 -3
- package/legacy/locales/daDK.js +36 -32
- package/legacy/models/colDef/index.js +1 -2
- package/legacy/models/events/gridEvents.js +4 -2
- package/legacy/models/gridRows.js +1 -33
- package/legacy/models/index.js +2 -2
- package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/params/gridPreferencePanelParams.js} +0 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/daDK.js +32 -32
- package/models/api/gridApiCommon.d.ts +2 -2
- package/models/api/gridEditingApi.d.ts +2 -2
- package/models/api/gridParamsApi.d.ts +5 -5
- package/models/api/gridRowApi.d.ts +2 -2
- package/models/colDef/gridColDef.d.ts +33 -28
- package/models/colDef/index.d.ts +0 -1
- package/models/colDef/index.js +1 -2
- package/models/events/gridEventLookup.d.ts +12 -6
- package/models/events/gridEvents.d.ts +11 -5
- package/models/events/gridEvents.js +4 -2
- package/models/gridCell.d.ts +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/gridFilterOperator.d.ts +3 -2
- package/models/gridRows.d.ts +10 -18
- package/models/gridRows.js +1 -31
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridSlotsComponentsProps.d.ts +1 -0
- package/models/gridSortModel.d.ts +3 -4
- package/models/index.d.ts +1 -1
- package/models/index.js +2 -2
- package/models/params/gridCellParams.d.ts +14 -14
- package/models/params/gridColumnHeaderParams.d.ts +3 -2
- package/models/params/gridEditCellParams.d.ts +2 -3
- package/models/params/gridPreferencePanelParams.d.ts +3 -0
- package/models/params/gridPreferencePanelParams.js +1 -0
- package/models/params/gridRowParams.d.ts +7 -8
- package/models/params/gridValueOptionsParams.d.ts +3 -3
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +36 -16
- package/modern/DataGrid/DataGrid.js +27 -4
- package/modern/DataGrid/useDataGridComponent.js +2 -4
- package/modern/colDef/gridDateColDef.js +2 -2
- package/modern/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/modern/colDef/index.js +2 -1
- package/modern/components/GridRow.js +1 -1
- package/modern/components/cell/GridCell.js +2 -2
- package/modern/components/cell/GridEditInputCell.js +2 -2
- package/modern/components/cell/GridEditSingleSelectCell.js +2 -2
- package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +3 -3
- package/modern/components/columnHeaders/index.js +1 -0
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/modern/components/containers/GridRoot.js +29 -17
- package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/modern/components/panel/GridPreferencesPanel.js +1 -1
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
- package/modern/hooks/core/pipeProcessing/index.js +3 -0
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +74 -0
- package/modern/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/modern/hooks/core/useGridInitialization.js +2 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/modern/hooks/features/columns/gridColumnsUtils.js +49 -17
- package/modern/hooks/features/columns/useGridColumns.js +36 -27
- package/modern/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +22 -7
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +22 -7
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/useGridFilter.js +4 -4
- package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
- package/modern/hooks/features/pagination/useGridPage.js +9 -4
- package/modern/hooks/features/pagination/useGridPageSize.js +3 -3
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/modern/hooks/features/rows/gridRowsUtils.js +11 -0
- package/modern/hooks/features/rows/index.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +1 -1
- package/modern/hooks/features/rows/useGridRowsMeta.js +3 -3
- package/modern/hooks/features/scroll/useGridScroll.js +4 -9
- package/modern/hooks/features/selection/useGridSelection.js +72 -25
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/modern/hooks/features/sorting/useGridSorting.js +3 -3
- package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/index.js +2 -3
- package/modern/locales/daDK.js +32 -32
- package/modern/models/colDef/index.js +1 -2
- package/modern/models/events/gridEvents.js +4 -2
- package/modern/models/gridRows.js +1 -31
- package/modern/models/index.js +2 -2
- package/modern/models/params/gridPreferencePanelParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/node/DataGrid/DataGrid.js +27 -4
- package/node/DataGrid/useDataGridComponent.js +2 -5
- package/node/colDef/gridDateColDef.js +2 -2
- package/node/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/node/colDef/index.js +13 -0
- package/node/components/GridRow.js +1 -1
- package/node/components/cell/GridCell.js +2 -2
- package/node/components/cell/GridEditInputCell.js +2 -2
- package/node/components/cell/GridEditSingleSelectCell.js +2 -2
- package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
- package/node/components/columnHeaders/GridColumnHeaderItem.js +5 -6
- package/node/components/columnHeaders/index.js +13 -0
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/node/components/containers/GridRoot.js +28 -17
- package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/node/components/panel/GridPreferencesPanel.js +1 -1
- package/node/constants/defaultGridSlotsComponents.js +1 -0
- package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/node/hooks/core/pipeProcessing/index.js +44 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +93 -0
- package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +4 -4
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/node/hooks/core/useGridInitialization.js +2 -2
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +54 -21
- package/node/hooks/features/columns/useGridColumns.js +36 -27
- package/node/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/node/hooks/features/editRows/useGridCellEditing.new.js +24 -7
- package/node/hooks/features/editRows/useGridRowEditing.new.js +24 -7
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/useGridFilter.js +4 -4
- package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +29 -6
- package/node/hooks/features/pagination/useGridPage.js +8 -3
- package/node/hooks/features/pagination/useGridPageSize.js +3 -3
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +20 -5
- package/node/hooks/features/rows/gridRowsUtils.js +18 -0
- package/node/hooks/features/rows/index.js +15 -1
- package/node/hooks/features/rows/useGridRows.js +5 -5
- package/node/hooks/features/rows/useGridRowsMeta.js +3 -3
- package/node/hooks/features/scroll/useGridScroll.js +3 -13
- package/node/hooks/features/selection/useGridSelection.js +71 -24
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/node/hooks/features/sorting/useGridSorting.js +3 -3
- package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/index.js +4 -12
- package/node/locales/daDK.js +32 -32
- package/node/models/colDef/index.js +0 -13
- package/node/models/events/gridEvents.js +4 -2
- package/node/models/gridRows.js +1 -34
- package/node/models/index.js +13 -13
- package/node/models/params/gridPreferencePanelParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/package.json +1 -1
- package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
- package/hooks/core/preProcessing/index.d.ts +0 -3
- package/hooks/core/preProcessing/index.js +0 -3
- package/hooks/core/preProcessing/useGridPreProcessing.d.ts +0 -6
- package/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
- package/hooks/core/preProcessing/useGridRegisterPreProcessor.d.ts +0 -7
- package/hooks/features/keyboard/useGridKeyboard.d.ts +0 -10
- package/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/legacy/hooks/core/preProcessing/index.js +0 -3
- package/legacy/hooks/core/preProcessing/useGridPreProcessing.js +0 -62
- package/legacy/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/modern/hooks/core/preProcessing/index.js +0 -3
- package/modern/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
- package/modern/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/node/hooks/core/preProcessing/index.js +0 -44
- package/node/hooks/core/preProcessing/useGridPreProcessing.js +0 -72
- package/node/hooks/features/keyboard/useGridKeyboard.js +0 -91
|
@@ -11,7 +11,7 @@ exports.mergeColumnsState = exports.hydrateColumnsWidth = exports.getGridColDef
|
|
|
11
11
|
|
|
12
12
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _colDef = require("../../../colDef");
|
|
15
15
|
|
|
16
16
|
var _gridColumnsSelector = require("./gridColumnsSelector");
|
|
17
17
|
|
|
@@ -21,12 +21,12 @@ const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
|
|
|
21
21
|
exports.COLUMNS_DIMENSION_PROPERTIES = COLUMNS_DIMENSION_PROPERTIES;
|
|
22
22
|
|
|
23
23
|
const computeColumnTypes = (customColumnTypes = {}) => {
|
|
24
|
-
const mergedColumnTypes = (0, _extends2.default)({}, (0,
|
|
24
|
+
const mergedColumnTypes = (0, _extends2.default)({}, (0, _colDef.getGridDefaultColumnTypes)());
|
|
25
25
|
Object.entries(customColumnTypes).forEach(([colType, colTypeDef]) => {
|
|
26
26
|
if (mergedColumnTypes[colType]) {
|
|
27
27
|
mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colType], colTypeDef);
|
|
28
28
|
} else {
|
|
29
|
-
mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colTypeDef.extendType ||
|
|
29
|
+
mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colTypeDef.extendType || _colDef.DEFAULT_GRID_COL_TYPE_KEY], colTypeDef);
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
return mergedColumnTypes;
|
|
@@ -247,7 +247,7 @@ exports.applyInitialState = applyInitialState;
|
|
|
247
247
|
|
|
248
248
|
const getGridColDef = (columnTypes, type) => {
|
|
249
249
|
if (!type) {
|
|
250
|
-
return columnTypes[
|
|
250
|
+
return columnTypes[_colDef.DEFAULT_GRID_COL_TYPE_KEY];
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -258,7 +258,7 @@ const getGridColDef = (columnTypes, type) => {
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
if (!columnTypes[type]) {
|
|
261
|
-
return columnTypes[
|
|
261
|
+
return columnTypes[_colDef.DEFAULT_GRID_COL_TYPE_KEY];
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
return columnTypes[type];
|
|
@@ -270,7 +270,7 @@ const createColumnsState = ({
|
|
|
270
270
|
apiRef,
|
|
271
271
|
columnsToUpsert,
|
|
272
272
|
initialState,
|
|
273
|
-
|
|
273
|
+
columnTypes,
|
|
274
274
|
currentColumnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef),
|
|
275
275
|
shouldRegenColumnVisibilityModelFromColumns,
|
|
276
276
|
keepOnlyColumnsToUpsert = false
|
|
@@ -280,7 +280,7 @@ const createColumnsState = ({
|
|
|
280
280
|
const isInsideStateInitializer = !apiRef.current.state.columns;
|
|
281
281
|
let columnsStateWithoutColumnVisibilityModel;
|
|
282
282
|
|
|
283
|
-
if (isInsideStateInitializer
|
|
283
|
+
if (isInsideStateInitializer) {
|
|
284
284
|
columnsStateWithoutColumnVisibilityModel = {
|
|
285
285
|
all: [],
|
|
286
286
|
lookup: {}
|
|
@@ -288,31 +288,64 @@ const createColumnsState = ({
|
|
|
288
288
|
} else {
|
|
289
289
|
const currentState = (0, _gridColumnsSelector.gridColumnsSelector)(apiRef.current.state);
|
|
290
290
|
columnsStateWithoutColumnVisibilityModel = {
|
|
291
|
-
all: [...currentState.all],
|
|
292
|
-
lookup: (0, _extends2.default)({}, currentState.lookup)
|
|
291
|
+
all: keepOnlyColumnsToUpsert ? [] : [...currentState.all],
|
|
292
|
+
lookup: (0, _extends2.default)({}, currentState.lookup) // Will be cleaned later if keepOnlyColumnsToUpsert=true
|
|
293
|
+
|
|
293
294
|
};
|
|
294
295
|
}
|
|
295
296
|
|
|
297
|
+
let columnsToKeep = {};
|
|
298
|
+
|
|
299
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
300
|
+
columnsToKeep = Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).reduce((acc, key) => (0, _extends2.default)({}, acc, {
|
|
301
|
+
[key]: false
|
|
302
|
+
}), {});
|
|
303
|
+
}
|
|
304
|
+
|
|
296
305
|
const columnsToUpsertLookup = {};
|
|
297
306
|
columnsToUpsert.forEach(newColumn => {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
307
|
+
const {
|
|
308
|
+
field
|
|
309
|
+
} = newColumn;
|
|
310
|
+
columnsToUpsertLookup[field] = true;
|
|
311
|
+
columnsToKeep[field] = true;
|
|
312
|
+
let existingState = columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
313
|
+
|
|
314
|
+
if (existingState == null) {
|
|
301
315
|
// New Column
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
316
|
+
existingState = (0, _extends2.default)({}, getGridColDef(columnTypes, newColumn.type), {
|
|
317
|
+
// TODO v6: Inline `getGridColDef`
|
|
318
|
+
field,
|
|
319
|
+
hasBeenResized: false
|
|
320
|
+
});
|
|
321
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
322
|
+
} else if (keepOnlyColumnsToUpsert) {
|
|
323
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
324
|
+
}
|
|
306
325
|
|
|
307
|
-
|
|
308
|
-
mergedColumn.hasBeenResized = true;
|
|
309
|
-
}
|
|
326
|
+
let hasValidDimension = false;
|
|
310
327
|
|
|
311
|
-
|
|
328
|
+
if (!existingState.hasBeenResized) {
|
|
329
|
+
hasValidDimension = COLUMNS_DIMENSION_PROPERTIES.some(key => newColumn[key] !== undefined);
|
|
312
330
|
}
|
|
331
|
+
|
|
332
|
+
columnsStateWithoutColumnVisibilityModel.lookup[field] = (0, _extends2.default)({}, existingState, {
|
|
333
|
+
hide: newColumn.hide == null ? false : newColumn.hide
|
|
334
|
+
}, newColumn, {
|
|
335
|
+
hasBeenResized: existingState.hasBeenResized || hasValidDimension
|
|
336
|
+
});
|
|
313
337
|
});
|
|
338
|
+
|
|
339
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
340
|
+
Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).forEach(field => {
|
|
341
|
+
if (!columnsToKeep[field]) {
|
|
342
|
+
delete columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
314
347
|
const columnsLookupBeforePreProcessing = (0, _extends2.default)({}, columnsStateWithoutColumnVisibilityModel.lookup);
|
|
315
|
-
const columnsStateWithPreProcessing = apiRef.current.
|
|
348
|
+
const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsStateWithoutColumnVisibilityModel); // TODO v6: remove the sync between the columns `hide` option and the model.
|
|
316
349
|
|
|
317
350
|
let columnVisibilityModel = {};
|
|
318
351
|
|
|
@@ -22,7 +22,7 @@ var _gridColumnsSelector = require("./gridColumnsSelector");
|
|
|
22
22
|
|
|
23
23
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
24
24
|
|
|
25
|
-
var
|
|
25
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
26
26
|
|
|
27
27
|
var _gridColumnsUtils = require("./gridColumnsUtils");
|
|
28
28
|
|
|
@@ -41,7 +41,7 @@ const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
41
41
|
const columnsTypes = (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes);
|
|
42
42
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
43
43
|
apiRef,
|
|
44
|
-
columnsTypes,
|
|
44
|
+
columnTypes: columnsTypes,
|
|
45
45
|
columnsToUpsert: props.columns,
|
|
46
46
|
initialState: (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.columns,
|
|
47
47
|
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
@@ -65,13 +65,15 @@ function useGridColumns(apiRef, props) {
|
|
|
65
65
|
var _props$initialState4, _props$initialState4$, _props$componentsProp2;
|
|
66
66
|
|
|
67
67
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridColumns');
|
|
68
|
-
const
|
|
68
|
+
const columnTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
|
|
69
|
+
const previousColumnsProp = React.useRef(props.columns);
|
|
70
|
+
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
69
71
|
/**
|
|
70
72
|
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
71
73
|
* If not, we keep the old behavior and update the `GridColDef.hide` option (which will update the state model through the `GridColDef.hide` => `columnVisibilityModel` sync in `createColumnsState`
|
|
72
74
|
*/
|
|
73
75
|
|
|
74
|
-
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel))
|
|
76
|
+
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
|
|
75
77
|
apiRef.current.unstable_updateControlState({
|
|
76
78
|
stateId: 'visibleColumns',
|
|
77
79
|
propModel: props.columnVisibilityModel,
|
|
@@ -108,7 +110,7 @@ function useGridColumns(apiRef, props) {
|
|
|
108
110
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
109
111
|
columns: (0, _gridColumnsUtils.createColumnsState)({
|
|
110
112
|
apiRef,
|
|
111
|
-
|
|
113
|
+
columnTypes,
|
|
112
114
|
columnsToUpsert: [],
|
|
113
115
|
initialState: undefined,
|
|
114
116
|
shouldRegenColumnVisibilityModelFromColumns: false,
|
|
@@ -118,24 +120,24 @@ function useGridColumns(apiRef, props) {
|
|
|
118
120
|
}));
|
|
119
121
|
apiRef.current.forceUpdate();
|
|
120
122
|
}
|
|
121
|
-
}, [apiRef,
|
|
123
|
+
}, [apiRef, columnTypes]);
|
|
122
124
|
const updateColumns = React.useCallback(columns => {
|
|
123
125
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
124
126
|
apiRef,
|
|
125
|
-
|
|
127
|
+
columnTypes,
|
|
126
128
|
columnsToUpsert: columns,
|
|
127
129
|
initialState: undefined,
|
|
128
130
|
shouldRegenColumnVisibilityModelFromColumns: true,
|
|
129
131
|
keepOnlyColumnsToUpsert: false
|
|
130
132
|
});
|
|
131
133
|
setGridColumnsState(columnsState);
|
|
132
|
-
}, [apiRef, setGridColumnsState,
|
|
134
|
+
}, [apiRef, setGridColumnsState, columnTypes]);
|
|
133
135
|
const updateColumn = React.useCallback(column => apiRef.current.updateColumns([column]), [apiRef]);
|
|
134
136
|
const setColumnVisibility = React.useCallback((field, isVisible) => {
|
|
135
137
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
136
138
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
137
139
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
138
|
-
if (isUsingColumnVisibilityModel) {
|
|
140
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
139
141
|
var _columnVisibilityMode;
|
|
140
142
|
|
|
141
143
|
const columnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
@@ -160,7 +162,7 @@ function useGridColumns(apiRef, props) {
|
|
|
160
162
|
};
|
|
161
163
|
apiRef.current.publishEvent(_events.GridEvents.columnVisibilityChange, params);
|
|
162
164
|
}
|
|
163
|
-
}, [apiRef
|
|
165
|
+
}, [apiRef]);
|
|
164
166
|
const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
|
|
165
167
|
const allColumns = (0, _gridColumnsSelector.gridColumnFieldsSelector)(apiRef);
|
|
166
168
|
const oldIndexPosition = allColumns.findIndex(col => col === field);
|
|
@@ -219,7 +221,7 @@ function useGridColumns(apiRef, props) {
|
|
|
219
221
|
const stateExportPreProcessing = React.useCallback(prevState => {
|
|
220
222
|
const columnsStateToExport = {};
|
|
221
223
|
|
|
222
|
-
if (isUsingColumnVisibilityModel) {
|
|
224
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
223
225
|
const columnVisibilityModelToExport = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
224
226
|
const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
|
|
225
227
|
|
|
@@ -250,11 +252,11 @@ function useGridColumns(apiRef, props) {
|
|
|
250
252
|
return (0, _extends2.default)({}, prevState, {
|
|
251
253
|
columns: columnsStateToExport
|
|
252
254
|
});
|
|
253
|
-
}, [apiRef
|
|
255
|
+
}, [apiRef]);
|
|
254
256
|
const stateRestorePreProcessing = React.useCallback((params, context) => {
|
|
255
257
|
var _context$stateToResto;
|
|
256
258
|
|
|
257
|
-
const columnVisibilityModelToImport = isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
259
|
+
const columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
258
260
|
const initialState = context.stateToRestore.columns;
|
|
259
261
|
|
|
260
262
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -263,10 +265,10 @@ function useGridColumns(apiRef, props) {
|
|
|
263
265
|
|
|
264
266
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
265
267
|
apiRef,
|
|
266
|
-
|
|
268
|
+
columnTypes,
|
|
267
269
|
columnsToUpsert: [],
|
|
268
270
|
initialState,
|
|
269
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
271
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
270
272
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
271
273
|
keepOnlyColumnsToUpsert: false
|
|
272
274
|
});
|
|
@@ -277,7 +279,7 @@ function useGridColumns(apiRef, props) {
|
|
|
277
279
|
}
|
|
278
280
|
|
|
279
281
|
return params;
|
|
280
|
-
}, [apiRef,
|
|
282
|
+
}, [apiRef, columnTypes]);
|
|
281
283
|
const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
|
|
282
284
|
if (value === _preferencesPanel.GridPreferencePanelsValue.columns) {
|
|
283
285
|
var _props$componentsProp;
|
|
@@ -288,14 +290,14 @@ function useGridColumns(apiRef, props) {
|
|
|
288
290
|
|
|
289
291
|
return initialValue;
|
|
290
292
|
}, [props.components.ColumnsPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.columnsPanel]);
|
|
291
|
-
(0,
|
|
292
|
-
(0,
|
|
293
|
-
(0,
|
|
293
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
294
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
295
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
294
296
|
/**
|
|
295
297
|
* EVENTS
|
|
296
298
|
*/
|
|
297
299
|
|
|
298
|
-
const
|
|
300
|
+
const handlepipeProcessorRegister = React.useCallback(name => {
|
|
299
301
|
if (name !== 'hydrateColumns') {
|
|
300
302
|
return;
|
|
301
303
|
}
|
|
@@ -303,14 +305,14 @@ function useGridColumns(apiRef, props) {
|
|
|
303
305
|
logger.info(`Columns pre-processing have changed, regenerating the columns`);
|
|
304
306
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
305
307
|
apiRef,
|
|
306
|
-
|
|
308
|
+
columnTypes,
|
|
307
309
|
columnsToUpsert: [],
|
|
308
310
|
initialState: undefined,
|
|
309
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
311
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
310
312
|
keepOnlyColumnsToUpsert: false
|
|
311
313
|
});
|
|
312
314
|
setGridColumnsState(columnsState);
|
|
313
|
-
}, [apiRef, logger, setGridColumnsState,
|
|
315
|
+
}, [apiRef, logger, setGridColumnsState, columnTypes]);
|
|
314
316
|
const prevInnerWidth = React.useRef(null);
|
|
315
317
|
|
|
316
318
|
const handleGridSizeChange = viewportInnerSize => {
|
|
@@ -320,7 +322,7 @@ function useGridColumns(apiRef, props) {
|
|
|
320
322
|
}
|
|
321
323
|
};
|
|
322
324
|
|
|
323
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.
|
|
325
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
|
|
324
326
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.viewportInnerSizeChange, handleGridSizeChange);
|
|
325
327
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
|
|
326
328
|
/**
|
|
@@ -337,17 +339,24 @@ function useGridColumns(apiRef, props) {
|
|
|
337
339
|
}
|
|
338
340
|
|
|
339
341
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
342
|
+
|
|
343
|
+
if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
|
|
340
347
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
341
348
|
apiRef,
|
|
342
|
-
|
|
349
|
+
columnTypes,
|
|
343
350
|
initialState: undefined,
|
|
344
351
|
// If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
|
|
345
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
352
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
346
353
|
columnsToUpsert: props.columns,
|
|
347
354
|
keepOnlyColumnsToUpsert: true
|
|
348
355
|
});
|
|
356
|
+
previousColumnsProp.current = props.columns;
|
|
357
|
+
previousColumnTypesProp.current = columnTypes;
|
|
349
358
|
setGridColumnsState(columnsState);
|
|
350
|
-
}, [logger, apiRef, setGridColumnsState, props.columns,
|
|
359
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
|
|
351
360
|
React.useEffect(() => {
|
|
352
361
|
if (props.columnVisibilityModel !== undefined) {
|
|
353
362
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -156,7 +156,8 @@ function useGridDimensions(apiRef, props) {
|
|
|
156
156
|
const dimensionsApi = {
|
|
157
157
|
resize,
|
|
158
158
|
getRootDimensions,
|
|
159
|
-
unstable_getViewportPageSize: getViewportPageSize
|
|
159
|
+
unstable_getViewportPageSize: getViewportPageSize,
|
|
160
|
+
unstable_updateGridDimensionsRef: updateGridDimensionsRef
|
|
160
161
|
};
|
|
161
162
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, dimensionsApi, 'GridDimensionsApi');
|
|
162
163
|
const debounceResize = React.useMemo(() => (0, _utils.debounce)(resize, 60), [resize]);
|
|
@@ -23,15 +23,20 @@ var _gridEditRowsSelector = require("./gridEditRowsSelector");
|
|
|
23
23
|
|
|
24
24
|
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
25
25
|
|
|
26
|
+
var _warning = require("../../../utils/warning");
|
|
27
|
+
|
|
26
28
|
var _gridEditCellParams = require("../../../models/params/gridEditCellParams");
|
|
27
29
|
|
|
28
30
|
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); }
|
|
29
31
|
|
|
30
32
|
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; }
|
|
31
33
|
|
|
34
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
35
|
+
|
|
32
36
|
const useGridCellEditing = (apiRef, props) => {
|
|
33
37
|
const {
|
|
34
|
-
processRowUpdate
|
|
38
|
+
processRowUpdate,
|
|
39
|
+
onProcessRowUpdateError
|
|
35
40
|
} = props;
|
|
36
41
|
|
|
37
42
|
const runIfEditModeIsCell = callback => (...args) => {
|
|
@@ -258,17 +263,29 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
258
263
|
});
|
|
259
264
|
|
|
260
265
|
if (processRowUpdate) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
+
const handleError = errorThrown => {
|
|
267
|
+
if (onProcessRowUpdateError) {
|
|
268
|
+
onProcessRowUpdateError(errorThrown);
|
|
269
|
+
} else {
|
|
270
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
try {
|
|
275
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
276
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
277
|
+
updateFocusedCellIfNeeded();
|
|
278
|
+
updateOrDeleteFieldState(id, field, null);
|
|
279
|
+
}).catch(handleError);
|
|
280
|
+
} catch (errorThrown) {
|
|
281
|
+
handleError(errorThrown);
|
|
282
|
+
}
|
|
266
283
|
} else {
|
|
267
284
|
apiRef.current.updateRows([rowUpdate]);
|
|
268
285
|
updateFocusedCellIfNeeded();
|
|
269
286
|
updateOrDeleteFieldState(id, field, null);
|
|
270
287
|
}
|
|
271
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
288
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
272
289
|
const setCellEditingEditCellValue = React.useCallback(async params => {
|
|
273
290
|
const {
|
|
274
291
|
id,
|
|
@@ -29,17 +29,22 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
|
29
29
|
|
|
30
30
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
31
31
|
|
|
32
|
+
var _warning = require("../../../utils/warning");
|
|
33
|
+
|
|
32
34
|
var _gridRowParams = require("../../../models/params/gridRowParams");
|
|
33
35
|
|
|
34
36
|
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); }
|
|
35
37
|
|
|
36
38
|
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; }
|
|
37
39
|
|
|
40
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
41
|
+
|
|
38
42
|
const useGridRowEditing = (apiRef, props) => {
|
|
39
43
|
const focusTimeout = React.useRef(null);
|
|
40
44
|
const nextFocusedCell = React.useRef(null);
|
|
41
45
|
const {
|
|
42
|
-
processRowUpdate
|
|
46
|
+
processRowUpdate,
|
|
47
|
+
onProcessRowUpdateError
|
|
43
48
|
} = props;
|
|
44
49
|
|
|
45
50
|
const runIfEditModeIsRow = callback => (...args) => {
|
|
@@ -365,17 +370,29 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
365
370
|
});
|
|
366
371
|
|
|
367
372
|
if (processRowUpdate) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
+
const handleError = errorThrown => {
|
|
374
|
+
if (onProcessRowUpdateError) {
|
|
375
|
+
onProcessRowUpdateError(errorThrown);
|
|
376
|
+
} else {
|
|
377
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
try {
|
|
382
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
383
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
384
|
+
updateFocusedCellIfNeeded();
|
|
385
|
+
updateOrDeleteRowState(id, null);
|
|
386
|
+
}).catch(handleError);
|
|
387
|
+
} catch (errorThrown) {
|
|
388
|
+
handleError(errorThrown);
|
|
389
|
+
}
|
|
373
390
|
} else {
|
|
374
391
|
apiRef.current.updateRows([rowUpdate]);
|
|
375
392
|
updateFocusedCellIfNeeded();
|
|
376
393
|
updateOrDeleteRowState(id, null);
|
|
377
394
|
}
|
|
378
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
395
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
379
396
|
const setRowEditingEditCellValue = React.useCallback(params => {
|
|
380
397
|
const {
|
|
381
398
|
id,
|
|
@@ -25,6 +25,8 @@ function useGridEvents(apiRef, props) {
|
|
|
25
25
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellDoubleClick, props.onCellDoubleClick);
|
|
26
26
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellKeyDown, props.onCellKeyDown);
|
|
27
27
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellFocusOut, props.onCellFocusOut);
|
|
28
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelClose, props.onPreferencePanelClose);
|
|
29
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
|
|
28
30
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowDoubleClick, props.onRowDoubleClick);
|
|
29
31
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowClick, props.onRowClick);
|
|
30
32
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.componentError, props.onError);
|
|
@@ -33,7 +33,7 @@ var _useFirstRender = require("../../utils/useFirstRender");
|
|
|
33
33
|
|
|
34
34
|
var _rows = require("../rows");
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
37
37
|
|
|
38
38
|
var _strategyProcessing = require("../../core/strategyProcessing");
|
|
39
39
|
|
|
@@ -254,9 +254,9 @@ const useGridFilter = (apiRef, props) => {
|
|
|
254
254
|
filteredDescendantCountLookup: {}
|
|
255
255
|
};
|
|
256
256
|
}, [apiRef, props.filterMode]);
|
|
257
|
-
(0,
|
|
258
|
-
(0,
|
|
259
|
-
(0,
|
|
257
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
258
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
259
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
260
260
|
(0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
|
|
261
261
|
/**
|
|
262
262
|
* EVENTS
|
|
@@ -23,17 +23,18 @@ var _gridCheckboxSelectionColDef = require("../../../colDef/gridCheckboxSelectio
|
|
|
23
23
|
|
|
24
24
|
var _gridClasses = require("../../../constants/gridClasses");
|
|
25
25
|
|
|
26
|
+
var _gridEditRowModel = require("../../../models/gridEditRowModel");
|
|
27
|
+
|
|
28
|
+
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
29
|
+
|
|
26
30
|
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
31
|
|
|
28
32
|
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; }
|
|
29
33
|
|
|
30
34
|
/**
|
|
31
|
-
* @requires useGridPage (state)
|
|
32
|
-
* @requires useGridPageSize (state)
|
|
33
|
-
* @requires useGridFilter (state)
|
|
34
|
-
* @requires useGridColumns (state, method)
|
|
35
|
-
* @requires useGridRows (state, method)
|
|
36
35
|
* @requires useGridSorting (method) - can be after
|
|
36
|
+
* @requires useGridFilter (state) - can be after
|
|
37
|
+
* @requires useGridColumns (state, method) - can be after
|
|
37
38
|
* @requires useGridDimensions (method) - can be after
|
|
38
39
|
* @requires useGridFocus (method) - can be after
|
|
39
40
|
* @requires useGridScroll (method) - can be after
|
|
@@ -130,8 +131,16 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
130
131
|
break;
|
|
131
132
|
}
|
|
132
133
|
|
|
133
|
-
case 'PageDown':
|
|
134
134
|
case ' ':
|
|
135
|
+
{
|
|
136
|
+
if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
|
|
137
|
+
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
case 'PageDown':
|
|
135
144
|
{
|
|
136
145
|
if (rowIndexBefore < lastRowIndexInPage) {
|
|
137
146
|
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
@@ -286,8 +295,22 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
286
295
|
event.preventDefault();
|
|
287
296
|
}
|
|
288
297
|
}, [apiRef, currentPage, goToCell, goToHeader]);
|
|
298
|
+
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
299
|
+
// Ignore portal
|
|
300
|
+
if (!event.currentTarget.contains(event.target)) {
|
|
301
|
+
return;
|
|
302
|
+
} // Get the most recent params because the cell mode may have changed by another listener
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
const cellParams = apiRef.current.getCellParams(params.id, params.field);
|
|
306
|
+
|
|
307
|
+
if (cellParams.cellMode !== _gridEditRowModel.GridCellModes.Edit && (0, _keyboardUtils.isNavigationKey)(event.key)) {
|
|
308
|
+
apiRef.current.publishEvent(_events.GridEvents.cellNavigationKeyDown, cellParams, event);
|
|
309
|
+
}
|
|
310
|
+
}, [apiRef]);
|
|
289
311
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
|
|
290
312
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
|
|
313
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellKeyDown, handleCellKeyDown);
|
|
291
314
|
};
|
|
292
315
|
|
|
293
316
|
exports.useGridKeyboardNavigation = useGridKeyboardNavigation;
|
|
@@ -19,7 +19,7 @@ var _filter = require("../filter");
|
|
|
19
19
|
|
|
20
20
|
var _gridPaginationSelector = require("./gridPaginationSelector");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
23
23
|
|
|
24
24
|
var _warning = require("../../../utils/warning");
|
|
25
25
|
|
|
@@ -114,8 +114,8 @@ const useGridPage = (apiRef, props) => {
|
|
|
114
114
|
apiRef.current.setState(mergeStateWithPage(page));
|
|
115
115
|
return params;
|
|
116
116
|
}, [apiRef]);
|
|
117
|
-
(0,
|
|
118
|
-
(0,
|
|
117
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
118
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
119
119
|
/**
|
|
120
120
|
* EVENTS
|
|
121
121
|
*/
|
|
@@ -133,7 +133,12 @@ const useGridPage = (apiRef, props) => {
|
|
|
133
133
|
apiRef.current.forceUpdate();
|
|
134
134
|
};
|
|
135
135
|
|
|
136
|
+
const handlePageChange = () => apiRef.current.scrollToIndexes({
|
|
137
|
+
rowIndex: (0, _gridPaginationSelector.gridPageSelector)(apiRef) * (0, _gridPaginationSelector.gridPageSizeSelector)(apiRef)
|
|
138
|
+
});
|
|
139
|
+
|
|
136
140
|
(0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageSizeChange, handlePageSizeChange);
|
|
141
|
+
(0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageChange, handlePageChange);
|
|
137
142
|
/**
|
|
138
143
|
* EFFECTS
|
|
139
144
|
*/
|
|
@@ -19,7 +19,7 @@ var _gridPaginationSelector = require("./gridPaginationSelector");
|
|
|
19
19
|
|
|
20
20
|
var _density = require("../density");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
23
23
|
|
|
24
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); }
|
|
25
25
|
|
|
@@ -106,8 +106,8 @@ const useGridPageSize = (apiRef, props) => {
|
|
|
106
106
|
|
|
107
107
|
return params;
|
|
108
108
|
}, [apiRef]);
|
|
109
|
-
(0,
|
|
110
|
-
(0,
|
|
109
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
110
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
111
111
|
/**
|
|
112
112
|
* EVENTS
|
|
113
113
|
*/
|