@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
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown"],
3
+ const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "itemId", "id", "label", "onClick", "onMouseDown", "onFocus", "onBlur", "onKeyDown"],
4
4
  _excluded2 = ["ownerState"],
5
5
  _excluded3 = ["ownerState"],
6
6
  _excluded4 = ["ownerState"];
@@ -137,7 +137,6 @@ const TreeItemGroup = styled(Collapse, {
137
137
  * - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
138
138
  */
139
139
  export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, inRef) {
140
- var _ref, _inSlots$expandIcon, _ref2, _inSlots$collapseIcon, _inSlots$endIcon, _slots$groupTransitio;
141
140
  const {
142
141
  icons: contextIcons,
143
142
  runItemPlugins,
@@ -158,11 +157,13 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
158
157
  slotProps: inSlotProps,
159
158
  ContentComponent = TreeItemContent,
160
159
  ContentProps,
161
- nodeId,
160
+ itemId,
162
161
  id,
163
162
  label,
164
163
  onClick,
165
- onMouseDown
164
+ onMouseDown,
165
+ onBlur,
166
+ onKeyDown
166
167
  } = props,
167
168
  other = _objectWithoutPropertiesLoose(props, _excluded);
168
169
  const {
@@ -170,13 +171,13 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
170
171
  rootRef
171
172
  } = runItemPlugins(props);
172
173
  const handleRootRef = useForkRef(inRef, rootRef);
173
- const handleContentRef = useForkRef(ContentProps == null ? void 0 : ContentProps.ref, contentRef);
174
+ const handleContentRef = useForkRef(ContentProps?.ref, contentRef);
174
175
  const slots = {
175
- expandIcon: (_ref = (_inSlots$expandIcon = inSlots == null ? void 0 : inSlots.expandIcon) != null ? _inSlots$expandIcon : contextIcons.slots.expandIcon) != null ? _ref : TreeViewExpandIcon,
176
- collapseIcon: (_ref2 = (_inSlots$collapseIcon = inSlots == null ? void 0 : inSlots.collapseIcon) != null ? _inSlots$collapseIcon : contextIcons.slots.collapseIcon) != null ? _ref2 : TreeViewCollapseIcon,
177
- endIcon: (_inSlots$endIcon = inSlots == null ? void 0 : inSlots.endIcon) != null ? _inSlots$endIcon : contextIcons.slots.endIcon,
178
- icon: inSlots == null ? void 0 : inSlots.icon,
179
- groupTransition: inSlots == null ? void 0 : inSlots.groupTransition
176
+ expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,
177
+ collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,
178
+ endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,
179
+ icon: inSlots?.icon,
180
+ groupTransition: inSlots?.groupTransition
180
181
  };
181
182
  const isExpandable = reactChildren => {
182
183
  if (Array.isArray(reactChildren)) {
@@ -185,10 +186,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
185
186
  return Boolean(reactChildren);
186
187
  };
187
188
  const expandable = isExpandable(children);
188
- const expanded = instance.isNodeExpanded(nodeId);
189
- const focused = instance.isNodeFocused(nodeId);
190
- const selected = instance.isNodeSelected(nodeId);
191
- const disabled = instance.isNodeDisabled(nodeId);
189
+ const expanded = instance.isItemExpanded(itemId);
190
+ const focused = instance.isItemFocused(itemId);
191
+ const selected = instance.isItemSelected(itemId);
192
+ const disabled = instance.isItemDisabled(itemId);
192
193
  const ownerState = _extends({}, props, {
193
194
  expanded,
194
195
  focused,
@@ -196,11 +197,11 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
196
197
  disabled
197
198
  });
198
199
  const classes = useUtilityClasses(ownerState);
199
- const GroupTransition = (_slots$groupTransitio = slots.groupTransition) != null ? _slots$groupTransitio : undefined;
200
+ const GroupTransition = slots.groupTransition ?? undefined;
200
201
  const groupTransitionProps = useSlotProps({
201
202
  elementType: GroupTransition,
202
203
  ownerState: {},
203
- externalSlotProps: inSlotProps == null ? void 0 : inSlotProps.groupTransition,
204
+ externalSlotProps: inSlotProps?.groupTransition,
204
205
  additionalProps: {
205
206
  unmountOnExit: true,
206
207
  in: expanded,
@@ -215,9 +216,9 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
215
216
  ownerState: {},
216
217
  externalSlotProps: tempOwnerState => {
217
218
  if (expanded) {
218
- return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.collapseIcon, tempOwnerState));
219
+ return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps?.collapseIcon, tempOwnerState));
219
220
  }
220
- return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.expandIcon, tempOwnerState));
221
+ return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps?.expandIcon, tempOwnerState));
221
222
  }
222
223
  }),
223
224
  expansionIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
@@ -230,7 +231,7 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
230
231
  if (expandable) {
231
232
  return {};
232
233
  }
233
- return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.endIcon, tempOwnerState));
234
+ return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps?.endIcon, tempOwnerState));
234
235
  }
235
236
  }),
236
237
  displayIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
@@ -239,7 +240,7 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
239
240
  const _useSlotProps3 = useSlotProps({
240
241
  elementType: Icon,
241
242
  ownerState: {},
242
- externalSlotProps: inSlotProps == null ? void 0 : inSlotProps.icon
243
+ externalSlotProps: inSlotProps?.icon
243
244
  }),
244
245
  iconProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded4);
245
246
  const icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;
@@ -250,24 +251,29 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
250
251
  /* single-selection trees unset aria-selected on un-selected items.
251
252
  *
252
253
  * If the tree does not support multiple selection, aria-selected
253
- * is set to true for the selected node and it is not present on any other node in the tree.
254
+ * is set to true for the selected item and it is not present on any other item in the tree.
254
255
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
255
256
  */
256
257
  ariaSelected = true;
257
258
  }
258
259
  function handleFocus(event) {
259
- // DOM focus stays on the tree which manages focus with aria-activedescendant
260
- if (event.target === event.currentTarget) {
261
- instance.focusRoot();
262
- }
263
260
  const canBeFocused = !disabled || disabledItemsFocusable;
264
261
  if (!focused && canBeFocused && event.currentTarget === event.target) {
265
- instance.focusItem(event, nodeId);
262
+ instance.focusItem(event, itemId);
266
263
  }
267
264
  }
268
- const idAttribute = instance.getTreeItemId(nodeId, id);
265
+ function handleBlur(event) {
266
+ onBlur?.(event);
267
+ instance.removeFocusedItem();
268
+ }
269
+ const handleKeyDown = event => {
270
+ onKeyDown?.(event);
271
+ instance.handleItemKeyDown(event, itemId);
272
+ };
273
+ const idAttribute = instance.getTreeItemId(itemId, id);
274
+ const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
269
275
  return /*#__PURE__*/_jsx(TreeItem2Provider, {
270
- nodeId: nodeId,
276
+ itemId: itemId,
271
277
  children: /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
272
278
  className: clsx(classes.root, className),
273
279
  role: "treeitem",
@@ -275,10 +281,12 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
275
281
  "aria-selected": ariaSelected,
276
282
  "aria-disabled": disabled || undefined,
277
283
  id: idAttribute,
278
- tabIndex: -1
284
+ tabIndex: tabIndex
279
285
  }, other, {
280
286
  ownerState: ownerState,
281
287
  onFocus: handleFocus,
288
+ onBlur: handleBlur,
289
+ onKeyDown: handleKeyDown,
282
290
  ref: handleRootRef,
283
291
  children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
284
292
  as: ContentComponent,
@@ -292,7 +300,7 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
292
300
  label: classes.label
293
301
  },
294
302
  label: label,
295
- nodeId: nodeId,
303
+ itemId: itemId,
296
304
  onClick: onClick,
297
305
  onMouseDown: onMouseDown,
298
306
  icon: icon,
@@ -324,7 +332,7 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
324
332
  classes: PropTypes.object,
325
333
  className: PropTypes.string,
326
334
  /**
327
- * The component used for the content node.
335
+ * The component used to render the content of the item.
328
336
  * @default TreeItemContent
329
337
  */
330
338
  ContentComponent: elementTypeAcceptingRef,
@@ -338,13 +346,13 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
338
346
  */
339
347
  disabled: PropTypes.bool,
340
348
  /**
341
- * The tree item label.
349
+ * The id of the item.
342
350
  */
343
- label: PropTypes.node,
351
+ itemId: PropTypes.string.isRequired,
344
352
  /**
345
- * The id of the node.
353
+ * The tree item label.
346
354
  */
347
- nodeId: PropTypes.string.isRequired,
355
+ label: PropTypes.node,
348
356
  /**
349
357
  * This prop isn't supported.
350
358
  * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
@@ -58,7 +58,7 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>,
58
58
  */
59
59
  slotProps?: TreeItemSlotProps;
60
60
  /**
61
- * The component used for the content node.
61
+ * The component used to render the content of the item.
62
62
  * @default TreeItemContent
63
63
  */
64
64
  ContentComponent?: React.JSXElementConstructor<TreeItemContentProps>;
@@ -83,9 +83,9 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>,
83
83
  */
84
84
  label?: React.ReactNode;
85
85
  /**
86
- * The id of the node.
86
+ * The id of the item.
87
87
  */
88
- nodeId: TreeViewItemId;
88
+ itemId: TreeViewItemId;
89
89
  /**
90
90
  * The system prop that allows defining system overrides as well as additional CSS styles.
91
91
  */
@@ -15,29 +15,29 @@ export interface TreeItemContentProps extends React.HTMLAttributes<HTMLElement>
15
15
  focused: string;
16
16
  /** State class applied to the element when disabled. */
17
17
  disabled: string;
18
- /** Styles applied to the tree node icon and collapse/expand icon. */
18
+ /** Styles applied to the tree item icon and collapse/expand icon. */
19
19
  iconContainer: string;
20
20
  /** Styles applied to the label element. */
21
21
  label: string;
22
22
  };
23
23
  /**
24
- * The tree node label.
24
+ * The tree item label.
25
25
  */
26
26
  label?: React.ReactNode;
27
27
  /**
28
- * The id of the node.
28
+ * The id of the item.
29
29
  */
30
- nodeId: string;
30
+ itemId: string;
31
31
  /**
32
- * The icon to display next to the tree node's label.
32
+ * The icon to display next to the tree item's label.
33
33
  */
34
34
  icon?: React.ReactNode;
35
35
  /**
36
- * The icon to display next to the tree node's label. Either an expansion or collapse icon.
36
+ * The icon to display next to the tree item's label. Either an expansion or collapse icon.
37
37
  */
38
38
  expansionIcon?: React.ReactNode;
39
39
  /**
40
- * The icon to display next to the tree node's label. Either a parent or end icon.
40
+ * The icon to display next to the tree item's label. Either a parent or end icon.
41
41
  */
42
42
  displayIcon?: React.ReactNode;
43
43
  }
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "nodeId", "onClick", "onMouseDown"];
3
+ const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "itemId", "onClick", "onMouseDown"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -18,7 +18,7 @@ const TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(p
18
18
  expansionIcon,
19
19
  icon: iconProp,
20
20
  label,
21
- nodeId,
21
+ itemId,
22
22
  onClick,
23
23
  onMouseDown
24
24
  } = props,
@@ -31,7 +31,7 @@ const TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(p
31
31
  handleExpansion,
32
32
  handleSelection,
33
33
  preventSelection
34
- } = useTreeItemState(nodeId);
34
+ } = useTreeItemState(itemId);
35
35
  const icon = iconProp || expansionIcon || displayIcon;
36
36
  const handleMouseDown = event => {
37
37
  preventSelection(event);
@@ -75,24 +75,24 @@ process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
75
75
  classes: PropTypes.object.isRequired,
76
76
  className: PropTypes.string,
77
77
  /**
78
- * The icon to display next to the tree node's label. Either a parent or end icon.
78
+ * The icon to display next to the tree item's label. Either a parent or end icon.
79
79
  */
80
80
  displayIcon: PropTypes.node,
81
81
  /**
82
- * The icon to display next to the tree node's label. Either an expansion or collapse icon.
82
+ * The icon to display next to the tree item's label. Either an expansion or collapse icon.
83
83
  */
84
84
  expansionIcon: PropTypes.node,
85
85
  /**
86
- * The icon to display next to the tree node's label.
86
+ * The icon to display next to the tree item's label.
87
87
  */
88
88
  icon: PropTypes.node,
89
89
  /**
90
- * The tree node label.
90
+ * The id of the item.
91
91
  */
92
- label: PropTypes.node,
92
+ itemId: PropTypes.string.isRequired,
93
93
  /**
94
- * The id of the node.
94
+ * The tree item label.
95
95
  */
96
- nodeId: PropTypes.string.isRequired
96
+ label: PropTypes.node
97
97
  } : void 0;
98
98
  export { TreeItemContent };
@@ -13,7 +13,7 @@ export interface TreeItemClasses {
13
13
  focused: string;
14
14
  /** State class applied to the element when disabled. */
15
15
  disabled: string;
16
- /** Styles applied to the tree node icon. */
16
+ /** Styles applied to the tree item icon. */
17
17
  iconContainer: string;
18
18
  /** Styles applied to the label element. */
19
19
  label: string;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- export declare function useTreeItemState(nodeId: string): {
2
+ export declare function useTreeItemState(itemId: string): {
3
3
  disabled: boolean;
4
4
  expanded: boolean;
5
5
  selected: boolean;
@@ -1,45 +1,45 @@
1
1
  import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
2
- export function useTreeItemState(nodeId) {
2
+ export function useTreeItemState(itemId) {
3
3
  const {
4
4
  instance,
5
5
  selection: {
6
6
  multiSelect
7
7
  }
8
8
  } = useTreeViewContext();
9
- const expandable = instance.isNodeExpandable(nodeId);
10
- const expanded = instance.isNodeExpanded(nodeId);
11
- const focused = instance.isNodeFocused(nodeId);
12
- const selected = instance.isNodeSelected(nodeId);
13
- const disabled = instance.isNodeDisabled(nodeId);
9
+ const expandable = instance.isItemExpandable(itemId);
10
+ const expanded = instance.isItemExpanded(itemId);
11
+ const focused = instance.isItemFocused(itemId);
12
+ const selected = instance.isItemSelected(itemId);
13
+ const disabled = instance.isItemDisabled(itemId);
14
14
  const handleExpansion = event => {
15
15
  if (!disabled) {
16
16
  if (!focused) {
17
- instance.focusItem(event, nodeId);
17
+ instance.focusItem(event, itemId);
18
18
  }
19
19
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
20
20
 
21
21
  // If already expanded and trying to toggle selection don't close
22
- if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
23
- instance.toggleNodeExpansion(event, nodeId);
22
+ if (expandable && !(multiple && instance.isItemExpanded(itemId))) {
23
+ instance.toggleItemExpansion(event, itemId);
24
24
  }
25
25
  }
26
26
  };
27
27
  const handleSelection = event => {
28
28
  if (!disabled) {
29
29
  if (!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
  if (multiple) {
34
34
  if (event.shiftKey) {
35
35
  instance.selectRange(event, {
36
- end: nodeId
36
+ end: itemId
37
37
  });
38
38
  } else {
39
- instance.selectNode(event, nodeId, true);
39
+ instance.selectItem(event, itemId, true);
40
40
  }
41
41
  } else {
42
- instance.selectNode(event, nodeId);
42
+ instance.selectItem(event, itemId);
43
43
  }
44
44
  }
45
45
  };
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["id", "nodeId", "label", "disabled", "children", "slots", "slotProps"];
3
+ const _excluded = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -159,14 +159,13 @@ const useUtilityClasses = ownerState => {
159
159
  * - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
160
160
  */
161
161
  export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProps, forwardedRef) {
162
- var _slots$root, _slots$content, _slots$iconContainer, _slots$label, _slots$groupTransitio;
163
162
  const props = useThemeProps({
164
163
  props: inProps,
165
164
  name: 'MuiTreeItem2'
166
165
  });
167
166
  const {
168
167
  id,
169
- nodeId,
168
+ itemId,
170
169
  label,
171
170
  disabled,
172
171
  children,
@@ -183,14 +182,14 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
183
182
  status
184
183
  } = useTreeItem2({
185
184
  id,
186
- nodeId,
185
+ itemId,
187
186
  children,
188
187
  label,
189
188
  disabled
190
189
  });
191
190
  const ownerState = _extends({}, props, status);
192
191
  const classes = useUtilityClasses(ownerState);
193
- const Root = (_slots$root = slots.root) != null ? _slots$root : TreeItem2Root;
192
+ const Root = slots.root ?? TreeItem2Root;
194
193
  const rootProps = useSlotProps({
195
194
  elementType: Root,
196
195
  getSlotProps: getRootProps,
@@ -202,7 +201,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
202
201
  ownerState: {},
203
202
  className: classes.root
204
203
  });
205
- const Content = (_slots$content = slots.content) != null ? _slots$content : TreeItem2Content;
204
+ const Content = slots.content ?? TreeItem2Content;
206
205
  const contentProps = useSlotProps({
207
206
  elementType: Content,
208
207
  getSlotProps: getContentProps,
@@ -210,7 +209,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
210
209
  ownerState: {},
211
210
  className: clsx(classes.content, status.expanded && classes.expanded, status.selected && classes.selected, status.focused && classes.focused, status.disabled && classes.disabled)
212
211
  });
213
- const IconContainer = (_slots$iconContainer = slots.iconContainer) != null ? _slots$iconContainer : TreeItem2IconContainer;
212
+ const IconContainer = slots.iconContainer ?? TreeItem2IconContainer;
214
213
  const iconContainerProps = useSlotProps({
215
214
  elementType: IconContainer,
216
215
  getSlotProps: getIconContainerProps,
@@ -218,7 +217,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
218
217
  ownerState: {},
219
218
  className: classes.iconContainer
220
219
  });
221
- const Label = (_slots$label = slots.label) != null ? _slots$label : TreeItem2Label;
220
+ const Label = slots.label ?? TreeItem2Label;
222
221
  const labelProps = useSlotProps({
223
222
  elementType: Label,
224
223
  getSlotProps: getLabelProps,
@@ -226,7 +225,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
226
225
  ownerState: {},
227
226
  className: classes.label
228
227
  });
229
- const GroupTransition = (_slots$groupTransitio = slots.groupTransition) != null ? _slots$groupTransitio : undefined;
228
+ const GroupTransition = slots.groupTransition ?? undefined;
230
229
  const groupTransitionProps = useSlotProps({
231
230
  elementType: GroupTransition,
232
231
  getSlotProps: getGroupTransitionProps,
@@ -235,7 +234,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
235
234
  className: classes.groupTransition
236
235
  });
237
236
  return /*#__PURE__*/_jsx(TreeItem2Provider, {
238
- nodeId: nodeId,
237
+ itemId: itemId,
239
238
  children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
240
239
  children: [/*#__PURE__*/_jsxs(Content, _extends({}, contentProps, {
241
240
  children: [/*#__PURE__*/_jsx(IconContainer, _extends({}, iconContainerProps, {
@@ -266,23 +265,23 @@ process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
266
265
  classes: PropTypes.object,
267
266
  className: PropTypes.string,
268
267
  /**
269
- * If `true`, the node is disabled.
268
+ * If `true`, the item is disabled.
270
269
  * @default false
271
270
  */
272
271
  disabled: PropTypes.bool,
273
272
  /**
274
- * The id attribute of the node. If not provided, it will be generated.
273
+ * The id attribute of the item. If not provided, it will be generated.
275
274
  */
276
275
  id: PropTypes.string,
277
276
  /**
278
- * The label of the node.
277
+ * The id of the item.
278
+ * Must be unique.
279
279
  */
280
- label: PropTypes.node,
280
+ itemId: PropTypes.string.isRequired,
281
281
  /**
282
- * The id of the node.
283
- * Must be unique.
282
+ * The label of the item.
284
283
  */
285
- nodeId: PropTypes.string.isRequired,
284
+ label: PropTypes.node,
286
285
  /**
287
286
  * This prop isn't supported.
288
287
  * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
@@ -6,7 +6,6 @@ import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewCon
6
6
  import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  function TreeItem2Icon(props) {
9
- var _context$icons$slots$, _context$icons$slots$2, _slots$iconName;
10
9
  const {
11
10
  slots,
12
11
  slotProps,
@@ -14,12 +13,12 @@ function TreeItem2Icon(props) {
14
13
  } = props;
15
14
  const context = useTreeViewContext();
16
15
  const contextIcons = _extends({}, context.icons.slots, {
17
- expandIcon: (_context$icons$slots$ = context.icons.slots.expandIcon) != null ? _context$icons$slots$ : TreeViewExpandIcon,
18
- collapseIcon: (_context$icons$slots$2 = context.icons.slots.collapseIcon) != null ? _context$icons$slots$2 : TreeViewCollapseIcon
16
+ expandIcon: context.icons.slots.expandIcon ?? TreeViewExpandIcon,
17
+ collapseIcon: context.icons.slots.collapseIcon ?? TreeViewCollapseIcon
19
18
  });
20
19
  const contextIconProps = context.icons.slotProps;
21
20
  let iconName;
22
- if (slots != null && slots.icon) {
21
+ if (slots?.icon) {
23
22
  iconName = 'icon';
24
23
  } else if (status.expandable) {
25
24
  if (status.expanded) {
@@ -30,10 +29,10 @@ function TreeItem2Icon(props) {
30
29
  } else {
31
30
  iconName = 'endIcon';
32
31
  }
33
- const Icon = (_slots$iconName = slots == null ? void 0 : slots[iconName]) != null ? _slots$iconName : contextIcons[iconName];
32
+ const Icon = slots?.[iconName] ?? contextIcons[iconName];
34
33
  const iconProps = useSlotProps({
35
34
  elementType: Icon,
36
- externalSlotProps: tempOwnerState => _extends({}, resolveComponentProps(contextIconProps[iconName], tempOwnerState), resolveComponentProps(slotProps == null ? void 0 : slotProps[iconName], tempOwnerState)),
35
+ externalSlotProps: tempOwnerState => _extends({}, resolveComponentProps(contextIconProps[iconName], tempOwnerState), resolveComponentProps(slotProps?.[iconName], tempOwnerState)),
37
36
  // TODO: Add proper ownerState
38
37
  ownerState: {}
39
38
  });
@@ -3,19 +3,19 @@ import { SlotComponentProps } from '@mui/base/utils';
3
3
  import { UseTreeItem2Status } from '../useTreeItem2';
4
4
  export interface TreeItem2IconSlots {
5
5
  /**
6
- * The icon used to collapse the node.
6
+ * The icon used to collapse the item.
7
7
  */
8
8
  collapseIcon?: React.ElementType;
9
9
  /**
10
- * The icon used to expand the node.
10
+ * The icon used to expand the item.
11
11
  */
12
12
  expandIcon?: React.ElementType;
13
13
  /**
14
- * The icon displayed next to an end node.
14
+ * The icon displayed next to an end item.
15
15
  */
16
16
  endIcon?: React.ElementType;
17
17
  /**
18
- * The icon to display next to the tree node's label.
18
+ * The icon to display next to the tree item's label.
19
19
  */
20
20
  icon?: React.ElementType;
21
21
  }
@@ -3,14 +3,14 @@ import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewCon
3
3
  function TreeItem2Provider(props) {
4
4
  const {
5
5
  children,
6
- nodeId
6
+ itemId
7
7
  } = props;
8
8
  const {
9
9
  wrapItem
10
10
  } = useTreeViewContext();
11
11
  return wrapItem({
12
12
  children,
13
- nodeId
13
+ itemId
14
14
  });
15
15
  }
16
16
  TreeItem2Provider.propTypes = {
@@ -19,6 +19,6 @@ TreeItem2Provider.propTypes = {
19
19
  // | To update them edit the TypeScript types and run "yarn proptypes" |
20
20
  // ----------------------------------------------------------------------
21
21
  children: PropTypes.node,
22
- nodeId: PropTypes.string.isRequired
22
+ itemId: PropTypes.string.isRequired
23
23
  };
24
24
  export { TreeItem2Provider };
@@ -2,5 +2,5 @@ import * as React from 'react';
2
2
  import { TreeViewItemId } from '../models';
3
3
  export interface TreeItem2ProviderProps {
4
4
  children: React.ReactNode;
5
- nodeId: TreeViewItemId;
5
+ itemId: TreeViewItemId;
6
6
  }
@@ -5,7 +5,7 @@ type TreeViewComponent = (<Multiple extends boolean | undefined = undefined>(pro
5
5
  };
6
6
  /**
7
7
  * This component has been deprecated in favor of the new `SimpleTreeView` component.
8
- * 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)
8
+ * 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)
9
9
  *
10
10
  * Demos:
11
11
  *
@@ -30,7 +30,7 @@ const warn = () => {
30
30
 
31
31
  /**
32
32
  * This component has been deprecated in favor of the new `SimpleTreeView` component.
33
- * 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)
33
+ * 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)
34
34
  *
35
35
  * Demos:
36
36
  *
@@ -8,8 +8,8 @@ interface UseTreeItem2UtilsReturnValue {
8
8
  interactions: UseTreeItem2Interactions;
9
9
  status: UseTreeItem2Status;
10
10
  }
11
- export declare const useTreeItem2Utils: ({ nodeId, children, }: {
12
- nodeId: string;
11
+ export declare const useTreeItem2Utils: ({ itemId, children, }: {
12
+ itemId: string;
13
13
  children: React.ReactNode;
14
14
  }) => UseTreeItem2UtilsReturnValue;
15
15
  export {};