@mui/x-tree-view 7.22.1 → 8.0.0-alpha.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 +143 -92
- package/README.md +2 -2
- package/RichTreeView/RichTreeView.js +20 -1
- package/RichTreeView/RichTreeView.types.d.ts +4 -4
- package/SimpleTreeView/SimpleTreeView.js +21 -3
- package/TreeItem/TreeItem.d.ts +20 -2
- package/TreeItem/TreeItem.js +238 -368
- package/TreeItem/TreeItem.types.d.ts +51 -86
- package/TreeItem/index.d.ts +1 -4
- package/TreeItem/index.js +2 -4
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
- package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
- package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
- package/TreeItemDragAndDropOverlay/index.js +1 -0
- package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
- package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
- package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
- package/TreeItemIcon/index.d.ts +2 -0
- package/TreeItemIcon/index.js +1 -0
- package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
- package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
- package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
- package/TreeItemLabelInput/index.d.ts +2 -0
- package/TreeItemLabelInput/index.js +1 -0
- package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
- package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
- package/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
- package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +1 -1
- package/TreeItemProvider/index.d.ts +2 -0
- package/TreeItemProvider/index.js +1 -0
- package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
- package/hooks/index.d.ts +1 -1
- package/hooks/index.js +1 -1
- package/hooks/useTreeItemUtils/index.d.ts +1 -0
- package/hooks/useTreeItemUtils/index.js +1 -0
- package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +11 -11
- package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
- package/index.d.ts +5 -7
- package/index.js +6 -8
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
- package/internals/components/RichTreeViewItems.d.ts +1 -2
- package/internals/index.d.ts +1 -1
- package/internals/models/helpers.d.ts +0 -2
- package/internals/models/itemPlugin.d.ts +11 -8
- package/internals/models/plugin.d.ts +1 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +3 -5
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +6 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +33 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
- package/models/items.d.ts +4 -0
- package/modern/RichTreeView/RichTreeView.js +20 -1
- package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
- package/modern/TreeItem/TreeItem.js +238 -368
- package/modern/TreeItem/index.js +2 -4
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
- package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/modern/TreeItemIcon/index.js +1 -0
- package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/modern/TreeItemLabelInput/index.js +1 -0
- package/modern/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
- package/modern/TreeItemProvider/index.js +1 -0
- package/modern/hooks/index.js +1 -1
- package/modern/hooks/useTreeItemUtils/index.js +1 -0
- package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
- package/modern/index.js +6 -8
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
- package/modern/useTreeItem/index.js +1 -0
- package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
- package/node/RichTreeView/RichTreeView.js +20 -1
- package/node/SimpleTreeView/SimpleTreeView.js +21 -3
- package/node/TreeItem/TreeItem.js +239 -369
- package/node/TreeItem/index.js +38 -16
- package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
- package/node/TreeItemDragAndDropOverlay/index.js +12 -0
- package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
- package/node/TreeItemIcon/index.js +12 -0
- package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/node/TreeItemLabelInput/index.js +12 -0
- package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +6 -3
- package/node/TreeItemProvider/index.js +12 -0
- package/node/hooks/index.js +3 -3
- package/node/hooks/useTreeItemUtils/index.js +12 -0
- package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +6 -5
- package/node/index.js +18 -42
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +94 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -17
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +99 -2
- package/node/useTreeItem/index.js +12 -0
- package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +22 -44
- package/package.json +3 -3
- package/themeAugmentation/components.d.ts +0 -10
- package/themeAugmentation/overrides.d.ts +0 -3
- package/themeAugmentation/props.d.ts +1 -5
- package/useTreeItem/index.d.ts +2 -0
- package/useTreeItem/index.js +1 -0
- package/{TreeItem2 → useTreeItem}/package.json +1 -1
- package/useTreeItem/useTreeItem.d.ts +2 -0
- package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
- package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +42 -58
- package/TreeItem/TreeItemContent.d.ts +0 -61
- package/TreeItem/TreeItemContent.js +0 -146
- package/TreeItem/useTreeItemState.d.ts +0 -21
- package/TreeItem/useTreeItemState.js +0 -143
- package/TreeItem2/TreeItem2.d.ts +0 -34
- package/TreeItem2/TreeItem2.js +0 -387
- package/TreeItem2/TreeItem2.types.d.ts +0 -92
- package/TreeItem2/index.d.ts +0 -2
- package/TreeItem2/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
- package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
- package/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/package.json +0 -6
- package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
- package/TreeItem2Icon/index.d.ts +0 -2
- package/TreeItem2Icon/index.js +0 -1
- package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
- package/TreeItem2LabelInput/index.d.ts +0 -2
- package/TreeItem2LabelInput/index.js +0 -1
- package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
- package/TreeItem2Provider/index.d.ts +0 -2
- package/TreeItem2Provider/index.js +0 -1
- package/TreeView/TreeView.d.ts +0 -21
- package/TreeView/TreeView.js +0 -211
- package/TreeView/TreeView.types.d.ts +0 -9
- package/TreeView/index.d.ts +0 -3
- package/TreeView/index.js +0 -3
- package/TreeView/package.json +0 -6
- package/TreeView/treeViewClasses.d.ts +0 -7
- package/TreeView/treeViewClasses.js +0 -6
- package/hooks/useTreeItem2Utils/index.d.ts +0 -1
- package/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/TreeItem/TreeItemContent.js +0 -146
- package/modern/TreeItem/useTreeItemState.js +0 -143
- package/modern/TreeItem2/TreeItem2.js +0 -387
- package/modern/TreeItem2/index.js +0 -1
- package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/modern/TreeItem2Icon/index.js +0 -1
- package/modern/TreeItem2LabelInput/index.js +0 -1
- package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
- package/modern/TreeItem2Provider/index.js +0 -1
- package/modern/TreeView/TreeView.js +0 -211
- package/modern/TreeView/TreeView.types.js +0 -1
- package/modern/TreeView/index.js +0 -3
- package/modern/TreeView/treeViewClasses.js +0 -6
- package/modern/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/useTreeItem2/index.js +0 -4
- package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
- package/node/TreeItem/TreeItemContent.js +0 -153
- package/node/TreeItem/useTreeItemState.js +0 -148
- package/node/TreeItem2/TreeItem2.js +0 -394
- package/node/TreeItem2/index.js +0 -48
- package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
- package/node/TreeItem2Icon/index.js +0 -12
- package/node/TreeItem2LabelInput/index.js +0 -12
- package/node/TreeItem2Provider/index.js +0 -12
- package/node/TreeView/TreeView.js +0 -217
- package/node/TreeView/TreeView.types.js +0 -5
- package/node/TreeView/index.js +0 -27
- package/node/TreeView/treeViewClasses.js +0 -14
- package/node/hooks/useTreeItem2Utils/index.js +0 -12
- package/node/useTreeItem2/index.js +0 -10
- package/node/useTreeItem2/useTreeItem2.types.js +0 -5
- package/useTreeItem2/index.d.ts +0 -3
- package/useTreeItem2/index.js +0 -4
- package/useTreeItem2/useTreeItem2.d.ts +0 -2
- package/useTreeItem2/useTreeItem2.types.js +0 -1
- /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/{modern/TreeItem2LabelInput/TreeItem2LabelInput.types.js → useTreeItem/useTreeItem.types.js} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getLookupFromArray = exports.convertSelectedItemsToArray = void 0;
|
|
6
|
+
exports.propagateSelection = exports.getLookupFromArray = exports.getAddedAndRemovedItems = exports.convertSelectedItemsToArray = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Transform the `selectedItems` model to be an array if it was a string or null.
|
|
9
9
|
* @param {string[] | string | null} model The raw model.
|
|
@@ -26,4 +26,101 @@ const getLookupFromArray = array => {
|
|
|
26
26
|
});
|
|
27
27
|
return lookup;
|
|
28
28
|
};
|
|
29
|
-
exports.getLookupFromArray = getLookupFromArray;
|
|
29
|
+
exports.getLookupFromArray = getLookupFromArray;
|
|
30
|
+
const getAddedAndRemovedItems = ({
|
|
31
|
+
instance,
|
|
32
|
+
oldModel,
|
|
33
|
+
newModel
|
|
34
|
+
}) => {
|
|
35
|
+
const newModelLookup = getLookupFromArray(newModel);
|
|
36
|
+
return {
|
|
37
|
+
added: newModel.filter(itemId => !instance.isItemSelected(itemId)),
|
|
38
|
+
removed: oldModel.filter(itemId => !newModelLookup[itemId])
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.getAddedAndRemovedItems = getAddedAndRemovedItems;
|
|
42
|
+
const propagateSelection = ({
|
|
43
|
+
instance,
|
|
44
|
+
selectionPropagation,
|
|
45
|
+
newModel,
|
|
46
|
+
oldModel,
|
|
47
|
+
additionalItemsToPropagate
|
|
48
|
+
}) => {
|
|
49
|
+
if (!selectionPropagation.descendants && !selectionPropagation.parents) {
|
|
50
|
+
return newModel;
|
|
51
|
+
}
|
|
52
|
+
let shouldRegenerateModel = false;
|
|
53
|
+
const newModelLookup = getLookupFromArray(newModel);
|
|
54
|
+
const changes = getAddedAndRemovedItems({
|
|
55
|
+
instance,
|
|
56
|
+
newModel,
|
|
57
|
+
oldModel
|
|
58
|
+
});
|
|
59
|
+
additionalItemsToPropagate?.forEach(itemId => {
|
|
60
|
+
if (newModelLookup[itemId]) {
|
|
61
|
+
if (!changes.added.includes(itemId)) {
|
|
62
|
+
changes.added.push(itemId);
|
|
63
|
+
}
|
|
64
|
+
} else if (!changes.removed.includes(itemId)) {
|
|
65
|
+
changes.removed.push(itemId);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
changes.added.forEach(addedItemId => {
|
|
69
|
+
if (selectionPropagation.descendants) {
|
|
70
|
+
const selectDescendants = itemId => {
|
|
71
|
+
if (itemId !== addedItemId) {
|
|
72
|
+
shouldRegenerateModel = true;
|
|
73
|
+
newModelLookup[itemId] = true;
|
|
74
|
+
}
|
|
75
|
+
instance.getItemOrderedChildrenIds(itemId).forEach(selectDescendants);
|
|
76
|
+
};
|
|
77
|
+
selectDescendants(addedItemId);
|
|
78
|
+
}
|
|
79
|
+
if (selectionPropagation.parents) {
|
|
80
|
+
const checkAllDescendantsSelected = itemId => {
|
|
81
|
+
if (!newModelLookup[itemId]) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
const children = instance.getItemOrderedChildrenIds(itemId);
|
|
85
|
+
return children.every(checkAllDescendantsSelected);
|
|
86
|
+
};
|
|
87
|
+
const selectParents = itemId => {
|
|
88
|
+
const parentId = instance.getItemMeta(itemId).parentId;
|
|
89
|
+
if (parentId == null) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const siblings = instance.getItemOrderedChildrenIds(parentId);
|
|
93
|
+
if (siblings.every(checkAllDescendantsSelected)) {
|
|
94
|
+
shouldRegenerateModel = true;
|
|
95
|
+
newModelLookup[parentId] = true;
|
|
96
|
+
selectParents(parentId);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
selectParents(addedItemId);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
changes.removed.forEach(removedItemId => {
|
|
103
|
+
if (selectionPropagation.parents) {
|
|
104
|
+
let parentId = instance.getItemMeta(removedItemId).parentId;
|
|
105
|
+
while (parentId != null) {
|
|
106
|
+
if (newModelLookup[parentId]) {
|
|
107
|
+
shouldRegenerateModel = true;
|
|
108
|
+
delete newModelLookup[parentId];
|
|
109
|
+
}
|
|
110
|
+
parentId = instance.getItemMeta(parentId).parentId;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (selectionPropagation.descendants) {
|
|
114
|
+
const deSelectDescendants = itemId => {
|
|
115
|
+
if (itemId !== removedItemId) {
|
|
116
|
+
shouldRegenerateModel = true;
|
|
117
|
+
delete newModelLookup[itemId];
|
|
118
|
+
}
|
|
119
|
+
instance.getItemOrderedChildrenIds(itemId).forEach(deSelectDescendants);
|
|
120
|
+
};
|
|
121
|
+
deSelectDescendants(removedItemId);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return shouldRegenerateModel ? Object.keys(newModelLookup) : newModel;
|
|
125
|
+
};
|
|
126
|
+
exports.propagateSelection = propagateSelection;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useTreeItem", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTreeItem.useTreeItem;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useTreeItem = require("./useTreeItem");
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", {
|
|
6
7
|
value: true
|
|
7
8
|
});
|
|
8
|
-
exports.
|
|
9
|
+
exports.useTreeItem = void 0;
|
|
9
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
11
|
var React = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _extractEventHandlers = _interopRequireDefault(require("@mui/utils/extractEventHandlers"));
|
|
12
13
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
13
14
|
var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
14
|
-
var
|
|
15
|
+
var _useTreeItemUtils = require("../hooks/useTreeItemUtils");
|
|
15
16
|
var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
|
|
16
17
|
var _tree = require("../internals/utils/tree");
|
|
17
18
|
var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
|
|
18
|
-
const
|
|
19
|
+
const useTreeItem = parameters => {
|
|
19
20
|
const {
|
|
20
21
|
runItemPlugins,
|
|
21
22
|
items: {
|
|
22
23
|
onItemClick,
|
|
23
|
-
disabledItemsFocusable
|
|
24
|
-
indentationAtItemLevel
|
|
24
|
+
disabledItemsFocusable
|
|
25
25
|
},
|
|
26
26
|
selection: {
|
|
27
27
|
disableSelection,
|
|
@@ -50,7 +50,7 @@ const useTreeItem2 = parameters => {
|
|
|
50
50
|
const {
|
|
51
51
|
interactions,
|
|
52
52
|
status
|
|
53
|
-
} = (0,
|
|
53
|
+
} = (0, _useTreeItemUtils.useTreeItemUtils)({
|
|
54
54
|
itemId,
|
|
55
55
|
children
|
|
56
56
|
});
|
|
@@ -68,7 +68,8 @@ const useTreeItem2 = parameters => {
|
|
|
68
68
|
const sharedPropsEnhancerParams = {
|
|
69
69
|
rootRefObject,
|
|
70
70
|
contentRefObject,
|
|
71
|
-
interactions
|
|
71
|
+
interactions,
|
|
72
|
+
status
|
|
72
73
|
};
|
|
73
74
|
const createRootHandleFocus = otherHandlers => event => {
|
|
74
75
|
otherHandlers.onFocus?.(event);
|
|
@@ -136,16 +137,6 @@ const useTreeItem2 = parameters => {
|
|
|
136
137
|
event.preventDefault();
|
|
137
138
|
}
|
|
138
139
|
};
|
|
139
|
-
const createCheckboxHandleChange = otherHandlers => event => {
|
|
140
|
-
otherHandlers.onChange?.(event);
|
|
141
|
-
if (event.defaultMuiPrevented) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (disableSelection || status.disabled) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
interactions.handleCheckboxSelection(event);
|
|
148
|
-
};
|
|
149
140
|
const createIconContainerHandleClick = otherHandlers => event => {
|
|
150
141
|
otherHandlers.onClick?.(event);
|
|
151
142
|
if (event.defaultMuiPrevented) {
|
|
@@ -179,15 +170,13 @@ const useTreeItem2 = parameters => {
|
|
|
179
170
|
'aria-selected': ariaSelected,
|
|
180
171
|
'aria-disabled': status.disabled || undefined
|
|
181
172
|
}, externalProps, {
|
|
173
|
+
style: (0, _extends2.default)({}, externalProps.style ?? {}, {
|
|
174
|
+
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
175
|
+
}),
|
|
182
176
|
onFocus: createRootHandleFocus(externalEventHandlers),
|
|
183
177
|
onBlur: createRootHandleBlur(externalEventHandlers),
|
|
184
178
|
onKeyDown: createRootHandleKeyDown(externalEventHandlers)
|
|
185
179
|
});
|
|
186
|
-
if (indentationAtItemLevel) {
|
|
187
|
-
props.style = {
|
|
188
|
-
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
180
|
const enhancedRootProps = propsEnhancers.root?.((0, _extends2.default)({}, sharedPropsEnhancerParams, {
|
|
192
181
|
externalEventHandlers
|
|
193
182
|
})) ?? {};
|
|
@@ -201,9 +190,6 @@ const useTreeItem2 = parameters => {
|
|
|
201
190
|
onMouseDown: createContentHandleMouseDown(externalEventHandlers),
|
|
202
191
|
status
|
|
203
192
|
});
|
|
204
|
-
if (indentationAtItemLevel) {
|
|
205
|
-
props.indentationAtItemLevel = true;
|
|
206
|
-
}
|
|
207
193
|
const enhancedContentProps = propsEnhancers.content?.((0, _extends2.default)({}, sharedPropsEnhancerParams, {
|
|
208
194
|
externalEventHandlers
|
|
209
195
|
})) ?? {};
|
|
@@ -211,15 +197,13 @@ const useTreeItem2 = parameters => {
|
|
|
211
197
|
};
|
|
212
198
|
const getCheckboxProps = (externalProps = {}) => {
|
|
213
199
|
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
},
|
|
221
|
-
onChange: createCheckboxHandleChange(externalEventHandlers)
|
|
222
|
-
});
|
|
200
|
+
const props = (0, _extends2.default)({}, externalEventHandlers, {
|
|
201
|
+
ref: checkboxRef
|
|
202
|
+
}, externalProps);
|
|
203
|
+
const enhancedCheckboxProps = propsEnhancers.checkbox?.((0, _extends2.default)({}, sharedPropsEnhancerParams, {
|
|
204
|
+
externalEventHandlers
|
|
205
|
+
})) ?? {};
|
|
206
|
+
return (0, _extends2.default)({}, props, enhancedCheckboxProps);
|
|
223
207
|
};
|
|
224
208
|
const getLabelProps = (externalProps = {}) => {
|
|
225
209
|
const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(externalProps));
|
|
@@ -235,12 +219,9 @@ const useTreeItem2 = parameters => {
|
|
|
235
219
|
};
|
|
236
220
|
const getLabelInputProps = (externalProps = {}) => {
|
|
237
221
|
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
238
|
-
const enhancedLabelInputProps = propsEnhancers.labelInput?.({
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
externalEventHandlers,
|
|
242
|
-
interactions
|
|
243
|
-
}) ?? {};
|
|
222
|
+
const enhancedLabelInputProps = propsEnhancers.labelInput?.((0, _extends2.default)({}, sharedPropsEnhancerParams, {
|
|
223
|
+
externalEventHandlers
|
|
224
|
+
})) ?? {};
|
|
244
225
|
return (0, _extends2.default)({}, externalProps, enhancedLabelInputProps);
|
|
245
226
|
};
|
|
246
227
|
const getIconContainerProps = (externalProps = {}) => {
|
|
@@ -258,9 +239,6 @@ const useTreeItem2 = parameters => {
|
|
|
258
239
|
in: status.expanded,
|
|
259
240
|
children
|
|
260
241
|
}, externalProps);
|
|
261
|
-
if (indentationAtItemLevel) {
|
|
262
|
-
response.indentationAtItemLevel = true;
|
|
263
|
-
}
|
|
264
242
|
return response;
|
|
265
243
|
};
|
|
266
244
|
const getDragAndDropOverlayProps = (externalProps = {}) => {
|
|
@@ -284,4 +262,4 @@ const useTreeItem2 = parameters => {
|
|
|
284
262
|
publicAPI
|
|
285
263
|
};
|
|
286
264
|
};
|
|
287
|
-
exports.
|
|
265
|
+
exports.useTreeItem = useTreeItem;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0-alpha.0",
|
|
4
4
|
"description": "The community edition of the Tree View components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"directory": "packages/x-tree-view"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.
|
|
36
|
+
"@babel/runtime": "^7.26.0",
|
|
37
37
|
"@mui/utils": "^5.16.6 || ^6.0.0",
|
|
38
38
|
"@types/react-transition-group": "^4.4.11",
|
|
39
39
|
"clsx": "^2.1.1",
|
|
40
40
|
"prop-types": "^15.8.1",
|
|
41
41
|
"react-transition-group": "^4.4.5",
|
|
42
|
-
"@mui/x-internals": "
|
|
42
|
+
"@mui/x-internals": "8.0.0-alpha.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|
|
@@ -11,21 +11,11 @@ export interface TreeViewComponents<Theme = unknown> {
|
|
|
11
11
|
styleOverrides?: ComponentsOverrides<Theme>['MuiRichTreeView'];
|
|
12
12
|
variants?: ComponentsVariants<Theme>['MuiRichTreeView'];
|
|
13
13
|
};
|
|
14
|
-
MuiTreeView?: {
|
|
15
|
-
defaultProps?: ComponentsProps['MuiTreeView'];
|
|
16
|
-
styleOverrides?: ComponentsOverrides<Theme>['MuiTreeView'];
|
|
17
|
-
variants?: ComponentsVariants<Theme>['MuiTreeView'];
|
|
18
|
-
};
|
|
19
14
|
MuiTreeItem?: {
|
|
20
15
|
defaultProps?: ComponentsProps['MuiTreeItem'];
|
|
21
16
|
styleOverrides?: ComponentsOverrides<Theme>['MuiTreeItem'];
|
|
22
17
|
variants?: ComponentsVariants<Theme>['MuiTreeItem'];
|
|
23
18
|
};
|
|
24
|
-
MuiTreeItem2?: {
|
|
25
|
-
defaultProps?: ComponentsProps['MuiTreeItem2'];
|
|
26
|
-
styleOverrides?: ComponentsOverrides<Theme>['MuiTreeItem2'];
|
|
27
|
-
variants?: ComponentsVariants<Theme>['MuiTreeItem2'];
|
|
28
|
-
};
|
|
29
19
|
}
|
|
30
20
|
|
|
31
21
|
declare module '@mui/material/styles' {
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { RichTreeViewClassKey } from '../RichTreeView';
|
|
2
2
|
import { SimpleTreeViewClassKey } from '../SimpleTreeView';
|
|
3
|
-
import { TreeViewClassKey } from '../TreeView';
|
|
4
3
|
import { TreeItemClassKey } from '../TreeItem';
|
|
5
4
|
|
|
6
5
|
// prettier-ignore
|
|
7
6
|
export interface TreeViewComponentNameToClassKey {
|
|
8
7
|
MuiSimpleTreeView: SimpleTreeViewClassKey;
|
|
9
8
|
MuiRichTreeView: RichTreeViewClassKey;
|
|
10
|
-
MuiTreeView: TreeViewClassKey;
|
|
11
9
|
MuiTreeItem: TreeItemClassKey;
|
|
12
|
-
MuiTreeItem2: TreeItemClassKey;
|
|
13
10
|
}
|
|
14
11
|
|
|
15
12
|
declare module '@mui/material/styles' {
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import { TreeItemProps } from '../TreeItem';
|
|
2
|
-
import { TreeViewProps } from '../TreeView';
|
|
3
1
|
import { SimpleTreeViewProps } from '../SimpleTreeView';
|
|
4
2
|
import { RichTreeViewProps } from '../RichTreeView';
|
|
5
|
-
import {
|
|
3
|
+
import { TreeItemProps } from '../TreeItem';
|
|
6
4
|
|
|
7
5
|
export interface TreeViewComponentsPropsList {
|
|
8
6
|
MuiSimpleTreeView: SimpleTreeViewProps<any>;
|
|
9
7
|
MuiRichTreeView: RichTreeViewProps<any, any>;
|
|
10
|
-
MuiTreeView: TreeViewProps<any>;
|
|
11
8
|
MuiTreeItem: TreeItemProps;
|
|
12
|
-
MuiTreeItem2: TreeItem2Props;
|
|
13
9
|
}
|
|
14
10
|
|
|
15
11
|
declare module '@mui/material/styles' {
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { useTreeItem } from './useTreeItem';
|
|
2
|
+
export type { UseTreeItemParameters, UseTreeItemReturnValue, UseTreeItemStatus, UseTreeItemRootSlotOwnProps, UseTreeItemContentSlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemLabelSlotOwnProps, UseTreeItemCheckboxSlotOwnProps, UseTreeItemIconContainerSlotOwnProps, UseTreeItemGroupTransitionSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, } from './useTreeItem.types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTreeItem } from "./useTreeItem.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { UseTreeItemParameters, UseTreeItemReturnValue, UseTreeItemMinimalPlugins, UseTreeItemOptionalPlugins } from './useTreeItem.types';
|
|
2
|
+
export declare const useTreeItem: <TSignatures extends UseTreeItemMinimalPlugins = UseTreeItemMinimalPlugins, TOptionalSignatures extends UseTreeItemOptionalPlugins = readonly []>(parameters: UseTreeItemParameters) => UseTreeItemReturnValue<TSignatures, TOptionalSignatures>;
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import extractEventHandlers from '@mui/utils/extractEventHandlers';
|
|
4
6
|
import useForkRef from '@mui/utils/useForkRef';
|
|
5
7
|
import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
|
|
6
|
-
import {
|
|
8
|
+
import { useTreeItemUtils } from "../hooks/useTreeItemUtils/index.js";
|
|
7
9
|
import { TreeViewItemDepthContext } from "../internals/TreeViewItemDepthContext/index.js";
|
|
8
10
|
import { isTargetInDescendants } from "../internals/utils/tree.js";
|
|
9
11
|
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
10
|
-
export const
|
|
12
|
+
export const useTreeItem = parameters => {
|
|
11
13
|
const {
|
|
12
14
|
runItemPlugins,
|
|
13
15
|
items: {
|
|
14
16
|
onItemClick,
|
|
15
|
-
disabledItemsFocusable
|
|
16
|
-
indentationAtItemLevel
|
|
17
|
+
disabledItemsFocusable
|
|
17
18
|
},
|
|
18
19
|
selection: {
|
|
19
20
|
disableSelection,
|
|
@@ -42,7 +43,7 @@ export const useTreeItem2 = parameters => {
|
|
|
42
43
|
const {
|
|
43
44
|
interactions,
|
|
44
45
|
status
|
|
45
|
-
} =
|
|
46
|
+
} = useTreeItemUtils({
|
|
46
47
|
itemId,
|
|
47
48
|
children
|
|
48
49
|
});
|
|
@@ -60,7 +61,8 @@ export const useTreeItem2 = parameters => {
|
|
|
60
61
|
const sharedPropsEnhancerParams = {
|
|
61
62
|
rootRefObject,
|
|
62
63
|
contentRefObject,
|
|
63
|
-
interactions
|
|
64
|
+
interactions,
|
|
65
|
+
status
|
|
64
66
|
};
|
|
65
67
|
const createRootHandleFocus = otherHandlers => event => {
|
|
66
68
|
otherHandlers.onFocus?.(event);
|
|
@@ -128,16 +130,6 @@ export const useTreeItem2 = parameters => {
|
|
|
128
130
|
event.preventDefault();
|
|
129
131
|
}
|
|
130
132
|
};
|
|
131
|
-
const createCheckboxHandleChange = otherHandlers => event => {
|
|
132
|
-
otherHandlers.onChange?.(event);
|
|
133
|
-
if (event.defaultMuiPrevented) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
if (disableSelection || status.disabled) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
interactions.handleCheckboxSelection(event);
|
|
140
|
-
};
|
|
141
133
|
const createIconContainerHandleClick = otherHandlers => event => {
|
|
142
134
|
otherHandlers.onClick?.(event);
|
|
143
135
|
if (event.defaultMuiPrevented) {
|
|
@@ -171,15 +163,13 @@ export const useTreeItem2 = parameters => {
|
|
|
171
163
|
'aria-selected': ariaSelected,
|
|
172
164
|
'aria-disabled': status.disabled || undefined
|
|
173
165
|
}, externalProps, {
|
|
166
|
+
style: _extends({}, externalProps.style ?? {}, {
|
|
167
|
+
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
168
|
+
}),
|
|
174
169
|
onFocus: createRootHandleFocus(externalEventHandlers),
|
|
175
170
|
onBlur: createRootHandleBlur(externalEventHandlers),
|
|
176
171
|
onKeyDown: createRootHandleKeyDown(externalEventHandlers)
|
|
177
172
|
});
|
|
178
|
-
if (indentationAtItemLevel) {
|
|
179
|
-
props.style = {
|
|
180
|
-
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
173
|
const enhancedRootProps = propsEnhancers.root?.(_extends({}, sharedPropsEnhancerParams, {
|
|
184
174
|
externalEventHandlers
|
|
185
175
|
})) ?? {};
|
|
@@ -193,9 +183,6 @@ export const useTreeItem2 = parameters => {
|
|
|
193
183
|
onMouseDown: createContentHandleMouseDown(externalEventHandlers),
|
|
194
184
|
status
|
|
195
185
|
});
|
|
196
|
-
if (indentationAtItemLevel) {
|
|
197
|
-
props.indentationAtItemLevel = true;
|
|
198
|
-
}
|
|
199
186
|
const enhancedContentProps = propsEnhancers.content?.(_extends({}, sharedPropsEnhancerParams, {
|
|
200
187
|
externalEventHandlers
|
|
201
188
|
})) ?? {};
|
|
@@ -203,15 +190,13 @@ export const useTreeItem2 = parameters => {
|
|
|
203
190
|
};
|
|
204
191
|
const getCheckboxProps = (externalProps = {}) => {
|
|
205
192
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
},
|
|
213
|
-
onChange: createCheckboxHandleChange(externalEventHandlers)
|
|
214
|
-
});
|
|
193
|
+
const props = _extends({}, externalEventHandlers, {
|
|
194
|
+
ref: checkboxRef
|
|
195
|
+
}, externalProps);
|
|
196
|
+
const enhancedCheckboxProps = propsEnhancers.checkbox?.(_extends({}, sharedPropsEnhancerParams, {
|
|
197
|
+
externalEventHandlers
|
|
198
|
+
})) ?? {};
|
|
199
|
+
return _extends({}, props, enhancedCheckboxProps);
|
|
215
200
|
};
|
|
216
201
|
const getLabelProps = (externalProps = {}) => {
|
|
217
202
|
const externalEventHandlers = _extends({}, extractEventHandlers(externalProps));
|
|
@@ -227,12 +212,9 @@ export const useTreeItem2 = parameters => {
|
|
|
227
212
|
};
|
|
228
213
|
const getLabelInputProps = (externalProps = {}) => {
|
|
229
214
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
230
|
-
const enhancedLabelInputProps = propsEnhancers.labelInput?.({
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
externalEventHandlers,
|
|
234
|
-
interactions
|
|
235
|
-
}) ?? {};
|
|
215
|
+
const enhancedLabelInputProps = propsEnhancers.labelInput?.(_extends({}, sharedPropsEnhancerParams, {
|
|
216
|
+
externalEventHandlers
|
|
217
|
+
})) ?? {};
|
|
236
218
|
return _extends({}, externalProps, enhancedLabelInputProps);
|
|
237
219
|
};
|
|
238
220
|
const getIconContainerProps = (externalProps = {}) => {
|
|
@@ -250,9 +232,6 @@ export const useTreeItem2 = parameters => {
|
|
|
250
232
|
in: status.expanded,
|
|
251
233
|
children
|
|
252
234
|
}, externalProps);
|
|
253
|
-
if (indentationAtItemLevel) {
|
|
254
|
-
response.indentationAtItemLevel = true;
|
|
255
|
-
}
|
|
256
235
|
return response;
|
|
257
236
|
};
|
|
258
237
|
const getDragAndDropOverlayProps = (externalProps = {}) => {
|