@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
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
14
14
  var _utils = require("@mui/base/utils");
15
+ var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
15
16
  var _styles = require("@mui/material/styles");
16
17
  var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
17
18
  var _elementTypeAcceptingRef = _interopRequireDefault(require("@mui/utils/elementTypeAcceptingRef"));
@@ -20,8 +21,9 @@ var _TreeItemContent = require("./TreeItemContent");
20
21
  var _treeItemClasses = require("./treeItemClasses");
21
22
  var _useTreeViewContext = require("../internals/TreeViewProvider/useTreeViewContext");
22
23
  var _icons = require("../icons");
24
+ var _TreeItem2Provider = require("../TreeItem2Provider");
23
25
  var _jsxRuntime = require("react/jsx-runtime");
24
- 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"],
25
27
  _excluded2 = ["ownerState"],
26
28
  _excluded3 = ["ownerState"],
27
29
  _excluded4 = ["ownerState"];
@@ -152,18 +154,10 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
152
154
  disabledItemsFocusable,
153
155
  instance
154
156
  } = (0, _useTreeViewContext.useTreeViewContext)();
155
- const inPropsWithTheme = (0, _styles.useThemeProps)({
157
+ const props = (0, _styles.useThemeProps)({
156
158
  props: inProps,
157
159
  name: 'MuiTreeItem'
158
160
  });
159
- const {
160
- props,
161
- ref,
162
- wrapItem
163
- } = runItemPlugins({
164
- props: inPropsWithTheme,
165
- ref: inRef
166
- });
167
161
  const {
168
162
  children,
169
163
  className,
@@ -171,13 +165,21 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
171
165
  slotProps: inSlotProps,
172
166
  ContentComponent = _TreeItemContent.TreeItemContent,
173
167
  ContentProps,
174
- nodeId,
168
+ itemId,
175
169
  id,
176
170
  label,
177
171
  onClick,
178
- onMouseDown
172
+ onMouseDown,
173
+ onBlur,
174
+ onKeyDown
179
175
  } = props,
180
176
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
177
+ const {
178
+ contentRef,
179
+ rootRef
180
+ } = runItemPlugins(props);
181
+ const handleRootRef = (0, _useForkRef.default)(inRef, rootRef);
182
+ const handleContentRef = (0, _useForkRef.default)(ContentProps?.ref, contentRef);
181
183
  const slots = {
182
184
  expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? _icons.TreeViewExpandIcon,
183
185
  collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? _icons.TreeViewCollapseIcon,
@@ -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.isNodeExpanded(itemId);
198
+ const focused = instance.isNodeFocused(itemId);
199
+ const selected = instance.isNodeSelected(itemId);
200
+ const disabled = instance.isNodeDisabled(itemId);
199
201
  const ownerState = (0, _extends2.default)({}, props, {
200
202
  expanded,
201
203
  focused,
@@ -257,62 +259,73 @@ 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.focusNode(event, nodeId);
270
+ instance.focusItem(event, itemId);
273
271
  }
274
272
  }
275
- const idAttribute = instance.getTreeItemId(nodeId, id);
276
- const item = /*#__PURE__*/(0, _jsxRuntime.jsxs)(TreeItemRoot, (0, _extends2.default)({
277
- className: (0, _clsx.default)(classes.root, className),
278
- role: "treeitem",
279
- "aria-expanded": expandable ? expanded : undefined,
280
- "aria-selected": ariaSelected,
281
- "aria-disabled": disabled || undefined,
282
- id: idAttribute,
283
- tabIndex: -1
284
- }, other, {
285
- ownerState: ownerState,
286
- onFocus: handleFocus,
287
- ref: ref,
288
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTreeItemContent, (0, _extends2.default)({
289
- as: ContentComponent,
290
- classes: {
291
- root: classes.content,
292
- expanded: classes.expanded,
293
- selected: classes.selected,
294
- focused: classes.focused,
295
- disabled: classes.disabled,
296
- iconContainer: classes.iconContainer,
297
- label: classes.label
298
- },
299
- label: label,
300
- nodeId: nodeId,
301
- onClick: onClick,
302
- onMouseDown: onMouseDown,
303
- icon: icon,
304
- expansionIcon: expansionIcon,
305
- displayIcon: displayIcon,
306
- ownerState: ownerState
307
- }, ContentProps)), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemGroup, (0, _extends2.default)({
308
- as: GroupTransition
309
- }, groupTransitionProps, {
310
- children: children
311
- }))]
312
- }));
313
- return wrapItem(item);
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;
283
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
284
+ itemId: itemId,
285
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(TreeItemRoot, (0, _extends2.default)({
286
+ className: (0, _clsx.default)(classes.root, className),
287
+ role: "treeitem",
288
+ "aria-expanded": expandable ? expanded : undefined,
289
+ "aria-selected": ariaSelected,
290
+ "aria-disabled": disabled || undefined,
291
+ id: idAttribute,
292
+ tabIndex: tabIndex
293
+ }, other, {
294
+ ownerState: ownerState,
295
+ onFocus: handleFocus,
296
+ onBlur: handleBlur,
297
+ onKeyDown: handleKeyDown,
298
+ ref: handleRootRef,
299
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTreeItemContent, (0, _extends2.default)({
300
+ as: ContentComponent,
301
+ classes: {
302
+ root: classes.content,
303
+ expanded: classes.expanded,
304
+ selected: classes.selected,
305
+ focused: classes.focused,
306
+ disabled: classes.disabled,
307
+ iconContainer: classes.iconContainer,
308
+ label: classes.label
309
+ },
310
+ label: label,
311
+ itemId: itemId,
312
+ onClick: onClick,
313
+ onMouseDown: onMouseDown,
314
+ icon: icon,
315
+ expansionIcon: expansionIcon,
316
+ displayIcon: displayIcon,
317
+ ownerState: ownerState
318
+ }, ContentProps, {
319
+ ref: handleContentRef
320
+ })), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemGroup, (0, _extends2.default)({
321
+ as: GroupTransition
322
+ }, groupTransitionProps, {
323
+ children: children
324
+ }))]
325
+ }))
326
+ });
314
327
  });
315
- TreeItem.propTypes = {
328
+ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
316
329
  // ----------------------------- Warning --------------------------------
317
330
  // | These PropTypes are generated from the TypeScript type definitions |
318
331
  // | To update them edit the TypeScript types and run "yarn proptypes" |
@@ -327,7 +340,7 @@ TreeItem.propTypes = {
327
340
  classes: _propTypes.default.object,
328
341
  className: _propTypes.default.string,
329
342
  /**
330
- * The component used for the content node.
343
+ * The component used to render the content of the item.
331
344
  * @default TreeItemContent
332
345
  */
333
346
  ContentComponent: _elementTypeAcceptingRef.default,
@@ -336,21 +349,21 @@ TreeItem.propTypes = {
336
349
  */
337
350
  ContentProps: _propTypes.default.object,
338
351
  /**
339
- * If `true`, the node is disabled.
352
+ * If `true`, the item is disabled.
340
353
  * @default false
341
354
  */
342
355
  disabled: _propTypes.default.bool,
343
356
  /**
344
- * The tree node label.
357
+ * The id of the item.
345
358
  */
346
- label: _propTypes.default.node,
359
+ itemId: _propTypes.default.string.isRequired,
347
360
  /**
348
- * The id of the node.
361
+ * The tree item label.
349
362
  */
350
- nodeId: _propTypes.default.string.isRequired,
363
+ label: _propTypes.default.node,
351
364
  /**
352
365
  * This prop isn't supported.
353
- * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
366
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
354
367
  */
355
368
  onFocus: _unsupportedProp.default,
356
369
  /**
@@ -367,4 +380,4 @@ TreeItem.propTypes = {
367
380
  * The system prop that allows defining system overrides as well as additional CSS styles.
368
381
  */
369
382
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
370
- };
383
+ } : void 0;
@@ -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.isNodeExpandable(itemId);
16
+ const expanded = instance.isNodeExpanded(itemId);
17
+ const focused = instance.isNodeFocused(itemId);
18
+ const selected = instance.isNodeSelected(itemId);
19
+ const disabled = instance.isNodeDisabled(itemId);
20
20
  const handleExpansion = event => {
21
21
  if (!disabled) {
22
22
  if (!focused) {
23
- instance.focusNode(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.isNodeExpanded(itemId))) {
29
+ instance.toggleNodeExpansion(event, itemId);
30
30
  }
31
31
  }
32
32
  };
33
33
  const handleSelection = event => {
34
34
  if (!disabled) {
35
35
  if (!focused) {
36
- instance.focusNode(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.selectNode(event, itemId, true);
46
46
  }
47
47
  } else {
48
- instance.selectNode(event, nodeId);
48
+ instance.selectNode(event, itemId);
49
49
  }
50
50
  }
51
51
  };
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TreeItem2Root = exports.TreeItem2Label = exports.TreeItem2IconContainer = exports.TreeItem2GroupTransition = exports.TreeItem2Content = exports.TreeItem2 = void 0;
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _clsx = _interopRequireDefault(require("clsx"));
13
+ var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
14
+ var _styles = require("@mui/material/styles");
15
+ var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
16
+ var _utils = require("@mui/base/utils");
17
+ var _system = require("@mui/system");
18
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
19
+ var _useTreeItem = require("../useTreeItem2");
20
+ var _TreeItem = require("../TreeItem");
21
+ var _TreeItem2Icon = require("../TreeItem2Icon");
22
+ var _TreeItem2Provider = require("../TreeItem2Provider");
23
+ var _jsxRuntime = require("react/jsx-runtime");
24
+ const _excluded = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
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
+ 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
+ const TreeItem2Root = exports.TreeItem2Root = (0, _styles.styled)('li', {
28
+ name: 'MuiTreeItem2',
29
+ slot: 'Root',
30
+ overridesResolver: (props, styles) => styles.root
31
+ })({
32
+ listStyle: 'none',
33
+ margin: 0,
34
+ padding: 0,
35
+ outline: 0
36
+ });
37
+ const TreeItem2Content = exports.TreeItem2Content = (0, _styles.styled)('div', {
38
+ name: 'MuiTreeItem2',
39
+ slot: 'Content',
40
+ overridesResolver: (props, styles) => styles.content,
41
+ shouldForwardProp: prop => (0, _system.shouldForwardProp)(prop) && prop !== 'status'
42
+ })(({
43
+ theme
44
+ }) => ({
45
+ padding: theme.spacing(0.5, 1),
46
+ borderRadius: theme.shape.borderRadius,
47
+ width: '100%',
48
+ boxSizing: 'border-box',
49
+ // prevent width + padding to overflow
50
+ display: 'flex',
51
+ alignItems: 'center',
52
+ gap: theme.spacing(1),
53
+ cursor: 'pointer',
54
+ WebkitTapHighlightColor: 'transparent',
55
+ '&:hover': {
56
+ backgroundColor: (theme.vars || theme).palette.action.hover,
57
+ // Reset on touch devices, it doesn't add specificity
58
+ '@media (hover: none)': {
59
+ backgroundColor: 'transparent'
60
+ }
61
+ },
62
+ [`& .${_TreeItem.treeItemClasses.groupTransition}`]: {
63
+ margin: 0,
64
+ padding: 0,
65
+ paddingLeft: 12
66
+ },
67
+ variants: [{
68
+ props: ({
69
+ status
70
+ }) => status.disabled,
71
+ style: {
72
+ opacity: (theme.vars || theme).palette.action.disabledOpacity,
73
+ backgroundColor: 'transparent'
74
+ }
75
+ }, {
76
+ props: ({
77
+ status
78
+ }) => status.focused,
79
+ style: {
80
+ backgroundColor: (theme.vars || theme).palette.action.focus
81
+ }
82
+ }, {
83
+ props: ({
84
+ status
85
+ }) => status.selected,
86
+ style: {
87
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),
88
+ '&:hover': {
89
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
90
+ // Reset on touch devices, it doesn't add specificity
91
+ '@media (hover: none)': {
92
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity)
93
+ }
94
+ }
95
+ }
96
+ }, {
97
+ props: ({
98
+ status
99
+ }) => status.selected && status.focused,
100
+ style: {
101
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
102
+ }
103
+ }]
104
+ }));
105
+ const TreeItem2Label = exports.TreeItem2Label = (0, _styles.styled)('div', {
106
+ name: 'MuiTreeItem2',
107
+ slot: 'Label',
108
+ overridesResolver: (props, styles) => styles.label
109
+ })(({
110
+ theme
111
+ }) => (0, _extends2.default)({
112
+ width: '100%',
113
+ boxSizing: 'border-box',
114
+ // prevent width + padding to overflow
115
+ // fixes overflow - see https://github.com/mui/material-ui/issues/27372
116
+ minWidth: 0,
117
+ position: 'relative'
118
+ }, theme.typography.body1));
119
+ const TreeItem2IconContainer = exports.TreeItem2IconContainer = (0, _styles.styled)('div', {
120
+ name: 'MuiTreeItem2',
121
+ slot: 'IconContainer',
122
+ overridesResolver: (props, styles) => styles.iconContainer
123
+ })({
124
+ width: 16,
125
+ display: 'flex',
126
+ flexShrink: 0,
127
+ justifyContent: 'center',
128
+ '& svg': {
129
+ fontSize: 18
130
+ }
131
+ });
132
+ const TreeItem2GroupTransition = exports.TreeItem2GroupTransition = (0, _styles.styled)(_Collapse.default, {
133
+ name: 'MuiTreeItem2GroupTransition',
134
+ slot: 'GroupTransition',
135
+ overridesResolver: (props, styles) => styles.groupTransition
136
+ })({
137
+ margin: 0,
138
+ padding: 0,
139
+ paddingLeft: 12
140
+ });
141
+ const useUtilityClasses = ownerState => {
142
+ const {
143
+ classes
144
+ } = ownerState;
145
+ const slots = {
146
+ root: ['root'],
147
+ content: ['content'],
148
+ expanded: ['expanded'],
149
+ selected: ['selected'],
150
+ focused: ['focused'],
151
+ disabled: ['disabled'],
152
+ iconContainer: ['iconContainer'],
153
+ label: ['label'],
154
+ groupTransition: ['groupTransition']
155
+ };
156
+ return (0, _composeClasses.default)(slots, _TreeItem.getTreeItemUtilityClass, classes);
157
+ };
158
+
159
+ /**
160
+ *
161
+ * Demos:
162
+ *
163
+ * - [Tree View](https://mui.com/x/react-tree-view/)
164
+ *
165
+ * API:
166
+ *
167
+ * - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
168
+ */
169
+ const TreeItem2 = exports.TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProps, forwardedRef) {
170
+ const props = (0, _styles.useThemeProps)({
171
+ props: inProps,
172
+ name: 'MuiTreeItem2'
173
+ });
174
+ const {
175
+ id,
176
+ itemId,
177
+ label,
178
+ disabled,
179
+ children,
180
+ slots = {},
181
+ slotProps = {}
182
+ } = props,
183
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
184
+ const {
185
+ getRootProps,
186
+ getContentProps,
187
+ getIconContainerProps,
188
+ getLabelProps,
189
+ getGroupTransitionProps,
190
+ status
191
+ } = (0, _useTreeItem.unstable_useTreeItem2)({
192
+ id,
193
+ itemId,
194
+ children,
195
+ label,
196
+ disabled
197
+ });
198
+ const ownerState = (0, _extends2.default)({}, props, status);
199
+ const classes = useUtilityClasses(ownerState);
200
+ const Root = slots.root ?? TreeItem2Root;
201
+ const rootProps = (0, _utils.useSlotProps)({
202
+ elementType: Root,
203
+ getSlotProps: getRootProps,
204
+ externalForwardedProps: other,
205
+ externalSlotProps: slotProps.root,
206
+ additionalProps: {
207
+ ref: forwardedRef
208
+ },
209
+ ownerState: {},
210
+ className: classes.root
211
+ });
212
+ const Content = slots.content ?? TreeItem2Content;
213
+ const contentProps = (0, _utils.useSlotProps)({
214
+ elementType: Content,
215
+ getSlotProps: getContentProps,
216
+ externalSlotProps: slotProps.content,
217
+ ownerState: {},
218
+ className: (0, _clsx.default)(classes.content, status.expanded && classes.expanded, status.selected && classes.selected, status.focused && classes.focused, status.disabled && classes.disabled)
219
+ });
220
+ const IconContainer = slots.iconContainer ?? TreeItem2IconContainer;
221
+ const iconContainerProps = (0, _utils.useSlotProps)({
222
+ elementType: IconContainer,
223
+ getSlotProps: getIconContainerProps,
224
+ externalSlotProps: slotProps.iconContainer,
225
+ ownerState: {},
226
+ className: classes.iconContainer
227
+ });
228
+ const Label = slots.label ?? TreeItem2Label;
229
+ const labelProps = (0, _utils.useSlotProps)({
230
+ elementType: Label,
231
+ getSlotProps: getLabelProps,
232
+ externalSlotProps: slotProps.label,
233
+ ownerState: {},
234
+ className: classes.label
235
+ });
236
+ const GroupTransition = slots.groupTransition ?? undefined;
237
+ const groupTransitionProps = (0, _utils.useSlotProps)({
238
+ elementType: GroupTransition,
239
+ getSlotProps: getGroupTransitionProps,
240
+ externalSlotProps: slotProps.groupTransition,
241
+ ownerState: {},
242
+ className: classes.groupTransition
243
+ });
244
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
245
+ itemId: itemId,
246
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, rootProps, {
247
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Content, (0, _extends2.default)({}, contentProps, {
248
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(IconContainer, (0, _extends2.default)({}, iconContainerProps, {
249
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Icon.TreeItem2Icon, {
250
+ status: status,
251
+ slots: slots,
252
+ slotProps: slotProps
253
+ })
254
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(Label, (0, _extends2.default)({}, labelProps))]
255
+ })), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItem2GroupTransition, (0, _extends2.default)({
256
+ as: GroupTransition
257
+ }, groupTransitionProps))]
258
+ }))
259
+ });
260
+ });
261
+ process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
262
+ // ----------------------------- Warning --------------------------------
263
+ // | These PropTypes are generated from the TypeScript type definitions |
264
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
265
+ // ----------------------------------------------------------------------
266
+ /**
267
+ * The content of the component.
268
+ */
269
+ children: _propTypes.default.node,
270
+ /**
271
+ * Override or extend the styles applied to the component.
272
+ */
273
+ classes: _propTypes.default.object,
274
+ className: _propTypes.default.string,
275
+ /**
276
+ * If `true`, the item is disabled.
277
+ * @default false
278
+ */
279
+ disabled: _propTypes.default.bool,
280
+ /**
281
+ * The id attribute of the item. If not provided, it will be generated.
282
+ */
283
+ id: _propTypes.default.string,
284
+ /**
285
+ * The id of the item.
286
+ * Must be unique.
287
+ */
288
+ itemId: _propTypes.default.string.isRequired,
289
+ /**
290
+ * The label of the item.
291
+ */
292
+ label: _propTypes.default.node,
293
+ /**
294
+ * This prop isn't supported.
295
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
296
+ */
297
+ onFocus: _unsupportedProp.default,
298
+ /**
299
+ * The props used for each component slot.
300
+ * @default {}
301
+ */
302
+ slotProps: _propTypes.default.object,
303
+ /**
304
+ * Overridable component slots.
305
+ * @default {}
306
+ */
307
+ slots: _propTypes.default.object
308
+ } : void 0;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });