@mui/x-data-grid-pro 5.4.0 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +321 -113
- package/DataGridPro/DataGridPro.d.ts +3 -0
- package/DataGridPro/DataGridPro.js +896 -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 +72 -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 +281 -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 +124 -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 +159 -0
- package/components/Watermark.d.ts +2 -0
- package/components/Watermark.js +43 -0
- package/components/index.d.ts +2 -0
- package/components/index.js +3 -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 +8 -0
- package/hooks/features/columnReorder/useGridColumnReorder.js +166 -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 +9 -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 +4 -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 +31 -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 +24 -0
- package/hooks/features/rowGrouping/gridRowGroupingUtils.js +124 -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 +325 -0
- package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +76 -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 +14 -0
- package/hooks/features/treeData/gridTreeDataUtils.js +86 -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 +10 -0
- package/hooks/features/treeData/useGridTreeData.js +108 -0
- package/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +4 -0
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +69 -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 +15 -0
- package/index.js +19 -0
- package/legacy/DataGridPro/DataGridPro.js +896 -0
- package/legacy/DataGridPro/index.js +2 -0
- package/legacy/DataGridPro/useDataGridProComponent.js +72 -0
- package/legacy/DataGridPro/useDataGridProProps.js +53 -0
- package/legacy/components/DataGridProColumnHeaders.js +173 -0
- package/legacy/components/DataGridProVirtualScroller.js +297 -0
- package/legacy/components/GridColumnPinningMenuItems.js +71 -0
- package/legacy/components/GridDetailPanelToggleCell.js +120 -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 +155 -0
- package/legacy/components/Watermark.js +43 -0
- package/legacy/components/index.js +3 -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 +172 -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 +130 -0
- package/legacy/hooks/features/rowGrouping/index.js +3 -0
- package/legacy/hooks/features/rowGrouping/useGridRowGrouping.js +334 -0
- package/legacy/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +83 -0
- package/legacy/hooks/features/treeData/gridTreeDataGroupColDef.js +24 -0
- package/legacy/hooks/features/treeData/gridTreeDataUtils.js +84 -0
- package/legacy/hooks/features/treeData/index.js +1 -0
- package/legacy/hooks/features/treeData/useGridTreeData.js +116 -0
- package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +72 -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 +19 -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/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 +896 -0
- package/modern/DataGridPro/index.js +2 -0
- package/modern/DataGridPro/useDataGridProComponent.js +72 -0
- package/modern/DataGridPro/useDataGridProProps.js +45 -0
- package/modern/components/DataGridProColumnHeaders.js +163 -0
- package/modern/components/DataGridProVirtualScroller.js +279 -0
- package/modern/components/GridColumnPinningMenuItems.js +71 -0
- package/modern/components/GridDetailPanelToggleCell.js +124 -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 +157 -0
- package/modern/components/Watermark.js +43 -0
- package/modern/components/index.js +3 -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 +166 -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 +122 -0
- package/modern/hooks/features/rowGrouping/index.js +3 -0
- package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +317 -0
- package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +76 -0
- package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
- package/modern/hooks/features/treeData/gridTreeDataUtils.js +82 -0
- package/modern/hooks/features/treeData/index.js +1 -0
- package/modern/hooks/features/treeData/useGridTreeData.js +106 -0
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +67 -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 +19 -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/tree/buildRowTree.js +167 -0
- package/modern/utils/tree/sortRowTree.js +60 -0
- package/node/DataGridPro/DataGridPro.js +921 -0
- package/node/DataGridPro/index.js +30 -0
- package/node/DataGridPro/useDataGridProComponent.js +94 -0
- package/node/DataGridPro/useDataGridProProps.js +69 -0
- package/node/components/DataGridProColumnHeaders.js +189 -0
- package/node/components/DataGridProVirtualScroller.js +308 -0
- package/node/components/GridColumnPinningMenuItems.js +88 -0
- package/node/components/GridDetailPanelToggleCell.js +145 -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 +180 -0
- package/node/components/Watermark.js +56 -0
- package/node/components/index.js +31 -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 +187 -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 +326 -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 +130 -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 +153 -0
- package/node/hooks/features/rowGrouping/index.js +51 -0
- package/node/hooks/features/rowGrouping/useGridRowGrouping.js +355 -0
- package/node/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +94 -0
- package/node/hooks/features/treeData/gridTreeDataGroupColDef.js +35 -0
- package/node/hooks/features/treeData/gridTreeDataUtils.js +95 -0
- package/node/hooks/features/treeData/index.js +13 -0
- package/node/hooks/features/treeData/useGridTreeData.js +132 -0
- package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +92 -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 +200 -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/tree/buildRowTree.js +185 -0
- package/node/utils/tree/sortRowTree.js +69 -0
- package/package.json +12 -14
- 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/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 -5251
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import MuiDivider from '@mui/material/Divider';
|
|
7
|
+
import { useGridSelector, gridVisibleColumnDefinitionsSelector, gridColumnsTotalWidthSelector, gridColumnPositionsSelector, gridVisibleColumnFieldsSelector, gridClasses, GridEvents, useGridApiMethod, useGridApiEventHandler } from '@mui/x-data-grid';
|
|
8
|
+
import { useGridRegisterPreProcessor } from '@mui/x-data-grid/internals';
|
|
9
|
+
import { GridColumnPinningMenuItems } from '../../../components/GridColumnPinningMenuItems';
|
|
10
|
+
import { GridPinnedPosition } from './gridColumnPinningInterface';
|
|
11
|
+
import { gridPinnedColumnsSelector } from './gridColumnPinningSelector';
|
|
12
|
+
import { filterColumns } from '../../../components/DataGridProVirtualScroller';
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
|
|
15
|
+
var Divider = function Divider() {
|
|
16
|
+
return /*#__PURE__*/_jsx(MuiDivider, {
|
|
17
|
+
onClick: function onClick(event) {
|
|
18
|
+
return event.stopPropagation();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export var columnPinningStateInitializer = function columnPinningStateInitializer(state, props) {
|
|
24
|
+
var _props$initialState;
|
|
25
|
+
|
|
26
|
+
var model;
|
|
27
|
+
|
|
28
|
+
if (props.disableColumnPinning) {
|
|
29
|
+
model = {};
|
|
30
|
+
} else if (props.pinnedColumns) {
|
|
31
|
+
model = props.pinnedColumns;
|
|
32
|
+
} else if ((_props$initialState = props.initialState) != null && _props$initialState.pinnedColumns) {
|
|
33
|
+
var _props$initialState2;
|
|
34
|
+
|
|
35
|
+
model = (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.pinnedColumns;
|
|
36
|
+
} else {
|
|
37
|
+
model = {};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return _extends({}, state, {
|
|
41
|
+
pinnedColumns: model
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var mergeStateWithPinnedColumns = function mergeStateWithPinnedColumns(pinnedColumns) {
|
|
46
|
+
return function (state) {
|
|
47
|
+
return _extends({}, state, {
|
|
48
|
+
pinnedColumns: pinnedColumns
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export var useGridColumnPinning = function useGridColumnPinning(apiRef, props) {
|
|
54
|
+
var pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector); // Each visible row (not to be confused with a filter result) is composed of a central .MuiDataGrid-row element
|
|
55
|
+
// and up to two additional .MuiDataGrid-row's, one for the columns pinned to the left and another
|
|
56
|
+
// for those on the right side. When hovering any of these elements, the :hover styles are applied only to
|
|
57
|
+
// the row element that was actually hovered, not its additional siblings. To make it look like a contiguous row,
|
|
58
|
+
// this method adds/removes the .Mui-hovered class to all of the row elements inside one visible row.
|
|
59
|
+
|
|
60
|
+
var updateHoveredClassOnSiblingRows = React.useCallback(function (event) {
|
|
61
|
+
var _pinnedColumns$left$l, _pinnedColumns$left, _pinnedColumns$right$, _pinnedColumns$right;
|
|
62
|
+
|
|
63
|
+
if (props.disableColumnPinning) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var nbLeftPinnedColumns = (_pinnedColumns$left$l = (_pinnedColumns$left = pinnedColumns.left) == null ? void 0 : _pinnedColumns$left.length) != null ? _pinnedColumns$left$l : 0;
|
|
72
|
+
var nbRightPinnedColumns = (_pinnedColumns$right$ = (_pinnedColumns$right = pinnedColumns.right) == null ? void 0 : _pinnedColumns$right.length) != null ? _pinnedColumns$right$ : 0;
|
|
73
|
+
|
|
74
|
+
if (nbLeftPinnedColumns + nbRightPinnedColumns === 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
var index = event.currentTarget.dataset.rowindex;
|
|
79
|
+
var rowElements = apiRef.current.windowRef.current.querySelectorAll(".".concat(gridClasses.row, "[data-rowindex=\"").concat(index, "\"]"));
|
|
80
|
+
rowElements.forEach(function (row) {
|
|
81
|
+
// Ignore rows from other grid inside the hovered row
|
|
82
|
+
if (row.closest(".".concat(gridClasses.virtualScroller)) === apiRef.current.windowRef.current) {
|
|
83
|
+
if (event.type === 'mouseenter') {
|
|
84
|
+
row.classList.add('Mui-hovered');
|
|
85
|
+
} else {
|
|
86
|
+
row.classList.remove('Mui-hovered');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}, [apiRef, pinnedColumns.left, pinnedColumns.right, props.disableColumnPinning]);
|
|
91
|
+
var handleMouseEnter = React.useCallback(function (params, event) {
|
|
92
|
+
updateHoveredClassOnSiblingRows(event);
|
|
93
|
+
}, [updateHoveredClassOnSiblingRows]);
|
|
94
|
+
var handleMouseLeave = React.useCallback(function (params, event) {
|
|
95
|
+
updateHoveredClassOnSiblingRows(event);
|
|
96
|
+
}, [updateHoveredClassOnSiblingRows]);
|
|
97
|
+
useGridApiEventHandler(apiRef, GridEvents.rowMouseEnter, handleMouseEnter);
|
|
98
|
+
useGridApiEventHandler(apiRef, GridEvents.rowMouseLeave, handleMouseLeave);
|
|
99
|
+
/**
|
|
100
|
+
* PRE-PROCESSING
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
var calculateScrollLeft = React.useCallback(function (initialValue, params) {
|
|
104
|
+
if (props.disableColumnPinning) {
|
|
105
|
+
return initialValue;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
109
|
+
|
|
110
|
+
var _filterColumns = filterColumns(pinnedColumns, visibleColumnFields),
|
|
111
|
+
_filterColumns2 = _slicedToArray(_filterColumns, 2),
|
|
112
|
+
leftPinnedColumns = _filterColumns2[0],
|
|
113
|
+
rightPinnedColumns = _filterColumns2[1];
|
|
114
|
+
|
|
115
|
+
if (!params.colIndex || leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
|
|
116
|
+
return initialValue;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
120
|
+
var columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
|
|
121
|
+
var columnPositions = gridColumnPositionsSelector(apiRef);
|
|
122
|
+
var clientWidth = apiRef.current.windowRef.current.clientWidth;
|
|
123
|
+
var scrollLeft = apiRef.current.windowRef.current.scrollLeft;
|
|
124
|
+
var offsetWidth = visibleColumns[params.colIndex].computedWidth;
|
|
125
|
+
var offsetLeft = columnPositions[params.colIndex];
|
|
126
|
+
var leftPinnedColumnsWidth = columnPositions[leftPinnedColumns.length];
|
|
127
|
+
var rightPinnedColumnsWidth = columnsTotalWidth - columnPositions[columnPositions.length - rightPinnedColumns.length];
|
|
128
|
+
var elementBottom = offsetLeft + offsetWidth;
|
|
129
|
+
|
|
130
|
+
if (elementBottom - (clientWidth - rightPinnedColumnsWidth) > scrollLeft) {
|
|
131
|
+
var left = elementBottom - (clientWidth - rightPinnedColumnsWidth);
|
|
132
|
+
return _extends({}, initialValue, {
|
|
133
|
+
left: left
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (offsetLeft < scrollLeft + leftPinnedColumnsWidth) {
|
|
138
|
+
var _left = offsetLeft - leftPinnedColumnsWidth;
|
|
139
|
+
|
|
140
|
+
return _extends({}, initialValue, {
|
|
141
|
+
left: _left
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return initialValue;
|
|
146
|
+
}, [apiRef, pinnedColumns, props.disableColumnPinning]);
|
|
147
|
+
var addColumnMenuButtons = React.useCallback(function (initialValue, column) {
|
|
148
|
+
if (props.disableColumnPinning) {
|
|
149
|
+
return initialValue;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (column.pinnable === false) {
|
|
153
|
+
return initialValue;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return [].concat(_toConsumableArray(initialValue), [/*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(GridColumnPinningMenuItems, {})]);
|
|
157
|
+
}, [props.disableColumnPinning]);
|
|
158
|
+
var checkIfCanBeReordered = React.useCallback(function (initialValue, _ref) {
|
|
159
|
+
var targetIndex = _ref.targetIndex;
|
|
160
|
+
var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
161
|
+
|
|
162
|
+
var _filterColumns3 = filterColumns(pinnedColumns, visibleColumnFields),
|
|
163
|
+
_filterColumns4 = _slicedToArray(_filterColumns3, 2),
|
|
164
|
+
leftPinnedColumns = _filterColumns4[0],
|
|
165
|
+
rightPinnedColumns = _filterColumns4[1];
|
|
166
|
+
|
|
167
|
+
if (leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
|
|
168
|
+
return initialValue;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (leftPinnedColumns.length > 0 && targetIndex < leftPinnedColumns.length) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (rightPinnedColumns.length > 0) {
|
|
176
|
+
var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
177
|
+
var firstRightPinnedColumnIndex = visibleColumns.length - rightPinnedColumns.length;
|
|
178
|
+
return targetIndex >= firstRightPinnedColumnIndex ? false : initialValue;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return initialValue;
|
|
182
|
+
}, [apiRef, pinnedColumns]);
|
|
183
|
+
var stateExportPreProcessing = React.useCallback(function (prevState) {
|
|
184
|
+
var pinnedColumnsToExport = gridPinnedColumnsSelector(apiRef.current.state);
|
|
185
|
+
|
|
186
|
+
if ((!pinnedColumnsToExport.left || pinnedColumnsToExport.left.length === 0) && (!pinnedColumnsToExport.right || pinnedColumnsToExport.right.length === 0)) {
|
|
187
|
+
return prevState;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return _extends({}, prevState, {
|
|
191
|
+
pinnedColumns: pinnedColumnsToExport
|
|
192
|
+
});
|
|
193
|
+
}, [apiRef]);
|
|
194
|
+
var stateRestorePreProcessing = React.useCallback(function (params, context) {
|
|
195
|
+
var newPinnedColumns = context.stateToRestore.pinnedColumns;
|
|
196
|
+
|
|
197
|
+
if (newPinnedColumns != null) {
|
|
198
|
+
apiRef.current.setState(mergeStateWithPinnedColumns(newPinnedColumns));
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return params;
|
|
202
|
+
}, [apiRef]);
|
|
203
|
+
useGridRegisterPreProcessor(apiRef, 'scrollToIndexes', calculateScrollLeft);
|
|
204
|
+
useGridRegisterPreProcessor(apiRef, 'columnMenu', addColumnMenuButtons);
|
|
205
|
+
useGridRegisterPreProcessor(apiRef, 'canBeReordered', checkIfCanBeReordered);
|
|
206
|
+
useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
207
|
+
useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
208
|
+
apiRef.current.unstable_updateControlState({
|
|
209
|
+
stateId: 'pinnedColumns',
|
|
210
|
+
propModel: props.pinnedColumns,
|
|
211
|
+
propOnChange: props.onPinnedColumnsChange,
|
|
212
|
+
stateSelector: gridPinnedColumnsSelector,
|
|
213
|
+
changeEvent: GridEvents.pinnedColumnsChange
|
|
214
|
+
});
|
|
215
|
+
var checkIfEnabled = React.useCallback(function (methodName) {
|
|
216
|
+
if (props.disableColumnPinning) {
|
|
217
|
+
throw new Error("MUI: You cannot call `apiRef.current.".concat(methodName, "` when `disableColumnPinning` is true."));
|
|
218
|
+
}
|
|
219
|
+
}, [props.disableColumnPinning]);
|
|
220
|
+
var pinColumn = React.useCallback(function (field, side) {
|
|
221
|
+
checkIfEnabled('pinColumn');
|
|
222
|
+
|
|
223
|
+
if (apiRef.current.isColumnPinned(field) === side) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
apiRef.current.setState(function (state) {
|
|
228
|
+
var _extends2;
|
|
229
|
+
|
|
230
|
+
var otherSide = side === GridPinnedPosition.right ? GridPinnedPosition.left : GridPinnedPosition.right;
|
|
231
|
+
|
|
232
|
+
var newPinnedColumns = _extends({}, state.pinnedColumns, (_extends2 = {}, _defineProperty(_extends2, side, [].concat(_toConsumableArray(state.pinnedColumns[side] || []), [field])), _defineProperty(_extends2, otherSide, (state.pinnedColumns[otherSide] || []).filter(function (column) {
|
|
233
|
+
return column !== field;
|
|
234
|
+
})), _extends2));
|
|
235
|
+
|
|
236
|
+
return _extends({}, state, {
|
|
237
|
+
pinnedColumns: newPinnedColumns
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
apiRef.current.forceUpdate();
|
|
241
|
+
}, [apiRef, checkIfEnabled]);
|
|
242
|
+
var unpinColumn = React.useCallback(function (field) {
|
|
243
|
+
checkIfEnabled('unpinColumn');
|
|
244
|
+
apiRef.current.setState(function (state) {
|
|
245
|
+
var newPinnedColumns = _extends({}, state.pinnedColumns, {
|
|
246
|
+
left: (state.pinnedColumns.left || []).filter(function (column) {
|
|
247
|
+
return column !== field;
|
|
248
|
+
}),
|
|
249
|
+
right: (state.pinnedColumns.right || []).filter(function (column) {
|
|
250
|
+
return column !== field;
|
|
251
|
+
})
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
return _extends({}, state, {
|
|
255
|
+
pinnedColumns: newPinnedColumns
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
apiRef.current.forceUpdate();
|
|
259
|
+
}, [apiRef, checkIfEnabled]);
|
|
260
|
+
var getPinnedColumns = React.useCallback(function () {
|
|
261
|
+
checkIfEnabled('getPinnedColumns');
|
|
262
|
+
return gridPinnedColumnsSelector(apiRef.current.state);
|
|
263
|
+
}, [apiRef, checkIfEnabled]);
|
|
264
|
+
var setPinnedColumns = React.useCallback(function (newPinnedColumns) {
|
|
265
|
+
checkIfEnabled('setPinnedColumns');
|
|
266
|
+
apiRef.current.setState(mergeStateWithPinnedColumns(newPinnedColumns));
|
|
267
|
+
apiRef.current.forceUpdate();
|
|
268
|
+
}, [apiRef, checkIfEnabled]);
|
|
269
|
+
var isColumnPinned = React.useCallback(function (field) {
|
|
270
|
+
checkIfEnabled('isColumnPinned');
|
|
271
|
+
var leftPinnedColumns = pinnedColumns.left || [];
|
|
272
|
+
|
|
273
|
+
if (leftPinnedColumns.includes(field)) {
|
|
274
|
+
return GridPinnedPosition.left;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
var rightPinnedColumns = pinnedColumns.right || [];
|
|
278
|
+
|
|
279
|
+
if (rightPinnedColumns.includes(field)) {
|
|
280
|
+
return GridPinnedPosition.right;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return false;
|
|
284
|
+
}, [pinnedColumns.left, pinnedColumns.right, checkIfEnabled]);
|
|
285
|
+
var columnPinningApi = {
|
|
286
|
+
pinColumn: pinColumn,
|
|
287
|
+
unpinColumn: unpinColumn,
|
|
288
|
+
getPinnedColumns: getPinnedColumns,
|
|
289
|
+
setPinnedColumns: setPinnedColumns,
|
|
290
|
+
isColumnPinned: isColumnPinned
|
|
291
|
+
};
|
|
292
|
+
useGridApiMethod(apiRef, columnPinningApi, 'columnPinningApi');
|
|
293
|
+
React.useEffect(function () {
|
|
294
|
+
if (props.pinnedColumns) {
|
|
295
|
+
apiRef.current.setPinnedColumns(props.pinnedColumns);
|
|
296
|
+
}
|
|
297
|
+
}, [apiRef, props.pinnedColumns]);
|
|
298
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { useGridRegisterPreProcessor } from '@mui/x-data-grid/internals';
|
|
6
|
+
import { gridPinnedColumnsSelector } from './gridColumnPinningSelector';
|
|
7
|
+
import { columnPinningStateInitializer } from './useGridColumnPinning';
|
|
8
|
+
import { filterColumns } from '../../../components/DataGridProVirtualScroller';
|
|
9
|
+
export var useGridColumnPinningPreProcessors = function useGridColumnPinningPreProcessors(apiRef, props) {
|
|
10
|
+
var disableColumnPinning = props.disableColumnPinning,
|
|
11
|
+
pinnedColumnsProp = props.pinnedColumns,
|
|
12
|
+
initialState = props.initialState;
|
|
13
|
+
var pinnedColumns = gridPinnedColumnsSelector(apiRef.current.state);
|
|
14
|
+
|
|
15
|
+
if (pinnedColumns == null) {
|
|
16
|
+
// Since the state is not ready yet lets use the initializer to get which
|
|
17
|
+
// columns should be pinned initially.
|
|
18
|
+
var initializedState = columnPinningStateInitializer(apiRef.current.state, {
|
|
19
|
+
disableColumnPinning: disableColumnPinning,
|
|
20
|
+
pinnedColumns: pinnedColumnsProp,
|
|
21
|
+
initialState: initialState
|
|
22
|
+
}, apiRef);
|
|
23
|
+
pinnedColumns = gridPinnedColumnsSelector(initializedState);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var reorderPinnedColumns = React.useCallback(function (columnsState) {
|
|
27
|
+
if (columnsState.all.length === 0 || disableColumnPinning) {
|
|
28
|
+
return columnsState;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var _filterColumns = filterColumns(pinnedColumns, columnsState.all),
|
|
32
|
+
_filterColumns2 = _slicedToArray(_filterColumns, 2),
|
|
33
|
+
leftPinnedColumns = _filterColumns2[0],
|
|
34
|
+
rightPinnedColumns = _filterColumns2[1];
|
|
35
|
+
|
|
36
|
+
if (leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
|
|
37
|
+
return columnsState;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var centerColumns = columnsState.all.filter(function (field) {
|
|
41
|
+
return !leftPinnedColumns.includes(field) && !rightPinnedColumns.includes(field);
|
|
42
|
+
});
|
|
43
|
+
return _extends({}, columnsState, {
|
|
44
|
+
all: [].concat(_toConsumableArray(leftPinnedColumns), _toConsumableArray(centerColumns), _toConsumableArray(rightPinnedColumns))
|
|
45
|
+
});
|
|
46
|
+
}, [disableColumnPinning, pinnedColumns]);
|
|
47
|
+
useGridRegisterPreProcessor(apiRef, 'hydrateColumns', reorderPinnedColumns);
|
|
48
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createSelector } from '@mui/x-data-grid/internals';
|
|
2
|
+
export var gridColumnReorderSelector = function gridColumnReorderSelector(state) {
|
|
3
|
+
return state.columnReorder;
|
|
4
|
+
};
|
|
5
|
+
export var gridColumnReorderDragColSelector = createSelector(gridColumnReorderSelector, function (columnReorder) {
|
|
6
|
+
return columnReorder.dragCol;
|
|
7
|
+
});
|
|
@@ -0,0 +1,172 @@
|
|
|
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 { useGridStateInit } from '@mui/x-data-grid/internals';
|
|
6
|
+
import { gridColumnReorderDragColSelector } from './columnReorderSelector';
|
|
7
|
+
var CURSOR_MOVE_DIRECTION_LEFT = 'left';
|
|
8
|
+
var CURSOR_MOVE_DIRECTION_RIGHT = 'right';
|
|
9
|
+
|
|
10
|
+
var getCursorMoveDirectionX = function getCursorMoveDirectionX(currentCoordinates, nextCoordinates) {
|
|
11
|
+
return currentCoordinates.x <= nextCoordinates.x ? CURSOR_MOVE_DIRECTION_RIGHT : CURSOR_MOVE_DIRECTION_LEFT;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
var hasCursorPositionChanged = function hasCursorPositionChanged(currentCoordinates, nextCoordinates) {
|
|
15
|
+
return currentCoordinates.x !== nextCoordinates.x || currentCoordinates.y !== nextCoordinates.y;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
19
|
+
var classes = ownerState.classes;
|
|
20
|
+
var slots = {
|
|
21
|
+
columnHeaderDragging: ['columnHeader--dragging']
|
|
22
|
+
};
|
|
23
|
+
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Only available in DataGridPro
|
|
27
|
+
* @requires useGridColumns (method)
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
export var useGridColumnReorder = function useGridColumnReorder(apiRef, props) {
|
|
32
|
+
var logger = useGridLogger(apiRef, 'useGridColumnReorder');
|
|
33
|
+
useGridStateInit(apiRef, function (state) {
|
|
34
|
+
return _extends({}, state, {
|
|
35
|
+
columnReorder: {
|
|
36
|
+
dragCol: ''
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
var dragColNode = React.useRef(null);
|
|
41
|
+
var cursorPosition = React.useRef({
|
|
42
|
+
x: 0,
|
|
43
|
+
y: 0
|
|
44
|
+
});
|
|
45
|
+
var originColumnIndex = React.useRef(null);
|
|
46
|
+
var removeDnDStylesTimeout = React.useRef();
|
|
47
|
+
var ownerState = {
|
|
48
|
+
classes: props.classes
|
|
49
|
+
};
|
|
50
|
+
var classes = useUtilityClasses(ownerState);
|
|
51
|
+
React.useEffect(function () {
|
|
52
|
+
return function () {
|
|
53
|
+
clearTimeout(removeDnDStylesTimeout.current);
|
|
54
|
+
};
|
|
55
|
+
}, []);
|
|
56
|
+
var handleColumnHeaderDragStart = React.useCallback(function (params, event) {
|
|
57
|
+
if (props.disableColumnReorder || params.colDef.disableReorder) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
logger.debug("Start dragging col ".concat(params.field)); // Prevent drag events propagation.
|
|
62
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
63
|
+
|
|
64
|
+
event.stopPropagation();
|
|
65
|
+
dragColNode.current = event.currentTarget;
|
|
66
|
+
dragColNode.current.classList.add(classes.columnHeaderDragging);
|
|
67
|
+
apiRef.current.setState(function (state) {
|
|
68
|
+
return _extends({}, state, {
|
|
69
|
+
columnReorder: _extends({}, state.columnReorder, {
|
|
70
|
+
dragCol: params.field
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
apiRef.current.forceUpdate();
|
|
75
|
+
removeDnDStylesTimeout.current = setTimeout(function () {
|
|
76
|
+
dragColNode.current.classList.remove(classes.columnHeaderDragging);
|
|
77
|
+
});
|
|
78
|
+
originColumnIndex.current = apiRef.current.getColumnIndex(params.field, false);
|
|
79
|
+
}, [props.disableColumnReorder, classes.columnHeaderDragging, logger, apiRef]);
|
|
80
|
+
var handleDragEnter = React.useCallback(function (params, event) {
|
|
81
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
82
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
83
|
+
|
|
84
|
+
event.stopPropagation();
|
|
85
|
+
}, []);
|
|
86
|
+
var handleDragOver = React.useCallback(function (params, event) {
|
|
87
|
+
var dragColField = gridColumnReorderDragColSelector(apiRef);
|
|
88
|
+
|
|
89
|
+
if (!dragColField) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
logger.debug("Dragging over col ".concat(params.field));
|
|
94
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
95
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
96
|
+
|
|
97
|
+
event.stopPropagation();
|
|
98
|
+
var coordinates = {
|
|
99
|
+
x: event.clientX,
|
|
100
|
+
y: event.clientY
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
if (params.field !== dragColField && hasCursorPositionChanged(cursorPosition.current, coordinates)) {
|
|
104
|
+
var targetColIndex = apiRef.current.getColumnIndex(params.field, false);
|
|
105
|
+
var targetColVisibleIndex = apiRef.current.getColumnIndex(params.field, true);
|
|
106
|
+
var targetCol = apiRef.current.getColumn(params.field);
|
|
107
|
+
var dragColIndex = apiRef.current.getColumnIndex(dragColField, false);
|
|
108
|
+
var visibleColumns = apiRef.current.getVisibleColumns();
|
|
109
|
+
var cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
|
|
110
|
+
var hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
|
|
111
|
+
var hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
|
|
112
|
+
|
|
113
|
+
if (hasMovedLeft || hasMovedRight) {
|
|
114
|
+
var canBeReordered;
|
|
115
|
+
|
|
116
|
+
if (!targetCol.disableReorder) {
|
|
117
|
+
canBeReordered = true;
|
|
118
|
+
} else if (hasMovedLeft) {
|
|
119
|
+
canBeReordered = targetColIndex > 0 && !visibleColumns[targetColIndex - 1].disableReorder;
|
|
120
|
+
} else {
|
|
121
|
+
canBeReordered = targetColIndex < visibleColumns.length - 1 && !visibleColumns[targetColIndex + 1].disableReorder;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var canBeReorderedProcessed = apiRef.current.unstable_applyPreProcessors('canBeReordered', canBeReordered, {
|
|
125
|
+
targetIndex: targetColVisibleIndex
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
if (canBeReorderedProcessed) {
|
|
129
|
+
apiRef.current.setColumnIndex(dragColField, targetColIndex);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
cursorPosition.current = coordinates;
|
|
134
|
+
}
|
|
135
|
+
}, [apiRef, logger]);
|
|
136
|
+
var handleDragEnd = React.useCallback(function (params, event) {
|
|
137
|
+
var dragColField = gridColumnReorderDragColSelector(apiRef);
|
|
138
|
+
|
|
139
|
+
if (props.disableColumnReorder || !dragColField) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
logger.debug('End dragging col');
|
|
144
|
+
event.preventDefault(); // Prevent drag events propagation.
|
|
145
|
+
// For more information check here https://github.com/mui/mui-x/issues/2680.
|
|
146
|
+
|
|
147
|
+
event.stopPropagation();
|
|
148
|
+
clearTimeout(removeDnDStylesTimeout.current);
|
|
149
|
+
dragColNode.current = null; // Check if the column was dropped outside the grid.
|
|
150
|
+
|
|
151
|
+
if (event.dataTransfer.dropEffect === 'none') {
|
|
152
|
+
// Accessing params.field may contain the wrong field as header elements are reused
|
|
153
|
+
apiRef.current.setColumnIndex(dragColField, originColumnIndex.current);
|
|
154
|
+
originColumnIndex.current = null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
apiRef.current.setState(function (state) {
|
|
158
|
+
return _extends({}, state, {
|
|
159
|
+
columnReorder: _extends({}, state.columnReorder, {
|
|
160
|
+
dragCol: ''
|
|
161
|
+
})
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
apiRef.current.forceUpdate();
|
|
165
|
+
}, [props.disableColumnReorder, logger, apiRef]);
|
|
166
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnHeaderDragStart);
|
|
167
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnter, handleDragEnter);
|
|
168
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragOver, handleDragOver);
|
|
169
|
+
useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleDragEnd);
|
|
170
|
+
useGridApiEventHandler(apiRef, GridEvents.cellDragEnter, handleDragEnter);
|
|
171
|
+
useGridApiEventHandler(apiRef, GridEvents.cellDragOver, handleDragOver);
|
|
172
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createSelector } from '@mui/x-data-grid/internals';
|
|
2
|
+
export var gridColumnResizeSelector = function gridColumnResizeSelector(state) {
|
|
3
|
+
return state.columnResize;
|
|
4
|
+
};
|
|
5
|
+
export var gridResizingColumnFieldSelector = createSelector(gridColumnResizeSelector, function (columnResize) {
|
|
6
|
+
return columnResize.resizingColumnField;
|
|
7
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|