@mui/x-data-grid 6.4.0 → 6.6.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 +134 -2
- package/DataGrid/DataGrid.js +10 -3
- package/DataGrid/useDataGridProps.js +5 -12
- package/README.md +2 -2
- package/colDef/gridNumericOperators.js +0 -6
- package/components/GridColumnHeaders.js +4 -9
- package/components/GridHeader.d.ts +2 -2
- package/components/base/GridBody.d.ts +1 -1
- package/components/base/GridFooterPlaceholder.d.ts +2 -2
- package/components/base/GridOverlays.d.ts +2 -2
- package/components/cell/GridActionsCell.d.ts +3 -3
- package/components/cell/GridActionsCell.js +3 -3
- package/components/cell/GridBooleanCell.d.ts +1 -1
- package/components/cell/GridEditBooleanCell.d.ts +2 -2
- package/components/cell/GridEditDateCell.d.ts +2 -2
- package/components/cell/GridEditInputCell.d.ts +1 -1
- package/components/cell/GridEditInputCell.js +4 -1
- package/components/cell/GridEditSingleSelectCell.d.ts +3 -3
- package/components/cell/GridEditSingleSelectCell.js +5 -5
- package/components/cell/GridSkeletonCell.d.ts +1 -1
- package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
- package/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -2
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -2
- package/components/columnHeaders/GridColumnHeaderSeparator.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderTitle.d.ts +1 -1
- package/components/containers/GridRoot.js +1 -3
- package/components/index.d.ts +0 -1
- package/components/index.js +1 -2
- package/components/menu/GridMenu.d.ts +1 -1
- package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.d.ts +2 -2
- package/components/panel/GridColumnsPanel.d.ts +2 -2
- package/components/panel/GridPanelContent.d.ts +1 -1
- package/components/panel/GridPanelFooter.d.ts +1 -1
- package/components/panel/GridPanelHeader.d.ts +1 -1
- package/components/panel/GridPreferencesPanel.js +3 -1
- package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +15 -2
- package/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
- package/components/panel/filterPanel/GridFilterInputDate.d.ts +9 -2
- package/components/panel/filterPanel/GridFilterInputDate.js +27 -6
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
- package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
- package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +9 -2
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
- package/components/panel/filterPanel/GridFilterInputValue.d.ts +11 -4
- package/components/panel/filterPanel/GridFilterInputValue.js +29 -6
- package/components/panel/filterPanel/GridFilterPanel.d.ts +2 -1
- package/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/components/panel/filterPanel/index.d.ts +3 -1
- package/components/panel/filterPanel/index.js +2 -1
- package/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/components/toolbar/GridToolbarExport.d.ts +2 -2
- package/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/components/toolbar/GridToolbarQuickFilter.d.ts +2 -2
- package/constants/localeTextConstants.js +26 -0
- package/context/GridContextProvider.d.ts +1 -1
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +10 -2
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +10 -3
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
- package/hooks/features/dimensions/useGridDimensions.js +2 -2
- package/hooks/features/editing/useGridEditing.js +0 -3
- package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
- package/hooks/features/filter/gridFilterSelector.js +2 -2
- package/hooks/features/filter/gridFilterState.d.ts +6 -6
- package/hooks/features/filter/gridFilterState.js +6 -0
- package/hooks/features/filter/useGridFilter.js +29 -9
- package/hooks/features/focus/gridFocusState.d.ts +2 -0
- package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
- package/hooks/features/focus/gridFocusStateSelector.js +6 -0
- package/hooks/features/focus/useGridFocus.js +55 -9
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -0
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
- package/hooks/features/headerFiltering/index.d.ts +1 -0
- package/hooks/features/headerFiltering/index.js +1 -0
- package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +6 -0
- package/hooks/features/headerFiltering/useGridHeaderFiltering.js +91 -0
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +2 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
- package/hooks/features/preferencesPanel/gridPreferencePanelState.d.ts +2 -0
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/hooks/features/rows/useGridRows.js +16 -1
- package/hooks/features/rows/useGridRowsMeta.js +11 -12
- package/index.js +1 -1
- package/internals/index.d.ts +6 -1
- package/internals/index.js +4 -0
- package/internals/utils/index.d.ts +1 -0
- package/internals/utils/index.js +2 -1
- package/internals/utils/useProps.d.ts +8 -0
- package/internals/utils/useProps.js +33 -0
- package/legacy/DataGrid/DataGrid.js +10 -3
- package/legacy/DataGrid/useDataGridProps.js +8 -8
- package/legacy/colDef/gridNumericOperators.js +0 -6
- package/legacy/components/GridColumnHeaders.js +4 -9
- package/legacy/components/cell/GridActionsCell.js +3 -3
- package/legacy/components/cell/GridEditInputCell.js +4 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +5 -5
- package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/legacy/components/containers/GridRoot.js +1 -3
- package/legacy/components/index.js +1 -2
- package/legacy/components/panel/GridPreferencesPanel.js +3 -1
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +79 -35
- package/legacy/components/panel/filterPanel/GridFilterInputDate.js +26 -5
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +55 -31
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +28 -5
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/legacy/components/panel/filterPanel/index.js +2 -1
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +11 -5
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/legacy/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/legacy/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/legacy/constants/localeTextConstants.js +26 -0
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
- package/legacy/hooks/features/dimensions/useGridDimensions.js +2 -2
- package/legacy/hooks/features/editing/useGridEditing.js +0 -3
- package/legacy/hooks/features/filter/gridFilterSelector.js +4 -4
- package/legacy/hooks/features/filter/gridFilterState.js +6 -0
- package/legacy/hooks/features/filter/useGridFilter.js +29 -9
- package/legacy/hooks/features/focus/gridFocusStateSelector.js +10 -0
- package/legacy/hooks/features/focus/useGridFocus.js +58 -9
- package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +11 -0
- package/legacy/hooks/features/headerFiltering/index.js +1 -0
- package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +93 -0
- package/legacy/hooks/features/index.js +2 -1
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/legacy/hooks/features/rows/useGridRows.js +16 -1
- package/legacy/hooks/features/rows/useGridRowsMeta.js +12 -20
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +4 -0
- package/legacy/internals/utils/index.js +2 -1
- package/legacy/internals/utils/useProps.js +33 -0
- package/legacy/locales/arSD.js +28 -0
- package/legacy/locales/beBY.js +28 -0
- package/legacy/locales/bgBG.js +28 -0
- package/legacy/locales/csCZ.js +36 -8
- package/legacy/locales/daDK.js +28 -0
- package/legacy/locales/deDE.js +28 -0
- package/legacy/locales/elGR.js +27 -0
- package/legacy/locales/esES.js +28 -0
- package/legacy/locales/faIR.js +28 -0
- package/legacy/locales/fiFI.js +28 -0
- package/legacy/locales/frFR.js +26 -0
- package/legacy/locales/heIL.js +30 -2
- package/legacy/locales/huHU.js +28 -0
- package/legacy/locales/itIT.js +28 -0
- package/legacy/locales/jaJP.js +28 -0
- package/legacy/locales/koKR.js +28 -0
- package/legacy/locales/nbNO.js +28 -0
- package/legacy/locales/nlNL.js +26 -0
- package/legacy/locales/plPL.js +28 -0
- package/legacy/locales/ptBR.js +28 -0
- package/legacy/locales/roRO.js +28 -0
- package/legacy/locales/ruRU.js +28 -0
- package/legacy/locales/skSK.js +28 -0
- package/legacy/locales/svSE.js +28 -0
- package/legacy/locales/trTR.js +28 -0
- package/legacy/locales/ukUA.js +28 -0
- package/legacy/locales/urPK.js +28 -0
- package/legacy/locales/viVN.js +27 -0
- package/legacy/locales/zhCN.js +28 -0
- package/legacy/locales/zhTW.js +28 -0
- package/legacy/material/index.js +2 -0
- package/legacy/models/api/gridHeaderFilteringApi.js +1 -0
- package/legacy/models/gridFilterItem.js +1 -1
- package/legacy/models/gridHeaderFilteringModel.js +1 -0
- package/legacy/models/index.js +0 -1
- package/locales/arSD.js +28 -0
- package/locales/beBY.js +28 -0
- package/locales/bgBG.js +28 -0
- package/locales/csCZ.js +36 -8
- package/locales/daDK.js +28 -0
- package/locales/deDE.js +28 -0
- package/locales/elGR.js +27 -0
- package/locales/esES.js +28 -0
- package/locales/faIR.js +28 -0
- package/locales/fiFI.js +28 -0
- package/locales/frFR.js +26 -0
- package/locales/heIL.js +30 -2
- package/locales/huHU.js +28 -0
- package/locales/itIT.js +28 -0
- package/locales/jaJP.js +28 -0
- package/locales/koKR.js +28 -0
- package/locales/nbNO.js +28 -0
- package/locales/nlNL.js +26 -0
- package/locales/plPL.js +28 -0
- package/locales/ptBR.js +28 -0
- package/locales/roRO.js +28 -0
- package/locales/ruRU.js +28 -0
- package/locales/skSK.js +28 -0
- package/locales/svSE.js +28 -0
- package/locales/trTR.js +28 -0
- package/locales/ukUA.js +28 -0
- package/locales/urPK.js +28 -0
- package/locales/viVN.js +27 -0
- package/locales/zhCN.js +28 -0
- package/locales/zhTW.js +28 -0
- package/material/components/MUISelectOption.d.ts +2 -2
- package/material/index.d.ts +3 -66
- package/material/index.js +2 -0
- package/models/api/gridApiCommon.d.ts +3 -2
- package/models/api/gridCoreApi.d.ts +4 -0
- package/models/api/gridFilterApi.d.ts +3 -1
- package/models/api/gridFocusApi.d.ts +6 -0
- package/models/api/gridHeaderFilteringApi.d.ts +30 -0
- package/models/api/gridHeaderFilteringApi.js +1 -0
- package/models/api/gridLocaleTextApi.d.ts +25 -0
- package/models/api/gridPreferencesPanelApi.d.ts +3 -1
- package/models/events/gridEventLookup.d.ts +27 -1
- package/models/gridFilterItem.d.ts +1 -1
- package/models/gridFilterItem.js +1 -1
- package/models/gridFilterOperator.d.ts +5 -1
- package/models/gridHeaderFilteringModel.d.ts +5 -0
- package/models/gridHeaderFilteringModel.js +1 -0
- package/models/gridSlotsComponent.d.ts +16 -4
- package/models/gridStateCommunity.d.ts +4 -0
- package/models/index.d.ts +1 -1
- package/models/index.js +0 -1
- package/models/props/DataGridProps.d.ts +5 -0
- package/modern/DataGrid/DataGrid.js +10 -3
- package/modern/DataGrid/useDataGridProps.js +5 -12
- package/modern/colDef/gridNumericOperators.js +0 -6
- package/modern/components/GridColumnHeaders.js +4 -9
- package/modern/components/cell/GridActionsCell.js +3 -3
- package/modern/components/cell/GridEditInputCell.js +4 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +5 -5
- package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/modern/components/containers/GridRoot.js +1 -3
- package/modern/components/index.js +1 -2
- package/modern/components/panel/GridPreferencesPanel.js +3 -1
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
- package/modern/components/panel/filterPanel/GridFilterInputDate.js +27 -6
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +29 -6
- package/modern/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/modern/components/panel/filterPanel/index.js +2 -1
- package/modern/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/modern/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/modern/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/modern/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/modern/constants/localeTextConstants.js +26 -0
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
- package/modern/hooks/features/dimensions/useGridDimensions.js +2 -2
- package/modern/hooks/features/editing/useGridEditing.js +0 -3
- package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
- package/modern/hooks/features/filter/gridFilterState.js +6 -0
- package/modern/hooks/features/filter/useGridFilter.js +29 -9
- package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -0
- package/modern/hooks/features/focus/useGridFocus.js +55 -9
- package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
- package/modern/hooks/features/headerFiltering/index.js +1 -0
- package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +90 -0
- package/modern/hooks/features/index.js +2 -1
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/modern/hooks/features/rows/useGridRows.js +16 -1
- package/modern/hooks/features/rows/useGridRowsMeta.js +11 -12
- package/modern/index.js +1 -1
- package/modern/internals/index.js +4 -0
- package/modern/internals/utils/index.js +2 -1
- package/modern/internals/utils/useProps.js +32 -0
- package/modern/locales/arSD.js +28 -0
- package/modern/locales/beBY.js +28 -0
- package/modern/locales/bgBG.js +28 -0
- package/modern/locales/csCZ.js +36 -8
- package/modern/locales/daDK.js +28 -0
- package/modern/locales/deDE.js +28 -0
- package/modern/locales/elGR.js +27 -0
- package/modern/locales/esES.js +28 -0
- package/modern/locales/faIR.js +28 -0
- package/modern/locales/fiFI.js +28 -0
- package/modern/locales/frFR.js +26 -0
- package/modern/locales/heIL.js +30 -2
- package/modern/locales/huHU.js +28 -0
- package/modern/locales/itIT.js +28 -0
- package/modern/locales/jaJP.js +28 -0
- package/modern/locales/koKR.js +28 -0
- package/modern/locales/nbNO.js +28 -0
- package/modern/locales/nlNL.js +26 -0
- package/modern/locales/plPL.js +28 -0
- package/modern/locales/ptBR.js +28 -0
- package/modern/locales/roRO.js +28 -0
- package/modern/locales/ruRU.js +28 -0
- package/modern/locales/skSK.js +28 -0
- package/modern/locales/svSE.js +28 -0
- package/modern/locales/trTR.js +28 -0
- package/modern/locales/ukUA.js +28 -0
- package/modern/locales/urPK.js +28 -0
- package/modern/locales/viVN.js +27 -0
- package/modern/locales/zhCN.js +28 -0
- package/modern/locales/zhTW.js +28 -0
- package/modern/material/index.js +2 -0
- package/modern/models/api/gridHeaderFilteringApi.js +1 -0
- package/modern/models/gridFilterItem.js +1 -1
- package/modern/models/gridHeaderFilteringModel.js +1 -0
- package/modern/models/index.js +0 -1
- package/node/DataGrid/DataGrid.js +10 -3
- package/node/DataGrid/useDataGridProps.js +4 -11
- package/node/colDef/gridNumericOperators.js +0 -6
- package/node/components/GridColumnHeaders.js +3 -8
- package/node/components/cell/GridActionsCell.js +3 -3
- package/node/components/cell/GridEditInputCell.js +4 -1
- package/node/components/cell/GridEditSingleSelectCell.js +5 -5
- package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +12 -3
- package/node/components/containers/GridRoot.js +1 -3
- package/node/components/index.js +0 -11
- package/node/components/panel/GridPreferencesPanel.js +3 -1
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +78 -35
- package/node/components/panel/filterPanel/GridFilterInputDate.js +27 -6
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
- package/node/components/panel/filterPanel/GridFilterInputValue.js +29 -6
- package/node/components/panel/filterPanel/GridFilterPanel.js +2 -1
- package/node/components/panel/filterPanel/index.js +26 -8
- package/node/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/node/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/node/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/node/components/toolbar/GridToolbarFilterButton.js +10 -3
- package/node/constants/localeTextConstants.js +26 -0
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
- package/node/hooks/features/dimensions/useGridDimensions.js +2 -2
- package/node/hooks/features/editing/useGridEditing.js +0 -3
- package/node/hooks/features/filter/gridFilterSelector.js +2 -2
- package/node/hooks/features/filter/gridFilterState.js +6 -0
- package/node/hooks/features/filter/useGridFilter.js +30 -10
- package/node/hooks/features/focus/gridFocusStateSelector.js +9 -1
- package/node/hooks/features/focus/useGridFocus.js +55 -9
- package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +15 -0
- package/node/hooks/features/headerFiltering/index.js +16 -0
- package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +101 -0
- package/node/hooks/features/index.js +11 -0
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/node/hooks/features/rows/useGridRows.js +16 -1
- package/node/hooks/features/rows/useGridRowsMeta.js +11 -12
- package/node/index.js +1 -1
- package/node/internals/index.js +46 -0
- package/node/internals/utils/index.js +11 -0
- package/node/internals/utils/useProps.js +41 -0
- package/node/locales/arSD.js +28 -0
- package/node/locales/beBY.js +28 -0
- package/node/locales/bgBG.js +28 -0
- package/node/locales/csCZ.js +36 -8
- package/node/locales/daDK.js +28 -0
- package/node/locales/deDE.js +28 -0
- package/node/locales/elGR.js +27 -0
- package/node/locales/esES.js +28 -0
- package/node/locales/faIR.js +28 -0
- package/node/locales/fiFI.js +28 -0
- package/node/locales/frFR.js +26 -0
- package/node/locales/heIL.js +30 -2
- package/node/locales/huHU.js +28 -0
- package/node/locales/itIT.js +28 -0
- package/node/locales/jaJP.js +28 -0
- package/node/locales/koKR.js +28 -0
- package/node/locales/nbNO.js +28 -0
- package/node/locales/nlNL.js +26 -0
- package/node/locales/plPL.js +28 -0
- package/node/locales/ptBR.js +28 -0
- package/node/locales/roRO.js +28 -0
- package/node/locales/ruRU.js +28 -0
- package/node/locales/skSK.js +28 -0
- package/node/locales/svSE.js +28 -0
- package/node/locales/trTR.js +28 -0
- package/node/locales/ukUA.js +28 -0
- package/node/locales/urPK.js +28 -0
- package/node/locales/viVN.js +27 -0
- package/node/locales/zhCN.js +28 -0
- package/node/locales/zhTW.js +28 -0
- package/node/material/index.js +2 -0
- package/node/models/api/gridHeaderFilteringApi.js +5 -0
- package/node/models/gridFilterItem.js +1 -1
- package/node/models/gridHeaderFilteringModel.js +5 -0
- package/node/models/index.js +0 -11
- package/package.json +4 -4
- package/components/GridScrollArea.d.ts +0 -10
- package/components/GridScrollArea.js +0 -117
- package/legacy/components/GridScrollArea.js +0 -119
- package/legacy/lib/createDetectElementResize/index.js +0 -145
- package/lib/createDetectElementResize/index.d.ts +0 -18
- package/lib/createDetectElementResize/index.js +0 -145
- package/lib/createDetectElementResize/types.d.ts +0 -9
- package/modern/components/GridScrollArea.js +0 -117
- package/modern/lib/createDetectElementResize/index.js +0 -145
- package/node/components/GridScrollArea.js +0 -126
- package/node/lib/createDetectElementResize/index.js +0 -151
|
@@ -28,18 +28,28 @@ const filterStateInitializer = (state, props, apiRef) => {
|
|
|
28
28
|
return (0, _extends2.default)({}, state, {
|
|
29
29
|
filter: {
|
|
30
30
|
filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef),
|
|
31
|
-
visibleRowsLookup: {},
|
|
32
31
|
filteredDescendantCountLookup: {}
|
|
33
|
-
}
|
|
32
|
+
},
|
|
33
|
+
visibleRowsLookup: {}
|
|
34
34
|
});
|
|
35
35
|
};
|
|
36
|
+
exports.filterStateInitializer = filterStateInitializer;
|
|
37
|
+
const getVisibleRowsLookup = params => {
|
|
38
|
+
// For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
|
|
39
|
+
return params.filteredRowsLookup;
|
|
40
|
+
};
|
|
41
|
+
function getVisibleRowsLookupState(apiRef, state) {
|
|
42
|
+
return apiRef.current.applyStrategyProcessor('visibleRowsLookupCreation', {
|
|
43
|
+
tree: state.rows.tree,
|
|
44
|
+
filteredRowsLookup: state.filter.filteredRowsLookup
|
|
45
|
+
});
|
|
46
|
+
}
|
|
36
47
|
|
|
37
48
|
/**
|
|
38
49
|
* @requires useGridColumns (method, event)
|
|
39
50
|
* @requires useGridParamsApi (method)
|
|
40
51
|
* @requires useGridRows (event)
|
|
41
52
|
*/
|
|
42
|
-
exports.filterStateInitializer = filterStateInitializer;
|
|
43
53
|
const useGridFilter = (apiRef, props) => {
|
|
44
54
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridFilter');
|
|
45
55
|
apiRef.current.registerControlState({
|
|
@@ -57,9 +67,13 @@ const useGridFilter = (apiRef, props) => {
|
|
|
57
67
|
isRowMatchingFilters,
|
|
58
68
|
filterModel: filterModel ?? (0, _gridFilterState.getDefaultGridFilterModel)()
|
|
59
69
|
});
|
|
60
|
-
|
|
70
|
+
const newState = (0, _extends2.default)({}, state, {
|
|
61
71
|
filter: (0, _extends2.default)({}, state.filter, filteringResult)
|
|
62
72
|
});
|
|
73
|
+
const visibleRowsLookupState = getVisibleRowsLookupState(apiRef, newState);
|
|
74
|
+
return (0, _extends2.default)({}, newState, {
|
|
75
|
+
visibleRowsLookup: visibleRowsLookupState
|
|
76
|
+
});
|
|
63
77
|
});
|
|
64
78
|
apiRef.current.publishEvent('filteredRowsSet');
|
|
65
79
|
}, [props.filterMode, apiRef]);
|
|
@@ -115,7 +129,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
115
129
|
items
|
|
116
130
|
}), 'deleteFilterItem');
|
|
117
131
|
}, [apiRef]);
|
|
118
|
-
const showFilterPanel = React.useCallback(targetColumnField => {
|
|
132
|
+
const showFilterPanel = React.useCallback((targetColumnField, panelId, labelId) => {
|
|
119
133
|
logger.debug('Displaying filter panel');
|
|
120
134
|
if (targetColumnField) {
|
|
121
135
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
@@ -160,7 +174,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
160
174
|
items: newFilterItems
|
|
161
175
|
}));
|
|
162
176
|
}
|
|
163
|
-
apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.filters);
|
|
177
|
+
apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.filters, panelId, labelId);
|
|
164
178
|
}, [apiRef, logger, props.disableMultipleColumnsFiltering]);
|
|
165
179
|
const hideFilterPanel = React.useCallback(() => {
|
|
166
180
|
logger.debug('Hiding filter panel');
|
|
@@ -266,13 +280,10 @@ const useGridFilter = (apiRef, props) => {
|
|
|
266
280
|
}
|
|
267
281
|
return {
|
|
268
282
|
filteredRowsLookup,
|
|
269
|
-
// For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
|
|
270
|
-
visibleRowsLookup: filteredRowsLookup,
|
|
271
283
|
filteredDescendantCountLookup: {}
|
|
272
284
|
};
|
|
273
285
|
}
|
|
274
286
|
return {
|
|
275
|
-
visibleRowsLookup: {},
|
|
276
287
|
filteredRowsLookup: {},
|
|
277
288
|
filteredDescendantCountLookup: {}
|
|
278
289
|
};
|
|
@@ -282,6 +293,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
282
293
|
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
283
294
|
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
284
295
|
(0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
|
|
296
|
+
(0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'visibleRowsLookupCreation', getVisibleRowsLookup);
|
|
285
297
|
|
|
286
298
|
/**
|
|
287
299
|
* EVENTS
|
|
@@ -302,13 +314,21 @@ const useGridFilter = (apiRef, props) => {
|
|
|
302
314
|
apiRef.current.unstable_applyFilters();
|
|
303
315
|
}
|
|
304
316
|
}, [apiRef]);
|
|
317
|
+
const updateVisibleRowsLookupState = React.useCallback(() => {
|
|
318
|
+
apiRef.current.setState(state => {
|
|
319
|
+
return (0, _extends2.default)({}, state, {
|
|
320
|
+
visibleRowsLookup: getVisibleRowsLookupState(apiRef, state)
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
apiRef.current.forceUpdate();
|
|
324
|
+
}, [apiRef]);
|
|
305
325
|
|
|
306
326
|
// Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
|
|
307
327
|
// Otherwise, the state is not consistent during the render
|
|
308
328
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsSet', updateFilteredRows);
|
|
309
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
|
|
310
329
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnsChange', handleColumnsChange);
|
|
311
330
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
331
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
|
|
312
332
|
|
|
313
333
|
/**
|
|
314
334
|
* 1ST RENDER
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusCellSelector = void 0;
|
|
6
|
+
exports.unstable_gridTabIndexColumnHeaderFilterSelector = exports.unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridFocusColumnHeaderFilterSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusCellSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
const gridFocusStateSelector = state => state.focus;
|
|
9
9
|
exports.gridFocusStateSelector = gridFocusStateSelector;
|
|
@@ -13,6 +13,10 @@ const gridFocusColumnHeaderSelector = (0, _createSelector.createSelector)(gridFo
|
|
|
13
13
|
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
15
|
exports.gridFocusColumnHeaderSelector = gridFocusColumnHeaderSelector;
|
|
16
|
+
const unstable_gridFocusColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
|
|
17
|
+
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
19
|
+
exports.unstable_gridFocusColumnHeaderFilterSelector = unstable_gridFocusColumnHeaderFilterSelector;
|
|
16
20
|
const unstable_gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
17
21
|
exports.unstable_gridFocusColumnGroupHeaderSelector = unstable_gridFocusColumnGroupHeaderSelector;
|
|
18
22
|
const gridTabIndexStateSelector = state => state.tabIndex;
|
|
@@ -23,5 +27,9 @@ const gridTabIndexColumnHeaderSelector = (0, _createSelector.createSelector)(gri
|
|
|
23
27
|
|
|
24
28
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
25
29
|
exports.gridTabIndexColumnHeaderSelector = gridTabIndexColumnHeaderSelector;
|
|
30
|
+
const unstable_gridTabIndexColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeaderFilter);
|
|
31
|
+
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
33
|
+
exports.unstable_gridTabIndexColumnHeaderFilterSelector = unstable_gridTabIndexColumnHeaderFilterSelector;
|
|
26
34
|
const unstable_gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
27
35
|
exports.unstable_gridTabIndexColumnGroupHeaderSelector = unstable_gridTabIndexColumnGroupHeaderSelector;
|
|
@@ -16,17 +16,20 @@ var _gridFocusStateSelector = require("./gridFocusStateSelector");
|
|
|
16
16
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
17
17
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
18
18
|
var _utils2 = require("../../../utils/utils");
|
|
19
|
+
var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
19
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
21
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
22
|
const focusStateInitializer = state => (0, _extends2.default)({}, state, {
|
|
22
23
|
focus: {
|
|
23
24
|
cell: null,
|
|
24
25
|
columnHeader: null,
|
|
26
|
+
columnHeaderFilter: null,
|
|
25
27
|
columnGroupHeader: null
|
|
26
28
|
},
|
|
27
29
|
tabIndex: {
|
|
28
30
|
cell: null,
|
|
29
31
|
columnHeader: null,
|
|
32
|
+
columnHeaderFilter: null,
|
|
30
33
|
columnGroupHeader: null
|
|
31
34
|
}
|
|
32
35
|
});
|
|
@@ -62,6 +65,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
62
65
|
field
|
|
63
66
|
},
|
|
64
67
|
columnHeader: null,
|
|
68
|
+
columnHeaderFilter: null,
|
|
65
69
|
columnGroupHeader: null
|
|
66
70
|
},
|
|
67
71
|
focus: {
|
|
@@ -70,6 +74,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
70
74
|
field
|
|
71
75
|
},
|
|
72
76
|
columnHeader: null,
|
|
77
|
+
columnHeaderFilter: null,
|
|
73
78
|
columnGroupHeader: null
|
|
74
79
|
}
|
|
75
80
|
});
|
|
@@ -97,6 +102,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
97
102
|
columnHeader: {
|
|
98
103
|
field
|
|
99
104
|
},
|
|
105
|
+
columnHeaderFilter: null,
|
|
100
106
|
cell: null,
|
|
101
107
|
columnGroupHeader: null
|
|
102
108
|
},
|
|
@@ -104,6 +110,33 @@ const useGridFocus = (apiRef, props) => {
|
|
|
104
110
|
columnHeader: {
|
|
105
111
|
field
|
|
106
112
|
},
|
|
113
|
+
columnHeaderFilter: null,
|
|
114
|
+
cell: null,
|
|
115
|
+
columnGroupHeader: null
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
apiRef.current.forceUpdate();
|
|
120
|
+
}, [apiRef, logger, publishCellFocusOut]);
|
|
121
|
+
const setColumnHeaderFilterFocus = React.useCallback((field, event = {}) => {
|
|
122
|
+
const cell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
|
|
123
|
+
publishCellFocusOut(cell, event);
|
|
124
|
+
apiRef.current.setState(state => {
|
|
125
|
+
logger.debug(`Focusing on column header filter with colIndex=${field}`);
|
|
126
|
+
return (0, _extends2.default)({}, state, {
|
|
127
|
+
tabIndex: {
|
|
128
|
+
columnHeader: null,
|
|
129
|
+
columnHeaderFilter: {
|
|
130
|
+
field
|
|
131
|
+
},
|
|
132
|
+
cell: null,
|
|
133
|
+
columnGroupHeader: null
|
|
134
|
+
},
|
|
135
|
+
focus: {
|
|
136
|
+
columnHeader: null,
|
|
137
|
+
columnHeaderFilter: {
|
|
138
|
+
field
|
|
139
|
+
},
|
|
107
140
|
cell: null,
|
|
108
141
|
columnGroupHeader: null
|
|
109
142
|
}
|
|
@@ -124,6 +157,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
124
157
|
depth
|
|
125
158
|
},
|
|
126
159
|
columnHeader: null,
|
|
160
|
+
columnHeaderFilter: null,
|
|
127
161
|
cell: null
|
|
128
162
|
},
|
|
129
163
|
focus: {
|
|
@@ -132,6 +166,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
132
166
|
depth
|
|
133
167
|
},
|
|
134
168
|
columnHeader: null,
|
|
169
|
+
columnHeaderFilter: null,
|
|
135
170
|
cell: null
|
|
136
171
|
}
|
|
137
172
|
});
|
|
@@ -141,8 +176,16 @@ const useGridFocus = (apiRef, props) => {
|
|
|
141
176
|
const getColumnGroupHeaderFocus = React.useCallback(() => (0, _gridFocusStateSelector.unstable_gridFocusColumnGroupHeaderSelector)(apiRef), [apiRef]);
|
|
142
177
|
const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
|
|
143
178
|
let columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
144
|
-
let rowIndexToFocus = apiRef.current.getRowIndexRelativeToVisibleRows(id);
|
|
145
179
|
const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
|
|
180
|
+
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
|
|
181
|
+
pagination: props.pagination,
|
|
182
|
+
paginationMode: props.paginationMode
|
|
183
|
+
});
|
|
184
|
+
const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef);
|
|
185
|
+
|
|
186
|
+
// Include pinned rows as well
|
|
187
|
+
const currentPageRows = [].concat(pinnedRows.top || [], currentPage.rows, pinnedRows.bottom || []);
|
|
188
|
+
let rowIndexToFocus = currentPageRows.findIndex(row => row.id === id);
|
|
146
189
|
if (direction === 'right') {
|
|
147
190
|
columnIndexToFocus += 1;
|
|
148
191
|
} else if (direction === 'left') {
|
|
@@ -150,14 +193,10 @@ const useGridFocus = (apiRef, props) => {
|
|
|
150
193
|
} else {
|
|
151
194
|
rowIndexToFocus += 1;
|
|
152
195
|
}
|
|
153
|
-
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
|
|
154
|
-
pagination: props.pagination,
|
|
155
|
-
paginationMode: props.paginationMode
|
|
156
|
-
});
|
|
157
196
|
if (columnIndexToFocus >= visibleColumns.length) {
|
|
158
197
|
// Go to next row if we are after the last column
|
|
159
198
|
rowIndexToFocus += 1;
|
|
160
|
-
if (rowIndexToFocus <
|
|
199
|
+
if (rowIndexToFocus < currentPageRows.length) {
|
|
161
200
|
// Go to first column of the next row if there's one more row
|
|
162
201
|
columnIndexToFocus = 0;
|
|
163
202
|
}
|
|
@@ -169,8 +208,11 @@ const useGridFocus = (apiRef, props) => {
|
|
|
169
208
|
columnIndexToFocus = visibleColumns.length - 1;
|
|
170
209
|
}
|
|
171
210
|
}
|
|
172
|
-
rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, 0,
|
|
173
|
-
const rowToFocus =
|
|
211
|
+
rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, 0, currentPageRows.length - 1);
|
|
212
|
+
const rowToFocus = currentPageRows[rowIndexToFocus];
|
|
213
|
+
if (!rowToFocus) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
174
216
|
const colSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowToFocus.id, columnIndexToFocus);
|
|
175
217
|
if (colSpanInfo && colSpanInfo.spannedByColSpan) {
|
|
176
218
|
if (direction === 'left' || direction === 'below') {
|
|
@@ -224,6 +266,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
224
266
|
focus: {
|
|
225
267
|
cell: null,
|
|
226
268
|
columnHeader: null,
|
|
269
|
+
columnHeaderFilter: null,
|
|
227
270
|
columnGroupHeader: null
|
|
228
271
|
}
|
|
229
272
|
}));
|
|
@@ -262,6 +305,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
262
305
|
focus: {
|
|
263
306
|
cell: null,
|
|
264
307
|
columnHeader: null,
|
|
308
|
+
columnHeaderFilter: null,
|
|
265
309
|
columnGroupHeader: null
|
|
266
310
|
}
|
|
267
311
|
}));
|
|
@@ -290,6 +334,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
290
334
|
focus: {
|
|
291
335
|
cell: null,
|
|
292
336
|
columnHeader: null,
|
|
337
|
+
columnHeaderFilter: null,
|
|
293
338
|
columnGroupHeader: null
|
|
294
339
|
}
|
|
295
340
|
}));
|
|
@@ -297,7 +342,8 @@ const useGridFocus = (apiRef, props) => {
|
|
|
297
342
|
}, [apiRef]);
|
|
298
343
|
const focusApi = {
|
|
299
344
|
setCellFocus,
|
|
300
|
-
setColumnHeaderFocus
|
|
345
|
+
setColumnHeaderFocus,
|
|
346
|
+
setColumnHeaderFilterFocus
|
|
301
347
|
};
|
|
302
348
|
const focusPrivateApi = {
|
|
303
349
|
moveFocusToRelativeCell,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.unstable_gridHeaderFilteringStateSelector = exports.unstable_gridHeaderFilteringMenuSelector = exports.unstable_gridHeaderFilteringEditFieldSelector = void 0;
|
|
7
|
+
var _createSelector = require("../../../utils/createSelector");
|
|
8
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
|
+
|
|
10
|
+
const unstable_gridHeaderFilteringStateSelector = state => state.headerFiltering;
|
|
11
|
+
exports.unstable_gridHeaderFilteringStateSelector = unstable_gridHeaderFilteringStateSelector;
|
|
12
|
+
const unstable_gridHeaderFilteringEditFieldSelector = (0, _createSelector.createSelector)(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);
|
|
13
|
+
exports.unstable_gridHeaderFilteringEditFieldSelector = unstable_gridHeaderFilteringEditFieldSelector;
|
|
14
|
+
const unstable_gridHeaderFilteringMenuSelector = (0, _createSelector.createSelector)(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);
|
|
15
|
+
exports.unstable_gridHeaderFilteringMenuSelector = unstable_gridHeaderFilteringMenuSelector;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _gridHeaderFilteringSelectors = require("./gridHeaderFilteringSelectors");
|
|
7
|
+
Object.keys(_gridHeaderFilteringSelectors).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _gridHeaderFilteringSelectors[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _gridHeaderFilteringSelectors[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useGridHeaderFiltering = exports.headerFilteringStateInitializer = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
11
|
+
var _utils = require("../../utils");
|
|
12
|
+
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
const headerFilteringStateInitializer = state => (0, _extends2.default)({}, state, {
|
|
16
|
+
headerFiltering: {
|
|
17
|
+
editing: null,
|
|
18
|
+
menuOpen: null
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
exports.headerFilteringStateInitializer = headerFilteringStateInitializer;
|
|
22
|
+
const useGridHeaderFiltering = (apiRef, props) => {
|
|
23
|
+
const logger = (0, _utils.useGridLogger)(apiRef, 'useGridHeaderFiltering');
|
|
24
|
+
const setHeaderFilterState = React.useCallback(headerFilterState => {
|
|
25
|
+
apiRef.current.setState(state => {
|
|
26
|
+
// Safety check to avoid MIT users from using it
|
|
27
|
+
// This hook should ultimately be moved to the Pro package
|
|
28
|
+
if (props.signature === 'DataGrid') {
|
|
29
|
+
return state;
|
|
30
|
+
}
|
|
31
|
+
return (0, _extends2.default)({}, state, {
|
|
32
|
+
headerFiltering: {
|
|
33
|
+
editing: headerFilterState.editing ?? null,
|
|
34
|
+
menuOpen: headerFilterState.menuOpen ?? null
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
apiRef.current.forceUpdate();
|
|
39
|
+
}, [apiRef, props.signature]);
|
|
40
|
+
const startHeaderFilterEditMode = React.useCallback(field => {
|
|
41
|
+
logger.debug(`Starting edit mode on header filter for field: ${field}`);
|
|
42
|
+
apiRef.current.setHeaderFilterState({
|
|
43
|
+
editing: field
|
|
44
|
+
});
|
|
45
|
+
}, [apiRef, logger]);
|
|
46
|
+
const stopHeaderFilterEditMode = React.useCallback(() => {
|
|
47
|
+
logger.debug(`Stopping edit mode on header filter`);
|
|
48
|
+
apiRef.current.setHeaderFilterState({
|
|
49
|
+
editing: null
|
|
50
|
+
});
|
|
51
|
+
}, [apiRef, logger]);
|
|
52
|
+
const showHeaderFilterMenu = React.useCallback(field => {
|
|
53
|
+
logger.debug(`Opening header filter menu for field: ${field}`);
|
|
54
|
+
apiRef.current.setHeaderFilterState({
|
|
55
|
+
menuOpen: field
|
|
56
|
+
});
|
|
57
|
+
}, [apiRef, logger]);
|
|
58
|
+
const hideHeaderFilterMenu = React.useCallback(() => {
|
|
59
|
+
logger.debug(`Hiding header filter menu for active field`);
|
|
60
|
+
let fieldToFocus = apiRef.current.state.headerFiltering.menuOpen;
|
|
61
|
+
if (fieldToFocus) {
|
|
62
|
+
const columnLookup = (0, _gridColumnsSelector.gridColumnLookupSelector)(apiRef);
|
|
63
|
+
const columnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
|
|
64
|
+
const orderedFields = (0, _gridColumnsSelector.gridColumnFieldsSelector)(apiRef);
|
|
65
|
+
|
|
66
|
+
// If the column was removed from the grid, we need to find the closest visible field
|
|
67
|
+
if (!columnLookup[fieldToFocus]) {
|
|
68
|
+
fieldToFocus = orderedFields[0];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// If the field to focus is hidden, we need to find the closest visible field
|
|
72
|
+
if (columnVisibilityModel[fieldToFocus] === false) {
|
|
73
|
+
// contains visible column fields + the field that was just hidden
|
|
74
|
+
const visibleOrderedFields = orderedFields.filter(field => {
|
|
75
|
+
if (field === fieldToFocus) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return columnVisibilityModel[field] !== false;
|
|
79
|
+
});
|
|
80
|
+
const fieldIndex = visibleOrderedFields.indexOf(fieldToFocus);
|
|
81
|
+
fieldToFocus = visibleOrderedFields[fieldIndex + 1] || visibleOrderedFields[fieldIndex - 1];
|
|
82
|
+
}
|
|
83
|
+
apiRef.current.setHeaderFilterState({
|
|
84
|
+
menuOpen: null
|
|
85
|
+
});
|
|
86
|
+
apiRef.current.setColumnHeaderFilterFocus(fieldToFocus);
|
|
87
|
+
}
|
|
88
|
+
}, [apiRef, logger]);
|
|
89
|
+
const headerFilterPrivateApi = {
|
|
90
|
+
setHeaderFilterState
|
|
91
|
+
};
|
|
92
|
+
const headerFilterApi = {
|
|
93
|
+
startHeaderFilterEditMode,
|
|
94
|
+
stopHeaderFilterEditMode,
|
|
95
|
+
showHeaderFilterMenu,
|
|
96
|
+
hideHeaderFilterMenu
|
|
97
|
+
};
|
|
98
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterApi, 'public');
|
|
99
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterPrivateApi, 'private');
|
|
100
|
+
};
|
|
101
|
+
exports.useGridHeaderFiltering = useGridHeaderFiltering;
|
|
@@ -145,4 +145,15 @@ Object.keys(_statePersistence).forEach(function (key) {
|
|
|
145
145
|
return _statePersistence[key];
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
|
+
});
|
|
149
|
+
var _headerFiltering = require("./headerFiltering");
|
|
150
|
+
Object.keys(_headerFiltering).forEach(function (key) {
|
|
151
|
+
if (key === "default" || key === "__esModule") return;
|
|
152
|
+
if (key in exports && exports[key] === _headerFiltering[key]) return;
|
|
153
|
+
Object.defineProperty(exports, key, {
|
|
154
|
+
enumerable: true,
|
|
155
|
+
get: function () {
|
|
156
|
+
return _headerFiltering[key];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
148
159
|
});
|
|
@@ -20,6 +20,7 @@ var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
|
20
20
|
var _focus = require("../focus");
|
|
21
21
|
var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
|
|
22
22
|
var _useGridSelector = require("../../utils/useGridSelector");
|
|
23
|
+
var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilteringSelectors");
|
|
23
24
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
24
25
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -76,6 +77,9 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
76
77
|
const initialCurrentPageRows = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props).rows;
|
|
77
78
|
const theme = (0, _styles.useTheme)();
|
|
78
79
|
const currentPageRows = React.useMemo(() => enrichPageRowsWithPinnedRows(apiRef, initialCurrentPageRows), [apiRef, initialCurrentPageRows]);
|
|
80
|
+
const headerFilteringEnabled =
|
|
81
|
+
// @ts-expect-error // TODO move relevant code to the `DataGridPro`
|
|
82
|
+
props.signature !== 'DataGrid' && props.unstable_headerFilters;
|
|
79
83
|
|
|
80
84
|
/**
|
|
81
85
|
* @param {number} colIndex Index of the column to focus
|
|
@@ -112,6 +116,14 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
112
116
|
const field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
113
117
|
apiRef.current.setColumnHeaderFocus(field, event);
|
|
114
118
|
}, [apiRef, logger]);
|
|
119
|
+
const goToHeaderFilter = React.useCallback((colIndex, event) => {
|
|
120
|
+
logger.debug(`Navigating to header filter col ${colIndex}`);
|
|
121
|
+
apiRef.current.scrollToIndexes({
|
|
122
|
+
colIndex
|
|
123
|
+
});
|
|
124
|
+
const field = apiRef.current.getVisibleColumns()[colIndex].field;
|
|
125
|
+
apiRef.current.setColumnHeaderFilterFocus(field, event);
|
|
126
|
+
}, [apiRef, logger]);
|
|
115
127
|
const goToGroupHeader = React.useCallback((colIndex, depth, event) => {
|
|
116
128
|
logger.debug(`Navigating to header col ${colIndex}`);
|
|
117
129
|
apiRef.current.scrollToIndexes({
|
|
@@ -123,7 +135,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
123
135
|
apiRef.current.setColumnGroupHeaderFocus(field, depth, event);
|
|
124
136
|
}, [apiRef, logger]);
|
|
125
137
|
const getRowIdFromIndex = React.useCallback(rowIndex => {
|
|
126
|
-
return currentPageRows[rowIndex].id;
|
|
138
|
+
return currentPageRows?.[rowIndex].id;
|
|
127
139
|
}, [currentPageRows]);
|
|
128
140
|
const handleColumnHeaderKeyDown = React.useCallback((params, event) => {
|
|
129
141
|
const headerTitleNode = event.currentTarget.querySelector(`.${_gridClasses.gridClasses.columnHeaderTitleContainerContent}`);
|
|
@@ -149,7 +161,11 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
149
161
|
case 'ArrowDown':
|
|
150
162
|
{
|
|
151
163
|
if (firstRowIndexInPage !== null) {
|
|
152
|
-
|
|
164
|
+
if (headerFilteringEnabled) {
|
|
165
|
+
goToHeaderFilter(colIndexBefore, event);
|
|
166
|
+
} else {
|
|
167
|
+
goToCell(colIndexBefore, getRowIdFromIndex(firstRowIndexInPage));
|
|
168
|
+
}
|
|
153
169
|
}
|
|
154
170
|
break;
|
|
155
171
|
}
|
|
@@ -223,7 +239,97 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
223
239
|
if (shouldPreventDefault) {
|
|
224
240
|
event.preventDefault();
|
|
225
241
|
}
|
|
226
|
-
}, [apiRef, currentPageRows.length,
|
|
242
|
+
}, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, theme.direction, goToHeader, goToGroupHeader]);
|
|
243
|
+
const handleHeaderFilterKeyDown = React.useCallback((params, event) => {
|
|
244
|
+
const dimensions = apiRef.current.getRootDimensions();
|
|
245
|
+
if (!dimensions) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const isEditing = (0, _gridHeaderFilteringSelectors.unstable_gridHeaderFilteringEditFieldSelector)(apiRef) === params.field;
|
|
249
|
+
const isHeaderMenuOpen = (0, _gridHeaderFilteringSelectors.unstable_gridHeaderFilteringMenuSelector)(apiRef) === params.field;
|
|
250
|
+
if (isEditing || isHeaderMenuOpen || !(0, _keyboardUtils.isNavigationKey)(event.key)) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
254
|
+
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
255
|
+
const firstRowIndexInPage = 0;
|
|
256
|
+
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
257
|
+
const firstColIndex = 0;
|
|
258
|
+
const lastColIndex = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef).length - 1;
|
|
259
|
+
let shouldPreventDefault = true;
|
|
260
|
+
switch (event.key) {
|
|
261
|
+
case 'ArrowDown':
|
|
262
|
+
{
|
|
263
|
+
const rowId = getRowIdFromIndex(firstRowIndexInPage);
|
|
264
|
+
if (firstRowIndexInPage !== null && rowId != null) {
|
|
265
|
+
goToCell(colIndexBefore, rowId);
|
|
266
|
+
}
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case 'ArrowRight':
|
|
270
|
+
{
|
|
271
|
+
const rightColIndex = getRightColumnIndex({
|
|
272
|
+
currentColIndex: colIndexBefore,
|
|
273
|
+
firstColIndex,
|
|
274
|
+
lastColIndex,
|
|
275
|
+
direction: theme.direction
|
|
276
|
+
});
|
|
277
|
+
if (rightColIndex !== null) {
|
|
278
|
+
goToHeaderFilter(rightColIndex, event);
|
|
279
|
+
}
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
case 'ArrowLeft':
|
|
283
|
+
{
|
|
284
|
+
const leftColIndex = getLeftColumnIndex({
|
|
285
|
+
currentColIndex: colIndexBefore,
|
|
286
|
+
firstColIndex,
|
|
287
|
+
lastColIndex,
|
|
288
|
+
direction: theme.direction
|
|
289
|
+
});
|
|
290
|
+
if (leftColIndex !== null) {
|
|
291
|
+
goToHeaderFilter(leftColIndex, event);
|
|
292
|
+
} else {
|
|
293
|
+
apiRef.current.setColumnHeaderFilterFocus(params.field, event);
|
|
294
|
+
}
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case 'ArrowUp':
|
|
298
|
+
{
|
|
299
|
+
goToHeader(colIndexBefore, event);
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
case 'PageDown':
|
|
303
|
+
{
|
|
304
|
+
if (firstRowIndexInPage !== null && lastRowIndexInPage !== null) {
|
|
305
|
+
goToCell(colIndexBefore, getRowIdFromIndex(Math.min(firstRowIndexInPage + viewportPageSize, lastRowIndexInPage)));
|
|
306
|
+
}
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
case 'Home':
|
|
310
|
+
{
|
|
311
|
+
goToHeaderFilter(firstColIndex, event);
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
case 'End':
|
|
315
|
+
{
|
|
316
|
+
goToHeaderFilter(lastColIndex, event);
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
case ' ':
|
|
320
|
+
{
|
|
321
|
+
// prevent Space event from scrolling
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
default:
|
|
325
|
+
{
|
|
326
|
+
shouldPreventDefault = false;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (shouldPreventDefault) {
|
|
330
|
+
event.preventDefault();
|
|
331
|
+
}
|
|
332
|
+
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
227
333
|
const focusedColumnGroup = (0, _useGridSelector.useGridSelector)(apiRef, _focus.unstable_gridFocusColumnGroupHeaderSelector);
|
|
228
334
|
const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {
|
|
229
335
|
const dimensions = apiRef.current.getRootDimensions();
|
|
@@ -358,6 +464,8 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
358
464
|
{
|
|
359
465
|
if (rowIndexBefore > firstRowIndexInPage) {
|
|
360
466
|
goToCell(colIndexBefore, getRowIdFromIndex(rowIndexBefore - 1));
|
|
467
|
+
} else if (headerFilteringEnabled) {
|
|
468
|
+
goToHeaderFilter(colIndexBefore, event);
|
|
361
469
|
} else {
|
|
362
470
|
goToHeader(colIndexBefore, event);
|
|
363
471
|
}
|
|
@@ -458,7 +566,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
458
566
|
if (shouldPreventDefault) {
|
|
459
567
|
event.preventDefault();
|
|
460
568
|
}
|
|
461
|
-
}, [apiRef, currentPageRows, theme.direction, getRowIdFromIndex,
|
|
569
|
+
}, [apiRef, currentPageRows, theme.direction, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader]);
|
|
462
570
|
const checkIfCanStartEditing = React.useCallback((initialValue, {
|
|
463
571
|
event
|
|
464
572
|
}) => {
|
|
@@ -470,6 +578,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
470
578
|
}, []);
|
|
471
579
|
(0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'canStartEditing', checkIfCanStartEditing);
|
|
472
580
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
581
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'headerFilterKeyDown', handleHeaderFilterKeyDown);
|
|
473
582
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnGroupHeaderKeyDown', handleColumnGroupHeaderKeyDown);
|
|
474
583
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
475
584
|
};
|
|
@@ -58,13 +58,15 @@ const useGridPreferencesPanel = (apiRef, props) => {
|
|
|
58
58
|
const hidePreferencesDelayed = React.useCallback(() => {
|
|
59
59
|
hideTimeout.current = setTimeout(hidePreferences, 100);
|
|
60
60
|
}, [hidePreferences]);
|
|
61
|
-
const showPreferences = React.useCallback(newValue => {
|
|
61
|
+
const showPreferences = React.useCallback((newValue, panelId, labelId) => {
|
|
62
62
|
logger.debug('Opening Preferences Panel');
|
|
63
63
|
doNotHidePanel();
|
|
64
64
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
65
65
|
preferencePanel: (0, _extends2.default)({}, state.preferencePanel, {
|
|
66
66
|
open: true,
|
|
67
|
-
openedPanelValue: newValue
|
|
67
|
+
openedPanelValue: newValue,
|
|
68
|
+
panelId,
|
|
69
|
+
labelId
|
|
68
70
|
})
|
|
69
71
|
}));
|
|
70
72
|
apiRef.current.publishEvent('preferencePanelOpen', {
|