@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
|
@@ -22,7 +22,7 @@ var _gridColumnsSelector = require("./gridColumnsSelector");
|
|
|
22
22
|
|
|
23
23
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
24
24
|
|
|
25
|
-
var
|
|
25
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
26
26
|
|
|
27
27
|
var _gridColumnsUtils = require("./gridColumnsUtils");
|
|
28
28
|
|
|
@@ -41,7 +41,7 @@ const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
41
41
|
const columnsTypes = (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes);
|
|
42
42
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
43
43
|
apiRef,
|
|
44
|
-
columnsTypes,
|
|
44
|
+
columnTypes: columnsTypes,
|
|
45
45
|
columnsToUpsert: props.columns,
|
|
46
46
|
initialState: (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.columns,
|
|
47
47
|
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
@@ -65,13 +65,15 @@ function useGridColumns(apiRef, props) {
|
|
|
65
65
|
var _props$initialState4, _props$initialState4$, _props$componentsProp2;
|
|
66
66
|
|
|
67
67
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridColumns');
|
|
68
|
-
const
|
|
68
|
+
const columnTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
|
|
69
|
+
const previousColumnsProp = React.useRef(props.columns);
|
|
70
|
+
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
69
71
|
/**
|
|
70
72
|
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
71
73
|
* If not, we keep the old behavior and update the `GridColDef.hide` option (which will update the state model through the `GridColDef.hide` => `columnVisibilityModel` sync in `createColumnsState`
|
|
72
74
|
*/
|
|
73
75
|
|
|
74
|
-
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel))
|
|
76
|
+
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
|
|
75
77
|
apiRef.current.unstable_updateControlState({
|
|
76
78
|
stateId: 'visibleColumns',
|
|
77
79
|
propModel: props.columnVisibilityModel,
|
|
@@ -108,7 +110,7 @@ function useGridColumns(apiRef, props) {
|
|
|
108
110
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
109
111
|
columns: (0, _gridColumnsUtils.createColumnsState)({
|
|
110
112
|
apiRef,
|
|
111
|
-
|
|
113
|
+
columnTypes,
|
|
112
114
|
columnsToUpsert: [],
|
|
113
115
|
initialState: undefined,
|
|
114
116
|
shouldRegenColumnVisibilityModelFromColumns: false,
|
|
@@ -118,24 +120,24 @@ function useGridColumns(apiRef, props) {
|
|
|
118
120
|
}));
|
|
119
121
|
apiRef.current.forceUpdate();
|
|
120
122
|
}
|
|
121
|
-
}, [apiRef,
|
|
123
|
+
}, [apiRef, columnTypes]);
|
|
122
124
|
const updateColumns = React.useCallback(columns => {
|
|
123
125
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
124
126
|
apiRef,
|
|
125
|
-
|
|
127
|
+
columnTypes,
|
|
126
128
|
columnsToUpsert: columns,
|
|
127
129
|
initialState: undefined,
|
|
128
130
|
shouldRegenColumnVisibilityModelFromColumns: true,
|
|
129
131
|
keepOnlyColumnsToUpsert: false
|
|
130
132
|
});
|
|
131
133
|
setGridColumnsState(columnsState);
|
|
132
|
-
}, [apiRef, setGridColumnsState,
|
|
134
|
+
}, [apiRef, setGridColumnsState, columnTypes]);
|
|
133
135
|
const updateColumn = React.useCallback(column => apiRef.current.updateColumns([column]), [apiRef]);
|
|
134
136
|
const setColumnVisibility = React.useCallback((field, isVisible) => {
|
|
135
137
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
136
138
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
137
139
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
138
|
-
if (isUsingColumnVisibilityModel) {
|
|
140
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
139
141
|
var _columnVisibilityMode;
|
|
140
142
|
|
|
141
143
|
const columnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
@@ -160,7 +162,7 @@ function useGridColumns(apiRef, props) {
|
|
|
160
162
|
};
|
|
161
163
|
apiRef.current.publishEvent(_events.GridEvents.columnVisibilityChange, params);
|
|
162
164
|
}
|
|
163
|
-
}, [apiRef
|
|
165
|
+
}, [apiRef]);
|
|
164
166
|
const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
|
|
165
167
|
const allColumns = (0, _gridColumnsSelector.gridColumnFieldsSelector)(apiRef);
|
|
166
168
|
const oldIndexPosition = allColumns.findIndex(col => col === field);
|
|
@@ -219,7 +221,7 @@ function useGridColumns(apiRef, props) {
|
|
|
219
221
|
const stateExportPreProcessing = React.useCallback(prevState => {
|
|
220
222
|
const columnsStateToExport = {};
|
|
221
223
|
|
|
222
|
-
if (isUsingColumnVisibilityModel) {
|
|
224
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
223
225
|
const columnVisibilityModelToExport = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
224
226
|
const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
|
|
225
227
|
|
|
@@ -236,7 +238,13 @@ function useGridColumns(apiRef, props) {
|
|
|
236
238
|
const colDefDimensions = {};
|
|
237
239
|
|
|
238
240
|
_gridColumnsUtils.COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {
|
|
239
|
-
|
|
241
|
+
let propertyValue = colDef[propertyName];
|
|
242
|
+
|
|
243
|
+
if (propertyValue === Infinity) {
|
|
244
|
+
propertyValue = -1;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
colDefDimensions[propertyName] = propertyValue;
|
|
240
248
|
});
|
|
241
249
|
|
|
242
250
|
dimensions[colDef.field] = colDefDimensions;
|
|
@@ -250,11 +258,11 @@ function useGridColumns(apiRef, props) {
|
|
|
250
258
|
return (0, _extends2.default)({}, prevState, {
|
|
251
259
|
columns: columnsStateToExport
|
|
252
260
|
});
|
|
253
|
-
}, [apiRef
|
|
261
|
+
}, [apiRef]);
|
|
254
262
|
const stateRestorePreProcessing = React.useCallback((params, context) => {
|
|
255
263
|
var _context$stateToResto;
|
|
256
264
|
|
|
257
|
-
const columnVisibilityModelToImport = isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
265
|
+
const columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
258
266
|
const initialState = context.stateToRestore.columns;
|
|
259
267
|
|
|
260
268
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -263,10 +271,10 @@ function useGridColumns(apiRef, props) {
|
|
|
263
271
|
|
|
264
272
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
265
273
|
apiRef,
|
|
266
|
-
|
|
274
|
+
columnTypes,
|
|
267
275
|
columnsToUpsert: [],
|
|
268
276
|
initialState,
|
|
269
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
277
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
270
278
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
271
279
|
keepOnlyColumnsToUpsert: false
|
|
272
280
|
});
|
|
@@ -277,7 +285,7 @@ function useGridColumns(apiRef, props) {
|
|
|
277
285
|
}
|
|
278
286
|
|
|
279
287
|
return params;
|
|
280
|
-
}, [apiRef,
|
|
288
|
+
}, [apiRef, columnTypes]);
|
|
281
289
|
const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
|
|
282
290
|
if (value === _preferencesPanel.GridPreferencePanelsValue.columns) {
|
|
283
291
|
var _props$componentsProp;
|
|
@@ -288,29 +296,13 @@ function useGridColumns(apiRef, props) {
|
|
|
288
296
|
|
|
289
297
|
return initialValue;
|
|
290
298
|
}, [props.components.ColumnsPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.columnsPanel]);
|
|
291
|
-
(0,
|
|
292
|
-
(0,
|
|
293
|
-
(0,
|
|
299
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
300
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
301
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
294
302
|
/**
|
|
295
303
|
* EVENTS
|
|
296
304
|
*/
|
|
297
305
|
|
|
298
|
-
const handlePreProcessorRegister = React.useCallback(name => {
|
|
299
|
-
if (name !== 'hydrateColumns') {
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
logger.info(`Columns pre-processing have changed, regenerating the columns`);
|
|
304
|
-
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
305
|
-
apiRef,
|
|
306
|
-
columnsTypes,
|
|
307
|
-
columnsToUpsert: [],
|
|
308
|
-
initialState: undefined,
|
|
309
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
310
|
-
keepOnlyColumnsToUpsert: false
|
|
311
|
-
});
|
|
312
|
-
setGridColumnsState(columnsState);
|
|
313
|
-
}, [apiRef, logger, setGridColumnsState, columnsTypes, isUsingColumnVisibilityModel]);
|
|
314
306
|
const prevInnerWidth = React.useRef(null);
|
|
315
307
|
|
|
316
308
|
const handleGridSizeChange = viewportInnerSize => {
|
|
@@ -320,9 +312,25 @@ function useGridColumns(apiRef, props) {
|
|
|
320
312
|
}
|
|
321
313
|
};
|
|
322
314
|
|
|
323
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
324
315
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.viewportInnerSizeChange, handleGridSizeChange);
|
|
325
316
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
|
|
317
|
+
/**
|
|
318
|
+
* APPLIERS
|
|
319
|
+
*/
|
|
320
|
+
|
|
321
|
+
const hydrateColumns = React.useCallback(() => {
|
|
322
|
+
logger.info(`Columns pipe processing have changed, regenerating the columns`);
|
|
323
|
+
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
324
|
+
apiRef,
|
|
325
|
+
columnTypes,
|
|
326
|
+
columnsToUpsert: [],
|
|
327
|
+
initialState: undefined,
|
|
328
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
329
|
+
keepOnlyColumnsToUpsert: false
|
|
330
|
+
});
|
|
331
|
+
setGridColumnsState(columnsState);
|
|
332
|
+
}, [apiRef, logger, setGridColumnsState, columnTypes]);
|
|
333
|
+
(0, _pipeProcessing.useGridRegisterPipeApplier)(apiRef, 'hydrateColumns', hydrateColumns);
|
|
326
334
|
/**
|
|
327
335
|
* EFFECTS
|
|
328
336
|
*/
|
|
@@ -337,17 +345,24 @@ function useGridColumns(apiRef, props) {
|
|
|
337
345
|
}
|
|
338
346
|
|
|
339
347
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
348
|
+
|
|
349
|
+
if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
|
|
340
353
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
341
354
|
apiRef,
|
|
342
|
-
|
|
355
|
+
columnTypes,
|
|
343
356
|
initialState: undefined,
|
|
344
357
|
// If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
|
|
345
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
358
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
346
359
|
columnsToUpsert: props.columns,
|
|
347
360
|
keepOnlyColumnsToUpsert: true
|
|
348
361
|
});
|
|
362
|
+
previousColumnsProp.current = props.columns;
|
|
363
|
+
previousColumnTypesProp.current = columnTypes;
|
|
349
364
|
setGridColumnsState(columnsState);
|
|
350
|
-
}, [logger, apiRef, setGridColumnsState, props.columns,
|
|
365
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
|
|
351
366
|
React.useEffect(() => {
|
|
352
367
|
if (props.columnVisibilityModel !== undefined) {
|
|
353
368
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -156,7 +156,8 @@ function useGridDimensions(apiRef, props) {
|
|
|
156
156
|
const dimensionsApi = {
|
|
157
157
|
resize,
|
|
158
158
|
getRootDimensions,
|
|
159
|
-
unstable_getViewportPageSize: getViewportPageSize
|
|
159
|
+
unstable_getViewportPageSize: getViewportPageSize,
|
|
160
|
+
unstable_updateGridDimensionsRef: updateGridDimensionsRef
|
|
160
161
|
};
|
|
161
162
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, dimensionsApi, 'GridDimensionsApi');
|
|
162
163
|
const debounceResize = React.useMemo(() => (0, _utils.debounce)(resize, 60), [resize]);
|
|
@@ -167,12 +168,12 @@ function useGridDimensions(apiRef, props) {
|
|
|
167
168
|
const isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
168
169
|
|
|
169
170
|
if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
|
|
170
|
-
logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/
|
|
171
|
+
logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
|
|
171
172
|
warningShown.current = true;
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
if (size.width === 0 && !warningShown.current && !isJSDOM) {
|
|
175
|
-
logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/
|
|
176
|
+
logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
|
|
176
177
|
warningShown.current = true;
|
|
177
178
|
}
|
|
178
179
|
|
|
@@ -193,7 +194,7 @@ function useGridDimensions(apiRef, props) {
|
|
|
193
194
|
debounceResize();
|
|
194
195
|
}, [props.autoHeight, debounceResize, logger, resize]);
|
|
195
196
|
(0, _utils.unstable_useEnhancedEffect)(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
|
|
196
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.
|
|
197
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.sortedRowsSet, updateGridDimensionsRef);
|
|
197
198
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.pageChange, updateGridDimensionsRef);
|
|
198
199
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.pageSizeChange, updateGridDimensionsRef);
|
|
199
200
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.columnsChange, updateGridDimensionsRef);
|
|
@@ -23,15 +23,20 @@ var _gridEditRowsSelector = require("./gridEditRowsSelector");
|
|
|
23
23
|
|
|
24
24
|
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
25
25
|
|
|
26
|
+
var _warning = require("../../../utils/warning");
|
|
27
|
+
|
|
26
28
|
var _gridEditCellParams = require("../../../models/params/gridEditCellParams");
|
|
27
29
|
|
|
28
30
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
31
|
|
|
30
32
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
33
|
|
|
34
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
35
|
+
|
|
32
36
|
const useGridCellEditing = (apiRef, props) => {
|
|
33
37
|
const {
|
|
34
|
-
processRowUpdate
|
|
38
|
+
processRowUpdate,
|
|
39
|
+
onProcessRowUpdateError
|
|
35
40
|
} = props;
|
|
36
41
|
|
|
37
42
|
const runIfEditModeIsCell = callback => (...args) => {
|
|
@@ -238,10 +243,7 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
238
243
|
}
|
|
239
244
|
|
|
240
245
|
const editingState = (0, _gridEditRowsSelector.gridEditRowsStateSelector)(apiRef.current.state);
|
|
241
|
-
const row = apiRef.current.getRow(id);
|
|
242
|
-
const column = apiRef.current.getColumn(field);
|
|
243
246
|
const {
|
|
244
|
-
value,
|
|
245
247
|
error,
|
|
246
248
|
isProcessingProps
|
|
247
249
|
} = editingState[id][field];
|
|
@@ -250,25 +252,33 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
250
252
|
return;
|
|
251
253
|
}
|
|
252
254
|
|
|
253
|
-
const rowUpdate =
|
|
254
|
-
value,
|
|
255
|
-
row
|
|
256
|
-
}) : (0, _extends2.default)({}, row, {
|
|
257
|
-
[field]: value
|
|
258
|
-
});
|
|
255
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);
|
|
259
256
|
|
|
260
257
|
if (processRowUpdate) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
258
|
+
const handleError = errorThrown => {
|
|
259
|
+
if (onProcessRowUpdateError) {
|
|
260
|
+
onProcessRowUpdateError(errorThrown);
|
|
261
|
+
} else {
|
|
262
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
try {
|
|
267
|
+
const row = apiRef.current.getRow(id);
|
|
268
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
269
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
270
|
+
updateFocusedCellIfNeeded();
|
|
271
|
+
updateOrDeleteFieldState(id, field, null);
|
|
272
|
+
}).catch(handleError);
|
|
273
|
+
} catch (errorThrown) {
|
|
274
|
+
handleError(errorThrown);
|
|
275
|
+
}
|
|
266
276
|
} else {
|
|
267
277
|
apiRef.current.updateRows([rowUpdate]);
|
|
268
278
|
updateFocusedCellIfNeeded();
|
|
269
279
|
updateOrDeleteFieldState(id, field, null);
|
|
270
280
|
}
|
|
271
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
281
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
272
282
|
const setCellEditingEditCellValue = React.useCallback(async params => {
|
|
273
283
|
const {
|
|
274
284
|
id,
|
|
@@ -322,11 +332,26 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
322
332
|
editingState = (0, _gridEditRowsSelector.gridEditRowsStateSelector)(apiRef.current.state);
|
|
323
333
|
return !editingState[id][field].error;
|
|
324
334
|
}, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
335
|
+
const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {
|
|
336
|
+
const column = apiRef.current.getColumn(field);
|
|
337
|
+
const editingState = (0, _gridEditRowsSelector.gridEditRowsStateSelector)(apiRef.current.state);
|
|
338
|
+
const {
|
|
339
|
+
value
|
|
340
|
+
} = editingState[id][field];
|
|
341
|
+
const row = apiRef.current.getRow(id);
|
|
342
|
+
return column.valueSetter ? column.valueSetter({
|
|
343
|
+
value,
|
|
344
|
+
row
|
|
345
|
+
}) : (0, _extends2.default)({}, row, {
|
|
346
|
+
[field]: value
|
|
347
|
+
});
|
|
348
|
+
}, [apiRef]);
|
|
325
349
|
const editingApi = {
|
|
326
350
|
getCellMode,
|
|
327
351
|
startCellEditMode,
|
|
328
352
|
stopCellEditMode,
|
|
329
|
-
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
|
|
353
|
+
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,
|
|
354
|
+
unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
|
|
330
355
|
};
|
|
331
356
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, editingApi, 'EditingApi');
|
|
332
357
|
};
|
|
@@ -121,7 +121,7 @@ const useGridEditing = (apiRef, props) => {
|
|
|
121
121
|
} = params;
|
|
122
122
|
return new Promise(resolve => {
|
|
123
123
|
maybeDebounce(id, field, debounceMs, async () => {
|
|
124
|
-
const setEditCellValueToCall = props.editMode ===
|
|
124
|
+
const setEditCellValueToCall = props.editMode === _gridEditRowModel.GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
|
|
125
125
|
// By the time this callback runs the user may have cancelled the editing
|
|
126
126
|
|
|
127
127
|
if (apiRef.current.getCellMode(id, field) === _gridEditRowModel.GridCellModes.Edit) {
|
|
@@ -131,10 +131,14 @@ const useGridEditing = (apiRef, props) => {
|
|
|
131
131
|
});
|
|
132
132
|
});
|
|
133
133
|
}, [apiRef, props.editMode]);
|
|
134
|
+
const getRowWithUpdatedValues = React.useCallback((id, field) => {
|
|
135
|
+
return props.editMode === _gridEditRowModel.GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
136
|
+
}, [apiRef, props.editMode]);
|
|
134
137
|
const editingSharedApi = {
|
|
135
138
|
isCellEditable,
|
|
136
139
|
setEditCellValue,
|
|
137
|
-
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
|
|
140
|
+
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,
|
|
141
|
+
unstable_getRowWithUpdatedValues: getRowWithUpdatedValues
|
|
138
142
|
};
|
|
139
143
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, editingSharedApi, 'EditingApi');
|
|
140
144
|
};
|
|
@@ -29,17 +29,22 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
|
29
29
|
|
|
30
30
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
31
31
|
|
|
32
|
+
var _warning = require("../../../utils/warning");
|
|
33
|
+
|
|
32
34
|
var _gridRowParams = require("../../../models/params/gridRowParams");
|
|
33
35
|
|
|
34
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
35
37
|
|
|
36
38
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
37
39
|
|
|
40
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
41
|
+
|
|
38
42
|
const useGridRowEditing = (apiRef, props) => {
|
|
39
43
|
const focusTimeout = React.useRef(null);
|
|
40
44
|
const nextFocusedCell = React.useRef(null);
|
|
41
45
|
const {
|
|
42
|
-
processRowUpdate
|
|
46
|
+
processRowUpdate,
|
|
47
|
+
onProcessRowUpdateError
|
|
43
48
|
} = props;
|
|
44
49
|
|
|
45
50
|
const runIfEditModeIsRow = callback => (...args) => {
|
|
@@ -350,32 +355,32 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
350
355
|
return;
|
|
351
356
|
}
|
|
352
357
|
|
|
353
|
-
|
|
354
|
-
Object.entries(editingState[id]).forEach(([field, fieldProps]) => {
|
|
355
|
-
const column = apiRef.current.getColumn(field);
|
|
356
|
-
|
|
357
|
-
if (column.valueSetter) {
|
|
358
|
-
rowUpdate = column.valueSetter({
|
|
359
|
-
value: fieldProps.value,
|
|
360
|
-
row: rowUpdate
|
|
361
|
-
});
|
|
362
|
-
} else {
|
|
363
|
-
rowUpdate[field] = fieldProps.value;
|
|
364
|
-
}
|
|
365
|
-
});
|
|
358
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
366
359
|
|
|
367
360
|
if (processRowUpdate) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
361
|
+
const handleError = errorThrown => {
|
|
362
|
+
if (onProcessRowUpdateError) {
|
|
363
|
+
onProcessRowUpdateError(errorThrown);
|
|
364
|
+
} else {
|
|
365
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
try {
|
|
370
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
371
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
372
|
+
updateFocusedCellIfNeeded();
|
|
373
|
+
updateOrDeleteRowState(id, null);
|
|
374
|
+
}).catch(handleError);
|
|
375
|
+
} catch (errorThrown) {
|
|
376
|
+
handleError(errorThrown);
|
|
377
|
+
}
|
|
373
378
|
} else {
|
|
374
379
|
apiRef.current.updateRows([rowUpdate]);
|
|
375
380
|
updateFocusedCellIfNeeded();
|
|
376
381
|
updateOrDeleteRowState(id, null);
|
|
377
382
|
}
|
|
378
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
383
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
379
384
|
const setRowEditingEditCellValue = React.useCallback(params => {
|
|
380
385
|
const {
|
|
381
386
|
id,
|
|
@@ -487,11 +492,30 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
487
492
|
});
|
|
488
493
|
});
|
|
489
494
|
}, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);
|
|
495
|
+
const getRowWithUpdatedValuesFromRowEditing = React.useCallback(id => {
|
|
496
|
+
const editingState = (0, _gridEditRowsSelector.gridEditRowsStateSelector)(apiRef.current.state);
|
|
497
|
+
const row = apiRef.current.getRow(id);
|
|
498
|
+
let rowUpdate = (0, _extends2.default)({}, row);
|
|
499
|
+
Object.entries(editingState[id]).forEach(([field, fieldProps]) => {
|
|
500
|
+
const column = apiRef.current.getColumn(field);
|
|
501
|
+
|
|
502
|
+
if (column.valueSetter) {
|
|
503
|
+
rowUpdate = column.valueSetter({
|
|
504
|
+
value: fieldProps.value,
|
|
505
|
+
row: rowUpdate
|
|
506
|
+
});
|
|
507
|
+
} else {
|
|
508
|
+
rowUpdate[field] = fieldProps.value;
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
return rowUpdate;
|
|
512
|
+
}, [apiRef]);
|
|
490
513
|
const editingApi = {
|
|
491
514
|
getRowMode,
|
|
492
515
|
startRowEditMode,
|
|
493
516
|
stopRowEditMode,
|
|
494
|
-
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
|
|
517
|
+
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue,
|
|
518
|
+
unstable_getRowWithUpdatedValuesFromRowEditing: getRowWithUpdatedValuesFromRowEditing
|
|
495
519
|
};
|
|
496
520
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, editingApi, 'EditingApi');
|
|
497
521
|
};
|
|
@@ -25,6 +25,8 @@ function useGridEvents(apiRef, props) {
|
|
|
25
25
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellDoubleClick, props.onCellDoubleClick);
|
|
26
26
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellKeyDown, props.onCellKeyDown);
|
|
27
27
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellFocusOut, props.onCellFocusOut);
|
|
28
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelClose, props.onPreferencePanelClose);
|
|
29
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
|
|
28
30
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowDoubleClick, props.onRowDoubleClick);
|
|
29
31
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowClick, props.onRowClick);
|
|
30
32
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.componentError, props.onError);
|
|
@@ -33,7 +33,7 @@ var _useFirstRender = require("../../utils/useFirstRender");
|
|
|
33
33
|
|
|
34
34
|
var _rows = require("../rows");
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
37
37
|
|
|
38
38
|
var _strategyProcessing = require("../../core/strategyProcessing");
|
|
39
39
|
|
|
@@ -77,11 +77,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
77
77
|
stateSelector: _gridFilterSelector.gridFilterModelSelector,
|
|
78
78
|
changeEvent: _events.GridEvents.filterModelChange
|
|
79
79
|
});
|
|
80
|
-
|
|
81
|
-
* API METHODS
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
const applyFilters = React.useCallback(() => {
|
|
80
|
+
const updateFilteredRows = React.useCallback(() => {
|
|
85
81
|
apiRef.current.setState(state => {
|
|
86
82
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(state, apiRef.current.instanceId);
|
|
87
83
|
const isRowMatchingFilters = props.filterMode === _gridFeatureMode.GridFeatureModeConstant.client ? (0, _gridFilterUtils.buildAggregatedFilterApplier)(filterModel, apiRef) : null;
|
|
@@ -92,9 +88,16 @@ const useGridFilter = (apiRef, props) => {
|
|
|
92
88
|
filter: (0, _extends2.default)({}, state.filter, filteringResult)
|
|
93
89
|
});
|
|
94
90
|
});
|
|
95
|
-
apiRef.current.publishEvent(_events.GridEvents.
|
|
91
|
+
apiRef.current.publishEvent(_events.GridEvents.filteredRowsSet);
|
|
92
|
+
}, [props.filterMode, apiRef]);
|
|
93
|
+
/**
|
|
94
|
+
* API METHODS
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
const applyFilters = React.useCallback(() => {
|
|
98
|
+
updateFilteredRows();
|
|
96
99
|
apiRef.current.forceUpdate();
|
|
97
|
-
}, [apiRef,
|
|
100
|
+
}, [apiRef, updateFilteredRows]);
|
|
98
101
|
const upsertFilterItem = React.useCallback(item => {
|
|
99
102
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
100
103
|
const items = [...filterModel.items];
|
|
@@ -254,9 +257,9 @@ const useGridFilter = (apiRef, props) => {
|
|
|
254
257
|
filteredDescendantCountLookup: {}
|
|
255
258
|
};
|
|
256
259
|
}, [apiRef, props.filterMode]);
|
|
257
|
-
(0,
|
|
258
|
-
(0,
|
|
259
|
-
(0,
|
|
260
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
|
|
261
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
262
|
+
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
260
263
|
(0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
|
|
261
264
|
/**
|
|
262
265
|
* EVENTS
|
|
@@ -278,8 +281,10 @@ const useGridFilter = (apiRef, props) => {
|
|
|
278
281
|
if (methodName === 'filtering') {
|
|
279
282
|
apiRef.current.unstable_applyFilters();
|
|
280
283
|
}
|
|
281
|
-
}, [apiRef]);
|
|
282
|
-
|
|
284
|
+
}, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
|
|
285
|
+
// Otherwise, the state is not consistent during the render
|
|
286
|
+
|
|
287
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.rowsSet, updateFilteredRows);
|
|
283
288
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
|
|
284
289
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnsChange, handleColumnsChange);
|
|
285
290
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
|
|
@@ -130,21 +130,31 @@ const useGridFocus = (apiRef, props) => {
|
|
|
130
130
|
rowIndexToFocus += 1;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
|
|
134
|
+
pagination: props.pagination,
|
|
135
|
+
paginationMode: props.paginationMode
|
|
136
|
+
});
|
|
137
|
+
|
|
133
138
|
if (columnIndexToFocus >= visibleColumns.length) {
|
|
134
|
-
// Go to next row if we are
|
|
139
|
+
// Go to next row if we are after the last column
|
|
135
140
|
rowIndexToFocus += 1;
|
|
136
|
-
|
|
141
|
+
|
|
142
|
+
if (rowIndexToFocus < currentPage.rows.length) {
|
|
143
|
+
// Go to first column of the next row if there's one more row
|
|
144
|
+
columnIndexToFocus = 0;
|
|
145
|
+
}
|
|
137
146
|
} else if (columnIndexToFocus < 0) {
|
|
138
|
-
// Go to previous row if we are
|
|
147
|
+
// Go to previous row if we are before the first column
|
|
139
148
|
rowIndexToFocus -= 1;
|
|
140
|
-
|
|
149
|
+
|
|
150
|
+
if (rowIndexToFocus >= 0) {
|
|
151
|
+
// Go to last column of the previous if there's one more row
|
|
152
|
+
columnIndexToFocus = visibleColumns.length - 1;
|
|
153
|
+
}
|
|
141
154
|
}
|
|
142
155
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
paginationMode: props.paginationMode
|
|
146
|
-
});
|
|
147
|
-
rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
|
|
156
|
+
rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, 0, currentPage.rows.length - 1);
|
|
157
|
+
columnIndexToFocus = (0, _utils2.clamp)(columnIndexToFocus, 0, visibleColumns.length - 1);
|
|
148
158
|
const rowToFocus = currentPage.rows[rowIndexToFocus];
|
|
149
159
|
const columnToFocus = visibleColumns[columnIndexToFocus];
|
|
150
160
|
apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
|