@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
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { GridEvents } from '../../../models/events';
|
|
3
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
4
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
5
|
-
import {
|
|
6
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
6
7
|
import { gridPreferencePanelStateSelector } from './gridPreferencePanelSelector';
|
|
8
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
7
9
|
export const preferencePanelStateInitializer = (state, props) => {
|
|
8
10
|
var _props$initialState$p, _props$initialState;
|
|
9
11
|
|
|
@@ -19,6 +21,7 @@ export const preferencePanelStateInitializer = (state, props) => {
|
|
|
19
21
|
|
|
20
22
|
export const useGridPreferencesPanel = apiRef => {
|
|
21
23
|
const logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
|
|
24
|
+
const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
22
25
|
const hideTimeout = React.useRef();
|
|
23
26
|
const immediateTimeout = React.useRef();
|
|
24
27
|
/**
|
|
@@ -27,13 +30,20 @@ export const useGridPreferencesPanel = apiRef => {
|
|
|
27
30
|
|
|
28
31
|
const hidePreferences = React.useCallback(() => {
|
|
29
32
|
logger.debug('Hiding Preferences Panel');
|
|
33
|
+
|
|
34
|
+
if (preferencePanelState.openedPanelValue) {
|
|
35
|
+
apiRef.current.publishEvent(GridEvents.preferencePanelClose, {
|
|
36
|
+
openedPanelValue: preferencePanelState.openedPanelValue
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
apiRef.current.setState(state => _extends({}, state, {
|
|
31
41
|
preferencePanel: {
|
|
32
42
|
open: false
|
|
33
43
|
}
|
|
34
44
|
}));
|
|
35
45
|
apiRef.current.forceUpdate();
|
|
36
|
-
}, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
|
|
46
|
+
}, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
|
|
37
47
|
// The issue is in MUI core V4 => Fixed in V5
|
|
38
48
|
|
|
39
49
|
const doNotHidePanel = React.useCallback(() => {
|
|
@@ -53,8 +63,11 @@ export const useGridPreferencesPanel = apiRef => {
|
|
|
53
63
|
openedPanelValue: newValue
|
|
54
64
|
})
|
|
55
65
|
}));
|
|
66
|
+
apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
|
|
67
|
+
openedPanelValue: newValue
|
|
68
|
+
});
|
|
56
69
|
apiRef.current.forceUpdate();
|
|
57
|
-
}, [doNotHidePanel, apiRef
|
|
70
|
+
}, [logger, doNotHidePanel, apiRef]);
|
|
58
71
|
useGridApiMethod(apiRef, {
|
|
59
72
|
showPreferences,
|
|
60
73
|
hidePreferences: hidePreferencesDelayed
|
|
@@ -85,8 +98,8 @@ export const useGridPreferencesPanel = apiRef => {
|
|
|
85
98
|
|
|
86
99
|
return params;
|
|
87
100
|
}, [apiRef]);
|
|
88
|
-
|
|
89
|
-
|
|
101
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
102
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
90
103
|
/**
|
|
91
104
|
* EFFECTS
|
|
92
105
|
*/
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
2
2
|
export declare const gridRowsStateSelector: (state: GridStateCommunity) => import("./gridRowsState").GridRowsState;
|
|
3
3
|
export declare const gridRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
4
|
+
export declare const gridRowsLoadingSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, boolean | undefined>;
|
|
4
5
|
export declare const gridTopLevelRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
|
-
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup
|
|
6
|
+
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup<any>>;
|
|
6
7
|
export declare const gridRowTreeSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowTreeConfig>;
|
|
7
8
|
export declare const gridRowGroupingNameSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, string>;
|
|
8
9
|
export declare const gridRowTreeDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createSelector } from '../../../utils/createSelector';
|
|
2
2
|
export const gridRowsStateSelector = state => state.rows;
|
|
3
3
|
export const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);
|
|
4
|
+
export const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);
|
|
4
5
|
export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
|
|
5
6
|
export const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.idRowsLookup);
|
|
6
7
|
export const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);
|
|
@@ -31,6 +31,10 @@ export interface GridRowsInternalCache {
|
|
|
31
31
|
lastUpdateMs: number;
|
|
32
32
|
}
|
|
33
33
|
export interface GridRowsState extends GridRowTreeCreationValue {
|
|
34
|
+
/**
|
|
35
|
+
* Matches the value of the `loading` prop.
|
|
36
|
+
*/
|
|
37
|
+
loading?: boolean;
|
|
34
38
|
/**
|
|
35
39
|
* Amount of rows before applying the filtering.
|
|
36
40
|
* It also counts the expanded and collapsed children rows.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GridRowId, GridRowModel } from '../../../models';
|
|
2
|
+
/**
|
|
3
|
+
* A helper function to check if the id provided is valid.
|
|
4
|
+
* @param {GridRowId} id Id as [[GridRowId]].
|
|
5
|
+
* @param {GridRowModel | Partial<GridRowModel>} row Row as [[GridRowModel]].
|
|
6
|
+
* @param {string} detailErrorMessage A custom error message to display for invalid IDs
|
|
7
|
+
*/
|
|
8
|
+
export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A helper function to check if the id provided is valid.
|
|
3
|
+
* @param {GridRowId} id Id as [[GridRowId]].
|
|
4
|
+
* @param {GridRowModel | Partial<GridRowModel>} row Row as [[GridRowModel]].
|
|
5
|
+
* @param {string} detailErrorMessage A custom error message to display for invalid IDs
|
|
6
|
+
*/
|
|
7
|
+
export function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {
|
|
8
|
+
if (id == null) {
|
|
9
|
+
throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -2,5 +2,5 @@ import * as React from 'react';
|
|
|
2
2
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
3
3
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
4
4
|
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
|
-
export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId'>>;
|
|
6
|
-
export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode'>) => void;
|
|
5
|
+
export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId' | 'loading'>>;
|
|
6
|
+
export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode' | 'loading'>) => void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { GridEvents } from '../../../models/events';
|
|
4
|
-
import { checkGridRowIdIsValid } from '../../../models/gridRows';
|
|
5
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
6
|
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
|
|
8
7
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
9
8
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
9
|
+
import { checkGridRowIdIsValid } from './gridRowsUtils';
|
|
10
10
|
|
|
11
11
|
function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
12
12
|
const id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
@@ -43,7 +43,7 @@ const convertGridRowsPropToState = ({
|
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) => {
|
|
46
|
+
const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp, loadingProp) => {
|
|
47
47
|
const {
|
|
48
48
|
value
|
|
49
49
|
} = rowsCache.state;
|
|
@@ -53,6 +53,7 @@ const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) =>
|
|
|
53
53
|
}));
|
|
54
54
|
const dataTopLevelRowCount = groupingResponse.treeDepth === 1 ? groupingResponse.ids.length : Object.values(groupingResponse.tree).filter(node => node.parent == null).length;
|
|
55
55
|
return _extends({}, groupingResponse, {
|
|
56
|
+
loading: loadingProp,
|
|
56
57
|
totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
|
|
57
58
|
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
58
59
|
});
|
|
@@ -75,7 +76,7 @@ export const rowsStateInitializer = (state, props, apiRef) => {
|
|
|
75
76
|
lastUpdateMs: Date.now()
|
|
76
77
|
};
|
|
77
78
|
return _extends({}, state, {
|
|
78
|
-
rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount),
|
|
79
|
+
rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount, props.loading),
|
|
79
80
|
rowsCache // TODO remove from state
|
|
80
81
|
|
|
81
82
|
});
|
|
@@ -91,9 +92,9 @@ export const useGridRows = (apiRef, props) => {
|
|
|
91
92
|
|
|
92
93
|
const currentPage = useGridVisibleRows(apiRef, props);
|
|
93
94
|
const getRow = React.useCallback(id => {
|
|
94
|
-
var
|
|
95
|
+
var _ref;
|
|
95
96
|
|
|
96
|
-
return (
|
|
97
|
+
return (_ref = gridRowsLookupSelector(apiRef)[id]) != null ? _ref : null;
|
|
97
98
|
}, [apiRef]);
|
|
98
99
|
const lookup = React.useMemo(() => currentPage.rows.reduce((acc, {
|
|
99
100
|
id
|
|
@@ -106,7 +107,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
106
107
|
rowsCache.current.timeout = null;
|
|
107
108
|
rowsCache.current.lastUpdateMs = Date.now();
|
|
108
109
|
apiRef.current.setState(state => _extends({}, state, {
|
|
109
|
-
rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount)
|
|
110
|
+
rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
|
|
110
111
|
}));
|
|
111
112
|
apiRef.current.publishEvent(GridEvents.rowsSet);
|
|
112
113
|
apiRef.current.forceUpdate();
|
|
@@ -132,7 +133,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
run();
|
|
135
|
-
}, [props.throttleRowsMs, props.rowCount, apiRef]);
|
|
136
|
+
}, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
|
|
136
137
|
/**
|
|
137
138
|
* API METHODS
|
|
138
139
|
*/
|
|
@@ -232,12 +233,31 @@ export const useGridRows = (apiRef, props) => {
|
|
|
232
233
|
|
|
233
234
|
return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
|
|
234
235
|
}, [apiRef]);
|
|
236
|
+
const setRowIndex = React.useCallback((rowId, targetIndex) => {
|
|
237
|
+
const allRows = gridRowIdsSelector(apiRef);
|
|
238
|
+
const oldIndex = allRows.findIndex(row => row === rowId);
|
|
239
|
+
|
|
240
|
+
if (oldIndex === targetIndex) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
|
|
245
|
+
const updatedRows = [...allRows];
|
|
246
|
+
updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
|
|
247
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
248
|
+
rows: _extends({}, state.rows, {
|
|
249
|
+
ids: updatedRows
|
|
250
|
+
})
|
|
251
|
+
}));
|
|
252
|
+
apiRef.current.applySorting();
|
|
253
|
+
}, [apiRef, logger]);
|
|
235
254
|
const rowApi = {
|
|
236
255
|
getRow,
|
|
237
256
|
getRowModels,
|
|
238
257
|
getRowsCount,
|
|
239
258
|
getAllRowIds,
|
|
240
259
|
setRows,
|
|
260
|
+
setRowIndex,
|
|
241
261
|
updateRows,
|
|
242
262
|
setRowChildrenExpansion,
|
|
243
263
|
getRowNode,
|
|
@@ -7,8 +7,7 @@ import { gridDensityRowHeightSelector, gridDensityFactorSelector } from '../dens
|
|
|
7
7
|
import { gridFilterStateSelector } from '../filter/gridFilterSelector';
|
|
8
8
|
import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
|
|
9
9
|
import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
|
|
10
|
-
import {
|
|
11
|
-
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
+
import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
12
11
|
export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
13
12
|
rowsMeta: {
|
|
14
13
|
currentPageTotalHeight: 0,
|
|
@@ -65,16 +64,17 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
65
64
|
if (getRowSpacing) {
|
|
66
65
|
var _spacing$top, _spacing$bottom;
|
|
67
66
|
|
|
68
|
-
const
|
|
67
|
+
const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
69
68
|
const spacing = getRowSpacing(_extends({}, row, {
|
|
70
|
-
isFirstVisible:
|
|
71
|
-
isLastVisible:
|
|
69
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
+
indexRelativeToCurrentPage
|
|
72
72
|
}));
|
|
73
73
|
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
74
74
|
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
const sizes = apiRef.current.
|
|
77
|
+
const sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
78
78
|
const finalRowHeight = Object.values(sizes).reduce((acc2, value) => acc2 + value, 0);
|
|
79
79
|
rowsHeightLookup.current[row.id] = {
|
|
80
80
|
value: baseRowHeight,
|
|
@@ -120,14 +120,7 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
120
120
|
React.useEffect(() => {
|
|
121
121
|
hydrateRowsMeta();
|
|
122
122
|
}, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
123
|
-
|
|
124
|
-
if (name !== 'rowHeight') {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
hydrateRowsMeta();
|
|
129
|
-
}, [hydrateRowsMeta]);
|
|
130
|
-
useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
123
|
+
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
131
124
|
const rowsMetaApi = {
|
|
132
125
|
unstable_getRowHeight: getTargetRowHeight,
|
|
133
126
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
@@ -6,5 +6,7 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
6
6
|
* @requires useGridColumns (state) - can be after, async only
|
|
7
7
|
* @requires useGridRows (state) - can be after, async only
|
|
8
8
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
9
|
+
* @requires useGridFilter (state)
|
|
10
|
+
* @requires useGridColumnSpanning (method)
|
|
9
11
|
*/
|
|
10
12
|
export declare const useGridScroll: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination'>) => void;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
3
3
|
import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
4
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
4
5
|
import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
|
|
5
6
|
import { gridRowCountSelector } from '../rows/gridRowsSelector';
|
|
6
7
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
7
8
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
|
-
import {
|
|
9
|
+
import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
9
10
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
10
11
|
|
|
11
12
|
function scrollIntoView(dimensions) {
|
|
@@ -32,6 +33,8 @@ function scrollIntoView(dimensions) {
|
|
|
32
33
|
* @requires useGridColumns (state) - can be after, async only
|
|
33
34
|
* @requires useGridRows (state) - can be after, async only
|
|
34
35
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
36
|
+
* @requires useGridFilter (state)
|
|
37
|
+
* @requires useGridColumnSpanning (method)
|
|
35
38
|
*/
|
|
36
39
|
|
|
37
40
|
|
|
@@ -39,11 +42,13 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
39
42
|
const logger = useGridLogger(apiRef, 'useGridScroll');
|
|
40
43
|
const colRef = apiRef.current.columnHeadersElementRef;
|
|
41
44
|
const windowRef = apiRef.current.windowRef;
|
|
45
|
+
const visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
|
|
42
46
|
const scrollToIndexes = React.useCallback(params => {
|
|
43
47
|
const totalRowCount = gridRowCountSelector(apiRef);
|
|
44
48
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
49
|
+
const scrollToHeader = params.rowIndex == null;
|
|
45
50
|
|
|
46
|
-
if (totalRowCount === 0 || visibleColumns.length === 0) {
|
|
51
|
+
if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {
|
|
47
52
|
return false;
|
|
48
53
|
}
|
|
49
54
|
|
|
@@ -52,10 +57,27 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
52
57
|
|
|
53
58
|
if (params.colIndex != null) {
|
|
54
59
|
const columnPositions = gridColumnPositionsSelector(apiRef);
|
|
60
|
+
let cellWidth;
|
|
61
|
+
|
|
62
|
+
if (typeof params.rowIndex !== 'undefined') {
|
|
63
|
+
var _visibleSortedRows$pa;
|
|
64
|
+
|
|
65
|
+
const rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
|
|
66
|
+
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
|
|
67
|
+
|
|
68
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
69
|
+
cellWidth = cellColSpanInfo.cellProps.width;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (typeof cellWidth === 'undefined') {
|
|
74
|
+
cellWidth = visibleColumns[params.colIndex].computedWidth;
|
|
75
|
+
}
|
|
76
|
+
|
|
55
77
|
scrollCoordinates.left = scrollIntoView({
|
|
56
78
|
clientHeight: windowRef.current.clientWidth,
|
|
57
79
|
scrollTop: windowRef.current.scrollLeft,
|
|
58
|
-
offsetHeight:
|
|
80
|
+
offsetHeight: cellWidth,
|
|
59
81
|
offsetTop: columnPositions[params.colIndex]
|
|
60
82
|
});
|
|
61
83
|
}
|
|
@@ -74,7 +96,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
74
96
|
});
|
|
75
97
|
}
|
|
76
98
|
|
|
77
|
-
scrollCoordinates = apiRef.current.
|
|
99
|
+
scrollCoordinates = apiRef.current.unstable_applyPipeProcessors('scrollToIndexes', scrollCoordinates, params);
|
|
78
100
|
|
|
79
101
|
if (typeof scrollCoordinates.left !== undefined || typeof scrollCoordinates.top !== undefined) {
|
|
80
102
|
apiRef.current.scroll(scrollCoordinates);
|
|
@@ -82,7 +104,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
82
104
|
}
|
|
83
105
|
|
|
84
106
|
return false;
|
|
85
|
-
}, [logger, apiRef, windowRef, props.pagination]);
|
|
107
|
+
}, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
|
|
86
108
|
const scroll = React.useCallback(params => {
|
|
87
109
|
if (windowRef.current && params.left != null && colRef.current) {
|
|
88
110
|
colRef.current.scrollLeft = params.left;
|
|
@@ -116,13 +138,4 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
116
138
|
getScrollPosition
|
|
117
139
|
};
|
|
118
140
|
useGridApiMethod(apiRef, scrollApi, 'GridScrollApi');
|
|
119
|
-
const preventScroll = React.useCallback(event => {
|
|
120
|
-
event.target.scrollLeft = 0;
|
|
121
|
-
event.target.scrollTop = 0;
|
|
122
|
-
}, []);
|
|
123
|
-
useGridNativeEventListener(apiRef, () => {
|
|
124
|
-
var _apiRef$current, _apiRef$current$rende, _apiRef$current$rende2;
|
|
125
|
-
|
|
126
|
-
return (_apiRef$current = apiRef.current) == null ? void 0 : (_apiRef$current$rende = _apiRef$current.renderingZoneRef) == null ? void 0 : (_apiRef$current$rende2 = _apiRef$current$rende.current) == null ? void 0 : _apiRef$current$rende2.parentElement;
|
|
127
|
-
}, 'scroll', preventScroll);
|
|
128
141
|
};
|
|
@@ -2,7 +2,5 @@ import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
|
2
2
|
import { GridRowId } from '../../../models/gridRows';
|
|
3
3
|
export declare const gridSelectionStateSelector: (state: GridStateCommunity) => import("../../..").GridSelectionModel;
|
|
4
4
|
export declare const selectedGridRowsCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
|
-
export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId,
|
|
6
|
-
[key: string]: any;
|
|
7
|
-
}>>;
|
|
5
|
+
export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId, any>>;
|
|
8
6
|
export declare const selectedIdsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Record<GridRowId, GridRowId>>;
|
|
@@ -4,7 +4,9 @@ import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
|
4
4
|
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
5
|
export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'selectionModel'>>;
|
|
6
6
|
/**
|
|
7
|
-
* @requires useGridRows (state, method)
|
|
8
|
-
* @requires useGridParamsApi (method)
|
|
7
|
+
* @requires useGridRows (state, method) - can be after
|
|
8
|
+
* @requires useGridParamsApi (method) - can be after
|
|
9
|
+
* @requires useGridFocus (state) - can be after
|
|
10
|
+
* @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
|
|
9
11
|
*/
|
|
10
12
|
export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes'>) => void;
|
|
@@ -5,14 +5,15 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
|
5
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
7
|
import { gridRowsLookupSelector } from '../rows/gridRowsSelector';
|
|
8
|
-
import { isGridCellRoot } from '../../../utils/domUtils';
|
|
9
8
|
import { gridSelectionStateSelector, selectedGridRowsSelector, selectedIdsLookupSelector } from './gridSelectionSelector';
|
|
10
9
|
import { gridPaginatedVisibleSortedGridRowIdsSelector } from '../pagination';
|
|
10
|
+
import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
|
|
11
11
|
import { gridVisibleSortedRowIdsSelector } from '../filter/gridFilterSelector';
|
|
12
12
|
import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
|
|
13
13
|
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
14
|
-
import { isKeyboardEvent } from '../../../utils/keyboardUtils';
|
|
15
|
-
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
14
|
+
import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
|
|
15
|
+
import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
16
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
16
17
|
|
|
17
18
|
const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
|
|
18
19
|
if (selectionModelProp == null) {
|
|
@@ -38,8 +39,10 @@ export const selectionStateInitializer = (state, props) => {
|
|
|
38
39
|
});
|
|
39
40
|
};
|
|
40
41
|
/**
|
|
41
|
-
* @requires useGridRows (state, method)
|
|
42
|
-
* @requires useGridParamsApi (method)
|
|
42
|
+
* @requires useGridRows (state, method) - can be after
|
|
43
|
+
* @requires useGridParamsApi (method) - can be after
|
|
44
|
+
* @requires useGridFocus (state) - can be after
|
|
45
|
+
* @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
|
|
43
46
|
*/
|
|
44
47
|
|
|
45
48
|
export const useGridSelection = (apiRef, props) => {
|
|
@@ -64,7 +67,8 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
64
67
|
paginationMode
|
|
65
68
|
} = props;
|
|
66
69
|
const canHaveMultipleSelection = !disableMultipleSelection || checkboxSelection;
|
|
67
|
-
const
|
|
70
|
+
const visibleRows = useGridVisibleRows(apiRef, props);
|
|
71
|
+
const expandMouseRowRangeSelection = React.useCallback(id => {
|
|
68
72
|
var _lastRowToggled$curre;
|
|
69
73
|
|
|
70
74
|
let endId = id;
|
|
@@ -171,12 +175,13 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
171
175
|
return;
|
|
172
176
|
}
|
|
173
177
|
|
|
174
|
-
logger.debug(`Expanding selection from row ${startId} to row ${endId}`);
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
+
logger.debug(`Expanding selection from row ${startId} to row ${endId}`); // Using rows from all pages allow to select a range across several pages
|
|
179
|
+
|
|
180
|
+
const allPagesRowIds = gridVisibleSortedRowIdsSelector(apiRef);
|
|
181
|
+
const startIndex = allPagesRowIds.indexOf(startId);
|
|
182
|
+
const endIndex = allPagesRowIds.indexOf(endId);
|
|
178
183
|
const [start, end] = startIndex > endIndex ? [endIndex, startIndex] : [startIndex, endIndex];
|
|
179
|
-
const rowsBetweenStartAndEnd =
|
|
184
|
+
const rowsBetweenStartAndEnd = allPagesRowIds.slice(start, end + 1);
|
|
180
185
|
apiRef.current.selectRows(rowsBetweenStartAndEnd, isSelected, resetSelection);
|
|
181
186
|
}, [apiRef, logger]);
|
|
182
187
|
const selectionApi = {
|
|
@@ -236,7 +241,7 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
236
241
|
return;
|
|
237
242
|
}
|
|
238
243
|
|
|
239
|
-
if (params.field ===
|
|
244
|
+
if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
240
245
|
// click to open the detail panel should not select the row
|
|
241
246
|
return;
|
|
242
247
|
}
|
|
@@ -250,11 +255,11 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
250
255
|
}
|
|
251
256
|
|
|
252
257
|
if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
|
|
253
|
-
|
|
258
|
+
expandMouseRowRangeSelection(params.id);
|
|
254
259
|
} else {
|
|
255
260
|
handleSingleRowSelection(params.id, event);
|
|
256
261
|
}
|
|
257
|
-
}, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef,
|
|
262
|
+
}, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandMouseRowRangeSelection, handleSingleRowSelection]);
|
|
258
263
|
const preventSelectionOnShift = React.useCallback((params, event) => {
|
|
259
264
|
if (canHaveMultipleSelection && event.shiftKey) {
|
|
260
265
|
var _window$getSelection;
|
|
@@ -264,35 +269,78 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
264
269
|
}, [canHaveMultipleSelection]);
|
|
265
270
|
const handleRowSelectionCheckboxChange = React.useCallback((params, event) => {
|
|
266
271
|
if (event.nativeEvent.shiftKey) {
|
|
267
|
-
|
|
272
|
+
expandMouseRowRangeSelection(params.id);
|
|
268
273
|
} else {
|
|
269
274
|
apiRef.current.selectRow(params.id, params.value);
|
|
270
275
|
}
|
|
271
|
-
}, [apiRef,
|
|
276
|
+
}, [apiRef, expandMouseRowRangeSelection]);
|
|
272
277
|
const handleHeaderSelectionCheckboxChange = React.useCallback(params => {
|
|
273
278
|
const shouldLimitSelectionToCurrentPage = props.checkboxSelectionVisibleOnly && props.pagination;
|
|
274
279
|
const rowsToBeSelected = shouldLimitSelectionToCurrentPage ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridVisibleSortedRowIdsSelector(apiRef);
|
|
275
280
|
apiRef.current.selectRows(rowsToBeSelected, params.value);
|
|
276
281
|
}, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
|
|
277
282
|
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
278
|
-
//
|
|
283
|
+
// Get the most recent cell mode because it may have been changed by another listener
|
|
284
|
+
if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.Edit) {
|
|
285
|
+
return;
|
|
286
|
+
} // Ignore portal
|
|
279
287
|
// Do not apply shortcuts if the focus is not on the cell root component
|
|
280
|
-
|
|
281
|
-
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
if (!event.currentTarget.contains(event.target)) {
|
|
282
291
|
return;
|
|
283
|
-
}
|
|
292
|
+
}
|
|
284
293
|
|
|
294
|
+
if (isNavigationKey(event.key) && event.shiftKey) {
|
|
295
|
+
// The cell that has focus after the keyboard navigation
|
|
296
|
+
const focusCell = gridFocusCellSelector(apiRef);
|
|
285
297
|
|
|
286
|
-
|
|
287
|
-
|
|
298
|
+
if (focusCell && focusCell.id !== params.id) {
|
|
299
|
+
event.preventDefault();
|
|
300
|
+
const isNextRowSelected = apiRef.current.isRowSelected(focusCell.id);
|
|
288
301
|
|
|
289
|
-
|
|
290
|
-
|
|
302
|
+
if (!canHaveMultipleSelection) {
|
|
303
|
+
apiRef.current.selectRow(focusCell.id, !isNextRowSelected, true);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
const newRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(focusCell.id);
|
|
308
|
+
const previousRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(params.id);
|
|
309
|
+
let start;
|
|
310
|
+
let end;
|
|
311
|
+
|
|
312
|
+
if (newRowIndex > previousRowIndex) {
|
|
313
|
+
if (isNextRowSelected) {
|
|
314
|
+
// We are navigating to the bottom of the page and adding selected rows
|
|
315
|
+
start = previousRowIndex;
|
|
316
|
+
end = newRowIndex - 1;
|
|
317
|
+
} else {
|
|
318
|
+
// We are navigating to the bottom of the page and removing selected rows
|
|
319
|
+
start = previousRowIndex;
|
|
320
|
+
end = newRowIndex;
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
// eslint-disable-next-line no-lonely-if
|
|
324
|
+
if (isNextRowSelected) {
|
|
325
|
+
// We are navigating to the top of the page and removing selected rows
|
|
326
|
+
start = newRowIndex + 1;
|
|
327
|
+
end = previousRowIndex;
|
|
328
|
+
} else {
|
|
329
|
+
// We are navigating to the top of the page and adding selected rows
|
|
330
|
+
start = newRowIndex;
|
|
331
|
+
end = previousRowIndex;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const rowsBetweenStartAndEnd = visibleRows.rows.slice(start, end + 1).map(row => row.id);
|
|
336
|
+
apiRef.current.selectRows(rowsBetweenStartAndEnd, !isNextRowSelected);
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
291
339
|
}
|
|
292
340
|
|
|
293
341
|
if (event.key === ' ' && event.shiftKey) {
|
|
294
342
|
event.preventDefault();
|
|
295
|
-
handleSingleRowSelection(
|
|
343
|
+
handleSingleRowSelection(params.id, event);
|
|
296
344
|
return;
|
|
297
345
|
}
|
|
298
346
|
|
|
@@ -300,8 +348,8 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
300
348
|
event.preventDefault();
|
|
301
349
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
302
350
|
}
|
|
303
|
-
}, [apiRef, handleSingleRowSelection, selectRows]);
|
|
304
|
-
useGridApiEventHandler(apiRef, GridEvents.
|
|
351
|
+
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
352
|
+
useGridApiEventHandler(apiRef, GridEvents.sortedRowsSet, removeOutdatedSelection);
|
|
305
353
|
useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
|
|
306
354
|
useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
|
|
307
355
|
useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
4
|
-
import {
|
|
4
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
5
5
|
import { getDataGridUtilityClass } from '../../../constants';
|
|
6
6
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
|
|
7
7
|
|
|
@@ -43,5 +43,5 @@ export const useGridSelectionPreProcessors = (apiRef, props) => {
|
|
|
43
43
|
|
|
44
44
|
return columnsState;
|
|
45
45
|
}, [apiRef, classes, props.checkboxSelection]);
|
|
46
|
-
|
|
46
|
+
useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);
|
|
47
47
|
};
|
|
@@ -16,9 +16,7 @@ export declare const gridSortedRowIdsSelector: import("../../../utils/createSele
|
|
|
16
16
|
*/
|
|
17
17
|
export declare const gridSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
18
18
|
id: import("../../..").GridRowId;
|
|
19
|
-
model:
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
19
|
+
model: any;
|
|
22
20
|
}[]>;
|
|
23
21
|
/**
|
|
24
22
|
* Get the current sorting model.
|