@mui/x-data-grid 5.7.0 → 5.10.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 +241 -53
- package/DataGrid/DataGrid.d.ts +8 -3
- package/DataGrid/DataGrid.js +28 -5
- package/DataGrid/useDataGridComponent.js +5 -5
- package/DataGrid/useDataGridProps.d.ts +2 -1
- package/LICENSE +21 -0
- package/README.md +6 -4
- 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.d.ts +4 -0
- package/components/GridRow.js +55 -24
- package/components/base/GridOverlays.js +4 -3
- package/components/cell/GridActionsCell.d.ts +5 -1
- package/components/cell/GridActionsCell.js +170 -21
- package/components/cell/GridActionsCellItem.d.ts +66 -4
- package/components/cell/GridActionsCellItem.js +7 -5
- package/components/cell/GridCell.d.ts +5 -4
- package/components/cell/GridCell.js +30 -9
- package/components/cell/GridEditInputCell.js +3 -3
- package/components/cell/GridEditSingleSelectCell.js +24 -15
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
- package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/components/columnHeaders/GridColumnHeaderItem.js +9 -12
- package/components/columnHeaders/GridColumnHeaders.d.ts +0 -1
- package/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/components/columnHeaders/index.d.ts +1 -0
- package/components/columnHeaders/index.js +1 -0
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
- package/components/containers/GridRoot.js +29 -17
- package/components/containers/GridRootStyles.js +36 -1
- package/components/menu/GridMenu.js +1 -0
- package/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/components/panel/GridPanel.d.ts +2 -2
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/GridPreferencesPanel.js +1 -1
- package/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
- package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +2 -0
- package/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/constants/defaultGridSlotsComponents.js +4 -2
- package/constants/gridClasses.d.ts +35 -3
- package/constants/gridClasses.js +1 -1
- package/constants/gridDetailPanelToggleField.d.ts +1 -0
- package/constants/gridDetailPanelToggleField.js +2 -0
- package/constants/localeTextConstants.js +3 -1
- package/hooks/core/index.d.ts +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +85 -0
- package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/hooks/core/pipeProcessing/index.d.ts +4 -0
- package/hooks/core/pipeProcessing/index.js +4 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +32 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
- package/{modern/hooks/core/preProcessing/useGridRegisterPreProcessor.js → hooks/core/pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +4 -0
- package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -6
- 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.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
- package/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
- package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
- package/hooks/features/columns/gridColumnsUtils.d.ts +22 -4
- package/hooks/features/columns/gridColumnsUtils.js +105 -20
- package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
- package/hooks/features/columns/useGridColumnSpanning.js +109 -0
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +55 -40
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +40 -17
- package/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +44 -21
- 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 +18 -13
- package/hooks/features/focus/useGridFocus.js +19 -9
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +3 -5
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -13
- 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 +2 -1
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsState.d.ts +4 -0
- 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.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +27 -7
- package/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/hooks/features/scroll/useGridScroll.d.ts +2 -0
- package/hooks/features/scroll/useGridScroll.js +27 -14
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
- package/hooks/features/selection/useGridSelection.d.ts +4 -2
- package/hooks/features/selection/useGridSelection.js +75 -27
- 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 +13 -13
- package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +64 -27
- 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 +4 -6
- package/internals/index.js +3 -3
- package/legacy/DataGrid/DataGrid.js +28 -5
- package/legacy/DataGrid/useDataGridComponent.js +5 -5
- 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 +53 -24
- package/legacy/components/base/GridOverlays.js +4 -3
- package/legacy/components/cell/GridActionsCell.js +188 -27
- package/legacy/components/cell/GridActionsCellItem.js +7 -5
- package/legacy/components/cell/GridCell.js +31 -9
- package/legacy/components/cell/GridEditInputCell.js +3 -3
- package/legacy/components/cell/GridEditSingleSelectCell.js +35 -26
- package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +9 -12
- package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
- package/legacy/components/columnHeaders/index.js +1 -0
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -5
- package/legacy/components/containers/GridRoot.js +34 -17
- package/legacy/components/containers/GridRootStyles.js +26 -5
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/GridPreferencesPanel.js +1 -1
- package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/legacy/constants/defaultGridSlotsComponents.js +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/gridDetailPanelToggleField.js +2 -0
- package/legacy/constants/localeTextConstants.js +3 -1
- package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/legacy/hooks/core/pipeProcessing/index.js +4 -0
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +119 -0
- package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/legacy/hooks/core/useGridInitialization.js +2 -2
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +90 -11
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/legacy/hooks/features/columns/gridColumnsUtils.js +120 -32
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/legacy/hooks/features/columns/useGridColumns.js +55 -40
- package/legacy/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +36 -15
- package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +53 -30
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/useGridFilter.js +18 -13
- package/legacy/hooks/features/focus/useGridFocus.js +19 -9
- package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -12
- 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/gridRowsSelector.js +3 -0
- 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 +35 -9
- package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/legacy/hooks/features/scroll/useGridScroll.js +27 -14
- package/legacy/hooks/features/selection/useGridSelection.js +77 -27
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +8 -10
- package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +75 -37
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +3 -3
- package/legacy/locales/arSD.js +3 -1
- package/legacy/locales/bgBG.js +3 -1
- package/legacy/locales/csCZ.js +2 -0
- package/legacy/locales/daDK.js +37 -31
- package/legacy/locales/deDE.js +3 -1
- package/legacy/locales/elGR.js +2 -0
- package/legacy/locales/esES.js +2 -0
- package/legacy/locales/faIR.js +3 -1
- package/legacy/locales/fiFI.js +2 -0
- package/legacy/locales/frFR.js +2 -0
- package/legacy/locales/heIL.js +3 -1
- package/legacy/locales/huHU.js +122 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/locales/itIT.js +2 -0
- package/legacy/locales/jaJP.js +2 -0
- package/legacy/locales/koKR.js +2 -0
- package/legacy/locales/nlNL.js +2 -0
- package/legacy/locales/plPL.js +3 -1
- package/legacy/locales/ptBR.js +3 -1
- package/legacy/locales/ruRU.js +2 -0
- package/legacy/locales/skSK.js +2 -0
- package/legacy/locales/trTR.js +3 -1
- package/legacy/locales/ukUA.js +2 -0
- package/legacy/locales/viVN.js +2 -0
- package/legacy/locales/zhCN.js +2 -0
- package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/api/gridColumnSpanning.js} +0 -0
- package/legacy/models/colDef/index.js +1 -2
- package/legacy/models/events/gridEvents.js +10 -3
- package/legacy/models/gridColumnSpanning.js +1 -0
- package/legacy/models/gridRows.js +1 -33
- package/legacy/models/index.js +2 -2
- package/legacy/models/params/gridPreferencePanelParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/arSD.js +3 -1
- package/locales/bgBG.js +3 -1
- package/locales/csCZ.js +2 -0
- package/locales/daDK.js +33 -31
- package/locales/deDE.js +3 -1
- package/locales/elGR.js +2 -0
- package/locales/esES.js +2 -0
- package/locales/faIR.js +3 -1
- package/locales/fiFI.js +2 -0
- package/locales/frFR.js +2 -0
- package/locales/heIL.js +3 -1
- package/locales/huHU.d.ts +2 -0
- package/locales/huHU.js +110 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/itIT.js +2 -0
- package/locales/jaJP.js +2 -0
- package/locales/koKR.js +2 -0
- package/locales/nlNL.js +2 -0
- package/locales/plPL.js +3 -1
- package/locales/ptBR.js +3 -1
- package/locales/ruRU.js +2 -0
- package/locales/skSK.js +2 -0
- package/locales/trTR.js +3 -1
- package/locales/ukUA.js +2 -0
- package/locales/viVN.js +2 -0
- package/locales/zhCN.js +2 -0
- package/models/api/gridApiCommon.d.ts +3 -2
- package/models/api/gridColumnSpanning.d.ts +28 -0
- package/models/api/gridColumnSpanning.js +1 -0
- package/models/api/gridEditingApi.d.ts +51 -5
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/api/gridParamsApi.d.ts +5 -5
- package/models/api/gridRowApi.d.ts +8 -2
- package/models/colDef/gridColDef.d.ts +38 -28
- package/models/colDef/index.d.ts +0 -1
- package/models/colDef/index.js +1 -2
- package/models/events/gridEventLookup.d.ts +30 -9
- package/models/events/gridEvents.d.ts +50 -17
- package/models/events/gridEvents.js +10 -3
- package/models/gridCell.d.ts +1 -0
- package/models/gridColumnSpanning.d.ts +12 -0
- package/models/gridColumnSpanning.js +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/gridFilterOperator.d.ts +3 -2
- package/models/gridIconSlotsComponent.d.ts +5 -0
- 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 +25 -15
- 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 +12 -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 +37 -17
- package/modern/DataGrid/DataGrid.js +28 -5
- package/modern/DataGrid/useDataGridComponent.js +5 -5
- 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 +53 -22
- package/modern/components/base/GridOverlays.js +4 -3
- package/modern/components/cell/GridActionsCell.js +168 -21
- package/modern/components/cell/GridActionsCellItem.js +7 -5
- package/modern/components/cell/GridCell.js +30 -9
- package/modern/components/cell/GridEditInputCell.js +3 -3
- package/modern/components/cell/GridEditSingleSelectCell.js +22 -13
- package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -10
- package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/modern/components/columnHeaders/index.js +1 -0
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/modern/components/containers/GridRoot.js +29 -17
- package/modern/components/containers/GridRootStyles.js +36 -1
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/GridPreferencesPanel.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/virtualization/GridVirtualScroller.js +2 -0
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/modern/constants/defaultGridSlotsComponents.js +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/gridDetailPanelToggleField.js +2 -0
- package/modern/constants/localeTextConstants.js +3 -1
- package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
- package/modern/hooks/core/pipeProcessing/index.js +4 -0
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/modern/hooks/core/useGridInitialization.js +2 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/modern/hooks/features/columns/gridColumnsUtils.js +105 -20
- package/modern/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/modern/hooks/features/columns/useGridColumns.js +55 -40
- package/modern/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +40 -17
- package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +44 -21
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/useGridFilter.js +18 -13
- package/modern/hooks/features/focus/useGridFocus.js +19 -9
- package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +64 -13
- 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/gridRowsSelector.js +1 -0
- 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 +25 -5
- package/modern/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/modern/hooks/features/scroll/useGridScroll.js +25 -10
- package/modern/hooks/features/selection/useGridSelection.js +75 -27
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/modern/hooks/features/sorting/useGridSorting.js +13 -13
- package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +64 -23
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -3
- package/modern/locales/arSD.js +3 -1
- package/modern/locales/bgBG.js +3 -1
- package/modern/locales/csCZ.js +2 -0
- package/modern/locales/daDK.js +33 -31
- package/modern/locales/deDE.js +3 -1
- package/modern/locales/elGR.js +2 -0
- package/modern/locales/esES.js +2 -0
- package/modern/locales/faIR.js +3 -1
- package/modern/locales/fiFI.js +2 -0
- package/modern/locales/frFR.js +2 -0
- package/modern/locales/heIL.js +3 -1
- package/modern/locales/huHU.js +110 -0
- package/modern/locales/index.js +1 -0
- package/modern/locales/itIT.js +2 -0
- package/modern/locales/jaJP.js +2 -0
- package/modern/locales/koKR.js +2 -0
- package/modern/locales/nlNL.js +2 -0
- package/modern/locales/plPL.js +3 -1
- package/modern/locales/ptBR.js +3 -1
- package/modern/locales/ruRU.js +2 -0
- package/modern/locales/skSK.js +2 -0
- package/modern/locales/trTR.js +3 -1
- package/modern/locales/ukUA.js +2 -0
- package/modern/locales/viVN.js +2 -0
- package/modern/locales/zhCN.js +2 -0
- package/modern/models/api/gridColumnSpanning.js +1 -0
- package/modern/models/colDef/index.js +1 -2
- package/modern/models/events/gridEvents.js +10 -3
- package/modern/models/gridColumnSpanning.js +1 -0
- 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 +28 -5
- package/node/DataGrid/useDataGridComponent.js +6 -6
- 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 +56 -24
- package/node/components/base/GridOverlays.js +3 -2
- package/node/components/cell/GridActionsCell.js +172 -21
- package/node/components/cell/GridActionsCellItem.js +7 -4
- package/node/components/cell/GridCell.js +30 -9
- package/node/components/cell/GridEditInputCell.js +3 -3
- package/node/components/cell/GridEditSingleSelectCell.js +25 -15
- package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
- package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -13
- package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/node/components/columnHeaders/index.js +13 -0
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/node/components/containers/GridRoot.js +28 -17
- package/node/components/containers/GridRootStyles.js +36 -1
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/GridPreferencesPanel.js +1 -1
- package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
- package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/virtualization/GridVirtualScroller.js +2 -0
- package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/node/constants/defaultGridSlotsComponents.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/gridDetailPanelToggleField.js +9 -0
- package/node/constants/localeTextConstants.js +3 -1
- package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/node/hooks/core/pipeProcessing/index.js +57 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +124 -0
- package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +4 -7
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +42 -0
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/node/hooks/core/useGridInitialization.js +2 -2
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -11
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +114 -25
- package/node/hooks/features/columns/useGridColumnSpanning.js +130 -0
- package/node/hooks/features/columns/useGridColumns.js +55 -40
- package/node/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/node/hooks/features/editRows/useGridCellEditing.new.js +42 -17
- package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
- package/node/hooks/features/editRows/useGridRowEditing.new.js +45 -21
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/useGridFilter.js +18 -13
- package/node/hooks/features/focus/useGridFocus.js +19 -9
- package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +69 -13
- 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/gridRowsSelector.js +3 -1
- 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 +29 -9
- package/node/hooks/features/rows/useGridRowsMeta.js +7 -15
- package/node/hooks/features/scroll/useGridScroll.js +28 -14
- package/node/hooks/features/selection/useGridSelection.js +75 -26
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/node/hooks/features/sorting/useGridSorting.js +13 -13
- package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +69 -27
- package/node/index.js +1 -1
- package/node/internals/index.js +12 -12
- package/node/locales/arSD.js +3 -1
- package/node/locales/bgBG.js +3 -1
- package/node/locales/csCZ.js +2 -0
- package/node/locales/daDK.js +33 -31
- package/node/locales/deDE.js +3 -1
- package/node/locales/elGR.js +2 -0
- package/node/locales/esES.js +2 -0
- package/node/locales/faIR.js +3 -1
- package/node/locales/fiFI.js +2 -0
- package/node/locales/frFR.js +2 -0
- package/node/locales/heIL.js +3 -1
- package/node/locales/huHU.js +120 -0
- package/node/locales/index.js +13 -0
- package/node/locales/itIT.js +2 -0
- package/node/locales/jaJP.js +2 -0
- package/node/locales/koKR.js +2 -0
- package/node/locales/nlNL.js +2 -0
- package/node/locales/plPL.js +3 -1
- package/node/locales/ptBR.js +3 -1
- package/node/locales/ruRU.js +2 -0
- package/node/locales/skSK.js +2 -0
- package/node/locales/trTR.js +3 -1
- package/node/locales/ukUA.js +2 -0
- package/node/locales/viVN.js +2 -0
- package/node/locales/zhCN.js +2 -0
- package/node/models/api/gridColumnSpanning.js +5 -0
- package/node/models/colDef/index.js +0 -13
- package/node/models/events/gridEvents.js +10 -3
- package/node/models/gridColumnSpanning.js +5 -0
- 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 +4 -4
- package/utils/domUtils.d.ts +2 -2
- package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
- package/hooks/core/preProcessing/gridPreProcessingApi.d.ts +0 -67
- 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
|
@@ -6,10 +6,13 @@ import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
6
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
7
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
8
8
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
9
|
+
import { buildWarning } from '../../../utils/warning';
|
|
9
10
|
import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
|
|
11
|
+
const missingOnProcessRowUpdateErrorWarning = 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');
|
|
10
12
|
export const useGridCellEditing = (apiRef, props) => {
|
|
11
13
|
const {
|
|
12
|
-
processRowUpdate
|
|
14
|
+
processRowUpdate,
|
|
15
|
+
onProcessRowUpdateError
|
|
13
16
|
} = props;
|
|
14
17
|
|
|
15
18
|
const runIfEditModeIsCell = callback => (...args) => {
|
|
@@ -220,10 +223,7 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
220
223
|
}
|
|
221
224
|
|
|
222
225
|
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
223
|
-
const row = apiRef.current.getRow(id);
|
|
224
|
-
const column = apiRef.current.getColumn(field);
|
|
225
226
|
const {
|
|
226
|
-
value,
|
|
227
227
|
error,
|
|
228
228
|
isProcessingProps
|
|
229
229
|
} = editingState[id][field];
|
|
@@ -232,25 +232,33 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
const rowUpdate =
|
|
236
|
-
value,
|
|
237
|
-
row
|
|
238
|
-
}) : _extends({}, row, {
|
|
239
|
-
[field]: value
|
|
240
|
-
});
|
|
235
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);
|
|
241
236
|
|
|
242
237
|
if (processRowUpdate) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
238
|
+
const handleError = errorThrown => {
|
|
239
|
+
if (onProcessRowUpdateError) {
|
|
240
|
+
onProcessRowUpdateError(errorThrown);
|
|
241
|
+
} else {
|
|
242
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
try {
|
|
247
|
+
const row = apiRef.current.getRow(id);
|
|
248
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
249
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
250
|
+
updateFocusedCellIfNeeded();
|
|
251
|
+
updateOrDeleteFieldState(id, field, null);
|
|
252
|
+
}).catch(handleError);
|
|
253
|
+
} catch (errorThrown) {
|
|
254
|
+
handleError(errorThrown);
|
|
255
|
+
}
|
|
248
256
|
} else {
|
|
249
257
|
apiRef.current.updateRows([rowUpdate]);
|
|
250
258
|
updateFocusedCellIfNeeded();
|
|
251
259
|
updateOrDeleteFieldState(id, field, null);
|
|
252
260
|
}
|
|
253
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
261
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
254
262
|
const setCellEditingEditCellValue = React.useCallback(async params => {
|
|
255
263
|
const {
|
|
256
264
|
id,
|
|
@@ -305,11 +313,26 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
305
313
|
editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
306
314
|
return !editingState[id][field].error;
|
|
307
315
|
}, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
316
|
+
const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {
|
|
317
|
+
const column = apiRef.current.getColumn(field);
|
|
318
|
+
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
319
|
+
const {
|
|
320
|
+
value
|
|
321
|
+
} = editingState[id][field];
|
|
322
|
+
const row = apiRef.current.getRow(id);
|
|
323
|
+
return column.valueSetter ? column.valueSetter({
|
|
324
|
+
value,
|
|
325
|
+
row
|
|
326
|
+
}) : _extends({}, row, {
|
|
327
|
+
[field]: value
|
|
328
|
+
});
|
|
329
|
+
}, [apiRef]);
|
|
308
330
|
const editingApi = {
|
|
309
331
|
getCellMode,
|
|
310
332
|
startCellEditMode,
|
|
311
333
|
stopCellEditMode,
|
|
312
|
-
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
|
|
334
|
+
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,
|
|
335
|
+
unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
|
|
313
336
|
};
|
|
314
337
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
315
338
|
};
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
4
4
|
import { useGridCellEditing } from './useGridCellEditing.new';
|
|
5
|
-
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
5
|
+
import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
|
|
6
6
|
import { useGridRowEditing } from './useGridRowEditing.new';
|
|
7
7
|
export const editingStateInitializer = state => _extends({}, state, {
|
|
8
8
|
editRows: {}
|
|
@@ -99,7 +99,7 @@ export const useGridEditing = (apiRef, props) => {
|
|
|
99
99
|
} = params;
|
|
100
100
|
return new Promise(resolve => {
|
|
101
101
|
maybeDebounce(id, field, debounceMs, async () => {
|
|
102
|
-
const setEditCellValueToCall = props.editMode ===
|
|
102
|
+
const setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
|
|
103
103
|
// By the time this callback runs the user may have cancelled the editing
|
|
104
104
|
|
|
105
105
|
if (apiRef.current.getCellMode(id, field) === GridCellModes.Edit) {
|
|
@@ -109,10 +109,14 @@ export const useGridEditing = (apiRef, props) => {
|
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
}, [apiRef, props.editMode]);
|
|
112
|
+
const getRowWithUpdatedValues = React.useCallback((id, field) => {
|
|
113
|
+
return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
114
|
+
}, [apiRef, props.editMode]);
|
|
112
115
|
const editingSharedApi = {
|
|
113
116
|
isCellEditable,
|
|
114
117
|
setEditCellValue,
|
|
115
|
-
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
|
|
118
|
+
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,
|
|
119
|
+
unstable_getRowWithUpdatedValues: getRowWithUpdatedValues
|
|
116
120
|
};
|
|
117
121
|
useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');
|
|
118
122
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
3
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
|
-
export declare const useGridRowEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onRowEditStart' | 'onRowEditStop'>) => void;
|
|
4
|
+
export declare const useGridRowEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onRowEditStart' | 'onRowEditStop' | 'onProcessRowUpdateError'>) => void;
|
|
@@ -9,12 +9,15 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
9
9
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
10
10
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
11
11
|
import { gridColumnFieldsSelector } from '../columns/gridColumnsSelector';
|
|
12
|
+
import { buildWarning } from '../../../utils/warning';
|
|
12
13
|
import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
|
|
14
|
+
const missingOnProcessRowUpdateErrorWarning = 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');
|
|
13
15
|
export const useGridRowEditing = (apiRef, props) => {
|
|
14
16
|
const focusTimeout = React.useRef(null);
|
|
15
17
|
const nextFocusedCell = React.useRef(null);
|
|
16
18
|
const {
|
|
17
|
-
processRowUpdate
|
|
19
|
+
processRowUpdate,
|
|
20
|
+
onProcessRowUpdateError
|
|
18
21
|
} = props;
|
|
19
22
|
|
|
20
23
|
const runIfEditModeIsRow = callback => (...args) => {
|
|
@@ -333,33 +336,32 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
333
336
|
return;
|
|
334
337
|
}
|
|
335
338
|
|
|
336
|
-
|
|
339
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
337
340
|
|
|
338
|
-
|
|
339
|
-
const
|
|
341
|
+
if (processRowUpdate) {
|
|
342
|
+
const handleError = errorThrown => {
|
|
343
|
+
if (onProcessRowUpdateError) {
|
|
344
|
+
onProcessRowUpdateError(errorThrown);
|
|
345
|
+
} else {
|
|
346
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
347
|
+
}
|
|
348
|
+
};
|
|
340
349
|
|
|
341
|
-
|
|
342
|
-
rowUpdate
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
350
|
+
try {
|
|
351
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
352
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
353
|
+
updateFocusedCellIfNeeded();
|
|
354
|
+
updateOrDeleteRowState(id, null);
|
|
355
|
+
}).catch(handleError);
|
|
356
|
+
} catch (errorThrown) {
|
|
357
|
+
handleError(errorThrown);
|
|
348
358
|
}
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
if (processRowUpdate) {
|
|
352
|
-
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
353
|
-
apiRef.current.updateRows([finalRowUpdate]);
|
|
354
|
-
updateFocusedCellIfNeeded();
|
|
355
|
-
updateOrDeleteRowState(id, null);
|
|
356
|
-
});
|
|
357
359
|
} else {
|
|
358
360
|
apiRef.current.updateRows([rowUpdate]);
|
|
359
361
|
updateFocusedCellIfNeeded();
|
|
360
362
|
updateOrDeleteRowState(id, null);
|
|
361
363
|
}
|
|
362
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
364
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
363
365
|
const setRowEditingEditCellValue = React.useCallback(params => {
|
|
364
366
|
const {
|
|
365
367
|
id,
|
|
@@ -476,11 +478,32 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
476
478
|
});
|
|
477
479
|
});
|
|
478
480
|
}, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);
|
|
481
|
+
const getRowWithUpdatedValuesFromRowEditing = React.useCallback(id => {
|
|
482
|
+
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
483
|
+
const row = apiRef.current.getRow(id);
|
|
484
|
+
|
|
485
|
+
let rowUpdate = _extends({}, row);
|
|
486
|
+
|
|
487
|
+
Object.entries(editingState[id]).forEach(([field, fieldProps]) => {
|
|
488
|
+
const column = apiRef.current.getColumn(field);
|
|
489
|
+
|
|
490
|
+
if (column.valueSetter) {
|
|
491
|
+
rowUpdate = column.valueSetter({
|
|
492
|
+
value: fieldProps.value,
|
|
493
|
+
row: rowUpdate
|
|
494
|
+
});
|
|
495
|
+
} else {
|
|
496
|
+
rowUpdate[field] = fieldProps.value;
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
return rowUpdate;
|
|
500
|
+
}, [apiRef]);
|
|
479
501
|
const editingApi = {
|
|
480
502
|
getRowMode,
|
|
481
503
|
startRowEditMode,
|
|
482
504
|
stopRowEditMode,
|
|
483
|
-
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
|
|
505
|
+
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue,
|
|
506
|
+
unstable_getRowWithUpdatedValuesFromRowEditing: getRowWithUpdatedValuesFromRowEditing
|
|
484
507
|
};
|
|
485
508
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
486
509
|
};
|
|
@@ -5,4 +5,4 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
5
5
|
* @requires useGridFocus (event) - can be after, async only
|
|
6
6
|
* @requires useGridColumns (event) - can be after, async only
|
|
7
7
|
*/
|
|
8
|
-
export declare function useGridEvents(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'onColumnHeaderClick' | 'onColumnHeaderDoubleClick' | 'onColumnHeaderOver' | 'onColumnHeaderOut' | 'onColumnHeaderEnter' | 'onColumnHeaderLeave' | 'onColumnOrderChange' | 'onCellClick' | 'onCellDoubleClick' | 'onCellKeyDown' | 'onCellFocusOut' | 'onRowDoubleClick' | 'onRowClick' | 'onError' | 'onStateChange'>): void;
|
|
8
|
+
export declare function useGridEvents(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'onColumnHeaderClick' | 'onColumnHeaderDoubleClick' | 'onColumnHeaderOver' | 'onColumnHeaderOut' | 'onColumnHeaderEnter' | 'onColumnHeaderLeave' | 'onColumnOrderChange' | 'onCellClick' | 'onCellDoubleClick' | 'onCellKeyDown' | 'onCellFocusOut' | 'onPreferencePanelClose' | 'onPreferencePanelOpen' | 'onRowDoubleClick' | 'onRowClick' | 'onError' | 'onStateChange'>): void;
|
|
@@ -17,6 +17,8 @@ export function useGridEvents(apiRef, props) {
|
|
|
17
17
|
useGridApiOptionHandler(apiRef, GridEvents.cellDoubleClick, props.onCellDoubleClick);
|
|
18
18
|
useGridApiOptionHandler(apiRef, GridEvents.cellKeyDown, props.onCellKeyDown);
|
|
19
19
|
useGridApiOptionHandler(apiRef, GridEvents.cellFocusOut, props.onCellFocusOut);
|
|
20
|
+
useGridApiOptionHandler(apiRef, GridEvents.preferencePanelClose, props.onPreferencePanelClose);
|
|
21
|
+
useGridApiOptionHandler(apiRef, GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
|
|
20
22
|
useGridApiOptionHandler(apiRef, GridEvents.rowDoubleClick, props.onRowDoubleClick);
|
|
21
23
|
useGridApiOptionHandler(apiRef, GridEvents.rowClick, props.onRowClick);
|
|
22
24
|
useGridApiOptionHandler(apiRef, GridEvents.componentError, props.onError);
|
|
@@ -31,9 +31,7 @@ export declare const gridFilteredDescendantCountLookupSelector: import("../../..
|
|
|
31
31
|
*/
|
|
32
32
|
export declare const gridVisibleSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
33
33
|
id: import("../../..").GridRowId;
|
|
34
|
-
model:
|
|
35
|
-
[key: string]: any;
|
|
36
|
-
};
|
|
34
|
+
model: any;
|
|
37
35
|
}[]>;
|
|
38
36
|
/**
|
|
39
37
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -48,9 +46,7 @@ export declare const gridVisibleSortedRowIdsSelector: import("../../../utils/cre
|
|
|
48
46
|
*/
|
|
49
47
|
export declare const gridFilteredSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
50
48
|
id: import("../../..").GridRowId;
|
|
51
|
-
model:
|
|
52
|
-
[key: string]: any;
|
|
53
|
-
};
|
|
49
|
+
model: any;
|
|
54
50
|
}[]>;
|
|
55
51
|
/**
|
|
56
52
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -71,9 +67,7 @@ export declare const gridVisibleRowsSelector: import("../../../utils/createSelec
|
|
|
71
67
|
*/
|
|
72
68
|
export declare const gridVisibleSortedTopLevelRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
73
69
|
id: import("../../..").GridRowId;
|
|
74
|
-
model:
|
|
75
|
-
[key: string]: any;
|
|
76
|
-
};
|
|
70
|
+
model: any;
|
|
77
71
|
}[]>;
|
|
78
72
|
/**
|
|
79
73
|
* Get the amount of rows accessible after the filtering process.
|
|
@@ -11,7 +11,7 @@ import { getDefaultGridFilterModel } from './gridFilterState';
|
|
|
11
11
|
import { gridFilterModelSelector, gridVisibleSortedRowEntriesSelector } from './gridFilterSelector';
|
|
12
12
|
import { useFirstRender } from '../../utils/useFirstRender';
|
|
13
13
|
import { gridRowIdsSelector } from '../rows';
|
|
14
|
-
import {
|
|
14
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
15
15
|
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
|
|
16
16
|
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
|
|
17
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -44,11 +44,7 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
44
44
|
stateSelector: gridFilterModelSelector,
|
|
45
45
|
changeEvent: GridEvents.filterModelChange
|
|
46
46
|
});
|
|
47
|
-
|
|
48
|
-
* API METHODS
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
const applyFilters = React.useCallback(() => {
|
|
47
|
+
const updateFilteredRows = React.useCallback(() => {
|
|
52
48
|
apiRef.current.setState(state => {
|
|
53
49
|
const filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);
|
|
54
50
|
const isRowMatchingFilters = props.filterMode === GridFeatureModeConstant.client ? buildAggregatedFilterApplier(filterModel, apiRef) : null;
|
|
@@ -59,9 +55,16 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
59
55
|
filter: _extends({}, state.filter, filteringResult)
|
|
60
56
|
});
|
|
61
57
|
});
|
|
62
|
-
apiRef.current.publishEvent(GridEvents.
|
|
58
|
+
apiRef.current.publishEvent(GridEvents.filteredRowsSet);
|
|
59
|
+
}, [props.filterMode, apiRef]);
|
|
60
|
+
/**
|
|
61
|
+
* API METHODS
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
const applyFilters = React.useCallback(() => {
|
|
65
|
+
updateFilteredRows();
|
|
63
66
|
apiRef.current.forceUpdate();
|
|
64
|
-
}, [apiRef,
|
|
67
|
+
}, [apiRef, updateFilteredRows]);
|
|
65
68
|
const upsertFilterItem = React.useCallback(item => {
|
|
66
69
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
67
70
|
const items = [...filterModel.items];
|
|
@@ -221,9 +224,9 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
221
224
|
filteredDescendantCountLookup: {}
|
|
222
225
|
};
|
|
223
226
|
}, [apiRef, props.filterMode]);
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
228
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
229
|
+
useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
227
230
|
useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
|
|
228
231
|
/**
|
|
229
232
|
* EVENTS
|
|
@@ -245,8 +248,10 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
245
248
|
if (methodName === 'filtering') {
|
|
246
249
|
apiRef.current.unstable_applyFilters();
|
|
247
250
|
}
|
|
248
|
-
}, [apiRef]);
|
|
249
|
-
|
|
251
|
+
}, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
|
|
252
|
+
// Otherwise, the state is not consistent during the render
|
|
253
|
+
|
|
254
|
+
useGridApiEventHandler(apiRef, GridEvents.rowsSet, updateFilteredRows);
|
|
250
255
|
useGridApiEventHandler(apiRef, GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
|
|
251
256
|
useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
|
|
252
257
|
useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
|
|
@@ -102,21 +102,31 @@ export const useGridFocus = (apiRef, props) => {
|
|
|
102
102
|
rowIndexToFocus += 1;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
const currentPage = getVisibleRows(apiRef, {
|
|
106
|
+
pagination: props.pagination,
|
|
107
|
+
paginationMode: props.paginationMode
|
|
108
|
+
});
|
|
109
|
+
|
|
105
110
|
if (columnIndexToFocus >= visibleColumns.length) {
|
|
106
|
-
// Go to next row if we are
|
|
111
|
+
// Go to next row if we are after the last column
|
|
107
112
|
rowIndexToFocus += 1;
|
|
108
|
-
|
|
113
|
+
|
|
114
|
+
if (rowIndexToFocus < currentPage.rows.length) {
|
|
115
|
+
// Go to first column of the next row if there's one more row
|
|
116
|
+
columnIndexToFocus = 0;
|
|
117
|
+
}
|
|
109
118
|
} else if (columnIndexToFocus < 0) {
|
|
110
|
-
// Go to previous row if we are
|
|
119
|
+
// Go to previous row if we are before the first column
|
|
111
120
|
rowIndexToFocus -= 1;
|
|
112
|
-
|
|
121
|
+
|
|
122
|
+
if (rowIndexToFocus >= 0) {
|
|
123
|
+
// Go to last column of the previous if there's one more row
|
|
124
|
+
columnIndexToFocus = visibleColumns.length - 1;
|
|
125
|
+
}
|
|
113
126
|
}
|
|
114
127
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
paginationMode: props.paginationMode
|
|
118
|
-
});
|
|
119
|
-
rowIndexToFocus = clamp(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
|
|
128
|
+
rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPage.rows.length - 1);
|
|
129
|
+
columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);
|
|
120
130
|
const rowToFocus = currentPage.rows[rowIndexToFocus];
|
|
121
131
|
const columnToFocus = visibleColumns[columnIndexToFocus];
|
|
122
132
|
apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
|
|
@@ -2,14 +2,12 @@ import * as React from 'react';
|
|
|
2
2
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
3
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
4
|
/**
|
|
5
|
-
* @requires useGridPage (state)
|
|
6
|
-
* @requires useGridPageSize (state)
|
|
7
|
-
* @requires useGridFilter (state)
|
|
8
|
-
* @requires useGridColumns (state, method)
|
|
9
|
-
* @requires useGridRows (state, method)
|
|
10
5
|
* @requires useGridSorting (method) - can be after
|
|
6
|
+
* @requires useGridFilter (state) - can be after
|
|
7
|
+
* @requires useGridColumns (state, method) - can be after
|
|
11
8
|
* @requires useGridDimensions (method) - can be after
|
|
12
9
|
* @requires useGridFocus (method) - can be after
|
|
13
10
|
* @requires useGridScroll (method) - can be after
|
|
11
|
+
* @requires useGridColumnSpanning (method) - can be after
|
|
14
12
|
*/
|
|
15
13
|
export declare const useGridKeyboardNavigation: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => void;
|
|
@@ -7,31 +7,50 @@ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelecto
|
|
|
7
7
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
8
8
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef';
|
|
9
9
|
import { gridClasses } from '../../../constants/gridClasses';
|
|
10
|
+
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
11
|
+
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
12
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
10
13
|
/**
|
|
11
|
-
* @requires useGridPage (state)
|
|
12
|
-
* @requires useGridPageSize (state)
|
|
13
|
-
* @requires useGridFilter (state)
|
|
14
|
-
* @requires useGridColumns (state, method)
|
|
15
|
-
* @requires useGridRows (state, method)
|
|
16
14
|
* @requires useGridSorting (method) - can be after
|
|
15
|
+
* @requires useGridFilter (state) - can be after
|
|
16
|
+
* @requires useGridColumns (state, method) - can be after
|
|
17
17
|
* @requires useGridDimensions (method) - can be after
|
|
18
18
|
* @requires useGridFocus (method) - can be after
|
|
19
19
|
* @requires useGridScroll (method) - can be after
|
|
20
|
+
* @requires useGridColumnSpanning (method) - can be after
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
23
|
export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
23
24
|
const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');
|
|
24
25
|
const currentPage = useGridVisibleRows(apiRef, props);
|
|
25
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @param {number} colIndex Index of the column to focus
|
|
28
|
+
* @param {number} rowIndex index of the row to focus
|
|
29
|
+
* @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
const goToCell = React.useCallback((colIndex, rowIndex, closestColumnToUse = 'left') => {
|
|
33
|
+
var _visibleSortedRows$ro;
|
|
34
|
+
|
|
35
|
+
const visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
|
|
36
|
+
const rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
|
|
37
|
+
const nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
|
|
38
|
+
|
|
39
|
+
if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
|
|
40
|
+
if (closestColumnToUse === 'left') {
|
|
41
|
+
colIndex = nextCellColSpanInfo.leftVisibleCellIndex;
|
|
42
|
+
} else if (closestColumnToUse === 'right') {
|
|
43
|
+
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
26
47
|
logger.debug(`Navigating to cell row ${rowIndex}, col ${colIndex}`);
|
|
27
48
|
apiRef.current.scrollToIndexes({
|
|
28
49
|
colIndex,
|
|
29
50
|
rowIndex
|
|
30
51
|
});
|
|
31
52
|
const field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
32
|
-
|
|
33
|
-
const node = visibleSortedRows[rowIndex];
|
|
34
|
-
apiRef.current.setCellFocus(node.id, field);
|
|
53
|
+
apiRef.current.setCellFocus(rowId, field);
|
|
35
54
|
}, [apiRef, logger]);
|
|
36
55
|
const goToHeader = React.useCallback((colIndex, event) => {
|
|
37
56
|
logger.debug(`Navigating to header col ${colIndex}`);
|
|
@@ -84,7 +103,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
84
103
|
case 'ArrowRight':
|
|
85
104
|
{
|
|
86
105
|
if (colIndexBefore < lastColIndex) {
|
|
87
|
-
goToCell(colIndexBefore + 1, rowIndexBefore);
|
|
106
|
+
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
88
107
|
}
|
|
89
108
|
|
|
90
109
|
break;
|
|
@@ -103,16 +122,36 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
103
122
|
{
|
|
104
123
|
// "Tab" is only triggered by the row / cell editing feature
|
|
105
124
|
if (event.shiftKey && colIndexBefore > firstColIndex) {
|
|
106
|
-
goToCell(colIndexBefore - 1, rowIndexBefore);
|
|
125
|
+
goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
|
|
107
126
|
} else if (!event.shiftKey && colIndexBefore < lastColIndex) {
|
|
108
|
-
goToCell(colIndexBefore + 1, rowIndexBefore);
|
|
127
|
+
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
109
128
|
}
|
|
110
129
|
|
|
111
130
|
break;
|
|
112
131
|
}
|
|
113
132
|
|
|
114
|
-
case 'PageDown':
|
|
115
133
|
case ' ':
|
|
134
|
+
{
|
|
135
|
+
const field = params.field;
|
|
136
|
+
|
|
137
|
+
if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const colDef = params.colDef;
|
|
142
|
+
|
|
143
|
+
if (colDef && colDef.type === 'treeDataGroup') {
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
|
|
148
|
+
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
case 'PageDown':
|
|
116
155
|
{
|
|
117
156
|
if (rowIndexBefore < lastRowIndexInPage) {
|
|
118
157
|
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
@@ -267,6 +306,20 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
267
306
|
event.preventDefault();
|
|
268
307
|
}
|
|
269
308
|
}, [apiRef, currentPage, goToCell, goToHeader]);
|
|
309
|
+
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
310
|
+
// Ignore portal
|
|
311
|
+
if (!event.currentTarget.contains(event.target)) {
|
|
312
|
+
return;
|
|
313
|
+
} // Get the most recent params because the cell mode may have changed by another listener
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
const cellParams = apiRef.current.getCellParams(params.id, params.field);
|
|
317
|
+
|
|
318
|
+
if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
|
|
319
|
+
apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, cellParams, event);
|
|
320
|
+
}
|
|
321
|
+
}, [apiRef]);
|
|
270
322
|
useGridApiEventHandler(apiRef, GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
|
|
271
323
|
useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
|
|
324
|
+
useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
|
|
272
325
|
};
|
|
@@ -33,9 +33,7 @@ export declare const gridPaginationRowRangeSelector: import("../../../utils/crea
|
|
|
33
33
|
*/
|
|
34
34
|
export declare const gridPaginatedVisibleSortedGridRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
35
35
|
id: import("../../..").GridRowId;
|
|
36
|
-
model:
|
|
37
|
-
[key: string]: any;
|
|
38
|
-
};
|
|
36
|
+
model: any;
|
|
39
37
|
}[]>;
|
|
40
38
|
/**
|
|
41
39
|
* Get the id of each row to include in the current page if the pagination is enabled.
|
|
@@ -3,8 +3,8 @@ import * as React from 'react';
|
|
|
3
3
|
import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
|
|
4
4
|
import { GridEvents } from '../../../models/events';
|
|
5
5
|
import { gridVisibleTopLevelRowCountSelector } from '../filter';
|
|
6
|
-
import { gridPageSelector } from './gridPaginationSelector';
|
|
7
|
-
import {
|
|
6
|
+
import { gridPageSelector, gridPageSizeSelector } from './gridPaginationSelector';
|
|
7
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
8
8
|
import { buildWarning } from '../../../utils/warning';
|
|
9
9
|
export const getPageCount = (rowCount, pageSize) => {
|
|
10
10
|
if (pageSize > 0 && rowCount > 0) {
|
|
@@ -91,8 +91,8 @@ export const useGridPage = (apiRef, props) => {
|
|
|
91
91
|
apiRef.current.setState(mergeStateWithPage(page));
|
|
92
92
|
return params;
|
|
93
93
|
}, [apiRef]);
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
95
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
96
96
|
/**
|
|
97
97
|
* EVENTS
|
|
98
98
|
*/
|
|
@@ -110,7 +110,12 @@ export const useGridPage = (apiRef, props) => {
|
|
|
110
110
|
apiRef.current.forceUpdate();
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
+
const handlePageChange = () => apiRef.current.scrollToIndexes({
|
|
114
|
+
rowIndex: gridPageSelector(apiRef) * gridPageSizeSelector(apiRef)
|
|
115
|
+
});
|
|
116
|
+
|
|
113
117
|
useGridApiEventHandler(apiRef, GridEvents.pageSizeChange, handlePageSizeChange);
|
|
118
|
+
useGridApiEventHandler(apiRef, GridEvents.pageChange, handlePageChange);
|
|
114
119
|
/**
|
|
115
120
|
* EFFECTS
|
|
116
121
|
*/
|
|
@@ -4,7 +4,7 @@ import { GridEvents } from '../../../models/events';
|
|
|
4
4
|
import { useGridLogger, useGridApiMethod, useGridApiEventHandler, useGridSelector } from '../../utils';
|
|
5
5
|
import { gridPageSizeSelector } from './gridPaginationSelector';
|
|
6
6
|
import { gridDensityRowHeightSelector } from '../density';
|
|
7
|
-
import {
|
|
7
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
8
8
|
export const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;
|
|
9
9
|
|
|
10
10
|
const mergeStateWithPageSize = pageSize => state => _extends({}, state, {
|
|
@@ -84,8 +84,8 @@ export const useGridPageSize = (apiRef, props) => {
|
|
|
84
84
|
|
|
85
85
|
return params;
|
|
86
86
|
}, [apiRef]);
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
88
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
89
89
|
/**
|
|
90
90
|
* EVENTS
|
|
91
91
|
*/
|