@mui/x-tree-view 7.0.0-alpha.1 → 7.0.0-alpha.8

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 (217) hide show
  1. package/CHANGELOG.md +1380 -188
  2. package/README.md +0 -1
  3. package/RichTreeView/RichTreeView.d.ts +20 -0
  4. package/RichTreeView/RichTreeView.js +285 -0
  5. package/RichTreeView/RichTreeView.types.d.ts +55 -0
  6. package/RichTreeView/RichTreeView.types.js +1 -0
  7. package/RichTreeView/index.d.ts +3 -0
  8. package/RichTreeView/index.js +3 -0
  9. package/RichTreeView/package.json +6 -0
  10. package/RichTreeView/richTreeViewClasses.d.ts +7 -0
  11. package/RichTreeView/richTreeViewClasses.js +6 -0
  12. package/SimpleTreeView/SimpleTreeView.d.ts +20 -0
  13. package/SimpleTreeView/SimpleTreeView.js +235 -0
  14. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +6 -0
  15. package/SimpleTreeView/SimpleTreeView.plugins.js +5 -0
  16. package/SimpleTreeView/SimpleTreeView.types.d.ts +38 -0
  17. package/SimpleTreeView/SimpleTreeView.types.js +1 -0
  18. package/SimpleTreeView/index.d.ts +3 -0
  19. package/SimpleTreeView/index.js +3 -0
  20. package/SimpleTreeView/package.json +6 -0
  21. package/SimpleTreeView/simpleTreeViewClasses.d.ts +7 -0
  22. package/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  23. package/TreeItem/TreeItem.js +44 -89
  24. package/TreeItem/TreeItem.types.d.ts +2 -1
  25. package/TreeItem/index.d.ts +2 -2
  26. package/TreeItem/index.js +2 -2
  27. package/TreeItem/useTreeItem.js +5 -5
  28. package/TreeView/TreeView.d.ts +4 -0
  29. package/TreeView/TreeView.js +80 -87
  30. package/TreeView/TreeView.types.d.ts +4 -26
  31. package/TreeView/index.d.ts +1 -1
  32. package/index.d.ts +3 -0
  33. package/index.js +5 -2
  34. package/internals/TreeViewProvider/TreeViewContext.d.ts +1 -2
  35. package/internals/TreeViewProvider/TreeViewContext.js +1 -14
  36. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  37. package/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  38. package/internals/corePlugins/corePlugins.d.ts +1 -1
  39. package/internals/corePlugins/corePlugins.js +1 -1
  40. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -5
  41. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  42. package/internals/hooks/useLazyRef.d.ts +2 -0
  43. package/internals/hooks/useLazyRef.js +11 -0
  44. package/internals/hooks/useOnMount.d.ts +2 -0
  45. package/internals/hooks/useOnMount.js +7 -0
  46. package/internals/hooks/useTimeout.d.ts +9 -0
  47. package/internals/hooks/useTimeout.js +28 -0
  48. package/internals/models/MuiCancellableEvent.d.ts +4 -0
  49. package/internals/models/MuiCancellableEvent.js +1 -0
  50. package/internals/models/plugin.d.ts +24 -0
  51. package/internals/models/treeView.d.ts +5 -1
  52. package/internals/plugins/defaultPlugins.d.ts +3 -2
  53. package/internals/plugins/defaultPlugins.js +2 -1
  54. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +14 -6
  55. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +1 -6
  56. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +32 -17
  57. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +12 -5
  58. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -6
  59. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -1
  60. package/internals/plugins/useTreeViewId/index.d.ts +2 -0
  61. package/internals/plugins/useTreeViewId/index.js +1 -0
  62. package/internals/plugins/useTreeViewId/useTreeViewId.d.ts +3 -0
  63. package/internals/plugins/useTreeViewId/useTreeViewId.js +21 -0
  64. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +17 -0
  65. package/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  66. package/internals/plugins/useTreeViewJSXNodes/index.d.ts +2 -0
  67. package/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  68. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.d.ts +3 -0
  69. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +115 -0
  70. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +16 -0
  71. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  72. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +175 -121
  73. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +5 -2
  74. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +89 -17
  75. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +48 -5
  76. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +1 -1
  77. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +49 -28
  78. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -8
  79. package/internals/useTreeView/useTreeView.js +40 -3
  80. package/internals/useTreeView/useTreeView.types.d.ts +2 -1
  81. package/internals/useTreeView/useTreeViewModels.js +2 -2
  82. package/internals/utils/extractPluginParamsFromProps.d.ts +13 -0
  83. package/internals/utils/extractPluginParamsFromProps.js +27 -0
  84. package/internals/utils/warning.d.ts +1 -0
  85. package/internals/utils/warning.js +14 -0
  86. package/legacy/RichTreeView/RichTreeView.js +279 -0
  87. package/legacy/RichTreeView/RichTreeView.types.js +1 -0
  88. package/legacy/RichTreeView/index.js +3 -0
  89. package/legacy/RichTreeView/richTreeViewClasses.js +6 -0
  90. package/legacy/SimpleTreeView/SimpleTreeView.js +232 -0
  91. package/legacy/SimpleTreeView/SimpleTreeView.plugins.js +6 -0
  92. package/legacy/SimpleTreeView/SimpleTreeView.types.js +1 -0
  93. package/legacy/SimpleTreeView/index.js +3 -0
  94. package/legacy/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  95. package/legacy/TreeItem/TreeItem.js +49 -103
  96. package/legacy/TreeItem/index.js +2 -2
  97. package/legacy/TreeItem/useTreeItem.js +5 -5
  98. package/legacy/TreeView/TreeView.js +80 -82
  99. package/legacy/index.js +5 -2
  100. package/legacy/internals/TreeViewProvider/TreeViewContext.js +1 -14
  101. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +5 -1
  102. package/legacy/internals/corePlugins/corePlugins.js +1 -1
  103. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  104. package/legacy/internals/hooks/useLazyRef.js +11 -0
  105. package/legacy/internals/hooks/useOnMount.js +7 -0
  106. package/legacy/internals/hooks/useTimeout.js +38 -0
  107. package/legacy/internals/models/MuiCancellableEvent.js +1 -0
  108. package/legacy/internals/plugins/defaultPlugins.js +2 -1
  109. package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +17 -8
  110. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +32 -17
  111. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -6
  112. package/legacy/internals/plugins/useTreeViewId/index.js +1 -0
  113. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +24 -0
  114. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  115. package/legacy/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  116. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +121 -0
  117. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  118. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +177 -119
  119. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +96 -20
  120. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +53 -28
  121. package/legacy/internals/useTreeView/useTreeView.js +39 -3
  122. package/legacy/internals/useTreeView/useTreeViewModels.js +2 -2
  123. package/legacy/internals/utils/extractPluginParamsFromProps.js +27 -0
  124. package/legacy/internals/utils/warning.js +15 -0
  125. package/legacy/models/index.js +1 -0
  126. package/legacy/models/items.js +1 -0
  127. package/models/index.d.ts +1 -0
  128. package/models/index.js +1 -0
  129. package/models/items.d.ts +7 -0
  130. package/models/items.js +1 -0
  131. package/models/package.json +6 -0
  132. package/modern/RichTreeView/RichTreeView.js +283 -0
  133. package/modern/RichTreeView/RichTreeView.types.js +1 -0
  134. package/modern/RichTreeView/index.js +3 -0
  135. package/modern/RichTreeView/richTreeViewClasses.js +6 -0
  136. package/modern/SimpleTreeView/SimpleTreeView.js +234 -0
  137. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +5 -0
  138. package/modern/SimpleTreeView/SimpleTreeView.types.js +1 -0
  139. package/modern/SimpleTreeView/index.js +3 -0
  140. package/modern/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  141. package/modern/TreeItem/TreeItem.js +44 -88
  142. package/modern/TreeItem/index.js +2 -2
  143. package/modern/TreeItem/useTreeItem.js +5 -5
  144. package/modern/TreeView/TreeView.js +80 -87
  145. package/modern/index.js +5 -2
  146. package/modern/internals/TreeViewProvider/TreeViewContext.js +1 -14
  147. package/modern/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  148. package/modern/internals/corePlugins/corePlugins.js +1 -1
  149. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  150. package/modern/internals/hooks/useLazyRef.js +11 -0
  151. package/modern/internals/hooks/useOnMount.js +7 -0
  152. package/modern/internals/hooks/useTimeout.js +28 -0
  153. package/modern/internals/models/MuiCancellableEvent.js +1 -0
  154. package/modern/internals/plugins/defaultPlugins.js +2 -1
  155. package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +14 -6
  156. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +33 -18
  157. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -7
  158. package/modern/internals/plugins/useTreeViewId/index.js +1 -0
  159. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +21 -0
  160. package/modern/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  161. package/modern/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  162. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +114 -0
  163. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  164. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +174 -121
  165. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +88 -17
  166. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +50 -29
  167. package/modern/internals/useTreeView/useTreeView.js +40 -3
  168. package/modern/internals/useTreeView/useTreeViewModels.js +2 -2
  169. package/modern/internals/utils/extractPluginParamsFromProps.js +27 -0
  170. package/modern/internals/utils/warning.js +14 -0
  171. package/modern/models/index.js +1 -0
  172. package/modern/models/items.js +1 -0
  173. package/node/RichTreeView/RichTreeView.js +291 -0
  174. package/node/RichTreeView/RichTreeView.types.js +5 -0
  175. package/node/RichTreeView/index.js +27 -0
  176. package/node/RichTreeView/richTreeViewClasses.js +14 -0
  177. package/node/SimpleTreeView/SimpleTreeView.js +242 -0
  178. package/node/SimpleTreeView/SimpleTreeView.plugins.js +11 -0
  179. package/node/SimpleTreeView/SimpleTreeView.types.js +5 -0
  180. package/node/SimpleTreeView/index.js +27 -0
  181. package/node/SimpleTreeView/simpleTreeViewClasses.js +14 -0
  182. package/node/TreeItem/TreeItem.js +44 -88
  183. package/node/TreeItem/index.js +11 -15
  184. package/node/TreeItem/useTreeItem.js +5 -5
  185. package/node/TreeView/TreeView.js +80 -87
  186. package/node/index.js +38 -2
  187. package/node/internals/TreeViewProvider/TreeViewContext.js +2 -15
  188. package/node/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  189. package/node/internals/corePlugins/corePlugins.js +1 -1
  190. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  191. package/node/internals/hooks/useLazyRef.js +19 -0
  192. package/node/internals/hooks/useOnMount.js +15 -0
  193. package/node/internals/hooks/useTimeout.js +34 -0
  194. package/node/internals/models/MuiCancellableEvent.js +5 -0
  195. package/node/internals/plugins/defaultPlugins.js +2 -1
  196. package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +15 -8
  197. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +33 -18
  198. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -7
  199. package/node/internals/plugins/useTreeViewId/index.js +12 -0
  200. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +31 -0
  201. package/node/internals/plugins/useTreeViewId/useTreeViewId.types.js +5 -0
  202. package/node/internals/plugins/useTreeViewJSXNodes/index.js +12 -0
  203. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +124 -0
  204. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +5 -0
  205. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +174 -121
  206. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +89 -18
  207. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +50 -29
  208. package/node/internals/useTreeView/useTreeView.js +40 -3
  209. package/node/internals/useTreeView/useTreeViewModels.js +2 -2
  210. package/node/internals/utils/extractPluginParamsFromProps.js +34 -0
  211. package/node/internals/utils/warning.js +21 -0
  212. package/node/models/index.js +16 -0
  213. package/node/models/items.js +5 -0
  214. package/package.json +8 -7
  215. package/themeAugmentation/components.d.ts +14 -4
  216. package/themeAugmentation/overrides.d.ts +8 -4
  217. package/themeAugmentation/props.d.ts +7 -3
@@ -6,18 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.TreeView = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
9
  var React = _interopRequireWildcard(require("react"));
11
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
11
  var _styles = require("@mui/material/styles");
13
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
- var _utils = require("@mui/base/utils");
15
13
  var _treeViewClasses = require("./treeViewClasses");
16
- var _useTreeView = require("../internals/useTreeView");
17
- var _TreeViewProvider = require("../internals/TreeViewProvider");
18
- var _plugins = require("../internals/plugins");
14
+ var _SimpleTreeView = require("../SimpleTreeView");
19
15
  var _jsxRuntime = require("react/jsx-runtime");
20
- const _excluded = ["disabledItemsFocusable", "expanded", "defaultExpanded", "onNodeToggle", "onNodeFocus", "disableSelection", "defaultSelected", "selected", "multiSelect", "onNodeSelect", "id", "defaultCollapseIcon", "defaultEndIcon", "defaultExpandIcon", "defaultParentIcon", "children"];
21
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); }
22
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; }
23
18
  const useUtilityClasses = ownerState => {
@@ -29,17 +24,22 @@ const useUtilityClasses = ownerState => {
29
24
  };
30
25
  return (0, _composeClasses.default)(slots, _treeViewClasses.getTreeViewUtilityClass, classes);
31
26
  };
32
- const TreeViewRoot = (0, _styles.styled)('ul', {
27
+ const TreeViewRoot = (0, _styles.styled)(_SimpleTreeView.SimpleTreeViewRoot, {
33
28
  name: 'MuiTreeView',
34
29
  slot: 'Root',
35
30
  overridesResolver: (props, styles) => styles.root
36
- })({
37
- padding: 0,
38
- margin: 0,
39
- listStyle: 'none',
40
- outline: 0
41
- });
31
+ })({});
32
+ let warnedOnce = false;
33
+ const warn = () => {
34
+ if (!warnedOnce) {
35
+ console.warn(['MUI X: The TreeView component was renamed SimpleTreeView.', 'The component with the old naming will be removed in the version v8.0.0.', '', "You should use `import { SimpleTreeView } from '@mui/x-tree-view'`", "or `import { SimpleTreeView } from '@mui/x-tree-view/TreeView'`"].join('\n'));
36
+ warnedOnce = true;
37
+ }
38
+ };
39
+
42
40
  /**
41
+ * This component has been deprecated in favor of the new `SimpleTreeView` component.
42
+ * You can have a look at how to migrate to the new component in the v7 [migration guide](https://next.mui.com/x/migration/migration-tree-view-v6/#use-simpletreeview-instead-of-treeview)
43
43
  *
44
44
  * Demos:
45
45
  *
@@ -48,72 +48,25 @@ const TreeViewRoot = (0, _styles.styled)('ul', {
48
48
  * API:
49
49
  *
50
50
  * - [TreeView API](https://mui.com/x/api/tree-view/tree-view/)
51
+ *
52
+ * @deprecated
51
53
  */
52
54
  const TreeView = exports.TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
53
- const themeProps = (0, _styles.useThemeProps)({
55
+ if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
56
+ warn();
57
+ }
58
+ const props = (0, _styles.useThemeProps)({
54
59
  props: inProps,
55
60
  name: 'MuiTreeView'
56
61
  });
57
- const ownerState = themeProps;
58
- const _ref = themeProps,
59
- {
60
- // Headless implementation
61
- disabledItemsFocusable,
62
- expanded,
63
- defaultExpanded,
64
- onNodeToggle,
65
- onNodeFocus,
66
- disableSelection,
67
- defaultSelected,
68
- selected,
69
- multiSelect,
70
- onNodeSelect,
71
- id,
72
- defaultCollapseIcon,
73
- defaultEndIcon,
74
- defaultExpandIcon,
75
- defaultParentIcon,
76
- // Component implementation
77
- children
78
- } = _ref,
79
- other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
80
- const {
81
- getRootProps,
82
- contextValue
83
- } = (0, _useTreeView.useTreeView)({
84
- disabledItemsFocusable,
85
- expanded,
86
- defaultExpanded,
87
- onNodeToggle,
88
- onNodeFocus,
89
- disableSelection,
90
- defaultSelected,
91
- selected,
92
- multiSelect,
93
- onNodeSelect,
94
- id,
95
- defaultCollapseIcon,
96
- defaultEndIcon,
97
- defaultExpandIcon,
98
- defaultParentIcon,
99
- plugins: _plugins.DEFAULT_TREE_VIEW_PLUGINS,
100
- rootRef: ref
101
- });
102
- const classes = useUtilityClasses(themeProps);
103
- const rootProps = (0, _utils.useSlotProps)({
104
- elementType: TreeViewRoot,
105
- externalSlotProps: {},
106
- externalForwardedProps: other,
107
- className: classes.root,
108
- getSlotProps: getRootProps,
109
- ownerState
110
- });
111
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
112
- value: contextValue,
113
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeViewRoot, (0, _extends2.default)({}, rootProps, {
114
- children: children
115
- }))
116
- });
62
+ const classes = useUtilityClasses(props);
63
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SimpleTreeView.SimpleTreeView, (0, _extends2.default)({}, props, {
64
+ ref: ref,
65
+ classes: classes,
66
+ slots: (0, _extends2.default)({
67
+ root: TreeViewRoot
68
+ }, props.slots)
69
+ }));
117
70
  });
118
71
  process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
119
72
  // ----------------------------- Warning --------------------------------
@@ -146,7 +99,7 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
146
99
  * Used when the item's expansion is not controlled.
147
100
  * @default []
148
101
  */
149
- defaultExpanded: _propTypes.default.arrayOf(_propTypes.default.string),
102
+ defaultExpandedNodes: _propTypes.default.arrayOf(_propTypes.default.string),
150
103
  /**
151
104
  * The default icon used to expand the node.
152
105
  */
@@ -161,7 +114,7 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
161
114
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
162
115
  * @default []
163
116
  */
164
- defaultSelected: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.string]),
117
+ defaultSelectedNodes: _propTypes.default.any,
165
118
  /**
166
119
  * If `true`, will allow focus on disabled items.
167
120
  * @default false
@@ -176,7 +129,25 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
176
129
  * Expanded node ids.
177
130
  * Used when the item's expansion is controlled.
178
131
  */
179
- expanded: _propTypes.default.arrayOf(_propTypes.default.string),
132
+ expandedNodes: _propTypes.default.arrayOf(_propTypes.default.string),
133
+ /**
134
+ * Used to determine the string label for a given item.
135
+ *
136
+ * @template R
137
+ * @param {R} item The item to check.
138
+ * @returns {string} The id of the item.
139
+ * @default `(item) => item.id`
140
+ */
141
+ getItemId: _propTypes.default.func,
142
+ /**
143
+ * Used to determine the string label for a given item.
144
+ *
145
+ * @template R
146
+ * @param {R} item The item to check.
147
+ * @returns {string} The label of the item.
148
+ * @default `(item) => item.label`
149
+ */
150
+ getItemLabel: _propTypes.default.func,
180
151
  /**
181
152
  * This prop is used to help implement the accessibility logic.
182
153
  * If you don't provide this prop. It falls back to a randomly generated id.
@@ -187,6 +158,19 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
187
158
  * @default false
188
159
  */
189
160
  multiSelect: _propTypes.default.bool,
161
+ /**
162
+ * Callback fired when tree items are expanded/collapsed.
163
+ * @param {React.SyntheticEvent} event The event source of the callback.
164
+ * @param {array} nodeIds The ids of the expanded nodes.
165
+ */
166
+ onExpandedNodesChange: _propTypes.default.func,
167
+ /**
168
+ * Callback fired when a tree item is expanded or collapsed.
169
+ * @param {React.SyntheticEvent} event The event source of the callback.
170
+ * @param {array} nodeId The nodeId of the modified node.
171
+ * @param {array} isExpanded `true` if the node has just been expanded, `false` if it has just been collapsed.
172
+ */
173
+ onNodeExpansionToggle: _propTypes.default.func,
190
174
  /**
191
175
  * Callback fired when tree items are focused.
192
176
  * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
@@ -195,23 +179,32 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
195
179
  */
196
180
  onNodeFocus: _propTypes.default.func,
197
181
  /**
198
- * Callback fired when tree items are selected/unselected.
199
- * @param {React.SyntheticEvent} event The event source of the callback
200
- * @param {string[] | string} nodeIds Ids of the selected nodes. When `multiSelect` is true
201
- * this is an array of strings; when false (default) a string.
182
+ * Callback fired when a tree item is selected or deselected.
183
+ * @param {React.SyntheticEvent} event The event source of the callback.
184
+ * @param {array} nodeId The nodeId of the modified node.
185
+ * @param {array} isSelected `true` if the node has just been selected, `false` if it has just been deselected.
202
186
  */
203
- onNodeSelect: _propTypes.default.func,
187
+ onNodeSelectionToggle: _propTypes.default.func,
204
188
  /**
205
- * Callback fired when tree items are expanded/collapsed.
206
- * @param {React.SyntheticEvent} event The event source of the callback.
207
- * @param {array} nodeIds The ids of the expanded nodes.
189
+ * Callback fired when tree items are selected/deselected.
190
+ * @param {React.SyntheticEvent} event The event source of the callback
191
+ * @param {string[] | string} nodeIds The ids of the selected nodes.
192
+ * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
208
193
  */
209
- onNodeToggle: _propTypes.default.func,
194
+ onSelectedNodesChange: _propTypes.default.func,
210
195
  /**
211
196
  * Selected node ids. (Controlled)
212
197
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
213
198
  */
214
- selected: _propTypes.default.any,
199
+ selectedNodes: _propTypes.default.any,
200
+ /**
201
+ * The props used for each component slot.
202
+ */
203
+ slotProps: _propTypes.default.object,
204
+ /**
205
+ * Overridable component slots.
206
+ */
207
+ slots: _propTypes.default.object,
215
208
  /**
216
209
  * The system prop that allows defining system overrides as well as additional CSS styles.
217
210
  */
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v7.0.0-alpha.1
2
+ * @mui/x-tree-view v7.0.0-alpha.8
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -43,4 +43,40 @@ Object.keys(_TreeView).forEach(function (key) {
43
43
  }
44
44
  });
45
45
  });
46
- var _useInstanceEventHandler = require("./internals/hooks/useInstanceEventHandler");
46
+ var _SimpleTreeView = require("./SimpleTreeView");
47
+ Object.keys(_SimpleTreeView).forEach(function (key) {
48
+ if (key === "default" || key === "__esModule") return;
49
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
50
+ if (key in exports && exports[key] === _SimpleTreeView[key]) return;
51
+ Object.defineProperty(exports, key, {
52
+ enumerable: true,
53
+ get: function () {
54
+ return _SimpleTreeView[key];
55
+ }
56
+ });
57
+ });
58
+ var _RichTreeView = require("./RichTreeView");
59
+ Object.keys(_RichTreeView).forEach(function (key) {
60
+ if (key === "default" || key === "__esModule") return;
61
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
62
+ if (key in exports && exports[key] === _RichTreeView[key]) return;
63
+ Object.defineProperty(exports, key, {
64
+ enumerable: true,
65
+ get: function () {
66
+ return _RichTreeView[key];
67
+ }
68
+ });
69
+ });
70
+ var _useInstanceEventHandler = require("./internals/hooks/useInstanceEventHandler");
71
+ var _models = require("./models");
72
+ Object.keys(_models).forEach(function (key) {
73
+ if (key === "default" || key === "__esModule") return;
74
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
75
+ if (key in exports && exports[key] === _models[key]) return;
76
+ Object.defineProperty(exports, key, {
77
+ enumerable: true,
78
+ get: function () {
79
+ return _models[key];
80
+ }
81
+ });
82
+ });
@@ -3,27 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TreeViewContext = exports.DEFAULT_TREE_VIEW_CONTEXT_VALUE = void 0;
6
+ exports.TreeViewContext = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  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); }
9
9
  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; }
10
- const DEFAULT_TREE_VIEW_CONTEXT_VALUE = exports.DEFAULT_TREE_VIEW_CONTEXT_VALUE = {
11
- instance: null,
12
- multiSelect: false,
13
- disabledItemsFocusable: false,
14
- treeId: undefined,
15
- icons: {
16
- defaultCollapseIcon: null,
17
- defaultExpandIcon: null,
18
- defaultParentIcon: null,
19
- defaultEndIcon: null
20
- }
21
- };
22
-
23
10
  /**
24
11
  * @ignore - internal component.
25
12
  */
26
- const TreeViewContext = exports.TreeViewContext = /*#__PURE__*/React.createContext(DEFAULT_TREE_VIEW_CONTEXT_VALUE);
13
+ const TreeViewContext = exports.TreeViewContext = /*#__PURE__*/React.createContext(null);
27
14
  if (process.env.NODE_ENV !== 'production') {
28
15
  TreeViewContext.displayName = 'TreeViewContext';
29
16
  }
@@ -8,5 +8,11 @@ var React = _interopRequireWildcard(require("react"));
8
8
  var _TreeViewContext = require("./TreeViewContext");
9
9
  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); }
10
10
  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; }
11
- const useTreeViewContext = () => React.useContext(_TreeViewContext.TreeViewContext);
11
+ const useTreeViewContext = () => {
12
+ const context = React.useContext(_TreeViewContext.TreeViewContext);
13
+ if (context == null) {
14
+ throw new Error(['MUI X: Could not find the Tree View context.', 'It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.', 'This can also happen if you are bundling multiple versions of the Tree View.'].join('\n'));
15
+ }
16
+ return context;
17
+ };
12
18
  exports.useTreeViewContext = useTreeViewContext;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.TREE_VIEW_CORE_PLUGINS = void 0;
7
7
  var _useTreeViewInstanceEvents = require("./useTreeViewInstanceEvents");
8
8
  /**
9
- * Internal plugins that creates the tools used by the other plugins.
9
+ * Internal plugins that create the tools used by the other plugins.
10
10
  * These plugins are used by the tree view components.
11
11
  */
12
12
  const TREE_VIEW_CORE_PLUGINS = exports.TREE_VIEW_CORE_PLUGINS = [_useTreeViewInstanceEvents.useTreeViewInstanceEvents];
@@ -12,12 +12,6 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
12
12
  const isSyntheticEvent = event => {
13
13
  return event.isPropagationStopped !== undefined;
14
14
  };
15
-
16
- /**
17
- * Plugin responsible for the registration of the nodes defined as JSX children of the TreeView.
18
- * When we will have both a SimpleTreeView using JSX children and a TreeView using a data prop,
19
- * this plugin will only be used by SimpleTreeView.
20
- */
21
15
  const useTreeViewInstanceEvents = ({
22
16
  instance
23
17
  }) => {
@@ -41,4 +35,5 @@ const useTreeViewInstanceEvents = ({
41
35
  $$subscribeEvent: subscribeEvent
42
36
  });
43
37
  };
44
- exports.useTreeViewInstanceEvents = useTreeViewInstanceEvents;
38
+ exports.useTreeViewInstanceEvents = useTreeViewInstanceEvents;
39
+ useTreeViewInstanceEvents.params = {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLazyRef = useLazyRef;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ 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); }
9
+ 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; }
10
+ const UNINITIALIZED = {};
11
+
12
+ // See https://github.com/facebook/react/issues/14490 for when to use this.
13
+ function useLazyRef(init, initArg) {
14
+ const ref = React.useRef(UNINITIALIZED);
15
+ if (ref.current === UNINITIALIZED) {
16
+ ref.current = init(initArg);
17
+ }
18
+ return ref;
19
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOnMount = useOnMount;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ 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); }
9
+ 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; }
10
+ const EMPTY = [];
11
+ function useOnMount(fn) {
12
+ /* eslint-disable react-hooks/exhaustive-deps */
13
+ React.useEffect(fn, EMPTY);
14
+ /* eslint-enable react-hooks/exhaustive-deps */
15
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTimeout = useTimeout;
7
+ var _useLazyRef = require("./useLazyRef");
8
+ var _useOnMount = require("./useOnMount");
9
+ class Timeout {
10
+ constructor() {
11
+ this.currentId = 0;
12
+ this.clear = () => {
13
+ if (this.currentId !== 0) {
14
+ clearTimeout(this.currentId);
15
+ this.currentId = 0;
16
+ }
17
+ };
18
+ this.disposeEffect = () => {
19
+ return this.clear;
20
+ };
21
+ }
22
+ static create() {
23
+ return new Timeout();
24
+ }
25
+ start(delay, fn) {
26
+ this.clear();
27
+ this.currentId = setTimeout(fn, delay);
28
+ }
29
+ }
30
+ function useTimeout() {
31
+ const timeout = (0, _useLazyRef.useLazyRef)(Timeout.create).current;
32
+ (0, _useOnMount.useOnMount)(timeout.disposeEffect);
33
+ return timeout;
34
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -4,12 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DEFAULT_TREE_VIEW_PLUGINS = void 0;
7
+ var _useTreeViewId = require("./useTreeViewId");
7
8
  var _useTreeViewNodes = require("./useTreeViewNodes");
8
9
  var _useTreeViewExpansion = require("./useTreeViewExpansion");
9
10
  var _useTreeViewSelection = require("./useTreeViewSelection");
10
11
  var _useTreeViewFocus = require("./useTreeViewFocus");
11
12
  var _useTreeViewKeyboardNavigation = require("./useTreeViewKeyboardNavigation");
12
13
  var _useTreeViewContextValueBuilder = require("./useTreeViewContextValueBuilder");
13
- const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewNodes.useTreeViewNodes, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewContextValueBuilder.useTreeViewContextValueBuilder];
14
+ const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewId.useTreeViewId, _useTreeViewNodes.useTreeViewNodes, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewContextValueBuilder.useTreeViewContextValueBuilder];
14
15
 
15
16
  // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -1,24 +1,25 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.useTreeViewContextValueBuilder = void 0;
8
- var _useId = _interopRequireDefault(require("@mui/utils/useId"));
9
7
  const useTreeViewContextValueBuilder = ({
10
8
  instance,
11
9
  params
12
10
  }) => {
13
- const treeId = (0, _useId.default)(params.id);
14
11
  return {
15
- getRootProps: () => ({
16
- id: treeId
17
- }),
18
12
  contextValue: {
19
- treeId,
20
13
  instance: instance,
21
14
  multiSelect: params.multiSelect,
15
+ runItemPlugins: ({
16
+ props,
17
+ ref
18
+ }) => ({
19
+ props,
20
+ ref,
21
+ wrapItem: children => children
22
+ }),
22
23
  disabledItemsFocusable: params.disabledItemsFocusable,
23
24
  icons: {
24
25
  defaultCollapseIcon: params.defaultCollapseIcon,
@@ -29,4 +30,10 @@ const useTreeViewContextValueBuilder = ({
29
30
  }
30
31
  };
31
32
  };
32
- exports.useTreeViewContextValueBuilder = useTreeViewContextValueBuilder;
33
+ exports.useTreeViewContextValueBuilder = useTreeViewContextValueBuilder;
34
+ useTreeViewContextValueBuilder.params = {
35
+ defaultCollapseIcon: true,
36
+ defaultEndIcon: true,
37
+ defaultExpandIcon: true,
38
+ defaultParentIcon: true
39
+ };
@@ -17,34 +17,43 @@ const useTreeViewExpansion = ({
17
17
  models
18
18
  }) => {
19
19
  const isNodeExpanded = React.useCallback(nodeId => {
20
- return Array.isArray(models.expanded.value) ? models.expanded.value.indexOf(nodeId) !== -1 : false;
21
- }, [models.expanded.value]);
20
+ return Array.isArray(models.expandedNodes.value) ? models.expandedNodes.value.indexOf(nodeId) !== -1 : false;
21
+ }, [models.expandedNodes.value]);
22
22
  const isNodeExpandable = React.useCallback(nodeId => !!instance.getNode(nodeId)?.expandable, [instance]);
23
23
  const toggleNodeExpansion = (0, _useEventCallback.default)((event, nodeId) => {
24
24
  if (nodeId == null) {
25
25
  return;
26
26
  }
27
+ const isExpandedBefore = models.expandedNodes.value.indexOf(nodeId) !== -1;
27
28
  let newExpanded;
28
- if (models.expanded.value.indexOf(nodeId) !== -1) {
29
- newExpanded = models.expanded.value.filter(id => id !== nodeId);
29
+ if (isExpandedBefore) {
30
+ newExpanded = models.expandedNodes.value.filter(id => id !== nodeId);
30
31
  } else {
31
- newExpanded = [nodeId].concat(models.expanded.value);
32
+ newExpanded = [nodeId].concat(models.expandedNodes.value);
32
33
  }
33
- if (params.onNodeToggle) {
34
- params.onNodeToggle(event, newExpanded);
34
+ if (params.onNodeExpansionToggle) {
35
+ params.onNodeExpansionToggle(event, nodeId, !isExpandedBefore);
35
36
  }
36
- models.expanded.setValue(newExpanded);
37
+ if (params.onExpandedNodesChange) {
38
+ params.onExpandedNodesChange(event, newExpanded);
39
+ }
40
+ models.expandedNodes.setValue(newExpanded);
37
41
  });
38
42
  const expandAllSiblings = (event, nodeId) => {
39
43
  const node = instance.getNode(nodeId);
40
44
  const siblings = instance.getChildrenIds(node.parentId);
41
45
  const diff = siblings.filter(child => instance.isNodeExpandable(child) && !instance.isNodeExpanded(child));
42
- const newExpanded = models.expanded.value.concat(diff);
46
+ const newExpanded = models.expandedNodes.value.concat(diff);
43
47
  if (diff.length > 0) {
44
- models.expanded.setValue(newExpanded);
45
- if (params.onNodeToggle) {
46
- params.onNodeToggle(event, newExpanded);
48
+ if (params.onNodeExpansionToggle) {
49
+ diff.forEach(newlyExpandedNodeId => {
50
+ params.onNodeExpansionToggle(event, newlyExpandedNodeId, true);
51
+ });
52
+ }
53
+ if (params.onExpandedNodesChange) {
54
+ params.onExpandedNodesChange(event, newExpanded);
47
55
  }
56
+ models.expandedNodes.setValue(newExpanded);
48
57
  }
49
58
  };
50
59
  (0, _useTreeView.populateInstance)(instance, {
@@ -56,12 +65,18 @@ const useTreeViewExpansion = ({
56
65
  };
57
66
  exports.useTreeViewExpansion = useTreeViewExpansion;
58
67
  useTreeViewExpansion.models = {
59
- expanded: {
60
- controlledProp: 'expanded',
61
- defaultProp: 'defaultExpanded'
68
+ expandedNodes: {
69
+ controlledProp: 'expandedNodes',
70
+ defaultProp: 'defaultExpandedNodes'
62
71
  }
63
72
  };
64
- const DEFAULT_EXPANDED = [];
73
+ const DEFAULT_EXPANDED_NODES = [];
65
74
  useTreeViewExpansion.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
66
- defaultExpanded: params.defaultExpanded ?? DEFAULT_EXPANDED
67
- });
75
+ defaultExpandedNodes: params.defaultExpandedNodes ?? DEFAULT_EXPANDED_NODES
76
+ });
77
+ useTreeViewExpansion.params = {
78
+ expandedNodes: true,
79
+ defaultExpandedNodes: true,
80
+ onExpandedNodesChange: true,
81
+ onNodeExpansionToggle: true
82
+ };
@@ -36,9 +36,15 @@ const useTreeViewFocus = ({
36
36
  }
37
37
  }
38
38
  });
39
+ const focusRoot = (0, _useEventCallback.default)(() => {
40
+ rootRef.current?.focus({
41
+ preventScroll: true
42
+ });
43
+ });
39
44
  (0, _useTreeView.populateInstance)(instance, {
40
45
  isNodeFocused,
41
- focusNode
46
+ focusNode,
47
+ focusRoot
42
48
  });
43
49
  (0, _useInstanceEventHandler.useInstanceEventHandler)(instance, 'removeNode', ({
44
50
  id
@@ -60,10 +66,10 @@ const useTreeViewFocus = ({
60
66
  return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
61
67
  };
62
68
  let nodeToFocusId;
63
- if (Array.isArray(models.selected.value)) {
64
- nodeToFocusId = models.selected.value.find(isNodeVisible);
65
- } else if (models.selected.value != null && isNodeVisible(models.selected.value)) {
66
- nodeToFocusId = models.selected.value;
69
+ if (Array.isArray(models.selectedNodes.value)) {
70
+ nodeToFocusId = models.selectedNodes.value.find(isNodeVisible);
71
+ } else if (models.selectedNodes.value != null && isNodeVisible(models.selectedNodes.value)) {
72
+ nodeToFocusId = models.selectedNodes.value;
67
73
  }
68
74
  if (nodeToFocusId == null) {
69
75
  nodeToFocusId = instance.getNavigableChildrenIds(null)[0];
@@ -76,7 +82,7 @@ const useTreeViewFocus = ({
76
82
  setFocusedNodeId(null);
77
83
  };
78
84
  const focusedNode = instance.getNode(state.focusedNodeId);
79
- const activeDescendant = focusedNode ? focusedNode.idAttribute : null;
85
+ const activeDescendant = focusedNode ? instance.getTreeItemId(focusedNode.id, focusedNode.idAttribute) : null;
80
86
  return {
81
87
  getRootProps: otherHandlers => ({
82
88
  onFocus: createHandleFocus(otherHandlers),
@@ -91,4 +97,7 @@ useTreeViewFocus.getInitialState = () => ({
91
97
  });
92
98
  useTreeViewFocus.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
93
99
  disabledItemsFocusable: params.disabledItemsFocusable ?? false
94
- });
100
+ });
101
+ useTreeViewFocus.params = {
102
+ onNodeFocus: true
103
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useTreeViewId", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useTreeViewId.useTreeViewId;
10
+ }
11
+ });
12
+ var _useTreeViewId = require("./useTreeViewId");