@mui/x-data-grid-pro 5.5.1 → 5.7.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 +229 -0
- package/DataGridPro/DataGridPro.d.ts +3 -0
- package/DataGridPro/DataGridPro.js +915 -0
- package/DataGridPro/index.d.ts +2 -0
- package/DataGridPro/index.js +2 -0
- package/DataGridPro/package.json +6 -0
- package/DataGridPro/useDataGridProComponent.d.ts +4 -0
- package/DataGridPro/useDataGridProComponent.js +84 -0
- package/DataGridPro/useDataGridProProps.d.ts +6 -0
- package/DataGridPro/useDataGridProProps.js +49 -0
- package/components/DataGridProColumnHeaders.d.ts +6 -0
- package/components/DataGridProColumnHeaders.js +165 -0
- package/components/DataGridProVirtualScroller.d.ts +8 -0
- package/components/DataGridProVirtualScroller.js +270 -0
- package/components/GridColumnPinningMenuItems.d.ts +11 -0
- package/components/GridColumnPinningMenuItems.js +71 -0
- package/components/GridDetailPanelToggleCell.d.ts +7 -0
- package/components/GridDetailPanelToggleCell.js +125 -0
- package/components/GridGroupingColumnLeafCell.d.ts +4 -0
- package/components/GridGroupingColumnLeafCell.js +22 -0
- package/components/GridGroupingCriteriaCell.d.ts +10 -0
- package/components/GridGroupingCriteriaCell.js +150 -0
- package/components/GridRowGroupableColumnMenuItems.d.ts +11 -0
- package/components/GridRowGroupableColumnMenuItems.js +63 -0
- package/components/GridRowGroupingColumnMenuItems.d.ts +11 -0
- package/components/GridRowGroupingColumnMenuItems.js +58 -0
- package/components/GridTreeDataGroupingCell.d.ts +10 -0
- package/components/GridTreeDataGroupingCell.js +160 -0
- package/components/index.d.ts +3 -0
- package/components/index.js +4 -0
- package/components/package.json +6 -0
- package/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +42 -0
- package/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
- package/hooks/features/columnPinning/gridColumnPinningSelector.d.ts +2 -0
- package/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
- package/hooks/features/columnPinning/index.d.ts +2 -0
- package/hooks/features/columnPinning/index.js +2 -0
- package/hooks/features/columnPinning/useGridColumnPinning.d.ts +6 -0
- package/hooks/features/columnPinning/useGridColumnPinning.js +274 -0
- package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +4 -0
- package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
- package/hooks/features/columnReorder/columnReorderInterfaces.d.ts +6 -0
- package/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
- package/hooks/features/columnReorder/columnReorderSelector.d.ts +3 -0
- package/hooks/features/columnReorder/columnReorderSelector.js +3 -0
- package/hooks/features/columnReorder/index.d.ts +2 -0
- package/hooks/features/columnReorder/index.js +2 -0
- package/hooks/features/columnReorder/useGridColumnReorder.d.ts +10 -0
- package/hooks/features/columnReorder/useGridColumnReorder.js +165 -0
- package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeState.js +1 -0
- package/hooks/features/columnResize/index.d.ts +2 -0
- package/hooks/features/columnResize/index.js +2 -0
- package/hooks/features/columnResize/useGridColumnResize.d.ts +11 -0
- package/hooks/features/columnResize/useGridColumnResize.js +305 -0
- package/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +28 -0
- package/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
- package/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +5 -0
- package/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
- package/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +3 -0
- package/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
- package/hooks/features/detailPanel/index.d.ts +3 -0
- package/hooks/features/detailPanel/index.js +3 -0
- package/hooks/features/detailPanel/useGridDetailPanel.d.ts +6 -0
- package/hooks/features/detailPanel/useGridDetailPanel.js +109 -0
- package/hooks/features/detailPanel/useGridDetailPanelCache.d.ts +4 -0
- package/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
- package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +4 -0
- package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
- package/hooks/features/index.d.ts +6 -0
- package/hooks/features/index.js +7 -0
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +10 -0
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
- package/hooks/features/rowGrouping/createGroupingColDef.d.ts +43 -0
- package/hooks/features/rowGrouping/createGroupingColDef.js +318 -0
- package/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +37 -0
- package/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
- package/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +4 -0
- package/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
- package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +27 -0
- package/hooks/features/rowGrouping/gridRowGroupingUtils.js +139 -0
- package/hooks/features/rowGrouping/index.d.ts +3 -0
- package/hooks/features/rowGrouping/index.js +3 -0
- package/hooks/features/rowGrouping/useGridRowGrouping.d.ts +13 -0
- package/hooks/features/rowGrouping/useGridRowGrouping.js +204 -0
- package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +203 -0
- package/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +7 -0
- package/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
- package/hooks/features/treeData/gridTreeDataUtils.d.ts +15 -0
- package/hooks/features/treeData/gridTreeDataUtils.js +88 -0
- package/hooks/features/treeData/index.d.ts +1 -0
- package/hooks/features/treeData/index.js +1 -0
- package/hooks/features/treeData/useGridTreeData.d.ts +6 -0
- package/hooks/features/treeData/useGridTreeData.js +29 -0
- package/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +4 -0
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +138 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +1 -0
- package/hooks/package.json +6 -0
- package/hooks/utils/useGridApiContext.d.ts +4 -0
- package/hooks/utils/useGridApiContext.js +2 -0
- package/hooks/utils/useGridApiRef.d.ts +4 -0
- package/hooks/utils/useGridApiRef.js +2 -0
- package/hooks/utils/useGridRootProps.d.ts +2 -0
- package/hooks/utils/useGridRootProps.js +2 -0
- package/index.d.ts +16 -0
- package/index.js +20 -0
- package/legacy/DataGridPro/DataGridPro.js +915 -0
- package/legacy/DataGridPro/index.js +2 -0
- package/legacy/DataGridPro/useDataGridProComponent.js +84 -0
- package/legacy/DataGridPro/useDataGridProProps.js +58 -0
- package/legacy/components/DataGridProColumnHeaders.js +173 -0
- package/legacy/components/DataGridProVirtualScroller.js +287 -0
- package/legacy/components/GridColumnPinningMenuItems.js +71 -0
- package/legacy/components/GridDetailPanelToggleCell.js +121 -0
- package/legacy/components/GridGroupingColumnLeafCell.js +20 -0
- package/legacy/components/GridGroupingCriteriaCell.js +146 -0
- package/legacy/components/GridRowGroupableColumnMenuItems.js +61 -0
- package/legacy/components/GridRowGroupingColumnMenuItems.js +56 -0
- package/legacy/components/GridTreeDataGroupingCell.js +156 -0
- package/legacy/components/index.js +4 -0
- package/legacy/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
- package/legacy/hooks/features/columnPinning/gridColumnPinningSelector.js +3 -0
- package/legacy/hooks/features/columnPinning/index.js +2 -0
- package/legacy/hooks/features/columnPinning/useGridColumnPinning.js +298 -0
- package/legacy/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +48 -0
- package/legacy/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
- package/legacy/hooks/features/columnReorder/columnReorderSelector.js +7 -0
- package/legacy/hooks/features/columnReorder/index.js +2 -0
- package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +171 -0
- package/legacy/hooks/features/columnResize/columnResizeSelector.js +7 -0
- package/legacy/hooks/features/columnResize/columnResizeState.js +1 -0
- package/legacy/hooks/features/columnResize/index.js +2 -0
- package/legacy/hooks/features/columnResize/useGridColumnResize.js +310 -0
- package/legacy/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
- package/legacy/hooks/features/detailPanel/gridDetailPanelSelector.js +9 -0
- package/legacy/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +28 -0
- package/legacy/hooks/features/detailPanel/index.js +3 -0
- package/legacy/hooks/features/detailPanel/useGridDetailPanel.js +114 -0
- package/legacy/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
- package/legacy/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +31 -0
- package/legacy/hooks/features/index.js +7 -0
- package/legacy/hooks/features/infiniteLoader/useGridInfiniteLoader.js +51 -0
- package/legacy/hooks/features/rowGrouping/createGroupingColDef.js +319 -0
- package/legacy/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
- package/legacy/hooks/features/rowGrouping/gridRowGroupingSelector.js +13 -0
- package/legacy/hooks/features/rowGrouping/gridRowGroupingUtils.js +147 -0
- package/legacy/hooks/features/rowGrouping/index.js +3 -0
- package/legacy/hooks/features/rowGrouping/useGridRowGrouping.js +210 -0
- package/legacy/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +217 -0
- package/legacy/hooks/features/treeData/gridTreeDataGroupColDef.js +24 -0
- package/legacy/hooks/features/treeData/gridTreeDataUtils.js +86 -0
- package/legacy/hooks/features/treeData/index.js +1 -0
- package/legacy/hooks/features/treeData/useGridTreeData.js +29 -0
- package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +153 -0
- package/legacy/hooks/index.js +1 -0
- package/legacy/hooks/utils/useGridApiContext.js +2 -0
- package/legacy/hooks/utils/useGridApiRef.js +2 -0
- package/legacy/hooks/utils/useGridRootProps.js +2 -0
- package/legacy/index.js +20 -0
- package/legacy/models/dataGridProProps.js +1 -0
- package/legacy/models/gridApiPro.js +1 -0
- package/legacy/models/gridGroupingColDefOverride.js +1 -0
- package/legacy/models/gridGroupingValueGetterParams.js +1 -0
- package/legacy/models/gridRowScrollEndParams.js +1 -0
- package/legacy/models/gridStatePro.js +1 -0
- package/legacy/models/index.js +4 -0
- package/legacy/themeAugmentation/index.js +3 -0
- package/legacy/themeAugmentation/overrides.js +1 -0
- package/legacy/themeAugmentation/props.js +1 -0
- package/legacy/typeOverloads/modules.js +1 -0
- package/legacy/typeOverloads/reexports.js +6 -0
- package/legacy/utils/domUtils.js +19 -0
- package/legacy/utils/releaseInfo.js +15 -0
- package/legacy/utils/tree/buildRowTree.js +188 -0
- package/legacy/utils/tree/sortRowTree.js +63 -0
- package/models/dataGridProProps.d.ts +174 -0
- package/models/dataGridProProps.js +1 -0
- package/models/gridApiPro.d.ts +12 -0
- package/models/gridApiPro.js +1 -0
- package/models/gridGroupingColDefOverride.d.ts +30 -0
- package/models/gridGroupingColDefOverride.js +1 -0
- package/models/gridGroupingValueGetterParams.d.ts +31 -0
- package/models/gridGroupingValueGetterParams.js +1 -0
- package/models/gridRowScrollEndParams.d.ts +18 -0
- package/models/gridRowScrollEndParams.js +1 -0
- package/models/gridStatePro.d.ts +20 -0
- package/models/gridStatePro.js +1 -0
- package/models/index.d.ts +4 -0
- package/models/index.js +4 -0
- package/models/package.json +6 -0
- package/modern/DataGridPro/DataGridPro.js +915 -0
- package/modern/DataGridPro/index.js +2 -0
- package/modern/DataGridPro/useDataGridProComponent.js +82 -0
- package/modern/DataGridPro/useDataGridProProps.js +45 -0
- package/modern/components/DataGridProColumnHeaders.js +163 -0
- package/modern/components/DataGridProVirtualScroller.js +268 -0
- package/modern/components/GridColumnPinningMenuItems.js +71 -0
- package/modern/components/GridDetailPanelToggleCell.js +125 -0
- package/modern/components/GridGroupingColumnLeafCell.js +20 -0
- package/modern/components/GridGroupingCriteriaCell.js +148 -0
- package/modern/components/GridRowGroupableColumnMenuItems.js +61 -0
- package/modern/components/GridRowGroupingColumnMenuItems.js +56 -0
- package/modern/components/GridTreeDataGroupingCell.js +158 -0
- package/modern/components/index.js +4 -0
- package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
- package/modern/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
- package/modern/hooks/features/columnPinning/index.js +2 -0
- package/modern/hooks/features/columnPinning/useGridColumnPinning.js +268 -0
- package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
- package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
- package/modern/hooks/features/columnReorder/columnReorderSelector.js +3 -0
- package/modern/hooks/features/columnReorder/index.js +2 -0
- package/modern/hooks/features/columnReorder/useGridColumnReorder.js +165 -0
- package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
- package/modern/hooks/features/columnResize/index.js +2 -0
- package/modern/hooks/features/columnResize/useGridColumnResize.js +295 -0
- package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
- package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
- package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
- package/modern/hooks/features/detailPanel/index.js +3 -0
- package/modern/hooks/features/detailPanel/useGridDetailPanel.js +105 -0
- package/modern/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
- package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
- package/modern/hooks/features/index.js +7 -0
- package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
- package/modern/hooks/features/rowGrouping/createGroupingColDef.js +302 -0
- package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
- package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
- package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +137 -0
- package/modern/hooks/features/rowGrouping/index.js +3 -0
- package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +196 -0
- package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +203 -0
- package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
- package/modern/hooks/features/treeData/gridTreeDataUtils.js +84 -0
- package/modern/hooks/features/treeData/index.js +1 -0
- package/modern/hooks/features/treeData/useGridTreeData.js +27 -0
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +136 -0
- package/modern/hooks/index.js +1 -0
- package/modern/hooks/utils/useGridApiContext.js +2 -0
- package/modern/hooks/utils/useGridApiRef.js +2 -0
- package/modern/hooks/utils/useGridRootProps.js +2 -0
- package/modern/index.js +20 -0
- package/modern/models/dataGridProProps.js +1 -0
- package/modern/models/gridApiPro.js +1 -0
- package/modern/models/gridGroupingColDefOverride.js +1 -0
- package/modern/models/gridGroupingValueGetterParams.js +1 -0
- package/modern/models/gridRowScrollEndParams.js +1 -0
- package/modern/models/gridStatePro.js +1 -0
- package/modern/models/index.js +4 -0
- package/modern/themeAugmentation/index.js +3 -0
- package/modern/themeAugmentation/overrides.js +1 -0
- package/modern/themeAugmentation/props.js +1 -0
- package/modern/typeOverloads/modules.js +1 -0
- package/modern/typeOverloads/reexports.js +6 -0
- package/modern/utils/domUtils.js +19 -0
- package/modern/utils/releaseInfo.js +15 -0
- package/modern/utils/tree/buildRowTree.js +167 -0
- package/modern/utils/tree/sortRowTree.js +60 -0
- package/node/DataGridPro/DataGridPro.js +939 -0
- package/node/DataGridPro/index.js +30 -0
- package/node/DataGridPro/useDataGridProComponent.js +106 -0
- package/node/DataGridPro/useDataGridProProps.js +69 -0
- package/node/components/DataGridProColumnHeaders.js +189 -0
- package/node/components/DataGridProVirtualScroller.js +297 -0
- package/node/components/GridColumnPinningMenuItems.js +88 -0
- package/node/components/GridDetailPanelToggleCell.js +146 -0
- package/node/components/GridGroupingColumnLeafCell.js +38 -0
- package/node/components/GridGroupingCriteriaCell.js +170 -0
- package/node/components/GridRowGroupableColumnMenuItems.js +82 -0
- package/node/components/GridRowGroupingColumnMenuItems.js +78 -0
- package/node/components/GridTreeDataGroupingCell.js +181 -0
- package/node/components/index.js +44 -0
- package/node/hooks/features/columnPinning/gridColumnPinningInterface.js +17 -0
- package/node/hooks/features/columnPinning/gridColumnPinningSelector.js +10 -0
- package/node/hooks/features/columnPinning/index.js +31 -0
- package/node/hooks/features/columnPinning/useGridColumnPinning.js +297 -0
- package/node/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +66 -0
- package/node/hooks/features/columnReorder/columnReorderInterfaces.js +5 -0
- package/node/hooks/features/columnReorder/columnReorderSelector.js +14 -0
- package/node/hooks/features/columnReorder/index.js +18 -0
- package/node/hooks/features/columnReorder/useGridColumnReorder.js +188 -0
- package/node/hooks/features/columnResize/columnResizeSelector.js +14 -0
- package/node/hooks/features/columnResize/columnResizeState.js +5 -0
- package/node/hooks/features/columnResize/index.js +31 -0
- package/node/hooks/features/columnResize/useGridColumnResize.js +329 -0
- package/node/hooks/features/detailPanel/gridDetailPanelInterface.js +5 -0
- package/node/hooks/features/detailPanel/gridDetailPanelSelector.js +18 -0
- package/node/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +47 -0
- package/node/hooks/features/detailPanel/index.js +44 -0
- package/node/hooks/features/detailPanel/useGridDetailPanel.js +133 -0
- package/node/hooks/features/detailPanel/useGridDetailPanelCache.js +74 -0
- package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +44 -0
- package/node/hooks/features/index.js +83 -0
- package/node/hooks/features/infiniteLoader/useGridInfiniteLoader.js +67 -0
- package/node/hooks/features/rowGrouping/createGroupingColDef.js +341 -0
- package/node/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +5 -0
- package/node/hooks/features/rowGrouping/gridRowGroupingSelector.js +18 -0
- package/node/hooks/features/rowGrouping/gridRowGroupingUtils.js +172 -0
- package/node/hooks/features/rowGrouping/index.js +51 -0
- package/node/hooks/features/rowGrouping/useGridRowGrouping.js +232 -0
- package/node/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +227 -0
- package/node/hooks/features/treeData/gridTreeDataGroupColDef.js +35 -0
- package/node/hooks/features/treeData/gridTreeDataUtils.js +98 -0
- package/node/hooks/features/treeData/index.js +13 -0
- package/node/hooks/features/treeData/useGridTreeData.js +43 -0
- package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +164 -0
- package/node/hooks/index.js +18 -0
- package/node/hooks/utils/useGridApiContext.js +11 -0
- package/node/hooks/utils/useGridApiRef.js +11 -0
- package/node/hooks/utils/useGridRootProps.js +11 -0
- package/node/index.js +214 -0
- package/node/models/dataGridProProps.js +5 -0
- package/node/models/gridApiPro.js +5 -0
- package/node/models/gridGroupingColDefOverride.js +5 -0
- package/node/models/gridGroupingValueGetterParams.js +5 -0
- package/node/models/gridRowScrollEndParams.js +5 -0
- package/node/models/gridStatePro.js +5 -0
- package/node/models/index.js +44 -0
- package/node/themeAugmentation/index.js +31 -0
- package/node/themeAugmentation/overrides.js +5 -0
- package/node/themeAugmentation/props.js +5 -0
- package/node/typeOverloads/modules.js +5 -0
- package/node/typeOverloads/reexports.js +29 -0
- package/node/utils/domUtils.js +32 -0
- package/node/utils/releaseInfo.js +25 -0
- package/node/utils/tree/buildRowTree.js +185 -0
- package/node/utils/tree/sortRowTree.js +69 -0
- package/package.json +11 -12
- package/themeAugmentation/index.d.ts +2 -2
- package/themeAugmentation/index.js +3 -0
- package/themeAugmentation/overrides.d.ts +8 -8
- package/themeAugmentation/overrides.js +1 -0
- package/themeAugmentation/package.json +6 -0
- package/themeAugmentation/props.d.ts +19 -19
- package/themeAugmentation/props.js +1 -0
- package/typeOverloads/modules.d.ts +41 -0
- package/typeOverloads/modules.js +1 -0
- package/typeOverloads/reexports.d.ts +22 -0
- package/typeOverloads/reexports.js +6 -0
- package/utils/domUtils.d.ts +3 -0
- package/utils/domUtils.js +19 -0
- package/utils/releaseInfo.d.ts +1 -0
- package/utils/releaseInfo.js +15 -0
- package/utils/tree/buildRowTree.d.ts +47 -0
- package/utils/tree/buildRowTree.js +179 -0
- package/utils/tree/sortRowTree.d.ts +10 -0
- package/utils/tree/sortRowTree.js +60 -0
- package/LICENSE +0 -12
- package/index-cjs.js +0 -15
- package/index-esm.js +0 -15
- package/x-data-grid-pro.d.ts +0 -5495
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
4
|
+
import { useGridApiEventHandler, getDataGridUtilityClass, GridEvents, useGridLogger } from '@mui/x-data-grid';
|
|
5
|
+
import { gridColumnReorderDragColSelector } from './columnReorderSelector';
|
|
6
|
+
const CURSOR_MOVE_DIRECTION_LEFT = 'left';
|
|
7
|
+
const CURSOR_MOVE_DIRECTION_RIGHT = 'right';
|
|
8
|
+
|
|
9
|
+
const getCursorMoveDirectionX = (currentCoordinates, nextCoordinates) => {
|
|
10
|
+
return currentCoordinates.x <= nextCoordinates.x ? CURSOR_MOVE_DIRECTION_RIGHT : CURSOR_MOVE_DIRECTION_LEFT;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const hasCursorPositionChanged = (currentCoordinates, nextCoordinates) => currentCoordinates.x !== nextCoordinates.x || currentCoordinates.y !== nextCoordinates.y;
|
|
14
|
+
|
|
15
|
+
const useUtilityClasses = ownerState => {
|
|
16
|
+
const {
|
|
17
|
+
classes
|
|
18
|
+
} = ownerState;
|
|
19
|
+
const slots = {
|
|
20
|
+
columnHeaderDragging: ['columnHeader--dragging']
|
|
21
|
+
};
|
|
22
|
+
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const columnReorderStateInitializer = state => _extends({}, state, {
|
|
26
|
+
columnReorder: {
|
|
27
|
+
dragCol: ''
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Only available in DataGridPro
|
|
32
|
+
* @requires useGridColumns (method)
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
export const useGridColumnReorder = (apiRef, props) => {
|
|
36
|
+
const logger = useGridLogger(apiRef, 'useGridColumnReorder');
|
|
37
|
+
const dragColNode = React.useRef(null);
|
|
38
|
+
const cursorPosition = React.useRef({
|
|
39
|
+
x: 0,
|
|
40
|
+
y: 0
|
|
41
|
+
});
|
|
42
|
+
const originColumnIndex = React.useRef(null);
|
|
43
|
+
const removeDnDStylesTimeout = React.useRef();
|
|
44
|
+
const ownerState = {
|
|
45
|
+
classes: props.classes
|
|
46
|
+
};
|
|
47
|
+
const classes = useUtilityClasses(ownerState);
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
return () => {
|
|
50
|
+
clearTimeout(removeDnDStylesTimeout.current);
|
|
51
|
+
};
|
|
52
|
+
}, []);
|
|
53
|
+
const handleColumnHeaderDragStart = React.useCallback((params, event) => {
|
|
54
|
+
if (props.disableColumnReorder || params.colDef.disableReorder) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
logger.debug(`Start dragging col ${params.field}`); // Prevent drag events propagation.
|
|
59
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
60
|
+
|
|
61
|
+
event.stopPropagation();
|
|
62
|
+
dragColNode.current = event.currentTarget;
|
|
63
|
+
dragColNode.current.classList.add(classes.columnHeaderDragging);
|
|
64
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
65
|
+
columnReorder: _extends({}, state.columnReorder, {
|
|
66
|
+
dragCol: params.field
|
|
67
|
+
})
|
|
68
|
+
}));
|
|
69
|
+
apiRef.current.forceUpdate();
|
|
70
|
+
removeDnDStylesTimeout.current = setTimeout(() => {
|
|
71
|
+
dragColNode.current.classList.remove(classes.columnHeaderDragging);
|
|
72
|
+
});
|
|
73
|
+
originColumnIndex.current = apiRef.current.getColumnIndex(params.field, false);
|
|
74
|
+
}, [props.disableColumnReorder, classes.columnHeaderDragging, logger, apiRef]);
|
|
75
|
+
const handleDragEnter = React.useCallback((params, event) => {
|
|
76
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
77
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
78
|
+
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
}, []);
|
|
81
|
+
const handleDragOver = React.useCallback((params, event) => {
|
|
82
|
+
const dragColField = gridColumnReorderDragColSelector(apiRef);
|
|
83
|
+
|
|
84
|
+
if (!dragColField) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
logger.debug(`Dragging over col ${params.field}`);
|
|
89
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
90
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
91
|
+
|
|
92
|
+
event.stopPropagation();
|
|
93
|
+
const coordinates = {
|
|
94
|
+
x: event.clientX,
|
|
95
|
+
y: event.clientY
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
if (params.field !== dragColField && hasCursorPositionChanged(cursorPosition.current, coordinates)) {
|
|
99
|
+
const targetColIndex = apiRef.current.getColumnIndex(params.field, false);
|
|
100
|
+
const targetColVisibleIndex = apiRef.current.getColumnIndex(params.field, true);
|
|
101
|
+
const targetCol = apiRef.current.getColumn(params.field);
|
|
102
|
+
const dragColIndex = apiRef.current.getColumnIndex(dragColField, false);
|
|
103
|
+
const visibleColumns = apiRef.current.getVisibleColumns();
|
|
104
|
+
const cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
|
|
105
|
+
const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
|
|
106
|
+
const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
|
|
107
|
+
|
|
108
|
+
if (hasMovedLeft || hasMovedRight) {
|
|
109
|
+
let canBeReordered;
|
|
110
|
+
|
|
111
|
+
if (!targetCol.disableReorder) {
|
|
112
|
+
canBeReordered = true;
|
|
113
|
+
} else if (hasMovedLeft) {
|
|
114
|
+
canBeReordered = targetColIndex > 0 && !visibleColumns[targetColIndex - 1].disableReorder;
|
|
115
|
+
} else {
|
|
116
|
+
canBeReordered = targetColIndex < visibleColumns.length - 1 && !visibleColumns[targetColIndex + 1].disableReorder;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const canBeReorderedProcessed = apiRef.current.unstable_applyPreProcessors('canBeReordered', canBeReordered, {
|
|
120
|
+
targetIndex: targetColVisibleIndex
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
if (canBeReorderedProcessed) {
|
|
124
|
+
apiRef.current.setColumnIndex(dragColField, targetColIndex);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
cursorPosition.current = coordinates;
|
|
129
|
+
}
|
|
130
|
+
}, [apiRef, logger]);
|
|
131
|
+
const handleDragEnd = React.useCallback((params, event) => {
|
|
132
|
+
const dragColField = gridColumnReorderDragColSelector(apiRef);
|
|
133
|
+
|
|
134
|
+
if (props.disableColumnReorder || !dragColField) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
logger.debug('End dragging col');
|
|
139
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
140
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
141
|
+
|
|
142
|
+
event.stopPropagation();
|
|
143
|
+
clearTimeout(removeDnDStylesTimeout.current);
|
|
144
|
+
dragColNode.current = null; // Check if the column was dropped outside the grid.
|
|
145
|
+
|
|
146
|
+
if (event.dataTransfer.dropEffect === 'none') {
|
|
147
|
+
// Accessing params.field may contain the wrong field as header elements are reused
|
|
148
|
+
apiRef.current.setColumnIndex(dragColField, originColumnIndex.current);
|
|
149
|
+
originColumnIndex.current = null;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
153
|
+
columnReorder: _extends({}, state.columnReorder, {
|
|
154
|
+
dragCol: ''
|
|
155
|
+
})
|
|
156
|
+
}));
|
|
157
|
+
apiRef.current.forceUpdate();
|
|
158
|
+
}, [props.disableColumnReorder, logger, apiRef]);
|
|
159
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnHeaderDragStart);
|
|
160
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnter, handleDragEnter);
|
|
161
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragOver, handleDragOver);
|
|
162
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleDragEnd);
|
|
163
|
+
useGridApiEventHandler(apiRef, GridEvents.cellDragEnter, handleDragEnter);
|
|
164
|
+
useGridApiEventHandler(apiRef, GridEvents.cellDragOver, handleDragOver);
|
|
165
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { GridStatePro } from '../../../models/gridStatePro';
|
|
2
|
+
export declare const gridColumnResizeSelector: (state: GridStatePro) => import("./columnResizeState").GridColumnResizeState;
|
|
3
|
+
export declare const gridResizingColumnFieldSelector: import("@mui/x-data-grid").OutputSelector<GridStatePro, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { GridStateInitializer } from '@mui/x-data-grid/internals';
|
|
3
|
+
import { GridApiPro } from '../../../models/gridApiPro';
|
|
4
|
+
import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
|
|
5
|
+
export declare const columnResizeStateInitializer: GridStateInitializer;
|
|
6
|
+
/**
|
|
7
|
+
* Only available in DataGridPro
|
|
8
|
+
* @requires useGridColumns (method, event)
|
|
9
|
+
* TODO: improve experience for last column
|
|
10
|
+
*/
|
|
11
|
+
export declare const useGridColumnResize: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'onColumnResize' | 'onColumnWidthChange'>) => void;
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ownerDocument, useEventCallback } from '@mui/material/utils';
|
|
4
|
+
import { GridEvents, gridClasses, GridColumnHeaderSeparatorSides, useGridApiEventHandler, useGridApiOptionHandler, useGridNativeEventListener, useGridLogger } from '@mui/x-data-grid';
|
|
5
|
+
import { clamp, findParentElementFromClassName } from '@mui/x-data-grid/internals';
|
|
6
|
+
import { findGridCellElementsFromCol, getFieldFromHeaderElem, findHeaderElementFromField } from '../../../utils/domUtils';
|
|
7
|
+
// TODO: remove support for Safari < 13.
|
|
8
|
+
// https://caniuse.com/#search=touch-action
|
|
9
|
+
//
|
|
10
|
+
// Safari, on iOS, supports touch action since v13.
|
|
11
|
+
// Over 80% of the iOS phones are compatible
|
|
12
|
+
// in August 2020.
|
|
13
|
+
// Utilizing the CSS.supports method to check if touch-action is supported.
|
|
14
|
+
// Since CSS.supports is supported on all but Edge@12 and IE and touch-action
|
|
15
|
+
// is supported on both Edge@12 and IE if CSS.supports is not available that means that
|
|
16
|
+
// touch-action will be supported
|
|
17
|
+
let cachedSupportsTouchActionNone = false;
|
|
18
|
+
|
|
19
|
+
function doesSupportTouchActionNone() {
|
|
20
|
+
if (cachedSupportsTouchActionNone === undefined) {
|
|
21
|
+
if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {
|
|
22
|
+
cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');
|
|
23
|
+
} else {
|
|
24
|
+
cachedSupportsTouchActionNone = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return cachedSupportsTouchActionNone;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function trackFinger(event, currentTouchId) {
|
|
32
|
+
if (currentTouchId !== undefined && event.changedTouches) {
|
|
33
|
+
for (let i = 0; i < event.changedTouches.length; i += 1) {
|
|
34
|
+
const touch = event.changedTouches[i];
|
|
35
|
+
|
|
36
|
+
if (touch.identifier === currentTouchId) {
|
|
37
|
+
return {
|
|
38
|
+
x: touch.clientX,
|
|
39
|
+
y: touch.clientY
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
x: event.clientX,
|
|
49
|
+
y: event.clientY
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function computeNewWidth(initialOffsetToSeparator, clickX, columnBounds, separatorSide) {
|
|
54
|
+
let newWidth = initialOffsetToSeparator;
|
|
55
|
+
|
|
56
|
+
if (separatorSide === GridColumnHeaderSeparatorSides.Right) {
|
|
57
|
+
newWidth += clickX - columnBounds.left;
|
|
58
|
+
} else {
|
|
59
|
+
newWidth += columnBounds.right - clickX;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return newWidth;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function computeOffsetToSeparator(clickX, columnBounds, separatorSide) {
|
|
66
|
+
if (separatorSide === GridColumnHeaderSeparatorSides.Left) {
|
|
67
|
+
return clickX - columnBounds.left;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return columnBounds.right - clickX;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function getSeparatorSide(element) {
|
|
74
|
+
return element.classList.contains(gridClasses['columnSeparator--sideRight']) ? GridColumnHeaderSeparatorSides.Right : GridColumnHeaderSeparatorSides.Left;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const columnResizeStateInitializer = state => _extends({}, state, {
|
|
78
|
+
columnResize: {
|
|
79
|
+
resizingColumnField: ''
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Only available in DataGridPro
|
|
84
|
+
* @requires useGridColumns (method, event)
|
|
85
|
+
* TODO: improve experience for last column
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
export const useGridColumnResize = (apiRef, props) => {
|
|
89
|
+
const logger = useGridLogger(apiRef, 'useGridColumnResize');
|
|
90
|
+
const colDefRef = React.useRef();
|
|
91
|
+
const colElementRef = React.useRef();
|
|
92
|
+
const colCellElementsRef = React.useRef(); // To improve accessibility, the separator has padding on both sides.
|
|
93
|
+
// Clicking inside the padding area should be treated as a click in the separator.
|
|
94
|
+
// This ref stores the offset between the click and the separator.
|
|
95
|
+
|
|
96
|
+
const initialOffsetToSeparator = React.useRef();
|
|
97
|
+
const separatorSide = React.useRef();
|
|
98
|
+
const stopResizeEventTimeout = React.useRef();
|
|
99
|
+
const touchId = React.useRef();
|
|
100
|
+
|
|
101
|
+
const updateWidth = newWidth => {
|
|
102
|
+
logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current.field}`);
|
|
103
|
+
colDefRef.current.computedWidth = newWidth;
|
|
104
|
+
colDefRef.current.width = newWidth;
|
|
105
|
+
colDefRef.current.flex = undefined;
|
|
106
|
+
colElementRef.current.style.width = `${newWidth}px`;
|
|
107
|
+
colElementRef.current.style.minWidth = `${newWidth}px`;
|
|
108
|
+
colElementRef.current.style.maxWidth = `${newWidth}px`;
|
|
109
|
+
colCellElementsRef.current.forEach(element => {
|
|
110
|
+
const div = element;
|
|
111
|
+
div.style.width = `${newWidth}px`;
|
|
112
|
+
div.style.minWidth = `${newWidth}px`;
|
|
113
|
+
div.style.maxWidth = `${newWidth}px`;
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const handleResizeMouseUp = useEventCallback(nativeEvent => {
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
119
|
+
stopListening();
|
|
120
|
+
apiRef.current.updateColumn(colDefRef.current);
|
|
121
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
122
|
+
stopResizeEventTimeout.current = setTimeout(() => {
|
|
123
|
+
apiRef.current.publishEvent(GridEvents.columnResizeStop, null, nativeEvent);
|
|
124
|
+
|
|
125
|
+
if (colDefRef.current) {
|
|
126
|
+
var _colDefRef$current;
|
|
127
|
+
|
|
128
|
+
apiRef.current.publishEvent(GridEvents.columnWidthChange, {
|
|
129
|
+
element: colElementRef.current,
|
|
130
|
+
colDef: colDefRef.current,
|
|
131
|
+
width: (_colDefRef$current = colDefRef.current) == null ? void 0 : _colDefRef$current.computedWidth
|
|
132
|
+
}, nativeEvent);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
|
|
136
|
+
});
|
|
137
|
+
const handleResizeMouseMove = useEventCallback(nativeEvent => {
|
|
138
|
+
// Cancel move in case some other element consumed a mouseup event and it was not fired.
|
|
139
|
+
if (nativeEvent.buttons === 0) {
|
|
140
|
+
handleResizeMouseUp(nativeEvent);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
145
|
+
newWidth = clamp(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
|
|
146
|
+
updateWidth(newWidth);
|
|
147
|
+
const params = {
|
|
148
|
+
element: colElementRef.current,
|
|
149
|
+
colDef: colDefRef.current,
|
|
150
|
+
width: newWidth
|
|
151
|
+
};
|
|
152
|
+
apiRef.current.publishEvent(GridEvents.columnResize, params, nativeEvent);
|
|
153
|
+
});
|
|
154
|
+
const handleColumnResizeMouseDown = useEventCallback(({
|
|
155
|
+
colDef
|
|
156
|
+
}, event) => {
|
|
157
|
+
var _apiRef$current$colum;
|
|
158
|
+
|
|
159
|
+
// Only handle left clicks
|
|
160
|
+
if (event.button !== 0) {
|
|
161
|
+
return;
|
|
162
|
+
} // Skip if the column isn't resizable
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if (!event.currentTarget.classList.contains(gridClasses['columnSeparator--resizable'])) {
|
|
166
|
+
return;
|
|
167
|
+
} // Avoid text selection
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
event.preventDefault();
|
|
171
|
+
logger.debug(`Start Resize on col ${colDef.field}`);
|
|
172
|
+
apiRef.current.publishEvent(GridEvents.columnResizeStart, {
|
|
173
|
+
field: colDef.field
|
|
174
|
+
}, event);
|
|
175
|
+
colDefRef.current = colDef;
|
|
176
|
+
colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector(`[data-field="${colDef.field}"]`);
|
|
177
|
+
colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current);
|
|
178
|
+
const doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
179
|
+
doc.body.style.cursor = 'col-resize';
|
|
180
|
+
separatorSide.current = getSeparatorSide(event.currentTarget);
|
|
181
|
+
initialOffsetToSeparator.current = computeOffsetToSeparator(event.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
182
|
+
doc.addEventListener('mousemove', handleResizeMouseMove);
|
|
183
|
+
doc.addEventListener('mouseup', handleResizeMouseUp);
|
|
184
|
+
});
|
|
185
|
+
const handleTouchEnd = useEventCallback(nativeEvent => {
|
|
186
|
+
const finger = trackFinger(nativeEvent, touchId.current);
|
|
187
|
+
|
|
188
|
+
if (!finger) {
|
|
189
|
+
return;
|
|
190
|
+
} // eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
stopListening();
|
|
194
|
+
apiRef.current.updateColumn(colDefRef.current);
|
|
195
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
196
|
+
stopResizeEventTimeout.current = setTimeout(() => {
|
|
197
|
+
apiRef.current.publishEvent(GridEvents.columnResizeStop, null, nativeEvent);
|
|
198
|
+
});
|
|
199
|
+
logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
|
|
200
|
+
});
|
|
201
|
+
const handleTouchMove = useEventCallback(nativeEvent => {
|
|
202
|
+
const finger = trackFinger(nativeEvent, touchId.current);
|
|
203
|
+
|
|
204
|
+
if (!finger) {
|
|
205
|
+
return;
|
|
206
|
+
} // Cancel move in case some other element consumed a touchmove event and it was not fired.
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {
|
|
210
|
+
handleTouchEnd(nativeEvent);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
215
|
+
newWidth = clamp(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
|
|
216
|
+
updateWidth(newWidth);
|
|
217
|
+
const params = {
|
|
218
|
+
element: colElementRef.current,
|
|
219
|
+
colDef: colDefRef.current,
|
|
220
|
+
width: newWidth
|
|
221
|
+
};
|
|
222
|
+
apiRef.current.publishEvent(GridEvents.columnResize, params, nativeEvent);
|
|
223
|
+
});
|
|
224
|
+
const handleTouchStart = useEventCallback(event => {
|
|
225
|
+
var _apiRef$current$colum2;
|
|
226
|
+
|
|
227
|
+
const cellSeparator = findParentElementFromClassName(event.target, gridClasses['columnSeparator--resizable']); // Let the event bubble if the target is not a col separator
|
|
228
|
+
|
|
229
|
+
if (!cellSeparator) {
|
|
230
|
+
return;
|
|
231
|
+
} // If touch-action: none; is not supported we need to prevent the scroll manually.
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
if (!doesSupportTouchActionNone()) {
|
|
235
|
+
event.preventDefault();
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const touch = event.changedTouches[0];
|
|
239
|
+
|
|
240
|
+
if (touch != null) {
|
|
241
|
+
// A number that uniquely identifies the current finger in the touch session.
|
|
242
|
+
touchId.current = touch.identifier;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
colElementRef.current = findParentElementFromClassName(event.target, gridClasses.columnHeader);
|
|
246
|
+
const field = getFieldFromHeaderElem(colElementRef.current);
|
|
247
|
+
const colDef = apiRef.current.getColumn(field);
|
|
248
|
+
logger.debug(`Start Resize on col ${colDef.field}`);
|
|
249
|
+
apiRef.current.publishEvent(GridEvents.columnResizeStart, {
|
|
250
|
+
field
|
|
251
|
+
}, event);
|
|
252
|
+
colDefRef.current = colDef;
|
|
253
|
+
colElementRef.current = findHeaderElementFromField((_apiRef$current$colum2 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
|
|
254
|
+
colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current);
|
|
255
|
+
separatorSide.current = getSeparatorSide(event.target);
|
|
256
|
+
initialOffsetToSeparator.current = computeOffsetToSeparator(touch.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
257
|
+
const doc = ownerDocument(event.currentTarget);
|
|
258
|
+
doc.addEventListener('touchmove', handleTouchMove);
|
|
259
|
+
doc.addEventListener('touchend', handleTouchEnd);
|
|
260
|
+
});
|
|
261
|
+
const stopListening = React.useCallback(() => {
|
|
262
|
+
const doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
263
|
+
doc.body.style.removeProperty('cursor');
|
|
264
|
+
doc.removeEventListener('mousemove', handleResizeMouseMove);
|
|
265
|
+
doc.removeEventListener('mouseup', handleResizeMouseUp);
|
|
266
|
+
doc.removeEventListener('touchmove', handleTouchMove);
|
|
267
|
+
doc.removeEventListener('touchend', handleTouchEnd);
|
|
268
|
+
}, [apiRef, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
|
|
269
|
+
const handleResizeStart = React.useCallback(({
|
|
270
|
+
field
|
|
271
|
+
}) => {
|
|
272
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
273
|
+
columnResize: _extends({}, state.columnResize, {
|
|
274
|
+
resizingColumnField: field
|
|
275
|
+
})
|
|
276
|
+
}));
|
|
277
|
+
apiRef.current.forceUpdate();
|
|
278
|
+
}, [apiRef]);
|
|
279
|
+
const handleResizeStop = React.useCallback(() => {
|
|
280
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
281
|
+
columnResize: _extends({}, state.columnResize, {
|
|
282
|
+
resizingColumnField: ''
|
|
283
|
+
})
|
|
284
|
+
}));
|
|
285
|
+
apiRef.current.forceUpdate();
|
|
286
|
+
}, [apiRef]);
|
|
287
|
+
React.useEffect(() => {
|
|
288
|
+
return () => {
|
|
289
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
290
|
+
stopListening();
|
|
291
|
+
};
|
|
292
|
+
}, [apiRef, handleTouchStart, stopListening]);
|
|
293
|
+
useGridNativeEventListener(apiRef, () => {
|
|
294
|
+
var _apiRef$current$colum3;
|
|
295
|
+
|
|
296
|
+
return (_apiRef$current$colum3 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum3.current;
|
|
297
|
+
}, 'touchstart', handleTouchStart, {
|
|
298
|
+
passive: doesSupportTouchActionNone()
|
|
299
|
+
});
|
|
300
|
+
useGridApiEventHandler(apiRef, GridEvents.columnSeparatorMouseDown, handleColumnResizeMouseDown);
|
|
301
|
+
useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, handleResizeStart);
|
|
302
|
+
useGridApiEventHandler(apiRef, GridEvents.columnResizeStop, handleResizeStop);
|
|
303
|
+
useGridApiOptionHandler(apiRef, GridEvents.columnResize, props.onColumnResize);
|
|
304
|
+
useGridApiOptionHandler(apiRef, GridEvents.columnWidthChange, props.onColumnWidthChange);
|
|
305
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { GridRowId } from '@mui/x-data-grid';
|
|
3
|
+
/**
|
|
4
|
+
* The master/detail API interface that is available in the grid [[apiRef]].
|
|
5
|
+
*/
|
|
6
|
+
export interface GridDetailPanelApi {
|
|
7
|
+
/**
|
|
8
|
+
* Expands or collapses the detail panel of a row.
|
|
9
|
+
* @param {string} id The row id to toggle the panel.
|
|
10
|
+
*/
|
|
11
|
+
toggleDetailPanel: (id: GridRowId) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Returns the rows whose detail panel is open.
|
|
14
|
+
* @returns {GridRowId[]} An array of row ids.
|
|
15
|
+
*/
|
|
16
|
+
getExpandedDetailPanels: () => GridRowId[];
|
|
17
|
+
/**
|
|
18
|
+
* Changes which rows to expand the detail panel.
|
|
19
|
+
* @param {GridRowId[]} ids The ids of the rows to open the detail panel.
|
|
20
|
+
*/
|
|
21
|
+
setExpandedDetailPanels: (ids: GridRowId[]) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface GridDetailPanelState {
|
|
24
|
+
expandedRowIds: GridRowId[];
|
|
25
|
+
contentCache: Record<GridRowId, React.ReactNode>;
|
|
26
|
+
heightCache: Record<GridRowId, number>;
|
|
27
|
+
}
|
|
28
|
+
export declare type GridDetailPanelInitialState = Pick<GridDetailPanelState, 'expandedRowIds'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { GridStatePro } from '../../../models/gridStatePro';
|
|
3
|
+
export declare const gridDetailPanelExpandedRowIdsSelector: (state: GridStatePro) => import("@mui/x-data-grid").GridRowId[];
|
|
4
|
+
export declare const gridDetailPanelExpandedRowsContentCacheSelector: (state: GridStatePro) => Record<import("@mui/x-data-grid").GridRowId, import("react").ReactNode>;
|
|
5
|
+
export declare const gridDetailPanelExpandedRowsHeightCacheSelector: (state: GridStatePro) => Record<import("@mui/x-data-grid").GridRowId, number>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export const gridDetailPanelExpandedRowIdsSelector = state => state.detailPanel.expandedRowIds;
|
|
2
|
+
export const gridDetailPanelExpandedRowsContentCacheSelector = state => state.detailPanel.contentCache;
|
|
3
|
+
export const gridDetailPanelExpandedRowsHeightCacheSelector = state => state.detailPanel.heightCache;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { GRID_STRING_COL_DEF } from '@mui/x-data-grid';
|
|
4
|
+
import { GridDetailPanelToggleCell } from '../../../components/GridDetailPanelToggleCell';
|
|
5
|
+
import { gridDetailPanelExpandedRowIdsSelector } from './gridDetailPanelSelector';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';
|
|
8
|
+
export const GRID_DETAIL_PANEL_TOGGLE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
|
|
9
|
+
field: GRID_DETAIL_PANEL_TOGGLE_FIELD,
|
|
10
|
+
headerName: '',
|
|
11
|
+
type: 'detailPanelToggle',
|
|
12
|
+
editable: false,
|
|
13
|
+
sortable: false,
|
|
14
|
+
filterable: false,
|
|
15
|
+
resizable: false,
|
|
16
|
+
disableColumnMenu: true,
|
|
17
|
+
disableReorder: true,
|
|
18
|
+
disableExport: true,
|
|
19
|
+
align: 'left',
|
|
20
|
+
width: 40,
|
|
21
|
+
valueGetter: params => {
|
|
22
|
+
const expandedRowIds = gridDetailPanelExpandedRowIdsSelector(params.api.state);
|
|
23
|
+
return expandedRowIds.includes(params.id);
|
|
24
|
+
},
|
|
25
|
+
renderCell: params => /*#__PURE__*/_jsx(GridDetailPanelToggleCell, _extends({}, params))
|
|
26
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { GridStateInitializer } from '@mui/x-data-grid/internals';
|
|
3
|
+
import { GridApiPro } from '../../../models/gridApiPro';
|
|
4
|
+
import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
|
|
5
|
+
export declare const detailPanelStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'initialState' | 'detailPanelExpandedRowIds'>>;
|
|
6
|
+
export declare const useGridDetailPanel: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'initialState' | 'getDetailPanelContent' | 'getDetailPanelHeight' | 'detailPanelExpandedRowIds' | 'onDetailPanelExpandedRowIdsChange' | 'pagination' | 'paginationMode'>) => void;
|