@mui/x-data-grid 5.11.0 → 5.12.1
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 +237 -16
- package/DataGrid/DataGrid.js +26 -1
- package/README.md +3 -4
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +51 -12
- package/components/base/GridOverlays.js +1 -1
- package/components/cell/GridActionsCellItem.d.ts +1 -1
- package/components/cell/GridCell.d.ts +2 -1
- package/components/cell/GridCell.js +12 -7
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/components/containers/GridRoot.js +25 -5
- package/components/containers/GridRootStyles.js +7 -2
- package/components/menu/GridMenu.js +9 -2
- package/components/panel/GridColumnsPanel.js +10 -2
- package/components/panel/GridPanelWrapper.d.ts +1 -1
- package/components/panel/GridPanelWrapper.js +3 -3
- package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
- package/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
- package/components/panel/filterPanel/GridFilterPanel.js +25 -9
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
- package/components/toolbar/GridToolbarQuickFilter.js +58 -6
- package/constants/defaultGridSlotsComponents.js +4 -2
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +4 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- package/hooks/core/useGridStateInitialization.js +19 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
- package/hooks/features/columns/useGridColumns.js +13 -15
- package/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +2 -0
- package/hooks/features/filter/gridFilterSelector.d.ts +5 -0
- package/hooks/features/filter/gridFilterSelector.js +6 -0
- package/hooks/features/filter/gridFilterUtils.d.ts +10 -2
- package/hooks/features/filter/gridFilterUtils.js +3 -6
- package/hooks/features/filter/useGridFilter.js +29 -12
- package/hooks/features/pagination/useGridPage.js +1 -1
- package/hooks/features/pagination/useGridPageSize.js +1 -1
- package/hooks/features/rows/gridRowsState.d.ts +14 -5
- package/hooks/features/rows/gridRowsUtils.d.ts +13 -1
- package/hooks/features/rows/gridRowsUtils.js +54 -0
- package/hooks/features/rows/useGridRows.js +63 -102
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/hooks/features/selection/useGridSelection.js +1 -1
- package/hooks/features/sorting/useGridSorting.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/legacy/DataGrid/DataGrid.js +26 -1
- package/legacy/components/GridRow.js +56 -12
- package/legacy/components/base/GridOverlays.js +1 -1
- package/legacy/components/cell/GridCell.js +12 -7
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +6 -3
- package/legacy/components/containers/GridRoot.js +23 -5
- package/legacy/components/containers/GridRootStyles.js +9 -6
- package/legacy/components/menu/GridMenu.js +9 -2
- package/legacy/components/panel/GridColumnsPanel.js +12 -2
- package/legacy/components/panel/GridPanelWrapper.js +3 -3
- package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +27 -10
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +68 -8
- package/legacy/constants/defaultGridSlotsComponents.js +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
- package/legacy/hooks/core/useGridStateInitialization.js +18 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/legacy/hooks/features/columns/useGridColumns.js +13 -15
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -7
- package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/gridFilterSelector.js +8 -0
- package/legacy/hooks/features/filter/gridFilterUtils.js +4 -7
- package/legacy/hooks/features/filter/useGridFilter.js +33 -12
- package/legacy/hooks/features/pagination/useGridPage.js +1 -1
- package/legacy/hooks/features/pagination/useGridPageSize.js +1 -1
- package/legacy/hooks/features/rows/gridRowsUtils.js +55 -0
- package/legacy/hooks/features/rows/useGridRows.js +75 -111
- package/legacy/hooks/features/rows/useGridRowsMeta.js +104 -41
- package/legacy/hooks/features/selection/useGridSelection.js +1 -1
- package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +46 -22
- package/legacy/index.js +1 -1
- package/legacy/locales/heIL.js +9 -9
- package/legacy/locales/jaJP.js +28 -24
- package/legacy/locales/nbNO.js +127 -0
- package/legacy/locales/ruRU.js +9 -9
- package/legacy/locales/trTR.js +7 -7
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridApiCaches.js +1 -0
- package/legacy/models/params/gridMenuParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/heIL.js +9 -9
- package/locales/jaJP.js +24 -24
- package/locales/nbNO.d.ts +2 -0
- package/locales/nbNO.js +115 -0
- package/locales/ruRU.js +9 -9
- package/locales/trTR.js +7 -7
- package/models/api/gridCallbackDetails.d.ts +6 -1
- package/models/api/gridCoreApi.d.ts +2 -6
- package/models/api/gridFilterApi.d.ts +8 -1
- package/models/api/gridRowsMetaApi.d.ts +24 -0
- package/models/api/gridStateApi.d.ts +14 -3
- package/models/colDef/gridColDef.d.ts +3 -3
- package/models/events/gridEventLookup.d.ts +16 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridApiCaches.d.ts +6 -0
- package/models/gridApiCaches.js +1 -0
- package/models/gridIconSlotsComponent.d.ts +10 -0
- package/models/params/gridMenuParams.d.ts +7 -0
- package/models/params/gridMenuParams.js +1 -0
- package/models/params/gridRowParams.d.ts +1 -1
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +24 -2
- package/modern/DataGrid/DataGrid.js +26 -1
- package/modern/components/GridRow.js +51 -12
- package/modern/components/base/GridOverlays.js +1 -1
- package/modern/components/cell/GridCell.js +12 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/modern/components/containers/GridRoot.js +25 -3
- package/modern/components/containers/GridRootStyles.js +7 -2
- package/modern/components/menu/GridMenu.js +9 -2
- package/modern/components/panel/GridColumnsPanel.js +10 -2
- package/modern/components/panel/GridPanelWrapper.js +3 -3
- package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/modern/components/panel/filterPanel/GridFilterPanel.js +25 -9
- package/modern/components/toolbar/GridToolbarQuickFilter.js +58 -6
- package/modern/constants/defaultGridSlotsComponents.js +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- package/modern/hooks/core/useGridStateInitialization.js +19 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/modern/hooks/features/columns/useGridColumns.js +12 -14
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +10 -3
- package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -3
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -0
- package/modern/hooks/features/filter/gridFilterUtils.js +3 -6
- package/modern/hooks/features/filter/useGridFilter.js +29 -12
- package/modern/hooks/features/pagination/useGridPage.js +1 -1
- package/modern/hooks/features/pagination/useGridPageSize.js +1 -1
- package/modern/hooks/features/rows/gridRowsUtils.js +54 -0
- package/modern/hooks/features/rows/useGridRows.js +63 -102
- package/modern/hooks/features/rows/useGridRowsMeta.js +105 -37
- package/modern/hooks/features/selection/useGridSelection.js +1 -1
- package/modern/hooks/features/sorting/useGridSorting.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/modern/index.js +1 -1
- package/modern/locales/heIL.js +9 -9
- package/modern/locales/jaJP.js +24 -24
- package/modern/locales/nbNO.js +115 -0
- package/modern/locales/ruRU.js +9 -9
- package/modern/locales/trTR.js +7 -7
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridApiCaches.js +1 -0
- package/modern/models/params/gridMenuParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/node/DataGrid/DataGrid.js +26 -1
- package/node/components/GridRow.js +53 -12
- package/node/components/base/GridOverlays.js +1 -1
- package/node/components/cell/GridCell.js +12 -7
- package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/node/components/containers/GridRoot.js +24 -3
- package/node/components/containers/GridRootStyles.js +7 -2
- package/node/components/menu/GridMenu.js +10 -2
- package/node/components/panel/GridColumnsPanel.js +10 -2
- package/node/components/panel/GridPanelWrapper.js +5 -3
- package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/node/components/panel/filterPanel/GridFilterPanel.js +27 -9
- package/node/components/toolbar/GridToolbarQuickFilter.js +61 -6
- package/node/constants/defaultGridSlotsComponents.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
- package/node/hooks/core/useGridStateInitialization.js +19 -6
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
- package/node/hooks/features/columns/useGridColumns.js +13 -15
- package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/node/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/gridFilterSelector.js +9 -2
- package/node/hooks/features/filter/gridFilterUtils.js +4 -5
- package/node/hooks/features/filter/useGridFilter.js +28 -11
- package/node/hooks/features/pagination/useGridPage.js +1 -1
- package/node/hooks/features/pagination/useGridPageSize.js +1 -1
- package/node/hooks/features/rows/gridRowsUtils.js +67 -1
- package/node/hooks/features/rows/useGridRows.js +63 -99
- package/node/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/node/hooks/features/selection/useGridSelection.js +1 -1
- package/node/hooks/features/sorting/useGridSorting.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/node/index.js +1 -1
- package/node/locales/heIL.js +9 -9
- package/node/locales/jaJP.js +24 -24
- package/node/locales/nbNO.js +125 -0
- package/node/locales/ruRU.js +9 -9
- package/node/locales/trTR.js +7 -7
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridApiCaches.js +5 -0
- package/node/models/params/gridMenuParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/package.json +7 -5
|
@@ -28,7 +28,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
28
28
|
const useGridStateInitialization = (apiRef, props) => {
|
|
29
29
|
const controlStateMapRef = React.useRef({});
|
|
30
30
|
const [, rawForceUpdate] = React.useState();
|
|
31
|
-
const
|
|
31
|
+
const registerControlState = React.useCallback(controlStateItem => {
|
|
32
32
|
const {
|
|
33
33
|
stateId
|
|
34
34
|
} = controlStateItem,
|
|
@@ -37,7 +37,7 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
37
37
|
stateId
|
|
38
38
|
});
|
|
39
39
|
}, []);
|
|
40
|
-
const setState = React.useCallback(state => {
|
|
40
|
+
const setState = React.useCallback((state, reason) => {
|
|
41
41
|
let newState;
|
|
42
42
|
|
|
43
43
|
if ((0, _utils2.isFunction)(state)) {
|
|
@@ -98,23 +98,36 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
98
98
|
|
|
99
99
|
if (controlState.propOnChange && hasPropChanged) {
|
|
100
100
|
const details = props.signature === _useGridApiEventHandler.GridSignature.DataGridPro ? {
|
|
101
|
-
api: apiRef.current
|
|
102
|
-
|
|
101
|
+
api: apiRef.current,
|
|
102
|
+
reason
|
|
103
|
+
} : {
|
|
104
|
+
reason
|
|
105
|
+
};
|
|
103
106
|
controlState.propOnChange(model, details);
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
if (!ignoreSetState) {
|
|
107
|
-
apiRef.current.publishEvent(controlState.changeEvent, model
|
|
110
|
+
apiRef.current.publishEvent(controlState.changeEvent, model, {
|
|
111
|
+
reason
|
|
112
|
+
});
|
|
108
113
|
}
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
return !ignoreSetState;
|
|
112
117
|
}, [apiRef, props.signature]);
|
|
118
|
+
const updateControlState = React.useCallback((key, state, reason) => {
|
|
119
|
+
return apiRef.current.setState(previousState => {
|
|
120
|
+
return (0, _extends2.default)({}, previousState, {
|
|
121
|
+
[key]: state(previousState[key])
|
|
122
|
+
});
|
|
123
|
+
}, reason);
|
|
124
|
+
}, [apiRef]);
|
|
113
125
|
const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);
|
|
114
126
|
const stateApi = {
|
|
115
127
|
setState,
|
|
116
128
|
forceUpdate,
|
|
117
|
-
unstable_updateControlState: updateControlState
|
|
129
|
+
unstable_updateControlState: updateControlState,
|
|
130
|
+
unstable_registerControlState: registerControlState
|
|
118
131
|
};
|
|
119
132
|
(0, _utils.useGridApiMethod)(apiRef, stateApi, 'GridStateApi');
|
|
120
133
|
};
|
|
@@ -15,6 +15,8 @@ var _utils = require("../../utils");
|
|
|
15
15
|
|
|
16
16
|
var _columnMenuSelector = require("./columnMenuSelector");
|
|
17
17
|
|
|
18
|
+
var _gridClasses = require("../../../constants/gridClasses");
|
|
19
|
+
|
|
18
20
|
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); }
|
|
19
21
|
|
|
20
22
|
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; }
|
|
@@ -97,7 +99,28 @@ const useGridColumnMenu = apiRef => {
|
|
|
97
99
|
* EVENTS
|
|
98
100
|
*/
|
|
99
101
|
|
|
102
|
+
const handleColumnHeaderFocus = React.useCallback((params, event) => {
|
|
103
|
+
// Check if the column menu button received focus
|
|
104
|
+
if (!event.target.classList.contains(_gridClasses.gridClasses.menuIconButton)) {
|
|
105
|
+
return;
|
|
106
|
+
} // Check if there's an element which lost focus
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
if (!event.relatedTarget) {
|
|
110
|
+
return;
|
|
111
|
+
} // `true` if the focus was on the column menu itself, not on any item
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
const columnMenuLostFocus = event.relatedTarget.classList.contains(_gridClasses.gridClasses.menuList); // `true` if the focus was on an item from the column menu
|
|
115
|
+
|
|
116
|
+
const columnMenuItemLostFocus = event.relatedTarget.getAttribute('role') === 'menuitem';
|
|
117
|
+
|
|
118
|
+
if (columnMenuLostFocus || columnMenuItemLostFocus) {
|
|
119
|
+
apiRef.current.setColumnHeaderFocus(params.field);
|
|
120
|
+
}
|
|
121
|
+
}, [apiRef]);
|
|
100
122
|
(0, _utils.useGridApiEventHandler)(apiRef, 'columnResizeStart', hideColumnMenu);
|
|
123
|
+
(0, _utils.useGridApiEventHandler)(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
|
|
101
124
|
(0, _utils.useGridApiEventHandler)(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);
|
|
102
125
|
(0, _utils.useGridApiEventHandler)(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);
|
|
103
126
|
};
|
|
@@ -36,6 +36,9 @@ const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
36
36
|
var _props$initialState, _props$initialState$c, _props$initialState2, _ref, _props$columnVisibili, _props$initialState3, _props$initialState3$;
|
|
37
37
|
|
|
38
38
|
const isUsingColumnVisibilityModel = !!props.columnVisibilityModel || !!((_props$initialState = props.initialState) != null && (_props$initialState$c = _props$initialState.columns) != null && _props$initialState$c.columnVisibilityModel);
|
|
39
|
+
apiRef.current.unstable_caches.columns = {
|
|
40
|
+
isUsingColumnVisibilityModel
|
|
41
|
+
};
|
|
39
42
|
const columnsTypes = (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes);
|
|
40
43
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
41
44
|
apiRef,
|
|
@@ -60,19 +63,13 @@ const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
60
63
|
exports.columnsStateInitializer = columnsStateInitializer;
|
|
61
64
|
|
|
62
65
|
function useGridColumns(apiRef, props) {
|
|
63
|
-
var _props$
|
|
66
|
+
var _props$componentsProp2;
|
|
64
67
|
|
|
65
68
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridColumns');
|
|
66
69
|
const columnTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
|
|
67
70
|
const previousColumnsProp = React.useRef(props.columns);
|
|
68
71
|
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
69
|
-
|
|
70
|
-
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
71
|
-
* 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
|
-
*/
|
|
73
|
-
|
|
74
|
-
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
|
|
75
|
-
apiRef.current.unstable_updateControlState({
|
|
72
|
+
apiRef.current.unstable_registerControlState({
|
|
76
73
|
stateId: 'visibleColumns',
|
|
77
74
|
propModel: props.columnVisibilityModel,
|
|
78
75
|
propOnChange: props.onColumnVisibilityModelChange,
|
|
@@ -135,7 +132,7 @@ function useGridColumns(apiRef, props) {
|
|
|
135
132
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
136
133
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
137
134
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
138
|
-
if (
|
|
135
|
+
if (apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel) {
|
|
139
136
|
var _columnVisibilityMode;
|
|
140
137
|
|
|
141
138
|
const columnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
@@ -171,7 +168,8 @@ function useGridColumns(apiRef, props) {
|
|
|
171
168
|
|
|
172
169
|
logger.debug(`Moving column ${field} to index ${targetIndexPosition}`);
|
|
173
170
|
const updatedColumns = [...allColumns];
|
|
174
|
-
|
|
171
|
+
const fieldRemoved = updatedColumns.splice(oldIndexPosition, 1)[0];
|
|
172
|
+
updatedColumns.splice(targetIndexPosition, 0, fieldRemoved);
|
|
175
173
|
setGridColumnsState((0, _extends2.default)({}, (0, _gridColumnsSelector.gridColumnsSelector)(apiRef.current.state), {
|
|
176
174
|
all: updatedColumns
|
|
177
175
|
}));
|
|
@@ -219,7 +217,7 @@ function useGridColumns(apiRef, props) {
|
|
|
219
217
|
const stateExportPreProcessing = React.useCallback(prevState => {
|
|
220
218
|
const columnsStateToExport = {};
|
|
221
219
|
|
|
222
|
-
if (
|
|
220
|
+
if (apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel) {
|
|
223
221
|
const columnVisibilityModelToExport = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
224
222
|
const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
|
|
225
223
|
|
|
@@ -260,7 +258,7 @@ function useGridColumns(apiRef, props) {
|
|
|
260
258
|
const stateRestorePreProcessing = React.useCallback((params, context) => {
|
|
261
259
|
var _context$stateToResto;
|
|
262
260
|
|
|
263
|
-
const columnVisibilityModelToImport =
|
|
261
|
+
const columnVisibilityModelToImport = apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
264
262
|
const initialState = context.stateToRestore.columns;
|
|
265
263
|
|
|
266
264
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -272,7 +270,7 @@ function useGridColumns(apiRef, props) {
|
|
|
272
270
|
columnTypes,
|
|
273
271
|
columnsToUpsert: [],
|
|
274
272
|
initialState,
|
|
275
|
-
shouldRegenColumnVisibilityModelFromColumns: !
|
|
273
|
+
shouldRegenColumnVisibilityModelFromColumns: !apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel,
|
|
276
274
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
277
275
|
keepOnlyColumnsToUpsert: false
|
|
278
276
|
});
|
|
@@ -323,7 +321,7 @@ function useGridColumns(apiRef, props) {
|
|
|
323
321
|
columnTypes,
|
|
324
322
|
columnsToUpsert: [],
|
|
325
323
|
initialState: undefined,
|
|
326
|
-
shouldRegenColumnVisibilityModelFromColumns: !
|
|
324
|
+
shouldRegenColumnVisibilityModelFromColumns: !apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel,
|
|
327
325
|
keepOnlyColumnsToUpsert: false
|
|
328
326
|
});
|
|
329
327
|
setGridColumnsState(columnsState);
|
|
@@ -353,7 +351,7 @@ function useGridColumns(apiRef, props) {
|
|
|
353
351
|
columnTypes,
|
|
354
352
|
initialState: undefined,
|
|
355
353
|
// 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`
|
|
356
|
-
shouldRegenColumnVisibilityModelFromColumns: !
|
|
354
|
+
shouldRegenColumnVisibilityModelFromColumns: !apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel,
|
|
357
355
|
columnsToUpsert: props.columns,
|
|
358
356
|
keepOnlyColumnsToUpsert: true
|
|
359
357
|
});
|
|
@@ -323,6 +323,9 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
323
323
|
} = editingState[id][field];
|
|
324
324
|
|
|
325
325
|
if (error || isProcessingProps) {
|
|
326
|
+
// Attempt to change cell mode to "view" was not successful
|
|
327
|
+
// Update previous mode to allow another attempt
|
|
328
|
+
prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit;
|
|
326
329
|
return;
|
|
327
330
|
}
|
|
328
331
|
|
|
@@ -330,6 +333,8 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
330
333
|
|
|
331
334
|
if (processRowUpdate) {
|
|
332
335
|
const handleError = errorThrown => {
|
|
336
|
+
prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit;
|
|
337
|
+
|
|
333
338
|
if (onProcessRowUpdateError) {
|
|
334
339
|
onProcessRowUpdateError(errorThrown);
|
|
335
340
|
} else {
|
|
@@ -432,12 +437,15 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
432
437
|
}
|
|
433
438
|
}, [cellModesModelProp, updateCellModesModel]);
|
|
434
439
|
React.useEffect(() => {
|
|
435
|
-
const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef);
|
|
440
|
+
const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopCellEditMode may change it later
|
|
441
|
+
|
|
442
|
+
const copyOfPrevCellModes = prevCellModesModel.current;
|
|
443
|
+
prevCellModesModel.current = cellModesModel;
|
|
436
444
|
Object.entries(cellModesModel).forEach(([id, fields]) => {
|
|
437
445
|
Object.entries(fields).forEach(([field, params]) => {
|
|
438
|
-
var
|
|
446
|
+
var _copyOfPrevCellModes$, _copyOfPrevCellModes$2, _idToIdLookup$id;
|
|
439
447
|
|
|
440
|
-
const prevMode = ((
|
|
448
|
+
const prevMode = ((_copyOfPrevCellModes$ = copyOfPrevCellModes[id]) == null ? void 0 : (_copyOfPrevCellModes$2 = _copyOfPrevCellModes$[field]) == null ? void 0 : _copyOfPrevCellModes$2.mode) || _gridEditRowModel.GridCellModes.View;
|
|
441
449
|
const originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;
|
|
442
450
|
|
|
443
451
|
if (params.mode === _gridEditRowModel.GridCellModes.Edit && prevMode === _gridEditRowModel.GridCellModes.View) {
|
|
@@ -453,7 +461,6 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
453
461
|
}
|
|
454
462
|
});
|
|
455
463
|
});
|
|
456
|
-
prevCellModesModel.current = cellModesModel;
|
|
457
464
|
}, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);
|
|
458
465
|
};
|
|
459
466
|
|
|
@@ -49,7 +49,7 @@ function useGridEditing(apiRef, props) {
|
|
|
49
49
|
(0, _useGridCellEditing.useCellEditing)(apiRef, props);
|
|
50
50
|
(0, _useGridRowEditing.useGridRowEditing)(apiRef, props);
|
|
51
51
|
const debounceMap = React.useRef({});
|
|
52
|
-
apiRef.current.
|
|
52
|
+
apiRef.current.unstable_registerControlState({
|
|
53
53
|
stateId: 'editRows',
|
|
54
54
|
propModel: props.editRowsModel,
|
|
55
55
|
propOnChange: props.onEditRowsModelChange,
|
|
@@ -402,12 +402,14 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
402
402
|
const isSomeFieldProcessingProps = Object.values(editingState[id]).some(fieldProps => fieldProps.isProcessingProps);
|
|
403
403
|
|
|
404
404
|
if (isSomeFieldProcessingProps) {
|
|
405
|
+
prevRowModesModel.current[id].mode = _gridEditRowModel.GridRowModes.Edit;
|
|
405
406
|
return;
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
const hasSomeFieldWithError = Object.values(editingState[id]).some(fieldProps => fieldProps.error);
|
|
409
410
|
|
|
410
411
|
if (hasSomeFieldWithError) {
|
|
412
|
+
prevRowModesModel.current[id].mode = _gridEditRowModel.GridRowModes.Edit;
|
|
411
413
|
return;
|
|
412
414
|
}
|
|
413
415
|
|
|
@@ -415,6 +417,8 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
415
417
|
|
|
416
418
|
if (processRowUpdate) {
|
|
417
419
|
const handleError = errorThrown => {
|
|
420
|
+
prevRowModesModel.current[id].mode = _gridEditRowModel.GridRowModes.Edit;
|
|
421
|
+
|
|
418
422
|
if (onProcessRowUpdateError) {
|
|
419
423
|
onProcessRowUpdateError(errorThrown);
|
|
420
424
|
} else {
|
|
@@ -578,11 +582,14 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
578
582
|
}
|
|
579
583
|
}, [rowModesModelProp, updateRowModesModel]);
|
|
580
584
|
React.useEffect(() => {
|
|
581
|
-
const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef);
|
|
585
|
+
const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopRowEditMode may change it later
|
|
586
|
+
|
|
587
|
+
const copyOfPrevRowModesModel = prevRowModesModel.current;
|
|
588
|
+
prevRowModesModel.current = rowModesModel;
|
|
582
589
|
Object.entries(rowModesModel).forEach(([id, params]) => {
|
|
583
|
-
var
|
|
590
|
+
var _copyOfPrevRowModesMo, _idToIdLookup$id;
|
|
584
591
|
|
|
585
|
-
const prevMode = ((
|
|
592
|
+
const prevMode = ((_copyOfPrevRowModesMo = copyOfPrevRowModesModel[id]) == null ? void 0 : _copyOfPrevRowModesMo.mode) || _gridEditRowModel.GridRowModes.View;
|
|
586
593
|
const originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;
|
|
587
594
|
|
|
588
595
|
if (params.mode === _gridEditRowModel.GridRowModes.Edit && prevMode === _gridEditRowModel.GridRowModes.View) {
|
|
@@ -595,7 +602,6 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
595
602
|
}, params));
|
|
596
603
|
}
|
|
597
604
|
});
|
|
598
|
-
prevRowModesModel.current = rowModesModel;
|
|
599
605
|
}, [apiRef, rowModesModel, updateStateToStartRowEditMode, updateStateToStopRowEditMode]);
|
|
600
606
|
};
|
|
601
607
|
|
|
@@ -25,6 +25,8 @@ function useGridEvents(apiRef, props) {
|
|
|
25
25
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'cellFocusOut', props.onCellFocusOut);
|
|
26
26
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'preferencePanelClose', props.onPreferencePanelClose);
|
|
27
27
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'preferencePanelOpen', props.onPreferencePanelOpen);
|
|
28
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'menuOpen', props.onMenuOpen);
|
|
29
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'menuClose', props.onMenuClose);
|
|
28
30
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowDoubleClick', props.onRowDoubleClick);
|
|
29
31
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowClick', props.onRowClick);
|
|
30
32
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'componentError', props.onError);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridVisibleTopLevelRowCountSelector = exports.gridVisibleSortedTopLevelRowEntriesSelector = exports.gridVisibleSortedRowIdsSelector = exports.gridVisibleSortedRowEntriesSelector = exports.gridVisibleRowsSelector = exports.gridVisibleRowsLookupSelector = exports.gridVisibleRowCountSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterStateSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = void 0;
|
|
6
|
+
exports.gridVisibleTopLevelRowCountSelector = exports.gridVisibleSortedTopLevelRowEntriesSelector = exports.gridVisibleSortedRowIdsSelector = exports.gridVisibleSortedRowEntriesSelector = exports.gridVisibleRowsSelector = exports.gridVisibleRowsLookupSelector = exports.gridVisibleRowCountSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterStateSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = void 0;
|
|
7
7
|
|
|
8
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
9
9
|
|
|
@@ -26,11 +26,18 @@ const gridFilterStateSelector = state => state.filter;
|
|
|
26
26
|
exports.gridFilterStateSelector = gridFilterStateSelector;
|
|
27
27
|
const gridFilterModelSelector = (0, _createSelector.createSelector)(gridFilterStateSelector, filterState => filterState.filterModel);
|
|
28
28
|
/**
|
|
29
|
+
* Get the current quick filter values.
|
|
29
30
|
* @category Filtering
|
|
30
|
-
* @ignore - do not document.
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
exports.gridFilterModelSelector = gridFilterModelSelector;
|
|
34
|
+
const gridQuickFilterValuesSelector = (0, _createSelector.createSelector)(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);
|
|
35
|
+
/**
|
|
36
|
+
* @category Filtering
|
|
37
|
+
* @ignore - do not document.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
exports.gridQuickFilterValuesSelector = gridQuickFilterValuesSelector;
|
|
34
41
|
const gridVisibleRowsLookupSelector = (0, _createSelector.createSelector)(gridFilterStateSelector, filterState => filterState.visibleRowsLookup);
|
|
35
42
|
/**
|
|
36
43
|
* @category Filtering
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.sanitizeFilterModel = exports.mergeStateWithFilterModel = exports.buildAggregatedQuickFilterApplier = exports.buildAggregatedFilterItemsApplier = exports.buildAggregatedFilterApplier = void 0;
|
|
8
|
+
exports.sanitizeFilterModel = exports.mergeStateWithFilterModel = exports.cleanFilterItem = exports.buildAggregatedQuickFilterApplier = exports.buildAggregatedFilterItemsApplier = exports.buildAggregatedFilterApplier = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -38,6 +38,7 @@ const cleanFilterItem = (item, apiRef) => {
|
|
|
38
38
|
return cleanItem;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
+
exports.cleanFilterItem = cleanFilterItem;
|
|
41
42
|
const filterModelDisableMultiColumnsFilteringWarning = (0, _warning.buildWarning)(['MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
|
|
42
43
|
const filterModelMissingItemIdWarning = (0, _warning.buildWarning)("MUI: The 'id' field is required on `filterModel.items` when you use multiple filters.", 'error');
|
|
43
44
|
const filterModelMissingItemOperatorWarning = (0, _warning.buildWarning)(['MUI: One of your filtering item have no `operatorValue` provided.', 'This property will become required on `@mui/x-data-grid@6.X`.']);
|
|
@@ -81,10 +82,8 @@ const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) =>
|
|
|
81
82
|
|
|
82
83
|
exports.sanitizeFilterModel = sanitizeFilterModel;
|
|
83
84
|
|
|
84
|
-
const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) =>
|
|
85
|
-
|
|
86
|
-
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
87
|
-
})
|
|
85
|
+
const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => (0, _extends2.default)({}, filteringState, {
|
|
86
|
+
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
88
87
|
});
|
|
89
88
|
/**
|
|
90
89
|
* Generates a method to easily check if a row is matching the current filter model.
|
|
@@ -70,7 +70,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
70
70
|
var _props$componentsProp2;
|
|
71
71
|
|
|
72
72
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridFilter');
|
|
73
|
-
apiRef.current.
|
|
73
|
+
apiRef.current.unstable_registerControlState({
|
|
74
74
|
stateId: 'filter',
|
|
75
75
|
propModel: props.filterModel,
|
|
76
76
|
propOnChange: props.onFilterModelChange,
|
|
@@ -111,7 +111,23 @@ const useGridFilter = (apiRef, props) => {
|
|
|
111
111
|
|
|
112
112
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
113
113
|
items
|
|
114
|
-
}));
|
|
114
|
+
}), 'upsertFilterItem');
|
|
115
|
+
}, [apiRef]);
|
|
116
|
+
const upsertFilterItems = React.useCallback(items => {
|
|
117
|
+
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
118
|
+
const existingItems = [...filterModel.items];
|
|
119
|
+
items.forEach(item => {
|
|
120
|
+
const itemIndex = items.findIndex(filterItem => filterItem.id === item.id);
|
|
121
|
+
|
|
122
|
+
if (itemIndex === -1) {
|
|
123
|
+
existingItems.push(item);
|
|
124
|
+
} else {
|
|
125
|
+
existingItems[itemIndex] = item;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
129
|
+
items
|
|
130
|
+
}), 'upsertFilterItems');
|
|
115
131
|
}, [apiRef]);
|
|
116
132
|
const deleteFilterItem = React.useCallback(itemToDelete => {
|
|
117
133
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
@@ -123,7 +139,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
123
139
|
|
|
124
140
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
125
141
|
items
|
|
126
|
-
}));
|
|
142
|
+
}), 'deleteFilterItem');
|
|
127
143
|
}, [apiRef]);
|
|
128
144
|
const showFilterPanel = React.useCallback(targetColumnField => {
|
|
129
145
|
logger.debug('Displaying filter panel');
|
|
@@ -137,13 +153,13 @@ const useGridFilter = (apiRef, props) => {
|
|
|
137
153
|
if (filterItemOnTarget) {
|
|
138
154
|
newFilterItems = filterItemsWithValue;
|
|
139
155
|
} else if (props.disableMultipleColumnsFiltering) {
|
|
140
|
-
newFilterItems = [{
|
|
156
|
+
newFilterItems = [(0, _gridFilterUtils.cleanFilterItem)({
|
|
141
157
|
columnField: targetColumnField
|
|
142
|
-
}];
|
|
158
|
+
}, apiRef)];
|
|
143
159
|
} else {
|
|
144
|
-
newFilterItems = [...filterItemsWithValue, {
|
|
160
|
+
newFilterItems = [...filterItemsWithValue, (0, _gridFilterUtils.cleanFilterItem)({
|
|
145
161
|
columnField: targetColumnField
|
|
146
|
-
}];
|
|
162
|
+
}, apiRef)];
|
|
147
163
|
}
|
|
148
164
|
|
|
149
165
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
@@ -166,7 +182,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
166
182
|
|
|
167
183
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
168
184
|
linkOperator
|
|
169
|
-
}));
|
|
185
|
+
}), 'changeLogicOperator');
|
|
170
186
|
}, [apiRef]);
|
|
171
187
|
const setQuickFilterValues = React.useCallback(values => {
|
|
172
188
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
@@ -179,12 +195,12 @@ const useGridFilter = (apiRef, props) => {
|
|
|
179
195
|
quickFilterValues: [...values]
|
|
180
196
|
}));
|
|
181
197
|
}, [apiRef]);
|
|
182
|
-
const setFilterModel = React.useCallback(model => {
|
|
198
|
+
const setFilterModel = React.useCallback((model, reason) => {
|
|
183
199
|
const currentModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
184
200
|
|
|
185
201
|
if (currentModel !== model) {
|
|
186
202
|
logger.debug('Setting filter model');
|
|
187
|
-
apiRef.current.
|
|
203
|
+
apiRef.current.unstable_updateControlState('filter', (0, _gridFilterUtils.mergeStateWithFilterModel)(model, props.disableMultipleColumnsFiltering, apiRef), reason);
|
|
188
204
|
apiRef.current.unstable_applyFilters();
|
|
189
205
|
}
|
|
190
206
|
}, [apiRef, logger, props.disableMultipleColumnsFiltering]);
|
|
@@ -197,6 +213,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
197
213
|
unstable_applyFilters: applyFilters,
|
|
198
214
|
deleteFilterItem,
|
|
199
215
|
upsertFilterItem,
|
|
216
|
+
upsertFilterItems,
|
|
200
217
|
setFilterModel,
|
|
201
218
|
showFilterPanel,
|
|
202
219
|
hideFilterPanel,
|
|
@@ -230,7 +247,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
230
247
|
return params;
|
|
231
248
|
}
|
|
232
249
|
|
|
233
|
-
apiRef.current.
|
|
250
|
+
apiRef.current.unstable_updateControlState('filter', (0, _gridFilterUtils.mergeStateWithFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef), 'restoreState');
|
|
234
251
|
return (0, _extends2.default)({}, params, {
|
|
235
252
|
callbacks: [...params.callbacks, apiRef.current.unstable_applyFilters]
|
|
236
253
|
});
|
|
@@ -61,7 +61,7 @@ const useGridPage = (apiRef, props) => {
|
|
|
61
61
|
|
|
62
62
|
const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPage');
|
|
63
63
|
const visibleTopLevelRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridVisibleTopLevelRowCountSelector);
|
|
64
|
-
apiRef.current.
|
|
64
|
+
apiRef.current.unstable_registerControlState({
|
|
65
65
|
stateId: 'page',
|
|
66
66
|
propModel: props.page,
|
|
67
67
|
propOnChange: props.onPageChange,
|
|
@@ -42,7 +42,7 @@ const useGridPageSize = (apiRef, props) => {
|
|
|
42
42
|
|
|
43
43
|
const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPageSize');
|
|
44
44
|
const rowHeight = (0, _utils.useGridSelector)(apiRef, _density.gridDensityRowHeightSelector);
|
|
45
|
-
apiRef.current.
|
|
45
|
+
apiRef.current.unstable_registerControlState({
|
|
46
46
|
stateId: 'pageSize',
|
|
47
47
|
propModel: props.pageSize,
|
|
48
48
|
propOnChange: props.onPageSizeChange,
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
|
|
7
|
-
exports.getTreeNodeDescendants = void 0;
|
|
9
|
+
exports.getTreeNodeDescendants = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = exports.createRowsInternalCache = void 0;
|
|
10
|
+
|
|
11
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
|
+
|
|
13
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
14
|
+
|
|
15
|
+
const _excluded = ["rowsBeforePartialUpdates"];
|
|
8
16
|
|
|
9
17
|
/**
|
|
10
18
|
* A helper function to check if the id provided is valid.
|
|
@@ -18,6 +26,64 @@ function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided
|
|
|
18
26
|
}
|
|
19
27
|
}
|
|
20
28
|
|
|
29
|
+
const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {
|
|
30
|
+
const id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
31
|
+
checkGridRowIdIsValid(id, rowModel, detailErrorMessage);
|
|
32
|
+
return id;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.getRowIdFromRowModel = getRowIdFromRowModel;
|
|
36
|
+
|
|
37
|
+
const createRowsInternalCache = ({
|
|
38
|
+
rows,
|
|
39
|
+
getRowId,
|
|
40
|
+
loading
|
|
41
|
+
}) => {
|
|
42
|
+
const cache = {
|
|
43
|
+
rowsBeforePartialUpdates: rows,
|
|
44
|
+
loadingPropBeforePartialUpdates: loading,
|
|
45
|
+
idRowsLookup: {},
|
|
46
|
+
idToIdLookup: {},
|
|
47
|
+
ids: []
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
for (let i = 0; i < rows.length; i += 1) {
|
|
51
|
+
const row = rows[i];
|
|
52
|
+
const id = getRowIdFromRowModel(row, getRowId);
|
|
53
|
+
cache.idRowsLookup[id] = row;
|
|
54
|
+
cache.idToIdLookup[id] = id;
|
|
55
|
+
cache.ids.push(id);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return cache;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.createRowsInternalCache = createRowsInternalCache;
|
|
62
|
+
|
|
63
|
+
const getRowsStateFromCache = ({
|
|
64
|
+
apiRef,
|
|
65
|
+
previousTree,
|
|
66
|
+
rowCountProp,
|
|
67
|
+
loadingProp
|
|
68
|
+
}) => {
|
|
69
|
+
const _apiRef$current$unsta = apiRef.current.unstable_caches.rows,
|
|
70
|
+
cacheForGrouping = (0, _objectWithoutPropertiesLoose2.default)(_apiRef$current$unsta, _excluded);
|
|
71
|
+
const rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
72
|
+
const groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', (0, _extends2.default)({}, cacheForGrouping, {
|
|
73
|
+
previousTree
|
|
74
|
+
}));
|
|
75
|
+
const processedGroupingResponse = apiRef.current.unstable_applyPipeProcessors('hydrateRows', groupingResponse);
|
|
76
|
+
const dataTopLevelRowCount = processedGroupingResponse.treeDepth === 1 ? processedGroupingResponse.ids.length : Object.values(processedGroupingResponse.tree).filter(node => node.parent == null).length;
|
|
77
|
+
return (0, _extends2.default)({}, processedGroupingResponse, {
|
|
78
|
+
groupingResponseBeforeRowHydration: groupingResponse,
|
|
79
|
+
loading: loadingProp,
|
|
80
|
+
totalRowCount: Math.max(rowCount, processedGroupingResponse.ids.length),
|
|
81
|
+
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
exports.getRowsStateFromCache = getRowsStateFromCache;
|
|
86
|
+
|
|
21
87
|
const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
|
|
22
88
|
var _tree$parentId;
|
|
23
89
|
|