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

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 (244) hide show
  1. package/CHANGELOG.json +1073 -1
  2. package/CHANGELOG.md +295 -2
  3. package/dist/index.d.ts +153 -91
  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/TreeItemLayout.js +0 -1
  9. package/lib/TreeItemLayout.js.map +1 -1
  10. package/lib/TreeItemPersonaLayout.js +0 -1
  11. package/lib/TreeItemPersonaLayout.js.map +1 -1
  12. package/lib/components/Tree/Tree.js +6 -8
  13. package/lib/components/Tree/Tree.js.map +1 -1
  14. package/lib/components/Tree/Tree.types.js +1 -2
  15. package/lib/components/Tree/Tree.types.js.map +1 -1
  16. package/lib/components/Tree/index.js +1 -2
  17. package/lib/components/Tree/index.js.map +1 -1
  18. package/lib/components/Tree/renderTree.js +7 -13
  19. package/lib/components/Tree/renderTree.js.map +1 -1
  20. package/lib/components/Tree/useRootTree.js +145 -0
  21. package/lib/components/Tree/useRootTree.js.map +1 -0
  22. package/lib/components/Tree/useSubtree.js +35 -0
  23. package/lib/components/Tree/useSubtree.js.map +1 -0
  24. package/lib/components/Tree/useTree.js +9 -103
  25. package/lib/components/Tree/useTree.js.map +1 -1
  26. package/lib/components/Tree/useTreeContextValues.js +12 -22
  27. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  28. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  29. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  30. package/lib/components/TreeItem/TreeItem.js +16 -9
  31. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  32. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  33. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  34. package/lib/components/TreeItem/index.js +1 -2
  35. package/lib/components/TreeItem/index.js.map +1 -1
  36. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  37. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  38. package/lib/components/TreeItem/useTreeItem.js +116 -234
  39. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  41. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemStyles.styles.js +100 -0
  43. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  44. package/lib/components/TreeItemChevron.js +24 -0
  45. package/lib/components/TreeItemChevron.js.map +1 -0
  46. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  47. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  48. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  49. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  50. package/lib/components/TreeItemLayout/index.js +1 -2
  51. package/lib/components/TreeItemLayout/index.js.map +1 -1
  52. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +8 -21
  53. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  54. package/lib/components/TreeItemLayout/useTreeItemLayout.js +58 -39
  55. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  56. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +191 -0
  57. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  59. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  60. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  61. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  62. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  63. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  64. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +10 -27
  65. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  66. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +35 -48
  67. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  68. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  69. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  70. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +206 -0
  71. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  72. package/lib/contexts/index.js +0 -1
  73. package/lib/contexts/index.js.map +1 -1
  74. package/lib/contexts/treeContext.js +9 -14
  75. package/lib/contexts/treeContext.js.map +1 -1
  76. package/lib/contexts/treeItemContext.js +13 -10
  77. package/lib/contexts/treeItemContext.js.map +1 -1
  78. package/lib/hooks/index.js +0 -1
  79. package/lib/hooks/index.js.map +1 -1
  80. package/lib/hooks/useFlatTree.js +81 -35
  81. package/lib/hooks/useFlatTree.js.map +1 -1
  82. package/lib/hooks/useFlatTreeNavigation.js +65 -62
  83. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  84. package/lib/hooks/useHTMLElementWalker.js +78 -76
  85. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  86. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  87. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  88. package/lib/hooks/useOpenItemsState.js +21 -15
  89. package/lib/hooks/useOpenItemsState.js.map +1 -1
  90. package/lib/hooks/useRovingTabIndexes.js +46 -45
  91. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  92. package/lib/index.js +0 -1
  93. package/lib/index.js.map +1 -1
  94. package/lib/utils/ImmutableSet.js +27 -30
  95. package/lib/utils/ImmutableSet.js.map +1 -1
  96. package/lib/utils/assert.js +5 -5
  97. package/lib/utils/assert.js.map +1 -1
  98. package/lib/utils/createFlatTreeItems.js +113 -0
  99. package/lib/utils/createFlatTreeItems.js.map +1 -0
  100. package/lib/utils/flattenTree.js +58 -28
  101. package/lib/utils/flattenTree.js.map +1 -1
  102. package/lib/utils/getTreeItemValueFromElement.js +4 -0
  103. package/lib/utils/getTreeItemValueFromElement.js.map +1 -0
  104. package/lib/utils/nextTypeAheadElement.js +11 -12
  105. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  106. package/lib/utils/normalizeOpenItems.js +6 -5
  107. package/lib/utils/normalizeOpenItems.js.map +1 -1
  108. package/lib/utils/tokens.js +13 -14
  109. package/lib/utils/tokens.js.map +1 -1
  110. package/lib/utils/treeItemFilter.js +2 -3
  111. package/lib/utils/treeItemFilter.js.map +1 -1
  112. package/lib-commonjs/Tree.js +3 -5
  113. package/lib-commonjs/Tree.js.map +1 -1
  114. package/lib-commonjs/TreeItem.js +3 -5
  115. package/lib-commonjs/TreeItem.js.map +1 -1
  116. package/lib-commonjs/TreeItemLayout.js +3 -5
  117. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  118. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  119. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  120. package/lib-commonjs/components/Tree/Tree.js +17 -23
  121. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  122. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  123. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  124. package/lib-commonjs/components/Tree/index.js +8 -10
  125. package/lib-commonjs/components/Tree/index.js.map +1 -1
  126. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  127. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  128. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  129. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  130. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  131. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  132. package/lib-commonjs/components/Tree/useTree.js +16 -116
  133. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  134. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  135. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  136. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  137. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  138. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  139. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  140. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  141. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  142. package/lib-commonjs/components/TreeItem/index.js +7 -9
  143. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  144. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  145. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  146. package/lib-commonjs/components/TreeItem/useTreeItem.js +126 -251
  147. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  148. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  149. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  150. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +202 -0
  151. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  153. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  154. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  155. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  156. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  157. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  158. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  159. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  160. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -28
  161. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  162. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +64 -52
  163. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  164. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +321 -0
  165. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  167. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  168. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  169. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  170. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  171. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  172. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -35
  173. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  174. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +42 -61
  175. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  176. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  177. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  178. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +375 -0
  179. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  180. package/lib-commonjs/contexts/index.js +4 -6
  181. package/lib-commonjs/contexts/index.js.map +1 -1
  182. package/lib-commonjs/contexts/treeContext.js +23 -18
  183. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  184. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  185. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  186. package/lib-commonjs/hooks/index.js +5 -7
  187. package/lib-commonjs/hooks/index.js.map +1 -1
  188. package/lib-commonjs/hooks/useFlatTree.js +88 -52
  189. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  190. package/lib-commonjs/hooks/useFlatTreeNavigation.js +76 -72
  191. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  192. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  193. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  194. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  195. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  196. package/lib-commonjs/hooks/useOpenItemsState.js +30 -22
  197. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  198. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  199. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  200. package/lib-commonjs/index.js +46 -181
  201. package/lib-commonjs/index.js.map +1 -1
  202. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  203. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  204. package/lib-commonjs/utils/assert.js +11 -9
  205. package/lib-commonjs/utils/assert.js.map +1 -1
  206. package/lib-commonjs/utils/createFlatTreeItems.js +127 -0
  207. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  208. package/lib-commonjs/utils/flattenTree.js +25 -33
  209. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  210. package/lib-commonjs/utils/getTreeItemValueFromElement.js +18 -0
  211. package/lib-commonjs/utils/getTreeItemValueFromElement.js.map +1 -0
  212. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  213. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  214. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  215. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  216. package/lib-commonjs/utils/tokens.js +28 -20
  217. package/lib-commonjs/utils/tokens.js.map +1 -1
  218. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  219. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  220. package/package.json +23 -17
  221. package/lib/components/Tree/useTreeStyles.js +0 -20
  222. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  223. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  224. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  225. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  226. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  227. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -115
  228. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  229. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  230. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  231. package/lib/utils/createVisibleFlatTree.js +0 -80
  232. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  233. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  234. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  235. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  236. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  237. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  238. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  239. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  240. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  241. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  242. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  243. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  244. 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';
@@ -22,10 +22,49 @@ 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
24
 
25
+ declare type FlattenedTreeItem<Props extends TreeItemProps> = FlatTreeItemProps & Props;
26
+
25
27
  /**
26
28
  * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`
29
+ * @example
30
+ * ```tsx
31
+ * const defaultItems = flattenTree_unstable([
32
+ * {
33
+ * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,
34
+ * subtree: [
35
+ * {
36
+ * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,
37
+ * },
38
+ * {
39
+ * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,
40
+ * },
41
+ * {
42
+ * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,
43
+ * },
44
+ * ],
45
+ * },
46
+ * {
47
+ * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,
48
+ * subtree: [
49
+ * {
50
+ * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,
51
+ * subtree: [
52
+ * {
53
+ * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,
54
+ * subtree: [
55
+ * {
56
+ * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,
57
+ * },
58
+ * ],
59
+ * },
60
+ * ],
61
+ * },
62
+ * ],
63
+ * },
64
+ * ]);
65
+ * ```
27
66
  */
28
- export declare const flattenTree_unstable: (items: NestedTreeItem[]) => FlatTreeItemProps[];
67
+ export declare const flattenTree_unstable: <Props extends TreeItemProps>(items: NestedTreeItem<Props>[]) => FlattenedTreeItem<Props>[];
29
68
 
30
69
  /**
31
70
  * FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems
@@ -37,7 +76,7 @@ export declare const flattenTree_unstable: (items: NestedTreeItem[]) => FlatTree
37
76
  *
38
77
  * On simple scenarios it is advised to simply use a nested structure instead.
39
78
  */
40
- export declare type FlatTree = {
79
+ export declare type FlatTree<Props extends FlatTreeItemProps = FlatTreeItemProps> = {
41
80
  /**
42
81
  * returns the properties required for the Tree component to work properly.
43
82
  * That includes:
@@ -57,7 +96,7 @@ export declare type FlatTree = {
57
96
  * event.preventDefault();
58
97
  * const nextItem = tree.getNextNavigableItem(data);
59
98
  * // scroll to item using virtualization scroll mechanism
60
- * if (nextItem && !targetDocument.getElementById(nextItem.id)) {
99
+ * if (nextItem && tree.getElementFromItem(nextItem)) {
61
100
  * listRef.current.scrollToItem(nextItem.index);
62
101
  * }
63
102
  * // wait for scrolling to happen and then invoke navigate method
@@ -72,34 +111,44 @@ export declare type FlatTree = {
72
111
  * returns next item to be focused on a navigation.
73
112
  * This method is provided to decouple the element that needs to be focused from
74
113
  * the action of focusing it itself.
114
+ *
115
+ * On the case of TypeAhead navigation this method returns the current item.
75
116
  */
76
- getNextNavigableItem(data: TreeNavigationData_unstable): FlatTreeItem | null;
117
+ getNextNavigableItem(visibleItems: FlatTreeItem<Props>[], data: TreeNavigationData_unstable): FlatTreeItem<Props> | undefined;
77
118
  /**
78
- * returns a single flat tree item by id without iterating over the whole collection
119
+ * similar to getElementById but for FlatTreeItems
79
120
  */
80
- getItem(id: string): FlatTreeItem | null;
121
+ getElementFromItem(item: FlatTreeItem<Props>): HTMLElement | null;
81
122
  /**
82
- * returns an iterable containing all visually available flat tree items
123
+ * an iterable containing all visually available flat tree items
83
124
  */
84
- items(): Iterable<FlatTreeItem>;
125
+ items(): IterableIterator<FlatTreeItem<Props>>;
85
126
  };
86
127
 
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;
128
+ /**
129
+ * The item that is returned by `useFlatTree`, it represents a wrapper around the properties provided to
130
+ * `useFlatTree` but with extra information that might be useful on flat tree scenarios
131
+ */
132
+ export declare type FlatTreeItem<Props extends FlatTreeItemProps = FlatTreeItemProps> = {
91
133
  index: number;
92
- id: string;
93
134
  level: number;
135
+ childrenSize: number;
136
+ value: TreeItemValue;
137
+ parentValue: TreeItemValue | undefined;
138
+ getTreeItemProps(): Required<Pick<Props, 'value' | 'aria-setsize' | 'aria-level' | 'aria-posinset' | 'itemType'>> & Omit<Props, 'parentId'>;
94
139
  };
95
140
 
96
- export declare type FlatTreeItemProps = Required<Pick<TreeItemProps, 'id'>> & TreeItemProps & {
97
- parentId?: string;
141
+ export declare type FlatTreeItemProps = Omit<TreeItemProps, 'itemType'> & Partial<Pick<TreeItemProps, 'itemType'>> & {
142
+ value: TreeItemValue;
143
+ parentValue?: TreeItemValue;
98
144
  };
99
145
 
100
- export declare type FlatTreeProps = Required<Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & {
146
+ declare type FlatTreeOptions = Pick<TreeProps, 'openItems' | 'defaultOpenItems' | 'onOpenChange' | 'onNavigation_unstable'>;
147
+
148
+ export declare type FlatTreeProps = Required<Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'>> & {
101
149
  ref: React_2.Ref<HTMLDivElement>;
102
- }>;
150
+ openItems: ImmutableSet<string>;
151
+ };
103
152
 
104
153
  declare interface ImmutableSet<Value> {
105
154
  /**
@@ -127,10 +176,12 @@ declare interface ImmutableSet<Value> {
127
176
  [Symbol.iterator](): IterableIterator<Value>;
128
177
  }
129
178
 
130
- export declare type NestedTreeItem = Omit<TreeItemProps, 'subtree'> & {
131
- subtree?: NestedTreeItem[];
179
+ export declare type NestedTreeItem<Props extends TreeItemProps> = Omit<Props, 'subtree' | 'itemType'> & {
180
+ subtree?: NestedTreeItem<Props>[];
132
181
  };
133
182
 
183
+ declare type OmitWithoutExpanding<P, K extends string | number | symbol> = P extends unknown ? Omit<P, K> : P;
184
+
134
185
  export declare const renderTree_unstable: (state: TreeState, contextValues: TreeContextValues) => JSX.Element;
135
186
 
136
187
  /**
@@ -164,12 +215,11 @@ export declare type TreeContextValue = {
164
215
  level: number;
165
216
  appearance: 'subtle' | 'subtle-alpha' | 'transparent';
166
217
  size: 'small' | 'medium';
167
- openItems: ImmutableSet<TreeItemId>;
218
+ openItems: ImmutableSet<unknown>;
168
219
  /**
169
- * Requests dialog main component to update it's internal open state
220
+ * requests root Tree component to respond to some tree item event,
170
221
  */
171
- requestOpenChange(data: TreeOpenChangeData): void;
172
- requestNavigation(data: TreeNavigationData_unstable): void;
222
+ requestTreeResponse(request: TreeItemRequest): void;
173
223
  };
174
224
 
175
225
  declare type TreeContextValues = {
@@ -177,7 +227,16 @@ declare type TreeContextValues = {
177
227
  };
178
228
 
179
229
  /**
180
- * TreeItem component - TODO: add more docs
230
+ * The `TreeItem` component represents a single item in a tree.
231
+ * It expects a certain order of children to work properly: the first child should be the node itself,
232
+ * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.
233
+ * This order follows the same order as document traversal for the TreeWalker API in JavaScript:
234
+ * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.
235
+ * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,
236
+ * which should be used as a direct child of TreeItem.
237
+ *
238
+ * When a TreeItem has nested child subtree, an expand/collapse control is displayed,
239
+ * allowing the user to show or hide the children.
181
240
  */
182
241
  export declare const TreeItem: ForwardRefComponent<TreeItemProps>;
183
242
 
@@ -185,21 +244,28 @@ export declare const treeItemClassNames: SlotClassNames<TreeItemSlots>;
185
244
 
186
245
  declare type TreeItemContextValue = {
187
246
  isActionsVisible: boolean;
247
+ isAsideVisible: boolean;
248
+ actionsRef: React_2.Ref<HTMLDivElement>;
249
+ expandIconRef: React_2.Ref<HTMLDivElement>;
250
+ layoutRef: React_2.Ref<HTMLDivElement>;
251
+ subtreeRef: React_2.Ref<HTMLDivElement>;
252
+ itemType: TreeItemType;
253
+ value: string;
254
+ open: boolean;
188
255
  };
189
256
 
190
257
  declare type TreeItemContextValues = {
191
258
  treeItem: TreeItemContextValue;
192
- button: ButtonContextValue;
193
259
  };
194
260
 
195
261
  declare type TreeItemCSSProperties = React_2.CSSProperties & {
196
262
  [treeItemLevelToken]?: string | number;
197
263
  };
198
264
 
199
- export declare type TreeItemId = string | number;
200
-
201
265
  /**
202
- * TreeItemLayout component - TODO: add more docs
266
+ * The `TreeItemLayout` component is used as a child of `TreeItem` to define the content and layout of a tree item.
267
+ * It provides a consistent visual structure for tree items in a `Tree` component.
268
+ * This component should only be used as a direct child of `TreeItem`.
203
269
  */
204
270
  export declare const TreeItemLayout: ForwardRefComponent<TreeItemLayoutProps>;
205
271
 
@@ -215,23 +281,42 @@ export declare type TreeItemLayoutSlots = {
215
281
  /**
216
282
  * Icon slot that renders right before main content
217
283
  */
218
- iconBefore?: Slot<'span'>;
284
+ iconBefore?: Slot<'div'>;
219
285
  /**
220
286
  * Icon slot that renders right after main content
221
287
  */
222
- iconAfter?: Slot<'span'>;
223
- aside?: Slot<'span'>;
288
+ iconAfter?: Slot<'div'>;
289
+ /**
290
+ * Expand icon slot,
291
+ * by default renders a chevron icon to indicate opening and closing
292
+ */
293
+ expandIcon?: Slot<'div'>;
294
+ aside?: Slot<'div'>;
295
+ /**
296
+ * actionable elements are normally buttons, menus, or other focusable elements.
297
+ * Those elements are only visibly available if the given tree item is currently active.
298
+ */
299
+ actions?: Slot<ExtractSlotProps<Slot<'div'> & {
300
+ /**
301
+ * Forces visibility of the aside/action content
302
+ */
303
+ visible?: boolean;
304
+ }>>;
224
305
  };
225
306
 
226
307
  /**
227
308
  * State used in rendering TreeItemLayout
228
309
  */
229
- export declare type TreeItemLayoutState = ComponentState<TreeItemLayoutSlots> & TreeItemContextValue;
310
+ export declare type TreeItemLayoutState = ComponentState<TreeItemLayoutSlots> & {
311
+ buttonContextValue: ButtonContextValue;
312
+ };
230
313
 
231
314
  export declare const treeItemLevelToken: "--fluent-TreeItem--level";
232
315
 
233
316
  /**
234
- * TreeItemPersonaLayout component - TODO: add more docs
317
+ * The `TreeItemPersonaLayout` component is used as a child of `TreeItem` to display a `TreeItem` with a media (typically an avatar) and a description.
318
+ * It provides a more visually appealing representation of a `TreeItem` and is typically used to display a list of people or topics.
319
+ * This component should only be used as a direct child of `TreeItem`.
235
320
  */
236
321
  export declare const TreeItemPersonaLayout: ForwardRefComponent<TreeItemPersonaLayoutProps>;
237
322
 
@@ -246,121 +331,96 @@ declare type TreeItemPersonaLayoutContextValues = {
246
331
  */
247
332
  export declare type TreeItemPersonaLayoutProps = ComponentProps<Partial<TreeItemPersonaLayoutSlots>>;
248
333
 
249
- export declare type TreeItemPersonaLayoutSlots = {
250
- root: Slot<'span'>;
334
+ export declare type TreeItemPersonaLayoutSlots = Pick<TreeItemLayoutSlots, 'actions' | 'aside' | 'expandIcon'> & {
335
+ root: NonNullable<Slot<'div'>>;
251
336
  /**
252
337
  * Avatar to display.
253
338
  */
254
- media: NonNullable<Slot<'span'>>;
339
+ media: NonNullable<Slot<'div'>>;
255
340
  /**
256
341
  * Main text. Children of the root slot are automatically rendered here
257
342
  */
258
- main: Slot<'span'>;
343
+ main: NonNullable<Slot<'div'>>;
259
344
  /**
260
345
  * Secondary text that describes or complements the main text
261
346
  */
262
- description?: Slot<'span'>;
263
- /**
264
- * aside text that works as extra textual information
265
- */
266
- aside?: Slot<'span'>;
267
- /**
268
- * A layout wrapper for the main and description slots
269
- */
270
- content: Slot<'div'>;
347
+ description?: Slot<'div'>;
271
348
  };
272
349
 
273
350
  /**
274
351
  * State used in rendering TreeItemPersonaLayout
275
352
  */
276
- export declare type TreeItemPersonaLayoutState = ComponentState<TreeItemPersonaLayoutSlots> & TreeItemContextValue & {
353
+ export declare type TreeItemPersonaLayoutState = ComponentState<TreeItemPersonaLayoutSlots> & {
277
354
  avatarSize: AvatarSize;
355
+ buttonContextValue: ButtonContextValue;
278
356
  };
279
357
 
280
358
  /**
281
359
  * TreeItem Props
282
360
  */
283
361
  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;
362
+ itemType: TreeItemType;
363
+ value?: TreeItemValue;
290
364
  };
291
365
 
292
- export declare const TreeItemProvider: React_2.Provider<TreeItemContextValue | undefined>;
366
+ export declare const TreeItemProvider: React_2.Provider<TreeItemContextValue | undefined> & React_2.FC<React_2.ProviderProps<TreeItemContextValue | undefined>>;
367
+
368
+ declare type TreeItemRequest = {
369
+ itemType: TreeItemType;
370
+ } & (OmitWithoutExpanding<TreeOpenChangeData, 'open' | 'target'> | OmitWithoutExpanding<TreeNavigationData_unstable, 'target'>);
293
371
 
294
372
  export declare type TreeItemSlots = {
295
373
  root: Slot<ExtractSlotProps<Slot<'div'> & {
296
374
  style?: TreeItemCSSProperties;
297
375
  }>>;
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
376
  };
311
377
 
312
378
  /**
313
379
  * State used in rendering TreeItem
314
380
  */
315
- export declare type TreeItemState = ComponentState<TreeItemSlots> & {
316
- open: boolean;
317
- isLeaf: boolean;
381
+ export declare type TreeItemState = ComponentState<TreeItemSlots> & TreeItemContextValue & {
318
382
  level: number;
319
- /**
320
- * By design, a button included on the actions slot should be small
321
- */
322
- buttonSize: 'small';
323
- isActionsVisible: boolean;
383
+ itemType: TreeItemType;
324
384
  };
325
385
 
386
+ declare type TreeItemType = 'leaf' | 'branch';
387
+
388
+ declare type TreeItemValue = string | number;
389
+
326
390
  export declare type TreeNavigationData_unstable = {
327
- event: React_2.MouseEvent<HTMLElement>;
328
391
  target: HTMLElement;
392
+ value: string;
393
+ } & ({
394
+ event: React_2.MouseEvent<HTMLElement>;
329
395
  type: 'Click';
330
396
  } | {
331
397
  event: React_2.KeyboardEvent<HTMLElement>;
332
- target: HTMLElement;
333
398
  type: 'TypeAhead';
334
399
  } | {
335
400
  event: React_2.KeyboardEvent<HTMLElement>;
336
- target: HTMLElement;
337
401
  type: typeof ArrowRight;
338
402
  } | {
339
403
  event: React_2.KeyboardEvent<HTMLElement>;
340
- target: HTMLElement;
341
404
  type: typeof ArrowLeft;
342
405
  } | {
343
406
  event: React_2.KeyboardEvent<HTMLElement>;
344
- target: HTMLElement;
345
407
  type: typeof ArrowUp;
346
408
  } | {
347
409
  event: React_2.KeyboardEvent<HTMLElement>;
348
- target: HTMLElement;
349
410
  type: typeof ArrowDown;
350
411
  } | {
351
412
  event: React_2.KeyboardEvent<HTMLElement>;
352
- target: HTMLElement;
353
413
  type: typeof Home;
354
414
  } | {
355
415
  event: React_2.KeyboardEvent<HTMLElement>;
356
- target: HTMLElement;
357
416
  type: typeof End;
358
- };
417
+ });
359
418
 
360
419
  export declare type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];
361
420
 
362
421
  export declare type TreeOpenChangeData = {
363
422
  open: boolean;
423
+ value: string;
364
424
  } & ({
365
425
  event: React_2.MouseEvent<HTMLElement>;
366
426
  target: HTMLElement;
@@ -404,13 +464,13 @@ export declare type TreeProps = ComponentProps<TreeSlots> & {
404
464
  * Controls the state of the open tree items.
405
465
  * These property is ignored for subtrees.
406
466
  */
407
- openItems?: Iterable<TreeItemId>;
467
+ openItems?: Iterable<string>;
408
468
  /**
409
469
  * This refers to a list of ids of opened tree items.
410
470
  * Default value for the uncontrolled state of open tree items.
411
471
  * These property is ignored for subtrees.
412
472
  */
413
- defaultOpenItems?: Iterable<TreeItemId>;
473
+ defaultOpenItems?: Iterable<string>;
414
474
  /**
415
475
  * Callback fired when the component changes value from open state.
416
476
  * These property is ignored for subtrees.
@@ -441,7 +501,9 @@ export declare type TreeSlots = {
441
501
  /**
442
502
  * State used in rendering Tree
443
503
  */
444
- export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue;
504
+ export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue & {
505
+ open: boolean;
506
+ };
445
507
 
446
508
  /**
447
509
  * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems
@@ -452,10 +514,10 @@ export declare type TreeState = ComponentState<TreeSlots> & TreeContextValue;
452
514
  * It should be used on cases where more complex interactions with a Tree is required.
453
515
  * On simple scenarios it is advised to simply use a nested structure instead.
454
516
  *
455
- * @param items - a list of tree items
517
+ * @param flatTreeItemProps - a list of tree items
456
518
  * @param options - in case control over the internal openItems is required
457
519
  */
458
- export declare function useFlatTree_unstable(items: FlatTreeItemProps[], options?: Pick<TreeProps, 'openItems' | 'defaultOpenItems'>): FlatTree;
520
+ export declare function useFlatTree_unstable<Props extends FlatTreeItemProps = FlatTreeItemProps>(flatTreeItemProps: Props[], options?: FlatTreeOptions): FlatTree<Props>;
459
521
 
460
522
  /**
461
523
  * Create the state required to render Tree.
@@ -481,9 +543,9 @@ export declare function useTreeContextValues_unstable(state: TreeState): TreeCon
481
543
  * @param props - props from this instance of TreeItem
482
544
  * @param ref - reference to root HTMLElement of TreeItem
483
545
  */
484
- export declare const useTreeItem_unstable: (props: TreeItemProps, ref: React_2.Ref<HTMLDivElement>) => TreeItemState;
546
+ export declare function useTreeItem_unstable(props: TreeItemProps, ref: React_2.Ref<HTMLDivElement>): TreeItemState;
485
547
 
486
- export declare const useTreeItemContext_unstable: () => TreeItemContextValue;
548
+ export declare const useTreeItemContext_unstable: <T>(selector: ContextSelector<TreeItemContextValue, T>) => T;
487
549
 
488
550
  /**
489
551
  * 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"}
@@ -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"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useTree_unstable } from './useTree';
3
3
  import { renderTree_unstable } from './renderTree';
4
- import { useTreeStyles_unstable } from './useTreeStyles';
4
+ import { useTreeStyles_unstable } from './useTreeStyles.styles';
5
5
  import { useTreeContextValues_unstable } from './useTreeContextValues';
6
6
  /**
7
7
  * A tree view widget presents a hierarchical list.
@@ -10,12 +10,10 @@ import { useTreeContextValues_unstable } from './useTreeContextValues';
10
10
  * For example, in a file system navigator that uses a tree view to display folders and files,
11
11
  * an item representing a folder can be expanded to reveal the contents of the folder,
12
12
  * which may be files, folders, or both.
13
- */
14
- export const Tree = /*#__PURE__*/React.forwardRef((props, ref) => {
15
- const state = useTree_unstable(props, ref);
16
- useTreeStyles_unstable(state);
17
- const contextValues = useTreeContextValues_unstable(state);
18
- return renderTree_unstable(state, contextValues);
13
+ */ export const Tree = /*#__PURE__*/ React.forwardRef((props, ref)=>{
14
+ const state = useTree_unstable(props, ref);
15
+ useTreeStyles_unstable(state);
16
+ const contextValues = useTreeContextValues_unstable(state);
17
+ return renderTree_unstable(state, contextValues);
19
18
  });
20
19
  Tree.displayName = 'Tree';
21
- //# sourceMappingURL=Tree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useTree_unstable","renderTree_unstable","useTreeStyles_unstable","useTreeContextValues_unstable","Tree","forwardRef","props","ref","state","contextValues","displayName"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/Tree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles';\nimport type { TreeProps } from './Tree.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree: ForwardRefComponent<TreeProps> = React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n});\n\nTree.displayName = 'Tree';\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,WAAW;AAC5C,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,sBAAsB,QAAQ,iBAAiB;AAGxD,SAASC,6BAA6B,QAAQ,wBAAwB;AAEtE;;;;;;;;AAQA,OAAO,MAAMC,IAAI,gBAAmCL,KAAK,CAACM,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EAClF,MAAMC,KAAK,GAAGR,gBAAgB,CAACM,KAAK,EAAEC,GAAG,CAAC;EAC1CL,sBAAsB,CAACM,KAAK,CAAC;EAC7B,MAAMC,aAAa,GAAGN,6BAA6B,CAACK,KAAK,CAAC;EAC1D,OAAOP,mBAAmB,CAACO,KAAK,EAAEC,aAAa,CAAC;AAClD,CAAC,CAAC;AAEFL,IAAI,CAACM,WAAW,GAAG,MAAM"}
1
+ {"version":3,"sources":["Tree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles.styles';\nimport type { TreeProps } from './Tree.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree: ForwardRefComponent<TreeProps> = React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n});\n\nTree.displayName = 'Tree';\n"],"names":["React","useTree_unstable","renderTree_unstable","useTreeStyles_unstable","useTreeContextValues_unstable","Tree","forwardRef","props","ref","state","contextValues","displayName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,SAASC,mBAAmB,QAAQ,eAAe;AACnD,SAASC,sBAAsB,QAAQ,yBAAyB;AAGhE,SAASC,6BAA6B,QAAQ,yBAAyB;AAEvE;;;;;;;CAOC,GACD,OAAO,MAAMC,qBAAuCL,MAAMM,UAAU,CAAC,CAACC,OAAOC,MAAQ;IACnF,MAAMC,QAAQR,iBAAiBM,OAAOC;IACtCL,uBAAuBM;IACvB,MAAMC,gBAAgBN,8BAA8BK;IACpD,OAAOP,oBAAoBO,OAAOC;AACpC,GAAG;AAEHL,KAAKM,WAAW,GAAG"}
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=Tree.types.js.map
1
+ import * as React from 'react';
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.types.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/components/Tree/Tree.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { TreeContextValue } from '../../contexts/treeContext';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Home } from '@fluentui/keyboard-keys';\n\nexport type TreeSlots = {\n root: Slot<'div'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationData_unstable =\n | { event: React.MouseEvent<HTMLElement>; target: HTMLElement; type: 'Click' }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: 'TypeAhead' }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowRight }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowLeft }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowUp }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowDown }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof Home }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof End };\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];\n\nexport type TreeOpenChangeData = { open: boolean } & (\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'ExpandIconClick';\n }\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'Click';\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof Enter;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowRight;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowLeft;\n }\n);\n\nexport type TreeOpenChangeEvent = TreeOpenChangeData['event'];\n\nexport type TreeContextValues = {\n tree: TreeContextValue;\n};\n\nexport type TreeItemId = string | number;\n\nexport type TreeProps = ComponentProps<TreeSlots> & {\n /**\n * A tree item can have various appearances:\n * - 'subtle' (default): The default tree item styles.\n * - 'subtle-alpha': Minimizes emphasis on hovered or focused states.\n * - 'transparent': Removes background color.\n * @default 'subtle'\n */\n appearance?: 'subtle' | 'subtle-alpha' | 'transparent';\n /**\n * Size of the tree item.\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n /**\n * This refers to a list of ids of opened tree items.\n * Controls the state of the open tree items.\n * These property is ignored for subtrees.\n */\n openItems?: Iterable<TreeItemId>;\n /**\n * This refers to a list of ids of opened tree items.\n * Default value for the uncontrolled state of open tree items.\n * These property is ignored for subtrees.\n */\n defaultOpenItems?: Iterable<TreeItemId>;\n /**\n * Callback fired when the component changes value from open state.\n * These property is ignored for subtrees.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n * such as open value and type of interaction that created the event.\n */\n onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData): void;\n\n /**\n * Callback fired when navigation happens inside the component.\n * These property is ignored for subtrees.\n *\n * FIXME: This method is not ideal, as navigation should be handled internally by tabster.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable): void;\n};\n\n/**\n * State used in rendering Tree\n */\nexport type TreeState = ComponentState<TreeSlots> & TreeContextValue;\n"]}
1
+ {"version":3,"sources":["Tree.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { TreeContextValue } from '../../contexts/treeContext';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Home } from '@fluentui/keyboard-keys';\n\nexport type TreeSlots = {\n root: Slot<'div'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationData_unstable = { target: HTMLElement; value: string } & (\n | { event: React.MouseEvent<HTMLElement>; type: 'Click' }\n | { event: React.KeyboardEvent<HTMLElement>; type: 'TypeAhead' }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowRight }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowLeft }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowUp }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowDown }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof Home }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof End }\n);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];\n\nexport type TreeOpenChangeData = { open: boolean; value: string } & (\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'ExpandIconClick';\n }\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'Click';\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof Enter;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowRight;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowLeft;\n }\n);\n\nexport type TreeOpenChangeEvent = TreeOpenChangeData['event'];\n\nexport type TreeContextValues = {\n tree: TreeContextValue;\n};\n\nexport type TreeProps = ComponentProps<TreeSlots> & {\n /**\n * A tree item can have various appearances:\n * - 'subtle' (default): The default tree item styles.\n * - 'subtle-alpha': Minimizes emphasis on hovered or focused states.\n * - 'transparent': Removes background color.\n * @default 'subtle'\n */\n appearance?: 'subtle' | 'subtle-alpha' | 'transparent';\n /**\n * Size of the tree item.\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n /**\n * This refers to a list of ids of opened tree items.\n * Controls the state of the open tree items.\n * These property is ignored for subtrees.\n */\n openItems?: Iterable<string>;\n /**\n * This refers to a list of ids of opened tree items.\n * Default value for the uncontrolled state of open tree items.\n * These property is ignored for subtrees.\n */\n defaultOpenItems?: Iterable<string>;\n /**\n * Callback fired when the component changes value from open state.\n * These property is ignored for subtrees.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n * such as open value and type of interaction that created the event.\n */\n onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData): void;\n\n /**\n * Callback fired when navigation happens inside the component.\n * These property is ignored for subtrees.\n *\n * FIXME: This method is not ideal, as navigation should be handled internally by tabster.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable): void;\n};\n\n/**\n * State used in rendering Tree\n */\nexport type TreeState = ComponentState<TreeSlots> &\n TreeContextValue & {\n open: boolean;\n };\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -2,6 +2,5 @@ export * from './Tree';
2
2
  export * from './Tree.types';
3
3
  export * from './renderTree';
4
4
  export * from './useTree';
5
- export * from './useTreeStyles';
5
+ export * from './useTreeStyles.styles';
6
6
  export * from './useTreeContextValues';
7
- //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/components/Tree/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles';\nexport * from './useTreeContextValues';\n"]}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles.styles';\nexport * from './useTreeContextValues';\n"],"names":[],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,yBAAyB;AACvC,cAAc,yBAAyB"}
@@ -1,15 +1,9 @@
1
- import * as React from 'react';
2
- import { getSlots } from '@fluentui/react-utilities';
1
+ /** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';
2
+ import { getSlotsNext } from '@fluentui/react-utilities';
3
3
  import { TreeProvider } from '../../contexts';
4
- export const renderTree_unstable = (state, contextValues) => {
5
- const {
6
- slots,
7
- slotProps
8
- } = getSlots(state);
9
- return /*#__PURE__*/React.createElement(TreeProvider, {
10
- value: contextValues.tree
11
- }, /*#__PURE__*/React.createElement(slots.root, {
12
- ...slotProps.root
13
- }, slotProps.root.children));
4
+ export const renderTree_unstable = (state, contextValues)=>{
5
+ const { slots , slotProps } = getSlotsNext(state);
6
+ return /*#__PURE__*/ createElement(TreeProvider, {
7
+ value: contextValues.tree
8
+ }, state.open && /*#__PURE__*/ createElement(slots.root, slotProps.root, slotProps.root.children));
14
9
  };
15
- //# sourceMappingURL=renderTree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","getSlots","TreeProvider","renderTree_unstable","state","contextValues","slots","slotProps","createElement","value","tree","root","children"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/renderTree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { TreeState, TreeSlots, TreeContextValues } from './Tree.types';\nimport { TreeProvider } from '../../contexts';\n\nexport const renderTree_unstable = (state: TreeState, contextValues: TreeContextValues) => {\n const { slots, slotProps } = getSlots<TreeSlots>(state);\n\n return (\n <TreeProvider value={contextValues.tree}>\n <slots.root {...slotProps.root}>{slotProps.root.children}</slots.root>\n </TreeProvider>\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,2BAA2B;AAEpD,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,OAAO,MAAMC,mBAAmB,GAAGA,CAACC,KAAgB,EAAEC,aAAgC,KAAI;EACxF,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAE,GAAGN,QAAQ,CAAYG,KAAK,CAAC;EAEvD,oBACEJ,KAAA,CAAAQ,aAAA,CAACN,YAAY;IAACO,KAAK,EAAEJ,aAAa,CAACK;EAAI,gBACrCV,KAAA,CAAAQ,aAAA,CAACF,KAAK,CAACK,IAAI;IAAA,GAAKJ,SAAS,CAACI;EAAI,GAAGJ,SAAS,CAACI,IAAI,CAACC,QAAQ,CAAc,CACzD;AAEnB,CAAC"}
1
+ {"version":3,"sources":["renderTree.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport type { TreeState, TreeSlots, TreeContextValues } from './Tree.types';\nimport { TreeProvider } from '../../contexts';\n\nexport const renderTree_unstable = (state: TreeState, contextValues: TreeContextValues) => {\n const { slots, slotProps } = getSlotsNext<TreeSlots>(state);\n return (\n <TreeProvider value={contextValues.tree}>\n {state.open && <slots.root {...slotProps.root}>{slotProps.root.children}</slots.root>}\n </TreeProvider>\n );\n};\n"],"names":["createElement","getSlotsNext","TreeProvider","renderTree_unstable","state","contextValues","slots","slotProps","value","tree","open","root","children"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAEzD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,OAAO,MAAMC,sBAAsB,CAACC,OAAkBC,gBAAqC;IACzF,MAAM,EAAEC,MAAK,EAAEC,UAAS,EAAE,GAAGN,aAAwBG;IACrD,qBACE,AAVJ,cAUKF;QAAaM,OAAOH,cAAcI,IAAI;OACpCL,MAAMM,IAAI,kBAAI,AAXrB,cAWsBJ,MAAMK,IAAI,EAAKJ,UAAUI,IAAI,EAAGJ,UAAUI,IAAI,CAACC,QAAQ;AAG7E,EAAE"}