@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,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridColumnResize = exports.columnResizeStateInitializer = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _utils = require("@mui/material/utils");
|
|
15
|
+
|
|
16
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
17
|
+
|
|
18
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
19
|
+
|
|
20
|
+
var _domUtils = require("../../../utils/domUtils");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
// TODO: remove support for Safari < 13.
|
|
27
|
+
// https://caniuse.com/#search=touch-action
|
|
28
|
+
//
|
|
29
|
+
// Safari, on iOS, supports touch action since v13.
|
|
30
|
+
// Over 80% of the iOS phones are compatible
|
|
31
|
+
// in August 2020.
|
|
32
|
+
// Utilizing the CSS.supports method to check if touch-action is supported.
|
|
33
|
+
// Since CSS.supports is supported on all but Edge@12 and IE and touch-action
|
|
34
|
+
// is supported on both Edge@12 and IE if CSS.supports is not available that means that
|
|
35
|
+
// touch-action will be supported
|
|
36
|
+
let cachedSupportsTouchActionNone = false;
|
|
37
|
+
|
|
38
|
+
function doesSupportTouchActionNone() {
|
|
39
|
+
if (cachedSupportsTouchActionNone === undefined) {
|
|
40
|
+
if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {
|
|
41
|
+
cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');
|
|
42
|
+
} else {
|
|
43
|
+
cachedSupportsTouchActionNone = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return cachedSupportsTouchActionNone;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function trackFinger(event, currentTouchId) {
|
|
51
|
+
if (currentTouchId !== undefined && event.changedTouches) {
|
|
52
|
+
for (let i = 0; i < event.changedTouches.length; i += 1) {
|
|
53
|
+
const touch = event.changedTouches[i];
|
|
54
|
+
|
|
55
|
+
if (touch.identifier === currentTouchId) {
|
|
56
|
+
return {
|
|
57
|
+
x: touch.clientX,
|
|
58
|
+
y: touch.clientY
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
x: event.clientX,
|
|
68
|
+
y: event.clientY
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function computeNewWidth(initialOffsetToSeparator, clickX, columnBounds, separatorSide) {
|
|
73
|
+
let newWidth = initialOffsetToSeparator;
|
|
74
|
+
|
|
75
|
+
if (separatorSide === _xDataGrid.GridColumnHeaderSeparatorSides.Right) {
|
|
76
|
+
newWidth += clickX - columnBounds.left;
|
|
77
|
+
} else {
|
|
78
|
+
newWidth += columnBounds.right - clickX;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return newWidth;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function computeOffsetToSeparator(clickX, columnBounds, separatorSide) {
|
|
85
|
+
if (separatorSide === _xDataGrid.GridColumnHeaderSeparatorSides.Left) {
|
|
86
|
+
return clickX - columnBounds.left;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return columnBounds.right - clickX;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function getSeparatorSide(element) {
|
|
93
|
+
return element.classList.contains(_xDataGrid.gridClasses['columnSeparator--sideRight']) ? _xDataGrid.GridColumnHeaderSeparatorSides.Right : _xDataGrid.GridColumnHeaderSeparatorSides.Left;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const columnResizeStateInitializer = state => (0, _extends2.default)({}, state, {
|
|
97
|
+
columnResize: {
|
|
98
|
+
resizingColumnField: ''
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* Only available in DataGridPro
|
|
103
|
+
* @requires useGridColumns (method, event)
|
|
104
|
+
* TODO: improve experience for last column
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
exports.columnResizeStateInitializer = columnResizeStateInitializer;
|
|
109
|
+
|
|
110
|
+
const useGridColumnResize = (apiRef, props) => {
|
|
111
|
+
const logger = (0, _xDataGrid.useGridLogger)(apiRef, 'useGridColumnResize');
|
|
112
|
+
const colDefRef = React.useRef();
|
|
113
|
+
const colElementRef = React.useRef();
|
|
114
|
+
const colCellElementsRef = React.useRef(); // To improve accessibility, the separator has padding on both sides.
|
|
115
|
+
// Clicking inside the padding area should be treated as a click in the separator.
|
|
116
|
+
// This ref stores the offset between the click and the separator.
|
|
117
|
+
|
|
118
|
+
const initialOffsetToSeparator = React.useRef();
|
|
119
|
+
const separatorSide = React.useRef();
|
|
120
|
+
const stopResizeEventTimeout = React.useRef();
|
|
121
|
+
const touchId = React.useRef();
|
|
122
|
+
|
|
123
|
+
const updateWidth = newWidth => {
|
|
124
|
+
logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current.field}`);
|
|
125
|
+
colDefRef.current.computedWidth = newWidth;
|
|
126
|
+
colDefRef.current.width = newWidth;
|
|
127
|
+
colDefRef.current.flex = undefined;
|
|
128
|
+
colElementRef.current.style.width = `${newWidth}px`;
|
|
129
|
+
colElementRef.current.style.minWidth = `${newWidth}px`;
|
|
130
|
+
colElementRef.current.style.maxWidth = `${newWidth}px`;
|
|
131
|
+
colCellElementsRef.current.forEach(element => {
|
|
132
|
+
const div = element;
|
|
133
|
+
div.style.width = `${newWidth}px`;
|
|
134
|
+
div.style.minWidth = `${newWidth}px`;
|
|
135
|
+
div.style.maxWidth = `${newWidth}px`;
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const handleResizeMouseUp = (0, _utils.useEventCallback)(nativeEvent => {
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
141
|
+
stopListening();
|
|
142
|
+
apiRef.current.updateColumn(colDefRef.current);
|
|
143
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
144
|
+
stopResizeEventTimeout.current = setTimeout(() => {
|
|
145
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStop, null, nativeEvent);
|
|
146
|
+
|
|
147
|
+
if (colDefRef.current) {
|
|
148
|
+
var _colDefRef$current;
|
|
149
|
+
|
|
150
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnWidthChange, {
|
|
151
|
+
element: colElementRef.current,
|
|
152
|
+
colDef: colDefRef.current,
|
|
153
|
+
width: (_colDefRef$current = colDefRef.current) == null ? void 0 : _colDefRef$current.computedWidth
|
|
154
|
+
}, nativeEvent);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
|
|
158
|
+
});
|
|
159
|
+
const handleResizeMouseMove = (0, _utils.useEventCallback)(nativeEvent => {
|
|
160
|
+
// Cancel move in case some other element consumed a mouseup event and it was not fired.
|
|
161
|
+
if (nativeEvent.buttons === 0) {
|
|
162
|
+
handleResizeMouseUp(nativeEvent);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
167
|
+
newWidth = (0, _internals.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
|
|
168
|
+
updateWidth(newWidth);
|
|
169
|
+
const params = {
|
|
170
|
+
element: colElementRef.current,
|
|
171
|
+
colDef: colDefRef.current,
|
|
172
|
+
width: newWidth
|
|
173
|
+
};
|
|
174
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResize, params, nativeEvent);
|
|
175
|
+
});
|
|
176
|
+
const handleColumnResizeMouseDown = (0, _utils.useEventCallback)(({
|
|
177
|
+
colDef
|
|
178
|
+
}, event) => {
|
|
179
|
+
var _apiRef$current$colum;
|
|
180
|
+
|
|
181
|
+
// Only handle left clicks
|
|
182
|
+
if (event.button !== 0) {
|
|
183
|
+
return;
|
|
184
|
+
} // Skip if the column isn't resizable
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
if (!event.currentTarget.classList.contains(_xDataGrid.gridClasses['columnSeparator--resizable'])) {
|
|
188
|
+
return;
|
|
189
|
+
} // Avoid text selection
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
logger.debug(`Start Resize on col ${colDef.field}`);
|
|
194
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStart, {
|
|
195
|
+
field: colDef.field
|
|
196
|
+
}, event);
|
|
197
|
+
colDefRef.current = colDef;
|
|
198
|
+
colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector(`[data-field="${colDef.field}"]`);
|
|
199
|
+
colCellElementsRef.current = (0, _domUtils.findGridCellElementsFromCol)(colElementRef.current);
|
|
200
|
+
const doc = (0, _utils.ownerDocument)(apiRef.current.rootElementRef.current);
|
|
201
|
+
doc.body.style.cursor = 'col-resize';
|
|
202
|
+
separatorSide.current = getSeparatorSide(event.currentTarget);
|
|
203
|
+
initialOffsetToSeparator.current = computeOffsetToSeparator(event.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
204
|
+
doc.addEventListener('mousemove', handleResizeMouseMove);
|
|
205
|
+
doc.addEventListener('mouseup', handleResizeMouseUp);
|
|
206
|
+
});
|
|
207
|
+
const handleTouchEnd = (0, _utils.useEventCallback)(nativeEvent => {
|
|
208
|
+
const finger = trackFinger(nativeEvent, touchId.current);
|
|
209
|
+
|
|
210
|
+
if (!finger) {
|
|
211
|
+
return;
|
|
212
|
+
} // eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
stopListening();
|
|
216
|
+
apiRef.current.updateColumn(colDefRef.current);
|
|
217
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
218
|
+
stopResizeEventTimeout.current = setTimeout(() => {
|
|
219
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStop, null, nativeEvent);
|
|
220
|
+
});
|
|
221
|
+
logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
|
|
222
|
+
});
|
|
223
|
+
const handleTouchMove = (0, _utils.useEventCallback)(nativeEvent => {
|
|
224
|
+
const finger = trackFinger(nativeEvent, touchId.current);
|
|
225
|
+
|
|
226
|
+
if (!finger) {
|
|
227
|
+
return;
|
|
228
|
+
} // Cancel move in case some other element consumed a touchmove event and it was not fired.
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {
|
|
232
|
+
handleTouchEnd(nativeEvent);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
237
|
+
newWidth = (0, _internals.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
|
|
238
|
+
updateWidth(newWidth);
|
|
239
|
+
const params = {
|
|
240
|
+
element: colElementRef.current,
|
|
241
|
+
colDef: colDefRef.current,
|
|
242
|
+
width: newWidth
|
|
243
|
+
};
|
|
244
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResize, params, nativeEvent);
|
|
245
|
+
});
|
|
246
|
+
const handleTouchStart = (0, _utils.useEventCallback)(event => {
|
|
247
|
+
var _apiRef$current$colum2;
|
|
248
|
+
|
|
249
|
+
const cellSeparator = (0, _internals.findParentElementFromClassName)(event.target, _xDataGrid.gridClasses['columnSeparator--resizable']); // Let the event bubble if the target is not a col separator
|
|
250
|
+
|
|
251
|
+
if (!cellSeparator) {
|
|
252
|
+
return;
|
|
253
|
+
} // If touch-action: none; is not supported we need to prevent the scroll manually.
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
if (!doesSupportTouchActionNone()) {
|
|
257
|
+
event.preventDefault();
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const touch = event.changedTouches[0];
|
|
261
|
+
|
|
262
|
+
if (touch != null) {
|
|
263
|
+
// A number that uniquely identifies the current finger in the touch session.
|
|
264
|
+
touchId.current = touch.identifier;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
colElementRef.current = (0, _internals.findParentElementFromClassName)(event.target, _xDataGrid.gridClasses.columnHeader);
|
|
268
|
+
const field = (0, _domUtils.getFieldFromHeaderElem)(colElementRef.current);
|
|
269
|
+
const colDef = apiRef.current.getColumn(field);
|
|
270
|
+
logger.debug(`Start Resize on col ${colDef.field}`);
|
|
271
|
+
apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStart, {
|
|
272
|
+
field
|
|
273
|
+
}, event);
|
|
274
|
+
colDefRef.current = colDef;
|
|
275
|
+
colElementRef.current = (0, _domUtils.findHeaderElementFromField)((_apiRef$current$colum2 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
|
|
276
|
+
colCellElementsRef.current = (0, _domUtils.findGridCellElementsFromCol)(colElementRef.current);
|
|
277
|
+
separatorSide.current = getSeparatorSide(event.target);
|
|
278
|
+
initialOffsetToSeparator.current = computeOffsetToSeparator(touch.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
|
|
279
|
+
const doc = (0, _utils.ownerDocument)(event.currentTarget);
|
|
280
|
+
doc.addEventListener('touchmove', handleTouchMove);
|
|
281
|
+
doc.addEventListener('touchend', handleTouchEnd);
|
|
282
|
+
});
|
|
283
|
+
const stopListening = React.useCallback(() => {
|
|
284
|
+
const doc = (0, _utils.ownerDocument)(apiRef.current.rootElementRef.current);
|
|
285
|
+
doc.body.style.removeProperty('cursor');
|
|
286
|
+
doc.removeEventListener('mousemove', handleResizeMouseMove);
|
|
287
|
+
doc.removeEventListener('mouseup', handleResizeMouseUp);
|
|
288
|
+
doc.removeEventListener('touchmove', handleTouchMove);
|
|
289
|
+
doc.removeEventListener('touchend', handleTouchEnd);
|
|
290
|
+
}, [apiRef, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
|
|
291
|
+
const handleResizeStart = React.useCallback(({
|
|
292
|
+
field
|
|
293
|
+
}) => {
|
|
294
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
295
|
+
columnResize: (0, _extends2.default)({}, state.columnResize, {
|
|
296
|
+
resizingColumnField: field
|
|
297
|
+
})
|
|
298
|
+
}));
|
|
299
|
+
apiRef.current.forceUpdate();
|
|
300
|
+
}, [apiRef]);
|
|
301
|
+
const handleResizeStop = React.useCallback(() => {
|
|
302
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
303
|
+
columnResize: (0, _extends2.default)({}, state.columnResize, {
|
|
304
|
+
resizingColumnField: ''
|
|
305
|
+
})
|
|
306
|
+
}));
|
|
307
|
+
apiRef.current.forceUpdate();
|
|
308
|
+
}, [apiRef]);
|
|
309
|
+
React.useEffect(() => {
|
|
310
|
+
return () => {
|
|
311
|
+
clearTimeout(stopResizeEventTimeout.current);
|
|
312
|
+
stopListening();
|
|
313
|
+
};
|
|
314
|
+
}, [apiRef, handleTouchStart, stopListening]);
|
|
315
|
+
(0, _xDataGrid.useGridNativeEventListener)(apiRef, () => {
|
|
316
|
+
var _apiRef$current$colum3;
|
|
317
|
+
|
|
318
|
+
return (_apiRef$current$colum3 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum3.current;
|
|
319
|
+
}, 'touchstart', handleTouchStart, {
|
|
320
|
+
passive: doesSupportTouchActionNone()
|
|
321
|
+
});
|
|
322
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnSeparatorMouseDown, handleColumnResizeMouseDown);
|
|
323
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnResizeStart, handleResizeStart);
|
|
324
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnResizeStop, handleResizeStop);
|
|
325
|
+
(0, _xDataGrid.useGridApiOptionHandler)(apiRef, _xDataGrid.GridEvents.columnResize, props.onColumnResize);
|
|
326
|
+
(0, _xDataGrid.useGridApiOptionHandler)(apiRef, _xDataGrid.GridEvents.columnWidthChange, props.onColumnWidthChange);
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
exports.useGridColumnResize = useGridColumnResize;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.gridDetailPanelExpandedRowsHeightCacheSelector = exports.gridDetailPanelExpandedRowsContentCacheSelector = exports.gridDetailPanelExpandedRowIdsSelector = void 0;
|
|
7
|
+
|
|
8
|
+
const gridDetailPanelExpandedRowIdsSelector = state => state.detailPanel.expandedRowIds;
|
|
9
|
+
|
|
10
|
+
exports.gridDetailPanelExpandedRowIdsSelector = gridDetailPanelExpandedRowIdsSelector;
|
|
11
|
+
|
|
12
|
+
const gridDetailPanelExpandedRowsContentCacheSelector = state => state.detailPanel.contentCache;
|
|
13
|
+
|
|
14
|
+
exports.gridDetailPanelExpandedRowsContentCacheSelector = gridDetailPanelExpandedRowsContentCacheSelector;
|
|
15
|
+
|
|
16
|
+
const gridDetailPanelExpandedRowsHeightCacheSelector = state => state.detailPanel.heightCache;
|
|
17
|
+
|
|
18
|
+
exports.gridDetailPanelExpandedRowsHeightCacheSelector = gridDetailPanelExpandedRowsHeightCacheSelector;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.GRID_DETAIL_PANEL_TOGGLE_FIELD = exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
15
|
+
|
|
16
|
+
var _GridDetailPanelToggleCell = require("../../../components/GridDetailPanelToggleCell");
|
|
17
|
+
|
|
18
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
19
|
+
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';
|
|
27
|
+
exports.GRID_DETAIL_PANEL_TOGGLE_FIELD = GRID_DETAIL_PANEL_TOGGLE_FIELD;
|
|
28
|
+
const GRID_DETAIL_PANEL_TOGGLE_COL_DEF = (0, _extends2.default)({}, _xDataGrid.GRID_STRING_COL_DEF, {
|
|
29
|
+
field: GRID_DETAIL_PANEL_TOGGLE_FIELD,
|
|
30
|
+
headerName: '',
|
|
31
|
+
type: 'detailPanelToggle',
|
|
32
|
+
editable: false,
|
|
33
|
+
sortable: false,
|
|
34
|
+
filterable: false,
|
|
35
|
+
resizable: false,
|
|
36
|
+
disableColumnMenu: true,
|
|
37
|
+
disableReorder: true,
|
|
38
|
+
disableExport: true,
|
|
39
|
+
align: 'left',
|
|
40
|
+
width: 40,
|
|
41
|
+
valueGetter: params => {
|
|
42
|
+
const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(params.api.state);
|
|
43
|
+
return expandedRowIds.includes(params.id);
|
|
44
|
+
},
|
|
45
|
+
renderCell: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridDetailPanelToggleCell.GridDetailPanelToggleCell, (0, _extends2.default)({}, params))
|
|
46
|
+
});
|
|
47
|
+
exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = GRID_DETAIL_PANEL_TOGGLE_COL_DEF;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
|
|
8
|
+
|
|
9
|
+
Object.keys(_gridDetailPanelToggleColDef).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _gridDetailPanelToggleColDef[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _gridDetailPanelToggleColDef[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
21
|
+
|
|
22
|
+
Object.keys(_gridDetailPanelSelector).forEach(function (key) {
|
|
23
|
+
if (key === "default" || key === "__esModule") return;
|
|
24
|
+
if (key in exports && exports[key] === _gridDetailPanelSelector[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _gridDetailPanelSelector[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
var _gridDetailPanelInterface = require("./gridDetailPanelInterface");
|
|
34
|
+
|
|
35
|
+
Object.keys(_gridDetailPanelInterface).forEach(function (key) {
|
|
36
|
+
if (key === "default" || key === "__esModule") return;
|
|
37
|
+
if (key in exports && exports[key] === _gridDetailPanelInterface[key]) return;
|
|
38
|
+
Object.defineProperty(exports, key, {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _gridDetailPanelInterface[key];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridDetailPanel = exports.detailPanelStateInitializer = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
15
|
+
|
|
16
|
+
var _internals = require("@mui/x-data-grid/internals");
|
|
17
|
+
|
|
18
|
+
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
|
|
19
|
+
|
|
20
|
+
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
const detailPanelStateInitializer = (state, props) => {
|
|
27
|
+
var _ref, _props$detailPanelExp, _props$initialState, _props$initialState$d;
|
|
28
|
+
|
|
29
|
+
return (0, _extends2.default)({}, state, {
|
|
30
|
+
detailPanel: {
|
|
31
|
+
expandedRowIds: (_ref = (_props$detailPanelExp = props.detailPanelExpandedRowIds) != null ? _props$detailPanelExp : (_props$initialState = props.initialState) == null ? void 0 : (_props$initialState$d = _props$initialState.detailPanel) == null ? void 0 : _props$initialState$d.expandedRowIds) != null ? _ref : []
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.detailPanelStateInitializer = detailPanelStateInitializer;
|
|
37
|
+
|
|
38
|
+
const useGridDetailPanel = (apiRef, props) => {
|
|
39
|
+
const expandedRowIds = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector);
|
|
40
|
+
const contentCache = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelExpandedRowsContentCacheSelector);
|
|
41
|
+
const handleCellClick = React.useCallback((params, event) => {
|
|
42
|
+
if (params.field !== _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD || props.getDetailPanelContent == null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const content = contentCache[params.id];
|
|
47
|
+
|
|
48
|
+
if (! /*#__PURE__*/React.isValidElement(content)) {
|
|
49
|
+
return;
|
|
50
|
+
} // Ignore if the user didn't click specifically in the "i" button
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if (event.target === event.currentTarget) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
apiRef.current.toggleDetailPanel(params.id);
|
|
58
|
+
}, [apiRef, contentCache, props.getDetailPanelContent]);
|
|
59
|
+
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
60
|
+
if (!event.ctrlKey || event.key !== 'Enter' || props.getDetailPanelContent == null) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
apiRef.current.toggleDetailPanel(params.id);
|
|
65
|
+
}, [apiRef, props.getDetailPanelContent]);
|
|
66
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.cellClick, handleCellClick);
|
|
67
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.cellKeyDown, handleCellKeyDown);
|
|
68
|
+
const addDetailHeight = React.useCallback((initialValue, row) => {
|
|
69
|
+
var _heightCache$row$id;
|
|
70
|
+
|
|
71
|
+
if (expandedRowIds.length === 0 || !expandedRowIds.includes(row.id)) {
|
|
72
|
+
return (0, _extends2.default)({}, initialValue, {
|
|
73
|
+
detail: 0
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const heightCache = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowsHeightCacheSelector)(apiRef.current.state);
|
|
78
|
+
return (0, _extends2.default)({}, initialValue, {
|
|
79
|
+
detail: (_heightCache$row$id = heightCache[row.id]) != null ? _heightCache$row$id : 0 // Fallback to zero because the cache might not be ready yet (e.g. page was changed)
|
|
80
|
+
|
|
81
|
+
});
|
|
82
|
+
}, [apiRef, expandedRowIds]);
|
|
83
|
+
(0, _internals.useGridRegisterPreProcessor)(apiRef, 'rowHeight', addDetailHeight);
|
|
84
|
+
apiRef.current.unstable_updateControlState({
|
|
85
|
+
stateId: 'detailPanels',
|
|
86
|
+
propModel: props.detailPanelExpandedRowIds,
|
|
87
|
+
propOnChange: props.onDetailPanelExpandedRowIdsChange,
|
|
88
|
+
stateSelector: _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector,
|
|
89
|
+
changeEvent: _xDataGrid.GridEvents.detailPanelsExpandedRowIdsChange
|
|
90
|
+
});
|
|
91
|
+
const toggleDetailPanel = React.useCallback(id => {
|
|
92
|
+
if (props.getDetailPanelContent == null) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const content = contentCache[id];
|
|
97
|
+
|
|
98
|
+
if (! /*#__PURE__*/React.isValidElement(content)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const ids = apiRef.current.getExpandedDetailPanels();
|
|
103
|
+
apiRef.current.setExpandedDetailPanels(ids.includes(id) ? ids.filter(rowId => rowId !== id) : [...ids, id]);
|
|
104
|
+
}, [apiRef, contentCache, props.getDetailPanelContent]);
|
|
105
|
+
const getExpandedDetailPanels = React.useCallback(() => (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state), [apiRef]);
|
|
106
|
+
const setExpandedDetailPanels = React.useCallback(ids => {
|
|
107
|
+
apiRef.current.setState(state => {
|
|
108
|
+
return (0, _extends2.default)({}, state, {
|
|
109
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, {
|
|
110
|
+
expandedRowIds: ids
|
|
111
|
+
})
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
apiRef.current.forceUpdate();
|
|
115
|
+
}, [apiRef]);
|
|
116
|
+
const detailPanelApi = {
|
|
117
|
+
toggleDetailPanel,
|
|
118
|
+
getExpandedDetailPanels,
|
|
119
|
+
setExpandedDetailPanels
|
|
120
|
+
};
|
|
121
|
+
(0, _xDataGrid.useGridApiMethod)(apiRef, detailPanelApi, 'detailPanelApi');
|
|
122
|
+
React.useEffect(() => {
|
|
123
|
+
if (props.detailPanelExpandedRowIds) {
|
|
124
|
+
const currentModel = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state);
|
|
125
|
+
|
|
126
|
+
if (currentModel !== props.detailPanelExpandedRowIds) {
|
|
127
|
+
apiRef.current.setExpandedDetailPanels(props.detailPanelExpandedRowIds);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}, [apiRef, props.detailPanelExpandedRowIds]);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
exports.useGridDetailPanel = useGridDetailPanel;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useGridDetailPanelCache = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _xDataGrid = require("@mui/x-data-grid");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function cacheContentAndHeight(apiRef, getDetailPanelContent, getDetailPanelHeight) {
|
|
21
|
+
if (typeof getDetailPanelContent !== 'function') {
|
|
22
|
+
return {};
|
|
23
|
+
} // TODO change to lazy approach using a Proxy
|
|
24
|
+
// only call getDetailPanelContent when asked for an id
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
const rowIds = (0, _xDataGrid.gridRowIdsSelector)(apiRef);
|
|
28
|
+
const contentCache = rowIds.reduce((acc, id) => {
|
|
29
|
+
const params = apiRef.current.getRowParams(id);
|
|
30
|
+
acc[id] = getDetailPanelContent(params);
|
|
31
|
+
return acc;
|
|
32
|
+
}, {});
|
|
33
|
+
const heightCache = rowIds.reduce((acc, id) => {
|
|
34
|
+
if (contentCache[id] == null) {
|
|
35
|
+
return acc;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const params = apiRef.current.getRowParams(id);
|
|
39
|
+
acc[id] = getDetailPanelHeight(params);
|
|
40
|
+
return acc;
|
|
41
|
+
}, {});
|
|
42
|
+
return {
|
|
43
|
+
contentCache,
|
|
44
|
+
heightCache
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const useGridDetailPanelCache = (apiRef, props) => {
|
|
49
|
+
const updateCaches = React.useCallback(() => {
|
|
50
|
+
apiRef.current.setState(state => {
|
|
51
|
+
return (0, _extends2.default)({}, state, {
|
|
52
|
+
detailPanel: (0, _extends2.default)({}, state.detailPanel, cacheContentAndHeight(apiRef, props.getDetailPanelContent, props.getDetailPanelHeight))
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
apiRef.current.forceUpdate();
|
|
56
|
+
}, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
|
|
57
|
+
(0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.visibleRowsSet, updateCaches);
|
|
58
|
+
const isFirstRender = React.useRef(true);
|
|
59
|
+
|
|
60
|
+
if (isFirstRender.current) {
|
|
61
|
+
isFirstRender.current = false;
|
|
62
|
+
updateCaches();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
React.useEffect(() => {
|
|
66
|
+
if (isFirstRender.current) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
updateCaches();
|
|
71
|
+
}, [updateCaches]);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
exports.useGridDetailPanelCache = useGridDetailPanelCache;
|