@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
|
@@ -7,31 +7,51 @@ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelecto
|
|
|
7
7
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
8
8
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef';
|
|
9
9
|
import { gridClasses } from '../../../constants/gridClasses';
|
|
10
|
+
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
11
|
+
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
12
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
10
13
|
/**
|
|
11
|
-
* @requires useGridPage (state)
|
|
12
|
-
* @requires useGridPageSize (state)
|
|
13
|
-
* @requires useGridFilter (state)
|
|
14
|
-
* @requires useGridColumns (state, method)
|
|
15
|
-
* @requires useGridRows (state, method)
|
|
16
14
|
* @requires useGridSorting (method) - can be after
|
|
15
|
+
* @requires useGridFilter (state) - can be after
|
|
16
|
+
* @requires useGridColumns (state, method) - can be after
|
|
17
17
|
* @requires useGridDimensions (method) - can be after
|
|
18
18
|
* @requires useGridFocus (method) - can be after
|
|
19
19
|
* @requires useGridScroll (method) - can be after
|
|
20
|
+
* @requires useGridColumnSpanning (method) - can be after
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
23
|
export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef, props) {
|
|
23
24
|
var logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');
|
|
24
25
|
var currentPage = useGridVisibleRows(apiRef, props);
|
|
26
|
+
/**
|
|
27
|
+
* @param {number} colIndex Index of the column to focus
|
|
28
|
+
* @param {number} rowIndex index of the row to focus
|
|
29
|
+
* @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
|
|
30
|
+
*/
|
|
31
|
+
|
|
25
32
|
var goToCell = React.useCallback(function (colIndex, rowIndex) {
|
|
33
|
+
var _visibleSortedRows$ro;
|
|
34
|
+
|
|
35
|
+
var closestColumnToUse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';
|
|
36
|
+
var visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
|
|
37
|
+
var rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
|
|
38
|
+
var nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
|
|
39
|
+
|
|
40
|
+
if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
|
|
41
|
+
if (closestColumnToUse === 'left') {
|
|
42
|
+
colIndex = nextCellColSpanInfo.leftVisibleCellIndex;
|
|
43
|
+
} else if (closestColumnToUse === 'right') {
|
|
44
|
+
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
26
48
|
logger.debug("Navigating to cell row ".concat(rowIndex, ", col ").concat(colIndex));
|
|
27
49
|
apiRef.current.scrollToIndexes({
|
|
28
50
|
colIndex: colIndex,
|
|
29
51
|
rowIndex: rowIndex
|
|
30
52
|
});
|
|
31
53
|
var field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
32
|
-
|
|
33
|
-
var node = visibleSortedRows[rowIndex];
|
|
34
|
-
apiRef.current.setCellFocus(node.id, field);
|
|
54
|
+
apiRef.current.setCellFocus(rowId, field);
|
|
35
55
|
}, [apiRef, logger]);
|
|
36
56
|
var goToHeader = React.useCallback(function (colIndex, event) {
|
|
37
57
|
logger.debug("Navigating to header col ".concat(colIndex));
|
|
@@ -86,7 +106,7 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
86
106
|
case 'ArrowRight':
|
|
87
107
|
{
|
|
88
108
|
if (colIndexBefore < lastColIndex) {
|
|
89
|
-
goToCell(colIndexBefore + 1, rowIndexBefore);
|
|
109
|
+
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
90
110
|
}
|
|
91
111
|
|
|
92
112
|
break;
|
|
@@ -105,16 +125,36 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
105
125
|
{
|
|
106
126
|
// "Tab" is only triggered by the row / cell editing feature
|
|
107
127
|
if (event.shiftKey && colIndexBefore > firstColIndex) {
|
|
108
|
-
goToCell(colIndexBefore - 1, rowIndexBefore);
|
|
128
|
+
goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
|
|
109
129
|
} else if (!event.shiftKey && colIndexBefore < lastColIndex) {
|
|
110
|
-
goToCell(colIndexBefore + 1, rowIndexBefore);
|
|
130
|
+
goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
|
|
111
131
|
}
|
|
112
132
|
|
|
113
133
|
break;
|
|
114
134
|
}
|
|
115
135
|
|
|
116
|
-
case 'PageDown':
|
|
117
136
|
case ' ':
|
|
137
|
+
{
|
|
138
|
+
var field = params.field;
|
|
139
|
+
|
|
140
|
+
if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
var colDef = params.colDef;
|
|
145
|
+
|
|
146
|
+
if (colDef && colDef.type === 'treeDataGroup') {
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
|
|
151
|
+
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
case 'PageDown':
|
|
118
158
|
{
|
|
119
159
|
if (rowIndexBefore < lastRowIndexInPage) {
|
|
120
160
|
goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
|
|
@@ -269,6 +309,20 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
269
309
|
event.preventDefault();
|
|
270
310
|
}
|
|
271
311
|
}, [apiRef, currentPage, goToCell, goToHeader]);
|
|
312
|
+
var handleCellKeyDown = React.useCallback(function (params, event) {
|
|
313
|
+
// Ignore portal
|
|
314
|
+
if (!event.currentTarget.contains(event.target)) {
|
|
315
|
+
return;
|
|
316
|
+
} // Get the most recent params because the cell mode may have changed by another listener
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
var cellParams = apiRef.current.getCellParams(params.id, params.field);
|
|
320
|
+
|
|
321
|
+
if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
|
|
322
|
+
apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, cellParams, event);
|
|
323
|
+
}
|
|
324
|
+
}, [apiRef]);
|
|
272
325
|
useGridApiEventHandler(apiRef, GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
|
|
273
326
|
useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
|
|
327
|
+
useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
|
|
274
328
|
};
|
|
@@ -3,8 +3,8 @@ import * as React from 'react';
|
|
|
3
3
|
import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
|
|
4
4
|
import { GridEvents } from '../../../models/events';
|
|
5
5
|
import { gridVisibleTopLevelRowCountSelector } from '../filter';
|
|
6
|
-
import { gridPageSelector } from './gridPaginationSelector';
|
|
7
|
-
import {
|
|
6
|
+
import { gridPageSelector, gridPageSizeSelector } from './gridPaginationSelector';
|
|
7
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
8
8
|
import { buildWarning } from '../../../utils/warning';
|
|
9
9
|
export var getPageCount = function getPageCount(rowCount, pageSize) {
|
|
10
10
|
if (pageSize > 0 && rowCount > 0) {
|
|
@@ -95,8 +95,8 @@ export var useGridPage = function useGridPage(apiRef, props) {
|
|
|
95
95
|
apiRef.current.setState(mergeStateWithPage(page));
|
|
96
96
|
return params;
|
|
97
97
|
}, [apiRef]);
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
99
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
100
100
|
/**
|
|
101
101
|
* EVENTS
|
|
102
102
|
*/
|
|
@@ -114,7 +114,14 @@ export var useGridPage = function useGridPage(apiRef, props) {
|
|
|
114
114
|
apiRef.current.forceUpdate();
|
|
115
115
|
};
|
|
116
116
|
|
|
117
|
+
var handlePageChange = function handlePageChange() {
|
|
118
|
+
return apiRef.current.scrollToIndexes({
|
|
119
|
+
rowIndex: gridPageSelector(apiRef) * gridPageSizeSelector(apiRef)
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
117
123
|
useGridApiEventHandler(apiRef, GridEvents.pageSizeChange, handlePageSizeChange);
|
|
124
|
+
useGridApiEventHandler(apiRef, GridEvents.pageChange, handlePageChange);
|
|
118
125
|
/**
|
|
119
126
|
* EFFECTS
|
|
120
127
|
*/
|
|
@@ -4,7 +4,7 @@ import { GridEvents } from '../../../models/events';
|
|
|
4
4
|
import { useGridLogger, useGridApiMethod, useGridApiEventHandler, useGridSelector } from '../../utils';
|
|
5
5
|
import { gridPageSizeSelector } from './gridPaginationSelector';
|
|
6
6
|
import { gridDensityRowHeightSelector } from '../density';
|
|
7
|
-
import {
|
|
7
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
8
8
|
export var defaultPageSize = function defaultPageSize(autoPageSize) {
|
|
9
9
|
return autoPageSize ? 0 : 100;
|
|
10
10
|
};
|
|
@@ -90,8 +90,8 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
|
|
|
90
90
|
|
|
91
91
|
return params;
|
|
92
92
|
}, [apiRef]);
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
94
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
95
95
|
/**
|
|
96
96
|
* EVENTS
|
|
97
97
|
*/
|
|
@@ -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 var preferencePanelStateInitializer = function preferencePanelStateInitializer(state, props) {
|
|
8
10
|
var _props$initialState$p, _props$initialState;
|
|
9
11
|
|
|
@@ -19,6 +21,7 @@ export var preferencePanelStateInitializer = function preferencePanelStateInitia
|
|
|
19
21
|
|
|
20
22
|
export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
21
23
|
var logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
|
|
24
|
+
var preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
22
25
|
var hideTimeout = React.useRef();
|
|
23
26
|
var immediateTimeout = React.useRef();
|
|
24
27
|
/**
|
|
@@ -27,6 +30,13 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
27
30
|
|
|
28
31
|
var hidePreferences = React.useCallback(function () {
|
|
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(function (state) {
|
|
31
41
|
return _extends({}, state, {
|
|
32
42
|
preferencePanel: {
|
|
@@ -35,7 +45,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
35
45
|
});
|
|
36
46
|
});
|
|
37
47
|
apiRef.current.forceUpdate();
|
|
38
|
-
}, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
|
|
48
|
+
}, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
|
|
39
49
|
// The issue is in MUI core V4 => Fixed in V5
|
|
40
50
|
|
|
41
51
|
var doNotHidePanel = React.useCallback(function () {
|
|
@@ -59,8 +69,11 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
59
69
|
})
|
|
60
70
|
});
|
|
61
71
|
});
|
|
72
|
+
apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
|
|
73
|
+
openedPanelValue: newValue
|
|
74
|
+
});
|
|
62
75
|
apiRef.current.forceUpdate();
|
|
63
|
-
}, [doNotHidePanel, apiRef
|
|
76
|
+
}, [logger, doNotHidePanel, apiRef]);
|
|
64
77
|
useGridApiMethod(apiRef, {
|
|
65
78
|
showPreferences: showPreferences,
|
|
66
79
|
hidePreferences: hidePreferencesDelayed
|
|
@@ -93,8 +106,8 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
93
106
|
|
|
94
107
|
return params;
|
|
95
108
|
}, [apiRef]);
|
|
96
|
-
|
|
97
|
-
|
|
109
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
110
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
98
111
|
/**
|
|
99
112
|
* EFFECTS
|
|
100
113
|
*/
|
|
@@ -5,6 +5,9 @@ export var gridRowsStateSelector = function gridRowsStateSelector(state) {
|
|
|
5
5
|
export var gridRowCountSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
6
6
|
return rows.totalRowCount;
|
|
7
7
|
});
|
|
8
|
+
export var gridRowsLoadingSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
9
|
+
return rows.loading;
|
|
10
|
+
});
|
|
8
11
|
export var gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
9
12
|
return rows.totalTopLevelRowCount;
|
|
10
13
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
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) {
|
|
8
|
+
var detailErrorMessage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'A row was provided without id in the rows prop:';
|
|
9
|
+
|
|
10
|
+
if (id == null) {
|
|
11
|
+
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'));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -3,12 +3,12 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { GridEvents } from '../../../models/events';
|
|
6
|
-
import { checkGridRowIdIsValid } from '../../../models/gridRows';
|
|
7
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
7
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
9
8
|
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
|
|
10
9
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
11
10
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
11
|
+
import { checkGridRowIdIsValid } from './gridRowsUtils';
|
|
12
12
|
|
|
13
13
|
function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
14
14
|
var id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
@@ -44,7 +44,7 @@ var convertGridRowsPropToState = function convertGridRowsPropToState(_ref) {
|
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTree, apiRef, rowCountProp) {
|
|
47
|
+
var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTree, apiRef, rowCountProp, loadingProp) {
|
|
48
48
|
var value = rowsCache.state.value;
|
|
49
49
|
var rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
50
50
|
var groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, value, {
|
|
@@ -54,6 +54,7 @@ var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTr
|
|
|
54
54
|
return node.parent == null;
|
|
55
55
|
}).length;
|
|
56
56
|
return _extends({}, groupingResponse, {
|
|
57
|
+
loading: loadingProp,
|
|
57
58
|
totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
|
|
58
59
|
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
59
60
|
});
|
|
@@ -76,7 +77,7 @@ export var rowsStateInitializer = function rowsStateInitializer(state, props, ap
|
|
|
76
77
|
lastUpdateMs: Date.now()
|
|
77
78
|
};
|
|
78
79
|
return _extends({}, state, {
|
|
79
|
-
rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount),
|
|
80
|
+
rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount, props.loading),
|
|
80
81
|
rowsCache: rowsCache // TODO remove from state
|
|
81
82
|
|
|
82
83
|
});
|
|
@@ -92,13 +93,13 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
92
93
|
|
|
93
94
|
var currentPage = useGridVisibleRows(apiRef, props);
|
|
94
95
|
var getRow = React.useCallback(function (id) {
|
|
95
|
-
var
|
|
96
|
+
var _ref2;
|
|
96
97
|
|
|
97
|
-
return (
|
|
98
|
+
return (_ref2 = gridRowsLookupSelector(apiRef)[id]) != null ? _ref2 : null;
|
|
98
99
|
}, [apiRef]);
|
|
99
100
|
var lookup = React.useMemo(function () {
|
|
100
|
-
return currentPage.rows.reduce(function (acc,
|
|
101
|
-
var id =
|
|
101
|
+
return currentPage.rows.reduce(function (acc, _ref3, index) {
|
|
102
|
+
var id = _ref3.id;
|
|
102
103
|
acc[id] = index;
|
|
103
104
|
return acc;
|
|
104
105
|
}, {});
|
|
@@ -109,7 +110,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
109
110
|
rowsCache.current.lastUpdateMs = Date.now();
|
|
110
111
|
apiRef.current.setState(function (state) {
|
|
111
112
|
return _extends({}, state, {
|
|
112
|
-
rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount)
|
|
113
|
+
rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
|
|
113
114
|
});
|
|
114
115
|
});
|
|
115
116
|
apiRef.current.publishEvent(GridEvents.rowsSet);
|
|
@@ -136,7 +137,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
136
137
|
}
|
|
137
138
|
|
|
138
139
|
run();
|
|
139
|
-
}, [props.throttleRowsMs, props.rowCount, apiRef]);
|
|
140
|
+
}, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
|
|
140
141
|
/**
|
|
141
142
|
* API METHODS
|
|
142
143
|
*/
|
|
@@ -244,12 +245,37 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
244
245
|
|
|
245
246
|
return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
|
|
246
247
|
}, [apiRef]);
|
|
248
|
+
var setRowIndex = React.useCallback(function (rowId, targetIndex) {
|
|
249
|
+
var allRows = gridRowIdsSelector(apiRef);
|
|
250
|
+
var oldIndex = allRows.findIndex(function (row) {
|
|
251
|
+
return row === rowId;
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
if (oldIndex === targetIndex) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
logger.debug("Moving row ".concat(rowId, " to index ").concat(targetIndex));
|
|
259
|
+
|
|
260
|
+
var updatedRows = _toConsumableArray(allRows);
|
|
261
|
+
|
|
262
|
+
updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
|
|
263
|
+
apiRef.current.setState(function (state) {
|
|
264
|
+
return _extends({}, state, {
|
|
265
|
+
rows: _extends({}, state.rows, {
|
|
266
|
+
ids: updatedRows
|
|
267
|
+
})
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
apiRef.current.applySorting();
|
|
271
|
+
}, [apiRef, logger]);
|
|
247
272
|
var rowApi = {
|
|
248
273
|
getRow: getRow,
|
|
249
274
|
getRowModels: getRowModels,
|
|
250
275
|
getRowsCount: getRowsCount,
|
|
251
276
|
getAllRowIds: getAllRowIds,
|
|
252
277
|
setRows: setRows,
|
|
278
|
+
setRowIndex: setRowIndex,
|
|
253
279
|
updateRows: updateRows,
|
|
254
280
|
setRowChildrenExpansion: setRowChildrenExpansion,
|
|
255
281
|
getRowNode: 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 var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
|
|
13
12
|
return _extends({}, state, {
|
|
14
13
|
rowsMeta: {
|
|
@@ -65,16 +64,17 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
65
64
|
if (getRowSpacing) {
|
|
66
65
|
var _spacing$top, _spacing$bottom;
|
|
67
66
|
|
|
68
|
-
var
|
|
67
|
+
var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
69
68
|
var spacing = getRowSpacing(_extends({}, row, {
|
|
70
|
-
isFirstVisible:
|
|
71
|
-
isLastVisible:
|
|
69
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
+
indexRelativeToCurrentPage: 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
|
-
var sizes = apiRef.current.
|
|
77
|
+
var sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
78
78
|
var finalRowHeight = Object.values(sizes).reduce(function (acc2, value) {
|
|
79
79
|
return acc2 + value;
|
|
80
80
|
}, 0);
|
|
@@ -122,14 +122,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
122
122
|
React.useEffect(function () {
|
|
123
123
|
hydrateRowsMeta();
|
|
124
124
|
}, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
125
|
-
|
|
126
|
-
if (name !== 'rowHeight') {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
hydrateRowsMeta();
|
|
131
|
-
}, [hydrateRowsMeta]);
|
|
132
|
-
useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
125
|
+
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
133
126
|
var rowsMetaApi = {
|
|
134
127
|
unstable_getRowHeight: getTargetRowHeight,
|
|
135
128
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
@@ -2,11 +2,12 @@ import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
4
4
|
import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
5
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
5
6
|
import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
|
|
6
7
|
import { gridRowCountSelector } from '../rows/gridRowsSelector';
|
|
7
8
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
8
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
-
import {
|
|
10
|
+
import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
10
11
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
11
12
|
|
|
12
13
|
function scrollIntoView(dimensions) {
|
|
@@ -31,6 +32,8 @@ function scrollIntoView(dimensions) {
|
|
|
31
32
|
* @requires useGridColumns (state) - can be after, async only
|
|
32
33
|
* @requires useGridRows (state) - can be after, async only
|
|
33
34
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
35
|
+
* @requires useGridFilter (state)
|
|
36
|
+
* @requires useGridColumnSpanning (method)
|
|
34
37
|
*/
|
|
35
38
|
|
|
36
39
|
|
|
@@ -38,11 +41,13 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
38
41
|
var logger = useGridLogger(apiRef, 'useGridScroll');
|
|
39
42
|
var colRef = apiRef.current.columnHeadersElementRef;
|
|
40
43
|
var windowRef = apiRef.current.windowRef;
|
|
44
|
+
var visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
|
|
41
45
|
var scrollToIndexes = React.useCallback(function (params) {
|
|
42
46
|
var totalRowCount = gridRowCountSelector(apiRef);
|
|
43
47
|
var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
48
|
+
var scrollToHeader = params.rowIndex == null;
|
|
44
49
|
|
|
45
|
-
if (totalRowCount === 0 || visibleColumns.length === 0) {
|
|
50
|
+
if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {
|
|
46
51
|
return false;
|
|
47
52
|
}
|
|
48
53
|
|
|
@@ -51,10 +56,27 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
51
56
|
|
|
52
57
|
if (params.colIndex != null) {
|
|
53
58
|
var columnPositions = gridColumnPositionsSelector(apiRef);
|
|
59
|
+
var cellWidth;
|
|
60
|
+
|
|
61
|
+
if (typeof params.rowIndex !== 'undefined') {
|
|
62
|
+
var _visibleSortedRows$pa;
|
|
63
|
+
|
|
64
|
+
var rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
|
|
65
|
+
var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
|
|
66
|
+
|
|
67
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
68
|
+
cellWidth = cellColSpanInfo.cellProps.width;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (typeof cellWidth === 'undefined') {
|
|
73
|
+
cellWidth = visibleColumns[params.colIndex].computedWidth;
|
|
74
|
+
}
|
|
75
|
+
|
|
54
76
|
scrollCoordinates.left = scrollIntoView({
|
|
55
77
|
clientHeight: windowRef.current.clientWidth,
|
|
56
78
|
scrollTop: windowRef.current.scrollLeft,
|
|
57
|
-
offsetHeight:
|
|
79
|
+
offsetHeight: cellWidth,
|
|
58
80
|
offsetTop: columnPositions[params.colIndex]
|
|
59
81
|
});
|
|
60
82
|
}
|
|
@@ -73,7 +95,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
73
95
|
});
|
|
74
96
|
}
|
|
75
97
|
|
|
76
|
-
scrollCoordinates = apiRef.current.
|
|
98
|
+
scrollCoordinates = apiRef.current.unstable_applyPipeProcessors('scrollToIndexes', scrollCoordinates, params);
|
|
77
99
|
|
|
78
100
|
if (_typeof(scrollCoordinates.left) !== undefined || _typeof(scrollCoordinates.top) !== undefined) {
|
|
79
101
|
apiRef.current.scroll(scrollCoordinates);
|
|
@@ -81,7 +103,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
81
103
|
}
|
|
82
104
|
|
|
83
105
|
return false;
|
|
84
|
-
}, [logger, apiRef, windowRef, props.pagination]);
|
|
106
|
+
}, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
|
|
85
107
|
var scroll = React.useCallback(function (params) {
|
|
86
108
|
if (windowRef.current && params.left != null && colRef.current) {
|
|
87
109
|
colRef.current.scrollLeft = params.left;
|
|
@@ -115,13 +137,4 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
115
137
|
getScrollPosition: getScrollPosition
|
|
116
138
|
};
|
|
117
139
|
useGridApiMethod(apiRef, scrollApi, 'GridScrollApi');
|
|
118
|
-
var preventScroll = React.useCallback(function (event) {
|
|
119
|
-
event.target.scrollLeft = 0;
|
|
120
|
-
event.target.scrollTop = 0;
|
|
121
|
-
}, []);
|
|
122
|
-
useGridNativeEventListener(apiRef, function () {
|
|
123
|
-
var _apiRef$current, _apiRef$current$rende, _apiRef$current$rende2;
|
|
124
|
-
|
|
125
|
-
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;
|
|
126
|
-
}, 'scroll', preventScroll);
|
|
127
140
|
};
|