@mui/x-data-grid 7.0.0-beta.3 → 7.0.0-beta.5
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 +357 -22
- package/DataGrid/DataGrid.js +2 -0
- package/colDef/gridActionsColDef.js +1 -0
- package/colDef/gridBooleanColDef.js +1 -0
- package/colDef/gridBooleanOperators.js +1 -1
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/components/GridRow.d.ts +7 -9
- package/components/GridRow.js +36 -47
- package/components/GridScrollbarFillerCell.js +6 -21
- package/components/cell/GridCell.d.ts +2 -1
- package/components/cell/GridCell.js +17 -15
- package/components/cell/GridSkeletonCell.d.ts +3 -2
- package/components/cell/GridSkeletonCell.js +14 -6
- package/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
- package/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/components/containers/GridRootStyles.js +59 -21
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
- package/components/virtualization/GridBottomContainer.js +1 -1
- package/components/virtualization/GridTopContainer.js +1 -1
- package/components/virtualization/GridVirtualScroller.js +2 -2
- package/components/virtualization/GridVirtualScrollerRenderZone.js +9 -3
- package/constants/gridClasses.d.ts +24 -8
- package/constants/gridClasses.js +1 -1
- package/hooks/features/clipboard/useGridClipboard.js +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -8
- package/hooks/features/columns/gridColumnsSelector.d.ts +6 -0
- package/hooks/features/columns/gridColumnsSelector.js +8 -1
- package/hooks/features/columns/useGridColumns.js +4 -0
- package/hooks/features/editing/useGridCellEditing.js +3 -4
- package/hooks/features/editing/useGridRowEditing.js +4 -6
- package/hooks/features/filter/useGridFilter.js +2 -2
- package/hooks/features/rows/useGridRows.js +8 -4
- package/hooks/features/rows/useGridRowsMeta.js +5 -13
- package/hooks/features/sorting/gridSortingUtils.js +9 -1
- package/hooks/features/sorting/useGridSorting.js +1 -2
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +0 -9
- package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -7
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +82 -138
- package/hooks/features/virtualization/useGridVirtualization.d.ts +0 -8
- package/hooks/features/virtualization/useGridVirtualization.js +1 -6
- package/hooks/utils/useTimeout.d.ts +5 -3
- package/hooks/utils/useTimeout.js +13 -5
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +1 -1
- package/models/colDef/gridColDef.d.ts +13 -0
- package/modern/DataGrid/DataGrid.js +2 -0
- package/modern/colDef/gridActionsColDef.js +1 -0
- package/modern/colDef/gridBooleanColDef.js +1 -0
- package/modern/colDef/gridBooleanOperators.js +1 -1
- package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/modern/components/GridRow.js +35 -46
- package/modern/components/GridScrollbarFillerCell.js +6 -21
- package/modern/components/cell/GridCell.js +17 -15
- package/modern/components/cell/GridSkeletonCell.js +14 -6
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
- package/modern/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/modern/components/containers/GridRootStyles.js +59 -21
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
- package/modern/components/virtualization/GridBottomContainer.js +1 -1
- package/modern/components/virtualization/GridTopContainer.js +1 -1
- package/modern/components/virtualization/GridVirtualScroller.js +2 -2
- package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +8 -3
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/clipboard/useGridClipboard.js +1 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -8
- package/modern/hooks/features/columns/gridColumnsSelector.js +8 -1
- package/modern/hooks/features/columns/useGridColumns.js +2 -0
- package/modern/hooks/features/editing/useGridCellEditing.js +3 -4
- package/modern/hooks/features/editing/useGridRowEditing.js +4 -6
- package/modern/hooks/features/filter/useGridFilter.js +2 -2
- package/modern/hooks/features/rows/useGridRows.js +8 -4
- package/modern/hooks/features/rows/useGridRowsMeta.js +5 -13
- package/modern/hooks/features/sorting/gridSortingUtils.js +9 -1
- package/modern/hooks/features/sorting/useGridSorting.js +1 -2
- package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -7
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +80 -136
- package/modern/hooks/features/virtualization/useGridVirtualization.js +1 -6
- package/modern/hooks/utils/useTimeout.js +13 -5
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -1
- package/modern/utils/keyboardUtils.js +20 -11
- package/modern/utils/utils.js +9 -0
- package/node/DataGrid/DataGrid.js +1 -0
- package/node/colDef/gridActionsColDef.js +1 -0
- package/node/colDef/gridBooleanColDef.js +1 -0
- package/node/colDef/gridBooleanOperators.js +1 -1
- package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/node/components/GridRow.js +35 -46
- package/node/components/GridScrollbarFillerCell.js +5 -20
- package/node/components/cell/GridCell.js +17 -15
- package/node/components/cell/GridSkeletonCell.js +15 -7
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
- package/node/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/node/components/containers/GridRootStyles.js +59 -21
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
- package/node/components/virtualization/GridBottomContainer.js +1 -1
- package/node/components/virtualization/GridTopContainer.js +1 -1
- package/node/components/virtualization/GridVirtualScroller.js +2 -2
- package/node/components/virtualization/GridVirtualScrollerRenderZone.js +7 -2
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/clipboard/useGridClipboard.js +1 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +8 -5
- package/node/hooks/features/columns/gridColumnsSelector.js +9 -2
- package/node/hooks/features/columns/useGridColumns.js +2 -0
- package/node/hooks/features/editing/useGridCellEditing.js +2 -3
- package/node/hooks/features/editing/useGridRowEditing.js +3 -5
- package/node/hooks/features/filter/useGridFilter.js +2 -2
- package/node/hooks/features/rows/useGridRows.js +8 -4
- package/node/hooks/features/rows/useGridRowsMeta.js +5 -13
- package/node/hooks/features/sorting/gridSortingUtils.js +9 -1
- package/node/hooks/features/sorting/useGridSorting.js +1 -2
- package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +1 -8
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +81 -136
- package/node/hooks/features/virtualization/useGridVirtualization.js +2 -7
- package/node/hooks/utils/useTimeout.js +13 -4
- package/node/index.js +1 -1
- package/node/internals/index.js +7 -0
- package/node/utils/keyboardUtils.js +25 -20
- package/node/utils/utils.js +12 -1
- package/package.json +1 -1
- package/utils/keyboardUtils.d.ts +7 -6
- package/utils/keyboardUtils.js +20 -11
- package/utils/utils.d.ts +4 -0
- package/utils/utils.js +9 -0
- package/legacy/DataGrid/DataGrid.js +0 -664
- package/legacy/DataGrid/index.js +0 -2
- package/legacy/DataGrid/useDataGridComponent.js +0 -81
- package/legacy/DataGrid/useDataGridProps.js +0 -98
- package/legacy/colDef/gridActionsColDef.js +0 -18
- package/legacy/colDef/gridBooleanColDef.js +0 -42
- package/legacy/colDef/gridBooleanOperators.js +0 -16
- package/legacy/colDef/gridCheckboxSelectionColDef.js +0 -33
- package/legacy/colDef/gridDateColDef.js +0 -62
- package/legacy/colDef/gridDateOperators.js +0 -115
- package/legacy/colDef/gridDefaultColumnTypes.js +0 -19
- package/legacy/colDef/gridNumericColDef.js +0 -19
- package/legacy/colDef/gridNumericOperators.js +0 -145
- package/legacy/colDef/gridSingleSelectColDef.js +0 -64
- package/legacy/colDef/gridSingleSelectOperators.js +0 -46
- package/legacy/colDef/gridStringColDef.js +0 -27
- package/legacy/colDef/gridStringOperators.js +0 -112
- package/legacy/colDef/index.js +0 -13
- package/legacy/components/GridApiContext.js +0 -5
- package/legacy/components/GridColumnHeaders.js +0 -94
- package/legacy/components/GridDetailPanels.js +0 -4
- package/legacy/components/GridFooter.js +0 -42
- package/legacy/components/GridHeader.js +0 -13
- package/legacy/components/GridHeaders.js +0 -53
- package/legacy/components/GridLoadingOverlay.js +0 -21
- package/legacy/components/GridNoResultsOverlay.js +0 -14
- package/legacy/components/GridNoRowsOverlay.js +0 -23
- package/legacy/components/GridPagination.js +0 -85
- package/legacy/components/GridPinnedRows.js +0 -4
- package/legacy/components/GridRow.js +0 -465
- package/legacy/components/GridRowCount.js +0 -63
- package/legacy/components/GridScrollbarFillerCell.js +0 -34
- package/legacy/components/GridSelectedRowCount.js +0 -66
- package/legacy/components/base/GridBody.js +0 -2
- package/legacy/components/base/GridFooterPlaceholder.js +0 -12
- package/legacy/components/base/GridOverlays.js +0 -122
- package/legacy/components/base/index.js +0 -3
- package/legacy/components/cell/GridActionsCell.js +0 -294
- package/legacy/components/cell/GridActionsCellItem.js +0 -69
- package/legacy/components/cell/GridBooleanCell.js +0 -121
- package/legacy/components/cell/GridCell.js +0 -350
- package/legacy/components/cell/GridEditBooleanCell.js +0 -174
- package/legacy/components/cell/GridEditDateCell.js +0 -230
- package/legacy/components/cell/GridEditInputCell.js +0 -198
- package/legacy/components/cell/GridEditSingleSelectCell.js +0 -231
- package/legacy/components/cell/GridSkeletonCell.js +0 -52
- package/legacy/components/cell/index.js +0 -9
- package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +0 -59
- package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +0 -41
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +0 -132
- package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +0 -93
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +0 -212
- package/legacy/components/columnHeaders/GridColumnHeaderSeparator.js +0 -71
- package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +0 -79
- package/legacy/components/columnHeaders/GridColumnHeaderTitle.js +0 -84
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +0 -55
- package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +0 -107
- package/legacy/components/columnHeaders/GridIconButtonContainer.js +0 -41
- package/legacy/components/columnHeaders/index.js +0 -5
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -160
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -134
- package/legacy/components/columnSelection/index.js +0 -2
- package/legacy/components/columnsManagement/GridColumnsManagement.js +0 -307
- package/legacy/components/columnsManagement/index.js +0 -1
- package/legacy/components/columnsManagement/utils.js +0 -22
- package/legacy/components/containers/GridFooterContainer.js +0 -50
- package/legacy/components/containers/GridOverlay.js +0 -52
- package/legacy/components/containers/GridRoot.js +0 -79
- package/legacy/components/containers/GridRootStyles.js +0 -395
- package/legacy/components/containers/GridToolbarContainer.js +0 -59
- package/legacy/components/containers/index.js +0 -4
- package/legacy/components/index.js +0 -19
- package/legacy/components/menu/GridMenu.js +0 -132
- package/legacy/components/menu/columnMenu/GridColumnHeaderMenu.js +0 -61
- package/legacy/components/menu/columnMenu/GridColumnMenu.js +0 -81
- package/legacy/components/menu/columnMenu/GridColumnMenuContainer.js +0 -56
- package/legacy/components/menu/columnMenu/GridColumnMenuItemProps.js +0 -1
- package/legacy/components/menu/columnMenu/GridColumnMenuProps.js +0 -1
- package/legacy/components/menu/columnMenu/index.js +0 -9
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +0 -21
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +0 -41
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +0 -60
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +0 -41
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +0 -80
- package/legacy/components/menu/columnMenu/menuItems/index.js +0 -5
- package/legacy/components/menu/index.js +0 -2
- package/legacy/components/panel/GridColumnsPanel.js +0 -22
- package/legacy/components/panel/GridPanel.js +0 -137
- package/legacy/components/panel/GridPanelContent.js +0 -49
- package/legacy/components/panel/GridPanelFooter.js +0 -50
- package/legacy/components/panel/GridPanelHeader.js +0 -48
- package/legacy/components/panel/GridPanelWrapper.js +0 -64
- package/legacy/components/panel/GridPreferencesPanel.js +0 -26
- package/legacy/components/panel/filterPanel/GridFilterForm.js +0 -528
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +0 -118
- package/legacy/components/panel/filterPanel/GridFilterInputDate.js +0 -121
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -116
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +0 -102
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +0 -149
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +0 -106
- package/legacy/components/panel/filterPanel/GridFilterInputValueProps.js +0 -1
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +0 -264
- package/legacy/components/panel/filterPanel/filterPanelUtils.js +0 -22
- package/legacy/components/panel/filterPanel/index.js +0 -9
- package/legacy/components/panel/index.js +0 -7
- package/legacy/components/reexportable.js +0 -1
- package/legacy/components/toolbar/GridToolbar.js +0 -64
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -68
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -142
- package/legacy/components/toolbar/GridToolbarExport.js +0 -80
- package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -105
- package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -136
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +0 -164
- package/legacy/components/toolbar/index.js +0 -7
- package/legacy/components/virtualization/GridBottomContainer.js +0 -25
- package/legacy/components/virtualization/GridMainContainer.js +0 -20
- package/legacy/components/virtualization/GridTopContainer.js +0 -35
- package/legacy/components/virtualization/GridVirtualScrollbar.js +0 -129
- package/legacy/components/virtualization/GridVirtualScroller.js +0 -93
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +0 -35
- package/legacy/components/virtualization/GridVirtualScrollerFiller.js +0 -70
- package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +0 -49
- package/legacy/constants/defaultGridSlotsComponents.js +0 -33
- package/legacy/constants/envConstants.js +0 -19
- package/legacy/constants/gridClasses.js +0 -5
- package/legacy/constants/gridDetailPanelToggleField.js +0 -2
- package/legacy/constants/index.js +0 -3
- package/legacy/constants/localeTextConstants.js +0 -158
- package/legacy/context/GridContextProvider.js +0 -21
- package/legacy/context/GridRootPropsContext.js +0 -6
- package/legacy/context/index.js +0 -1
- package/legacy/hooks/core/gridCoreSelector.js +0 -7
- package/legacy/hooks/core/index.js +0 -1
- package/legacy/hooks/core/pipeProcessing/gridPipeProcessingApi.js +0 -1
- package/legacy/hooks/core/pipeProcessing/index.js +0 -4
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +0 -114
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +0 -26
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -26
- package/legacy/hooks/core/strategyProcessing/gridStrategyProcessingApi.js +0 -1
- package/legacy/hooks/core/strategyProcessing/index.js +0 -3
- package/legacy/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js +0 -18
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +0 -116
- package/legacy/hooks/core/useGridApiInitialization.js +0 -124
- package/legacy/hooks/core/useGridInitialization.js +0 -26
- package/legacy/hooks/core/useGridLocaleText.js +0 -12
- package/legacy/hooks/core/useGridLoggerFactory.js +0 -51
- package/legacy/hooks/core/useGridRefs.js +0 -13
- package/legacy/hooks/core/useGridStateInitialization.js +0 -106
- package/legacy/hooks/core/useGridTheme.js +0 -21
- package/legacy/hooks/features/clipboard/useGridClipboard.js +0 -92
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +0 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +0 -24
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +0 -92
- package/legacy/hooks/features/columnGrouping/index.js +0 -2
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +0 -140
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -272
- package/legacy/hooks/features/columnMenu/columnMenuInterfaces.js +0 -1
- package/legacy/hooks/features/columnMenu/columnMenuSelector.js +0 -3
- package/legacy/hooks/features/columnMenu/index.js +0 -2
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +0 -108
- package/legacy/hooks/features/columnMenu/useGridColumnMenuSlots.js +0 -71
- package/legacy/hooks/features/columns/gridColumnsInterfaces.js +0 -9
- package/legacy/hooks/features/columns/gridColumnsSelector.js +0 -174
- package/legacy/hooks/features/columns/gridColumnsUtils.js +0 -338
- package/legacy/hooks/features/columns/index.js +0 -2
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +0 -105
- package/legacy/hooks/features/columns/useGridColumns.js +0 -319
- package/legacy/hooks/features/density/densitySelector.js +0 -10
- package/legacy/hooks/features/density/densityState.js +0 -1
- package/legacy/hooks/features/density/index.js +0 -2
- package/legacy/hooks/features/density/useGridDensity.js +0 -48
- package/legacy/hooks/features/dimensions/gridDimensionsApi.js +0 -1
- package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +0 -3
- package/legacy/hooks/features/dimensions/index.js +0 -2
- package/legacy/hooks/features/dimensions/useGridDimensions.js +0 -302
- package/legacy/hooks/features/editing/gridEditingSelectors.js +0 -4
- package/legacy/hooks/features/editing/useGridCellEditing.js +0 -456
- package/legacy/hooks/features/editing/useGridEditing.js +0 -145
- package/legacy/hooks/features/editing/useGridRowEditing.js +0 -567
- package/legacy/hooks/features/events/useGridEvents.js +0 -23
- package/legacy/hooks/features/export/serializers/csvSerializer.js +0 -155
- package/legacy/hooks/features/export/useGridCsvExport.js +0 -75
- package/legacy/hooks/features/export/useGridPrintExport.js +0 -313
- package/legacy/hooks/features/export/utils.js +0 -49
- package/legacy/hooks/features/filter/gridFilterSelector.js +0 -165
- package/legacy/hooks/features/filter/gridFilterState.js +0 -20
- package/legacy/hooks/features/filter/gridFilterUtils.js +0 -330
- package/legacy/hooks/features/filter/index.js +0 -2
- package/legacy/hooks/features/filter/useGridFilter.js +0 -378
- package/legacy/hooks/features/focus/gridFocusState.js +0 -1
- package/legacy/hooks/features/focus/gridFocusStateSelector.js +0 -31
- package/legacy/hooks/features/focus/index.js +0 -2
- package/legacy/hooks/features/focus/useGridFocus.js +0 -408
- package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +0 -10
- package/legacy/hooks/features/headerFiltering/index.js +0 -1
- package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +0 -93
- package/legacy/hooks/features/index.js +0 -16
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +0 -565
- package/legacy/hooks/features/pagination/gridPaginationInterfaces.js +0 -1
- package/legacy/hooks/features/pagination/gridPaginationSelector.js +0 -115
- package/legacy/hooks/features/pagination/gridPaginationUtils.js +0 -31
- package/legacy/hooks/features/pagination/index.js +0 -2
- package/legacy/hooks/features/pagination/useGridPagination.js +0 -175
- package/legacy/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +0 -3
- package/legacy/hooks/features/preferencesPanel/gridPreferencePanelState.js +0 -1
- package/legacy/hooks/features/preferencesPanel/gridPreferencePanelsValue.js +0 -6
- package/legacy/hooks/features/preferencesPanel/index.js +0 -3
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +0 -125
- package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +0 -19
- package/legacy/hooks/features/rowSelection/index.js +0 -1
- package/legacy/hooks/features/rowSelection/useGridRowSelection.js +0 -419
- package/legacy/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +0 -45
- package/legacy/hooks/features/rowSelection/utils.js +0 -8
- package/legacy/hooks/features/rows/gridRowsInterfaces.js +0 -1
- package/legacy/hooks/features/rows/gridRowsMetaSelector.js +0 -3
- package/legacy/hooks/features/rows/gridRowsMetaState.js +0 -1
- package/legacy/hooks/features/rows/gridRowsSelector.js +0 -90
- package/legacy/hooks/features/rows/gridRowsUtils.js +0 -294
- package/legacy/hooks/features/rows/index.js +0 -4
- package/legacy/hooks/features/rows/useGridParamsApi.js +0 -142
- package/legacy/hooks/features/rows/useGridRows.js +0 -466
- package/legacy/hooks/features/rows/useGridRowsMeta.js +0 -236
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +0 -82
- package/legacy/hooks/features/scroll/useGridScroll.js +0 -133
- package/legacy/hooks/features/sorting/gridSortingSelector.js +0 -56
- package/legacy/hooks/features/sorting/gridSortingState.js +0 -1
- package/legacy/hooks/features/sorting/gridSortingUtils.js +0 -154
- package/legacy/hooks/features/sorting/index.js +0 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +0 -276
- package/legacy/hooks/features/statePersistence/gridStatePersistenceInterface.js +0 -1
- package/legacy/hooks/features/statePersistence/index.js +0 -1
- package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +0 -25
- package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -61
- package/legacy/hooks/features/virtualization/index.js +0 -2
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +0 -646
- package/legacy/hooks/features/virtualization/useGridVirtualization.js +0 -63
- package/legacy/hooks/index.js +0 -3
- package/legacy/hooks/utils/index.js +0 -9
- package/legacy/hooks/utils/useFirstRender.js +0 -8
- package/legacy/hooks/utils/useGridApiContext.js +0 -9
- package/legacy/hooks/utils/useGridApiEventHandler.js +0 -105
- package/legacy/hooks/utils/useGridApiMethod.js +0 -11
- package/legacy/hooks/utils/useGridApiRef.js +0 -7
- package/legacy/hooks/utils/useGridAriaAttributes.js +0 -25
- package/legacy/hooks/utils/useGridInitializeState.js +0 -8
- package/legacy/hooks/utils/useGridLogger.js +0 -10
- package/legacy/hooks/utils/useGridNativeEventListener.js +0 -32
- package/legacy/hooks/utils/useGridPrivateApiContext.js +0 -12
- package/legacy/hooks/utils/useGridRootProps.js +0 -9
- package/legacy/hooks/utils/useGridSelector.js +0 -54
- package/legacy/hooks/utils/useGridVisibleRows.js +0 -42
- package/legacy/hooks/utils/useLazyRef.js +0 -11
- package/legacy/hooks/utils/useOnMount.js +0 -7
- package/legacy/hooks/utils/useResizeObserver.js +0 -36
- package/legacy/hooks/utils/useRunOnce.js +0 -18
- package/legacy/hooks/utils/useTimeout.js +0 -38
- package/legacy/index.js +0 -38
- package/legacy/internals/index.js +0 -68
- package/legacy/internals/utils/computeSlots.js +0 -17
- package/legacy/internals/utils/index.js +0 -3
- package/legacy/internals/utils/propValidation.js +0 -21
- package/legacy/internals/utils/useProps.js +0 -32
- package/legacy/joy/icons.js +0 -432
- package/legacy/joy/index.js +0 -2
- package/legacy/joy/joySlots.js +0 -420
- package/legacy/locales/arSD.js +0 -160
- package/legacy/locales/beBY.js +0 -184
- package/legacy/locales/bgBG.js +0 -160
- package/legacy/locales/coreLocales.js +0 -62
- package/legacy/locales/csCZ.js +0 -181
- package/legacy/locales/daDK.js +0 -160
- package/legacy/locales/deDE.js +0 -160
- package/legacy/locales/elGR.js +0 -160
- package/legacy/locales/enUS.js +0 -4
- package/legacy/locales/esES.js +0 -160
- package/legacy/locales/faIR.js +0 -160
- package/legacy/locales/fiFI.js +0 -160
- package/legacy/locales/frFR.js +0 -160
- package/legacy/locales/heIL.js +0 -160
- package/legacy/locales/hrHR.js +0 -160
- package/legacy/locales/huHU.js +0 -160
- package/legacy/locales/index.js +0 -35
- package/legacy/locales/itIT.js +0 -160
- package/legacy/locales/jaJP.js +0 -160
- package/legacy/locales/koKR.js +0 -162
- package/legacy/locales/nbNO.js +0 -162
- package/legacy/locales/nlNL.js +0 -160
- package/legacy/locales/plPL.js +0 -163
- package/legacy/locales/ptBR.js +0 -160
- package/legacy/locales/ptPT.js +0 -160
- package/legacy/locales/roRO.js +0 -160
- package/legacy/locales/ruRU.js +0 -181
- package/legacy/locales/skSK.js +0 -181
- package/legacy/locales/svSE.js +0 -160
- package/legacy/locales/trTR.js +0 -161
- package/legacy/locales/ukUA.js +0 -182
- package/legacy/locales/urPK.js +0 -160
- package/legacy/locales/viVN.js +0 -160
- package/legacy/locales/zhCN.js +0 -160
- package/legacy/locales/zhHK.js +0 -160
- package/legacy/locales/zhTW.js +0 -160
- package/legacy/material/components/MUISelectOption.js +0 -14
- package/legacy/material/icons/GridColumnUnsortedIcon.js +0 -16
- package/legacy/material/icons/index.js +0 -89
- package/legacy/material/index.js +0 -69
- package/legacy/models/api/gridApiCommon.js +0 -1
- package/legacy/models/api/gridApiCommunity.js +0 -1
- package/legacy/models/api/gridCallbackDetails.js +0 -1
- package/legacy/models/api/gridColumnApi.js +0 -1
- package/legacy/models/api/gridColumnGroupingApi.js +0 -1
- package/legacy/models/api/gridColumnMenuApi.js +0 -1
- package/legacy/models/api/gridColumnSpanning.js +0 -1
- package/legacy/models/api/gridCoreApi.js +0 -1
- package/legacy/models/api/gridCsvExportApi.js +0 -1
- package/legacy/models/api/gridDensityApi.js +0 -1
- package/legacy/models/api/gridEditingApi.js +0 -1
- package/legacy/models/api/gridFilterApi.js +0 -1
- package/legacy/models/api/gridFocusApi.js +0 -1
- package/legacy/models/api/gridHeaderFilteringApi.js +0 -1
- package/legacy/models/api/gridLocaleTextApi.js +0 -1
- package/legacy/models/api/gridLoggerApi.js +0 -1
- package/legacy/models/api/gridParamsApi.js +0 -1
- package/legacy/models/api/gridPreferencesPanelApi.js +0 -1
- package/legacy/models/api/gridPrintExportApi.js +0 -1
- package/legacy/models/api/gridRowApi.js +0 -1
- package/legacy/models/api/gridRowSelectionApi.js +0 -1
- package/legacy/models/api/gridRowsMetaApi.js +0 -1
- package/legacy/models/api/gridScrollApi.js +0 -1
- package/legacy/models/api/gridSortApi.js +0 -1
- package/legacy/models/api/gridStateApi.js +0 -1
- package/legacy/models/api/gridVirtualizationApi.js +0 -1
- package/legacy/models/api/index.js +0 -16
- package/legacy/models/colDef/gridColDef.js +0 -1
- package/legacy/models/colDef/gridColType.js +0 -1
- package/legacy/models/colDef/gridColumnTypesRecord.js +0 -1
- package/legacy/models/colDef/index.js +0 -6
- package/legacy/models/controlStateItem.js +0 -1
- package/legacy/models/cursorCoordinates.js +0 -1
- package/legacy/models/elementSize.js +0 -1
- package/legacy/models/events/gridEventListener.js +0 -1
- package/legacy/models/events/gridEventLookup.js +0 -1
- package/legacy/models/events/gridEventPublisher.js +0 -1
- package/legacy/models/events/index.js +0 -3
- package/legacy/models/gridApiCaches.js +0 -1
- package/legacy/models/gridCell.js +0 -1
- package/legacy/models/gridCellClass.js +0 -1
- package/legacy/models/gridColumnGrouping.js +0 -11
- package/legacy/models/gridColumnHeaderClass.js +0 -1
- package/legacy/models/gridColumnSpanning.js +0 -1
- package/legacy/models/gridDensity.js +0 -1
- package/legacy/models/gridEditRowModel.js +0 -16
- package/legacy/models/gridExport.js +0 -1
- package/legacy/models/gridFeatureMode.js +0 -1
- package/legacy/models/gridFilterItem.js +0 -11
- package/legacy/models/gridFilterModel.js +0 -1
- package/legacy/models/gridFilterOperator.js +0 -1
- package/legacy/models/gridHeaderFilteringModel.js +0 -1
- package/legacy/models/gridIconSlotsComponent.js +0 -1
- package/legacy/models/gridPaginationProps.js +0 -1
- package/legacy/models/gridRenderContextProps.js +0 -1
- package/legacy/models/gridRowSelectionModel.js +0 -1
- package/legacy/models/gridRows.js +0 -1
- package/legacy/models/gridSlotsComponent.js +0 -1
- package/legacy/models/gridSlotsComponentsProps.js +0 -1
- package/legacy/models/gridSortModel.js +0 -1
- package/legacy/models/gridStateCommunity.js +0 -1
- package/legacy/models/index.js +0 -29
- package/legacy/models/logger.js +0 -1
- package/legacy/models/muiEvent.js +0 -1
- package/legacy/models/params/gridCellParams.js +0 -1
- package/legacy/models/params/gridColumnGroupHeaderParams.js +0 -1
- package/legacy/models/params/gridColumnHeaderParams.js +0 -1
- package/legacy/models/params/gridColumnOrderChangeParams.js +0 -1
- package/legacy/models/params/gridColumnResizeParams.js +0 -1
- package/legacy/models/params/gridEditCellParams.js +0 -27
- package/legacy/models/params/gridHeaderSelectionCheckboxParams.js +0 -1
- package/legacy/models/params/gridMenuParams.js +0 -1
- package/legacy/models/params/gridPreferencePanelParams.js +0 -1
- package/legacy/models/params/gridRowParams.js +0 -44
- package/legacy/models/params/gridRowSelectionCheckboxParams.js +0 -1
- package/legacy/models/params/gridScrollParams.js +0 -1
- package/legacy/models/params/gridValueOptionsParams.js +0 -1
- package/legacy/models/params/index.js +0 -13
- package/legacy/models/props/DataGridProps.js +0 -1
- package/legacy/themeAugmentation/index.js +0 -4
- package/legacy/themeAugmentation/overrides.js +0 -1
- package/legacy/themeAugmentation/props.js +0 -1
- package/legacy/utils/EventManager.js +0 -91
- package/legacy/utils/Store.js +0 -34
- package/legacy/utils/cleanupTracking/CleanupTracking.js +0 -1
- package/legacy/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -29
- package/legacy/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -52
- package/legacy/utils/createControllablePromise.js +0 -11
- package/legacy/utils/createSelector.js +0 -120
- package/legacy/utils/doesSupportPreventScroll.js +0 -13
- package/legacy/utils/domUtils.js +0 -49
- package/legacy/utils/exportAs.js +0 -40
- package/legacy/utils/fastMemo.js +0 -5
- package/legacy/utils/fastObjectShallowCompare.js +0 -32
- package/legacy/utils/getGridLocalization.js +0 -15
- package/legacy/utils/getPublicApiRef.js +0 -5
- package/legacy/utils/index.js +0 -1
- package/legacy/utils/keyboardUtils.js +0 -60
- package/legacy/utils/utils.js +0 -189
- package/legacy/utils/warning.js +0 -25
|
@@ -6,17 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.EMPTY_DETAIL_PANELS = void 0;
|
|
8
8
|
exports.areRenderContextsEqual = areRenderContextsEqual;
|
|
9
|
+
exports.computeOffsetLeft = computeOffsetLeft;
|
|
9
10
|
exports.useGridVirtualScroller = void 0;
|
|
10
11
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
12
|
var React = _interopRequireWildcard(require("react"));
|
|
12
13
|
var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
13
14
|
var _utils = require("@mui/utils");
|
|
14
15
|
var _styles = require("@mui/material/styles");
|
|
15
|
-
var _reselect = require("reselect");
|
|
16
16
|
var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
|
|
17
17
|
var _useGridRootProps = require("../../utils/useGridRootProps");
|
|
18
18
|
var _useGridSelector = require("../../utils/useGridSelector");
|
|
19
|
-
var _useLazyRef = require("../../utils/useLazyRef");
|
|
20
19
|
var _useResizeObserver = require("../../utils/useResizeObserver");
|
|
21
20
|
var _useRunOnce = require("../../utils/useRunOnce");
|
|
22
21
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
@@ -24,7 +23,8 @@ var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
|
|
|
24
23
|
var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
25
24
|
var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
|
|
26
25
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
27
|
-
var _utils2 = require("
|
|
26
|
+
var _utils2 = require("../../utils");
|
|
27
|
+
var _utils3 = require("../../../utils/utils");
|
|
28
28
|
var _gridRowSelectionSelector = require("../rowSelection/gridRowSelectionSelector");
|
|
29
29
|
var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
|
|
30
30
|
var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
@@ -60,40 +60,29 @@ const useGridVirtualScroller = () => {
|
|
|
60
60
|
const scrollbarHorizontalRef = React.useRef(null);
|
|
61
61
|
const contentHeight = dimensions.contentSize.height;
|
|
62
62
|
const columnsTotalWidth = dimensions.columnsTotalWidth;
|
|
63
|
+
const hasColSpan = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridHasColSpanSelector);
|
|
63
64
|
(0, _useResizeObserver.useResizeObserver)(mainRef, () => apiRef.current.resize());
|
|
64
65
|
const previousContext = React.useRef(_useGridVirtualization.EMPTY_RENDER_CONTEXT);
|
|
65
66
|
const previousRowContext = React.useRef(_useGridVirtualization.EMPTY_RENDER_CONTEXT);
|
|
66
|
-
const offsets = (0, _useGridSelector.useGridSelector)(apiRef, _gridVirtualizationSelectors.gridOffsetsSelector);
|
|
67
67
|
const renderContext = (0, _useGridSelector.useGridSelector)(apiRef, _gridVirtualizationSelectors.gridRenderContextSelector);
|
|
68
68
|
const scrollPosition = React.useRef({
|
|
69
69
|
top: 0,
|
|
70
70
|
left: 0
|
|
71
71
|
}).current;
|
|
72
72
|
const prevTotalWidth = React.useRef(columnsTotalWidth);
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
return -1;
|
|
79
|
-
}, [cellFocus, currentPage.rows]);
|
|
80
|
-
const indexOfColumnWithFocusedCell = React.useMemo(() => {
|
|
81
|
-
if (cellFocus !== null) {
|
|
82
|
-
return visibleColumns.findIndex(column => column.field === cellFocus.field);
|
|
83
|
-
}
|
|
84
|
-
return -1;
|
|
85
|
-
}, [cellFocus, visibleColumns]);
|
|
73
|
+
const focusedCell = {
|
|
74
|
+
rowIndex: React.useMemo(() => cellFocus ? currentPage.rows.findIndex(row => row.id === cellFocus.id) : -1, [cellFocus, currentPage.rows]),
|
|
75
|
+
columnIndex: React.useMemo(() => cellFocus ? visibleColumns.findIndex(column => column.field === cellFocus.field) : -1, [cellFocus, visibleColumns])
|
|
76
|
+
};
|
|
86
77
|
const updateRenderContext = React.useCallback((nextRenderContext, rawRenderContext) => {
|
|
87
78
|
if (areRenderContextsEqual(nextRenderContext, apiRef.current.state.virtualization.renderContext)) {
|
|
88
79
|
return;
|
|
89
80
|
}
|
|
90
81
|
const didRowsIntervalChange = nextRenderContext.firstRowIndex !== previousRowContext.current.firstRowIndex || nextRenderContext.lastRowIndex !== previousRowContext.current.lastRowIndex;
|
|
91
|
-
const nextOffsets = computeOffsets(apiRef, nextRenderContext, theme.direction, pinnedColumns.left.length);
|
|
92
82
|
apiRef.current.setState(state => {
|
|
93
83
|
return (0, _extends2.default)({}, state, {
|
|
94
84
|
virtualization: (0, _extends2.default)({}, state.virtualization, {
|
|
95
|
-
renderContext: nextRenderContext
|
|
96
|
-
offsets: nextOffsets
|
|
85
|
+
renderContext: nextRenderContext
|
|
97
86
|
})
|
|
98
87
|
});
|
|
99
88
|
});
|
|
@@ -107,7 +96,7 @@ const useGridVirtualScroller = () => {
|
|
|
107
96
|
}
|
|
108
97
|
previousContext.current = rawRenderContext;
|
|
109
98
|
prevTotalWidth.current = dimensions.columnsTotalWidth;
|
|
110
|
-
}, [apiRef,
|
|
99
|
+
}, [apiRef, dimensions.isReady, dimensions.columnsTotalWidth]);
|
|
111
100
|
const triggerUpdateRenderContext = () => {
|
|
112
101
|
const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
|
|
113
102
|
const [nextRenderContext, rawRenderContext] = computeRenderContext(inputs, scrollPosition);
|
|
@@ -168,9 +157,12 @@ const useGridVirtualScroller = () => {
|
|
|
168
157
|
const handleTouchMove = (0, _utils.unstable_useEventCallback)(event => {
|
|
169
158
|
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
170
159
|
});
|
|
171
|
-
const minFirstColumn = pinnedColumns.left.length;
|
|
172
|
-
const maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
|
|
173
160
|
const getRows = (params = {}) => {
|
|
161
|
+
if (!params.rows && !currentPage.range) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
const columnPositions = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef);
|
|
165
|
+
const currentRenderContext = params.renderContext ?? renderContext;
|
|
174
166
|
const isLastSection = !hasBottomPinnedRows && params.position === undefined || hasBottomPinnedRows && params.position === 'bottom';
|
|
175
167
|
const isPinnedSection = params.position !== undefined;
|
|
176
168
|
let rowIndexOffset;
|
|
@@ -187,77 +179,57 @@ const useGridVirtualScroller = () => {
|
|
|
187
179
|
rowIndexOffset = pinnedRows.top.length;
|
|
188
180
|
break;
|
|
189
181
|
}
|
|
190
|
-
const
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
// If the selected row is not within the current range of rows being displayed,
|
|
200
|
-
// we need to render it at either the top or bottom of the rows,
|
|
201
|
-
// depending on whether it is above or below the range.
|
|
202
|
-
let isRowWithFocusedCellNotInRange = false;
|
|
203
|
-
if (!isPinnedSection && indexOfRowWithFocusedCell > -1 && (firstRowToRender > indexOfRowWithFocusedCell || lastRowToRender < indexOfRowWithFocusedCell)) {
|
|
204
|
-
isRowWithFocusedCellNotInRange = true;
|
|
205
|
-
const rowWithFocusedCell = currentPage.rows[indexOfRowWithFocusedCell];
|
|
206
|
-
if (indexOfRowWithFocusedCell > firstRowToRender) {
|
|
207
|
-
renderedRows.push(rowWithFocusedCell);
|
|
208
|
-
} else {
|
|
209
|
-
renderedRows.unshift(rowWithFocusedCell);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
let isColumnWihFocusedCellNotInRange = false;
|
|
213
|
-
if (!isPinnedSection && (firstColumnToRender > indexOfColumnWithFocusedCell || lastColumnToRender < indexOfColumnWithFocusedCell)) {
|
|
214
|
-
isColumnWihFocusedCellNotInRange = true;
|
|
215
|
-
}
|
|
216
|
-
const {
|
|
217
|
-
focusedCellColumnIndexNotInRange,
|
|
218
|
-
renderedColumns
|
|
219
|
-
} = getRenderedColumns(visibleColumns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, isColumnWihFocusedCellNotInRange ? indexOfColumnWithFocusedCell : -1);
|
|
220
|
-
renderedRows.forEach(row => {
|
|
221
|
-
apiRef.current.calculateColSpan({
|
|
222
|
-
rowId: row.id,
|
|
223
|
-
minFirstColumn,
|
|
224
|
-
maxLastColumn,
|
|
225
|
-
columns: visibleColumns
|
|
226
|
-
});
|
|
227
|
-
if (pinnedColumns.left.length > 0) {
|
|
228
|
-
apiRef.current.calculateColSpan({
|
|
229
|
-
rowId: row.id,
|
|
230
|
-
minFirstColumn: 0,
|
|
231
|
-
maxLastColumn: pinnedColumns.left.length,
|
|
232
|
-
columns: visibleColumns
|
|
233
|
-
});
|
|
182
|
+
const rowModels = params.rows ?? currentPage.rows;
|
|
183
|
+
const firstRowToRender = currentRenderContext.firstRowIndex;
|
|
184
|
+
const lastRowToRender = Math.min(currentRenderContext.lastRowIndex, rowModels.length);
|
|
185
|
+
const rowIndexes = params.rows ? (0, _utils3.range)(0, params.rows.length) : (0, _utils3.range)(firstRowToRender, lastRowToRender);
|
|
186
|
+
let virtualRowIndex = -1;
|
|
187
|
+
if (!isPinnedSection && focusedCell.rowIndex !== -1) {
|
|
188
|
+
if (focusedCell.rowIndex < firstRowToRender) {
|
|
189
|
+
virtualRowIndex = focusedCell.rowIndex;
|
|
190
|
+
rowIndexes.unshift(virtualRowIndex);
|
|
234
191
|
}
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
|
|
239
|
-
maxLastColumn: visibleColumns.length,
|
|
240
|
-
columns: visibleColumns
|
|
241
|
-
});
|
|
192
|
+
if (focusedCell.rowIndex >= lastRowToRender) {
|
|
193
|
+
virtualRowIndex = focusedCell.rowIndex;
|
|
194
|
+
rowIndexes.push(virtualRowIndex);
|
|
242
195
|
}
|
|
243
|
-
}
|
|
196
|
+
}
|
|
244
197
|
const rows = [];
|
|
245
198
|
const rowProps = rootProps.slotProps?.row;
|
|
246
|
-
|
|
247
|
-
for (let i = 0; i < renderedRows.length; i += 1) {
|
|
199
|
+
rowIndexes.forEach(rowIndexInPage => {
|
|
248
200
|
const {
|
|
249
201
|
id,
|
|
250
202
|
model
|
|
251
|
-
} =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
if (
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
203
|
+
} = rowModels[rowIndexInPage];
|
|
204
|
+
|
|
205
|
+
// NOTE: This is an expensive feature, the colSpan code could be optimized.
|
|
206
|
+
if (hasColSpan) {
|
|
207
|
+
const minFirstColumn = pinnedColumns.left.length;
|
|
208
|
+
const maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
|
|
209
|
+
apiRef.current.calculateColSpan({
|
|
210
|
+
rowId: id,
|
|
211
|
+
minFirstColumn,
|
|
212
|
+
maxLastColumn,
|
|
213
|
+
columns: visibleColumns
|
|
214
|
+
});
|
|
215
|
+
if (pinnedColumns.left.length > 0) {
|
|
216
|
+
apiRef.current.calculateColSpan({
|
|
217
|
+
rowId: id,
|
|
218
|
+
minFirstColumn: 0,
|
|
219
|
+
maxLastColumn: pinnedColumns.left.length,
|
|
220
|
+
columns: visibleColumns
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (pinnedColumns.right.length > 0) {
|
|
224
|
+
apiRef.current.calculateColSpan({
|
|
225
|
+
rowId: id,
|
|
226
|
+
minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
|
|
227
|
+
maxLastColumn: visibleColumns.length,
|
|
228
|
+
columns: visibleColumns
|
|
229
|
+
});
|
|
230
|
+
}
|
|
259
231
|
}
|
|
260
|
-
const
|
|
232
|
+
const hasFocus = cellFocus?.id === id;
|
|
261
233
|
const baseRowHeight = !apiRef.current.rowHasAutoHeight(id) ? apiRef.current.unstable_getRowHeight(id) : 'auto';
|
|
262
234
|
let isSelected;
|
|
263
235
|
if (selectedRowsLookup[id] == null) {
|
|
@@ -273,47 +245,46 @@ const useGridVirtualScroller = () => {
|
|
|
273
245
|
if (isLastSection) {
|
|
274
246
|
if (!isPinnedSection) {
|
|
275
247
|
const lastIndex = currentPage.rows.length - 1;
|
|
276
|
-
const isLastVisibleRowIndex =
|
|
248
|
+
const isLastVisibleRowIndex = rowIndexInPage === lastIndex;
|
|
277
249
|
if (isLastVisibleRowIndex) {
|
|
278
250
|
isLastVisible = true;
|
|
279
251
|
}
|
|
280
252
|
} else {
|
|
281
|
-
isLastVisible =
|
|
253
|
+
isLastVisible = rowIndexInPage === rowModels.length - 1;
|
|
282
254
|
}
|
|
283
255
|
}
|
|
284
|
-
const
|
|
285
|
-
const
|
|
286
|
-
const renderedColumnsWithFocusedCell = columnWithFocusedCellNotInRange && focusedCell ? [columnWithFocusedCellNotInRange, ...renderedColumns] : renderedColumns;
|
|
256
|
+
const isVirtualRow = rowIndexInPage === virtualRowIndex;
|
|
257
|
+
const isNotVisible = isVirtualRow;
|
|
287
258
|
let tabbableCell = null;
|
|
288
259
|
if (cellTabIndex !== null && cellTabIndex.id === id) {
|
|
289
260
|
const cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);
|
|
290
261
|
tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;
|
|
291
262
|
}
|
|
263
|
+
const offsetLeft = computeOffsetLeft(columnPositions, currentRenderContext, theme.direction, pinnedColumns.left.length);
|
|
264
|
+
const rowIndex = (currentPage?.range?.firstRowIndex || 0) + rowIndexOffset + rowIndexInPage;
|
|
292
265
|
rows.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.row, (0, _extends2.default)({
|
|
293
266
|
row: model,
|
|
294
267
|
rowId: id,
|
|
295
|
-
index:
|
|
268
|
+
index: rowIndex,
|
|
269
|
+
selected: isSelected,
|
|
270
|
+
offsetTop: params.rows ? undefined : rowsMeta.positions[rowIndexInPage],
|
|
271
|
+
offsetLeft: offsetLeft,
|
|
272
|
+
dimensions: dimensions,
|
|
296
273
|
rowHeight: baseRowHeight,
|
|
297
|
-
focusedCell: focusedCell,
|
|
298
274
|
tabbableCell: tabbableCell,
|
|
299
|
-
focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
|
|
300
|
-
renderedColumns: renderedColumnsWithFocusedCell,
|
|
301
|
-
visibleColumns: visibleColumns,
|
|
302
275
|
pinnedColumns: pinnedColumns,
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
offsets: offsets,
|
|
307
|
-
dimensions: dimensions,
|
|
276
|
+
visibleColumns: visibleColumns,
|
|
277
|
+
renderContext: currentRenderContext,
|
|
278
|
+
focusedColumnIndex: hasFocus ? focusedCell.columnIndex : undefined,
|
|
308
279
|
isFirstVisible: isFirstVisible,
|
|
309
280
|
isLastVisible: isLastVisible,
|
|
310
|
-
isNotVisible:
|
|
281
|
+
isNotVisible: isNotVisible
|
|
311
282
|
}, rowProps), id));
|
|
312
283
|
const panel = panels.get(id);
|
|
313
284
|
if (panel) {
|
|
314
285
|
rows.push(panel);
|
|
315
286
|
}
|
|
316
|
-
}
|
|
287
|
+
});
|
|
317
288
|
return rows;
|
|
318
289
|
};
|
|
319
290
|
const needsHorizontalScrollbar = outerSize.width && columnsTotalWidth >= outerSize.width;
|
|
@@ -366,6 +337,9 @@ const useGridVirtualScroller = () => {
|
|
|
366
337
|
apiRef.current.register('private', {
|
|
367
338
|
updateRenderContext: forceUpdateRenderContext
|
|
368
339
|
});
|
|
340
|
+
(0, _utils2.useGridApiEventHandler)(apiRef, 'columnsChange', forceUpdateRenderContext);
|
|
341
|
+
(0, _utils2.useGridApiEventHandler)(apiRef, 'filteredRowsSet', forceUpdateRenderContext);
|
|
342
|
+
(0, _utils2.useGridApiEventHandler)(apiRef, 'rowExpansionChange', forceUpdateRenderContext);
|
|
369
343
|
return {
|
|
370
344
|
renderContext,
|
|
371
345
|
setPanels,
|
|
@@ -400,29 +374,6 @@ const useGridVirtualScroller = () => {
|
|
|
400
374
|
};
|
|
401
375
|
};
|
|
402
376
|
exports.useGridVirtualScroller = useGridVirtualScroller;
|
|
403
|
-
function createGetRenderedColumns() {
|
|
404
|
-
return (0, _reselect.defaultMemoize)((columns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, indexOfColumnWithFocusedCell) => {
|
|
405
|
-
// If the selected column is not within the current range of columns being displayed,
|
|
406
|
-
// we need to render it at either the left or right of the columns,
|
|
407
|
-
// depending on whether it is above or below the range.
|
|
408
|
-
let focusedCellColumnIndexNotInRange;
|
|
409
|
-
const renderedColumns = columns.slice(firstColumnToRender, lastColumnToRender);
|
|
410
|
-
if (indexOfColumnWithFocusedCell > -1) {
|
|
411
|
-
// check if it is not on the left pinned column.
|
|
412
|
-
if (firstColumnToRender > indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell >= minFirstColumn) {
|
|
413
|
-
focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
|
|
414
|
-
}
|
|
415
|
-
// check if it is not on the right pinned column.
|
|
416
|
-
else if (lastColumnToRender < indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell < maxLastColumn) {
|
|
417
|
-
focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
return {
|
|
421
|
-
focusedCellColumnIndexNotInRange,
|
|
422
|
-
renderedColumns
|
|
423
|
-
};
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
377
|
function inputsSelector(apiRef, rootProps, enabled, enabledForColumns) {
|
|
427
378
|
const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
|
|
428
379
|
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, rootProps);
|
|
@@ -505,7 +456,7 @@ function getNearestIndexToRender(inputs, offset) {
|
|
|
505
456
|
// Check if all rows in this page are already measured
|
|
506
457
|
allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= inputs.range.lastRowIndex;
|
|
507
458
|
}
|
|
508
|
-
const lastMeasuredIndexRelativeToCurrentPage = (0,
|
|
459
|
+
const lastMeasuredIndexRelativeToCurrentPage = (0, _utils3.clamp)(lastMeasuredIndexRelativeToAllRows - (inputs.range?.firstRowIndex || 0), 0, inputs.rowsMeta.positions.length);
|
|
509
460
|
if (allRowsMeasured || inputs.rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {
|
|
510
461
|
// If all rows were measured (when no row has "auto" as height) or all rows before the offset
|
|
511
462
|
// were measured, then use a binary search because it's faster.
|
|
@@ -592,7 +543,7 @@ function getIndexesToRender({
|
|
|
592
543
|
minFirstIndex,
|
|
593
544
|
maxLastIndex
|
|
594
545
|
}) {
|
|
595
|
-
return [(0,
|
|
546
|
+
return [(0, _utils3.clamp)(firstIndex - buffer, minFirstIndex, maxLastIndex), (0, _utils3.clamp)(lastIndex + buffer, minFirstIndex, maxLastIndex)];
|
|
596
547
|
}
|
|
597
548
|
function areRenderContextsEqual(context1, context2) {
|
|
598
549
|
if (context1 === context2) {
|
|
@@ -600,14 +551,8 @@ function areRenderContextsEqual(context1, context2) {
|
|
|
600
551
|
}
|
|
601
552
|
return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
|
|
602
553
|
}
|
|
603
|
-
function
|
|
554
|
+
function computeOffsetLeft(columnPositions, renderContext, direction, pinnedLeftLength) {
|
|
604
555
|
const factor = direction === 'ltr' ? 1 : -1;
|
|
605
|
-
const rowPositions = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state).positions;
|
|
606
|
-
const columnPositions = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef);
|
|
607
|
-
const top = rowPositions[renderContext.firstRowIndex] ?? 0;
|
|
608
556
|
const left = factor * (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0);
|
|
609
|
-
return
|
|
610
|
-
top,
|
|
611
|
-
left
|
|
612
|
-
};
|
|
557
|
+
return left;
|
|
613
558
|
}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.EMPTY_RENDER_CONTEXT =
|
|
7
|
+
exports.EMPTY_RENDER_CONTEXT = void 0;
|
|
8
8
|
exports.useGridVirtualization = useGridVirtualization;
|
|
9
9
|
exports.virtualizationStateInitializer = void 0;
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -12,10 +12,6 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
12
12
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
13
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
-
const EMPTY_OFFSETS = exports.EMPTY_OFFSETS = {
|
|
16
|
-
top: 0,
|
|
17
|
-
left: 0
|
|
18
|
-
};
|
|
19
15
|
const EMPTY_RENDER_CONTEXT = exports.EMPTY_RENDER_CONTEXT = {
|
|
20
16
|
firstRowIndex: 0,
|
|
21
17
|
lastRowIndex: 0,
|
|
@@ -26,8 +22,7 @@ const virtualizationStateInitializer = (state, props) => {
|
|
|
26
22
|
const virtualization = {
|
|
27
23
|
enabled: !props.disableVirtualization,
|
|
28
24
|
enabledForColumns: true,
|
|
29
|
-
renderContext: EMPTY_RENDER_CONTEXT
|
|
30
|
-
offsets: EMPTY_OFFSETS
|
|
25
|
+
renderContext: EMPTY_RENDER_CONTEXT
|
|
31
26
|
};
|
|
32
27
|
return (0, _extends2.default)({}, state, {
|
|
33
28
|
virtualization
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
7
|
+
exports.Timeout = void 0;
|
|
6
8
|
exports.useTimeout = useTimeout;
|
|
7
9
|
var _useLazyRef = require("./useLazyRef");
|
|
8
10
|
var _useOnMount = require("./useOnMount");
|
|
9
11
|
class Timeout {
|
|
10
12
|
constructor() {
|
|
11
|
-
this.currentId =
|
|
13
|
+
this.currentId = null;
|
|
12
14
|
this.clear = () => {
|
|
13
|
-
if (this.currentId !==
|
|
15
|
+
if (this.currentId !== null) {
|
|
14
16
|
clearTimeout(this.currentId);
|
|
15
|
-
this.currentId =
|
|
17
|
+
this.currentId = null;
|
|
16
18
|
}
|
|
17
19
|
};
|
|
18
20
|
this.disposeEffect = () => {
|
|
@@ -22,11 +24,18 @@ class Timeout {
|
|
|
22
24
|
static create() {
|
|
23
25
|
return new Timeout();
|
|
24
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Executes `fn` after `delay`, clearing any previously scheduled call.
|
|
29
|
+
*/
|
|
25
30
|
start(delay, fn) {
|
|
26
31
|
this.clear();
|
|
27
|
-
this.currentId = setTimeout(
|
|
32
|
+
this.currentId = setTimeout(() => {
|
|
33
|
+
this.currentId = null;
|
|
34
|
+
fn();
|
|
35
|
+
}, delay);
|
|
28
36
|
}
|
|
29
37
|
}
|
|
38
|
+
exports.Timeout = Timeout;
|
|
30
39
|
function useTimeout() {
|
|
31
40
|
const timeout = (0, _useLazyRef.useLazyRef)(Timeout.create).current;
|
|
32
41
|
(0, _useOnMount.useOnMount)(timeout.disposeEffect);
|
package/node/index.js
CHANGED
package/node/internals/index.js
CHANGED
|
@@ -85,6 +85,7 @@ var _exportNames = {
|
|
|
85
85
|
getActiveElement: true,
|
|
86
86
|
isEventTargetInPortal: true,
|
|
87
87
|
isNavigationKey: true,
|
|
88
|
+
isPasteShortcut: true,
|
|
88
89
|
buildWarning: true,
|
|
89
90
|
exportAs: true,
|
|
90
91
|
useGridPrivateApiContext: true,
|
|
@@ -330,6 +331,12 @@ Object.defineProperty(exports, "isNavigationKey", {
|
|
|
330
331
|
return _keyboardUtils.isNavigationKey;
|
|
331
332
|
}
|
|
332
333
|
});
|
|
334
|
+
Object.defineProperty(exports, "isPasteShortcut", {
|
|
335
|
+
enumerable: true,
|
|
336
|
+
get: function () {
|
|
337
|
+
return _keyboardUtils.isPasteShortcut;
|
|
338
|
+
}
|
|
339
|
+
});
|
|
333
340
|
Object.defineProperty(exports, "isSingleSelectColDef", {
|
|
334
341
|
enumerable: true,
|
|
335
342
|
get: function () {
|
|
@@ -3,24 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.isNavigationKey = exports.isMultipleKey = exports.isKeyboardEvent = exports.isHideMenuKey = exports.isEscapeKey = exports.isCellExitEditModeKeys = exports.isCellEnterEditModeKeys = exports.isCellEditCommitKeys = exports.GRID_MULTIPLE_SELECTION_KEYS = exports.GRID_CELL_EXIT_EDIT_MODE_KEYS = exports.GRID_CELL_EDIT_COMMIT_KEYS = void 0;
|
|
7
|
+
exports.isPasteShortcut = isPasteShortcut;
|
|
7
8
|
exports.isPrintableKey = isPrintableKey;
|
|
8
|
-
exports.isTabKey =
|
|
9
|
-
|
|
9
|
+
exports.isTabKey = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
12
|
+
*/
|
|
13
|
+
const isEscapeKey = key => key === 'Escape';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
17
|
+
*/
|
|
10
18
|
exports.isEscapeKey = isEscapeKey;
|
|
11
|
-
const
|
|
12
|
-
exports.isEnterKey = isEnterKey;
|
|
13
|
-
const isTabKey = key => key === 'Tab'; // TODO remove
|
|
14
|
-
exports.isTabKey = isTabKey;
|
|
15
|
-
const isSpaceKey = key => key === ' ';
|
|
16
|
-
exports.isSpaceKey = isSpaceKey;
|
|
17
|
-
const isArrowKeys = key => key.indexOf('Arrow') === 0;
|
|
18
|
-
exports.isArrowKeys = isArrowKeys;
|
|
19
|
-
const isHomeOrEndKeys = key => key === 'Home' || key === 'End';
|
|
20
|
-
exports.isHomeOrEndKeys = isHomeOrEndKeys;
|
|
21
|
-
const isPageKeys = key => key.indexOf('Page') === 0;
|
|
22
|
-
exports.isPageKeys = isPageKeys;
|
|
23
|
-
const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
|
|
19
|
+
const isTabKey = key => key === 'Tab';
|
|
24
20
|
|
|
25
21
|
// Non printable keys have a name, e.g. "ArrowRight", see the whole list:
|
|
26
22
|
// https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
|
|
@@ -29,7 +25,7 @@ const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
|
|
|
29
25
|
// However, we also need to ignore shortcuts, for example: select all:
|
|
30
26
|
// - Windows: Ctrl+A, event.ctrlKey is true
|
|
31
27
|
// - macOS: ⌘ Command+A, event.metaKey is true
|
|
32
|
-
exports.
|
|
28
|
+
exports.isTabKey = isTabKey;
|
|
33
29
|
function isPrintableKey(event) {
|
|
34
30
|
return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
|
|
35
31
|
}
|
|
@@ -38,15 +34,24 @@ const GRID_CELL_EXIT_EDIT_MODE_KEYS = exports.GRID_CELL_EXIT_EDIT_MODE_KEYS = ['
|
|
|
38
34
|
const GRID_CELL_EDIT_COMMIT_KEYS = exports.GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];
|
|
39
35
|
const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;
|
|
40
36
|
exports.isMultipleKey = isMultipleKey;
|
|
41
|
-
const isCellEnterEditModeKeys = event =>
|
|
37
|
+
const isCellEnterEditModeKeys = event => isPrintableKey(event) || event.key === 'Enter' || event.key === 'Backspace' || event.key === 'Delete';
|
|
42
38
|
exports.isCellEnterEditModeKeys = isCellEnterEditModeKeys;
|
|
43
39
|
const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;
|
|
44
40
|
exports.isCellExitEditModeKeys = isCellExitEditModeKeys;
|
|
45
41
|
const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;
|
|
46
42
|
exports.isCellEditCommitKeys = isCellEditCommitKeys;
|
|
47
|
-
const isNavigationKey = key =>
|
|
43
|
+
const isNavigationKey = key => key.indexOf('Arrow') === 0 || key.indexOf('Page') === 0 || key === ' ' || key === 'Home' || key === 'End';
|
|
48
44
|
exports.isNavigationKey = isNavigationKey;
|
|
49
45
|
const isKeyboardEvent = event => !!event.key;
|
|
50
46
|
exports.isKeyboardEvent = isKeyboardEvent;
|
|
51
47
|
const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
|
|
52
|
-
|
|
48
|
+
|
|
49
|
+
// In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false.
|
|
50
|
+
// However, maybe it's overkill to fix, so let's be lazy.
|
|
51
|
+
exports.isHideMenuKey = isHideMenuKey;
|
|
52
|
+
function isPasteShortcut(event) {
|
|
53
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v' && !event.shiftKey && !event.altKey) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
package/node/utils/utils.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.isNumber = isNumber;
|
|
|
13
13
|
exports.isObject = isObject;
|
|
14
14
|
exports.localStorageAvailable = localStorageAvailable;
|
|
15
15
|
exports.randomNumberBetween = randomNumberBetween;
|
|
16
|
+
exports.range = range;
|
|
16
17
|
function isNumber(value) {
|
|
17
18
|
return typeof value === 'number' && !Number.isNaN(value);
|
|
18
19
|
}
|
|
@@ -45,6 +46,16 @@ function escapeRegExp(value) {
|
|
|
45
46
|
*/
|
|
46
47
|
const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
|
|
47
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Create an array containing the range [from, to[
|
|
51
|
+
*/
|
|
52
|
+
exports.clamp = clamp;
|
|
53
|
+
function range(from, to) {
|
|
54
|
+
return Array.from({
|
|
55
|
+
length: to - from
|
|
56
|
+
}).map((_, i) => from + i);
|
|
57
|
+
}
|
|
58
|
+
|
|
48
59
|
/**
|
|
49
60
|
* Based on `fast-deep-equal`
|
|
50
61
|
*
|
|
@@ -71,7 +82,7 @@ const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
|
|
|
71
82
|
* SOFTWARE.
|
|
72
83
|
* We only type the public interface to avoid dozens of `as` in the function.
|
|
73
84
|
*/
|
|
74
|
-
|
|
85
|
+
|
|
75
86
|
function isDeepEqual(a, b) {
|
|
76
87
|
if (a === b) {
|
|
77
88
|
return true;
|
package/package.json
CHANGED
package/utils/keyboardUtils.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
4
|
+
*/
|
|
2
5
|
export declare const isEscapeKey: (key: string) => boolean;
|
|
3
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
8
|
+
*/
|
|
4
9
|
export declare const isTabKey: (key: string) => boolean;
|
|
5
|
-
export declare const isSpaceKey: (key: string) => boolean;
|
|
6
|
-
export declare const isArrowKeys: (key: string) => boolean;
|
|
7
|
-
export declare const isHomeOrEndKeys: (key: string) => boolean;
|
|
8
|
-
export declare const isPageKeys: (key: string) => boolean;
|
|
9
|
-
export declare const isDeleteKeys: (key: string) => boolean;
|
|
10
10
|
export declare function isPrintableKey(event: React.KeyboardEvent<HTMLElement>): boolean;
|
|
11
11
|
export declare const GRID_MULTIPLE_SELECTION_KEYS: string[];
|
|
12
12
|
export declare const GRID_CELL_EXIT_EDIT_MODE_KEYS: string[];
|
|
@@ -18,3 +18,4 @@ export declare const isCellEditCommitKeys: (key: string) => boolean;
|
|
|
18
18
|
export declare const isNavigationKey: (key: string) => boolean;
|
|
19
19
|
export declare const isKeyboardEvent: (event: any) => event is React.KeyboardEvent<HTMLElement>;
|
|
20
20
|
export declare const isHideMenuKey: (key: React.KeyboardEvent['key']) => boolean;
|
|
21
|
+
export declare function isPasteShortcut(event: React.KeyboardEvent): boolean;
|
package/utils/keyboardUtils.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
3
|
+
*/
|
|
4
|
+
export const isEscapeKey = key => key === 'Escape';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export const
|
|
9
|
-
export const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated there is no meaninfuly logic abstracted, use event.key directly.
|
|
8
|
+
*/
|
|
9
|
+
export const isTabKey = key => key === 'Tab';
|
|
10
10
|
|
|
11
11
|
// Non printable keys have a name, e.g. "ArrowRight", see the whole list:
|
|
12
12
|
// https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
|
|
@@ -22,9 +22,18 @@ export const GRID_MULTIPLE_SELECTION_KEYS = ['Meta', 'Control', 'Shift'];
|
|
|
22
22
|
export const GRID_CELL_EXIT_EDIT_MODE_KEYS = ['Enter', 'Escape', 'Tab'];
|
|
23
23
|
export const GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];
|
|
24
24
|
export const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;
|
|
25
|
-
export const isCellEnterEditModeKeys = event =>
|
|
25
|
+
export const isCellEnterEditModeKeys = event => isPrintableKey(event) || event.key === 'Enter' || event.key === 'Backspace' || event.key === 'Delete';
|
|
26
26
|
export const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;
|
|
27
27
|
export const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;
|
|
28
|
-
export const isNavigationKey = key =>
|
|
28
|
+
export const isNavigationKey = key => key.indexOf('Arrow') === 0 || key.indexOf('Page') === 0 || key === ' ' || key === 'Home' || key === 'End';
|
|
29
29
|
export const isKeyboardEvent = event => !!event.key;
|
|
30
|
-
export const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
|
|
30
|
+
export const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
|
|
31
|
+
|
|
32
|
+
// In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false.
|
|
33
|
+
// However, maybe it's overkill to fix, so let's be lazy.
|
|
34
|
+
export function isPasteShortcut(event) {
|
|
35
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v' && !event.shiftKey && !event.altKey) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|