@mui/x-data-grid 5.11.1 → 5.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +199 -20
- package/DataGrid/DataGrid.js +26 -1
- package/README.md +2 -2
- package/colDef/gridCheckboxSelectionColDef.d.ts +1 -0
- package/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/colDef/gridDateOperators.d.ts +1 -1
- package/colDef/gridNumericColDef.js +1 -1
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +51 -12
- 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 +9 -6
- package/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/components/containers/GridRootStyles.js +8 -3
- package/components/menu/GridMenu.js +9 -2
- package/components/panel/GridColumnsPanel.js +12 -7
- 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 +26 -11
- package/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
- package/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +4 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +1 -0
- 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/useGridColumnSpanning.d.ts +1 -1
- package/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +13 -15
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +9 -8
- 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/gridFilterState.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +10 -2
- package/hooks/features/filter/gridFilterUtils.js +3 -6
- package/hooks/features/filter/useGridFilter.d.ts +1 -1
- 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/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +133 -67
- package/hooks/features/selection/useGridSelection.js +1 -1
- package/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/sorting/useGridSorting.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/legacy/DataGrid/DataGrid.js +26 -1
- package/legacy/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/legacy/colDef/gridNumericColDef.js +1 -1
- package/legacy/components/GridRow.js +56 -12
- package/legacy/components/cell/GridCell.js +12 -7
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +11 -6
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/legacy/components/containers/GridRootStyles.js +10 -7
- package/legacy/components/menu/GridMenu.js +9 -2
- package/legacy/components/panel/GridColumnsPanel.js +14 -7
- 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 +28 -12
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +67 -6
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +1 -0
- package/legacy/hooks/core/useGridStateInitialization.js +18 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/legacy/hooks/features/columns/useGridColumns.js +13 -15
- package/legacy/hooks/features/dimensions/useGridDimensions.js +9 -8
- 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/useGridRowsMeta.js +133 -66
- package/legacy/hooks/features/selection/useGridSelection.js +1 -1
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +84 -26
- package/legacy/index.js +1 -1
- package/legacy/locales/arSD.js +1 -0
- package/legacy/locales/bgBG.js +1 -0
- package/legacy/locales/csCZ.js +1 -0
- package/legacy/locales/daDK.js +1 -0
- package/legacy/locales/deDE.js +1 -0
- package/legacy/locales/elGR.js +1 -0
- package/legacy/locales/esES.js +1 -0
- package/legacy/locales/faIR.js +1 -0
- package/legacy/locales/fiFI.js +1 -0
- package/legacy/locales/frFR.js +1 -0
- package/legacy/locales/heIL.js +10 -9
- package/legacy/locales/huHU.js +1 -0
- package/legacy/locales/itIT.js +1 -0
- package/legacy/locales/jaJP.js +29 -24
- package/legacy/locales/koKR.js +1 -0
- package/legacy/locales/nbNO.js +128 -0
- package/legacy/locales/nlNL.js +1 -0
- package/legacy/locales/plPL.js +1 -0
- package/legacy/locales/ptBR.js +1 -0
- package/legacy/locales/ruRU.js +7 -6
- package/legacy/locales/skSK.js +1 -0
- package/legacy/locales/trTR.js +8 -7
- package/legacy/locales/ukUA.js +1 -0
- package/legacy/locales/viVN.js +1 -0
- package/legacy/locales/zhCN.js +1 -0
- 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/arSD.js +1 -0
- package/locales/bgBG.js +1 -0
- package/locales/csCZ.js +1 -0
- package/locales/daDK.js +1 -0
- package/locales/deDE.js +1 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +1 -0
- package/locales/faIR.js +1 -0
- package/locales/fiFI.js +1 -0
- package/locales/frFR.js +1 -0
- package/locales/heIL.js +10 -9
- package/locales/huHU.js +1 -0
- package/locales/itIT.js +1 -0
- package/locales/jaJP.js +25 -24
- package/locales/koKR.js +1 -0
- package/locales/nbNO.d.ts +2 -0
- package/locales/nbNO.js +116 -0
- package/locales/nlNL.js +1 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ruRU.js +7 -6
- package/locales/skSK.js +1 -0
- package/locales/trTR.js +8 -7
- package/locales/ukUA.js +1 -0
- package/locales/viVN.js +1 -0
- package/locales/zhCN.js +1 -0
- 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/gridLocaleTextApi.d.ts +1 -0
- package/models/api/gridRowsMetaApi.d.ts +24 -0
- package/models/api/gridStateApi.d.ts +14 -3
- package/models/colDef/gridColDef.d.ts +4 -4
- 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 +5 -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/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/modern/colDef/gridNumericColDef.js +1 -1
- package/modern/components/GridRow.js +51 -12
- package/modern/components/cell/GridCell.js +12 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +9 -6
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/modern/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/modern/components/containers/GridRootStyles.js +8 -3
- package/modern/components/menu/GridMenu.js +9 -2
- package/modern/components/panel/GridColumnsPanel.js +12 -7
- 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 +26 -11
- package/modern/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/modern/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/modern/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/modern/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +1 -0
- package/modern/hooks/core/useGridStateInitialization.js +19 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/modern/hooks/features/columns/useGridColumns.js +12 -14
- package/modern/hooks/features/dimensions/useGridDimensions.js +9 -8
- 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/useGridRowsMeta.js +129 -59
- package/modern/hooks/features/selection/useGridSelection.js +1 -1
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/modern/hooks/features/sorting/useGridSorting.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
- package/modern/index.js +1 -1
- package/modern/locales/arSD.js +1 -0
- package/modern/locales/bgBG.js +1 -0
- package/modern/locales/csCZ.js +1 -0
- package/modern/locales/daDK.js +1 -0
- package/modern/locales/deDE.js +1 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/esES.js +1 -0
- package/modern/locales/faIR.js +1 -0
- package/modern/locales/fiFI.js +1 -0
- package/modern/locales/frFR.js +1 -0
- package/modern/locales/heIL.js +10 -9
- package/modern/locales/huHU.js +1 -0
- package/modern/locales/itIT.js +1 -0
- package/modern/locales/jaJP.js +25 -24
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/nbNO.js +116 -0
- package/modern/locales/nlNL.js +1 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.js +1 -0
- package/modern/locales/ruRU.js +7 -6
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/trTR.js +8 -7
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/viVN.js +1 -0
- package/modern/locales/zhCN.js +1 -0
- 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/colDef/gridCheckboxSelectionColDef.js +4 -2
- package/node/colDef/gridNumericColDef.js +1 -1
- package/node/components/GridRow.js +53 -12
- package/node/components/cell/GridCell.js +12 -7
- package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -6
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/node/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/node/components/containers/GridRootStyles.js +8 -3
- package/node/components/menu/GridMenu.js +10 -2
- package/node/components/panel/GridColumnsPanel.js +12 -7
- 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 +28 -11
- package/node/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/node/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/node/components/toolbar/GridToolbarQuickFilter.js +61 -4
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +1 -0
- package/node/hooks/core/useGridStateInitialization.js +19 -6
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
- package/node/hooks/features/columns/useGridColumnSpanning.js +11 -16
- package/node/hooks/features/columns/useGridColumns.js +13 -15
- package/node/hooks/features/dimensions/useGridDimensions.js +9 -8
- 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/useGridRowsMeta.js +136 -69
- package/node/hooks/features/selection/useGridSelection.js +1 -1
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +7 -5
- package/node/hooks/features/sorting/useGridSorting.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +65 -12
- package/node/index.js +1 -1
- package/node/locales/arSD.js +1 -0
- package/node/locales/bgBG.js +1 -0
- package/node/locales/csCZ.js +1 -0
- package/node/locales/daDK.js +1 -0
- package/node/locales/deDE.js +1 -0
- package/node/locales/elGR.js +1 -0
- package/node/locales/esES.js +1 -0
- package/node/locales/faIR.js +1 -0
- package/node/locales/fiFI.js +1 -0
- package/node/locales/frFR.js +1 -0
- package/node/locales/heIL.js +10 -9
- package/node/locales/huHU.js +1 -0
- package/node/locales/itIT.js +1 -0
- package/node/locales/jaJP.js +25 -24
- package/node/locales/koKR.js +1 -0
- package/node/locales/nbNO.js +126 -0
- package/node/locales/nlNL.js +1 -0
- package/node/locales/plPL.js +1 -0
- package/node/locales/ptBR.js +1 -0
- package/node/locales/ruRU.js +7 -6
- package/node/locales/skSK.js +1 -0
- package/node/locales/trTR.js +8 -7
- package/node/locales/ukUA.js +1 -0
- package/node/locales/viVN.js +1 -0
- package/node/locales/zhCN.js +1 -0
- 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 +6 -5
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { GridFilterModel } from '../../../models';
|
|
2
|
+
import { GridFilterItem, GridFilterModel } from '../../../models';
|
|
3
3
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
4
4
|
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
5
5
|
import { GridAggregatedFilterItemApplier } from './gridFilterState';
|
|
6
|
+
/**
|
|
7
|
+
* Adds default values to the optional fields of a filter items.
|
|
8
|
+
* @param {GridFilterItem} item The raw filter item.
|
|
9
|
+
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
10
|
+
* @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operatorValue.
|
|
11
|
+
* TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.
|
|
12
|
+
*/
|
|
13
|
+
export declare const cleanFilterItem: (item: GridFilterItem, apiRef: React.MutableRefObject<GridApiCommunity>) => GridFilterItem;
|
|
6
14
|
export declare const sanitizeFilterModel: (model: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.MutableRefObject<GridApiCommunity>) => GridFilterModel;
|
|
7
|
-
export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.MutableRefObject<GridApiCommunity>) => (
|
|
15
|
+
export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.MutableRefObject<GridApiCommunity>) => (filteringState: GridStateCommunity['filter']) => GridStateCommunity['filter'];
|
|
8
16
|
/**
|
|
9
17
|
* Generates a method to easily check if a row is matching the current filter model.
|
|
10
18
|
* @param {GridFilterModel} filterModel The model with which we want to filter the rows.
|
|
@@ -10,7 +10,7 @@ import { gridColumnFieldsSelector } from '../columns';
|
|
|
10
10
|
* @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operatorValue.
|
|
11
11
|
* TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.
|
|
12
12
|
*/
|
|
13
|
-
const cleanFilterItem = (item, apiRef) => {
|
|
13
|
+
export const cleanFilterItem = (item, apiRef) => {
|
|
14
14
|
const cleanItem = _extends({}, item);
|
|
15
15
|
|
|
16
16
|
if (cleanItem.id == null) {
|
|
@@ -25,7 +25,6 @@ const cleanFilterItem = (item, apiRef) => {
|
|
|
25
25
|
|
|
26
26
|
return cleanItem;
|
|
27
27
|
};
|
|
28
|
-
|
|
29
28
|
const filterModelDisableMultiColumnsFilteringWarning = 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');
|
|
30
29
|
const filterModelMissingItemIdWarning = buildWarning("MUI: The 'id' field is required on `filterModel.items` when you use multiple filters.", 'error');
|
|
31
30
|
const filterModelMissingItemOperatorWarning = buildWarning(['MUI: One of your filtering item have no `operatorValue` provided.', 'This property will become required on `@mui/x-data-grid@6.X`.']);
|
|
@@ -65,10 +64,8 @@ export const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiR
|
|
|
65
64
|
|
|
66
65
|
return model;
|
|
67
66
|
};
|
|
68
|
-
export const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) =>
|
|
69
|
-
|
|
70
|
-
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
71
|
-
})
|
|
67
|
+
export const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => _extends({}, filteringState, {
|
|
68
|
+
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
72
69
|
});
|
|
73
70
|
/**
|
|
74
71
|
* Generates a method to easily check if a row is matching the current filter model.
|
|
@@ -8,4 +8,4 @@ export declare const filterStateInitializer: GridStateInitializer<Pick<DataGridP
|
|
|
8
8
|
* @requires useGridParamsApi (method)
|
|
9
9
|
* @requires useGridRows (event)
|
|
10
10
|
*/
|
|
11
|
-
export declare const useGridFilter: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, '
|
|
11
|
+
export declare const useGridFilter: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'filterModel' | 'onFilterModelChange' | 'filterMode' | 'disableMultipleColumnsFiltering' | 'components' | 'componentsProps'>) => void;
|
|
@@ -12,7 +12,7 @@ import { useFirstRender } from '../../utils/useFirstRender';
|
|
|
12
12
|
import { gridRowIdsSelector } from '../rows';
|
|
13
13
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
14
14
|
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
|
|
15
|
-
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
|
|
15
|
+
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem } from './gridFilterUtils';
|
|
16
16
|
import { isDeepEqual } from '../../../utils/utils';
|
|
17
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
18
|
export const filterStateInitializer = (state, props, apiRef) => {
|
|
@@ -37,7 +37,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
37
37
|
var _props$componentsProp2;
|
|
38
38
|
|
|
39
39
|
const logger = useGridLogger(apiRef, 'useGridFilter');
|
|
40
|
-
apiRef.current.
|
|
40
|
+
apiRef.current.unstable_registerControlState({
|
|
41
41
|
stateId: 'filter',
|
|
42
42
|
propModel: props.filterModel,
|
|
43
43
|
propOnChange: props.onFilterModelChange,
|
|
@@ -78,7 +78,23 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
78
78
|
|
|
79
79
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
80
80
|
items
|
|
81
|
-
}));
|
|
81
|
+
}), 'upsertFilterItem');
|
|
82
|
+
}, [apiRef]);
|
|
83
|
+
const upsertFilterItems = React.useCallback(items => {
|
|
84
|
+
const filterModel = gridFilterModelSelector(apiRef);
|
|
85
|
+
const existingItems = [...filterModel.items];
|
|
86
|
+
items.forEach(item => {
|
|
87
|
+
const itemIndex = items.findIndex(filterItem => filterItem.id === item.id);
|
|
88
|
+
|
|
89
|
+
if (itemIndex === -1) {
|
|
90
|
+
existingItems.push(item);
|
|
91
|
+
} else {
|
|
92
|
+
existingItems[itemIndex] = item;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
96
|
+
items
|
|
97
|
+
}), 'upsertFilterItems');
|
|
82
98
|
}, [apiRef]);
|
|
83
99
|
const deleteFilterItem = React.useCallback(itemToDelete => {
|
|
84
100
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
@@ -90,7 +106,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
90
106
|
|
|
91
107
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
92
108
|
items
|
|
93
|
-
}));
|
|
109
|
+
}), 'deleteFilterItem');
|
|
94
110
|
}, [apiRef]);
|
|
95
111
|
const showFilterPanel = React.useCallback(targetColumnField => {
|
|
96
112
|
logger.debug('Displaying filter panel');
|
|
@@ -104,13 +120,13 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
104
120
|
if (filterItemOnTarget) {
|
|
105
121
|
newFilterItems = filterItemsWithValue;
|
|
106
122
|
} else if (props.disableMultipleColumnsFiltering) {
|
|
107
|
-
newFilterItems = [{
|
|
123
|
+
newFilterItems = [cleanFilterItem({
|
|
108
124
|
columnField: targetColumnField
|
|
109
|
-
}];
|
|
125
|
+
}, apiRef)];
|
|
110
126
|
} else {
|
|
111
|
-
newFilterItems = [...filterItemsWithValue, {
|
|
127
|
+
newFilterItems = [...filterItemsWithValue, cleanFilterItem({
|
|
112
128
|
columnField: targetColumnField
|
|
113
|
-
}];
|
|
129
|
+
}, apiRef)];
|
|
114
130
|
}
|
|
115
131
|
|
|
116
132
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
@@ -133,7 +149,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
133
149
|
|
|
134
150
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
135
151
|
linkOperator
|
|
136
|
-
}));
|
|
152
|
+
}), 'changeLogicOperator');
|
|
137
153
|
}, [apiRef]);
|
|
138
154
|
const setQuickFilterValues = React.useCallback(values => {
|
|
139
155
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
@@ -146,12 +162,12 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
146
162
|
quickFilterValues: [...values]
|
|
147
163
|
}));
|
|
148
164
|
}, [apiRef]);
|
|
149
|
-
const setFilterModel = React.useCallback(model => {
|
|
165
|
+
const setFilterModel = React.useCallback((model, reason) => {
|
|
150
166
|
const currentModel = gridFilterModelSelector(apiRef);
|
|
151
167
|
|
|
152
168
|
if (currentModel !== model) {
|
|
153
169
|
logger.debug('Setting filter model');
|
|
154
|
-
apiRef.current.
|
|
170
|
+
apiRef.current.unstable_updateControlState('filter', mergeStateWithFilterModel(model, props.disableMultipleColumnsFiltering, apiRef), reason);
|
|
155
171
|
apiRef.current.unstable_applyFilters();
|
|
156
172
|
}
|
|
157
173
|
}, [apiRef, logger, props.disableMultipleColumnsFiltering]);
|
|
@@ -164,6 +180,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
164
180
|
unstable_applyFilters: applyFilters,
|
|
165
181
|
deleteFilterItem,
|
|
166
182
|
upsertFilterItem,
|
|
183
|
+
upsertFilterItems,
|
|
167
184
|
setFilterModel,
|
|
168
185
|
showFilterPanel,
|
|
169
186
|
hideFilterPanel,
|
|
@@ -197,7 +214,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
197
214
|
return params;
|
|
198
215
|
}
|
|
199
216
|
|
|
200
|
-
apiRef.current.
|
|
217
|
+
apiRef.current.unstable_updateControlState('filter', mergeStateWithFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef), 'restoreState');
|
|
201
218
|
return _extends({}, params, {
|
|
202
219
|
callbacks: [...params.callbacks, apiRef.current.unstable_applyFilters]
|
|
203
220
|
});
|
|
@@ -39,7 +39,7 @@ export const useGridPage = (apiRef, props) => {
|
|
|
39
39
|
|
|
40
40
|
const logger = useGridLogger(apiRef, 'useGridPage');
|
|
41
41
|
const visibleTopLevelRowCount = useGridSelector(apiRef, gridVisibleTopLevelRowCountSelector);
|
|
42
|
-
apiRef.current.
|
|
42
|
+
apiRef.current.unstable_registerControlState({
|
|
43
43
|
stateId: 'page',
|
|
44
44
|
propModel: props.page,
|
|
45
45
|
propOnChange: props.onPageChange,
|
|
@@ -21,7 +21,7 @@ export const useGridPageSize = (apiRef, props) => {
|
|
|
21
21
|
|
|
22
22
|
const logger = useGridLogger(apiRef, 'useGridPageSize');
|
|
23
23
|
const rowHeight = useGridSelector(apiRef, gridDensityRowHeightSelector);
|
|
24
|
-
apiRef.current.
|
|
24
|
+
apiRef.current.unstable_registerControlState({
|
|
25
25
|
stateId: 'pageSize',
|
|
26
26
|
propModel: props.pageSize,
|
|
27
27
|
propOnChange: props.onPageSizeChange,
|
|
@@ -7,4 +7,4 @@ export declare const rowsMetaStateInitializer: GridStateInitializer;
|
|
|
7
7
|
* @requires useGridPageSize (method)
|
|
8
8
|
* @requires useGridPage (method)
|
|
9
9
|
*/
|
|
10
|
-
export declare const useGridRowsMeta: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'getRowHeight' | 'getRowSpacing' | 'pagination' | 'paginationMode'>) => void;
|
|
10
|
+
export declare const useGridRowsMeta: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'getRowHeight' | 'getEstimatedRowHeight' | 'getRowSpacing' | 'pagination' | 'paginationMode'>) => void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { debounce } from '@mui/material/utils';
|
|
3
4
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
4
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
6
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
@@ -21,68 +22,101 @@ export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
|
21
22
|
|
|
22
23
|
export const useGridRowsMeta = (apiRef, props) => {
|
|
23
24
|
const {
|
|
24
|
-
getRowHeight,
|
|
25
|
-
getRowSpacing
|
|
25
|
+
getRowHeight: getRowHeightProp,
|
|
26
|
+
getRowSpacing,
|
|
27
|
+
getEstimatedRowHeight
|
|
26
28
|
} = props;
|
|
27
|
-
const rowsHeightLookup = React.useRef({});
|
|
28
|
-
|
|
29
|
+
const rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
|
|
30
|
+
|
|
31
|
+
const lastMeasuredRowIndex = React.useRef(-1);
|
|
32
|
+
const hasRowWithAutoHeight = React.useRef(false);
|
|
33
|
+
const rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
|
|
29
34
|
const filterState = useGridSelector(apiRef, gridFilterStateSelector);
|
|
30
35
|
const paginationState = useGridSelector(apiRef, gridPaginationSelector);
|
|
31
36
|
const sortingState = useGridSelector(apiRef, gridSortingStateSelector);
|
|
32
37
|
const currentPage = useGridVisibleRows(apiRef, props);
|
|
33
38
|
const hydrateRowsMeta = React.useCallback(() => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
hasRowWithAutoHeight.current = false;
|
|
40
|
+
const densityFactor = gridDensityFactorSelector(apiRef.current.state, apiRef.current.instanceId);
|
|
41
|
+
const positions = [];
|
|
42
|
+
const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
|
|
43
|
+
positions.push(acc);
|
|
44
|
+
|
|
45
|
+
if (!rowsHeightLookup.current[row.id]) {
|
|
46
|
+
rowsHeightLookup.current[row.id] = {
|
|
47
|
+
sizes: {
|
|
48
|
+
base: rowHeightFromDensity
|
|
49
|
+
},
|
|
50
|
+
isResized: false,
|
|
51
|
+
autoHeight: false,
|
|
52
|
+
needsFirstMeasurement: true // Assume all rows will need to be measured by default
|
|
53
|
+
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const {
|
|
58
|
+
isResized,
|
|
59
|
+
needsFirstMeasurement,
|
|
60
|
+
sizes
|
|
61
|
+
} = rowsHeightLookup.current[row.id];
|
|
62
|
+
let baseRowHeight = rowHeightFromDensity;
|
|
63
|
+
const existingBaseRowHeight = sizes.base;
|
|
48
64
|
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
if (isResized) {
|
|
66
|
+
// Do not recalculate resized row height and use the value from the lookup
|
|
67
|
+
baseRowHeight = existingBaseRowHeight;
|
|
68
|
+
} else if (getRowHeightProp) {
|
|
69
|
+
const rowHeightFromUser = getRowHeightProp(_extends({}, row, {
|
|
70
|
+
densityFactor
|
|
71
|
+
}));
|
|
51
72
|
|
|
52
|
-
|
|
53
|
-
|
|
73
|
+
if (rowHeightFromUser === 'auto') {
|
|
74
|
+
if (needsFirstMeasurement) {
|
|
75
|
+
const estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
|
|
54
76
|
densityFactor
|
|
55
|
-
}))
|
|
77
|
+
})) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
|
|
78
|
+
|
|
79
|
+
baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
|
|
80
|
+
} else {
|
|
81
|
+
baseRowHeight = existingBaseRowHeight;
|
|
56
82
|
}
|
|
57
|
-
} // We use an object to make simple to check if a height is already added or not
|
|
58
83
|
|
|
84
|
+
hasRowWithAutoHeight.current = true;
|
|
85
|
+
rowsHeightLookup.current[row.id].autoHeight = true;
|
|
86
|
+
} else {
|
|
87
|
+
// Default back to base rowHeight if getRowHeight returns null or undefined.
|
|
88
|
+
baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
|
|
89
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
90
|
+
rowsHeightLookup.current[row.id].autoHeight = false;
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
94
|
+
} // We use an object to make simple to check if a height is already added or not
|
|
59
95
|
|
|
60
|
-
const initialHeights = {
|
|
61
|
-
base: baseRowHeight
|
|
62
|
-
};
|
|
63
96
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
68
|
-
const spacing = getRowSpacing(_extends({}, row, {
|
|
69
|
-
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
-
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
-
indexRelativeToCurrentPage
|
|
72
|
-
}));
|
|
73
|
-
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
74
|
-
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
75
|
-
}
|
|
97
|
+
const initialHeights = {
|
|
98
|
+
base: baseRowHeight
|
|
99
|
+
};
|
|
76
100
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
101
|
+
if (getRowSpacing) {
|
|
102
|
+
var _spacing$top, _spacing$bottom;
|
|
103
|
+
|
|
104
|
+
const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
105
|
+
const spacing = getRowSpacing(_extends({}, row, {
|
|
106
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
107
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
108
|
+
indexRelativeToCurrentPage
|
|
109
|
+
}));
|
|
110
|
+
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
111
|
+
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
115
|
+
rowsHeightLookup.current[row.id].sizes = processedSizes;
|
|
116
|
+
const finalRowHeight = Object.values(processedSizes).reduce((acc2, value) => acc2 + value, 0);
|
|
117
|
+
return acc + finalRowHeight;
|
|
118
|
+
}, 0);
|
|
119
|
+
apiRef.current.setState(state => {
|
|
86
120
|
return _extends({}, state, {
|
|
87
121
|
rowsMeta: {
|
|
88
122
|
currentPageTotalHeight,
|
|
@@ -90,41 +124,73 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
90
124
|
}
|
|
91
125
|
});
|
|
92
126
|
});
|
|
93
|
-
apiRef.current.forceUpdate();
|
|
94
|
-
}, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
|
|
95
127
|
|
|
96
|
-
|
|
97
|
-
|
|
128
|
+
if (!hasRowWithAutoHeight.current) {
|
|
129
|
+
// No row has height=auto, so all rows are already measured
|
|
130
|
+
lastMeasuredRowIndex.current = Infinity;
|
|
131
|
+
}
|
|
98
132
|
|
|
99
|
-
|
|
100
|
-
};
|
|
133
|
+
apiRef.current.forceUpdate();
|
|
134
|
+
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
|
|
135
|
+
const getRowHeight = React.useCallback(rowId => {
|
|
136
|
+
const height = rowsHeightLookup.current[rowId];
|
|
137
|
+
return height ? height.sizes.base : rowHeightFromDensity;
|
|
138
|
+
}, [rowHeightFromDensity]);
|
|
101
139
|
|
|
102
140
|
const getRowInternalSizes = rowId => {
|
|
103
|
-
var _rowsHeightLookup$
|
|
141
|
+
var _rowsHeightLookup$cur;
|
|
104
142
|
|
|
105
|
-
return (_rowsHeightLookup$
|
|
143
|
+
return (_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.sizes;
|
|
106
144
|
};
|
|
107
145
|
|
|
108
146
|
const setRowHeight = React.useCallback((id, height) => {
|
|
109
|
-
rowsHeightLookup.current[id] =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
|
|
113
|
-
base: height
|
|
114
|
-
})
|
|
115
|
-
};
|
|
147
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
148
|
+
rowsHeightLookup.current[id].isResized = true;
|
|
149
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
116
150
|
hydrateRowsMeta();
|
|
117
|
-
}, [hydrateRowsMeta]);
|
|
151
|
+
}, [hydrateRowsMeta]);
|
|
152
|
+
const debouncedHydrateRowsMeta = React.useMemo(() => debounce(hydrateRowsMeta), [hydrateRowsMeta]);
|
|
153
|
+
const storeMeasuredRowHeight = React.useCallback((id, height) => {
|
|
154
|
+
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
155
|
+
return;
|
|
156
|
+
} // Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
const needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
|
|
160
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
161
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
162
|
+
|
|
163
|
+
if (needsHydration) {
|
|
164
|
+
debouncedHydrateRowsMeta();
|
|
165
|
+
}
|
|
166
|
+
}, [debouncedHydrateRowsMeta]);
|
|
167
|
+
const rowHasAutoHeight = React.useCallback(id => {
|
|
168
|
+
var _rowsHeightLookup$cur2;
|
|
169
|
+
|
|
170
|
+
return ((_rowsHeightLookup$cur2 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur2.autoHeight) || false;
|
|
171
|
+
}, []);
|
|
172
|
+
const getLastMeasuredRowIndex = React.useCallback(() => {
|
|
173
|
+
return lastMeasuredRowIndex.current;
|
|
174
|
+
}, []);
|
|
175
|
+
const setLastMeasuredRowIndex = React.useCallback(index => {
|
|
176
|
+
if (hasRowWithAutoHeight.current && index > lastMeasuredRowIndex.current) {
|
|
177
|
+
lastMeasuredRowIndex.current = index;
|
|
178
|
+
}
|
|
179
|
+
}, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
|
|
118
180
|
// Because of variable row height this is needed for the virtualization
|
|
119
181
|
|
|
120
182
|
React.useEffect(() => {
|
|
121
183
|
hydrateRowsMeta();
|
|
122
|
-
}, [
|
|
184
|
+
}, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
123
185
|
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
124
186
|
const rowsMetaApi = {
|
|
125
|
-
|
|
187
|
+
unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
|
|
188
|
+
unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
|
|
189
|
+
unstable_rowHasAutoHeight: rowHasAutoHeight,
|
|
190
|
+
unstable_getRowHeight: getRowHeight,
|
|
126
191
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
127
|
-
unstable_setRowHeight: setRowHeight
|
|
192
|
+
unstable_setRowHeight: setRowHeight,
|
|
193
|
+
unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
|
|
128
194
|
};
|
|
129
195
|
useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
|
|
130
196
|
};
|
|
@@ -50,7 +50,7 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
50
50
|
return getSelectionModelPropValue(props.selectionModel, gridSelectionStateSelector(apiRef.current.state));
|
|
51
51
|
}, [apiRef, props.selectionModel]);
|
|
52
52
|
const lastRowToggled = React.useRef(null);
|
|
53
|
-
apiRef.current.
|
|
53
|
+
apiRef.current.unstable_registerControlState({
|
|
54
54
|
stateId: 'selection',
|
|
55
55
|
propModel: propSelectionModel,
|
|
56
56
|
propOnChange: props.onSelectionModelChange,
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
4
4
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
5
5
|
import { getDataGridUtilityClass } from '../../../constants';
|
|
6
|
-
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
|
|
6
|
+
import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_CHECKBOX_SELECTION_FIELD } from '../../../colDef';
|
|
7
7
|
|
|
8
8
|
const useUtilityClasses = ownerState => {
|
|
9
9
|
const {
|
|
@@ -31,14 +31,16 @@ export const useGridSelectionPreProcessors = (apiRef, props) => {
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
const shouldHaveSelectionColumn = props.checkboxSelection;
|
|
34
|
-
const haveSelectionColumn = columnsState.lookup[
|
|
34
|
+
const haveSelectionColumn = columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] != null;
|
|
35
35
|
|
|
36
36
|
if (shouldHaveSelectionColumn && !haveSelectionColumn) {
|
|
37
|
-
columnsState.lookup[
|
|
38
|
-
columnsState.all = [
|
|
37
|
+
columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = selectionColumn;
|
|
38
|
+
columnsState.all = [GRID_CHECKBOX_SELECTION_FIELD, ...columnsState.all];
|
|
39
39
|
} else if (!shouldHaveSelectionColumn && haveSelectionColumn) {
|
|
40
|
-
delete columnsState.lookup[
|
|
41
|
-
columnsState.all = columnsState.all.filter(field => field !==
|
|
40
|
+
delete columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD];
|
|
41
|
+
columnsState.all = columnsState.all.filter(field => field !== GRID_CHECKBOX_SELECTION_FIELD);
|
|
42
|
+
} else if (shouldHaveSelectionColumn && haveSelectionColumn) {
|
|
43
|
+
columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = _extends({}, selectionColumn, columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD]);
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
return columnsState;
|
|
@@ -7,4 +7,4 @@ export declare const sortingStateInitializer: GridStateInitializer<Pick<DataGrid
|
|
|
7
7
|
* @requires useGridRows (event)
|
|
8
8
|
* @requires useGridColumns (event)
|
|
9
9
|
*/
|
|
10
|
-
export declare const useGridSorting: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, '
|
|
10
|
+
export declare const useGridSorting: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'sortModel' | 'onSortModelChange' | 'sortingOrder' | 'sortingMode' | 'disableMultipleColumnsSorting'>) => void;
|
|
@@ -30,7 +30,7 @@ export const sortingStateInitializer = (state, props) => {
|
|
|
30
30
|
|
|
31
31
|
export const useGridSorting = (apiRef, props) => {
|
|
32
32
|
const logger = useGridLogger(apiRef, 'useGridSorting');
|
|
33
|
-
apiRef.current.
|
|
33
|
+
apiRef.current.unstable_registerControlState({
|
|
34
34
|
stateId: 'sortModel',
|
|
35
35
|
propModel: props.sortModel,
|
|
36
36
|
propOnChange: props.onSortModelChange,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridRenderContext } from '../../../models';
|
|
3
3
|
import { GridRowId, GridRowModel } from '../../../models/gridRows';
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function binarySearch(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
|
|
5
5
|
export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
|
|
6
6
|
firstIndex: number;
|
|
7
7
|
lastIndex: number;
|
|
@@ -28,6 +28,7 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
|
|
|
28
28
|
minFirstColumn?: number | undefined;
|
|
29
29
|
maxLastColumn?: number | undefined;
|
|
30
30
|
availableSpace?: number | null | undefined;
|
|
31
|
+
ignoreAutoHeight?: boolean | undefined;
|
|
31
32
|
}) => JSX.Element[] | null;
|
|
32
33
|
getRootProps: ({ style, ...other }?: {
|
|
33
34
|
style?: {} | undefined;
|