@mui/x-tree-view 8.0.0-alpha.0 → 8.0.0-alpha.2

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 (159) hide show
  1. package/CHANGELOG.md +651 -6
  2. package/README.md +2 -2
  3. package/RichTreeView/RichTreeView.js +2 -4
  4. package/RichTreeView/RichTreeView.types.d.ts +5 -18
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +2 -2
  6. package/TreeItem/TreeItem.js +4 -4
  7. package/TreeItem/TreeItem.types.d.ts +4 -2
  8. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  9. package/TreeItemIcon/TreeItemIcon.types.d.ts +1 -1
  10. package/TreeItemProvider/TreeItemProvider.d.ts +2 -4
  11. package/TreeItemProvider/TreeItemProvider.js +26 -11
  12. package/TreeItemProvider/TreeItemProvider.types.d.ts +1 -0
  13. package/hooks/index.d.ts +1 -0
  14. package/hooks/index.js +2 -1
  15. package/hooks/useTreeItemModel.d.ts +2 -0
  16. package/hooks/useTreeItemModel.js +11 -0
  17. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +2 -1
  18. package/hooks/useTreeItemUtils/useTreeItemUtils.js +31 -15
  19. package/hooks/useTreeViewApiRef.d.ts +1 -0
  20. package/index.js +1 -1
  21. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +3 -1
  22. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +2 -1
  23. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  24. package/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  25. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  26. package/internals/components/RichTreeViewItems.d.ts +3 -5
  27. package/internals/components/RichTreeViewItems.js +42 -30
  28. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  29. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +36 -0
  30. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  31. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +1 -5
  32. package/internals/hooks/useSelector.d.ts +4 -0
  33. package/internals/hooks/useSelector.js +6 -0
  34. package/internals/index.d.ts +6 -1
  35. package/internals/index.js +5 -1
  36. package/internals/models/itemPlugin.d.ts +5 -5
  37. package/internals/models/plugin.d.ts +20 -8
  38. package/internals/models/treeView.d.ts +6 -0
  39. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  40. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +124 -0
  41. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  42. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +6 -14
  43. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +1 -0
  44. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  45. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  46. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +182 -0
  47. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  48. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -16
  49. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  50. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
  51. package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
  52. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -98
  53. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +718 -0
  54. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  55. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +15 -52
  56. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  57. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  58. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  59. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  60. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +74 -0
  61. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  62. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +7 -24
  63. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  64. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +45 -34
  65. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +32 -0
  66. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  67. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +6 -6
  68. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +6 -6
  69. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +23 -13
  70. package/internals/useTreeView/useTreeView.js +30 -17
  71. package/internals/useTreeView/useTreeView.types.d.ts +2 -3
  72. package/internals/useTreeView/useTreeViewBuildContext.d.ts +3 -1
  73. package/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  74. package/internals/utils/TreeViewStore.d.ts +12 -0
  75. package/internals/utils/TreeViewStore.js +24 -0
  76. package/internals/utils/selectors.d.ts +9 -0
  77. package/internals/utils/selectors.js +37 -0
  78. package/internals/utils/tree.d.ts +8 -8
  79. package/internals/utils/tree.js +51 -43
  80. package/models/items.d.ts +3 -2
  81. package/modern/RichTreeView/RichTreeView.js +2 -4
  82. package/modern/TreeItem/TreeItem.js +4 -4
  83. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  84. package/modern/TreeItemProvider/TreeItemProvider.js +26 -11
  85. package/modern/hooks/index.js +2 -1
  86. package/modern/hooks/useTreeItemModel.js +11 -0
  87. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +31 -15
  88. package/modern/index.js +1 -1
  89. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  90. package/modern/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  91. package/modern/internals/components/RichTreeViewItems.js +42 -30
  92. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  93. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  94. package/modern/internals/hooks/useSelector.js +6 -0
  95. package/modern/internals/index.js +5 -1
  96. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  97. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  98. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  99. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  100. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  101. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  102. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -98
  103. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  104. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  105. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  106. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  107. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  108. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  109. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  110. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +45 -34
  111. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  112. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +23 -13
  113. package/modern/internals/useTreeView/useTreeView.js +30 -17
  114. package/modern/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  115. package/modern/internals/utils/TreeViewStore.js +24 -0
  116. package/modern/internals/utils/selectors.js +37 -0
  117. package/modern/internals/utils/tree.js +51 -43
  118. package/modern/useTreeItem/useTreeItem.js +26 -11
  119. package/node/RichTreeView/RichTreeView.js +2 -4
  120. package/node/TreeItem/TreeItem.js +4 -4
  121. package/node/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +2 -2
  122. package/node/TreeItemProvider/TreeItemProvider.js +26 -10
  123. package/node/hooks/index.js +8 -1
  124. package/node/hooks/useTreeItemModel.js +17 -0
  125. package/node/hooks/useTreeItemUtils/useTreeItemUtils.js +32 -15
  126. package/node/index.js +1 -1
  127. package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  128. package/node/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  129. package/node/internals/components/RichTreeViewItems.js +42 -30
  130. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.js +12 -13
  131. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +15 -0
  132. package/node/internals/hooks/useSelector.js +13 -0
  133. package/node/internals/index.js +47 -1
  134. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  135. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +23 -0
  136. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +14 -0
  137. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  138. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +40 -0
  139. package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +16 -13
  140. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +60 -100
  141. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +109 -0
  142. package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +30 -27
  143. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  144. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  145. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  146. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +32 -0
  147. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  148. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +46 -35
  149. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +15 -0
  150. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +24 -14
  151. package/node/internals/useTreeView/useTreeView.js +30 -17
  152. package/node/internals/useTreeView/useTreeViewBuildContext.js +25 -18
  153. package/node/internals/utils/TreeViewStore.js +31 -0
  154. package/node/internals/utils/selectors.js +44 -0
  155. package/node/internals/utils/tree.js +51 -43
  156. package/node/useTreeItem/useTreeItem.js +26 -11
  157. package/package.json +6 -4
  158. package/useTreeItem/useTreeItem.js +26 -11
  159. package/useTreeItem/useTreeItem.types.d.ts +9 -0
@@ -15,13 +15,16 @@ var _TreeViewProvider = require("../internals/TreeViewProvider");
15
15
  var _useTreeItemUtils = require("../hooks/useTreeItemUtils");
16
16
  var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
17
17
  var _tree = require("../internals/utils/tree");
18
+ var _useSelector = require("../internals/hooks/useSelector");
19
+ var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors");
18
20
  var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
21
+ var _useTreeViewItems = require("../internals/plugins/useTreeViewItems/useTreeViewItems.selectors");
22
+ var _useTreeViewId2 = require("../internals/corePlugins/useTreeViewId/useTreeViewId.selectors");
19
23
  const useTreeItem = parameters => {
20
24
  const {
21
25
  runItemPlugins,
22
26
  items: {
23
- onItemClick,
24
- disabledItemsFocusable
27
+ onItemClick
25
28
  },
26
29
  selection: {
27
30
  disableSelection,
@@ -30,11 +33,18 @@ const useTreeItem = parameters => {
30
33
  expansion: {
31
34
  expansionTrigger
32
35
  },
33
- treeId,
36
+ label: labelContext,
34
37
  instance,
35
- publicAPI
38
+ publicAPI,
39
+ store
36
40
  } = (0, _TreeViewProvider.useTreeViewContext)();
37
41
  const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
42
+ const depth = (0, _useSelector.useSelector)(store, (...params) => {
43
+ if (typeof depthContext === 'function') {
44
+ return depthContext(...params);
45
+ }
46
+ return depthContext;
47
+ }, parameters.itemId);
38
48
  const {
39
49
  id,
40
50
  itemId,
@@ -59,12 +69,13 @@ const useTreeItem = parameters => {
59
69
  const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef, rootRefObject);
60
70
  const handleContentRef = (0, _useForkRef.default)(contentRef, contentRefObject);
61
71
  const checkboxRef = React.useRef(null);
72
+ const treeId = (0, _useSelector.useSelector)(store, _useTreeViewId2.selectorTreeViewId);
62
73
  const idAttribute = (0, _useTreeViewId.generateTreeItemIdAttribute)({
63
74
  itemId,
64
75
  treeId,
65
76
  id
66
77
  });
67
- const rootTabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
78
+ const shouldBeAccessibleWithTab = (0, _useSelector.useSelector)(store, _useTreeViewFocus.selectorIsItemTheDefaultFocusableItem, itemId);
68
79
  const sharedPropsEnhancerParams = {
69
80
  rootRefObject,
70
81
  contentRefObject,
@@ -76,8 +87,7 @@ const useTreeItem = parameters => {
76
87
  if (event.defaultMuiPrevented) {
77
88
  return;
78
89
  }
79
- const canBeFocused = !status.disabled || disabledItemsFocusable;
80
- if (!status.focused && canBeFocused && event.currentTarget === event.target) {
90
+ if (!status.focused && (0, _useTreeViewItems.selectorCanItemBeFocused)(store.value, itemId) && event.currentTarget === event.target) {
81
91
  instance.focusItem(event, itemId);
82
92
  }
83
93
  };
@@ -115,7 +125,7 @@ const useTreeItem = parameters => {
115
125
  };
116
126
  const createContentHandleClick = otherHandlers => event => {
117
127
  otherHandlers.onClick?.(event);
118
- onItemClick?.(event, itemId);
128
+ onItemClick(event, itemId);
119
129
  if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
120
130
  return;
121
131
  }
@@ -146,6 +156,10 @@ const useTreeItem = parameters => {
146
156
  interactions.handleExpansion(event);
147
157
  }
148
158
  };
159
+ const getContextProviderProps = () => ({
160
+ itemId,
161
+ id
162
+ });
149
163
  const getRootProps = (externalProps = {}) => {
150
164
  const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(parameters), (0, _extractEventHandlers.default)(externalProps));
151
165
 
@@ -164,14 +178,14 @@ const useTreeItem = parameters => {
164
178
  const props = (0, _extends2.default)({}, externalEventHandlers, {
165
179
  ref: handleRootRef,
166
180
  role: 'treeitem',
167
- tabIndex: rootTabIndex,
181
+ tabIndex: shouldBeAccessibleWithTab ? 0 : -1,
168
182
  id: idAttribute,
169
183
  'aria-expanded': status.expandable ? status.expanded : undefined,
170
184
  'aria-selected': ariaSelected,
171
185
  'aria-disabled': status.disabled || undefined
172
186
  }, externalProps, {
173
187
  style: (0, _extends2.default)({}, externalProps.style ?? {}, {
174
- '--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
188
+ '--TreeView-itemDepth': depth
175
189
  }),
176
190
  onFocus: createRootHandleFocus(externalEventHandlers),
177
191
  onBlur: createRootHandleBlur(externalEventHandlers),
@@ -212,7 +226,7 @@ const useTreeItem = parameters => {
212
226
  }, externalProps, {
213
227
  onDoubleClick: createLabelHandleDoubleClick(externalEventHandlers)
214
228
  });
215
- if (instance.isTreeViewEditable) {
229
+ if (labelContext?.isItemEditable) {
216
230
  props.editable = status.editable;
217
231
  }
218
232
  return props;
@@ -249,6 +263,7 @@ const useTreeItem = parameters => {
249
263
  return (0, _extends2.default)({}, externalProps, enhancedDragAndDropOverlayProps);
250
264
  };
251
265
  return {
266
+ getContextProviderProps,
252
267
  getRootProps,
253
268
  getContentProps,
254
269
  getGroupTransitionProps,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "8.0.0-alpha.0",
3
+ "version": "8.0.0-alpha.2",
4
4
  "description": "The community edition of the Tree View components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -39,15 +39,17 @@
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": "8.0.0-alpha.0"
42
+ "reselect": "^5.1.1",
43
+ "use-sync-external-store": "^1.2.2",
44
+ "@mui/x-internals": "8.0.0-alpha.2"
43
45
  },
44
46
  "peerDependencies": {
45
47
  "@emotion/react": "^11.9.0",
46
48
  "@emotion/styled": "^11.8.1",
47
49
  "@mui/material": "^5.15.14 || ^6.0.0",
48
50
  "@mui/system": "^5.15.14 || ^6.0.0",
49
- "react": "^17.0.0 || ^18.0.0",
50
- "react-dom": "^17.0.0 || ^18.0.0"
51
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
52
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
51
53
  },
52
54
  "peerDependenciesMeta": {
53
55
  "@emotion/react": {
@@ -8,13 +8,16 @@ import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
8
8
  import { useTreeItemUtils } from "../hooks/useTreeItemUtils/index.js";
9
9
  import { TreeViewItemDepthContext } from "../internals/TreeViewItemDepthContext/index.js";
10
10
  import { isTargetInDescendants } from "../internals/utils/tree.js";
11
+ import { useSelector } from "../internals/hooks/useSelector.js";
12
+ import { selectorIsItemTheDefaultFocusableItem } from "../internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js";
11
13
  import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
14
+ import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
15
+ import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
12
16
  export const useTreeItem = parameters => {
13
17
  const {
14
18
  runItemPlugins,
15
19
  items: {
16
- onItemClick,
17
- disabledItemsFocusable
20
+ onItemClick
18
21
  },
19
22
  selection: {
20
23
  disableSelection,
@@ -23,11 +26,18 @@ export const useTreeItem = parameters => {
23
26
  expansion: {
24
27
  expansionTrigger
25
28
  },
26
- treeId,
29
+ label: labelContext,
27
30
  instance,
28
- publicAPI
31
+ publicAPI,
32
+ store
29
33
  } = useTreeViewContext();
30
34
  const depthContext = React.useContext(TreeViewItemDepthContext);
35
+ const depth = useSelector(store, (...params) => {
36
+ if (typeof depthContext === 'function') {
37
+ return depthContext(...params);
38
+ }
39
+ return depthContext;
40
+ }, parameters.itemId);
31
41
  const {
32
42
  id,
33
43
  itemId,
@@ -52,12 +62,13 @@ export const useTreeItem = parameters => {
52
62
  const handleRootRef = useForkRef(rootRef, pluginRootRef, rootRefObject);
53
63
  const handleContentRef = useForkRef(contentRef, contentRefObject);
54
64
  const checkboxRef = React.useRef(null);
65
+ const treeId = useSelector(store, selectorTreeViewId);
55
66
  const idAttribute = generateTreeItemIdAttribute({
56
67
  itemId,
57
68
  treeId,
58
69
  id
59
70
  });
60
- const rootTabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
71
+ const shouldBeAccessibleWithTab = useSelector(store, selectorIsItemTheDefaultFocusableItem, itemId);
61
72
  const sharedPropsEnhancerParams = {
62
73
  rootRefObject,
63
74
  contentRefObject,
@@ -69,8 +80,7 @@ export const useTreeItem = parameters => {
69
80
  if (event.defaultMuiPrevented) {
70
81
  return;
71
82
  }
72
- const canBeFocused = !status.disabled || disabledItemsFocusable;
73
- if (!status.focused && canBeFocused && event.currentTarget === event.target) {
83
+ if (!status.focused && selectorCanItemBeFocused(store.value, itemId) && event.currentTarget === event.target) {
74
84
  instance.focusItem(event, itemId);
75
85
  }
76
86
  };
@@ -108,7 +118,7 @@ export const useTreeItem = parameters => {
108
118
  };
109
119
  const createContentHandleClick = otherHandlers => event => {
110
120
  otherHandlers.onClick?.(event);
111
- onItemClick?.(event, itemId);
121
+ onItemClick(event, itemId);
112
122
  if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
113
123
  return;
114
124
  }
@@ -139,6 +149,10 @@ export const useTreeItem = parameters => {
139
149
  interactions.handleExpansion(event);
140
150
  }
141
151
  };
152
+ const getContextProviderProps = () => ({
153
+ itemId,
154
+ id
155
+ });
142
156
  const getRootProps = (externalProps = {}) => {
143
157
  const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
144
158
 
@@ -157,14 +171,14 @@ export const useTreeItem = parameters => {
157
171
  const props = _extends({}, externalEventHandlers, {
158
172
  ref: handleRootRef,
159
173
  role: 'treeitem',
160
- tabIndex: rootTabIndex,
174
+ tabIndex: shouldBeAccessibleWithTab ? 0 : -1,
161
175
  id: idAttribute,
162
176
  'aria-expanded': status.expandable ? status.expanded : undefined,
163
177
  'aria-selected': ariaSelected,
164
178
  'aria-disabled': status.disabled || undefined
165
179
  }, externalProps, {
166
180
  style: _extends({}, externalProps.style ?? {}, {
167
- '--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
181
+ '--TreeView-itemDepth': depth
168
182
  }),
169
183
  onFocus: createRootHandleFocus(externalEventHandlers),
170
184
  onBlur: createRootHandleBlur(externalEventHandlers),
@@ -205,7 +219,7 @@ export const useTreeItem = parameters => {
205
219
  }, externalProps, {
206
220
  onDoubleClick: createLabelHandleDoubleClick(externalEventHandlers)
207
221
  });
208
- if (instance.isTreeViewEditable) {
222
+ if (labelContext?.isItemEditable) {
209
223
  props.editable = status.editable;
210
224
  }
211
225
  return props;
@@ -242,6 +256,7 @@ export const useTreeItem = parameters => {
242
256
  return _extends({}, externalProps, enhancedDragAndDropOverlayProps);
243
257
  };
244
258
  return {
259
+ getContextProviderProps,
245
260
  getRootProps,
246
261
  getContentProps,
247
262
  getGroupTransitionProps,
@@ -32,6 +32,10 @@ export interface UseTreeItemParameters {
32
32
  */
33
33
  children?: React.ReactNode;
34
34
  }
35
+ export interface UseTreeItemContextProviderProps {
36
+ itemId: string;
37
+ id: string | undefined;
38
+ }
35
39
  export interface UseTreeItemRootSlotPropsFromUseTreeItem {
36
40
  role: 'treeitem';
37
41
  tabIndex: 0 | -1;
@@ -98,6 +102,11 @@ export interface UseTreeItemStatus {
98
102
  editable: boolean;
99
103
  }
100
104
  export interface UseTreeItemReturnValue<TSignatures extends UseTreeItemMinimalPlugins, TOptionalSignatures extends UseTreeItemOptionalPlugins> {
105
+ /**
106
+ * Resolver for the context provider's props.
107
+ * @returns {UseTreeItemContextProviderProps} Props that should be spread on the context provider slot.
108
+ */
109
+ getContextProviderProps: () => UseTreeItemContextProviderProps;
101
110
  /**
102
111
  * Resolver for the root slot's props.
103
112
  * @param {ExternalProps} externalProps Additional props for the root slot.