@mui/x-tree-view 7.0.0-beta.7 → 7.1.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 (136) hide show
  1. package/CHANGELOG.md +266 -12
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.js +15 -17
  4. package/RichTreeView/RichTreeView.types.d.ts +1 -1
  5. package/SimpleTreeView/SimpleTreeView.js +3 -4
  6. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +1 -1
  7. package/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  8. package/TreeItem/TreeItem.js +43 -35
  9. package/TreeItem/TreeItem.types.d.ts +3 -3
  10. package/TreeItem/TreeItemContent.d.ts +7 -7
  11. package/TreeItem/TreeItemContent.js +10 -10
  12. package/TreeItem/treeItemClasses.d.ts +1 -1
  13. package/TreeItem/useTreeItemState.d.ts +1 -1
  14. package/TreeItem/useTreeItemState.js +13 -13
  15. package/TreeItem2/TreeItem2.js +16 -17
  16. package/TreeItem2Icon/TreeItem2Icon.js +5 -6
  17. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +4 -4
  18. package/TreeItem2Provider/TreeItem2Provider.js +3 -3
  19. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +1 -1
  20. package/TreeView/TreeView.d.ts +1 -1
  21. package/TreeView/TreeView.js +1 -1
  22. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +2 -2
  23. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  24. package/hooks/useTreeViewApiRef.d.ts +1 -1
  25. package/index.js +1 -1
  26. package/internals/TreeViewProvider/DescendantProvider.d.ts +1 -1
  27. package/internals/TreeViewProvider/DescendantProvider.js +1 -1
  28. package/internals/hooks/useInstanceEventHandler.js +5 -10
  29. package/internals/index.d.ts +2 -2
  30. package/internals/models/plugin.d.ts +1 -1
  31. package/internals/plugins/defaultPlugins.d.ts +3 -3
  32. package/internals/plugins/defaultPlugins.js +2 -2
  33. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +17 -24
  34. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +6 -6
  35. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +76 -58
  36. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +9 -8
  37. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +6 -6
  38. package/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  39. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +2 -2
  40. package/internals/plugins/useTreeViewItems/index.d.ts +2 -0
  41. package/internals/plugins/useTreeViewItems/index.js +1 -0
  42. package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +3 -0
  43. package/{modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js → internals/plugins/useTreeViewItems/useTreeViewItems.js} +42 -33
  44. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +99 -0
  45. package/internals/plugins/useTreeViewJSXItems/index.d.ts +2 -0
  46. package/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  47. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +3 -0
  48. package/{modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +41 -40
  49. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +18 -0
  50. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +85 -96
  51. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +6 -3
  52. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +44 -47
  53. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +8 -8
  54. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +7 -7
  55. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  56. package/internals/useTreeView/useTreeView.js +5 -6
  57. package/internals/useTreeView/useTreeView.utils.d.ts +5 -5
  58. package/internals/useTreeView/useTreeView.utils.js +18 -18
  59. package/internals/utils/extractPluginParamsFromProps.js +2 -2
  60. package/internals/utils/utils.js +1 -0
  61. package/modern/RichTreeView/RichTreeView.js +11 -11
  62. package/modern/SimpleTreeView/SimpleTreeView.js +1 -1
  63. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  64. package/modern/TreeItem/TreeItem.js +31 -22
  65. package/modern/TreeItem/TreeItemContent.js +10 -10
  66. package/modern/TreeItem/useTreeItemState.js +13 -13
  67. package/modern/TreeItem2/TreeItem2.js +11 -11
  68. package/modern/TreeItem2Provider/TreeItem2Provider.js +3 -3
  69. package/modern/TreeView/TreeView.js +1 -1
  70. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  71. package/modern/index.js +1 -1
  72. package/modern/internals/TreeViewProvider/DescendantProvider.js +1 -1
  73. package/modern/internals/plugins/defaultPlugins.js +2 -2
  74. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -14
  75. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +74 -53
  76. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  77. package/modern/internals/plugins/useTreeViewItems/index.js +1 -0
  78. package/{internals/plugins/useTreeViewNodes/useTreeViewNodes.js → modern/internals/plugins/useTreeViewItems/useTreeViewItems.js} +46 -41
  79. package/modern/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  80. package/{internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +41 -41
  81. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +85 -94
  82. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +40 -40
  83. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  84. package/modern/internals/useTreeView/useTreeView.js +3 -4
  85. package/modern/internals/useTreeView/useTreeView.utils.js +18 -18
  86. package/modern/internals/utils/utils.js +1 -0
  87. package/modern/useTreeItem2/useTreeItem2.js +23 -12
  88. package/node/RichTreeView/RichTreeView.js +11 -11
  89. package/node/SimpleTreeView/SimpleTreeView.js +1 -1
  90. package/node/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  91. package/node/TreeItem/TreeItem.js +31 -22
  92. package/node/TreeItem/TreeItemContent.js +10 -10
  93. package/node/TreeItem/useTreeItemState.js +13 -13
  94. package/node/TreeItem2/TreeItem2.js +11 -11
  95. package/node/TreeItem2Provider/TreeItem2Provider.js +3 -3
  96. package/node/TreeView/TreeView.js +1 -1
  97. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  98. package/node/index.js +1 -1
  99. package/node/internals/TreeViewProvider/DescendantProvider.js +1 -1
  100. package/node/internals/plugins/defaultPlugins.js +2 -2
  101. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -14
  102. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +74 -53
  103. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  104. package/node/internals/plugins/useTreeViewItems/index.js +12 -0
  105. package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.js → useTreeViewItems/useTreeViewItems.js} +44 -35
  106. package/node/internals/plugins/useTreeViewJSXItems/index.js +12 -0
  107. package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.js → useTreeViewJSXItems/useTreeViewJSXItems.js} +43 -42
  108. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +84 -93
  109. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +39 -39
  110. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  111. package/node/internals/useTreeView/useTreeView.js +3 -4
  112. package/node/internals/useTreeView/useTreeView.utils.js +23 -23
  113. package/node/internals/utils/utils.js +1 -0
  114. package/node/useTreeItem2/useTreeItem2.js +23 -12
  115. package/package.json +5 -5
  116. package/useTreeItem2/useTreeItem2.d.ts +1 -1
  117. package/useTreeItem2/useTreeItem2.js +26 -18
  118. package/useTreeItem2/useTreeItem2.types.d.ts +9 -7
  119. package/internals/plugins/useTreeViewJSXNodes/index.d.ts +0 -2
  120. package/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  121. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.d.ts +0 -3
  122. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +0 -18
  123. package/internals/plugins/useTreeViewNodes/index.d.ts +0 -2
  124. package/internals/plugins/useTreeViewNodes/index.js +0 -1
  125. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.d.ts +0 -3
  126. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +0 -88
  127. package/modern/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  128. package/modern/internals/plugins/useTreeViewNodes/index.js +0 -1
  129. package/node/internals/plugins/useTreeViewJSXNodes/index.js +0 -12
  130. package/node/internals/plugins/useTreeViewNodes/index.js +0 -12
  131. /package/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  132. /package/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  133. /package/modern/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  134. /package/modern/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  135. /package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  136. /package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
@@ -15,7 +15,7 @@ export const useTreeItem2 = parameters => {
15
15
  } = useTreeViewContext();
16
16
  const {
17
17
  id,
18
- nodeId,
18
+ itemId,
19
19
  label,
20
20
  children,
21
21
  rootRef
@@ -28,25 +28,34 @@ export const useTreeItem2 = parameters => {
28
28
  interactions,
29
29
  status
30
30
  } = useTreeItem2Utils({
31
- nodeId,
31
+ itemId,
32
32
  children
33
33
  });
34
- const idAttribute = instance.getTreeItemId(nodeId, id);
34
+ const idAttribute = instance.getTreeItemId(itemId, id);
35
35
  const handleRootRef = useForkRef(rootRef, pluginRootRef);
36
36
  const createRootHandleFocus = otherHandlers => event => {
37
37
  otherHandlers.onFocus?.(event);
38
38
  if (event.defaultMuiPrevented) {
39
39
  return;
40
40
  }
41
-
42
- // DOM focus stays on the tree which manages focus with aria-activedescendant
43
- if (event.target === event.currentTarget) {
44
- instance.focusRoot();
45
- }
46
41
  const canBeFocused = !status.disabled || disabledItemsFocusable;
47
42
  if (!status.focused && canBeFocused && event.currentTarget === event.target) {
48
- instance.focusItem(event, nodeId);
43
+ instance.focusItem(event, itemId);
44
+ }
45
+ };
46
+ const createRootHandleBlur = otherHandlers => event => {
47
+ otherHandlers.onBlur?.(event);
48
+ if (event.defaultMuiPrevented) {
49
+ return;
50
+ }
51
+ instance.removeFocusedItem();
52
+ };
53
+ const createRootHandleKeyDown = otherHandlers => event => {
54
+ otherHandlers.onKeyDown?.(event);
55
+ if (event.defaultMuiPrevented) {
56
+ return;
49
57
  }
58
+ instance.handleItemKeyDown(event, itemId);
50
59
  };
51
60
  const createContentHandleClick = otherHandlers => event => {
52
61
  otherHandlers.onClick?.(event);
@@ -76,7 +85,7 @@ export const useTreeItem2 = parameters => {
76
85
  /* single-selection trees unset aria-selected on un-selected items.
77
86
  *
78
87
  * If the tree does not support multiple selection, aria-selected
79
- * is set to true for the selected node and it is not present on any other node in the tree.
88
+ * is set to true for the selected item and it is not present on any other item in the tree.
80
89
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
81
90
  */
82
91
  ariaSelected = true;
@@ -84,13 +93,15 @@ export const useTreeItem2 = parameters => {
84
93
  return _extends({}, externalEventHandlers, {
85
94
  ref: handleRootRef,
86
95
  role: 'treeitem',
87
- tabIndex: -1,
96
+ tabIndex: instance.canItemBeTabbed(itemId) ? 0 : -1,
88
97
  id: idAttribute,
89
98
  'aria-expanded': status.expandable ? status.expanded : undefined,
90
99
  'aria-selected': ariaSelected,
91
100
  'aria-disabled': status.disabled || undefined
92
101
  }, externalProps, {
93
- onFocus: createRootHandleFocus(externalEventHandlers)
102
+ onFocus: createRootHandleFocus(externalEventHandlers),
103
+ onBlur: createRootHandleBlur(externalEventHandlers),
104
+ onKeyDown: createRootHandleKeyDown(externalEventHandlers)
94
105
  });
95
106
  };
96
107
  const getContentProps = (externalProps = {}) => {
@@ -45,7 +45,7 @@ function WrappedTreeItem({
45
45
  slotProps,
46
46
  label,
47
47
  id,
48
- nodeId,
48
+ itemId,
49
49
  children
50
50
  }) {
51
51
  const Item = slots?.item ?? _TreeItem.TreeItem;
@@ -53,12 +53,12 @@ function WrappedTreeItem({
53
53
  elementType: Item,
54
54
  externalSlotProps: slotProps?.item,
55
55
  additionalProps: {
56
- nodeId,
56
+ itemId,
57
57
  id,
58
58
  label
59
59
  },
60
60
  ownerState: {
61
- nodeId,
61
+ itemId,
62
62
  label
63
63
  }
64
64
  });
@@ -66,7 +66,7 @@ function WrappedTreeItem({
66
66
  children: children
67
67
  }));
68
68
  }
69
- const childrenWarning = (0, _warning.buildWarning)(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/rich-tree-view/items/']);
69
+ const childrenWarning = (0, _warning.buildWarning)(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/']);
70
70
 
71
71
  /**
72
72
  *
@@ -113,10 +113,10 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
113
113
  getSlotProps: getRootProps,
114
114
  ownerState: props
115
115
  });
116
- const nodesToRender = instance.getNodesToRender();
117
- const renderNode = ({
116
+ const itemsToRender = instance.getItemsToRender();
117
+ const renderItem = ({
118
118
  label,
119
- nodeId,
119
+ itemId,
120
120
  id,
121
121
  children
122
122
  }) => {
@@ -125,14 +125,14 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
125
125
  slotProps: slotProps,
126
126
  label: label,
127
127
  id: id,
128
- nodeId: nodeId,
129
- children: children?.map(renderNode)
130
- }, nodeId);
128
+ itemId: itemId,
129
+ children: children?.map(renderItem)
130
+ }, itemId);
131
131
  };
132
132
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
133
133
  value: contextValue,
134
134
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps, {
135
- children: nodesToRender.map(renderNode)
135
+ children: itemsToRender.map(renderItem)
136
136
  }))
137
137
  });
138
138
  });
@@ -40,7 +40,7 @@ const SimpleTreeViewRoot = exports.SimpleTreeViewRoot = (0, _styles.styled)('ul'
40
40
  outline: 0
41
41
  });
42
42
  const EMPTY_ITEMS = [];
43
- const itemsPropWarning = (0, _warning.buildWarning)(['MUI X: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/simple-tree-view/items/']);
43
+ const itemsPropWarning = (0, _warning.buildWarning)(['MUI X: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/simple-tree-view/items/']);
44
44
 
45
45
  /**
46
46
  *
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SIMPLE_TREE_VIEW_PLUGINS = void 0;
7
7
  var _defaultPlugins = require("../internals/plugins/defaultPlugins");
8
- var _useTreeViewJSXNodes = require("../internals/plugins/useTreeViewJSXNodes");
9
- const SIMPLE_TREE_VIEW_PLUGINS = exports.SIMPLE_TREE_VIEW_PLUGINS = [..._defaultPlugins.DEFAULT_TREE_VIEW_PLUGINS, _useTreeViewJSXNodes.useTreeViewJSXNodes];
8
+ var _useTreeViewJSXItems = require("../internals/plugins/useTreeViewJSXItems");
9
+ const SIMPLE_TREE_VIEW_PLUGINS = exports.SIMPLE_TREE_VIEW_PLUGINS = [..._defaultPlugins.DEFAULT_TREE_VIEW_PLUGINS, _useTreeViewJSXItems.useTreeViewJSXItems];
10
10
 
11
11
  // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -23,7 +23,7 @@ var _useTreeViewContext = require("../internals/TreeViewProvider/useTreeViewCont
23
23
  var _icons = require("../icons");
24
24
  var _TreeItem2Provider = require("../TreeItem2Provider");
25
25
  var _jsxRuntime = require("react/jsx-runtime");
26
- const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown"],
26
+ const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "itemId", "id", "label", "onClick", "onMouseDown", "onFocus", "onBlur", "onKeyDown"],
27
27
  _excluded2 = ["ownerState"],
28
28
  _excluded3 = ["ownerState"],
29
29
  _excluded4 = ["ownerState"];
@@ -165,11 +165,13 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
165
165
  slotProps: inSlotProps,
166
166
  ContentComponent = _TreeItemContent.TreeItemContent,
167
167
  ContentProps,
168
- nodeId,
168
+ itemId,
169
169
  id,
170
170
  label,
171
171
  onClick,
172
- onMouseDown
172
+ onMouseDown,
173
+ onBlur,
174
+ onKeyDown
173
175
  } = props,
174
176
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
175
177
  const {
@@ -192,10 +194,10 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
192
194
  return Boolean(reactChildren);
193
195
  };
194
196
  const expandable = isExpandable(children);
195
- const expanded = instance.isNodeExpanded(nodeId);
196
- const focused = instance.isNodeFocused(nodeId);
197
- const selected = instance.isNodeSelected(nodeId);
198
- const disabled = instance.isNodeDisabled(nodeId);
197
+ const expanded = instance.isItemExpanded(itemId);
198
+ const focused = instance.isItemFocused(itemId);
199
+ const selected = instance.isItemSelected(itemId);
200
+ const disabled = instance.isItemDisabled(itemId);
199
201
  const ownerState = (0, _extends2.default)({}, props, {
200
202
  expanded,
201
203
  focused,
@@ -257,24 +259,29 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
257
259
  /* single-selection trees unset aria-selected on un-selected items.
258
260
  *
259
261
  * If the tree does not support multiple selection, aria-selected
260
- * is set to true for the selected node and it is not present on any other node in the tree.
262
+ * is set to true for the selected item and it is not present on any other item in the tree.
261
263
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
262
264
  */
263
265
  ariaSelected = true;
264
266
  }
265
267
  function handleFocus(event) {
266
- // DOM focus stays on the tree which manages focus with aria-activedescendant
267
- if (event.target === event.currentTarget) {
268
- instance.focusRoot();
269
- }
270
268
  const canBeFocused = !disabled || disabledItemsFocusable;
271
269
  if (!focused && canBeFocused && event.currentTarget === event.target) {
272
- instance.focusItem(event, nodeId);
270
+ instance.focusItem(event, itemId);
273
271
  }
274
272
  }
275
- const idAttribute = instance.getTreeItemId(nodeId, id);
273
+ function handleBlur(event) {
274
+ onBlur?.(event);
275
+ instance.removeFocusedItem();
276
+ }
277
+ const handleKeyDown = event => {
278
+ onKeyDown?.(event);
279
+ instance.handleItemKeyDown(event, itemId);
280
+ };
281
+ const idAttribute = instance.getTreeItemId(itemId, id);
282
+ const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
276
283
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
277
- nodeId: nodeId,
284
+ itemId: itemId,
278
285
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(TreeItemRoot, (0, _extends2.default)({
279
286
  className: (0, _clsx.default)(classes.root, className),
280
287
  role: "treeitem",
@@ -282,10 +289,12 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
282
289
  "aria-selected": ariaSelected,
283
290
  "aria-disabled": disabled || undefined,
284
291
  id: idAttribute,
285
- tabIndex: -1
292
+ tabIndex: tabIndex
286
293
  }, other, {
287
294
  ownerState: ownerState,
288
295
  onFocus: handleFocus,
296
+ onBlur: handleBlur,
297
+ onKeyDown: handleKeyDown,
289
298
  ref: handleRootRef,
290
299
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTreeItemContent, (0, _extends2.default)({
291
300
  as: ContentComponent,
@@ -299,7 +308,7 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
299
308
  label: classes.label
300
309
  },
301
310
  label: label,
302
- nodeId: nodeId,
311
+ itemId: itemId,
303
312
  onClick: onClick,
304
313
  onMouseDown: onMouseDown,
305
314
  icon: icon,
@@ -331,7 +340,7 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
331
340
  classes: _propTypes.default.object,
332
341
  className: _propTypes.default.string,
333
342
  /**
334
- * The component used for the content node.
343
+ * The component used to render the content of the item.
335
344
  * @default TreeItemContent
336
345
  */
337
346
  ContentComponent: _elementTypeAcceptingRef.default,
@@ -345,13 +354,13 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
345
354
  */
346
355
  disabled: _propTypes.default.bool,
347
356
  /**
348
- * The tree item label.
357
+ * The id of the item.
349
358
  */
350
- label: _propTypes.default.node,
359
+ itemId: _propTypes.default.string.isRequired,
351
360
  /**
352
- * The id of the node.
361
+ * The tree item label.
353
362
  */
354
- nodeId: _propTypes.default.string.isRequired,
363
+ label: _propTypes.default.node,
355
364
  /**
356
365
  * This prop isn't supported.
357
366
  * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
@@ -12,7 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _useTreeItemState = require("./useTreeItemState");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
- const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "nodeId", "onClick", "onMouseDown"];
15
+ const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "itemId", "onClick", "onMouseDown"];
16
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  /**
@@ -26,7 +26,7 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
26
26
  expansionIcon,
27
27
  icon: iconProp,
28
28
  label,
29
- nodeId,
29
+ itemId,
30
30
  onClick,
31
31
  onMouseDown
32
32
  } = props,
@@ -39,7 +39,7 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
39
39
  handleExpansion,
40
40
  handleSelection,
41
41
  preventSelection
42
- } = (0, _useTreeItemState.useTreeItemState)(nodeId);
42
+ } = (0, _useTreeItemState.useTreeItemState)(itemId);
43
43
  const icon = iconProp || expansionIcon || displayIcon;
44
44
  const handleMouseDown = event => {
45
45
  preventSelection(event);
@@ -83,23 +83,23 @@ process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
83
83
  classes: _propTypes.default.object.isRequired,
84
84
  className: _propTypes.default.string,
85
85
  /**
86
- * The icon to display next to the tree node's label. Either a parent or end icon.
86
+ * The icon to display next to the tree item's label. Either a parent or end icon.
87
87
  */
88
88
  displayIcon: _propTypes.default.node,
89
89
  /**
90
- * The icon to display next to the tree node's label. Either an expansion or collapse icon.
90
+ * The icon to display next to the tree item's label. Either an expansion or collapse icon.
91
91
  */
92
92
  expansionIcon: _propTypes.default.node,
93
93
  /**
94
- * The icon to display next to the tree node's label.
94
+ * The icon to display next to the tree item's label.
95
95
  */
96
96
  icon: _propTypes.default.node,
97
97
  /**
98
- * The tree node label.
98
+ * The id of the item.
99
99
  */
100
- label: _propTypes.default.node,
100
+ itemId: _propTypes.default.string.isRequired,
101
101
  /**
102
- * The id of the node.
102
+ * The tree item label.
103
103
  */
104
- nodeId: _propTypes.default.string.isRequired
104
+ label: _propTypes.default.node
105
105
  } : void 0;
@@ -5,47 +5,47 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useTreeItemState = useTreeItemState;
7
7
  var _useTreeViewContext = require("../internals/TreeViewProvider/useTreeViewContext");
8
- function useTreeItemState(nodeId) {
8
+ function useTreeItemState(itemId) {
9
9
  const {
10
10
  instance,
11
11
  selection: {
12
12
  multiSelect
13
13
  }
14
14
  } = (0, _useTreeViewContext.useTreeViewContext)();
15
- const expandable = instance.isNodeExpandable(nodeId);
16
- const expanded = instance.isNodeExpanded(nodeId);
17
- const focused = instance.isNodeFocused(nodeId);
18
- const selected = instance.isNodeSelected(nodeId);
19
- const disabled = instance.isNodeDisabled(nodeId);
15
+ const expandable = instance.isItemExpandable(itemId);
16
+ const expanded = instance.isItemExpanded(itemId);
17
+ const focused = instance.isItemFocused(itemId);
18
+ const selected = instance.isItemSelected(itemId);
19
+ const disabled = instance.isItemDisabled(itemId);
20
20
  const handleExpansion = event => {
21
21
  if (!disabled) {
22
22
  if (!focused) {
23
- instance.focusItem(event, nodeId);
23
+ instance.focusItem(event, itemId);
24
24
  }
25
25
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
26
26
 
27
27
  // If already expanded and trying to toggle selection don't close
28
- if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
29
- instance.toggleNodeExpansion(event, nodeId);
28
+ if (expandable && !(multiple && instance.isItemExpanded(itemId))) {
29
+ instance.toggleItemExpansion(event, itemId);
30
30
  }
31
31
  }
32
32
  };
33
33
  const handleSelection = event => {
34
34
  if (!disabled) {
35
35
  if (!focused) {
36
- instance.focusItem(event, nodeId);
36
+ instance.focusItem(event, itemId);
37
37
  }
38
38
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
39
39
  if (multiple) {
40
40
  if (event.shiftKey) {
41
41
  instance.selectRange(event, {
42
- end: nodeId
42
+ end: itemId
43
43
  });
44
44
  } else {
45
- instance.selectNode(event, nodeId, true);
45
+ instance.selectItem(event, itemId, true);
46
46
  }
47
47
  } else {
48
- instance.selectNode(event, nodeId);
48
+ instance.selectItem(event, itemId);
49
49
  }
50
50
  }
51
51
  };
@@ -21,7 +21,7 @@ var _TreeItem = require("../TreeItem");
21
21
  var _TreeItem2Icon = require("../TreeItem2Icon");
22
22
  var _TreeItem2Provider = require("../TreeItem2Provider");
23
23
  var _jsxRuntime = require("react/jsx-runtime");
24
- const _excluded = ["id", "nodeId", "label", "disabled", "children", "slots", "slotProps"];
24
+ const _excluded = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
25
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
26
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
27
  const TreeItem2Root = exports.TreeItem2Root = (0, _styles.styled)('li', {
@@ -173,7 +173,7 @@ const TreeItem2 = exports.TreeItem2 = /*#__PURE__*/React.forwardRef(function Tre
173
173
  });
174
174
  const {
175
175
  id,
176
- nodeId,
176
+ itemId,
177
177
  label,
178
178
  disabled,
179
179
  children,
@@ -190,7 +190,7 @@ const TreeItem2 = exports.TreeItem2 = /*#__PURE__*/React.forwardRef(function Tre
190
190
  status
191
191
  } = (0, _useTreeItem.unstable_useTreeItem2)({
192
192
  id,
193
- nodeId,
193
+ itemId,
194
194
  children,
195
195
  label,
196
196
  disabled
@@ -242,7 +242,7 @@ const TreeItem2 = exports.TreeItem2 = /*#__PURE__*/React.forwardRef(function Tre
242
242
  className: classes.groupTransition
243
243
  });
244
244
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
245
- nodeId: nodeId,
245
+ itemId: itemId,
246
246
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, rootProps, {
247
247
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Content, (0, _extends2.default)({}, contentProps, {
248
248
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(IconContainer, (0, _extends2.default)({}, iconContainerProps, {
@@ -273,23 +273,23 @@ process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
273
273
  classes: _propTypes.default.object,
274
274
  className: _propTypes.default.string,
275
275
  /**
276
- * If `true`, the node is disabled.
276
+ * If `true`, the item is disabled.
277
277
  * @default false
278
278
  */
279
279
  disabled: _propTypes.default.bool,
280
280
  /**
281
- * The id attribute of the node. If not provided, it will be generated.
281
+ * The id attribute of the item. If not provided, it will be generated.
282
282
  */
283
283
  id: _propTypes.default.string,
284
284
  /**
285
- * The label of the node.
285
+ * The id of the item.
286
+ * Must be unique.
286
287
  */
287
- label: _propTypes.default.node,
288
+ itemId: _propTypes.default.string.isRequired,
288
289
  /**
289
- * The id of the node.
290
- * Must be unique.
290
+ * The label of the item.
291
291
  */
292
- nodeId: _propTypes.default.string.isRequired,
292
+ label: _propTypes.default.node,
293
293
  /**
294
294
  * This prop isn't supported.
295
295
  * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
@@ -10,14 +10,14 @@ var _useTreeViewContext = require("../internals/TreeViewProvider/useTreeViewCont
10
10
  function TreeItem2Provider(props) {
11
11
  const {
12
12
  children,
13
- nodeId
13
+ itemId
14
14
  } = props;
15
15
  const {
16
16
  wrapItem
17
17
  } = (0, _useTreeViewContext.useTreeViewContext)();
18
18
  return wrapItem({
19
19
  children,
20
- nodeId
20
+ itemId
21
21
  });
22
22
  }
23
23
  TreeItem2Provider.propTypes = {
@@ -26,5 +26,5 @@ TreeItem2Provider.propTypes = {
26
26
  // | To update them edit the TypeScript types and run "yarn proptypes" |
27
27
  // ----------------------------------------------------------------------
28
28
  children: _propTypes.default.node,
29
- nodeId: _propTypes.default.string.isRequired
29
+ itemId: _propTypes.default.string.isRequired
30
30
  };
@@ -39,7 +39,7 @@ const warn = () => {
39
39
 
40
40
  /**
41
41
  * This component has been deprecated in favor of the new `SimpleTreeView` component.
42
- * You can have a look at how to migrate to the new component in the v7 [migration guide](https://next.mui.com/x/migration/migration-tree-view-v6/#use-simpletreeview-instead-of-treeview)
42
+ * You can have a look at how to migrate to the new component in the v7 [migration guide](https://mui.com/x/migration/migration-tree-view-v6/#use-simpletreeview-instead-of-treeview)
43
43
  *
44
44
  * Demos:
45
45
  *
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useTreeItem2Utils = void 0;
7
7
  var _useTreeViewContext = require("../../internals/TreeViewProvider/useTreeViewContext");
8
8
  const useTreeItem2Utils = ({
9
- nodeId,
9
+ itemId,
10
10
  children
11
11
  }) => {
12
12
  const {
@@ -17,23 +17,23 @@ const useTreeItem2Utils = ({
17
17
  } = (0, _useTreeViewContext.useTreeViewContext)();
18
18
  const status = {
19
19
  expandable: Boolean(Array.isArray(children) ? children.length : children),
20
- expanded: instance.isNodeExpanded(nodeId),
21
- focused: instance.isNodeFocused(nodeId),
22
- selected: instance.isNodeSelected(nodeId),
23
- disabled: instance.isNodeDisabled(nodeId)
20
+ expanded: instance.isItemExpanded(itemId),
21
+ focused: instance.isItemFocused(itemId),
22
+ selected: instance.isItemSelected(itemId),
23
+ disabled: instance.isItemDisabled(itemId)
24
24
  };
25
25
  const handleExpansion = event => {
26
26
  if (status.disabled) {
27
27
  return;
28
28
  }
29
29
  if (!status.focused) {
30
- instance.focusItem(event, nodeId);
30
+ instance.focusItem(event, itemId);
31
31
  }
32
32
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
33
33
 
34
34
  // If already expanded and trying to toggle selection don't close
35
- if (status.expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
36
- instance.toggleNodeExpansion(event, nodeId);
35
+ if (status.expandable && !(multiple && instance.isItemExpanded(itemId))) {
36
+ instance.toggleItemExpansion(event, itemId);
37
37
  }
38
38
  };
39
39
  const handleSelection = event => {
@@ -41,19 +41,19 @@ const useTreeItem2Utils = ({
41
41
  return;
42
42
  }
43
43
  if (!status.focused) {
44
- instance.focusItem(event, nodeId);
44
+ instance.focusItem(event, itemId);
45
45
  }
46
46
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
47
47
  if (multiple) {
48
48
  if (event.shiftKey) {
49
49
  instance.selectRange(event, {
50
- end: nodeId
50
+ end: itemId
51
51
  });
52
52
  } else {
53
- instance.selectNode(event, nodeId, true);
53
+ instance.selectItem(event, itemId, true);
54
54
  }
55
55
  } else {
56
- instance.selectNode(event, nodeId);
56
+ instance.selectItem(event, itemId);
57
57
  }
58
58
  };
59
59
  const interactions = {
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v7.0.0-beta.7
2
+ * @mui/x-tree-view v7.1.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -55,7 +55,7 @@ const noop = () => {};
55
55
  * We use this for focus management, keyboard navigation, and typeahead
56
56
  * functionality for some components.
57
57
  *
58
- * The hook accepts the element node
58
+ * The hook accepts the element item
59
59
  *
60
60
  * Our main goals with this are:
61
61
  * 1) maximum composability,
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DEFAULT_TREE_VIEW_PLUGINS = void 0;
7
7
  var _useTreeViewId = require("./useTreeViewId");
8
- var _useTreeViewNodes = require("./useTreeViewNodes");
8
+ var _useTreeViewItems = require("./useTreeViewItems");
9
9
  var _useTreeViewExpansion = require("./useTreeViewExpansion");
10
10
  var _useTreeViewSelection = require("./useTreeViewSelection");
11
11
  var _useTreeViewFocus = require("./useTreeViewFocus");
12
12
  var _useTreeViewKeyboardNavigation = require("./useTreeViewKeyboardNavigation");
13
13
  var _useTreeViewIcons = require("./useTreeViewIcons");
14
- const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewId.useTreeViewId, _useTreeViewNodes.useTreeViewNodes, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewIcons.useTreeViewIcons];
14
+ const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewId.useTreeViewId, _useTreeViewItems.useTreeViewItems, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewIcons.useTreeViewIcons];
15
15
 
16
16
  // We can't infer this type from the plugin, otherwise we would lose the generics.