@mui/x-data-grid 5.9.0 → 5.11.1
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 +284 -10
- package/DataGrid/DataGrid.js +35 -1
- package/DataGrid/useDataGridProps.js +2 -1
- package/README.md +5 -4
- 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.js +9 -5
- 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/GridCell.js +8 -8
- 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 +15 -16
- 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 +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/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/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 +4 -2
- package/constants/gridClasses.d.ts +32 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +8 -1
- 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 -3
- package/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +8 -9
- 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 +133 -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 +122 -42
- 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 +20 -8
- 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 +148 -128
- 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 +2 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
- 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 +4 -1
- package/internals/index.js +5 -2
- package/legacy/DataGrid/DataGrid.js +35 -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 +9 -5
- 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 +8 -8
- 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 +15 -16
- 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 +26 -5
- package/legacy/components/containers/GridToolbarContainer.js +12 -2
- package/legacy/components/menu/GridMenu.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/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 +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +8 -1
- 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 -3
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/legacy/hooks/features/columns/useGridColumns.js +8 -9
- package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +213 -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 +126 -42
- 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 +20 -8
- 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 +164 -131
- 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 +14 -5
- 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 +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 +8 -1
- 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/events/gridEvents.js +8 -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.js +8 -1
- 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/gridCoreApi.d.ts +10 -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 +5 -0
- package/models/api/gridRowApi.d.ts +34 -0
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +13 -0
- package/models/events/gridEventLookup.d.ts +293 -3
- package/models/events/gridEvents.d.ts +8 -251
- package/models/events/gridEvents.js +8 -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 +10 -0
- package/models/gridStateCommunity.d.ts +0 -2
- package/models/index.d.ts +1 -1
- package/models/index.js +4 -3
- package/models/props/DataGridProps.d.ts +56 -28
- package/modern/DataGrid/DataGrid.js +35 -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 +9 -5
- 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 +8 -8
- 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 +15 -16
- 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 +36 -1
- package/modern/components/containers/GridToolbarContainer.js +12 -2
- package/modern/components/menu/GridMenu.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/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 +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +8 -1
- 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 -3
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/modern/hooks/features/columns/useGridColumns.js +8 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +131 -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 +120 -42
- 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 +20 -8
- 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 +148 -128
- 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 +14 -5
- 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 +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 +8 -1
- 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/events/gridEvents.js +8 -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 +35 -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 +9 -6
- 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 +7 -7
- 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 +15 -17
- 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 +36 -1
- package/node/components/containers/GridToolbarContainer.js +11 -1
- package/node/components/menu/GridMenu.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/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 +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +8 -1
- 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 -4
- package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
- package/node/hooks/features/columns/useGridColumns.js +8 -10
- package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
- package/node/hooks/features/editRows/useGridCellEditing.new.js +133 -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 +122 -43
- 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 +21 -9
- 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 +150 -126
- 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 +14 -6
- 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 +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 +8 -1
- 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/events/gridEvents.js +8 -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 +3 -2
- 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
|
@@ -2,6 +2,8 @@ import { GridLinkOperator } from '../../../models/gridFilterItem';
|
|
|
2
2
|
export var getDefaultGridFilterModel = function getDefaultGridFilterModel() {
|
|
3
3
|
return {
|
|
4
4
|
items: [],
|
|
5
|
-
linkOperator: GridLinkOperator.And
|
|
5
|
+
linkOperator: GridLinkOperator.And,
|
|
6
|
+
quickFilterValues: [],
|
|
7
|
+
quickFilterLogicOperator: GridLinkOperator.And
|
|
6
8
|
};
|
|
7
9
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { GridLinkOperator } from '../../../models';
|
|
3
3
|
import { buildWarning } from '../../../utils/warning';
|
|
4
|
+
import { gridColumnFieldsSelector } from '../columns';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Adds default values to the optional fields of a filter items.
|
|
@@ -86,7 +87,7 @@ export var mergeStateWithFilterModel = function mergeStateWithFilterModel(filter
|
|
|
86
87
|
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
87
88
|
*/
|
|
88
89
|
|
|
89
|
-
export var
|
|
90
|
+
export var buildAggregatedFilterItemsApplier = function buildAggregatedFilterItemsApplier(filterModel, apiRef) {
|
|
90
91
|
var items = filterModel.items,
|
|
91
92
|
_filterModel$linkOper = filterModel.linkOperator,
|
|
92
93
|
linkOperator = _filterModel$linkOper === void 0 ? GridLinkOperator.And : _filterModel$linkOper;
|
|
@@ -160,7 +161,7 @@ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(
|
|
|
160
161
|
|
|
161
162
|
return function (rowId, shouldApplyFilter) {
|
|
162
163
|
var filteredAppliers = shouldApplyFilter ? appliers.filter(function (applier) {
|
|
163
|
-
return shouldApplyFilter(applier.item);
|
|
164
|
+
return shouldApplyFilter(applier.item.columnField);
|
|
164
165
|
}) : appliers; // Return `false` as soon as we have a failing filter
|
|
165
166
|
|
|
166
167
|
if (linkOperator === GridLinkOperator.And) {
|
|
@@ -174,4 +175,97 @@ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(
|
|
|
174
175
|
return applier.fn(rowId);
|
|
175
176
|
});
|
|
176
177
|
};
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Generates a method to easily check if a row is matching the current quick filter.
|
|
181
|
+
* @param {any[]} values The model with which we want to filter the rows.
|
|
182
|
+
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
183
|
+
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
export var buildAggregatedQuickFilterApplier = function buildAggregatedQuickFilterApplier(filterModel, apiRef) {
|
|
187
|
+
var _filterModel$quickFil = filterModel.quickFilterValues,
|
|
188
|
+
quickFilterValues = _filterModel$quickFil === void 0 ? [] : _filterModel$quickFil,
|
|
189
|
+
_filterModel$quickFil2 = filterModel.quickFilterLogicOperator,
|
|
190
|
+
quickFilterLogicOperator = _filterModel$quickFil2 === void 0 ? GridLinkOperator.And : _filterModel$quickFil2;
|
|
191
|
+
|
|
192
|
+
if (quickFilterValues.length === 0) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
var columnsFields = gridColumnFieldsSelector(apiRef);
|
|
197
|
+
var appliersPerColumnField = {};
|
|
198
|
+
columnsFields.forEach(function (field) {
|
|
199
|
+
var column = apiRef.current.getColumn(field);
|
|
200
|
+
var getApplyQuickFilterFn = column == null ? void 0 : column.getApplyQuickFilterFn;
|
|
201
|
+
|
|
202
|
+
if (!getApplyQuickFilterFn) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
appliersPerColumnField[field] = quickFilterValues.map(function (value) {
|
|
207
|
+
return getApplyQuickFilterFn(value, column, apiRef);
|
|
208
|
+
});
|
|
209
|
+
}); // If some value does not have an applier we ignore them
|
|
210
|
+
|
|
211
|
+
var sanitizedQuickFilterValues = quickFilterValues.filter(function (value, index) {
|
|
212
|
+
return Object.keys(appliersPerColumnField).some(function (field) {
|
|
213
|
+
return appliersPerColumnField[field][index] != null;
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
return function (rowId, shouldApplyFilter) {
|
|
217
|
+
var usedCellParams = {};
|
|
218
|
+
Object.keys(appliersPerColumnField).forEach(function (columnField) {
|
|
219
|
+
if (!shouldApplyFilter || shouldApplyFilter(columnField)) {
|
|
220
|
+
usedCellParams[columnField] = apiRef.current.getCellParams(rowId, columnField);
|
|
221
|
+
}
|
|
222
|
+
}); // Return `false` as soon as we have a quick filter value that does not match any column
|
|
223
|
+
|
|
224
|
+
if (quickFilterLogicOperator === GridLinkOperator.And) {
|
|
225
|
+
return sanitizedQuickFilterValues.every(function (value, index) {
|
|
226
|
+
return Object.keys(appliersPerColumnField).some(function (field) {
|
|
227
|
+
var _appliersPerColumnFie, _appliersPerColumnFie2;
|
|
228
|
+
|
|
229
|
+
if (appliersPerColumnField[field][index] == null) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return (_appliersPerColumnFie = (_appliersPerColumnFie2 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie.call(_appliersPerColumnFie2, usedCellParams[field]);
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
} // Return `true` as soon as we have have a quick filter value that match any column
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
return sanitizedQuickFilterValues.some(function (value, index) {
|
|
240
|
+
return Object.keys(appliersPerColumnField).some(function (field) {
|
|
241
|
+
var _appliersPerColumnFie3, _appliersPerColumnFie4;
|
|
242
|
+
|
|
243
|
+
if (appliersPerColumnField[field][index] == null) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
return (_appliersPerColumnFie3 = (_appliersPerColumnFie4 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie3.call(_appliersPerColumnFie4, usedCellParams[field]);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(filterModel, apiRef) {
|
|
253
|
+
var isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef);
|
|
254
|
+
var isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);
|
|
255
|
+
|
|
256
|
+
if (isRowMatchingFilterItems == null && isRowMatchingQuickFilter == null) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (isRowMatchingFilterItems == null) {
|
|
261
|
+
return isRowMatchingQuickFilter;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (isRowMatchingQuickFilter == null) {
|
|
265
|
+
return isRowMatchingFilterItems;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return function (rowId, shouldApplyFilter) {
|
|
269
|
+
return isRowMatchingFilterItems(rowId, shouldApplyFilter) && isRowMatchingQuickFilter(rowId, shouldApplyFilter);
|
|
270
|
+
};
|
|
177
271
|
};
|
|
@@ -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 { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
7
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
@@ -15,6 +14,7 @@ import { gridRowIdsSelector } from '../rows';
|
|
|
15
14
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
16
15
|
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
|
|
17
16
|
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
|
|
17
|
+
import { isDeepEqual } from '../../../utils/utils';
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
19
|
export var filterStateInitializer = function filterStateInitializer(state, props, apiRef) {
|
|
20
20
|
var _ref, _props$filterModel, _props$initialState, _props$initialState$f;
|
|
@@ -43,7 +43,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
43
43
|
propModel: props.filterModel,
|
|
44
44
|
propOnChange: props.onFilterModelChange,
|
|
45
45
|
stateSelector: gridFilterModelSelector,
|
|
46
|
-
changeEvent:
|
|
46
|
+
changeEvent: 'filterModelChange'
|
|
47
47
|
});
|
|
48
48
|
var updateFilteredRows = React.useCallback(function () {
|
|
49
49
|
apiRef.current.setState(function (state) {
|
|
@@ -56,7 +56,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
56
56
|
filter: _extends({}, state.filter, filteringResult)
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
|
-
apiRef.current.publishEvent(
|
|
59
|
+
apiRef.current.publishEvent('filteredRowsSet');
|
|
60
60
|
}, [props.filterMode, apiRef]);
|
|
61
61
|
/**
|
|
62
62
|
* API METHODS
|
|
@@ -146,6 +146,17 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
146
146
|
linkOperator: linkOperator
|
|
147
147
|
}));
|
|
148
148
|
}, [apiRef]);
|
|
149
|
+
var setQuickFilterValues = React.useCallback(function (values) {
|
|
150
|
+
var filterModel = gridFilterModelSelector(apiRef);
|
|
151
|
+
|
|
152
|
+
if (isDeepEqual(filterModel.quickFilterValues, values)) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
157
|
+
quickFilterValues: _toConsumableArray(values)
|
|
158
|
+
}));
|
|
159
|
+
}, [apiRef]);
|
|
149
160
|
var setFilterModel = React.useCallback(function (model) {
|
|
150
161
|
var currentModel = gridFilterModelSelector(apiRef);
|
|
151
162
|
|
|
@@ -169,7 +180,8 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
169
180
|
setFilterModel: setFilterModel,
|
|
170
181
|
showFilterPanel: showFilterPanel,
|
|
171
182
|
hideFilterPanel: hideFilterPanel,
|
|
172
|
-
getVisibleRowModels: getVisibleRowModels
|
|
183
|
+
getVisibleRowModels: getVisibleRowModels,
|
|
184
|
+
setQuickFilterValues: setQuickFilterValues
|
|
173
185
|
};
|
|
174
186
|
useGridApiMethod(apiRef, filterApi, 'GridFilterApi');
|
|
175
187
|
/**
|
|
@@ -266,10 +278,10 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
266
278
|
}, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
|
|
267
279
|
// Otherwise, the state is not consistent during the render
|
|
268
280
|
|
|
269
|
-
useGridApiEventHandler(apiRef,
|
|
270
|
-
useGridApiEventHandler(apiRef,
|
|
271
|
-
useGridApiEventHandler(apiRef,
|
|
272
|
-
useGridApiEventHandler(apiRef,
|
|
281
|
+
useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);
|
|
282
|
+
useGridApiEventHandler(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
|
|
283
|
+
useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
|
|
284
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
273
285
|
/**
|
|
274
286
|
* 1ST RENDER
|
|
275
287
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { ownerDocument } from '@mui/material/utils';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
6
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
@@ -32,14 +31,9 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
32
31
|
var logger = useGridLogger(apiRef, 'useGridFocus');
|
|
33
32
|
var lastClickedCell = React.useRef(null);
|
|
34
33
|
var setCellFocus = React.useCallback(function (id, field) {
|
|
35
|
-
// The row might have been deleted
|
|
36
|
-
if (!apiRef.current.getRow(id)) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
34
|
var focusedCell = gridFocusCellSelector(apiRef);
|
|
41
35
|
|
|
42
|
-
if ((focusedCell == null ? void 0 : focusedCell.id) === id && focusedCell.field === field) {
|
|
36
|
+
if ((focusedCell == null ? void 0 : focusedCell.id) === id && (focusedCell == null ? void 0 : focusedCell.field) === field) {
|
|
43
37
|
return;
|
|
44
38
|
}
|
|
45
39
|
|
|
@@ -62,15 +56,20 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
62
56
|
}
|
|
63
57
|
});
|
|
64
58
|
});
|
|
65
|
-
apiRef.current.forceUpdate();
|
|
66
|
-
|
|
59
|
+
apiRef.current.forceUpdate(); // The row might have been deleted
|
|
60
|
+
|
|
61
|
+
if (!apiRef.current.getRow(id)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));
|
|
67
66
|
}, [apiRef, logger]);
|
|
68
67
|
var setColumnHeaderFocus = React.useCallback(function (field) {
|
|
69
68
|
var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
70
69
|
var cell = gridFocusCellSelector(apiRef);
|
|
71
70
|
|
|
72
71
|
if (cell) {
|
|
73
|
-
apiRef.current.publishEvent(
|
|
72
|
+
apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);
|
|
74
73
|
}
|
|
75
74
|
|
|
76
75
|
apiRef.current.setState(function (state) {
|
|
@@ -200,7 +199,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
200
199
|
// Publishes an event to notify that the focus was lost
|
|
201
200
|
|
|
202
201
|
|
|
203
|
-
apiRef.current.publishEvent(
|
|
202
|
+
apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
|
|
204
203
|
|
|
205
204
|
if (cellParams) {
|
|
206
205
|
apiRef.current.setCellFocus(cellParams.id, cellParams.field);
|
|
@@ -227,29 +226,25 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
227
226
|
apiRef.current.setCellFocus(params.id, params.field);
|
|
228
227
|
}
|
|
229
228
|
}, [apiRef]);
|
|
229
|
+
var handleRowSet = React.useCallback(function () {
|
|
230
|
+
var cell = gridFocusCellSelector(apiRef); // If the focused cell is in a row which does not exist anymore, then remove the focus
|
|
231
|
+
|
|
232
|
+
if (cell && !apiRef.current.getRow(cell.id)) {
|
|
233
|
+
apiRef.current.setState(function (state) {
|
|
234
|
+
return _extends({}, state, {
|
|
235
|
+
focus: {
|
|
236
|
+
cell: null,
|
|
237
|
+
columnHeader: null
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}, [apiRef]);
|
|
230
243
|
useGridApiMethod(apiRef, {
|
|
231
244
|
setCellFocus: setCellFocus,
|
|
232
245
|
setColumnHeaderFocus: setColumnHeaderFocus,
|
|
233
246
|
unstable_moveFocusToRelativeCell: moveFocusToRelativeCell
|
|
234
247
|
}, 'GridFocusApi');
|
|
235
|
-
React.useEffect(function () {
|
|
236
|
-
var cell = gridFocusCellSelector(apiRef);
|
|
237
|
-
|
|
238
|
-
if (cell) {
|
|
239
|
-
var updatedRow = apiRef.current.getRow(cell.id);
|
|
240
|
-
|
|
241
|
-
if (!updatedRow) {
|
|
242
|
-
apiRef.current.setState(function (state) {
|
|
243
|
-
return _extends({}, state, {
|
|
244
|
-
focus: {
|
|
245
|
-
cell: null,
|
|
246
|
-
columnHeader: null
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}, [apiRef, props.rows]);
|
|
253
248
|
React.useEffect(function () {
|
|
254
249
|
var doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
255
250
|
doc.addEventListener('click', handleDocumentClick);
|
|
@@ -257,10 +252,11 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
257
252
|
doc.removeEventListener('click', handleDocumentClick);
|
|
258
253
|
};
|
|
259
254
|
}, [apiRef, handleDocumentClick]);
|
|
260
|
-
useGridApiEventHandler(apiRef,
|
|
261
|
-
useGridApiEventHandler(apiRef,
|
|
262
|
-
useGridApiEventHandler(apiRef,
|
|
263
|
-
useGridApiEventHandler(apiRef,
|
|
264
|
-
useGridApiEventHandler(apiRef,
|
|
265
|
-
useGridApiEventHandler(apiRef,
|
|
255
|
+
useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);
|
|
256
|
+
useGridApiEventHandler(apiRef, 'cellDoubleClick', handleCellDoubleClick);
|
|
257
|
+
useGridApiEventHandler(apiRef, 'cellMouseUp', handleCellMouseUp);
|
|
258
|
+
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
259
|
+
useGridApiEventHandler(apiRef, 'cellModeChange', handleCellModeChange);
|
|
260
|
+
useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
|
|
261
|
+
useGridApiEventHandler(apiRef, 'rowsSet', handleRowSet);
|
|
266
262
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { GridEvents } from '../../../models/events';
|
|
3
2
|
import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
4
3
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
5
4
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
@@ -319,10 +318,10 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
319
318
|
var cellParams = apiRef.current.getCellParams(params.id, params.field);
|
|
320
319
|
|
|
321
320
|
if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
|
|
322
|
-
apiRef.current.publishEvent(
|
|
321
|
+
apiRef.current.publishEvent('cellNavigationKeyDown', cellParams, event);
|
|
323
322
|
}
|
|
324
323
|
}, [apiRef]);
|
|
325
|
-
useGridApiEventHandler(apiRef,
|
|
326
|
-
useGridApiEventHandler(apiRef,
|
|
327
|
-
useGridApiEventHandler(apiRef,
|
|
324
|
+
useGridApiEventHandler(apiRef, 'cellNavigationKeyDown', handleCellNavigationKeyDown);
|
|
325
|
+
useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
326
|
+
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
328
327
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { gridVisibleTopLevelRowCountSelector } from '../filter';
|
|
6
5
|
import { gridPageSelector, gridPageSizeSelector } from './gridPaginationSelector';
|
|
7
6
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
@@ -49,7 +48,7 @@ export var useGridPage = function useGridPage(apiRef, props) {
|
|
|
49
48
|
propModel: props.page,
|
|
50
49
|
propOnChange: props.onPageChange,
|
|
51
50
|
stateSelector: gridPageSelector,
|
|
52
|
-
changeEvent:
|
|
51
|
+
changeEvent: 'pageChange'
|
|
53
52
|
});
|
|
54
53
|
/**
|
|
55
54
|
* API METHODS
|
|
@@ -120,8 +119,8 @@ export var useGridPage = function useGridPage(apiRef, props) {
|
|
|
120
119
|
});
|
|
121
120
|
};
|
|
122
121
|
|
|
123
|
-
useGridApiEventHandler(apiRef,
|
|
124
|
-
useGridApiEventHandler(apiRef,
|
|
122
|
+
useGridApiEventHandler(apiRef, 'pageSizeChange', handlePageSizeChange);
|
|
123
|
+
useGridApiEventHandler(apiRef, 'pageChange', handlePageChange);
|
|
125
124
|
/**
|
|
126
125
|
* EFFECTS
|
|
127
126
|
*/
|
|
@@ -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 { useGridLogger, useGridApiMethod, useGridApiEventHandler, useGridSelector } from '../../utils';
|
|
5
4
|
import { gridPageSizeSelector } from './gridPaginationSelector';
|
|
6
5
|
import { gridDensityRowHeightSelector } from '../density';
|
|
@@ -33,7 +32,7 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
|
|
|
33
32
|
propModel: props.pageSize,
|
|
34
33
|
propOnChange: props.onPageSizeChange,
|
|
35
34
|
stateSelector: gridPageSizeSelector,
|
|
36
|
-
changeEvent:
|
|
35
|
+
changeEvent: 'pageSizeChange'
|
|
37
36
|
});
|
|
38
37
|
/**
|
|
39
38
|
* API METHODS
|
|
@@ -106,7 +105,7 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
|
|
|
106
105
|
var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
107
106
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
108
107
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
109
|
-
useGridApiEventHandler(apiRef,
|
|
108
|
+
useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
110
109
|
/**
|
|
111
110
|
* EFFECTS
|
|
112
111
|
*/
|
|
@@ -1,11 +1,9 @@
|
|
|
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 { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
4
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
5
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
7
6
|
import { gridPreferencePanelStateSelector } from './gridPreferencePanelSelector';
|
|
8
|
-
import { useGridSelector } from '../../utils/useGridSelector';
|
|
9
7
|
export var preferencePanelStateInitializer = function preferencePanelStateInitializer(state, props) {
|
|
10
8
|
var _props$initialState$p, _props$initialState;
|
|
11
9
|
|
|
@@ -21,7 +19,6 @@ export var preferencePanelStateInitializer = function preferencePanelStateInitia
|
|
|
21
19
|
|
|
22
20
|
export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
23
21
|
var logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
|
|
24
|
-
var preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
25
22
|
var hideTimeout = React.useRef();
|
|
26
23
|
var immediateTimeout = React.useRef();
|
|
27
24
|
/**
|
|
@@ -30,9 +27,10 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
30
27
|
|
|
31
28
|
var hidePreferences = React.useCallback(function () {
|
|
32
29
|
logger.debug('Hiding Preferences Panel');
|
|
30
|
+
var preferencePanelState = gridPreferencePanelStateSelector(apiRef.current.state);
|
|
33
31
|
|
|
34
32
|
if (preferencePanelState.openedPanelValue) {
|
|
35
|
-
apiRef.current.publishEvent(
|
|
33
|
+
apiRef.current.publishEvent('preferencePanelClose', {
|
|
36
34
|
openedPanelValue: preferencePanelState.openedPanelValue
|
|
37
35
|
});
|
|
38
36
|
}
|
|
@@ -45,7 +43,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
45
43
|
});
|
|
46
44
|
});
|
|
47
45
|
apiRef.current.forceUpdate();
|
|
48
|
-
}, [apiRef, logger
|
|
46
|
+
}, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
|
|
49
47
|
// The issue is in MUI core V4 => Fixed in V5
|
|
50
48
|
|
|
51
49
|
var doNotHidePanel = React.useCallback(function () {
|
|
@@ -69,7 +67,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
|
|
|
69
67
|
})
|
|
70
68
|
});
|
|
71
69
|
});
|
|
72
|
-
apiRef.current.publishEvent(
|
|
70
|
+
apiRef.current.publishEvent('preferencePanelOpen', {
|
|
73
71
|
openedPanelValue: newValue
|
|
74
72
|
});
|
|
75
73
|
apiRef.current.forceUpdate();
|
|
@@ -14,6 +14,9 @@ export var gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector,
|
|
|
14
14
|
export var gridRowsLookupSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
15
15
|
return rows.idRowsLookup;
|
|
16
16
|
});
|
|
17
|
+
export var gridRowsIdToIdLookupSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
18
|
+
return rows.idToIdLookup;
|
|
19
|
+
});
|
|
17
20
|
export var gridRowTreeSelector = createSelector(gridRowsStateSelector, function (rows) {
|
|
18
21
|
return rows.tree;
|
|
19
22
|
});
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["rowsBeforePartialUpdates"];
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* A helper function to check if the id provided is valid.
|
|
3
8
|
* @param {GridRowId} id Id as [[GridRowId]].
|
|
@@ -10,4 +15,80 @@ export function checkGridRowIdIsValid(id, row) {
|
|
|
10
15
|
if (id == null) {
|
|
11
16
|
throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
12
17
|
}
|
|
13
|
-
}
|
|
18
|
+
}
|
|
19
|
+
export var getRowIdFromRowModel = function getRowIdFromRowModel(rowModel, getRowId, detailErrorMessage) {
|
|
20
|
+
var id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
21
|
+
checkGridRowIdIsValid(id, rowModel, detailErrorMessage);
|
|
22
|
+
return id;
|
|
23
|
+
};
|
|
24
|
+
export var createRowsInternalCache = function createRowsInternalCache(_ref) {
|
|
25
|
+
var rows = _ref.rows,
|
|
26
|
+
getRowId = _ref.getRowId,
|
|
27
|
+
loading = _ref.loading;
|
|
28
|
+
var cache = {
|
|
29
|
+
rowsBeforePartialUpdates: rows,
|
|
30
|
+
loadingPropBeforePartialUpdates: loading,
|
|
31
|
+
idRowsLookup: {},
|
|
32
|
+
idToIdLookup: {},
|
|
33
|
+
ids: []
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
for (var i = 0; i < rows.length; i += 1) {
|
|
37
|
+
var row = rows[i];
|
|
38
|
+
var id = getRowIdFromRowModel(row, getRowId);
|
|
39
|
+
cache.idRowsLookup[id] = row;
|
|
40
|
+
cache.idToIdLookup[id] = id;
|
|
41
|
+
cache.ids.push(id);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return cache;
|
|
45
|
+
};
|
|
46
|
+
export var getRowsStateFromCache = function getRowsStateFromCache(_ref2) {
|
|
47
|
+
var apiRef = _ref2.apiRef,
|
|
48
|
+
previousTree = _ref2.previousTree,
|
|
49
|
+
rowCountProp = _ref2.rowCountProp,
|
|
50
|
+
loadingProp = _ref2.loadingProp;
|
|
51
|
+
|
|
52
|
+
var _apiRef$current$unsta = apiRef.current.unstable_caches.rows,
|
|
53
|
+
rowsBeforePartialUpdates = _apiRef$current$unsta.rowsBeforePartialUpdates,
|
|
54
|
+
cacheForGrouping = _objectWithoutProperties(_apiRef$current$unsta, _excluded);
|
|
55
|
+
|
|
56
|
+
var rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
57
|
+
var groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, cacheForGrouping, {
|
|
58
|
+
previousTree: previousTree
|
|
59
|
+
}));
|
|
60
|
+
var processedGroupingResponse = apiRef.current.unstable_applyPipeProcessors('hydrateRows', groupingResponse);
|
|
61
|
+
var dataTopLevelRowCount = processedGroupingResponse.treeDepth === 1 ? processedGroupingResponse.ids.length : Object.values(processedGroupingResponse.tree).filter(function (node) {
|
|
62
|
+
return node.parent == null;
|
|
63
|
+
}).length;
|
|
64
|
+
return _extends({}, processedGroupingResponse, {
|
|
65
|
+
groupingResponseBeforeRowHydration: groupingResponse,
|
|
66
|
+
loading: loadingProp,
|
|
67
|
+
totalRowCount: Math.max(rowCount, processedGroupingResponse.ids.length),
|
|
68
|
+
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
export var getTreeNodeDescendants = function getTreeNodeDescendants(tree, parentId, skipAutoGeneratedRows) {
|
|
72
|
+
var _tree$parentId;
|
|
73
|
+
|
|
74
|
+
var children = (_tree$parentId = tree[parentId]) == null ? void 0 : _tree$parentId.children;
|
|
75
|
+
|
|
76
|
+
if (children == null) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var validDescendants = [];
|
|
81
|
+
|
|
82
|
+
for (var i = 0; i < children.length; i += 1) {
|
|
83
|
+
var child = children[i];
|
|
84
|
+
var childNode = tree[child];
|
|
85
|
+
|
|
86
|
+
if (!skipAutoGeneratedRows || !childNode.isAutoGenerated) {
|
|
87
|
+
validDescendants.push(child);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
validDescendants.push.apply(validDescendants, _toConsumableArray(getTreeNodeDescendants(tree, childNode.id, skipAutoGeneratedRows)));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return validDescendants;
|
|
94
|
+
};
|