@mui/x-data-grid 5.8.0 → 5.11.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 +333 -66
- package/DataGrid/DataGrid.js +36 -2
- package/DataGrid/useDataGridComponent.js +3 -1
- package/DataGrid/useDataGridProps.js +2 -1
- package/LICENSE +21 -0
- package/README.md +7 -5
- package/colDef/gridActionsColDef.js +2 -1
- package/colDef/gridBooleanColDef.js +2 -1
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/colDef/gridDateColDef.js +4 -2
- package/colDef/gridNumericColDef.js +3 -2
- package/colDef/gridNumericOperators.d.ts +2 -0
- package/colDef/gridNumericOperators.js +11 -0
- package/colDef/gridSingleSelectColDef.js +3 -2
- package/colDef/gridSingleSelectOperators.d.ts +3 -0
- package/colDef/gridSingleSelectOperators.js +52 -0
- package/colDef/gridStringColDef.js +3 -2
- package/colDef/gridStringOperators.d.ts +2 -0
- package/colDef/gridStringOperators.js +12 -0
- package/components/GridFooter.d.ts +4 -2
- package/components/GridFooter.js +11 -2
- package/components/GridRow.d.ts +4 -0
- package/components/GridRow.js +58 -28
- package/components/GridRowCount.d.ts +4 -1
- package/components/GridRowCount.js +1 -0
- package/components/GridScrollArea.js +3 -4
- package/components/GridSelectedRowCount.d.ts +4 -1
- package/components/GridSelectedRowCount.js +2 -1
- package/components/base/GridBody.js +1 -2
- package/components/base/GridOverlays.js +5 -5
- package/components/cell/GridActionsCell.d.ts +5 -1
- package/components/cell/GridActionsCell.js +179 -21
- package/components/cell/GridActionsCellItem.d.ts +66 -4
- package/components/cell/GridActionsCellItem.js +7 -5
- package/components/cell/GridCell.d.ts +1 -0
- package/components/cell/GridCell.js +36 -15
- package/components/cell/GridEditBooleanCell.d.ts +15 -3
- package/components/cell/GridEditBooleanCell.js +101 -6
- package/components/cell/GridEditDateCell.d.ts +16 -4
- package/components/cell/GridEditDateCell.js +99 -5
- package/components/cell/GridEditInputCell.d.ts +11 -5
- package/components/cell/GridEditInputCell.js +30 -6
- package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
- package/components/cell/GridEditSingleSelectCell.js +50 -18
- package/components/cell/index.d.ts +2 -0
- package/components/cell/index.js +2 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/components/columnHeaders/GridColumnHeaders.d.ts +2 -1
- package/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
- package/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/components/containers/GridFooterContainer.d.ts +8 -2
- package/components/containers/GridFooterContainer.js +11 -2
- package/components/containers/GridRootStyles.js +36 -1
- package/components/containers/GridToolbarContainer.d.ts +8 -2
- package/components/containers/GridToolbarContainer.js +12 -2
- package/components/menu/GridMenu.js +1 -0
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/GridPanelContent.d.ts +8 -1
- package/components/panel/GridPanelContent.js +13 -2
- package/components/panel/GridPanelFooter.d.ts +8 -1
- package/components/panel/GridPanelFooter.js +13 -2
- package/components/panel/GridPanelHeader.d.ts +8 -1
- package/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.d.ts +12 -2
- package/components/toolbar/GridToolbar.js +30 -7
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarExport.d.ts +5 -4
- package/components/toolbar/GridToolbarExport.js +15 -20
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
- package/components/toolbar/GridToolbarQuickFilter.js +88 -0
- package/components/toolbar/index.d.ts +3 -1
- package/components/toolbar/index.js +3 -2
- package/components/virtualization/GridVirtualScroller.d.ts +4 -1
- package/components/virtualization/GridVirtualScroller.js +2 -0
- package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
- package/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
- package/constants/defaultGridSlotsComponents.js +3 -2
- package/constants/gridClasses.d.ts +20 -0
- package/constants/gridClasses.js +1 -1
- package/constants/gridDetailPanelToggleField.d.ts +1 -0
- package/constants/gridDetailPanelToggleField.js +2 -0
- package/constants/localeTextConstants.js +8 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +39 -15
- package/hooks/core/pipeProcessing/index.d.ts +1 -0
- package/hooks/core/pipeProcessing/index.js +2 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/hooks/core/useGridApiInitialization.js +3 -3
- package/hooks/core/useGridErrorHandler.js +1 -2
- package/hooks/core/useGridStateInitialization.js +1 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
- package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
- package/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
- package/hooks/features/columns/useGridColumnSpanning.js +108 -0
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +30 -25
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +151 -42
- package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +145 -57
- package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/hooks/features/events/useGridEvents.js +17 -18
- package/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/hooks/features/export/useGridCsvExport.js +23 -16
- package/hooks/features/export/useGridPrintExport.js +22 -0
- package/hooks/features/export/utils.d.ts +3 -1
- package/hooks/features/export/utils.js +13 -0
- package/hooks/features/filter/gridFilterState.d.ts +1 -2
- package/hooks/features/filter/gridFilterState.js +3 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
- package/hooks/features/filter/gridFilterUtils.js +84 -2
- package/hooks/features/filter/useGridFilter.js +32 -15
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.js +48 -42
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -12
- package/hooks/features/pagination/useGridPage.js +3 -4
- package/hooks/features/pagination/useGridPageSize.js +2 -3
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/hooks/features/rows/gridRowsSelector.d.ts +2 -0
- package/hooks/features/rows/gridRowsSelector.js +2 -0
- package/hooks/features/rows/gridRowsState.d.ts +7 -7
- package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
- package/hooks/features/rows/gridRowsUtils.js +25 -1
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +121 -61
- package/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/hooks/features/scroll/useGridScroll.d.ts +2 -0
- package/hooks/features/scroll/useGridScroll.js +31 -4
- package/hooks/features/selection/useGridSelection.d.ts +1 -1
- package/hooks/features/selection/useGridSelection.js +15 -11
- package/hooks/features/sorting/useGridSorting.js +17 -18
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +68 -32
- package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
- package/hooks/utils/useGridApiEventHandler.js +22 -9
- package/hooks/utils/useGridNativeEventListener.js +1 -2
- package/hooks/utils/useGridSelector.js +1 -1
- package/index.d.ts +2 -0
- package/index.js +1 -1
- package/internals/index.d.ts +5 -1
- package/internals/index.js +6 -2
- package/legacy/DataGrid/DataGrid.js +36 -2
- package/legacy/DataGrid/useDataGridComponent.js +3 -1
- package/legacy/DataGrid/useDataGridProps.js +2 -1
- package/legacy/colDef/gridActionsColDef.js +2 -1
- package/legacy/colDef/gridBooleanColDef.js +2 -1
- package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/legacy/colDef/gridDateColDef.js +4 -2
- package/legacy/colDef/gridNumericColDef.js +3 -2
- package/legacy/colDef/gridNumericOperators.js +28 -18
- package/legacy/colDef/gridSingleSelectColDef.js +3 -2
- package/legacy/colDef/gridSingleSelectOperators.js +55 -6
- package/legacy/colDef/gridStringColDef.js +3 -2
- package/legacy/colDef/gridStringOperators.js +25 -14
- package/legacy/components/GridFooter.js +11 -2
- package/legacy/components/GridRow.js +56 -28
- package/legacy/components/GridRowCount.js +1 -0
- package/legacy/components/GridScrollArea.js +3 -4
- package/legacy/components/GridSelectedRowCount.js +2 -1
- package/legacy/components/base/GridBody.js +1 -2
- package/legacy/components/base/GridOverlays.js +5 -5
- package/legacy/components/cell/GridActionsCell.js +197 -27
- package/legacy/components/cell/GridActionsCellItem.js +7 -5
- package/legacy/components/cell/GridCell.js +37 -15
- package/legacy/components/cell/GridEditBooleanCell.js +132 -11
- package/legacy/components/cell/GridEditDateCell.js +148 -42
- package/legacy/components/cell/GridEditInputCell.js +62 -13
- package/legacy/components/cell/GridEditSingleSelectCell.js +65 -28
- package/legacy/components/cell/index.js +2 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -6
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/legacy/components/containers/GridFooterContainer.js +11 -2
- package/legacy/components/containers/GridRootStyles.js +26 -5
- package/legacy/components/containers/GridToolbarContainer.js +12 -2
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/GridPanelContent.js +13 -2
- package/legacy/components/panel/GridPanelFooter.js +13 -2
- package/legacy/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.js +31 -6
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/legacy/components/toolbar/GridToolbarExport.js +18 -19
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
- package/legacy/components/toolbar/index.js +3 -2
- package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/legacy/constants/defaultGridSlotsComponents.js +3 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/gridDetailPanelToggleField.js +2 -0
- package/legacy/constants/localeTextConstants.js +8 -1
- package/legacy/hooks/core/pipeProcessing/index.js +2 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/legacy/hooks/core/useGridApiInitialization.js +3 -3
- package/legacy/hooks/core/useGridErrorHandler.js +1 -2
- package/legacy/hooks/core/useGridStateInitialization.js +1 -2
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +94 -16
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +106 -0
- package/legacy/hooks/features/columns/useGridColumns.js +30 -25
- package/legacy/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +225 -89
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +157 -65
- package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
- package/legacy/hooks/features/events/useGridEvents.js +17 -18
- package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
- package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
- package/legacy/hooks/features/export/utils.js +14 -0
- package/legacy/hooks/features/filter/gridFilterState.js +3 -1
- package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
- package/legacy/hooks/features/filter/useGridFilter.js +32 -15
- package/legacy/hooks/features/focus/useGridFocus.js +50 -44
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -11
- package/legacy/hooks/features/pagination/useGridPage.js +3 -4
- package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/legacy/hooks/features/rows/gridRowsSelector.js +6 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
- package/legacy/hooks/features/rows/useGridRows.js +131 -61
- package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/legacy/hooks/features/scroll/useGridScroll.js +31 -4
- package/legacy/hooks/features/selection/useGridSelection.js +15 -11
- package/legacy/hooks/features/sorting/useGridSorting.js +12 -15
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +79 -42
- package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
- package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
- package/legacy/hooks/utils/useGridSelector.js +1 -1
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +6 -2
- package/legacy/locales/arSD.js +8 -1
- package/legacy/locales/bgBG.js +8 -1
- package/legacy/locales/csCZ.js +7 -0
- package/legacy/locales/daDK.js +8 -1
- package/legacy/locales/deDE.js +10 -3
- package/legacy/locales/elGR.js +7 -0
- package/legacy/locales/esES.js +7 -0
- package/legacy/locales/faIR.js +8 -1
- package/legacy/locales/fiFI.js +7 -0
- package/legacy/locales/frFR.js +7 -0
- package/legacy/locales/heIL.js +8 -1
- package/legacy/locales/huHU.js +127 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/locales/itIT.js +7 -0
- package/legacy/locales/jaJP.js +7 -0
- package/legacy/locales/koKR.js +7 -0
- package/legacy/locales/nlNL.js +7 -0
- package/legacy/locales/plPL.js +8 -1
- package/legacy/locales/ptBR.js +8 -1
- package/legacy/locales/ruRU.js +7 -0
- package/legacy/locales/skSK.js +7 -0
- package/legacy/locales/trTR.js +8 -1
- package/legacy/locales/ukUA.js +7 -0
- package/legacy/locales/viVN.js +7 -0
- package/legacy/locales/zhCN.js +7 -0
- package/legacy/models/api/gridColumnSpanning.js +1 -0
- package/legacy/models/events/gridEvents.js +10 -3
- package/legacy/models/gridColumnSpanning.js +1 -0
- package/legacy/models/index.js +4 -3
- package/legacy/utils/createSelector.js +18 -2
- package/legacy/utils/exportAs.js +1 -1
- package/locales/arSD.js +8 -1
- package/locales/bgBG.js +8 -1
- package/locales/csCZ.js +7 -0
- package/locales/daDK.js +8 -1
- package/locales/deDE.js +10 -3
- package/locales/elGR.js +7 -0
- package/locales/esES.js +7 -0
- package/locales/faIR.js +8 -1
- package/locales/fiFI.js +7 -0
- package/locales/frFR.js +7 -0
- package/locales/heIL.js +8 -1
- package/locales/huHU.d.ts +2 -0
- package/locales/huHU.js +115 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/itIT.js +7 -0
- package/locales/jaJP.js +7 -0
- package/locales/koKR.js +7 -0
- package/locales/nlNL.js +7 -0
- package/locales/plPL.js +8 -1
- package/locales/ptBR.js +8 -1
- package/locales/ruRU.js +7 -0
- package/locales/skSK.js +7 -0
- package/locales/trTR.js +8 -1
- package/locales/ukUA.js +7 -0
- package/locales/viVN.js +7 -0
- package/locales/zhCN.js +7 -0
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnSpanning.d.ts +28 -0
- package/models/api/gridColumnSpanning.js +1 -0
- package/models/api/gridCoreApi.d.ts +10 -0
- package/models/api/gridEditingApi.d.ts +72 -7
- package/models/api/gridFilterApi.d.ts +5 -0
- package/models/api/gridFocusApi.d.ts +1 -0
- package/models/api/gridLocaleTextApi.d.ts +5 -0
- package/models/api/gridRowApi.d.ts +34 -0
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +18 -0
- package/models/events/gridEventLookup.d.ts +296 -11
- package/models/events/gridEvents.d.ts +10 -258
- package/models/events/gridEvents.js +10 -3
- package/models/gridColumnSpanning.d.ts +12 -0
- package/models/gridColumnSpanning.js +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/gridExport.d.ts +29 -2
- package/models/gridFilterModel.d.ts +11 -0
- package/models/gridFilterOperator.d.ts +1 -1
- package/models/gridIconSlotsComponent.d.ts +5 -0
- package/models/gridStateCommunity.d.ts +0 -2
- package/models/index.d.ts +1 -1
- package/models/index.js +4 -3
- package/models/params/gridCellParams.d.ts +12 -2
- package/models/params/gridRowParams.d.ts +5 -0
- package/models/props/DataGridProps.d.ts +57 -29
- package/modern/DataGrid/DataGrid.js +36 -2
- package/modern/DataGrid/useDataGridComponent.js +3 -1
- package/modern/DataGrid/useDataGridProps.js +2 -1
- package/modern/colDef/gridActionsColDef.js +2 -1
- package/modern/colDef/gridBooleanColDef.js +2 -1
- package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/modern/colDef/gridDateColDef.js +4 -2
- package/modern/colDef/gridNumericColDef.js +3 -2
- package/modern/colDef/gridNumericOperators.js +11 -0
- package/modern/colDef/gridSingleSelectColDef.js +3 -2
- package/modern/colDef/gridSingleSelectOperators.js +52 -0
- package/modern/colDef/gridStringColDef.js +3 -2
- package/modern/colDef/gridStringOperators.js +12 -0
- package/modern/components/GridFooter.js +11 -2
- package/modern/components/GridRow.js +56 -26
- package/modern/components/GridRowCount.js +1 -0
- package/modern/components/GridScrollArea.js +3 -4
- package/modern/components/GridSelectedRowCount.js +2 -1
- package/modern/components/base/GridBody.js +1 -2
- package/modern/components/base/GridOverlays.js +5 -5
- package/modern/components/cell/GridActionsCell.js +179 -21
- package/modern/components/cell/GridActionsCellItem.js +7 -5
- package/modern/components/cell/GridCell.js +36 -15
- package/modern/components/cell/GridEditBooleanCell.js +101 -6
- package/modern/components/cell/GridEditDateCell.js +99 -5
- package/modern/components/cell/GridEditInputCell.js +30 -6
- package/modern/components/cell/GridEditSingleSelectCell.js +48 -16
- package/modern/components/cell/index.js +2 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
- package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/modern/components/containers/GridFooterContainer.js +11 -2
- package/modern/components/containers/GridRootStyles.js +36 -1
- package/modern/components/containers/GridToolbarContainer.js +12 -2
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/GridPanelContent.js +13 -2
- package/modern/components/panel/GridPanelFooter.js +13 -2
- package/modern/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.js +30 -7
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/toolbar/GridToolbarExport.js +15 -20
- package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
- package/modern/components/toolbar/index.js +3 -2
- package/modern/components/virtualization/GridVirtualScroller.js +2 -0
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/modern/constants/defaultGridSlotsComponents.js +3 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/gridDetailPanelToggleField.js +2 -0
- package/modern/constants/localeTextConstants.js +8 -1
- package/modern/hooks/core/pipeProcessing/index.js +2 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/modern/hooks/core/useGridApiInitialization.js +3 -3
- package/modern/hooks/core/useGridErrorHandler.js +1 -2
- package/modern/hooks/core/useGridStateInitialization.js +1 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/modern/hooks/features/columns/useGridColumnSpanning.js +106 -0
- package/modern/hooks/features/columns/useGridColumns.js +30 -25
- package/modern/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +149 -42
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +143 -57
- package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/modern/hooks/features/events/useGridEvents.js +17 -18
- package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/modern/hooks/features/export/useGridCsvExport.js +21 -16
- package/modern/hooks/features/export/useGridPrintExport.js +20 -0
- package/modern/hooks/features/export/utils.js +13 -0
- package/modern/hooks/features/filter/gridFilterState.js +3 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
- package/modern/hooks/features/filter/useGridFilter.js +32 -15
- package/modern/hooks/features/focus/useGridFocus.js +48 -42
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +41 -12
- package/modern/hooks/features/pagination/useGridPage.js +3 -4
- package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/modern/hooks/features/rows/gridRowsSelector.js +2 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
- package/modern/hooks/features/rows/useGridRows.js +121 -61
- package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/modern/hooks/features/scroll/useGridScroll.js +29 -4
- package/modern/hooks/features/selection/useGridSelection.js +15 -11
- package/modern/hooks/features/sorting/useGridSorting.js +17 -18
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +68 -28
- package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
- package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
- package/modern/hooks/utils/useGridSelector.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/index.js +6 -2
- package/modern/locales/arSD.js +8 -1
- package/modern/locales/bgBG.js +8 -1
- package/modern/locales/csCZ.js +7 -0
- package/modern/locales/daDK.js +8 -1
- package/modern/locales/deDE.js +10 -3
- package/modern/locales/elGR.js +7 -0
- package/modern/locales/esES.js +7 -0
- package/modern/locales/faIR.js +8 -1
- package/modern/locales/fiFI.js +7 -0
- package/modern/locales/frFR.js +7 -0
- package/modern/locales/heIL.js +8 -1
- package/modern/locales/huHU.js +115 -0
- package/modern/locales/index.js +1 -0
- package/modern/locales/itIT.js +7 -0
- package/modern/locales/jaJP.js +7 -0
- package/modern/locales/koKR.js +7 -0
- package/modern/locales/nlNL.js +7 -0
- package/modern/locales/plPL.js +8 -1
- package/modern/locales/ptBR.js +8 -1
- package/modern/locales/ruRU.js +7 -0
- package/modern/locales/skSK.js +7 -0
- package/modern/locales/trTR.js +8 -1
- package/modern/locales/ukUA.js +7 -0
- package/modern/locales/viVN.js +7 -0
- package/modern/locales/zhCN.js +7 -0
- package/modern/models/api/gridColumnSpanning.js +1 -0
- package/modern/models/events/gridEvents.js +10 -3
- package/modern/models/gridColumnSpanning.js +1 -0
- package/modern/models/index.js +4 -3
- package/modern/utils/createSelector.js +20 -2
- package/modern/utils/exportAs.js +1 -1
- package/node/DataGrid/DataGrid.js +36 -2
- package/node/DataGrid/useDataGridComponent.js +4 -1
- package/node/DataGrid/useDataGridProps.js +2 -1
- package/node/colDef/gridActionsColDef.js +2 -1
- package/node/colDef/gridBooleanColDef.js +2 -1
- package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/node/colDef/gridDateColDef.js +4 -2
- package/node/colDef/gridNumericColDef.js +2 -1
- package/node/colDef/gridNumericOperators.js +15 -1
- package/node/colDef/gridSingleSelectColDef.js +2 -1
- package/node/colDef/gridSingleSelectOperators.js +56 -1
- package/node/colDef/gridStringColDef.js +2 -1
- package/node/colDef/gridStringOperators.js +16 -1
- package/node/components/GridFooter.js +10 -1
- package/node/components/GridRow.js +59 -29
- package/node/components/GridRowCount.js +1 -0
- package/node/components/GridScrollArea.js +3 -5
- package/node/components/GridSelectedRowCount.js +2 -1
- package/node/components/base/GridBody.js +1 -3
- package/node/components/base/GridOverlays.js +4 -5
- package/node/components/cell/GridActionsCell.js +181 -21
- package/node/components/cell/GridActionsCellItem.js +7 -4
- package/node/components/cell/GridCell.js +35 -14
- package/node/components/cell/GridEditBooleanCell.js +100 -5
- package/node/components/cell/GridEditDateCell.js +98 -4
- package/node/components/cell/GridEditInputCell.js +30 -6
- package/node/components/cell/GridEditSingleSelectCell.js +50 -18
- package/node/components/cell/index.js +26 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -24
- package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -7
- package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
- package/node/components/containers/GridFooterContainer.js +10 -1
- package/node/components/containers/GridRootStyles.js +36 -1
- package/node/components/containers/GridToolbarContainer.js +11 -1
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/GridPanelContent.js +11 -1
- package/node/components/panel/GridPanelFooter.js +11 -1
- package/node/components/panel/GridPanelHeader.js +11 -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/GridToolbar.js +32 -7
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/toolbar/GridToolbarExport.js +14 -19
- package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
- package/node/components/toolbar/index.js +42 -11
- package/node/components/virtualization/GridVirtualScroller.js +2 -0
- package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/gridDetailPanelToggleField.js +9 -0
- package/node/constants/localeTextConstants.js +8 -1
- package/node/hooks/core/pipeProcessing/index.js +13 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
- package/node/hooks/core/useGridApiInitialization.js +3 -4
- package/node/hooks/core/useGridErrorHandler.js +1 -3
- package/node/hooks/core/useGridStateInitialization.js +1 -3
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +85 -17
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
- package/node/hooks/features/columns/useGridColumnSpanning.js +128 -0
- package/node/hooks/features/columns/useGridColumns.js +29 -25
- package/node/hooks/features/dimensions/useGridDimensions.js +10 -12
- package/node/hooks/features/editRows/useGridCellEditing.new.js +151 -42
- package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
- package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
- package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
- package/node/hooks/features/editRows/useGridRowEditing.new.js +143 -57
- package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
- package/node/hooks/features/events/useGridEvents.js +17 -19
- package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/node/hooks/features/export/useGridCsvExport.js +26 -17
- package/node/hooks/features/export/useGridPrintExport.js +25 -0
- package/node/hooks/features/export/utils.js +19 -2
- package/node/hooks/features/filter/gridFilterState.js +3 -1
- package/node/hooks/features/filter/gridFilterUtils.js +92 -3
- package/node/hooks/features/filter/useGridFilter.js +33 -16
- package/node/hooks/features/focus/useGridFocus.js +48 -43
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +44 -13
- package/node/hooks/features/pagination/useGridPage.js +3 -5
- package/node/hooks/features/pagination/useGridPageSize.js +2 -4
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
- package/node/hooks/features/rows/gridRowsSelector.js +5 -1
- package/node/hooks/features/rows/gridRowsUtils.js +29 -1
- package/node/hooks/features/rows/useGridRows.js +122 -61
- package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/node/hooks/features/scroll/useGridScroll.js +32 -3
- package/node/hooks/features/selection/useGridSelection.js +16 -12
- package/node/hooks/features/sorting/useGridSorting.js +17 -19
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +73 -33
- package/node/hooks/utils/useGridApiEventHandler.js +22 -10
- package/node/hooks/utils/useGridNativeEventListener.js +1 -3
- package/node/hooks/utils/useGridSelector.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/index.js +47 -3
- package/node/locales/arSD.js +8 -1
- package/node/locales/bgBG.js +8 -1
- package/node/locales/csCZ.js +7 -0
- package/node/locales/daDK.js +8 -1
- package/node/locales/deDE.js +10 -3
- package/node/locales/elGR.js +7 -0
- package/node/locales/esES.js +7 -0
- package/node/locales/faIR.js +8 -1
- package/node/locales/fiFI.js +7 -0
- package/node/locales/frFR.js +7 -0
- package/node/locales/heIL.js +8 -1
- package/node/locales/huHU.js +125 -0
- package/node/locales/index.js +13 -0
- package/node/locales/itIT.js +7 -0
- package/node/locales/jaJP.js +7 -0
- package/node/locales/koKR.js +7 -0
- package/node/locales/nlNL.js +7 -0
- package/node/locales/plPL.js +8 -1
- package/node/locales/ptBR.js +8 -1
- package/node/locales/ruRU.js +7 -0
- package/node/locales/skSK.js +7 -0
- package/node/locales/trTR.js +8 -1
- package/node/locales/ukUA.js +7 -0
- package/node/locales/viVN.js +7 -0
- package/node/locales/zhCN.js +7 -0
- package/node/models/api/gridColumnSpanning.js +5 -0
- package/node/models/events/gridEvents.js +10 -3
- package/node/models/gridColumnSpanning.js +5 -0
- package/node/models/index.js +0 -13
- package/node/utils/createSelector.js +25 -4
- package/node/utils/exportAs.js +1 -1
- package/package.json +4 -4
- package/utils/createSelector.d.ts +2 -1
- package/utils/createSelector.js +20 -2
- package/utils/domUtils.d.ts +2 -2
- package/utils/exportAs.d.ts +2 -2
- package/utils/exportAs.js +1 -1
|
@@ -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,10 +64,11 @@ 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;
|
|
@@ -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.pipeProcessorRegister, handlepipeProcessorRegister);
|
|
125
|
+
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
133
126
|
var rowsMetaApi = {
|
|
134
127
|
unstable_getRowHeight: getTargetRowHeight,
|
|
135
128
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
|
|
|
3
3
|
var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
|
|
4
4
|
var ids = _ref.ids,
|
|
5
5
|
idRowsLookup = _ref.idRowsLookup,
|
|
6
|
+
idToIdLookup = _ref.idToIdLookup,
|
|
6
7
|
previousTree = _ref.previousTree;
|
|
7
8
|
var tree = {};
|
|
8
9
|
|
|
@@ -27,6 +28,7 @@ var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
|
|
|
27
28
|
tree: tree,
|
|
28
29
|
treeDepth: 1,
|
|
29
30
|
idRowsLookup: idRowsLookup,
|
|
31
|
+
idToIdLookup: idToIdLookup,
|
|
30
32
|
ids: ids
|
|
31
33
|
};
|
|
32
34
|
};
|
|
@@ -2,10 +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
|
-
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
|
+
import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
9
11
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
10
12
|
|
|
11
13
|
function scrollIntoView(dimensions) {
|
|
@@ -13,7 +15,12 @@ function scrollIntoView(dimensions) {
|
|
|
13
15
|
scrollTop = dimensions.scrollTop,
|
|
14
16
|
offsetHeight = dimensions.offsetHeight,
|
|
15
17
|
offsetTop = dimensions.offsetTop;
|
|
16
|
-
var elementBottom = offsetTop + offsetHeight;
|
|
18
|
+
var elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
|
|
19
|
+
// See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
|
|
20
|
+
|
|
21
|
+
if (offsetHeight > clientHeight) {
|
|
22
|
+
return offsetTop;
|
|
23
|
+
}
|
|
17
24
|
|
|
18
25
|
if (elementBottom - clientHeight > scrollTop) {
|
|
19
26
|
return elementBottom - clientHeight;
|
|
@@ -30,6 +37,8 @@ function scrollIntoView(dimensions) {
|
|
|
30
37
|
* @requires useGridColumns (state) - can be after, async only
|
|
31
38
|
* @requires useGridRows (state) - can be after, async only
|
|
32
39
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
40
|
+
* @requires useGridFilter (state)
|
|
41
|
+
* @requires useGridColumnSpanning (method)
|
|
33
42
|
*/
|
|
34
43
|
|
|
35
44
|
|
|
@@ -37,6 +46,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
37
46
|
var logger = useGridLogger(apiRef, 'useGridScroll');
|
|
38
47
|
var colRef = apiRef.current.columnHeadersElementRef;
|
|
39
48
|
var windowRef = apiRef.current.windowRef;
|
|
49
|
+
var visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
|
|
40
50
|
var scrollToIndexes = React.useCallback(function (params) {
|
|
41
51
|
var totalRowCount = gridRowCountSelector(apiRef);
|
|
42
52
|
var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
@@ -51,10 +61,27 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
51
61
|
|
|
52
62
|
if (params.colIndex != null) {
|
|
53
63
|
var columnPositions = gridColumnPositionsSelector(apiRef);
|
|
64
|
+
var cellWidth;
|
|
65
|
+
|
|
66
|
+
if (typeof params.rowIndex !== 'undefined') {
|
|
67
|
+
var _visibleSortedRows$pa;
|
|
68
|
+
|
|
69
|
+
var rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
|
|
70
|
+
var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
|
|
71
|
+
|
|
72
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
73
|
+
cellWidth = cellColSpanInfo.cellProps.width;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (typeof cellWidth === 'undefined') {
|
|
78
|
+
cellWidth = visibleColumns[params.colIndex].computedWidth;
|
|
79
|
+
}
|
|
80
|
+
|
|
54
81
|
scrollCoordinates.left = scrollIntoView({
|
|
55
82
|
clientHeight: windowRef.current.clientWidth,
|
|
56
83
|
scrollTop: windowRef.current.scrollLeft,
|
|
57
|
-
offsetHeight:
|
|
84
|
+
offsetHeight: cellWidth,
|
|
58
85
|
offsetTop: columnPositions[params.colIndex]
|
|
59
86
|
});
|
|
60
87
|
}
|
|
@@ -81,7 +108,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
|
|
|
81
108
|
}
|
|
82
109
|
|
|
83
110
|
return false;
|
|
84
|
-
}, [logger, apiRef, windowRef, props.pagination]);
|
|
111
|
+
}, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
|
|
85
112
|
var scroll = React.useCallback(function (params) {
|
|
86
113
|
if (windowRef.current && params.left != null && colRef.current) {
|
|
87
114
|
colRef.current.scrollLeft = params.left;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
6
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
@@ -14,6 +13,7 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../..
|
|
|
14
13
|
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
15
14
|
import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
|
|
16
15
|
import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
16
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
17
17
|
|
|
18
18
|
var getSelectionModelPropValue = function getSelectionModelPropValue(selectionModelProp, prevSelectionModel) {
|
|
19
19
|
if (selectionModelProp == null) {
|
|
@@ -56,7 +56,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
56
56
|
propModel: propSelectionModel,
|
|
57
57
|
propOnChange: props.onSelectionModelChange,
|
|
58
58
|
stateSelector: gridSelectionStateSelector,
|
|
59
|
-
changeEvent:
|
|
59
|
+
changeEvent: 'selectionChange'
|
|
60
60
|
});
|
|
61
61
|
var checkboxSelection = props.checkboxSelection,
|
|
62
62
|
disableMultipleSelection = props.disableMultipleSelection,
|
|
@@ -222,6 +222,10 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
222
222
|
*/
|
|
223
223
|
|
|
224
224
|
var removeOutdatedSelection = React.useCallback(function () {
|
|
225
|
+
if (props.keepNonExistentRowsSelected) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
|
|
225
229
|
var currentSelection = gridSelectionStateSelector(apiRef.current.state);
|
|
226
230
|
var rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
|
|
227
231
|
|
|
@@ -238,12 +242,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
238
242
|
if (hasChanged) {
|
|
239
243
|
apiRef.current.setSelectionModel(Object.values(selectionLookup));
|
|
240
244
|
}
|
|
241
|
-
}, [apiRef]);
|
|
245
|
+
}, [apiRef, props.keepNonExistentRowsSelected]);
|
|
242
246
|
var handleSingleRowSelection = React.useCallback(function (id, event) {
|
|
243
247
|
var hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
|
|
244
248
|
// - it is a checkboxSelection
|
|
245
249
|
// - it is a keyboard selection
|
|
246
|
-
// -
|
|
250
|
+
// - Ctrl is pressed
|
|
247
251
|
|
|
248
252
|
var isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
|
|
249
253
|
var resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
|
|
@@ -265,7 +269,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
265
269
|
return;
|
|
266
270
|
}
|
|
267
271
|
|
|
268
|
-
if (params.field ===
|
|
272
|
+
if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
|
|
269
273
|
// click to open the detail panel should not select the row
|
|
270
274
|
return;
|
|
271
275
|
}
|
|
@@ -375,12 +379,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
375
379
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
376
380
|
}
|
|
377
381
|
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
378
|
-
useGridApiEventHandler(apiRef,
|
|
379
|
-
useGridApiEventHandler(apiRef,
|
|
380
|
-
useGridApiEventHandler(apiRef,
|
|
381
|
-
useGridApiEventHandler(apiRef,
|
|
382
|
-
useGridApiEventHandler(apiRef,
|
|
383
|
-
useGridApiEventHandler(apiRef,
|
|
382
|
+
useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
|
|
383
|
+
useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
|
|
384
|
+
useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
|
|
385
|
+
useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
|
|
386
|
+
useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
|
|
387
|
+
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
384
388
|
/**
|
|
385
389
|
* EFFECTS
|
|
386
390
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
|
|
6
5
|
import { isEnterKey } from '../../../utils/keyboardUtils';
|
|
7
6
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
@@ -37,7 +36,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
37
36
|
propModel: props.sortModel,
|
|
38
37
|
propOnChange: props.onSortModelChange,
|
|
39
38
|
stateSelector: gridSortModelSelector,
|
|
40
|
-
changeEvent:
|
|
39
|
+
changeEvent: 'sortModelChange'
|
|
41
40
|
});
|
|
42
41
|
var upsertSortModel = React.useCallback(function (field, sortItem) {
|
|
43
42
|
var sortModel = gridSortModelSelector(apiRef);
|
|
@@ -86,19 +85,16 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
86
85
|
*/
|
|
87
86
|
|
|
88
87
|
var applySorting = React.useCallback(function () {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
apiRef.current.setState(function (state) {
|
|
89
|
+
if (props.sortingMode === GridFeatureModeConstant.server) {
|
|
90
|
+
logger.debug('Skipping sorting rows as sortingMode = server');
|
|
92
91
|
return _extends({}, state, {
|
|
93
92
|
sorting: _extends({}, state.sorting, {
|
|
94
93
|
sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
|
|
95
94
|
})
|
|
96
95
|
});
|
|
97
|
-
}
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
96
|
+
}
|
|
100
97
|
|
|
101
|
-
apiRef.current.setState(function (state) {
|
|
102
98
|
var sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
|
|
103
99
|
var sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
|
|
104
100
|
var sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
|
|
@@ -110,6 +106,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
110
106
|
})
|
|
111
107
|
});
|
|
112
108
|
});
|
|
109
|
+
apiRef.current.publishEvent('sortedRowsSet');
|
|
113
110
|
apiRef.current.forceUpdate();
|
|
114
111
|
}, [apiRef, logger, props.sortingMode]);
|
|
115
112
|
var setSortModel = React.useCallback(function (model) {
|
|
@@ -221,7 +218,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
221
218
|
var handleColumnHeaderKeyDown = React.useCallback(function (_ref3, event) {
|
|
222
219
|
var colDef = _ref3.colDef;
|
|
223
220
|
|
|
224
|
-
//
|
|
221
|
+
// Ctrl + Enter opens the column menu
|
|
225
222
|
if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
|
|
226
223
|
sortColumn(colDef, undefined, event.shiftKey);
|
|
227
224
|
}
|
|
@@ -246,11 +243,11 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
246
243
|
apiRef.current.applySorting();
|
|
247
244
|
}
|
|
248
245
|
}, [apiRef]);
|
|
249
|
-
useGridApiEventHandler(apiRef,
|
|
250
|
-
useGridApiEventHandler(apiRef,
|
|
251
|
-
useGridApiEventHandler(apiRef,
|
|
252
|
-
useGridApiEventHandler(apiRef,
|
|
253
|
-
useGridApiEventHandler(apiRef,
|
|
246
|
+
useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
|
|
247
|
+
useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
248
|
+
useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
|
|
249
|
+
useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
|
|
250
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
254
251
|
/**
|
|
255
252
|
* 1ST RENDER
|
|
256
253
|
*/
|
|
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
4
|
var _excluded = ["style"];
|
|
5
5
|
import * as React from 'react';
|
|
6
|
+
import * as ReactDOM from 'react-dom';
|
|
6
7
|
import { useForkRef } from '@mui/material/utils';
|
|
7
8
|
import { useGridApiContext } from '../../utils/useGridApiContext';
|
|
8
9
|
import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
@@ -12,13 +13,13 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
|
|
|
12
13
|
import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
|
|
13
14
|
import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
|
|
14
15
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
15
|
-
import { GridEvents } from '../../../models/events';
|
|
16
16
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
17
17
|
import { clamp } from '../../../utils/utils';
|
|
18
18
|
import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
|
|
19
19
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
20
|
+
import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
|
|
21
|
+
|
|
20
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
-
// Uses binary search to avoid looping through all possible positions
|
|
22
23
|
export function getIndexFromScroll(offset, positions) {
|
|
23
24
|
var sliceStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
24
25
|
var sliceEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : positions.length;
|
|
@@ -35,9 +36,15 @@ export function getIndexFromScroll(offset, positions) {
|
|
|
35
36
|
var itemOffset = positions[pivot];
|
|
36
37
|
return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
|
|
37
38
|
}
|
|
39
|
+
export var getRenderableIndexes = function getRenderableIndexes(_ref) {
|
|
40
|
+
var firstIndex = _ref.firstIndex,
|
|
41
|
+
lastIndex = _ref.lastIndex,
|
|
42
|
+
buffer = _ref.buffer,
|
|
43
|
+
minFirstIndex = _ref.minFirstIndex,
|
|
44
|
+
maxLastIndex = _ref.maxLastIndex;
|
|
45
|
+
return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
|
|
46
|
+
};
|
|
38
47
|
export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
39
|
-
var _currentPage$range2;
|
|
40
|
-
|
|
41
48
|
var apiRef = useGridApiContext();
|
|
42
49
|
var rootProps = useGridRootProps();
|
|
43
50
|
var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
@@ -89,9 +96,9 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
89
96
|
};
|
|
90
97
|
}
|
|
91
98
|
|
|
92
|
-
var
|
|
93
|
-
top =
|
|
94
|
-
left =
|
|
99
|
+
var _ref2 = scrollPosition.current,
|
|
100
|
+
top = _ref2.top,
|
|
101
|
+
left = _ref2.left;
|
|
95
102
|
var firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
|
|
96
103
|
var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
|
|
97
104
|
var firstColumnIndex = getIndexFromScroll(left, columnPositions);
|
|
@@ -120,29 +127,18 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
120
127
|
setContainerWidth(rootRef.current.clientWidth);
|
|
121
128
|
}
|
|
122
129
|
}, []);
|
|
123
|
-
useGridApiEventHandler(apiRef,
|
|
124
|
-
|
|
125
|
-
var getRenderableIndexes = function getRenderableIndexes(_ref2) {
|
|
126
|
-
var firstIndex = _ref2.firstIndex,
|
|
127
|
-
lastIndex = _ref2.lastIndex,
|
|
128
|
-
buffer = _ref2.buffer,
|
|
129
|
-
minFirstIndex = _ref2.minFirstIndex,
|
|
130
|
-
maxLastIndex = _ref2.maxLastIndex;
|
|
131
|
-
return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
|
|
132
|
-
};
|
|
133
|
-
|
|
130
|
+
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
134
131
|
var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
|
|
135
|
-
var _currentPage$range;
|
|
136
|
-
|
|
137
132
|
var _getRenderableIndexes = getRenderableIndexes({
|
|
138
133
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
139
134
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
140
135
|
minFirstIndex: 0,
|
|
141
|
-
maxLastIndex:
|
|
136
|
+
maxLastIndex: currentPage.rows.length,
|
|
142
137
|
buffer: rootProps.rowBuffer
|
|
143
138
|
}),
|
|
144
|
-
_getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes,
|
|
145
|
-
firstRowToRender = _getRenderableIndexes2[0]
|
|
139
|
+
_getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
|
|
140
|
+
firstRowToRender = _getRenderableIndexes2[0],
|
|
141
|
+
lastRowToRender = _getRenderableIndexes2[1];
|
|
146
142
|
|
|
147
143
|
var _getRenderableIndexes3 = getRenderableIndexes({
|
|
148
144
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
@@ -152,8 +148,15 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
152
148
|
buffer: rootProps.columnBuffer
|
|
153
149
|
}),
|
|
154
150
|
_getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 1),
|
|
155
|
-
|
|
156
|
-
|
|
151
|
+
initialFirstColumnToRender = _getRenderableIndexes4[0];
|
|
152
|
+
|
|
153
|
+
var firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
154
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
155
|
+
apiRef: apiRef,
|
|
156
|
+
firstRowToRender: firstRowToRender,
|
|
157
|
+
lastRowToRender: lastRowToRender,
|
|
158
|
+
visibleRows: currentPage.rows
|
|
159
|
+
});
|
|
157
160
|
var top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
|
|
158
161
|
var left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
|
|
159
162
|
|
|
@@ -165,19 +168,22 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
165
168
|
left: left
|
|
166
169
|
});
|
|
167
170
|
}
|
|
168
|
-
}, [apiRef,
|
|
171
|
+
}, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
|
|
172
|
+
React.useLayoutEffect(function () {
|
|
173
|
+
if (renderContext) {
|
|
174
|
+
updateRenderZonePosition(renderContext);
|
|
175
|
+
}
|
|
176
|
+
}, [renderContext, updateRenderZonePosition]);
|
|
169
177
|
var updateRenderContext = React.useCallback(function (nextRenderContext) {
|
|
170
178
|
setRenderContext(nextRenderContext);
|
|
171
|
-
updateRenderZonePosition(nextRenderContext);
|
|
172
179
|
prevRenderContext.current = nextRenderContext;
|
|
173
|
-
}, [setRenderContext, prevRenderContext
|
|
180
|
+
}, [setRenderContext, prevRenderContext]);
|
|
174
181
|
React.useEffect(function () {
|
|
175
182
|
if (containerWidth == null) {
|
|
176
183
|
return;
|
|
177
184
|
}
|
|
178
185
|
|
|
179
186
|
var initialRenderContext = computeRenderContext();
|
|
180
|
-
prevRenderContext.current = initialRenderContext;
|
|
181
187
|
updateRenderContext(initialRenderContext);
|
|
182
188
|
var _ref3 = scrollPosition.current,
|
|
183
189
|
top = _ref3.top,
|
|
@@ -187,7 +193,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
187
193
|
left: left,
|
|
188
194
|
renderContext: initialRenderContext
|
|
189
195
|
};
|
|
190
|
-
apiRef.current.publishEvent(
|
|
196
|
+
apiRef.current.publishEvent('rowsScroll', params);
|
|
191
197
|
}, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
|
|
192
198
|
|
|
193
199
|
var handleScroll = function handleScroll(event) {
|
|
@@ -209,18 +215,29 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
209
215
|
var bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
|
|
210
216
|
var shouldSetState = topRowsScrolledSincePreviousRender >= rootProps.rowThreshold || bottomRowsScrolledSincePreviousRender >= rootProps.rowThreshold || topColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || bottomColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || prevTotalWidth.current !== columnsTotalWidth; // TODO v6: rename event to a wider name, it's not only fired for row scrolling
|
|
211
217
|
|
|
212
|
-
apiRef.current.publishEvent(
|
|
218
|
+
apiRef.current.publishEvent('rowsScroll', {
|
|
213
219
|
top: scrollTop,
|
|
214
220
|
left: scrollLeft,
|
|
215
221
|
renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
|
|
216
|
-
});
|
|
222
|
+
}, event);
|
|
217
223
|
|
|
218
224
|
if (shouldSetState) {
|
|
219
|
-
|
|
225
|
+
// Prevents batching render context changes
|
|
226
|
+
ReactDOM.flushSync(function () {
|
|
227
|
+
updateRenderContext(nextRenderContext);
|
|
228
|
+
});
|
|
220
229
|
prevTotalWidth.current = columnsTotalWidth;
|
|
221
230
|
}
|
|
222
231
|
};
|
|
223
232
|
|
|
233
|
+
var handleWheel = function handleWheel(event) {
|
|
234
|
+
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
var handleTouchMove = function handleTouchMove(event) {
|
|
238
|
+
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
239
|
+
};
|
|
240
|
+
|
|
224
241
|
var getRows = function getRows() {
|
|
225
242
|
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
226
243
|
renderContext: renderContext
|
|
@@ -251,6 +268,18 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
251
268
|
firstRowToRender = _getRenderableIndexes6[0],
|
|
252
269
|
lastRowToRender = _getRenderableIndexes6[1];
|
|
253
270
|
|
|
271
|
+
var renderedRows = [];
|
|
272
|
+
|
|
273
|
+
for (var i = firstRowToRender; i < lastRowToRender; i += 1) {
|
|
274
|
+
var row = currentPage.rows[i];
|
|
275
|
+
renderedRows.push(row);
|
|
276
|
+
apiRef.current.unstable_calculateColSpan({
|
|
277
|
+
rowId: row.id,
|
|
278
|
+
minFirstColumn: minFirstColumn,
|
|
279
|
+
maxLastColumn: maxLastColumn
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
254
283
|
var _getRenderableIndexes7 = getRenderableIndexes({
|
|
255
284
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
256
285
|
lastIndex: nextRenderContext.lastColumnIndex,
|
|
@@ -259,20 +288,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
259
288
|
buffer: columnBuffer
|
|
260
289
|
}),
|
|
261
290
|
_getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
|
|
262
|
-
|
|
291
|
+
initialFirstColumnToRender = _getRenderableIndexes8[0],
|
|
263
292
|
lastColumnToRender = _getRenderableIndexes8[1];
|
|
264
293
|
|
|
265
|
-
var
|
|
294
|
+
var firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
295
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
296
|
+
apiRef: apiRef,
|
|
297
|
+
firstRowToRender: firstRowToRender,
|
|
298
|
+
lastRowToRender: lastRowToRender,
|
|
299
|
+
visibleRows: currentPage.rows
|
|
300
|
+
});
|
|
266
301
|
var renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
267
302
|
var rows = [];
|
|
268
303
|
|
|
269
|
-
for (var
|
|
304
|
+
for (var _i = 0; _i < renderedRows.length; _i += 1) {
|
|
270
305
|
var _rootProps$components;
|
|
271
306
|
|
|
272
|
-
var _renderedRows$
|
|
273
|
-
_id = _renderedRows$
|
|
274
|
-
_model = _renderedRows$
|
|
275
|
-
var lastVisibleRowIndex = firstRowToRender +
|
|
307
|
+
var _renderedRows$_i = renderedRows[_i],
|
|
308
|
+
_id = _renderedRows$_i.id,
|
|
309
|
+
_model = _renderedRows$_i.model;
|
|
310
|
+
var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
|
|
276
311
|
var targetRowHeight = apiRef.current.unstable_getRowHeight(_id);
|
|
277
312
|
var isSelected = void 0;
|
|
278
313
|
|
|
@@ -299,7 +334,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
299
334
|
firstColumnToRender: firstColumnToRender,
|
|
300
335
|
lastColumnToRender: lastColumnToRender,
|
|
301
336
|
selected: isSelected,
|
|
302
|
-
index: currentPage.range.firstRowIndex + firstRowToRender +
|
|
337
|
+
index: currentPage.range.firstRowIndex + firstRowToRender + _i,
|
|
303
338
|
containerWidth: availableSpace,
|
|
304
339
|
isLastVisible: lastVisibleRowIndex
|
|
305
340
|
}, typeof getRowProps === 'function' ? getRowProps(_id, _model) : {}, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.row), _id));
|
|
@@ -333,7 +368,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
333
368
|
return size;
|
|
334
369
|
}, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
|
|
335
370
|
React.useEffect(function () {
|
|
336
|
-
apiRef.current.publishEvent(
|
|
371
|
+
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
337
372
|
}, [apiRef, contentSize]);
|
|
338
373
|
|
|
339
374
|
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
@@ -364,6 +399,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
364
399
|
return _extends({
|
|
365
400
|
ref: handleRef,
|
|
366
401
|
onScroll: handleScroll,
|
|
402
|
+
onWheel: handleWheel,
|
|
403
|
+
onTouchMove: handleTouchMove,
|
|
367
404
|
style: _extends({}, style, rootStyle)
|
|
368
405
|
}, other);
|
|
369
406
|
},
|
|
@@ -9,22 +9,27 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
|
|
|
9
9
|
* Signal to the underlying logic what version of the public component API
|
|
10
10
|
* of the data grid is exposed.
|
|
11
11
|
*/
|
|
12
|
-
var GridSignature;
|
|
12
|
+
var GridSignature;
|
|
13
13
|
|
|
14
14
|
(function (GridSignature) {
|
|
15
15
|
GridSignature["DataGrid"] = "DataGrid";
|
|
16
16
|
GridSignature["DataGridPro"] = "DataGridPro";
|
|
17
17
|
})(GridSignature || (GridSignature = {}));
|
|
18
18
|
|
|
19
|
+
// We use class to make it easier to detect in heap snapshots by name
|
|
19
20
|
var ObjectToBeRetainedByReact = /*#__PURE__*/_createClass(function ObjectToBeRetainedByReact() {
|
|
20
21
|
_classCallCheck(this, ObjectToBeRetainedByReact);
|
|
21
22
|
}); // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
|
|
22
23
|
// Check https://github.com/facebook/react/issues/15317 to get more information
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
export function createUseGridApiEventHandler(
|
|
26
|
+
export function createUseGridApiEventHandler(registryContainer) {
|
|
26
27
|
var cleanupTokensCounter = 0;
|
|
27
28
|
return function useGridApiEventHandler(apiRef, eventName, handler, options) {
|
|
29
|
+
if (registryContainer.registry === null) {
|
|
30
|
+
registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
|
|
31
|
+
}
|
|
32
|
+
|
|
28
33
|
var _React$useState = React.useState(new ObjectToBeRetainedByReact()),
|
|
29
34
|
_React$useState2 = _slicedToArray(_React$useState, 1),
|
|
30
35
|
objectRetainedByReact = _React$useState2[0];
|
|
@@ -48,7 +53,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
48
53
|
cleanupTokenRef.current = {
|
|
49
54
|
cleanupToken: cleanupTokensCounter
|
|
50
55
|
};
|
|
51
|
-
registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
56
|
+
registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
52
57
|
function () {
|
|
53
58
|
var _subscription$current;
|
|
54
59
|
|
|
@@ -61,7 +66,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
61
66
|
subscription.current = null;
|
|
62
67
|
|
|
63
68
|
if (cleanupTokenRef.current) {
|
|
64
|
-
registry.unregister(cleanupTokenRef.current);
|
|
69
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
65
70
|
cleanupTokenRef.current = null;
|
|
66
71
|
}
|
|
67
72
|
}
|
|
@@ -79,10 +84,10 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
79
84
|
subscription.current = apiRef.current.subscribeEvent(eventName, _enhancedHandler, options);
|
|
80
85
|
}
|
|
81
86
|
|
|
82
|
-
if (cleanupTokenRef.current && registry) {
|
|
87
|
+
if (cleanupTokenRef.current && registryContainer.registry) {
|
|
83
88
|
// If the effect was called, it means that this render was committed
|
|
84
89
|
// so we can trust the cleanup function to remove the listener.
|
|
85
|
-
registry.unregister(cleanupTokenRef.current);
|
|
90
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
86
91
|
cleanupTokenRef.current = null;
|
|
87
92
|
}
|
|
88
93
|
|
|
@@ -95,12 +100,18 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
95
100
|
}, [apiRef, eventName, options]);
|
|
96
101
|
};
|
|
97
102
|
}
|
|
98
|
-
var
|
|
103
|
+
var registryContainer = {
|
|
104
|
+
registry: null
|
|
105
|
+
}; // TODO: move to @mui/x-data-grid/internals
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
99
107
|
|
|
100
108
|
export var unstable_resetCleanupTracking = function unstable_resetCleanupTracking() {
|
|
101
|
-
|
|
109
|
+
var _registryContainer$re;
|
|
110
|
+
|
|
111
|
+
(_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
|
|
112
|
+
registryContainer.registry = null;
|
|
102
113
|
};
|
|
103
|
-
export var useGridApiEventHandler = createUseGridApiEventHandler(
|
|
114
|
+
export var useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
|
|
104
115
|
var optionsSubscriberOptions = {
|
|
105
116
|
isFirst: true
|
|
106
117
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridEvents } from '../../models/events';
|
|
4
3
|
import { isFunction } from '../../utils/utils';
|
|
5
4
|
import { useGridLogger } from './useGridLogger';
|
|
6
5
|
export var useGridNativeEventListener = function useGridNativeEventListener(apiRef, ref, eventName, handler, options) {
|
|
@@ -38,7 +37,7 @@ export var useGridNativeEventListener = function useGridNativeEventListener(apiR
|
|
|
38
37
|
boundElem.removeEventListener(eventName, wrapHandler, options);
|
|
39
38
|
};
|
|
40
39
|
|
|
41
|
-
apiRef.current.subscribeEvent(
|
|
40
|
+
apiRef.current.subscribeEvent('unmount', unsubscribe);
|
|
42
41
|
}
|
|
43
42
|
}, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
|
|
44
43
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { buildWarning } from '../../utils/warning';
|
|
2
2
|
|
|
3
3
|
function isOutputSelector(selector) {
|
|
4
|
-
return selector.
|
|
4
|
+
return selector.acceptsApiRef;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
var stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
|