@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.
Files changed (196) hide show
  1. package/CHANGELOG.md +143 -92
  2. package/README.md +2 -2
  3. package/RichTreeView/RichTreeView.js +20 -1
  4. package/RichTreeView/RichTreeView.types.d.ts +4 -4
  5. package/SimpleTreeView/SimpleTreeView.js +21 -3
  6. package/TreeItem/TreeItem.d.ts +20 -2
  7. package/TreeItem/TreeItem.js +238 -368
  8. package/TreeItem/TreeItem.types.d.ts +51 -86
  9. package/TreeItem/index.d.ts +1 -4
  10. package/TreeItem/index.js +2 -4
  11. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
  12. package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  13. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
  14. package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
  15. package/TreeItemDragAndDropOverlay/index.js +1 -0
  16. package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
  17. package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
  18. package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  19. package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
  20. package/TreeItemIcon/index.d.ts +2 -0
  21. package/TreeItemIcon/index.js +1 -0
  22. package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
  23. package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
  24. package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  25. package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
  26. package/TreeItemLabelInput/index.d.ts +2 -0
  27. package/TreeItemLabelInput/index.js +1 -0
  28. package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
  29. package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
  30. package/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
  31. package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +1 -1
  32. package/TreeItemProvider/index.d.ts +2 -0
  33. package/TreeItemProvider/index.js +1 -0
  34. package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
  35. package/hooks/index.d.ts +1 -1
  36. package/hooks/index.js +1 -1
  37. package/hooks/useTreeItemUtils/index.d.ts +1 -0
  38. package/hooks/useTreeItemUtils/index.js +1 -0
  39. package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +11 -11
  40. package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
  41. package/index.d.ts +5 -7
  42. package/index.js +6 -8
  43. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
  44. package/internals/components/RichTreeViewItems.d.ts +1 -2
  45. package/internals/index.d.ts +1 -1
  46. package/internals/models/helpers.d.ts +0 -2
  47. package/internals/models/itemPlugin.d.ts +11 -8
  48. package/internals/models/plugin.d.ts +1 -1
  49. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -1
  50. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  51. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +3 -5
  52. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
  53. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +6 -5
  54. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
  55. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
  56. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
  57. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +33 -3
  58. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
  59. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
  60. package/models/items.d.ts +4 -0
  61. package/modern/RichTreeView/RichTreeView.js +20 -1
  62. package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
  63. package/modern/TreeItem/TreeItem.js +238 -368
  64. package/modern/TreeItem/index.js +2 -4
  65. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  66. package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
  67. package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  68. package/modern/TreeItemIcon/index.js +1 -0
  69. package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  70. package/modern/TreeItemLabelInput/index.js +1 -0
  71. package/modern/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
  72. package/modern/TreeItemProvider/index.js +1 -0
  73. package/modern/hooks/index.js +1 -1
  74. package/modern/hooks/useTreeItemUtils/index.js +1 -0
  75. package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
  76. package/modern/index.js +6 -8
  77. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  78. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
  79. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
  80. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
  81. package/modern/useTreeItem/index.js +1 -0
  82. package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
  83. package/node/RichTreeView/RichTreeView.js +20 -1
  84. package/node/SimpleTreeView/SimpleTreeView.js +21 -3
  85. package/node/TreeItem/TreeItem.js +239 -369
  86. package/node/TreeItem/index.js +38 -16
  87. package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
  88. package/node/TreeItemDragAndDropOverlay/index.js +12 -0
  89. package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
  90. package/node/TreeItemIcon/index.js +12 -0
  91. package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  92. package/node/TreeItemLabelInput/index.js +12 -0
  93. package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +6 -3
  94. package/node/TreeItemProvider/index.js +12 -0
  95. package/node/hooks/index.js +3 -3
  96. package/node/hooks/useTreeItemUtils/index.js +12 -0
  97. package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +6 -5
  98. package/node/index.js +18 -42
  99. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  100. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +94 -0
  101. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -17
  102. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +99 -2
  103. package/node/useTreeItem/index.js +12 -0
  104. package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +22 -44
  105. package/package.json +3 -3
  106. package/themeAugmentation/components.d.ts +0 -10
  107. package/themeAugmentation/overrides.d.ts +0 -3
  108. package/themeAugmentation/props.d.ts +1 -5
  109. package/useTreeItem/index.d.ts +2 -0
  110. package/useTreeItem/index.js +1 -0
  111. package/{TreeItem2 → useTreeItem}/package.json +1 -1
  112. package/useTreeItem/useTreeItem.d.ts +2 -0
  113. package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
  114. package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +42 -58
  115. package/TreeItem/TreeItemContent.d.ts +0 -61
  116. package/TreeItem/TreeItemContent.js +0 -146
  117. package/TreeItem/useTreeItemState.d.ts +0 -21
  118. package/TreeItem/useTreeItemState.js +0 -143
  119. package/TreeItem2/TreeItem2.d.ts +0 -34
  120. package/TreeItem2/TreeItem2.js +0 -387
  121. package/TreeItem2/TreeItem2.types.d.ts +0 -92
  122. package/TreeItem2/index.d.ts +0 -2
  123. package/TreeItem2/index.js +0 -1
  124. package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
  125. package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
  126. package/TreeItem2DragAndDropOverlay/index.js +0 -1
  127. package/TreeItem2DragAndDropOverlay/package.json +0 -6
  128. package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
  129. package/TreeItem2Icon/index.d.ts +0 -2
  130. package/TreeItem2Icon/index.js +0 -1
  131. package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
  132. package/TreeItem2LabelInput/index.d.ts +0 -2
  133. package/TreeItem2LabelInput/index.js +0 -1
  134. package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
  135. package/TreeItem2Provider/index.d.ts +0 -2
  136. package/TreeItem2Provider/index.js +0 -1
  137. package/TreeView/TreeView.d.ts +0 -21
  138. package/TreeView/TreeView.js +0 -211
  139. package/TreeView/TreeView.types.d.ts +0 -9
  140. package/TreeView/index.d.ts +0 -3
  141. package/TreeView/index.js +0 -3
  142. package/TreeView/package.json +0 -6
  143. package/TreeView/treeViewClasses.d.ts +0 -7
  144. package/TreeView/treeViewClasses.js +0 -6
  145. package/hooks/useTreeItem2Utils/index.d.ts +0 -1
  146. package/hooks/useTreeItem2Utils/index.js +0 -1
  147. package/modern/TreeItem/TreeItemContent.js +0 -146
  148. package/modern/TreeItem/useTreeItemState.js +0 -143
  149. package/modern/TreeItem2/TreeItem2.js +0 -387
  150. package/modern/TreeItem2/index.js +0 -1
  151. package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
  152. package/modern/TreeItem2Icon/index.js +0 -1
  153. package/modern/TreeItem2LabelInput/index.js +0 -1
  154. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
  155. package/modern/TreeItem2Provider/index.js +0 -1
  156. package/modern/TreeView/TreeView.js +0 -211
  157. package/modern/TreeView/TreeView.types.js +0 -1
  158. package/modern/TreeView/index.js +0 -3
  159. package/modern/TreeView/treeViewClasses.js +0 -6
  160. package/modern/hooks/useTreeItem2Utils/index.js +0 -1
  161. package/modern/useTreeItem2/index.js +0 -4
  162. package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
  163. package/node/TreeItem/TreeItemContent.js +0 -153
  164. package/node/TreeItem/useTreeItemState.js +0 -148
  165. package/node/TreeItem2/TreeItem2.js +0 -394
  166. package/node/TreeItem2/index.js +0 -48
  167. package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
  168. package/node/TreeItem2Icon/index.js +0 -12
  169. package/node/TreeItem2LabelInput/index.js +0 -12
  170. package/node/TreeItem2Provider/index.js +0 -12
  171. package/node/TreeView/TreeView.js +0 -217
  172. package/node/TreeView/TreeView.types.js +0 -5
  173. package/node/TreeView/index.js +0 -27
  174. package/node/TreeView/treeViewClasses.js +0 -14
  175. package/node/hooks/useTreeItem2Utils/index.js +0 -12
  176. package/node/useTreeItem2/index.js +0 -10
  177. package/node/useTreeItem2/useTreeItem2.types.js +0 -5
  178. package/useTreeItem2/index.d.ts +0 -3
  179. package/useTreeItem2/index.js +0 -4
  180. package/useTreeItem2/useTreeItem2.d.ts +0 -2
  181. package/useTreeItem2/useTreeItem2.types.js +0 -1
  182. /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  183. /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  184. /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  185. /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  186. /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  187. /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
  188. /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  189. /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  190. /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  191. /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  192. /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  193. /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  194. /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  195. /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  196. /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.useTreeItem2 = void 0;
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 _useTreeItem2Utils = require("../hooks/useTreeItem2Utils");
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 useTreeItem2 = parameters => {
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, _useTreeItem2Utils.useTreeItem2Utils)({
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
- return (0, _extends2.default)({}, externalEventHandlers, {
215
- visible: checkboxSelection,
216
- ref: checkboxRef,
217
- checked: status.selected,
218
- disabled: disableSelection || status.disabled,
219
- tabIndex: -1
220
- }, externalProps, {
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
- rootRefObject,
240
- contentRefObject,
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.useTreeItem2 = useTreeItem2;
265
+ exports.useTreeItem = useTreeItem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "7.22.1",
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.25.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": "7.21.0"
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 { TreeItem2Props } from '../TreeItem2';
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";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sideEffects": false,
3
3
  "module": "./index.js",
4
- "main": "../node/TreeItem2/index.js",
4
+ "main": "../node/useTreeItem/index.js",
5
5
  "types": "./index.d.ts"
6
6
  }
@@ -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 { useTreeItem2Utils } from "../hooks/useTreeItem2Utils/index.js";
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 useTreeItem2 = parameters => {
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
- } = useTreeItem2Utils({
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
- return _extends({}, externalEventHandlers, {
207
- visible: checkboxSelection,
208
- ref: checkboxRef,
209
- checked: status.selected,
210
- disabled: disableSelection || status.disabled,
211
- tabIndex: -1
212
- }, externalProps, {
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
- rootRefObject,
232
- contentRefObject,
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 = {}) => {