@fluentui/react-tree 9.0.0-beta.2 → 9.0.0-beta.20

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 (267) hide show
  1. package/CHANGELOG.json +1028 -1
  2. package/CHANGELOG.md +281 -2
  3. package/dist/index.d.ts +244 -99
  4. package/lib/Tree.js +0 -1
  5. package/lib/Tree.js.map +1 -1
  6. package/lib/TreeItem.js +0 -1
  7. package/lib/TreeItem.js.map +1 -1
  8. package/lib/TreeItemAside.js +1 -0
  9. package/lib/TreeItemAside.js.map +1 -0
  10. package/lib/TreeItemLayout.js +0 -1
  11. package/lib/TreeItemLayout.js.map +1 -1
  12. package/lib/TreeItemPersonaLayout.js +0 -1
  13. package/lib/TreeItemPersonaLayout.js.map +1 -1
  14. package/lib/components/Tree/Tree.js +6 -8
  15. package/lib/components/Tree/Tree.js.map +1 -1
  16. package/lib/components/Tree/Tree.types.js +1 -2
  17. package/lib/components/Tree/Tree.types.js.map +1 -1
  18. package/lib/components/Tree/index.js +1 -2
  19. package/lib/components/Tree/index.js.map +1 -1
  20. package/lib/components/Tree/renderTree.js +7 -13
  21. package/lib/components/Tree/renderTree.js.map +1 -1
  22. package/lib/components/Tree/useRootTree.js +145 -0
  23. package/lib/components/Tree/useRootTree.js.map +1 -0
  24. package/lib/components/Tree/useSubtree.js +35 -0
  25. package/lib/components/Tree/useSubtree.js.map +1 -0
  26. package/lib/components/Tree/useTree.js +9 -103
  27. package/lib/components/Tree/useTree.js.map +1 -1
  28. package/lib/components/Tree/useTreeContextValues.js +12 -22
  29. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  30. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  31. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  32. package/lib/components/TreeItem/TreeItem.js +16 -9
  33. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  34. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  35. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  36. package/lib/components/TreeItem/index.js +1 -2
  37. package/lib/components/TreeItem/index.js.map +1 -1
  38. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  39. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItem.js +114 -234
  41. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  43. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  44. package/lib/components/TreeItem/useTreeItemStyles.styles.js +102 -0
  45. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  46. package/lib/components/TreeItemAside/TreeItemAside.js +13 -0
  47. package/lib/components/TreeItemAside/TreeItemAside.js.map +1 -0
  48. package/lib/components/TreeItemAside/TreeItemAside.types.js +1 -0
  49. package/lib/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  50. package/lib/components/TreeItemAside/index.js +5 -0
  51. package/lib/components/TreeItemAside/index.js.map +1 -0
  52. package/lib/components/TreeItemAside/renderTreeItemAside.js +14 -0
  53. package/lib/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  54. package/lib/components/TreeItemAside/useTreeItemAside.js +30 -0
  55. package/lib/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  56. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js +47 -0
  57. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemChevron.js +24 -0
  59. package/lib/components/TreeItemChevron.js.map +1 -0
  60. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  61. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  62. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  63. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  64. package/lib/components/TreeItemLayout/index.js +1 -2
  65. package/lib/components/TreeItemLayout/index.js.map +1 -1
  66. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +5 -21
  67. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  68. package/lib/components/TreeItemLayout/useTreeItemLayout.js +38 -39
  69. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  70. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +138 -0
  71. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  72. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  73. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  74. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  75. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  76. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  77. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  78. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +7 -27
  79. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  80. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +37 -48
  81. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  82. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  83. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  84. package/lib/components/TreeItemPersonaLayout/{useTreeItemPersonaLayoutStyles.js → useTreeItemPersonaLayoutStyles.styles.js} +51 -30
  85. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  86. package/lib/contexts/index.js +0 -1
  87. package/lib/contexts/index.js.map +1 -1
  88. package/lib/contexts/treeContext.js +9 -14
  89. package/lib/contexts/treeContext.js.map +1 -1
  90. package/lib/contexts/treeItemContext.js +13 -10
  91. package/lib/contexts/treeItemContext.js.map +1 -1
  92. package/lib/hooks/index.js +0 -1
  93. package/lib/hooks/index.js.map +1 -1
  94. package/lib/hooks/useFlatTree.js +71 -34
  95. package/lib/hooks/useFlatTree.js.map +1 -1
  96. package/lib/hooks/useFlatTreeNavigation.js +62 -62
  97. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  98. package/lib/hooks/useHTMLElementWalker.js +78 -76
  99. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  100. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  101. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  102. package/lib/hooks/useOpenItemsState.js +18 -15
  103. package/lib/hooks/useOpenItemsState.js.map +1 -1
  104. package/lib/hooks/useRovingTabIndexes.js +46 -45
  105. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  106. package/lib/index.js +1 -1
  107. package/lib/index.js.map +1 -1
  108. package/lib/utils/ImmutableSet.js +27 -30
  109. package/lib/utils/ImmutableSet.js.map +1 -1
  110. package/lib/utils/assert.js +5 -5
  111. package/lib/utils/assert.js.map +1 -1
  112. package/lib/utils/createFlatTreeItems.js +120 -0
  113. package/lib/utils/createFlatTreeItems.js.map +1 -0
  114. package/lib/utils/flattenTree.js +58 -28
  115. package/lib/utils/flattenTree.js.map +1 -1
  116. package/lib/utils/nextTypeAheadElement.js +11 -12
  117. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  118. package/lib/utils/normalizeOpenItems.js +6 -5
  119. package/lib/utils/normalizeOpenItems.js.map +1 -1
  120. package/lib/utils/tokens.js +13 -14
  121. package/lib/utils/tokens.js.map +1 -1
  122. package/lib/utils/treeItemFilter.js +2 -3
  123. package/lib/utils/treeItemFilter.js.map +1 -1
  124. package/lib-commonjs/Tree.js +3 -5
  125. package/lib-commonjs/Tree.js.map +1 -1
  126. package/lib-commonjs/TreeItem.js +3 -5
  127. package/lib-commonjs/TreeItem.js.map +1 -1
  128. package/lib-commonjs/TreeItemAside.js +6 -0
  129. package/lib-commonjs/TreeItemAside.js.map +1 -0
  130. package/lib-commonjs/TreeItemLayout.js +3 -5
  131. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  132. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  133. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  134. package/lib-commonjs/components/Tree/Tree.js +17 -23
  135. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  136. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  137. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  138. package/lib-commonjs/components/Tree/index.js +8 -10
  139. package/lib-commonjs/components/Tree/index.js.map +1 -1
  140. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  141. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  142. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  143. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  144. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  145. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  146. package/lib-commonjs/components/Tree/useTree.js +16 -116
  147. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  148. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  149. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  150. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  151. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  153. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  154. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  155. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  156. package/lib-commonjs/components/TreeItem/index.js +7 -9
  157. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  158. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  159. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  160. package/lib-commonjs/components/TreeItem/useTreeItem.js +124 -251
  161. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  162. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  163. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  164. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +206 -0
  165. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js +19 -0
  167. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js.map +1 -0
  168. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js +4 -0
  169. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  170. package/lib-commonjs/components/TreeItemAside/index.js +10 -0
  171. package/lib-commonjs/components/TreeItemAside/index.js.map +1 -0
  172. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js +20 -0
  173. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  174. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js +31 -0
  175. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  176. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js +90 -0
  177. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  178. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  179. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  180. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  181. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  182. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  183. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  184. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  185. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  186. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +11 -28
  187. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  188. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +45 -52
  189. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  190. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +221 -0
  191. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  192. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  193. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  194. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  195. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  196. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  197. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  198. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +14 -35
  199. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  200. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +44 -61
  201. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  202. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  203. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  204. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +230 -0
  205. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  206. package/lib-commonjs/contexts/index.js +4 -6
  207. package/lib-commonjs/contexts/index.js.map +1 -1
  208. package/lib-commonjs/contexts/treeContext.js +23 -18
  209. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  210. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  211. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  212. package/lib-commonjs/hooks/index.js +5 -7
  213. package/lib-commonjs/hooks/index.js.map +1 -1
  214. package/lib-commonjs/hooks/useFlatTree.js +79 -52
  215. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  216. package/lib-commonjs/hooks/useFlatTreeNavigation.js +73 -72
  217. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  218. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  219. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  220. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  221. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  222. package/lib-commonjs/hooks/useOpenItemsState.js +27 -22
  223. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  224. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  225. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  226. package/lib-commonjs/index.js +52 -181
  227. package/lib-commonjs/index.js.map +1 -1
  228. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  229. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  230. package/lib-commonjs/utils/assert.js +11 -9
  231. package/lib-commonjs/utils/assert.js.map +1 -1
  232. package/lib-commonjs/utils/createFlatTreeItems.js +132 -0
  233. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  234. package/lib-commonjs/utils/flattenTree.js +25 -33
  235. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  236. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  237. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  238. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  239. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  240. package/lib-commonjs/utils/tokens.js +28 -20
  241. package/lib-commonjs/utils/tokens.js.map +1 -1
  242. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  243. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  244. package/package.json +23 -17
  245. package/lib/components/Tree/useTreeStyles.js +0 -20
  246. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  247. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  248. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  249. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  250. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  251. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  252. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  253. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  254. package/lib/utils/createVisibleFlatTree.js +0 -80
  255. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  256. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  257. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  258. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  259. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  260. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  261. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  262. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  263. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  264. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  265. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  266. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  267. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { ArrowRight } from '@fluentui/keyboard-keys';
6
6
  import { ArrowUp } from '@fluentui/keyboard-keys';
7
7
  import type { AvatarContextValue } from '@fluentui/react-avatar';
8
8
  import type { AvatarSize } from '@fluentui/react-avatar';
9
- import type { ButtonContextValue } from '@fluentui/react-button';
9
+ import { ButtonContextValue } from '@fluentui/react-button';
10
10
  import type { ComponentProps } from '@fluentui/react-utilities';
11
11
  import type { ComponentState } from '@fluentui/react-utilities';
12
12
  import { ContextSelector } from '@fluentui/react-context-selector';
@@ -21,11 +21,51 @@ import { ProviderProps } from 'react';
21
21
  import * as React_2 from 'react';
22
22
  import type { Slot } from '@fluentui/react-utilities';
23
23
  import type { SlotClassNames } from '@fluentui/react-utilities';
24
+ import { SlotRenderFunction } from '@fluentui/react-utilities';
25
+
26
+ declare type FlattenedTreeItem<Props extends TreeItemProps<unknown>> = FlatTreeItemProps<NonNullable<Props['value']>> & Props;
24
27
 
25
28
  /**
26
29
  * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`
30
+ * @example
31
+ * ```tsx
32
+ * const defaultItems = flattenTree_unstable([
33
+ * {
34
+ * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,
35
+ * subtree: [
36
+ * {
37
+ * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,
38
+ * },
39
+ * {
40
+ * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,
41
+ * },
42
+ * {
43
+ * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,
44
+ * },
45
+ * ],
46
+ * },
47
+ * {
48
+ * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,
49
+ * subtree: [
50
+ * {
51
+ * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,
52
+ * subtree: [
53
+ * {
54
+ * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,
55
+ * subtree: [
56
+ * {
57
+ * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,
58
+ * },
59
+ * ],
60
+ * },
61
+ * ],
62
+ * },
63
+ * ],
64
+ * },
65
+ * ]);
66
+ * ```
27
67
  */
28
- export declare const flattenTree_unstable: (items: NestedTreeItem[]) => FlatTreeItemProps[];
68
+ export declare const flattenTree_unstable: <Props extends TreeItemProps<unknown>>(items: NestedTreeItem<Props>[]) => FlattenedTreeItem<Props>[];
29
69
 
30
70
  /**
31
71
  * FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems
@@ -37,13 +77,13 @@ export declare const flattenTree_unstable: (items: NestedTreeItem[]) => FlatTree
37
77
  *
38
78
  * On simple scenarios it is advised to simply use a nested structure instead.
39
79
  */
40
- export declare type FlatTree = {
80
+ export declare type FlatTree<Props extends FlatTreeItemProps<unknown> = FlatTreeItemProps> = {
41
81
  /**
42
82
  * returns the properties required for the Tree component to work properly.
43
83
  * That includes:
44
84
  * `openItems`, `onOpenChange`, `onNavigation_unstable` and `ref`
45
85
  */
46
- getTreeProps(): FlatTreeProps;
86
+ getTreeProps(): FlatTreeProps<Props['value']>;
47
87
  /**
48
88
  * internal method used to react to an `onNavigation` event.
49
89
  * This method ensures proper navigation on keyboard and mouse interaction.
@@ -57,7 +97,7 @@ export declare type FlatTree = {
57
97
  * event.preventDefault();
58
98
  * const nextItem = tree.getNextNavigableItem(data);
59
99
  * // scroll to item using virtualization scroll mechanism
60
- * if (nextItem && !targetDocument.getElementById(nextItem.id)) {
100
+ * if (nextItem && document.getElementById(nextItem.id)) {
61
101
  * listRef.current.scrollToItem(nextItem.index);
62
102
  * }
63
103
  * // wait for scrolling to happen and then invoke navigate method
@@ -67,39 +107,51 @@ export declare type FlatTree = {
67
107
  * };
68
108
  *```
69
109
  */
70
- navigate(data: TreeNavigationData_unstable): void;
110
+ navigate(data: TreeNavigationData_unstable<Props['value']>): void;
71
111
  /**
72
112
  * returns next item to be focused on a navigation.
73
113
  * This method is provided to decouple the element that needs to be focused from
74
114
  * the action of focusing it itself.
115
+ *
116
+ * On the case of TypeAhead navigation this method returns the current item.
75
117
  */
76
- getNextNavigableItem(data: TreeNavigationData_unstable): FlatTreeItem | null;
77
- /**
78
- * returns a single flat tree item by id without iterating over the whole collection
79
- */
80
- getItem(id: string): FlatTreeItem | null;
118
+ getNextNavigableItem(visibleItems: FlatTreeItem<Props>[], data: TreeNavigationData_unstable<Props['value']>): FlatTreeItem<Props> | undefined;
81
119
  /**
82
- * returns an iterable containing all visually available flat tree items
120
+ * an iterable containing all visually available flat tree items
83
121
  */
84
- items(): Iterable<FlatTreeItem>;
122
+ items(): IterableIterator<FlatTreeItem<Props>>;
85
123
  };
86
124
 
87
- export declare type FlatTreeItem = {
88
- getTreeItemProps(): Required<Pick<TreeItemProps, 'id' | 'aria-setsize' | 'aria-level' | 'aria-posinset' | 'leaf'>> & TreeItemProps;
89
- parentId?: string;
90
- childrenSize: number;
125
+ /**
126
+ * The item that is returned by `useFlatTree`, it represents a wrapper around the properties provided to
127
+ * `useFlatTree` but with extra information that might be useful on flat tree scenarios
128
+ */
129
+ export declare type FlatTreeItem<Props extends FlatTreeItemProps<unknown> = FlatTreeItemProps> = {
91
130
  index: number;
92
- id: string;
93
131
  level: number;
132
+ childrenSize: number;
133
+ value: Props['value'];
134
+ parentValue: Props['parentValue'];
135
+ /**
136
+ * A reference to the element that will render the `TreeItem`,
137
+ * this is necessary for nodes with parents (to ensure child to parent navigation),
138
+ * if a node has no parent then this reference will be null.
139
+ */
140
+ ref: React_2.RefObject<HTMLDivElement>;
141
+ getTreeItemProps(): Required<Pick<Props, 'value' | 'aria-setsize' | 'aria-level' | 'aria-posinset' | 'itemType'>> & Omit<Props, 'parentValue'>;
94
142
  };
95
143
 
96
- export declare type FlatTreeItemProps = Required<Pick<TreeItemProps, 'id'>> & TreeItemProps & {
97
- parentId?: string;
144
+ export declare type FlatTreeItemProps<Value = string> = Omit<TreeItemProps<Value>, 'itemType'> & Partial<Pick<TreeItemProps<Value>, 'itemType'>> & {
145
+ value: Value;
146
+ parentValue?: Value;
98
147
  };
99
148
 
100
- export declare type FlatTreeProps = Required<Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & {
149
+ declare type FlatTreeOptions<Props extends FlatTreeItemProps<unknown> = FlatTreeItemProps> = Pick<TreeProps<Props['value']>, 'openItems' | 'defaultOpenItems' | 'onOpenChange' | 'onNavigation_unstable'>;
150
+
151
+ export declare type FlatTreeProps<Value = string> = Required<Pick<TreeProps<Value>, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'>> & {
101
152
  ref: React_2.Ref<HTMLDivElement>;
102
- }>;
153
+ openItems: ImmutableSet<Value>;
154
+ };
103
155
 
104
156
  declare interface ImmutableSet<Value> {
105
157
  /**
@@ -127,10 +179,12 @@ declare interface ImmutableSet<Value> {
127
179
  [Symbol.iterator](): IterableIterator<Value>;
128
180
  }
129
181
 
130
- export declare type NestedTreeItem = Omit<TreeItemProps, 'subtree'> & {
131
- subtree?: NestedTreeItem[];
182
+ export declare type NestedTreeItem<Props extends TreeItemProps<unknown>> = Omit<Props, 'subtree' | 'itemType'> & {
183
+ subtree?: NestedTreeItem<Props>[];
132
184
  };
133
185
 
186
+ declare type OmitWithoutExpanding<P, K extends string | number | symbol> = P extends unknown ? Omit<P, K> : P;
187
+
134
188
  export declare const renderTree_unstable: (state: TreeState, contextValues: TreeContextValues) => JSX.Element;
135
189
 
136
190
  /**
@@ -138,6 +192,11 @@ export declare const renderTree_unstable: (state: TreeState, contextValues: Tree
138
192
  */
139
193
  export declare const renderTreeItem_unstable: (state: TreeItemState, contextValues: TreeItemContextValues) => JSX.Element;
140
194
 
195
+ /**
196
+ * Render the final JSX of TreeItemAside
197
+ */
198
+ export declare const renderTreeItemAside_unstable: (state: TreeItemAsideState) => JSX.Element | null;
199
+
141
200
  /**
142
201
  * Render the final JSX of TreeItemLayout
143
202
  */
@@ -156,7 +215,22 @@ export declare const renderTreeItemPersonaLayout_unstable: (state: TreeItemPerso
156
215
  * an item representing a folder can be expanded to reveal the contents of the folder,
157
216
  * which may be files, folders, or both.
158
217
  */
159
- export declare const Tree: ForwardRefComponent<TreeProps>;
218
+ export declare const Tree: React_2.ForwardRefExoticComponent<Omit<TreeSlots, "root"> & Omit<{
219
+ as?: "div" | undefined;
220
+ } & Pick<React_2.DetailedHTMLProps<React_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
221
+ ref?: ((instance: HTMLDivElement | null) => void) | React_2.RefObject<HTMLDivElement> | null | undefined;
222
+ } & {
223
+ children?: React_2.ReactNode | SlotRenderFunction<Pick<React_2.DetailedHTMLProps<React_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
224
+ ref?: ((instance: HTMLDivElement | null) => void) | React_2.RefObject<HTMLDivElement> | null | undefined;
225
+ }>;
226
+ }, "ref"> & {
227
+ appearance?: "transparent" | "subtle" | "subtle-alpha" | undefined;
228
+ size?: "small" | "medium" | undefined;
229
+ openItems?: Iterable<string> | undefined;
230
+ defaultOpenItems?: Iterable<string> | undefined;
231
+ onOpenChange?(event: React_2.KeyboardEvent<HTMLElement> | React_2.MouseEvent<HTMLElement, MouseEvent>, data: TreeOpenChangeData<string>): void;
232
+ onNavigation_unstable?(event: React_2.KeyboardEvent<HTMLElement> | React_2.MouseEvent<HTMLElement, MouseEvent>, data: TreeNavigationData_unstable<string>): void;
233
+ } & React_2.RefAttributes<HTMLDivElement>> & (<Value = string>(props: TreeProps<Value>) => JSX.Element);
160
234
 
161
235
  export declare const treeClassNames: SlotClassNames<TreeSlots>;
162
236
 
@@ -164,12 +238,11 @@ export declare type TreeContextValue = {
164
238
  level: number;
165
239
  appearance: 'subtle' | 'subtle-alpha' | 'transparent';
166
240
  size: 'small' | 'medium';
167
- openItems: ImmutableSet<TreeItemId>;
241
+ openItems: ImmutableSet<unknown>;
168
242
  /**
169
- * Requests dialog main component to update it's internal open state
243
+ * requests root Tree component to respond to some tree item event,
170
244
  */
171
- requestOpenChange(data: TreeOpenChangeData): void;
172
- requestNavigation(data: TreeNavigationData_unstable): void;
245
+ requestTreeResponse(request: TreeItemRequest<unknown>): void;
173
246
  };
174
247
 
175
248
  declare type TreeContextValues = {
@@ -177,29 +250,96 @@ declare type TreeContextValues = {
177
250
  };
178
251
 
179
252
  /**
180
- * TreeItem component - TODO: add more docs
253
+ * The `TreeItem` component represents a single item in a tree.
254
+ * It expects a certain order of children to work properly: the first child should be the node itself,
255
+ * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.
256
+ * This order follows the same order as document traversal for the TreeWalker API in JavaScript:
257
+ * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.
258
+ * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,
259
+ * which should be used as a direct child of TreeItem.
260
+ *
261
+ * When a TreeItem has nested child subtree, an expand/collapse control is displayed,
262
+ * allowing the user to show or hide the children.
263
+ */
264
+ export declare const TreeItem: React_2.ForwardRefExoticComponent<Omit<Partial<TreeItemSlots>, "root"> & Omit<{
265
+ as?: "div" | undefined;
266
+ } & Pick<React_2.DetailedHTMLProps<React_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
267
+ ref?: ((instance: HTMLDivElement | null) => void) | React_2.RefObject<HTMLDivElement> | null | undefined;
268
+ } & {
269
+ children?: React_2.ReactNode | SlotRenderFunction<Pick<React_2.DetailedHTMLProps<React_2.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
270
+ ref?: ((instance: HTMLDivElement | null) => void) | React_2.RefObject<HTMLDivElement> | null | undefined;
271
+ }>;
272
+ } & {
273
+ style?: TreeItemCSSProperties | undefined;
274
+ }, "ref"> & {
275
+ value?: string | undefined;
276
+ itemType: TreeItemType;
277
+ } & React_2.RefAttributes<HTMLDivElement>> & (<Value = string>(props: TreeItemProps<Value>) => JSX.Element);
278
+
279
+ /**
280
+ * TreeItemAside component - represents a custom set of actionable elements that will be visible when a certain
281
+ * `TreeItem` is currently "active".
282
+ */
283
+ export declare const TreeItemAside: ForwardRefComponent<TreeItemAsideProps>;
284
+
285
+ export declare const treeItemAsideClassNames: SlotClassNames<TreeItemAsideSlots>;
286
+
287
+ /**
288
+ * TreeItemAside Props
289
+ */
290
+ export declare type TreeItemAsideProps = ComponentProps<TreeItemAsideSlots> & {
291
+ /**
292
+ * boolean indicating if the aside content should behave as "actions"
293
+ *
294
+ * actionable elements are normally buttons, menus, or other focusable elements.
295
+ * Those elements are only visibly available if the given tree item is currently active.
296
+ */
297
+ actions?: boolean;
298
+ /**
299
+ * Forces visibility of the aside content, even if they're actions
300
+ */
301
+ visible?: true;
302
+ };
303
+
304
+ export declare type TreeItemAsideSlots = {
305
+ root: Slot<'div'>;
306
+ };
307
+
308
+ /**
309
+ * State used in rendering TreeItemAside
181
310
  */
182
- export declare const TreeItem: ForwardRefComponent<TreeItemProps>;
311
+ export declare type TreeItemAsideState = ComponentState<TreeItemAsideSlots> & {
312
+ actions: boolean;
313
+ visible: boolean;
314
+ buttonContextValue: ButtonContextValue;
315
+ };
183
316
 
184
317
  export declare const treeItemClassNames: SlotClassNames<TreeItemSlots>;
185
318
 
186
319
  declare type TreeItemContextValue = {
187
320
  isActionsVisible: boolean;
321
+ isAsideVisible: boolean;
322
+ actionsRef: React_2.Ref<HTMLDivElement>;
323
+ expandIconRef: React_2.Ref<HTMLDivElement>;
324
+ layoutRef: React_2.Ref<HTMLDivElement>;
325
+ subtreeRef: React_2.Ref<HTMLDivElement>;
326
+ value: unknown;
327
+ itemType: TreeItemType;
328
+ open: boolean;
188
329
  };
189
330
 
190
331
  declare type TreeItemContextValues = {
191
332
  treeItem: TreeItemContextValue;
192
- button: ButtonContextValue;
193
333
  };
194
334
 
195
335
  declare type TreeItemCSSProperties = React_2.CSSProperties & {
196
336
  [treeItemLevelToken]?: string | number;
197
337
  };
198
338
 
199
- export declare type TreeItemId = string | number;
200
-
201
339
  /**
202
- * TreeItemLayout component - TODO: add more docs
340
+ * The `TreeItemLayout` component is used as a child of `TreeItem` to define the content and layout of a tree item.
341
+ * It provides a consistent visual structure for tree items in a `Tree` component.
342
+ * This component should only be used as a direct child of `TreeItem`.
203
343
  */
204
344
  export declare const TreeItemLayout: ForwardRefComponent<TreeItemLayoutProps>;
205
345
 
@@ -212,26 +352,32 @@ export declare type TreeItemLayoutProps = ComponentProps<Partial<TreeItemLayoutS
212
352
 
213
353
  export declare type TreeItemLayoutSlots = {
214
354
  root: Slot<'div'>;
355
+ /**
356
+ * Expand icon slot,
357
+ * by default renders a chevron icon to indicate opening and closing
358
+ */
359
+ expandIcon?: Slot<'div'>;
215
360
  /**
216
361
  * Icon slot that renders right before main content
217
362
  */
218
- iconBefore?: Slot<'span'>;
363
+ iconBefore?: Slot<'div'>;
219
364
  /**
220
365
  * Icon slot that renders right after main content
221
366
  */
222
- iconAfter?: Slot<'span'>;
223
- aside?: Slot<'span'>;
367
+ iconAfter?: Slot<'div'>;
224
368
  };
225
369
 
226
370
  /**
227
371
  * State used in rendering TreeItemLayout
228
372
  */
229
- export declare type TreeItemLayoutState = ComponentState<TreeItemLayoutSlots> & TreeItemContextValue;
373
+ export declare type TreeItemLayoutState = ComponentState<TreeItemLayoutSlots>;
230
374
 
231
375
  export declare const treeItemLevelToken: "--fluent-TreeItem--level";
232
376
 
233
377
  /**
234
- * TreeItemPersonaLayout component - TODO: add more docs
378
+ * The `TreeItemPersonaLayout` component is used as a child of `TreeItem` to display a `TreeItem` with a media (typically an avatar) and a description.
379
+ * It provides a more visually appealing representation of a `TreeItem` and is typically used to display a list of people or topics.
380
+ * This component should only be used as a direct child of `TreeItem`.
235
381
  */
236
382
  export declare const TreeItemPersonaLayout: ForwardRefComponent<TreeItemPersonaLayoutProps>;
237
383
 
@@ -247,120 +393,101 @@ declare type TreeItemPersonaLayoutContextValues = {
247
393
  export declare type TreeItemPersonaLayoutProps = ComponentProps<Partial<TreeItemPersonaLayoutSlots>>;
248
394
 
249
395
  export declare type TreeItemPersonaLayoutSlots = {
250
- root: Slot<'span'>;
396
+ root: NonNullable<Slot<'div'>>;
397
+ /**
398
+ * Expand icon slot,
399
+ * by default renders a chevron icon to indicate opening and closing
400
+ */
401
+ expandIcon?: Slot<'div'>;
251
402
  /**
252
403
  * Avatar to display.
253
404
  */
254
- media: NonNullable<Slot<'span'>>;
405
+ media: NonNullable<Slot<'div'>>;
255
406
  /**
256
407
  * Main text. Children of the root slot are automatically rendered here
257
408
  */
258
- main: Slot<'span'>;
409
+ main: NonNullable<Slot<'div'>>;
259
410
  /**
260
411
  * Secondary text that describes or complements the main text
261
412
  */
262
- description?: Slot<'span'>;
263
- /**
264
- * aside text that works as extra textual information
265
- */
266
- aside?: Slot<'span'>;
413
+ description?: Slot<'div'>;
267
414
  /**
268
415
  * A layout wrapper for the main and description slots
269
416
  */
270
- content: Slot<'div'>;
417
+ content: NonNullable<Slot<'div'>>;
271
418
  };
272
419
 
273
420
  /**
274
421
  * State used in rendering TreeItemPersonaLayout
275
422
  */
276
- export declare type TreeItemPersonaLayoutState = ComponentState<TreeItemPersonaLayoutSlots> & TreeItemContextValue & {
423
+ export declare type TreeItemPersonaLayoutState = ComponentState<TreeItemPersonaLayoutSlots> & {
277
424
  avatarSize: AvatarSize;
278
425
  };
279
426
 
280
427
  /**
281
428
  * TreeItem Props
282
429
  */
283
- export declare type TreeItemProps = ComponentProps<Partial<TreeItemSlots>> & {
284
- /**
285
- * If a TreeItem is a leaf, it'll not present the `expandIcon` slot by default.
286
- * This attribute is used to force the decision if a TreeItem is a leaf or not. By not providing this property
287
- * this will be inferred by the presence of a subtree as part of the TreeItem children.
288
- */
289
- leaf?: boolean;
430
+ export declare type TreeItemProps<Value = string> = ComponentProps<Partial<TreeItemSlots>> & {
431
+ value?: Value;
432
+ itemType: TreeItemType;
290
433
  };
291
434
 
292
- export declare const TreeItemProvider: React_2.Provider<TreeItemContextValue | undefined>;
435
+ export declare const TreeItemProvider: React_2.Provider<TreeItemContextValue | undefined> & React_2.FC<React_2.ProviderProps<TreeItemContextValue | undefined>>;
436
+
437
+ declare type TreeItemRequest<Value> = {
438
+ itemType: TreeItemType;
439
+ } & (OmitWithoutExpanding<TreeOpenChangeData<Value>, 'open' | 'target'> | OmitWithoutExpanding<TreeNavigationData_unstable<Value>, 'target'>);
293
440
 
294
441
  export declare type TreeItemSlots = {
295
442
  root: Slot<ExtractSlotProps<Slot<'div'> & {
296
443
  style?: TreeItemCSSProperties;
297
444
  }>>;
298
- content: NonNullable<Slot<'div'>>;
299
- subtree?: Slot<'span'>;
300
- /**
301
- * Expand icon slot,
302
- * by default renders a chevron icon to indicate opening and closing
303
- */
304
- expandIcon?: Slot<'span'>;
305
- /**
306
- * Actions slot that renders on the end of tree item
307
- * when the item is hovered/focused
308
- */
309
- actions?: Slot<'span'>;
310
445
  };
311
446
 
312
447
  /**
313
448
  * State used in rendering TreeItem
314
449
  */
315
- export declare type TreeItemState = ComponentState<TreeItemSlots> & {
316
- open: boolean;
317
- isLeaf: boolean;
450
+ export declare type TreeItemState = ComponentState<TreeItemSlots> & TreeItemContextValue & {
318
451
  level: number;
319
- /**
320
- * By design, a button included on the actions slot should be small
321
- */
322
- buttonSize: 'small';
323
- isActionsVisible: boolean;
452
+ itemType: TreeItemType;
324
453
  };
325
454
 
326
- export declare type TreeNavigationData_unstable = {
327
- event: React_2.MouseEvent<HTMLElement>;
455
+ declare type TreeItemType = 'leaf' | 'branch';
456
+
457
+ export declare type TreeNavigationData_unstable<Value = string> = {
458
+ value: Value;
328
459
  target: HTMLElement;
460
+ } & ({
461
+ event: React_2.MouseEvent<HTMLElement>;
329
462
  type: 'Click';
330
463
  } | {
331
464
  event: React_2.KeyboardEvent<HTMLElement>;
332
- target: HTMLElement;
333
465
  type: 'TypeAhead';
334
466
  } | {
335
467
  event: React_2.KeyboardEvent<HTMLElement>;
336
- target: HTMLElement;
337
468
  type: typeof ArrowRight;
338
469
  } | {
339
470
  event: React_2.KeyboardEvent<HTMLElement>;
340
- target: HTMLElement;
341
471
  type: typeof ArrowLeft;
342
472
  } | {
343
473
  event: React_2.KeyboardEvent<HTMLElement>;
344
- target: HTMLElement;
345
474
  type: typeof ArrowUp;
346
475
  } | {
347
476
  event: React_2.KeyboardEvent<HTMLElement>;
348
- target: HTMLElement;
349
477
  type: typeof ArrowDown;
350
478
  } | {
351
479
  event: React_2.KeyboardEvent<HTMLElement>;
352
- target: HTMLElement;
353
480
  type: typeof Home;
354
481
  } | {
355
482
  event: React_2.KeyboardEvent<HTMLElement>;
356
- target: HTMLElement;
357
483
  type: typeof End;
358
- };
484
+ });
359
485
 
360
486
  export declare type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];
361
487
 
362
- export declare type TreeOpenChangeData = {
488
+ export declare type TreeOpenChangeData<Value = string> = {
363
489
  open: boolean;
490
+ value: Value;
364
491
  } & ({
365
492
  event: React_2.MouseEvent<HTMLElement>;
366
493
  target: HTMLElement;
@@ -385,7 +512,7 @@ export declare type TreeOpenChangeData = {
385
512
 
386
513
  export declare type TreeOpenChangeEvent = TreeOpenChangeData['event'];
387
514
 
388
- export declare type TreeProps = ComponentProps<TreeSlots> & {
515
+ export declare type TreeProps<Value = string> = ComponentProps<TreeSlots> & {
389
516
  /**
390
517
  * A tree item can have various appearances:
391
518
  * - 'subtle' (default): The default tree item styles.
@@ -404,13 +531,13 @@ export declare type TreeProps = ComponentProps<TreeSlots> & {
404
531
  * Controls the state of the open tree items.
405
532
  * These property is ignored for subtrees.
406
533
  */
407
- openItems?: Iterable<TreeItemId>;
534
+ openItems?: Iterable<Value>;
408
535
  /**
409
536
  * This refers to a list of ids of opened tree items.
410
537
  * Default value for the uncontrolled state of open tree items.
411
538
  * These property is ignored for subtrees.
412
539
  */
413
- defaultOpenItems?: Iterable<TreeItemId>;
540
+ defaultOpenItems?: Iterable<Value>;
414
541
  /**
415
542
  * Callback fired when the component changes value from open state.
416
543
  * These property is ignored for subtrees.
@@ -419,7 +546,7 @@ export declare type TreeProps = ComponentProps<TreeSlots> & {
419
546
  * @param data - A data object with relevant information,
420
547
  * such as open value and type of interaction that created the event.
421
548
  */
422
- onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData): void;
549
+ onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData<Value>): void;
423
550
  /**
424
551
  * Callback fired when navigation happens inside the component.
425
552
  * These property is ignored for subtrees.
@@ -429,7 +556,7 @@ export declare type TreeProps = ComponentProps<TreeSlots> & {
429
556
  * @param event - a React's Synthetic event
430
557
  * @param data - A data object with relevant information,
431
558
  */
432
- onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable): void;
559
+ onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable<Value>): void;
433
560
  };
434
561
 
435
562
  export declare const TreeProvider: Provider<TreeContextValue | undefined> & FC<ProviderProps<TreeContextValue | undefined>>;
@@ -441,7 +568,9 @@ export declare type TreeSlots = {
441
568
  /**
442
569
  * State used in rendering Tree
443
570
  */
444
- export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue;
571
+ export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue & {
572
+ open: boolean;
573
+ };
445
574
 
446
575
  /**
447
576
  * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems
@@ -452,10 +581,10 @@ export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue;
452
581
  * It should be used on cases where more complex interactions with a Tree is required.
453
582
  * On simple scenarios it is advised to simply use a nested structure instead.
454
583
  *
455
- * @param items - a list of tree items
584
+ * @param flatTreeItemProps - a list of tree items
456
585
  * @param options - in case control over the internal openItems is required
457
586
  */
458
- export declare function useFlatTree_unstable(items: FlatTreeItemProps[], options?: Pick<TreeProps, 'openItems' | 'defaultOpenItems'>): FlatTree;
587
+ export declare function useFlatTree_unstable<Props extends FlatTreeItemProps<unknown> = FlatTreeItemProps>(flatTreeItemProps: Props[], options?: FlatTreeOptions<Props>): FlatTree<Props>;
459
588
 
460
589
  /**
461
590
  * Create the state required to render Tree.
@@ -481,9 +610,25 @@ export declare function useTreeContextValues_unstable(state: TreeState): TreeCon
481
610
  * @param props - props from this instance of TreeItem
482
611
  * @param ref - reference to root HTMLElement of TreeItem
483
612
  */
484
- export declare const useTreeItem_unstable: (props: TreeItemProps, ref: React_2.Ref<HTMLDivElement>) => TreeItemState;
613
+ export declare function useTreeItem_unstable<Value = string>(props: TreeItemProps<Value>, ref: React_2.Ref<HTMLDivElement>): TreeItemState;
614
+
615
+ /**
616
+ * Create the state required to render TreeItemAside.
617
+ *
618
+ * The returned state can be modified with hooks such as useTreeItemAsideStyles_unstable,
619
+ * before being passed to renderTreeItemAside_unstable.
620
+ *
621
+ * @param props - props from this instance of TreeItemAside
622
+ * @param ref - reference to root HTMLElement of TreeItemAside
623
+ */
624
+ export declare const useTreeItemAside_unstable: (props: TreeItemAsideProps, ref: React_2.Ref<HTMLElement>) => TreeItemAsideState;
625
+
626
+ /**
627
+ * Apply styling to the TreeItemAside slots based on the state
628
+ */
629
+ export declare const useTreeItemAsideStyles_unstable: (state: TreeItemAsideState) => TreeItemAsideState;
485
630
 
486
- export declare const useTreeItemContext_unstable: () => TreeItemContextValue;
631
+ export declare const useTreeItemContext_unstable: <T>(selector: ContextSelector<TreeItemContextValue, T>) => T;
487
632
 
488
633
  /**
489
634
  * Create the state required to render TreeItemLayout.
package/lib/Tree.js CHANGED
@@ -1,2 +1 @@
1
1
  export * from './components/Tree/index';
2
- //# sourceMappingURL=Tree.js.map
package/lib/Tree.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/Tree.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './components/Tree/index';\n"]}
1
+ {"version":3,"sources":["Tree.ts"],"sourcesContent":["export * from './components/Tree/index';\n"],"names":[],"mappings":"AAAA,cAAc,0BAA0B"}
package/lib/TreeItem.js CHANGED
@@ -1,2 +1 @@
1
1
  export * from './components/TreeItem/index';
2
- //# sourceMappingURL=TreeItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItem.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/TreeItem.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC","sourcesContent":["export * from './components/TreeItem/index';\n"]}
1
+ {"version":3,"sources":["TreeItem.ts"],"sourcesContent":["export * from './components/TreeItem/index';\n"],"names":[],"mappings":"AAAA,cAAc,8BAA8B"}
@@ -0,0 +1 @@
1
+ export * from './components/TreeItemAside/index';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TreeItemAside.ts"],"sourcesContent":["export * from './components/TreeItemAside/index';\n"],"names":[],"mappings":"AAAA,cAAc,mCAAmC"}
@@ -1,2 +1 @@
1
1
  export * from './components/TreeItemLayout/index';
2
- //# sourceMappingURL=TreeItemLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemLayout.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/TreeItemLayout.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC","sourcesContent":["export * from './components/TreeItemLayout/index';\n"]}
1
+ {"version":3,"sources":["TreeItemLayout.ts"],"sourcesContent":["export * from './components/TreeItemLayout/index';\n"],"names":[],"mappings":"AAAA,cAAc,oCAAoC"}
@@ -1,2 +1 @@
1
1
  export * from './components/TreeItemPersonaLayout/index';
2
- //# sourceMappingURL=TreeItemPersonaLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemPersonaLayout.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/TreeItemPersonaLayout.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC","sourcesContent":["export * from './components/TreeItemPersonaLayout/index';\n"]}
1
+ {"version":3,"sources":["TreeItemPersonaLayout.ts"],"sourcesContent":["export * from './components/TreeItemPersonaLayout/index';\n"],"names":[],"mappings":"AAAA,cAAc,2CAA2C"}