@mui/x-data-grid 5.10.0 → 5.12.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 +325 -10
- package/DataGrid/DataGrid.js +61 -2
- package/DataGrid/useDataGridProps.js +2 -1
- package/README.md +4 -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 +1 -1
- package/components/GridRow.js +55 -17
- 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 +2 -3
- package/components/cell/GridActionsCell.js +13 -4
- package/components/cell/GridActionsCellItem.d.ts +1 -1
- package/components/cell/GridCell.d.ts +2 -1
- package/components/cell/GridCell.js +17 -12
- 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 +29 -5
- package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
- package/components/cell/GridEditSingleSelectCell.js +28 -5
- package/components/cell/index.d.ts +2 -0
- package/components/cell/index.js +2 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +19 -19
- package/components/columnHeaders/GridColumnHeaders.d.ts +2 -0
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- 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/GridRoot.js +25 -5
- package/components/containers/GridRootStyles.js +4 -2
- package/components/containers/GridToolbarContainer.d.ts +8 -2
- package/components/containers/GridToolbarContainer.js +12 -2
- package/components/menu/GridMenu.js +9 -2
- package/components/panel/GridColumnsPanel.js +10 -2
- 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/GridPanelWrapper.d.ts +1 -1
- package/components/panel/GridPanelWrapper.js +3 -3
- package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
- package/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
- package/components/panel/filterPanel/GridFilterPanel.js +24 -6
- package/components/toolbar/GridToolbar.d.ts +12 -2
- package/components/toolbar/GridToolbar.js +30 -7
- 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 +87 -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/GridVirtualScrollerContent.d.ts +4 -1
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
- package/constants/defaultGridSlotsComponents.js +3 -2
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +5 -0
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +11 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- 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.js +5 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
- package/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/hooks/features/columns/useGridColumns.js +20 -23
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +140 -32
- package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- 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 +128 -42
- package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +19 -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 +17 -1
- package/hooks/features/filter/gridFilterUtils.js +85 -4
- package/hooks/features/filter/useGridFilter.js +25 -13
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.js +29 -33
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +1 -0
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsState.d.ts +16 -11
- package/hooks/features/rows/gridRowsUtils.d.ts +14 -1
- package/hooks/features/rows/gridRowsUtils.js +79 -1
- package/hooks/features/rows/useGridRows.js +130 -129
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/hooks/features/scroll/useGridScroll.js +6 -1
- package/hooks/features/selection/useGridSelection.d.ts +1 -1
- package/hooks/features/selection/useGridSelection.js +13 -10
- package/hooks/features/sorting/useGridSorting.js +8 -9
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +33 -14
- 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 +5 -2
- package/legacy/DataGrid/DataGrid.js +61 -2
- 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 +60 -17
- 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 +2 -3
- package/legacy/components/cell/GridActionsCell.js +13 -4
- package/legacy/components/cell/GridCell.js +17 -12
- package/legacy/components/cell/GridEditBooleanCell.js +132 -11
- package/legacy/components/cell/GridEditDateCell.js +148 -42
- package/legacy/components/cell/GridEditInputCell.js +61 -12
- package/legacy/components/cell/GridEditSingleSelectCell.js +41 -13
- package/legacy/components/cell/index.js +2 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +21 -19
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/legacy/components/containers/GridFooterContainer.js +11 -2
- package/legacy/components/containers/GridRoot.js +23 -5
- package/legacy/components/containers/GridRootStyles.js +3 -2
- package/legacy/components/containers/GridToolbarContainer.js +12 -2
- package/legacy/components/menu/GridMenu.js +9 -2
- package/legacy/components/panel/GridColumnsPanel.js +12 -2
- 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/GridPanelWrapper.js +3 -3
- package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +25 -6
- package/legacy/components/toolbar/GridToolbar.js +31 -6
- package/legacy/components/toolbar/GridToolbarExport.js +18 -19
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +102 -0
- package/legacy/components/toolbar/index.js +3 -2
- package/legacy/constants/defaultGridSlotsComponents.js +3 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +5 -0
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
- 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 +5 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/legacy/hooks/features/columns/useGridColumns.js +20 -23
- package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +220 -83
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +132 -42
- package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
- package/legacy/hooks/features/events/useGridEvents.js +19 -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 +97 -4
- package/legacy/hooks/features/filter/useGridFilter.js +25 -13
- package/legacy/hooks/features/focus/useGridFocus.js +31 -35
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +3 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +82 -1
- package/legacy/hooks/features/rows/useGridRows.js +140 -132
- package/legacy/hooks/features/rows/useGridRowsMeta.js +104 -41
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/legacy/hooks/features/scroll/useGridScroll.js +6 -1
- package/legacy/hooks/features/selection/useGridSelection.js +13 -10
- package/legacy/hooks/features/sorting/useGridSorting.js +8 -9
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +52 -29
- 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 +5 -2
- package/legacy/locales/arSD.js +5 -0
- package/legacy/locales/bgBG.js +5 -0
- package/legacy/locales/csCZ.js +5 -0
- package/legacy/locales/daDK.js +5 -0
- package/legacy/locales/deDE.js +10 -5
- package/legacy/locales/elGR.js +5 -0
- package/legacy/locales/esES.js +5 -0
- package/legacy/locales/faIR.js +5 -0
- package/legacy/locales/fiFI.js +5 -0
- package/legacy/locales/frFR.js +5 -0
- package/legacy/locales/heIL.js +10 -5
- package/legacy/locales/huHU.js +5 -0
- package/legacy/locales/itIT.js +5 -0
- package/legacy/locales/jaJP.js +5 -0
- package/legacy/locales/koKR.js +5 -0
- package/legacy/locales/nbNO.js +127 -0
- package/legacy/locales/nlNL.js +5 -0
- package/legacy/locales/plPL.js +5 -0
- package/legacy/locales/ptBR.js +5 -0
- package/legacy/locales/ruRU.js +5 -0
- package/legacy/locales/skSK.js +5 -0
- package/legacy/locales/trTR.js +8 -3
- package/legacy/locales/ukUA.js +5 -0
- package/legacy/locales/viVN.js +5 -0
- package/legacy/locales/zhCN.js +5 -0
- package/legacy/models/events/gridEvents.js +4 -0
- package/legacy/models/gridApiCaches.js +1 -0
- package/legacy/models/index.js +4 -3
- package/legacy/models/params/gridMenuParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/legacy/utils/createSelector.js +18 -2
- package/legacy/utils/exportAs.js +1 -1
- package/locales/arSD.js +5 -0
- package/locales/bgBG.js +5 -0
- package/locales/csCZ.js +5 -0
- package/locales/daDK.js +5 -0
- package/locales/deDE.js +10 -5
- package/locales/elGR.js +5 -0
- package/locales/esES.js +5 -0
- package/locales/faIR.js +5 -0
- package/locales/fiFI.js +5 -0
- package/locales/frFR.js +5 -0
- package/locales/heIL.js +10 -5
- package/locales/huHU.js +5 -0
- package/locales/itIT.js +5 -0
- package/locales/jaJP.js +5 -0
- package/locales/koKR.js +5 -0
- package/locales/nbNO.d.ts +2 -0
- package/locales/nbNO.js +115 -0
- package/locales/nlNL.js +5 -0
- package/locales/plPL.js +5 -0
- package/locales/ptBR.js +5 -0
- package/locales/ruRU.js +5 -0
- package/locales/skSK.js +5 -0
- package/locales/trTR.js +8 -3
- package/locales/ukUA.js +5 -0
- package/locales/viVN.js +5 -0
- package/locales/zhCN.js +5 -0
- package/models/api/gridCoreApi.d.ts +6 -0
- package/models/api/gridEditingApi.d.ts +23 -4
- package/models/api/gridFilterApi.d.ts +5 -0
- package/models/api/gridFocusApi.d.ts +1 -0
- package/models/api/gridLocaleTextApi.d.ts +4 -0
- package/models/api/gridRowApi.d.ts +28 -0
- package/models/api/gridRowsMetaApi.d.ts +24 -0
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +16 -3
- package/models/events/gridEventLookup.d.ts +286 -4
- package/models/events/gridEvents.d.ts +5 -278
- package/models/events/gridEvents.js +4 -0
- package/models/gridApiCaches.d.ts +6 -0
- package/models/gridApiCaches.js +1 -0
- 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/gridMenuParams.d.ts +7 -0
- package/models/params/gridMenuParams.js +1 -0
- package/models/params/gridRowParams.d.ts +1 -1
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +79 -29
- package/modern/DataGrid/DataGrid.js +61 -2
- 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 +55 -17
- 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 +2 -3
- package/modern/components/cell/GridActionsCell.js +14 -3
- package/modern/components/cell/GridCell.js +17 -12
- package/modern/components/cell/GridEditBooleanCell.js +101 -6
- package/modern/components/cell/GridEditDateCell.js +99 -5
- package/modern/components/cell/GridEditInputCell.js +29 -5
- package/modern/components/cell/GridEditSingleSelectCell.js +28 -5
- package/modern/components/cell/index.js +2 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -19
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/modern/components/containers/GridFooterContainer.js +11 -2
- package/modern/components/containers/GridRoot.js +25 -3
- package/modern/components/containers/GridRootStyles.js +4 -2
- package/modern/components/containers/GridToolbarContainer.js +12 -2
- package/modern/components/menu/GridMenu.js +9 -2
- package/modern/components/panel/GridColumnsPanel.js +10 -2
- 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/GridPanelWrapper.js +3 -3
- package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/modern/components/panel/filterPanel/GridFilterPanel.js +24 -6
- package/modern/components/toolbar/GridToolbar.js +30 -7
- package/modern/components/toolbar/GridToolbarExport.js +15 -20
- package/modern/components/toolbar/GridToolbarQuickFilter.js +85 -0
- package/modern/components/toolbar/index.js +3 -2
- package/modern/constants/defaultGridSlotsComponents.js +3 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +5 -0
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- 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 +5 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/modern/hooks/features/columns/useGridColumns.js +19 -22
- package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +138 -32
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +126 -42
- package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/modern/hooks/features/events/useGridEvents.js +19 -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 +81 -4
- package/modern/hooks/features/filter/useGridFilter.js +25 -13
- package/modern/hooks/features/focus/useGridFocus.js +29 -33
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +77 -1
- package/modern/hooks/features/rows/useGridRows.js +130 -129
- package/modern/hooks/features/rows/useGridRowsMeta.js +105 -37
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/modern/hooks/features/scroll/useGridScroll.js +6 -1
- package/modern/hooks/features/selection/useGridSelection.js +13 -10
- package/modern/hooks/features/sorting/useGridSorting.js +8 -9
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +33 -14
- 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 +5 -2
- package/modern/locales/arSD.js +5 -0
- package/modern/locales/bgBG.js +5 -0
- package/modern/locales/csCZ.js +5 -0
- package/modern/locales/daDK.js +5 -0
- package/modern/locales/deDE.js +10 -5
- package/modern/locales/elGR.js +5 -0
- package/modern/locales/esES.js +5 -0
- package/modern/locales/faIR.js +5 -0
- package/modern/locales/fiFI.js +5 -0
- package/modern/locales/frFR.js +5 -0
- package/modern/locales/heIL.js +10 -5
- package/modern/locales/huHU.js +5 -0
- package/modern/locales/itIT.js +5 -0
- package/modern/locales/jaJP.js +5 -0
- package/modern/locales/koKR.js +5 -0
- package/modern/locales/nbNO.js +115 -0
- package/modern/locales/nlNL.js +5 -0
- package/modern/locales/plPL.js +5 -0
- package/modern/locales/ptBR.js +5 -0
- package/modern/locales/ruRU.js +5 -0
- package/modern/locales/skSK.js +5 -0
- package/modern/locales/trTR.js +8 -3
- package/modern/locales/ukUA.js +5 -0
- package/modern/locales/viVN.js +5 -0
- package/modern/locales/zhCN.js +5 -0
- package/modern/models/events/gridEvents.js +4 -0
- package/modern/models/gridApiCaches.js +1 -0
- package/modern/models/index.js +4 -3
- package/modern/models/params/gridMenuParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/modern/utils/createSelector.js +20 -2
- package/modern/utils/exportAs.js +1 -1
- package/node/DataGrid/DataGrid.js +61 -2
- 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 +57 -18
- 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 +2 -4
- package/node/components/cell/GridActionsCell.js +13 -4
- package/node/components/cell/GridCell.js +16 -11
- package/node/components/cell/GridEditBooleanCell.js +100 -5
- package/node/components/cell/GridEditDateCell.js +98 -4
- package/node/components/cell/GridEditInputCell.js +29 -5
- package/node/components/cell/GridEditSingleSelectCell.js +28 -6
- package/node/components/cell/index.js +26 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -20
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -4
- package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
- package/node/components/containers/GridFooterContainer.js +10 -1
- package/node/components/containers/GridRoot.js +24 -3
- package/node/components/containers/GridRootStyles.js +4 -2
- package/node/components/containers/GridToolbarContainer.js +11 -1
- package/node/components/menu/GridMenu.js +10 -2
- package/node/components/panel/GridColumnsPanel.js +10 -2
- 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/GridPanelWrapper.js +5 -3
- package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/node/components/panel/filterPanel/GridFilterPanel.js +26 -6
- package/node/components/toolbar/GridToolbar.js +32 -7
- package/node/components/toolbar/GridToolbarExport.js +14 -19
- package/node/components/toolbar/GridToolbarQuickFilter.js +109 -0
- package/node/components/toolbar/index.js +42 -11
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +5 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
- 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 +5 -7
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -5
- package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
- package/node/hooks/features/columns/useGridColumns.js +20 -24
- package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
- package/node/hooks/features/editRows/useGridCellEditing.new.js +140 -32
- package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
- package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
- package/node/hooks/features/editRows/useGridRowEditing.new.js +128 -43
- package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
- package/node/hooks/features/events/useGridEvents.js +19 -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 +93 -3
- package/node/hooks/features/filter/useGridFilter.js +25 -13
- package/node/hooks/features/focus/useGridFocus.js +29 -34
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -6
- 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 +3 -1
- package/node/hooks/features/rows/gridRowsUtils.js +95 -1
- package/node/hooks/features/rows/useGridRows.js +132 -127
- package/node/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/node/hooks/features/scroll/useGridScroll.js +6 -1
- package/node/hooks/features/selection/useGridSelection.js +13 -11
- package/node/hooks/features/sorting/useGridSorting.js +8 -10
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +33 -15
- 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 +39 -3
- package/node/locales/arSD.js +5 -0
- package/node/locales/bgBG.js +5 -0
- package/node/locales/csCZ.js +5 -0
- package/node/locales/daDK.js +5 -0
- package/node/locales/deDE.js +10 -5
- package/node/locales/elGR.js +5 -0
- package/node/locales/esES.js +5 -0
- package/node/locales/faIR.js +5 -0
- package/node/locales/fiFI.js +5 -0
- package/node/locales/frFR.js +5 -0
- package/node/locales/heIL.js +10 -5
- package/node/locales/huHU.js +5 -0
- package/node/locales/itIT.js +5 -0
- package/node/locales/jaJP.js +5 -0
- package/node/locales/koKR.js +5 -0
- package/node/locales/nbNO.js +125 -0
- package/node/locales/nlNL.js +5 -0
- package/node/locales/plPL.js +5 -0
- package/node/locales/ptBR.js +5 -0
- package/node/locales/ruRU.js +5 -0
- package/node/locales/skSK.js +5 -0
- package/node/locales/trTR.js +8 -3
- package/node/locales/ukUA.js +5 -0
- package/node/locales/viVN.js +5 -0
- package/node/locales/zhCN.js +5 -0
- package/node/models/events/gridEvents.js +4 -0
- package/node/models/gridApiCaches.js +5 -0
- package/node/models/index.js +0 -13
- package/node/models/params/gridMenuParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/node/utils/createSelector.js +25 -4
- package/node/utils/exportAs.js +1 -1
- package/package.json +5 -4
- package/utils/createSelector.d.ts +2 -1
- package/utils/createSelector.js +20 -2
- package/utils/exportAs.d.ts +2 -2
- package/utils/exportAs.js +1 -1
|
@@ -21,39 +21,76 @@ export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
|
21
21
|
|
|
22
22
|
export const useGridRowsMeta = (apiRef, props) => {
|
|
23
23
|
const {
|
|
24
|
-
getRowHeight,
|
|
25
|
-
getRowSpacing
|
|
24
|
+
getRowHeight: getRowHeightProp,
|
|
25
|
+
getRowSpacing,
|
|
26
|
+
getEstimatedRowHeight
|
|
26
27
|
} = props;
|
|
27
|
-
const rowsHeightLookup = React.useRef({});
|
|
28
|
-
|
|
28
|
+
const rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
|
|
29
|
+
|
|
30
|
+
const lastMeasuredRowIndex = React.useRef(-1);
|
|
31
|
+
const hasRowWithAutoHeight = React.useRef(false);
|
|
32
|
+
const rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
|
|
29
33
|
const filterState = useGridSelector(apiRef, gridFilterStateSelector);
|
|
30
34
|
const paginationState = useGridSelector(apiRef, gridPaginationSelector);
|
|
31
35
|
const sortingState = useGridSelector(apiRef, gridSortingStateSelector);
|
|
32
36
|
const currentPage = useGridVisibleRows(apiRef, props);
|
|
33
37
|
const hydrateRowsMeta = React.useCallback(() => {
|
|
38
|
+
hasRowWithAutoHeight.current = false;
|
|
34
39
|
apiRef.current.setState(state => {
|
|
35
|
-
const positions = [];
|
|
36
40
|
const densityFactor = gridDensityFactorSelector(state, apiRef.current.instanceId);
|
|
37
|
-
const
|
|
41
|
+
const positions = [];
|
|
38
42
|
const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
|
|
39
43
|
positions.push(acc);
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
|
|
45
|
+
if (!rowsHeightLookup.current[row.id]) {
|
|
46
|
+
rowsHeightLookup.current[row.id] = {
|
|
47
|
+
sizes: {
|
|
48
|
+
base: rowHeightFromDensity
|
|
49
|
+
},
|
|
50
|
+
isResized: false,
|
|
51
|
+
autoHeight: false,
|
|
52
|
+
needsFirstMeasurement: true // Assume all rows will need to be measured by default
|
|
53
|
+
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const {
|
|
58
|
+
isResized,
|
|
59
|
+
needsFirstMeasurement,
|
|
60
|
+
sizes
|
|
61
|
+
} = rowsHeightLookup.current[row.id];
|
|
62
|
+
let baseRowHeight = rowHeightFromDensity;
|
|
63
|
+
const existingBaseRowHeight = sizes.base;
|
|
42
64
|
|
|
43
65
|
if (isResized) {
|
|
44
|
-
//
|
|
45
|
-
baseRowHeight =
|
|
46
|
-
} else {
|
|
47
|
-
|
|
66
|
+
// Do not recalculate resized row height and use the value from the lookup
|
|
67
|
+
baseRowHeight = existingBaseRowHeight;
|
|
68
|
+
} else if (getRowHeightProp) {
|
|
69
|
+
const rowHeightFromUser = getRowHeightProp(_extends({}, row, {
|
|
70
|
+
densityFactor
|
|
71
|
+
}));
|
|
48
72
|
|
|
49
|
-
if (
|
|
50
|
-
|
|
73
|
+
if (rowHeightFromUser === 'auto') {
|
|
74
|
+
if (needsFirstMeasurement) {
|
|
75
|
+
const estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
|
|
76
|
+
densityFactor
|
|
77
|
+
})) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
|
|
51
78
|
|
|
79
|
+
baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
|
|
80
|
+
} else {
|
|
81
|
+
baseRowHeight = existingBaseRowHeight;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
hasRowWithAutoHeight.current = true;
|
|
85
|
+
rowsHeightLookup.current[row.id].autoHeight = true;
|
|
86
|
+
} else {
|
|
52
87
|
// Default back to base rowHeight if getRowHeight returns null or undefined.
|
|
53
|
-
baseRowHeight =
|
|
54
|
-
|
|
55
|
-
|
|
88
|
+
baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
|
|
89
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
90
|
+
rowsHeightLookup.current[row.id].autoHeight = false;
|
|
56
91
|
}
|
|
92
|
+
} else {
|
|
93
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
57
94
|
} // We use an object to make simple to check if a height is already added or not
|
|
58
95
|
|
|
59
96
|
|
|
@@ -74,13 +111,9 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
74
111
|
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
75
112
|
}
|
|
76
113
|
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
value: baseRowHeight,
|
|
81
|
-
sizes,
|
|
82
|
-
isResized
|
|
83
|
-
};
|
|
114
|
+
const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
115
|
+
rowsHeightLookup.current[row.id].sizes = processedSizes;
|
|
116
|
+
const finalRowHeight = Object.values(processedSizes).reduce((acc2, value) => acc2 + value, 0);
|
|
84
117
|
return acc + finalRowHeight;
|
|
85
118
|
}, 0);
|
|
86
119
|
return _extends({}, state, {
|
|
@@ -90,41 +123,72 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
90
123
|
}
|
|
91
124
|
});
|
|
92
125
|
});
|
|
93
|
-
apiRef.current.forceUpdate();
|
|
94
|
-
}, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
|
|
95
126
|
|
|
96
|
-
|
|
97
|
-
|
|
127
|
+
if (!hasRowWithAutoHeight.current) {
|
|
128
|
+
// No row has height=auto, so all rows are already measured
|
|
129
|
+
lastMeasuredRowIndex.current = Infinity;
|
|
130
|
+
}
|
|
98
131
|
|
|
99
|
-
|
|
100
|
-
};
|
|
132
|
+
apiRef.current.forceUpdate();
|
|
133
|
+
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
|
|
134
|
+
const getRowHeight = React.useCallback(rowId => {
|
|
135
|
+
const height = rowsHeightLookup.current[rowId];
|
|
136
|
+
return height ? height.sizes.base : rowHeightFromDensity;
|
|
137
|
+
}, [rowHeightFromDensity]);
|
|
101
138
|
|
|
102
139
|
const getRowInternalSizes = rowId => {
|
|
103
|
-
var _rowsHeightLookup$
|
|
140
|
+
var _rowsHeightLookup$cur;
|
|
104
141
|
|
|
105
|
-
return (_rowsHeightLookup$
|
|
142
|
+
return (_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.sizes;
|
|
106
143
|
};
|
|
107
144
|
|
|
108
145
|
const setRowHeight = React.useCallback((id, height) => {
|
|
109
|
-
rowsHeightLookup.current[id] =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
|
|
113
|
-
base: height
|
|
114
|
-
})
|
|
115
|
-
};
|
|
146
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
147
|
+
rowsHeightLookup.current[id].isResized = true;
|
|
148
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
116
149
|
hydrateRowsMeta();
|
|
117
|
-
}, [hydrateRowsMeta]);
|
|
150
|
+
}, [hydrateRowsMeta]);
|
|
151
|
+
const storeMeasuredRowHeight = React.useCallback((id, height) => {
|
|
152
|
+
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
153
|
+
return;
|
|
154
|
+
} // Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
const needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
|
|
158
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
159
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
160
|
+
|
|
161
|
+
if (needsHydration) {
|
|
162
|
+
hydrateRowsMeta();
|
|
163
|
+
}
|
|
164
|
+
}, [hydrateRowsMeta]);
|
|
165
|
+
const rowHasAutoHeight = React.useCallback(id => {
|
|
166
|
+
var _rowsHeightLookup$cur2;
|
|
167
|
+
|
|
168
|
+
return ((_rowsHeightLookup$cur2 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur2.autoHeight) || false;
|
|
169
|
+
}, []);
|
|
170
|
+
const getLastMeasuredRowIndex = React.useCallback(() => {
|
|
171
|
+
return lastMeasuredRowIndex.current;
|
|
172
|
+
}, []);
|
|
173
|
+
const setLastMeasuredRowIndex = React.useCallback(index => {
|
|
174
|
+
if (hasRowWithAutoHeight.current) {
|
|
175
|
+
lastMeasuredRowIndex.current = index;
|
|
176
|
+
}
|
|
177
|
+
}, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
|
|
118
178
|
// Because of variable row height this is needed for the virtualization
|
|
119
179
|
|
|
120
180
|
React.useEffect(() => {
|
|
121
181
|
hydrateRowsMeta();
|
|
122
|
-
}, [
|
|
182
|
+
}, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
123
183
|
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
124
184
|
const rowsMetaApi = {
|
|
125
|
-
|
|
185
|
+
unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
|
|
186
|
+
unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
|
|
187
|
+
unstable_rowHasAutoHeight: rowHasAutoHeight,
|
|
188
|
+
unstable_getRowHeight: getRowHeight,
|
|
126
189
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
127
|
-
unstable_setRowHeight: setRowHeight
|
|
190
|
+
unstable_setRowHeight: setRowHeight,
|
|
191
|
+
unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
|
|
128
192
|
};
|
|
129
193
|
useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
|
|
130
194
|
};
|
|
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
|
|
|
3
3
|
const flatRowTreeCreationMethod = ({
|
|
4
4
|
ids,
|
|
5
5
|
idRowsLookup,
|
|
6
|
+
idToIdLookup,
|
|
6
7
|
previousTree
|
|
7
8
|
}) => {
|
|
8
9
|
const tree = {};
|
|
@@ -28,6 +29,7 @@ const flatRowTreeCreationMethod = ({
|
|
|
28
29
|
tree,
|
|
29
30
|
treeDepth: 1,
|
|
30
31
|
idRowsLookup,
|
|
32
|
+
idToIdLookup,
|
|
31
33
|
ids
|
|
32
34
|
};
|
|
33
35
|
};
|
|
@@ -16,7 +16,12 @@ function scrollIntoView(dimensions) {
|
|
|
16
16
|
offsetHeight,
|
|
17
17
|
offsetTop
|
|
18
18
|
} = dimensions;
|
|
19
|
-
const elementBottom = offsetTop + offsetHeight;
|
|
19
|
+
const elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
|
|
20
|
+
// See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
|
|
21
|
+
|
|
22
|
+
if (offsetHeight > clientHeight) {
|
|
23
|
+
return offsetTop;
|
|
24
|
+
}
|
|
20
25
|
|
|
21
26
|
if (elementBottom - clientHeight > scrollTop) {
|
|
22
27
|
return elementBottom - clientHeight;
|
|
@@ -9,4 +9,4 @@ export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGr
|
|
|
9
9
|
* @requires useGridFocus (state) - can be after
|
|
10
10
|
* @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
|
|
11
11
|
*/
|
|
12
|
-
export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes'>) => void;
|
|
12
|
+
export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes' | 'keepNonExistentRowsSelected'>) => void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridEvents } from '../../../models/events';
|
|
4
3
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
5
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
@@ -56,7 +55,7 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
56
55
|
propModel: propSelectionModel,
|
|
57
56
|
propOnChange: props.onSelectionModelChange,
|
|
58
57
|
stateSelector: gridSelectionStateSelector,
|
|
59
|
-
changeEvent:
|
|
58
|
+
changeEvent: 'selectionChange'
|
|
60
59
|
});
|
|
61
60
|
const {
|
|
62
61
|
checkboxSelection,
|
|
@@ -198,6 +197,10 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
198
197
|
*/
|
|
199
198
|
|
|
200
199
|
const removeOutdatedSelection = React.useCallback(() => {
|
|
200
|
+
if (props.keepNonExistentRowsSelected) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
201
204
|
const currentSelection = gridSelectionStateSelector(apiRef.current.state);
|
|
202
205
|
const rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
|
|
203
206
|
|
|
@@ -214,12 +217,12 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
214
217
|
if (hasChanged) {
|
|
215
218
|
apiRef.current.setSelectionModel(Object.values(selectionLookup));
|
|
216
219
|
}
|
|
217
|
-
}, [apiRef]);
|
|
220
|
+
}, [apiRef, props.keepNonExistentRowsSelected]);
|
|
218
221
|
const handleSingleRowSelection = React.useCallback((id, event) => {
|
|
219
222
|
const hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
|
|
220
223
|
// - it is a checkboxSelection
|
|
221
224
|
// - it is a keyboard selection
|
|
222
|
-
// -
|
|
225
|
+
// - Ctrl is pressed
|
|
223
226
|
|
|
224
227
|
const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
|
|
225
228
|
const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
|
|
@@ -349,12 +352,12 @@ export const useGridSelection = (apiRef, props) => {
|
|
|
349
352
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
350
353
|
}
|
|
351
354
|
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
352
|
-
useGridApiEventHandler(apiRef,
|
|
353
|
-
useGridApiEventHandler(apiRef,
|
|
354
|
-
useGridApiEventHandler(apiRef,
|
|
355
|
-
useGridApiEventHandler(apiRef,
|
|
356
|
-
useGridApiEventHandler(apiRef,
|
|
357
|
-
useGridApiEventHandler(apiRef,
|
|
355
|
+
useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
|
|
356
|
+
useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
|
|
357
|
+
useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
|
|
358
|
+
useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
|
|
359
|
+
useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
|
|
360
|
+
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
358
361
|
/**
|
|
359
362
|
* EFFECTS
|
|
360
363
|
*/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridEvents } from '../../../models/events';
|
|
4
3
|
import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
|
|
5
4
|
import { isEnterKey } from '../../../utils/keyboardUtils';
|
|
6
5
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
@@ -36,7 +35,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
36
35
|
propModel: props.sortModel,
|
|
37
36
|
propOnChange: props.onSortModelChange,
|
|
38
37
|
stateSelector: gridSortModelSelector,
|
|
39
|
-
changeEvent:
|
|
38
|
+
changeEvent: 'sortModelChange'
|
|
40
39
|
});
|
|
41
40
|
const upsertSortModel = React.useCallback((field, sortItem) => {
|
|
42
41
|
const sortModel = gridSortModelSelector(apiRef);
|
|
@@ -101,7 +100,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
101
100
|
})
|
|
102
101
|
});
|
|
103
102
|
});
|
|
104
|
-
apiRef.current.publishEvent(
|
|
103
|
+
apiRef.current.publishEvent('sortedRowsSet');
|
|
105
104
|
apiRef.current.forceUpdate();
|
|
106
105
|
}, [apiRef, logger, props.sortingMode]);
|
|
107
106
|
const setSortModel = React.useCallback(model => {
|
|
@@ -204,7 +203,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
204
203
|
const handleColumnHeaderKeyDown = React.useCallback(({
|
|
205
204
|
colDef
|
|
206
205
|
}, event) => {
|
|
207
|
-
//
|
|
206
|
+
// Ctrl + Enter opens the column menu
|
|
208
207
|
if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
|
|
209
208
|
sortColumn(colDef, undefined, event.shiftKey);
|
|
210
209
|
}
|
|
@@ -227,11 +226,11 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
227
226
|
apiRef.current.applySorting();
|
|
228
227
|
}
|
|
229
228
|
}, [apiRef]);
|
|
230
|
-
useGridApiEventHandler(apiRef,
|
|
231
|
-
useGridApiEventHandler(apiRef,
|
|
232
|
-
useGridApiEventHandler(apiRef,
|
|
233
|
-
useGridApiEventHandler(apiRef,
|
|
234
|
-
useGridApiEventHandler(apiRef,
|
|
229
|
+
useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
|
|
230
|
+
useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
231
|
+
useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
|
|
232
|
+
useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
|
|
233
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
235
234
|
/**
|
|
236
235
|
* 1ST RENDER
|
|
237
236
|
*/
|
|
@@ -28,6 +28,7 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
|
|
|
28
28
|
minFirstColumn?: number | undefined;
|
|
29
29
|
maxLastColumn?: number | undefined;
|
|
30
30
|
availableSpace?: number | null | undefined;
|
|
31
|
+
ignoreAutoHeight?: boolean | undefined;
|
|
31
32
|
}) => JSX.Element[] | null;
|
|
32
33
|
getRootProps: ({ style, ...other }?: {
|
|
33
34
|
style?: {} | undefined;
|
|
@@ -12,7 +12,6 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
|
|
|
12
12
|
import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
|
|
13
13
|
import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
|
|
14
14
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
15
|
-
import { GridEvents } from '../../../models/events';
|
|
16
15
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
17
16
|
import { clamp } from '../../../utils/utils';
|
|
18
17
|
import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
|
|
@@ -88,17 +87,36 @@ export const useGridVirtualScroller = props => {
|
|
|
88
87
|
top,
|
|
89
88
|
left
|
|
90
89
|
} = scrollPosition.current;
|
|
91
|
-
const firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
|
|
90
|
+
const firstRowIndex = Math.min(Math.max(0, apiRef.current.unstable_getLastMeasuredRowIndex()), getIndexFromScroll(top, rowsMeta.positions));
|
|
92
91
|
const lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
let hasRowWithAutoHeight = false;
|
|
93
|
+
let firstColumnIndex = 0;
|
|
94
|
+
let lastColumnIndex = columnPositions.length;
|
|
95
|
+
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
96
|
+
firstIndex: firstRowIndex,
|
|
97
|
+
lastIndex: lastRowIndex,
|
|
98
|
+
minFirstIndex: 0,
|
|
99
|
+
maxLastIndex: currentPage.rows.length,
|
|
100
|
+
buffer: rootProps.rowBuffer
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
|
|
104
|
+
const row = currentPage.rows[i];
|
|
105
|
+
hasRowWithAutoHeight = apiRef.current.unstable_rowHasAutoHeight(row.id);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (!hasRowWithAutoHeight) {
|
|
109
|
+
firstColumnIndex = getIndexFromScroll(left, columnPositions);
|
|
110
|
+
lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
|
|
111
|
+
}
|
|
112
|
+
|
|
95
113
|
return {
|
|
96
114
|
firstRowIndex,
|
|
97
115
|
lastRowIndex,
|
|
98
116
|
firstColumnIndex,
|
|
99
117
|
lastColumnIndex
|
|
100
118
|
};
|
|
101
|
-
}, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, currentPage.rows
|
|
119
|
+
}, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, rootProps.rowBuffer, currentPage.rows, columnPositions, visibleColumns.length, apiRef, containerWidth]);
|
|
102
120
|
React.useEffect(() => {
|
|
103
121
|
if (disableVirtualization) {
|
|
104
122
|
renderZoneRef.current.style.transform = `translate3d(0px, 0px, 0px)`;
|
|
@@ -116,7 +134,7 @@ export const useGridVirtualScroller = props => {
|
|
|
116
134
|
setContainerWidth(rootRef.current.clientWidth);
|
|
117
135
|
}
|
|
118
136
|
}, []);
|
|
119
|
-
useGridApiEventHandler(apiRef,
|
|
137
|
+
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
120
138
|
const updateRenderZonePosition = React.useCallback(nextRenderContext => {
|
|
121
139
|
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
122
140
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
@@ -176,7 +194,7 @@ export const useGridVirtualScroller = props => {
|
|
|
176
194
|
left,
|
|
177
195
|
renderContext: initialRenderContext
|
|
178
196
|
};
|
|
179
|
-
apiRef.current.publishEvent(
|
|
197
|
+
apiRef.current.publishEvent('rowsScroll', params);
|
|
180
198
|
}, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
|
|
181
199
|
|
|
182
200
|
const handleScroll = event => {
|
|
@@ -199,7 +217,7 @@ export const useGridVirtualScroller = props => {
|
|
|
199
217
|
const bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
|
|
200
218
|
const 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
|
|
201
219
|
|
|
202
|
-
apiRef.current.publishEvent(
|
|
220
|
+
apiRef.current.publishEvent('rowsScroll', {
|
|
203
221
|
top: scrollTop,
|
|
204
222
|
left: scrollLeft,
|
|
205
223
|
renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
|
|
@@ -215,11 +233,11 @@ export const useGridVirtualScroller = props => {
|
|
|
215
233
|
};
|
|
216
234
|
|
|
217
235
|
const handleWheel = event => {
|
|
218
|
-
apiRef.current.publishEvent(
|
|
236
|
+
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
219
237
|
};
|
|
220
238
|
|
|
221
239
|
const handleTouchMove = event => {
|
|
222
|
-
apiRef.current.publishEvent(
|
|
240
|
+
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
223
241
|
};
|
|
224
242
|
|
|
225
243
|
const getRows = (params = {
|
|
@@ -229,7 +247,8 @@ export const useGridVirtualScroller = props => {
|
|
|
229
247
|
renderContext: nextRenderContext,
|
|
230
248
|
minFirstColumn = renderZoneMinColumnIndex,
|
|
231
249
|
maxLastColumn = renderZoneMaxColumnIndex,
|
|
232
|
-
availableSpace = containerWidth
|
|
250
|
+
availableSpace = containerWidth,
|
|
251
|
+
ignoreAutoHeight
|
|
233
252
|
} = params;
|
|
234
253
|
|
|
235
254
|
if (!currentPage.range || !nextRenderContext || availableSpace == null) {
|
|
@@ -282,7 +301,7 @@ export const useGridVirtualScroller = props => {
|
|
|
282
301
|
model
|
|
283
302
|
} = renderedRows[i];
|
|
284
303
|
const lastVisibleRowIndex = firstRowToRender + i === currentPage.rows.length - 1;
|
|
285
|
-
const
|
|
304
|
+
const baseRowHeight = !apiRef.current.unstable_rowHasAutoHeight(id) || ignoreAutoHeight ? apiRef.current.unstable_getRowHeight(id) : 'auto';
|
|
286
305
|
let isSelected;
|
|
287
306
|
|
|
288
307
|
if (selectedRowsLookup[id] == null) {
|
|
@@ -296,7 +315,7 @@ export const useGridVirtualScroller = props => {
|
|
|
296
315
|
rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
|
|
297
316
|
row: model,
|
|
298
317
|
rowId: id,
|
|
299
|
-
rowHeight:
|
|
318
|
+
rowHeight: baseRowHeight,
|
|
300
319
|
cellFocus: cellFocus // TODO move to inside the row
|
|
301
320
|
,
|
|
302
321
|
cellTabIndex: cellTabIndex // TODO move to inside the row
|
|
@@ -342,7 +361,7 @@ export const useGridVirtualScroller = props => {
|
|
|
342
361
|
return size;
|
|
343
362
|
}, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
|
|
344
363
|
React.useEffect(() => {
|
|
345
|
-
apiRef.current.publishEvent(
|
|
364
|
+
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
346
365
|
}, [apiRef, contentSize]);
|
|
347
366
|
|
|
348
367
|
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
@@ -11,7 +11,10 @@ declare enum GridSignature {
|
|
|
11
11
|
DataGrid = "DataGrid",
|
|
12
12
|
DataGridPro = "DataGridPro"
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
interface RegistryContainer {
|
|
15
|
+
registry: CleanupTracking | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function createUseGridApiEventHandler(registryContainer: RegistryContainer): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
|
|
15
18
|
export declare const unstable_resetCleanupTracking: () => void;
|
|
16
19
|
export declare const useGridApiEventHandler: <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
|
|
17
20
|
export declare function useGridApiOptionHandler<Api extends GridApiCommon, E extends GridEventsStr>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
|
|
@@ -6,20 +6,25 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
|
|
|
6
6
|
* Signal to the underlying logic what version of the public component API
|
|
7
7
|
* of the data grid is exposed.
|
|
8
8
|
*/
|
|
9
|
-
var GridSignature;
|
|
9
|
+
var GridSignature;
|
|
10
10
|
|
|
11
11
|
(function (GridSignature) {
|
|
12
12
|
GridSignature["DataGrid"] = "DataGrid";
|
|
13
13
|
GridSignature["DataGridPro"] = "DataGridPro";
|
|
14
14
|
})(GridSignature || (GridSignature = {}));
|
|
15
15
|
|
|
16
|
+
// We use class to make it easier to detect in heap snapshots by name
|
|
16
17
|
class ObjectToBeRetainedByReact {} // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
|
|
17
18
|
// Check https://github.com/facebook/react/issues/15317 to get more information
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
export function createUseGridApiEventHandler(
|
|
21
|
+
export function createUseGridApiEventHandler(registryContainer) {
|
|
21
22
|
let cleanupTokensCounter = 0;
|
|
22
23
|
return function useGridApiEventHandler(apiRef, eventName, handler, options) {
|
|
24
|
+
if (registryContainer.registry === null) {
|
|
25
|
+
registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
|
|
26
|
+
}
|
|
27
|
+
|
|
23
28
|
const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());
|
|
24
29
|
const subscription = React.useRef(null);
|
|
25
30
|
const handlerRef = React.useRef();
|
|
@@ -40,7 +45,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
40
45
|
cleanupTokenRef.current = {
|
|
41
46
|
cleanupToken: cleanupTokensCounter
|
|
42
47
|
};
|
|
43
|
-
registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
48
|
+
registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
44
49
|
() => {
|
|
45
50
|
var _subscription$current;
|
|
46
51
|
|
|
@@ -53,7 +58,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
53
58
|
subscription.current = null;
|
|
54
59
|
|
|
55
60
|
if (cleanupTokenRef.current) {
|
|
56
|
-
registry.unregister(cleanupTokenRef.current);
|
|
61
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
57
62
|
cleanupTokenRef.current = null;
|
|
58
63
|
}
|
|
59
64
|
}
|
|
@@ -71,10 +76,10 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
71
76
|
subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);
|
|
72
77
|
}
|
|
73
78
|
|
|
74
|
-
if (cleanupTokenRef.current && registry) {
|
|
79
|
+
if (cleanupTokenRef.current && registryContainer.registry) {
|
|
75
80
|
// If the effect was called, it means that this render was committed
|
|
76
81
|
// so we can trust the cleanup function to remove the listener.
|
|
77
|
-
registry.unregister(cleanupTokenRef.current);
|
|
82
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
78
83
|
cleanupTokenRef.current = null;
|
|
79
84
|
}
|
|
80
85
|
|
|
@@ -87,10 +92,18 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
87
92
|
}, [apiRef, eventName, options]);
|
|
88
93
|
};
|
|
89
94
|
}
|
|
90
|
-
const
|
|
95
|
+
const registryContainer = {
|
|
96
|
+
registry: null
|
|
97
|
+
}; // TODO: move to @mui/x-data-grid/internals
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
91
99
|
|
|
92
|
-
export const unstable_resetCleanupTracking = () =>
|
|
93
|
-
|
|
100
|
+
export const unstable_resetCleanupTracking = () => {
|
|
101
|
+
var _registryContainer$re;
|
|
102
|
+
|
|
103
|
+
(_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
|
|
104
|
+
registryContainer.registry = null;
|
|
105
|
+
};
|
|
106
|
+
export const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
|
|
94
107
|
const optionsSubscriberOptions = {
|
|
95
108
|
isFirst: true
|
|
96
109
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { GridEvents } from '../../models/events';
|
|
3
2
|
import { isFunction } from '../../utils/utils';
|
|
4
3
|
import { useGridLogger } from './useGridLogger';
|
|
5
4
|
export const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {
|
|
@@ -32,7 +31,7 @@ export const useGridNativeEventListener = (apiRef, ref, eventName, handler, opti
|
|
|
32
31
|
boundElem.removeEventListener(eventName, wrapHandler, options);
|
|
33
32
|
};
|
|
34
33
|
|
|
35
|
-
apiRef.current.subscribeEvent(
|
|
34
|
+
apiRef.current.subscribeEvent('unmount', unsubscribe);
|
|
36
35
|
}
|
|
37
36
|
}, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
|
|
38
37
|
};
|
|
@@ -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
|
const 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.']);
|
package/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export * from './context';
|
|
|
14
14
|
export * from './colDef';
|
|
15
15
|
export * from './utils';
|
|
16
16
|
export type { DataGridProps, GridExperimentalFeatures } from './models/props/DataGridProps';
|
|
17
|
+
export type { GridToolbarExportProps } from './components/toolbar/GridToolbarExport';
|
|
18
|
+
export type { GridExportFormat, GridExportExtension } from './models/gridExport';
|
|
17
19
|
/**
|
|
18
20
|
* The full grid API.
|
|
19
21
|
*/
|
package/index.js
CHANGED
package/internals/index.d.ts
CHANGED
|
@@ -44,8 +44,12 @@ export { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
|
|
|
44
44
|
export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
|
|
45
45
|
export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState';
|
|
46
46
|
export type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, } from '../models/props/DataGridProps';
|
|
47
|
-
export {
|
|
47
|
+
export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils';
|
|
48
|
+
export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
|
|
48
49
|
export { findParentElementFromClassName } from '../utils/domUtils';
|
|
49
50
|
export { isNavigationKey } from '../utils/keyboardUtils';
|
|
50
51
|
export { clamp, isDeepEqual } from '../utils/utils';
|
|
52
|
+
export { buildWarning } from '../utils/warning';
|
|
53
|
+
export { exportAs } from '../utils/exportAs';
|
|
51
54
|
export type { GridApiCommunity } from '../models/api/gridApiCommunity';
|
|
55
|
+
export type { GridApiCaches } from '../models/gridApiCaches';
|