@mui/x-tree-view 7.0.0-beta.6 → 7.0.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 (152) hide show
  1. package/CHANGELOG.md +311 -12
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.js +34 -36
  4. package/RichTreeView/RichTreeView.types.d.ts +3 -2
  5. package/SimpleTreeView/SimpleTreeView.js +25 -26
  6. package/TreeItem/TreeItem.js +94 -82
  7. package/TreeItem/TreeItem.types.d.ts +13 -11
  8. package/TreeItem/TreeItemContent.d.ts +7 -7
  9. package/TreeItem/TreeItemContent.js +10 -10
  10. package/TreeItem/useTreeItemState.d.ts +1 -1
  11. package/TreeItem/useTreeItemState.js +13 -13
  12. package/TreeItem2/TreeItem2.d.ts +18 -0
  13. package/TreeItem2/TreeItem2.js +300 -0
  14. package/TreeItem2/TreeItem2.types.d.ts +64 -0
  15. package/TreeItem2/TreeItem2.types.js +1 -0
  16. package/TreeItem2/index.d.ts +2 -0
  17. package/TreeItem2/index.js +1 -0
  18. package/TreeItem2/package.json +6 -0
  19. package/TreeItem2Icon/TreeItem2Icon.d.ts +7 -0
  20. package/TreeItem2Icon/TreeItem2Icon.js +67 -0
  21. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +40 -0
  22. package/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  23. package/TreeItem2Icon/index.d.ts +2 -0
  24. package/TreeItem2Icon/index.js +1 -0
  25. package/TreeItem2Icon/package.json +6 -0
  26. package/TreeItem2Provider/TreeItem2Provider.d.ts +7 -0
  27. package/TreeItem2Provider/TreeItem2Provider.js +24 -0
  28. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +6 -0
  29. package/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  30. package/TreeItem2Provider/index.d.ts +2 -0
  31. package/TreeItem2Provider/index.js +1 -0
  32. package/TreeItem2Provider/package.json +6 -0
  33. package/TreeView/TreeView.d.ts +1 -1
  34. package/TreeView/TreeView.js +23 -23
  35. package/hooks/index.d.ts +1 -0
  36. package/hooks/index.js +2 -1
  37. package/hooks/useTreeItem2Utils/index.d.ts +1 -0
  38. package/hooks/useTreeItem2Utils/index.js +1 -0
  39. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +15 -0
  40. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  41. package/index.d.ts +5 -1
  42. package/index.js +9 -2
  43. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  44. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  45. package/internals/hooks/useInstanceEventHandler.js +5 -10
  46. package/internals/hooks/useLazyRef.d.ts +1 -2
  47. package/internals/hooks/useLazyRef.js +1 -11
  48. package/internals/hooks/useOnMount.d.ts +1 -2
  49. package/internals/hooks/useOnMount.js +1 -7
  50. package/internals/hooks/useTimeout.d.ts +1 -11
  51. package/internals/hooks/useTimeout.js +1 -36
  52. package/internals/models/plugin.d.ts +19 -16
  53. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +31 -38
  54. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +14 -14
  55. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +67 -51
  56. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +9 -8
  57. package/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  58. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +1 -1
  59. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -31
  60. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +2 -2
  61. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +75 -80
  62. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +4 -1
  63. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +26 -31
  64. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +11 -11
  65. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +47 -50
  66. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -15
  67. package/internals/useTreeView/useTreeView.js +28 -27
  68. package/internals/useTreeView/useTreeView.utils.d.ts +2 -2
  69. package/internals/useTreeView/useTreeView.utils.js +22 -22
  70. package/internals/utils/extractPluginParamsFromProps.js +2 -2
  71. package/internals/utils/utils.js +1 -0
  72. package/modern/RichTreeView/RichTreeView.js +29 -29
  73. package/modern/SimpleTreeView/SimpleTreeView.js +23 -23
  74. package/modern/TreeItem/TreeItem.js +83 -70
  75. package/modern/TreeItem/TreeItemContent.js +10 -10
  76. package/modern/TreeItem/useTreeItemState.js +13 -13
  77. package/modern/TreeItem2/TreeItem2.js +300 -0
  78. package/modern/TreeItem2/TreeItem2.types.js +1 -0
  79. package/modern/TreeItem2/index.js +1 -0
  80. package/modern/TreeItem2Icon/TreeItem2Icon.js +67 -0
  81. package/modern/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  82. package/modern/TreeItem2Icon/index.js +1 -0
  83. package/modern/TreeItem2Provider/TreeItem2Provider.js +24 -0
  84. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  85. package/modern/TreeItem2Provider/index.js +1 -0
  86. package/modern/TreeView/TreeView.js +23 -23
  87. package/modern/hooks/index.js +2 -1
  88. package/modern/hooks/useTreeItem2Utils/index.js +1 -0
  89. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  90. package/modern/index.js +9 -2
  91. package/modern/internals/hooks/useLazyRef.js +1 -11
  92. package/modern/internals/hooks/useOnMount.js +1 -7
  93. package/modern/internals/hooks/useTimeout.js +1 -36
  94. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +29 -29
  95. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +65 -46
  96. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  97. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -30
  98. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +74 -77
  99. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -22
  100. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -43
  101. package/modern/internals/useTreeView/useTreeView.js +28 -27
  102. package/modern/internals/useTreeView/useTreeView.utils.js +22 -22
  103. package/modern/internals/utils/utils.js +1 -0
  104. package/modern/useTreeItem2/index.js +1 -0
  105. package/modern/useTreeItem2/useTreeItem2.js +146 -0
  106. package/modern/useTreeItem2/useTreeItem2.types.js +1 -0
  107. package/node/RichTreeView/RichTreeView.js +29 -29
  108. package/node/SimpleTreeView/SimpleTreeView.js +23 -23
  109. package/node/TreeItem/TreeItem.js +83 -70
  110. package/node/TreeItem/TreeItemContent.js +10 -10
  111. package/node/TreeItem/useTreeItemState.js +13 -13
  112. package/node/TreeItem2/TreeItem2.js +308 -0
  113. package/node/TreeItem2/TreeItem2.types.js +5 -0
  114. package/node/TreeItem2/index.js +42 -0
  115. package/node/TreeItem2Icon/TreeItem2Icon.js +75 -0
  116. package/node/TreeItem2Icon/TreeItem2Icon.types.js +5 -0
  117. package/node/TreeItem2Icon/index.js +12 -0
  118. package/node/TreeItem2Provider/TreeItem2Provider.js +30 -0
  119. package/node/TreeItem2Provider/TreeItem2Provider.types.js +5 -0
  120. package/node/TreeItem2Provider/index.js +12 -0
  121. package/node/TreeView/TreeView.js +23 -23
  122. package/node/hooks/index.js +8 -1
  123. package/node/hooks/useTreeItem2Utils/index.js +12 -0
  124. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +68 -0
  125. package/node/index.js +61 -13
  126. package/node/internals/hooks/useLazyRef.js +7 -13
  127. package/node/internals/hooks/useOnMount.js +8 -10
  128. package/node/internals/hooks/useTimeout.js +7 -37
  129. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +29 -29
  130. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +65 -46
  131. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  132. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -30
  133. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +74 -77
  134. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -22
  135. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -43
  136. package/node/internals/useTreeView/useTreeView.js +28 -27
  137. package/node/internals/useTreeView/useTreeView.utils.js +22 -22
  138. package/node/internals/utils/utils.js +1 -0
  139. package/node/useTreeItem2/index.js +12 -0
  140. package/node/useTreeItem2/useTreeItem2.js +154 -0
  141. package/node/useTreeItem2/useTreeItem2.types.js +5 -0
  142. package/package.json +5 -5
  143. package/themeAugmentation/components.d.ts +5 -0
  144. package/themeAugmentation/overrides.d.ts +1 -0
  145. package/themeAugmentation/props.d.ts +2 -0
  146. package/useTreeItem2/index.d.ts +2 -0
  147. package/useTreeItem2/index.js +1 -0
  148. package/useTreeItem2/package.json +6 -0
  149. package/useTreeItem2/useTreeItem2.d.ts +2 -0
  150. package/useTreeItem2/useTreeItem2.js +146 -0
  151. package/useTreeItem2/useTreeItem2.types.d.ts +115 -0
  152. package/useTreeItem2/useTreeItem2.types.js +1 -0
@@ -31,7 +31,7 @@ export const SimpleTreeViewRoot = styled('ul', {
31
31
  outline: 0
32
32
  });
33
33
  const EMPTY_ITEMS = [];
34
- const itemsPropWarning = 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/']);
34
+ const itemsPropWarning = 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/']);
35
35
 
36
36
  /**
37
37
  *
@@ -95,7 +95,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
95
95
  */
96
96
  apiRef: PropTypes.shape({
97
97
  current: PropTypes.shape({
98
- focusNode: PropTypes.func.isRequired,
98
+ focusItem: PropTypes.func.isRequired,
99
99
  getItem: PropTypes.func.isRequired
100
100
  })
101
101
  }),
@@ -109,17 +109,17 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
109
109
  classes: PropTypes.object,
110
110
  className: PropTypes.string,
111
111
  /**
112
- * Expanded node ids.
112
+ * Expanded item ids.
113
113
  * Used when the item's expansion is not controlled.
114
114
  * @default []
115
115
  */
116
- defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
116
+ defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
117
117
  /**
118
- * Selected node ids. (Uncontrolled)
118
+ * Selected item ids. (Uncontrolled)
119
119
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
120
120
  * @default []
121
121
  */
122
- defaultSelectedNodes: PropTypes.any,
122
+ defaultSelectedItems: PropTypes.any,
123
123
  /**
124
124
  * If `true`, will allow focus on disabled items.
125
125
  * @default false
@@ -131,10 +131,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
131
131
  */
132
132
  disableSelection: PropTypes.bool,
133
133
  /**
134
- * Expanded node ids.
134
+ * Expanded item ids.
135
135
  * Used when the item's expansion is controlled.
136
136
  */
137
- expandedNodes: PropTypes.arrayOf(PropTypes.string),
137
+ expandedItems: PropTypes.arrayOf(PropTypes.string),
138
138
  /**
139
139
  * This prop is used to help implement the accessibility logic.
140
140
  * If you don't provide this prop. It falls back to a randomly generated id.
@@ -148,42 +148,42 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
148
148
  /**
149
149
  * Callback fired when tree items are expanded/collapsed.
150
150
  * @param {React.SyntheticEvent} event The event source of the callback.
151
- * @param {array} nodeIds The ids of the expanded nodes.
151
+ * @param {array} itemIds The ids of the expanded items.
152
152
  */
153
- onExpandedNodesChange: PropTypes.func,
153
+ onExpandedItemsChange: PropTypes.func,
154
154
  /**
155
155
  * Callback fired when a tree item is expanded or collapsed.
156
156
  * @param {React.SyntheticEvent} event The event source of the callback.
157
- * @param {array} nodeId The nodeId of the modified node.
158
- * @param {array} isExpanded `true` if the node has just been expanded, `false` if it has just been collapsed.
157
+ * @param {array} itemId The itemId of the modified item.
158
+ * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
159
159
  */
160
- onNodeExpansionToggle: PropTypes.func,
160
+ onItemExpansionToggle: PropTypes.func,
161
161
  /**
162
162
  * Callback fired when tree items are focused.
163
163
  * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
164
- * @param {string} nodeId The id of the node focused.
165
- * @param {string} value of the focused node.
164
+ * @param {string} itemId The id of the focused item.
165
+ * @param {string} value of the focused item.
166
166
  */
167
- onNodeFocus: PropTypes.func,
167
+ onItemFocus: PropTypes.func,
168
168
  /**
169
169
  * Callback fired when a tree item is selected or deselected.
170
170
  * @param {React.SyntheticEvent} event The event source of the callback.
171
- * @param {array} nodeId The nodeId of the modified node.
172
- * @param {array} isSelected `true` if the node has just been selected, `false` if it has just been deselected.
171
+ * @param {array} itemId The itemId of the modified item.
172
+ * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
173
173
  */
174
- onNodeSelectionToggle: PropTypes.func,
174
+ onItemSelectionToggle: PropTypes.func,
175
175
  /**
176
176
  * Callback fired when tree items are selected/deselected.
177
177
  * @param {React.SyntheticEvent} event The event source of the callback
178
- * @param {string[] | string} nodeIds The ids of the selected nodes.
178
+ * @param {string[] | string} itemIds The ids of the selected items.
179
179
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
180
180
  */
181
- onSelectedNodesChange: PropTypes.func,
181
+ onSelectedItemsChange: PropTypes.func,
182
182
  /**
183
- * Selected node ids. (Controlled)
183
+ * Selected item ids. (Controlled)
184
184
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
185
185
  */
186
- selectedNodes: PropTypes.any,
186
+ selectedItems: PropTypes.any,
187
187
  /**
188
188
  * The props used for each component slot.
189
189
  */
@@ -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"];
@@ -9,6 +9,7 @@ import PropTypes from 'prop-types';
9
9
  import clsx from 'clsx';
10
10
  import Collapse from '@mui/material/Collapse';
11
11
  import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
12
+ import useForkRef from '@mui/utils/useForkRef';
12
13
  import { alpha, styled, useThemeProps } from '@mui/material/styles';
13
14
  import unsupportedProp from '@mui/utils/unsupportedProp';
14
15
  import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
@@ -17,6 +18,7 @@ import { TreeItemContent } from './TreeItemContent';
17
18
  import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
18
19
  import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
19
20
  import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
21
+ import { TreeItem2Provider } from '../TreeItem2Provider';
20
22
  import { jsx as _jsx } from "react/jsx-runtime";
21
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
22
24
  const useUtilityClasses = ownerState => {
@@ -144,18 +146,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
144
146
  disabledItemsFocusable,
145
147
  instance
146
148
  } = useTreeViewContext();
147
- const inPropsWithTheme = useThemeProps({
149
+ const props = useThemeProps({
148
150
  props: inProps,
149
151
  name: 'MuiTreeItem'
150
152
  });
151
- const {
152
- props,
153
- ref,
154
- wrapItem
155
- } = runItemPlugins({
156
- props: inPropsWithTheme,
157
- ref: inRef
158
- });
159
153
  const {
160
154
  children,
161
155
  className,
@@ -163,13 +157,21 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
163
157
  slotProps: inSlotProps,
164
158
  ContentComponent = TreeItemContent,
165
159
  ContentProps,
166
- nodeId,
160
+ itemId,
167
161
  id,
168
162
  label,
169
163
  onClick,
170
- onMouseDown
164
+ onMouseDown,
165
+ onBlur,
166
+ onKeyDown
171
167
  } = props,
172
168
  other = _objectWithoutPropertiesLoose(props, _excluded);
169
+ const {
170
+ contentRef,
171
+ rootRef
172
+ } = runItemPlugins(props);
173
+ const handleRootRef = useForkRef(inRef, rootRef);
174
+ const handleContentRef = useForkRef(ContentProps?.ref, contentRef);
173
175
  const slots = {
174
176
  expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,
175
177
  collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,
@@ -184,10 +186,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
184
186
  return Boolean(reactChildren);
185
187
  };
186
188
  const expandable = isExpandable(children);
187
- const expanded = instance.isNodeExpanded(nodeId);
188
- const focused = instance.isNodeFocused(nodeId);
189
- const selected = instance.isNodeSelected(nodeId);
190
- const disabled = instance.isNodeDisabled(nodeId);
189
+ const expanded = instance.isNodeExpanded(itemId);
190
+ const focused = instance.isNodeFocused(itemId);
191
+ const selected = instance.isNodeSelected(itemId);
192
+ const disabled = instance.isNodeDisabled(itemId);
191
193
  const ownerState = _extends({}, props, {
192
194
  expanded,
193
195
  focused,
@@ -249,62 +251,73 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
249
251
  /* single-selection trees unset aria-selected on un-selected items.
250
252
  *
251
253
  * If the tree does not support multiple selection, aria-selected
252
- * 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.
253
255
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
254
256
  */
255
257
  ariaSelected = true;
256
258
  }
257
259
  function handleFocus(event) {
258
- // DOM focus stays on the tree which manages focus with aria-activedescendant
259
- if (event.target === event.currentTarget) {
260
- instance.focusRoot();
261
- }
262
260
  const canBeFocused = !disabled || disabledItemsFocusable;
263
261
  if (!focused && canBeFocused && event.currentTarget === event.target) {
264
- instance.focusNode(event, nodeId);
262
+ instance.focusItem(event, itemId);
265
263
  }
266
264
  }
267
- const idAttribute = instance.getTreeItemId(nodeId, id);
268
- const item = /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
269
- className: clsx(classes.root, className),
270
- role: "treeitem",
271
- "aria-expanded": expandable ? expanded : undefined,
272
- "aria-selected": ariaSelected,
273
- "aria-disabled": disabled || undefined,
274
- id: idAttribute,
275
- tabIndex: -1
276
- }, other, {
277
- ownerState: ownerState,
278
- onFocus: handleFocus,
279
- ref: ref,
280
- children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
281
- as: ContentComponent,
282
- classes: {
283
- root: classes.content,
284
- expanded: classes.expanded,
285
- selected: classes.selected,
286
- focused: classes.focused,
287
- disabled: classes.disabled,
288
- iconContainer: classes.iconContainer,
289
- label: classes.label
290
- },
291
- label: label,
292
- nodeId: nodeId,
293
- onClick: onClick,
294
- onMouseDown: onMouseDown,
295
- icon: icon,
296
- expansionIcon: expansionIcon,
297
- displayIcon: displayIcon,
298
- ownerState: ownerState
299
- }, ContentProps)), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
300
- as: GroupTransition
301
- }, groupTransitionProps, {
302
- children: children
303
- }))]
304
- }));
305
- return wrapItem(item);
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;
275
+ return /*#__PURE__*/_jsx(TreeItem2Provider, {
276
+ itemId: itemId,
277
+ children: /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
278
+ className: clsx(classes.root, className),
279
+ role: "treeitem",
280
+ "aria-expanded": expandable ? expanded : undefined,
281
+ "aria-selected": ariaSelected,
282
+ "aria-disabled": disabled || undefined,
283
+ id: idAttribute,
284
+ tabIndex: tabIndex
285
+ }, other, {
286
+ ownerState: ownerState,
287
+ onFocus: handleFocus,
288
+ onBlur: handleBlur,
289
+ onKeyDown: handleKeyDown,
290
+ ref: handleRootRef,
291
+ children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
292
+ as: ContentComponent,
293
+ classes: {
294
+ root: classes.content,
295
+ expanded: classes.expanded,
296
+ selected: classes.selected,
297
+ focused: classes.focused,
298
+ disabled: classes.disabled,
299
+ iconContainer: classes.iconContainer,
300
+ label: classes.label
301
+ },
302
+ label: label,
303
+ itemId: itemId,
304
+ onClick: onClick,
305
+ onMouseDown: onMouseDown,
306
+ icon: icon,
307
+ expansionIcon: expansionIcon,
308
+ displayIcon: displayIcon,
309
+ ownerState: ownerState
310
+ }, ContentProps, {
311
+ ref: handleContentRef
312
+ })), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
313
+ as: GroupTransition
314
+ }, groupTransitionProps, {
315
+ children: children
316
+ }))]
317
+ }))
318
+ });
306
319
  });
307
- TreeItem.propTypes = {
320
+ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
308
321
  // ----------------------------- Warning --------------------------------
309
322
  // | These PropTypes are generated from the TypeScript type definitions |
310
323
  // | To update them edit the TypeScript types and run "yarn proptypes" |
@@ -319,7 +332,7 @@ TreeItem.propTypes = {
319
332
  classes: PropTypes.object,
320
333
  className: PropTypes.string,
321
334
  /**
322
- * The component used for the content node.
335
+ * The component used to render the content of the item.
323
336
  * @default TreeItemContent
324
337
  */
325
338
  ContentComponent: elementTypeAcceptingRef,
@@ -328,21 +341,21 @@ TreeItem.propTypes = {
328
341
  */
329
342
  ContentProps: PropTypes.object,
330
343
  /**
331
- * If `true`, the node is disabled.
344
+ * If `true`, the item is disabled.
332
345
  * @default false
333
346
  */
334
347
  disabled: PropTypes.bool,
335
348
  /**
336
- * The tree node label.
349
+ * The id of the item.
337
350
  */
338
- label: PropTypes.node,
351
+ itemId: PropTypes.string.isRequired,
339
352
  /**
340
- * The id of the node.
353
+ * The tree item label.
341
354
  */
342
- nodeId: PropTypes.string.isRequired,
355
+ label: PropTypes.node,
343
356
  /**
344
357
  * This prop isn't supported.
345
- * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
358
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
346
359
  */
347
360
  onFocus: unsupportedProp,
348
361
  /**
@@ -359,4 +372,4 @@ TreeItem.propTypes = {
359
372
  * The system prop that allows defining system overrides as well as additional CSS styles.
360
373
  */
361
374
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
362
- };
375
+ } : void 0;
@@ -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 };
@@ -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.isNodeExpandable(itemId);
10
+ const expanded = instance.isNodeExpanded(itemId);
11
+ const focused = instance.isNodeFocused(itemId);
12
+ const selected = instance.isNodeSelected(itemId);
13
+ const disabled = instance.isNodeDisabled(itemId);
14
14
  const handleExpansion = event => {
15
15
  if (!disabled) {
16
16
  if (!focused) {
17
- instance.focusNode(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.isNodeExpanded(itemId))) {
23
+ instance.toggleNodeExpansion(event, itemId);
24
24
  }
25
25
  }
26
26
  };
27
27
  const handleSelection = event => {
28
28
  if (!disabled) {
29
29
  if (!focused) {
30
- instance.focusNode(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.selectNode(event, itemId, true);
40
40
  }
41
41
  } else {
42
- instance.selectNode(event, nodeId);
42
+ instance.selectNode(event, itemId);
43
43
  }
44
44
  }
45
45
  };