@payloadcms/ui 3.80.0-internal.60d6f94 → 3.80.0-internal.8d9ec7c

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 (522) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/EditForm/index.js +0 -12
  3. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  4. package/dist/elements/Button/index.d.ts.map +1 -1
  5. package/dist/elements/Button/index.js +5 -3
  6. package/dist/elements/Button/index.js.map +1 -1
  7. package/dist/elements/Button/index.scss +38 -5
  8. package/dist/elements/Button/types.d.ts +1 -1
  9. package/dist/elements/Button/types.d.ts.map +1 -1
  10. package/dist/elements/Button/types.js.map +1 -1
  11. package/dist/elements/CheckboxPopup/index.d.ts.map +1 -1
  12. package/dist/elements/CheckboxPopup/index.js +0 -1
  13. package/dist/elements/CheckboxPopup/index.js.map +1 -1
  14. package/dist/elements/CheckboxPopup/index.scss +1 -0
  15. package/dist/elements/CreateDocumentButton/index.d.ts +26 -0
  16. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -0
  17. package/dist/elements/CreateDocumentButton/index.js +182 -0
  18. package/dist/elements/CreateDocumentButton/index.js.map +1 -0
  19. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  20. package/dist/elements/DefaultListViewTabs/index.js +28 -54
  21. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  22. package/dist/elements/DelayedSpinner/index.d.ts +23 -0
  23. package/dist/elements/DelayedSpinner/index.d.ts.map +1 -0
  24. package/dist/elements/DelayedSpinner/index.js +61 -0
  25. package/dist/elements/DelayedSpinner/index.js.map +1 -0
  26. package/dist/elements/DocumentControls/index.d.ts +1 -0
  27. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  28. package/dist/elements/DocumentControls/index.js +6 -10
  29. package/dist/elements/DocumentControls/index.js.map +1 -1
  30. package/dist/elements/DocumentControls/index.scss +1 -1
  31. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  32. package/dist/elements/DocumentDrawer/index.js +54 -141
  33. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  34. package/dist/elements/DocumentDrawer/types.d.ts +7 -1
  35. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  36. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  37. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  38. package/dist/elements/DrawerActionHeader/index.js +2 -0
  39. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  40. package/dist/elements/DrawerActionHeader/index.scss +2 -2
  41. package/dist/elements/HierarchyButton/index.d.ts +11 -0
  42. package/dist/elements/HierarchyButton/index.d.ts.map +1 -0
  43. package/dist/elements/HierarchyButton/index.js +126 -0
  44. package/dist/elements/HierarchyButton/index.js.map +1 -0
  45. package/dist/elements/{FolderView/MoveDocToFolder → HierarchyButton}/index.scss +7 -1
  46. package/dist/elements/HierarchyButton/index.server.d.ts +10 -0
  47. package/dist/elements/HierarchyButton/index.server.d.ts.map +1 -0
  48. package/dist/elements/HierarchyButton/index.server.js +34 -0
  49. package/dist/elements/HierarchyButton/index.server.js.map +1 -0
  50. package/dist/elements/HierarchyColumnBrowser/Column/index.d.ts +5 -0
  51. package/dist/elements/HierarchyColumnBrowser/Column/index.d.ts.map +1 -0
  52. package/dist/elements/HierarchyColumnBrowser/Column/index.js +166 -0
  53. package/dist/elements/HierarchyColumnBrowser/Column/index.js.map +1 -0
  54. package/dist/elements/HierarchyColumnBrowser/Column/index.scss +63 -0
  55. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.d.ts +5 -0
  56. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.d.ts.map +1 -0
  57. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.js +161 -0
  58. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.js.map +1 -0
  59. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.scss +105 -0
  60. package/dist/elements/HierarchyColumnBrowser/index.d.ts +8 -0
  61. package/dist/elements/HierarchyColumnBrowser/index.d.ts.map +1 -0
  62. package/dist/elements/HierarchyColumnBrowser/index.js +473 -0
  63. package/dist/elements/HierarchyColumnBrowser/index.js.map +1 -0
  64. package/dist/elements/HierarchyColumnBrowser/index.scss +20 -0
  65. package/dist/elements/HierarchyColumnBrowser/types.d.ts +106 -0
  66. package/dist/elements/HierarchyColumnBrowser/types.d.ts.map +1 -0
  67. package/dist/elements/HierarchyColumnBrowser/types.js +2 -0
  68. package/dist/elements/HierarchyColumnBrowser/types.js.map +1 -0
  69. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts +20 -0
  70. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts.map +1 -0
  71. package/dist/elements/HierarchyDrawer/Drawer/index.js +291 -0
  72. package/dist/elements/HierarchyDrawer/Drawer/index.js.map +1 -0
  73. package/dist/elements/HierarchyDrawer/Drawer/index.scss +81 -0
  74. package/dist/elements/HierarchyDrawer/fetchAncestorPath.d.ts +15 -0
  75. package/dist/elements/HierarchyDrawer/fetchAncestorPath.d.ts.map +1 -0
  76. package/dist/elements/HierarchyDrawer/fetchAncestorPath.js +60 -0
  77. package/dist/elements/HierarchyDrawer/fetchAncestorPath.js.map +1 -0
  78. package/dist/elements/HierarchyDrawer/index.d.ts +30 -0
  79. package/dist/elements/HierarchyDrawer/index.d.ts.map +1 -0
  80. package/dist/elements/HierarchyDrawer/index.js +148 -0
  81. package/dist/elements/HierarchyDrawer/index.js.map +1 -0
  82. package/dist/elements/HierarchyDrawer/types.d.ts +68 -0
  83. package/dist/elements/HierarchyDrawer/types.d.ts.map +1 -0
  84. package/dist/elements/HierarchyDrawer/types.js +3 -0
  85. package/dist/elements/HierarchyDrawer/types.js.map +1 -0
  86. package/dist/elements/HierarchyField/SelectedHierarchies.d.ts +13 -0
  87. package/dist/elements/HierarchyField/SelectedHierarchies.d.ts.map +1 -0
  88. package/dist/elements/HierarchyField/SelectedHierarchies.js +194 -0
  89. package/dist/elements/HierarchyField/SelectedHierarchies.js.map +1 -0
  90. package/dist/elements/HierarchyField/SelectedHierarchies.scss +78 -0
  91. package/dist/elements/HierarchyField/index.client.d.ts +8 -0
  92. package/dist/elements/HierarchyField/index.client.d.ts.map +1 -0
  93. package/dist/elements/HierarchyField/index.client.js +198 -0
  94. package/dist/elements/HierarchyField/index.client.js.map +1 -0
  95. package/dist/elements/HierarchyField/index.scss +35 -0
  96. package/dist/elements/HierarchyField/index.server.d.ts +3 -0
  97. package/dist/elements/HierarchyField/index.server.d.ts.map +1 -0
  98. package/dist/elements/HierarchyField/index.server.js +30 -0
  99. package/dist/elements/HierarchyField/index.server.js.map +1 -0
  100. package/dist/elements/HierarchySearch/HierarchySearchInput.d.ts +18 -0
  101. package/dist/elements/HierarchySearch/HierarchySearchInput.d.ts.map +1 -0
  102. package/dist/elements/HierarchySearch/HierarchySearchInput.js +115 -0
  103. package/dist/elements/HierarchySearch/HierarchySearchInput.js.map +1 -0
  104. package/dist/elements/HierarchySearch/HierarchySearchResultItem.d.ts +13 -0
  105. package/dist/elements/HierarchySearch/HierarchySearchResultItem.d.ts.map +1 -0
  106. package/dist/elements/HierarchySearch/HierarchySearchResultItem.js +88 -0
  107. package/dist/elements/HierarchySearch/HierarchySearchResultItem.js.map +1 -0
  108. package/dist/elements/HierarchySearch/HierarchySearchResults.d.ts +17 -0
  109. package/dist/elements/HierarchySearch/HierarchySearchResults.d.ts.map +1 -0
  110. package/dist/elements/HierarchySearch/HierarchySearchResults.js +85 -0
  111. package/dist/elements/HierarchySearch/HierarchySearchResults.js.map +1 -0
  112. package/dist/elements/HierarchySearch/index.d.ts +10 -0
  113. package/dist/elements/HierarchySearch/index.d.ts.map +1 -0
  114. package/dist/elements/HierarchySearch/index.js +144 -0
  115. package/dist/elements/HierarchySearch/index.js.map +1 -0
  116. package/dist/elements/HierarchySearch/index.scss +212 -0
  117. package/dist/elements/HierarchySearch/types.d.ts +21 -0
  118. package/dist/elements/HierarchySearch/types.d.ts.map +1 -0
  119. package/dist/elements/HierarchySearch/types.js +2 -0
  120. package/dist/elements/HierarchySearch/types.js.map +1 -0
  121. package/dist/elements/HierarchySearch/useHierarchySearch.d.ts +20 -0
  122. package/dist/elements/HierarchySearch/useHierarchySearch.d.ts.map +1 -0
  123. package/dist/elements/HierarchySearch/useHierarchySearch.js +122 -0
  124. package/dist/elements/HierarchySearch/useHierarchySearch.js.map +1 -0
  125. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts +21 -0
  126. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts.map +1 -0
  127. package/dist/elements/HierarchyTree/HierarchySidebarTab.js +167 -0
  128. package/dist/elements/HierarchyTree/HierarchySidebarTab.js.map +1 -0
  129. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts +7 -0
  130. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts.map +1 -0
  131. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js +176 -0
  132. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js.map +1 -0
  133. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.d.ts +8 -0
  134. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  135. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js +36 -0
  136. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js.map +1 -0
  137. package/dist/elements/HierarchyTree/LoadMore/index.d.ts +12 -0
  138. package/dist/elements/HierarchyTree/LoadMore/index.d.ts.map +1 -0
  139. package/dist/elements/HierarchyTree/LoadMore/index.js +29 -0
  140. package/dist/elements/HierarchyTree/LoadMore/index.js.map +1 -0
  141. package/dist/elements/HierarchyTree/LoadMore/index.scss +26 -0
  142. package/dist/elements/HierarchyTree/TreeConnector.d.ts +7 -0
  143. package/dist/elements/HierarchyTree/TreeConnector.d.ts.map +1 -0
  144. package/dist/elements/HierarchyTree/TreeConnector.js +23 -0
  145. package/dist/elements/HierarchyTree/TreeConnector.js.map +1 -0
  146. package/dist/elements/HierarchyTree/TreeFocusContext.d.ts +28 -0
  147. package/dist/elements/HierarchyTree/TreeFocusContext.d.ts.map +1 -0
  148. package/dist/elements/HierarchyTree/TreeFocusContext.js +140 -0
  149. package/dist/elements/HierarchyTree/TreeFocusContext.js.map +1 -0
  150. package/dist/elements/HierarchyTree/TreeNode/index.d.ts +5 -0
  151. package/dist/elements/HierarchyTree/TreeNode/index.d.ts.map +1 -0
  152. package/dist/elements/HierarchyTree/TreeNode/index.js +201 -0
  153. package/dist/elements/HierarchyTree/TreeNode/index.js.map +1 -0
  154. package/dist/elements/HierarchyTree/TreeNode/index.scss +99 -0
  155. package/dist/elements/HierarchyTree/index.d.ts +4 -0
  156. package/dist/elements/HierarchyTree/index.d.ts.map +1 -0
  157. package/dist/elements/HierarchyTree/index.js +66 -0
  158. package/dist/elements/HierarchyTree/index.js.map +1 -0
  159. package/dist/elements/HierarchyTree/index.scss +42 -0
  160. package/dist/elements/HierarchyTree/types.d.ts +57 -0
  161. package/dist/elements/HierarchyTree/types.d.ts.map +1 -0
  162. package/dist/elements/HierarchyTree/types.js +2 -0
  163. package/dist/elements/HierarchyTree/types.js.map +1 -0
  164. package/dist/elements/HierarchyTree/useChildren.d.ts +26 -0
  165. package/dist/elements/HierarchyTree/useChildren.d.ts.map +1 -0
  166. package/dist/elements/HierarchyTree/useChildren.js +150 -0
  167. package/dist/elements/HierarchyTree/useChildren.js.map +1 -0
  168. package/dist/elements/HierarchyTree/useTreeState.d.ts +9 -0
  169. package/dist/elements/HierarchyTree/useTreeState.d.ts.map +1 -0
  170. package/dist/elements/HierarchyTree/useTreeState.js +50 -0
  171. package/dist/elements/HierarchyTree/useTreeState.js.map +1 -0
  172. package/dist/elements/HydrateHierarchyProvider/index.d.ts +4 -0
  173. package/dist/elements/HydrateHierarchyProvider/index.d.ts.map +1 -0
  174. package/dist/elements/HydrateHierarchyProvider/index.js +70 -0
  175. package/dist/elements/HydrateHierarchyProvider/index.js.map +1 -0
  176. package/dist/elements/Link/index.d.ts +4 -0
  177. package/dist/elements/Link/index.d.ts.map +1 -1
  178. package/dist/elements/Link/index.js +5 -0
  179. package/dist/elements/Link/index.js.map +1 -1
  180. package/dist/elements/ListHeader/TitleActions/index.d.ts +0 -1
  181. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  182. package/dist/elements/ListHeader/TitleActions/index.js +0 -1
  183. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  184. package/dist/elements/ListHeader/index.js +2 -2
  185. package/dist/elements/ListHeader/index.js.map +1 -1
  186. package/dist/elements/ListSelection/index.scss +2 -1
  187. package/dist/elements/LoadMoreRow/index.d.ts +15 -0
  188. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -0
  189. package/dist/elements/LoadMoreRow/index.js +75 -0
  190. package/dist/elements/LoadMoreRow/index.js.map +1 -0
  191. package/dist/elements/LoadMoreRow/index.scss +42 -0
  192. package/dist/elements/Locked/index.scss +1 -1
  193. package/dist/elements/MoveMany/index.d.ts +22 -0
  194. package/dist/elements/MoveMany/index.d.ts.map +1 -0
  195. package/dist/elements/MoveMany/index.js +278 -0
  196. package/dist/elements/MoveMany/index.js.map +1 -0
  197. package/dist/elements/MoveMany/index.scss +7 -0
  198. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  199. package/dist/elements/RelationshipTable/index.js +12 -17
  200. package/dist/elements/RelationshipTable/index.js.map +1 -1
  201. package/dist/elements/Spinner/index.d.ts +16 -0
  202. package/dist/elements/Spinner/index.d.ts.map +1 -0
  203. package/dist/elements/Spinner/index.js +49 -0
  204. package/dist/elements/Spinner/index.js.map +1 -0
  205. package/dist/elements/Spinner/index.scss +39 -0
  206. package/dist/elements/StepNav/index.d.ts.map +1 -1
  207. package/dist/elements/StepNav/index.js +10 -1
  208. package/dist/elements/StepNav/index.js.map +1 -1
  209. package/dist/elements/StepNav/types.d.ts +1 -0
  210. package/dist/elements/StepNav/types.d.ts.map +1 -1
  211. package/dist/elements/StepNav/types.js.map +1 -1
  212. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts +6 -0
  213. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -0
  214. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +187 -0
  215. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -0
  216. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.scss +29 -0
  217. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  218. package/dist/elements/Table/DefaultCell/index.js +20 -0
  219. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  220. package/dist/elements/Tooltip/index.js +1 -1
  221. package/dist/elements/Tooltip/index.js.map +1 -1
  222. package/dist/elements/Tooltip/index.scss +1 -15
  223. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts +8 -0
  224. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  225. package/dist/elements/Tree/LoadMore/LoadMoreButton.js +36 -0
  226. package/dist/elements/Tree/LoadMore/LoadMoreButton.js.map +1 -0
  227. package/dist/elements/Tree/LoadMore/index.d.ts +12 -0
  228. package/dist/elements/Tree/LoadMore/index.d.ts.map +1 -0
  229. package/dist/elements/Tree/LoadMore/index.js +29 -0
  230. package/dist/elements/Tree/LoadMore/index.js.map +1 -0
  231. package/dist/elements/Tree/LoadMore/index.scss +26 -0
  232. package/dist/elements/Tree/TreeConnector.d.ts +7 -0
  233. package/dist/elements/Tree/TreeConnector.d.ts.map +1 -0
  234. package/dist/elements/Tree/TreeConnector.js +23 -0
  235. package/dist/elements/Tree/TreeConnector.js.map +1 -0
  236. package/dist/elements/Tree/TreeFocusContext.d.ts +28 -0
  237. package/dist/elements/Tree/TreeFocusContext.d.ts.map +1 -0
  238. package/dist/elements/Tree/TreeFocusContext.js +140 -0
  239. package/dist/elements/Tree/TreeFocusContext.js.map +1 -0
  240. package/dist/elements/Tree/TreeNode/index.d.ts +5 -0
  241. package/dist/elements/Tree/TreeNode/index.d.ts.map +1 -0
  242. package/dist/elements/Tree/TreeNode/index.js +221 -0
  243. package/dist/elements/Tree/TreeNode/index.js.map +1 -0
  244. package/dist/elements/Tree/TreeNode/index.scss +110 -0
  245. package/dist/elements/Tree/index.d.ts +5 -0
  246. package/dist/elements/Tree/index.d.ts.map +1 -0
  247. package/dist/elements/Tree/index.js +270 -0
  248. package/dist/elements/Tree/index.js.map +1 -0
  249. package/dist/elements/Tree/index.scss +63 -0
  250. package/dist/elements/Tree/types.d.ts +70 -0
  251. package/dist/elements/Tree/types.d.ts.map +1 -0
  252. package/dist/elements/Tree/types.js +2 -0
  253. package/dist/elements/Tree/types.js.map +1 -0
  254. package/dist/elements/Tree/useChildren.d.ts +28 -0
  255. package/dist/elements/Tree/useChildren.d.ts.map +1 -0
  256. package/dist/elements/Tree/useChildren.js +213 -0
  257. package/dist/elements/Tree/useChildren.js.map +1 -0
  258. package/dist/elements/withMergedProps/index.d.ts +1 -1
  259. package/dist/elements/withMergedProps/index.js +1 -1
  260. package/dist/elements/withMergedProps/index.js.map +1 -1
  261. package/dist/exports/client/index.d.ts +30 -9
  262. package/dist/exports/client/index.d.ts.map +1 -1
  263. package/dist/exports/client/index.js +14 -12
  264. package/dist/exports/client/index.js.map +4 -4
  265. package/dist/exports/rsc/index.d.ts +3 -3
  266. package/dist/exports/rsc/index.d.ts.map +1 -1
  267. package/dist/exports/rsc/index.js +3 -3
  268. package/dist/exports/rsc/index.js.map +1 -1
  269. package/dist/exports/shared/index.js.map +1 -1
  270. package/dist/fields/Join/index.d.ts.map +1 -1
  271. package/dist/fields/Join/index.js +1 -1
  272. package/dist/fields/Join/index.js.map +1 -1
  273. package/dist/fields/Null/index.d.ts +11 -0
  274. package/dist/fields/Null/index.d.ts.map +1 -0
  275. package/dist/fields/Null/index.js +13 -0
  276. package/dist/fields/Null/index.js.map +1 -0
  277. package/dist/icons/Chevron/index.d.ts.map +1 -1
  278. package/dist/icons/Chevron/index.js +5 -1
  279. package/dist/icons/Chevron/index.js.map +1 -1
  280. package/dist/icons/Document/index.d.ts +3 -1
  281. package/dist/icons/Document/index.d.ts.map +1 -1
  282. package/dist/icons/Document/index.js +4 -2
  283. package/dist/icons/Document/index.js.map +1 -1
  284. package/dist/icons/Document/index.scss +4 -0
  285. package/dist/icons/Filter/index.d.ts +4 -0
  286. package/dist/icons/Filter/index.d.ts.map +1 -0
  287. package/dist/icons/Filter/index.js +15 -0
  288. package/dist/icons/Filter/index.js.map +1 -0
  289. package/dist/icons/Filter/index.scss +13 -0
  290. package/dist/icons/Folder/index.d.ts +4 -2
  291. package/dist/icons/Folder/index.d.ts.map +1 -1
  292. package/dist/icons/Folder/index.js +4 -2
  293. package/dist/icons/Folder/index.js.map +1 -1
  294. package/dist/icons/Folder/index.scss +8 -0
  295. package/dist/icons/Lock/index.scss +1 -1
  296. package/dist/icons/Plus/index.d.ts.map +1 -1
  297. package/dist/icons/Plus/index.js +2 -1
  298. package/dist/icons/Plus/index.js.map +1 -1
  299. package/dist/icons/Tag/index.d.ts +8 -0
  300. package/dist/icons/Tag/index.d.ts.map +1 -0
  301. package/dist/icons/Tag/index.js +22 -0
  302. package/dist/icons/Tag/index.js.map +1 -0
  303. package/dist/icons/Tag/index.scss +14 -0
  304. package/dist/providers/DocumentSelection/index.d.ts +8 -0
  305. package/dist/providers/DocumentSelection/index.d.ts.map +1 -0
  306. package/dist/providers/DocumentSelection/index.js +239 -0
  307. package/dist/providers/DocumentSelection/index.js.map +1 -0
  308. package/dist/providers/DocumentSelection/types.d.ts +122 -0
  309. package/dist/providers/DocumentSelection/types.d.ts.map +1 -0
  310. package/dist/providers/DocumentSelection/types.js +5 -0
  311. package/dist/providers/DocumentSelection/types.js.map +1 -0
  312. package/dist/providers/Hierarchy/index.d.ts +5 -0
  313. package/dist/providers/Hierarchy/index.d.ts.map +1 -0
  314. package/dist/providers/Hierarchy/index.js +346 -0
  315. package/dist/providers/Hierarchy/index.js.map +1 -0
  316. package/dist/providers/Hierarchy/types.d.ts +105 -0
  317. package/dist/providers/Hierarchy/types.d.ts.map +1 -0
  318. package/dist/providers/Hierarchy/types.js +2 -0
  319. package/dist/providers/Hierarchy/types.js.map +1 -0
  320. package/dist/providers/Root/index.d.ts.map +1 -1
  321. package/dist/providers/Root/index.js +18 -15
  322. package/dist/providers/Root/index.js.map +1 -1
  323. package/dist/providers/ServerFunctions/index.d.ts +1 -6
  324. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  325. package/dist/providers/ServerFunctions/index.js +0 -18
  326. package/dist/providers/ServerFunctions/index.js.map +1 -1
  327. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  328. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  329. package/dist/providers/TableColumns/buildColumnState/renderCell.js +34 -1
  330. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  331. package/dist/styles.css +1 -1
  332. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  333. package/dist/utilities/isSuperset.d.ts +6 -0
  334. package/dist/utilities/isSuperset.d.ts.map +1 -0
  335. package/dist/utilities/isSuperset.js +10 -0
  336. package/dist/utilities/isSuperset.js.map +1 -0
  337. package/dist/utilities/renderTable.d.ts +3 -1
  338. package/dist/utilities/renderTable.d.ts.map +1 -1
  339. package/dist/utilities/renderTable.js +9 -3
  340. package/dist/utilities/renderTable.js.map +1 -1
  341. package/dist/views/Edit/index.d.ts +1 -1
  342. package/dist/views/Edit/index.d.ts.map +1 -1
  343. package/dist/views/Edit/index.js +4 -2
  344. package/dist/views/Edit/index.js.map +1 -1
  345. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts +10 -0
  346. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -0
  347. package/dist/views/HierarchyList/DocumentListSelection/index.js +135 -0
  348. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -0
  349. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +21 -0
  350. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -0
  351. package/dist/views/HierarchyList/HierarchyListHeader/index.js +67 -0
  352. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -0
  353. package/dist/views/HierarchyList/HierarchyListHeader/index.scss +9 -0
  354. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts +4 -0
  355. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -0
  356. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +104 -0
  357. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -0
  358. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts +4 -0
  359. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts.map +1 -0
  360. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +53 -0
  361. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -0
  362. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts +4 -0
  363. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -0
  364. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +128 -0
  365. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -0
  366. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +99 -0
  367. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -0
  368. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +118 -0
  369. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -0
  370. package/dist/views/HierarchyList/HierarchyTable/SlotTable.scss +214 -0
  371. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +27 -0
  372. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -0
  373. package/dist/views/HierarchyList/HierarchyTable/index.js +388 -0
  374. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -0
  375. package/dist/views/HierarchyList/HierarchyTable/index.scss +148 -0
  376. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +20 -0
  377. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -0
  378. package/dist/views/HierarchyList/HierarchyTable/types.js +2 -0
  379. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -0
  380. package/dist/views/HierarchyList/TypeFilter/index.d.ts +15 -0
  381. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -0
  382. package/dist/views/HierarchyList/TypeFilter/index.js +37 -0
  383. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -0
  384. package/dist/views/HierarchyList/TypeFilter/index.scss +32 -0
  385. package/dist/views/HierarchyList/index.d.ts +5 -0
  386. package/dist/views/HierarchyList/index.d.ts.map +1 -0
  387. package/dist/views/HierarchyList/index.js +305 -0
  388. package/dist/views/HierarchyList/index.js.map +1 -0
  389. package/dist/views/HierarchyList/index.scss +72 -0
  390. package/dist/views/List/index.d.ts.map +1 -1
  391. package/dist/views/List/index.js +51 -7
  392. package/dist/views/List/index.js.map +1 -1
  393. package/package.json +5 -5
  394. package/dist/elements/FolderView/Breadcrumbs/index.d.ts +0 -19
  395. package/dist/elements/FolderView/Breadcrumbs/index.d.ts.map +0 -1
  396. package/dist/elements/FolderView/Breadcrumbs/index.js +0 -96
  397. package/dist/elements/FolderView/Breadcrumbs/index.js.map +0 -1
  398. package/dist/elements/FolderView/Breadcrumbs/index.scss +0 -56
  399. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts +0 -6
  400. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +0 -1
  401. package/dist/elements/FolderView/BrowseByFolderButton/index.js +0 -40
  402. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +0 -1
  403. package/dist/elements/FolderView/BrowseByFolderButton/index.scss +0 -30
  404. package/dist/elements/FolderView/Cell/index.client.d.ts +0 -13
  405. package/dist/elements/FolderView/Cell/index.client.d.ts.map +0 -1
  406. package/dist/elements/FolderView/Cell/index.client.js +0 -95
  407. package/dist/elements/FolderView/Cell/index.client.js.map +0 -1
  408. package/dist/elements/FolderView/Cell/index.server.d.ts +0 -4
  409. package/dist/elements/FolderView/Cell/index.server.d.ts.map +0 -1
  410. package/dist/elements/FolderView/Cell/index.server.js +0 -18
  411. package/dist/elements/FolderView/Cell/index.server.js.map +0 -1
  412. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts +0 -3
  413. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts.map +0 -1
  414. package/dist/elements/FolderView/ColoredFolderIcon/index.js +0 -9
  415. package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +0 -1
  416. package/dist/elements/FolderView/ColoredFolderIcon/index.scss +0 -5
  417. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts +0 -7
  418. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +0 -1
  419. package/dist/elements/FolderView/CurrentFolderActions/index.js +0 -162
  420. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +0 -1
  421. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts +0 -11
  422. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts.map +0 -1
  423. package/dist/elements/FolderView/DragOverlaySelection/index.js +0 -62
  424. package/dist/elements/FolderView/DragOverlaySelection/index.js.map +0 -1
  425. package/dist/elements/FolderView/DragOverlaySelection/index.scss +0 -35
  426. package/dist/elements/FolderView/DraggableTableRow/index.d.ts +0 -18
  427. package/dist/elements/FolderView/DraggableTableRow/index.d.ts.map +0 -1
  428. package/dist/elements/FolderView/DraggableTableRow/index.js +0 -63
  429. package/dist/elements/FolderView/DraggableTableRow/index.js.map +0 -1
  430. package/dist/elements/FolderView/DraggableTableRow/index.scss +0 -135
  431. package/dist/elements/FolderView/DraggableWithClick/index.d.ts +0 -15
  432. package/dist/elements/FolderView/DraggableWithClick/index.d.ts.map +0 -1
  433. package/dist/elements/FolderView/DraggableWithClick/index.js +0 -86
  434. package/dist/elements/FolderView/DraggableWithClick/index.js.map +0 -1
  435. package/dist/elements/FolderView/DraggableWithClick/index.scss +0 -5
  436. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts +0 -7
  437. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts.map +0 -1
  438. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +0 -39
  439. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +0 -1
  440. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts +0 -37
  441. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts.map +0 -1
  442. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +0 -609
  443. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +0 -1
  444. package/dist/elements/FolderView/Drawers/MoveToFolder/index.scss +0 -30
  445. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts +0 -4
  446. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts.map +0 -1
  447. package/dist/elements/FolderView/FilterFolderTypePill/index.js +0 -102
  448. package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +0 -1
  449. package/dist/elements/FolderView/FilterFolderTypePill/index.scss +0 -16
  450. package/dist/elements/FolderView/FolderField/index.scss +0 -12
  451. package/dist/elements/FolderView/FolderField/index.server.d.ts +0 -4
  452. package/dist/elements/FolderView/FolderField/index.server.d.ts.map +0 -1
  453. package/dist/elements/FolderView/FolderField/index.server.js +0 -16
  454. package/dist/elements/FolderView/FolderField/index.server.js.map +0 -1
  455. package/dist/elements/FolderView/FolderFileCard/index.d.ts +0 -30
  456. package/dist/elements/FolderView/FolderFileCard/index.d.ts.map +0 -1
  457. package/dist/elements/FolderView/FolderFileCard/index.js +0 -209
  458. package/dist/elements/FolderView/FolderFileCard/index.js.map +0 -1
  459. package/dist/elements/FolderView/FolderFileCard/index.scss +0 -247
  460. package/dist/elements/FolderView/FolderFileTable/index.d.ts +0 -8
  461. package/dist/elements/FolderView/FolderFileTable/index.d.ts.map +0 -1
  462. package/dist/elements/FolderView/FolderFileTable/index.js +0 -284
  463. package/dist/elements/FolderView/FolderFileTable/index.js.map +0 -1
  464. package/dist/elements/FolderView/FolderFileTable/index.scss +0 -11
  465. package/dist/elements/FolderView/FolderTypeField/index.d.ts +0 -4
  466. package/dist/elements/FolderView/FolderTypeField/index.d.ts.map +0 -1
  467. package/dist/elements/FolderView/FolderTypeField/index.js +0 -123
  468. package/dist/elements/FolderView/FolderTypeField/index.js.map +0 -1
  469. package/dist/elements/FolderView/ItemCardGrid/index.d.ts +0 -16
  470. package/dist/elements/FolderView/ItemCardGrid/index.d.ts.map +0 -1
  471. package/dist/elements/FolderView/ItemCardGrid/index.js +0 -34
  472. package/dist/elements/FolderView/ItemCardGrid/index.js.map +0 -1
  473. package/dist/elements/FolderView/ItemCardGrid/index.scss +0 -16
  474. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +0 -37
  475. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +0 -1
  476. package/dist/elements/FolderView/MoveDocToFolder/index.js +0 -292
  477. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +0 -1
  478. package/dist/elements/FolderView/SimpleTable/index.d.ts +0 -19
  479. package/dist/elements/FolderView/SimpleTable/index.d.ts.map +0 -1
  480. package/dist/elements/FolderView/SimpleTable/index.js +0 -95
  481. package/dist/elements/FolderView/SimpleTable/index.js.map +0 -1
  482. package/dist/elements/FolderView/SimpleTable/index.scss +0 -59
  483. package/dist/elements/FolderView/SortByPill/index.d.ts +0 -4
  484. package/dist/elements/FolderView/SortByPill/index.d.ts.map +0 -1
  485. package/dist/elements/FolderView/SortByPill/index.js +0 -112
  486. package/dist/elements/FolderView/SortByPill/index.js.map +0 -1
  487. package/dist/elements/FolderView/SortByPill/index.scss +0 -16
  488. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts +0 -8
  489. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts.map +0 -1
  490. package/dist/elements/FolderView/ToggleViewButtons/index.js +0 -31
  491. package/dist/elements/FolderView/ToggleViewButtons/index.js.map +0 -1
  492. package/dist/elements/FolderView/ToggleViewButtons/index.scss +0 -17
  493. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts +0 -15
  494. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts.map +0 -1
  495. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +0 -182
  496. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +0 -1
  497. package/dist/providers/Folders/groupItemIDsByRelation.d.ts +0 -3
  498. package/dist/providers/Folders/groupItemIDsByRelation.d.ts.map +0 -1
  499. package/dist/providers/Folders/groupItemIDsByRelation.js +0 -10
  500. package/dist/providers/Folders/groupItemIDsByRelation.js.map +0 -1
  501. package/dist/providers/Folders/index.d.ts +0 -143
  502. package/dist/providers/Folders/index.d.ts.map +0 -1
  503. package/dist/providers/Folders/index.js +0 -641
  504. package/dist/providers/Folders/index.js.map +0 -1
  505. package/dist/utilities/getFolderResultsComponentAndData.d.ts +0 -25
  506. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +0 -1
  507. package/dist/utilities/getFolderResultsComponentAndData.js +0 -135
  508. package/dist/utilities/getFolderResultsComponentAndData.js.map +0 -1
  509. package/dist/views/BrowseByFolder/index.d.ts +0 -5
  510. package/dist/views/BrowseByFolder/index.d.ts.map +0 -1
  511. package/dist/views/BrowseByFolder/index.js +0 -342
  512. package/dist/views/BrowseByFolder/index.js.map +0 -1
  513. package/dist/views/BrowseByFolder/index.scss +0 -174
  514. package/dist/views/CollectionFolder/ListSelection/index.d.ts +0 -9
  515. package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +0 -1
  516. package/dist/views/CollectionFolder/ListSelection/index.js +0 -180
  517. package/dist/views/CollectionFolder/ListSelection/index.js.map +0 -1
  518. package/dist/views/CollectionFolder/index.d.ts +0 -5
  519. package/dist/views/CollectionFolder/index.d.ts.map +0 -1
  520. package/dist/views/CollectionFolder/index.js +0 -325
  521. package/dist/views/CollectionFolder/index.js.map +0 -1
  522. package/dist/views/CollectionFolder/index.scss +0 -162
@@ -0,0 +1,28 @@
1
+ import type React from 'react';
2
+ type FocusableItem = {
3
+ id: string;
4
+ ref: React.RefObject<HTMLElement>;
5
+ type: 'load-more' | 'node';
6
+ };
7
+ type TreeFocusContextType = {
8
+ focusedId: null | string;
9
+ moveFocus: (direction: 'down' | 'up') => void;
10
+ registerItem: (item: FocusableItem) => void;
11
+ setFocusedId: (id: null | string) => void;
12
+ unregisterItem: (id: string) => void;
13
+ };
14
+ export declare const TreeFocusProvider: React.FC<{
15
+ children: React.ReactNode;
16
+ }>;
17
+ export declare const useTreeFocus: () => TreeFocusContextType;
18
+ export declare const useFocusableItem: ({ id, type, ref, }: {
19
+ id: string;
20
+ ref: React.RefObject<HTMLElement>;
21
+ type: "load-more" | "node";
22
+ }) => {
23
+ handleFocus: () => void;
24
+ isFocused: boolean;
25
+ tabIndex: number;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=TreeFocusContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeFocusContext.d.ts","sourceRoot":"","sources":["../../../src/elements/HierarchyTree/TreeFocusContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC,CAAA;AAID,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAsErE,CAAA;AAED,eAAO,MAAM,YAAY,4BAMxB,CAAA;AAED,eAAO,MAAM,gBAAgB,uBAI1B;IACD,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B;;;;CAwBA,CAAA"}
@@ -0,0 +1,140 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { createContext, use, useCallback, useEffect, useRef, useState } from 'react';
6
+ const TreeFocusContext = /*#__PURE__*/createContext(undefined);
7
+ export const TreeFocusProvider = ({
8
+ children
9
+ }) => {
10
+ const [focusedId, setFocusedId] = useState(null);
11
+ const itemsRef = useRef(new Map());
12
+ const registerItem = useCallback(item => {
13
+ itemsRef.current.set(item.id, item);
14
+ }, []);
15
+ const unregisterItem = useCallback(id => {
16
+ itemsRef.current.delete(id);
17
+ }, []);
18
+ const moveFocus = useCallback(direction => {
19
+ const items = Array.from(itemsRef.current.values());
20
+ if (items.length === 0) {
21
+ return;
22
+ }
23
+ // Sort items by their DOM position to ensure correct navigation order
24
+ const sortedItems = items.filter(item_0 => item_0.ref.current).sort((a, b) => {
25
+ const aElement = a.ref.current;
26
+ const bElement = b.ref.current;
27
+ if (!aElement || !bElement) {
28
+ return 0;
29
+ }
30
+ const position = aElement.compareDocumentPosition(bElement);
31
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
32
+ return -1;
33
+ }
34
+ if (position & Node.DOCUMENT_POSITION_PRECEDING) {
35
+ return 1;
36
+ }
37
+ return 0;
38
+ });
39
+ const currentIndex = focusedId ? sortedItems.findIndex(item_1 => item_1.id === focusedId) : -1;
40
+ let nextIndex;
41
+ if (direction === 'down') {
42
+ nextIndex = currentIndex === -1 ? 0 : Math.min(currentIndex + 1, sortedItems.length - 1);
43
+ } else {
44
+ nextIndex = Math.max(currentIndex - 1, 0);
45
+ }
46
+ const nextItem = sortedItems[nextIndex];
47
+ if (nextItem && nextItem.ref.current) {
48
+ nextItem.ref.current.focus();
49
+ setFocusedId(nextItem.id);
50
+ }
51
+ }, [focusedId]);
52
+ return /*#__PURE__*/_jsx(TreeFocusContext, {
53
+ value: {
54
+ focusedId,
55
+ moveFocus,
56
+ registerItem,
57
+ setFocusedId,
58
+ unregisterItem
59
+ },
60
+ children: children
61
+ });
62
+ };
63
+ export const useTreeFocus = () => {
64
+ const context = use(TreeFocusContext);
65
+ if (!context) {
66
+ throw new Error('useTreeFocus must be used within TreeFocusProvider');
67
+ }
68
+ return context;
69
+ };
70
+ export const useFocusableItem = t0 => {
71
+ const $ = _c(14);
72
+ const {
73
+ id,
74
+ type,
75
+ ref
76
+ } = t0;
77
+ const {
78
+ focusedId,
79
+ registerItem,
80
+ setFocusedId,
81
+ unregisterItem
82
+ } = useTreeFocus();
83
+ const isFocused = focusedId === id;
84
+ const isFirstItemEver = focusedId === null;
85
+ let t1;
86
+ let t2;
87
+ if ($[0] !== id || $[1] !== ref || $[2] !== registerItem || $[3] !== type || $[4] !== unregisterItem) {
88
+ t1 = () => {
89
+ registerItem({
90
+ id,
91
+ type,
92
+ ref
93
+ });
94
+ return () => {
95
+ unregisterItem(id);
96
+ };
97
+ };
98
+ t2 = [id, ref, type, registerItem, unregisterItem];
99
+ $[0] = id;
100
+ $[1] = ref;
101
+ $[2] = registerItem;
102
+ $[3] = type;
103
+ $[4] = unregisterItem;
104
+ $[5] = t1;
105
+ $[6] = t2;
106
+ } else {
107
+ t1 = $[5];
108
+ t2 = $[6];
109
+ }
110
+ useEffect(t1, t2);
111
+ let t3;
112
+ if ($[7] !== id || $[8] !== setFocusedId) {
113
+ t3 = () => {
114
+ setFocusedId(id);
115
+ };
116
+ $[7] = id;
117
+ $[8] = setFocusedId;
118
+ $[9] = t3;
119
+ } else {
120
+ t3 = $[9];
121
+ }
122
+ const handleFocus = t3;
123
+ const tabIndex = isFocused ? 0 : isFirstItemEver ? 0 : -1;
124
+ let t4;
125
+ if ($[10] !== handleFocus || $[11] !== isFocused || $[12] !== tabIndex) {
126
+ t4 = {
127
+ handleFocus,
128
+ isFocused,
129
+ tabIndex
130
+ };
131
+ $[10] = handleFocus;
132
+ $[11] = isFocused;
133
+ $[12] = tabIndex;
134
+ $[13] = t4;
135
+ } else {
136
+ t4 = $[13];
137
+ }
138
+ return t4;
139
+ };
140
+ //# sourceMappingURL=TreeFocusContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeFocusContext.js","names":["c","_c","createContext","use","useCallback","useEffect","useRef","useState","TreeFocusContext","undefined","TreeFocusProvider","children","focusedId","setFocusedId","itemsRef","Map","registerItem","item","current","set","id","unregisterItem","delete","moveFocus","direction","items","Array","from","values","length","sortedItems","filter","ref","sort","a","b","aElement","bElement","position","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","currentIndex","findIndex","nextIndex","Math","min","max","nextItem","focus","_jsx","value","useTreeFocus","context","Error","useFocusableItem","t0","$","type","isFocused","isFirstItemEver","t1","t2","t3","handleFocus","tabIndex","t4"],"sources":["../../../src/elements/HierarchyTree/TreeFocusContext.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { createContext, use, useCallback, useEffect, useRef, useState } from 'react'\n\ntype FocusableItem = {\n id: string\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}\n\ntype TreeFocusContextType = {\n focusedId: null | string\n moveFocus: (direction: 'down' | 'up') => void\n registerItem: (item: FocusableItem) => void\n setFocusedId: (id: null | string) => void\n unregisterItem: (id: string) => void\n}\n\nconst TreeFocusContext = createContext<TreeFocusContextType | undefined>(undefined)\n\nexport const TreeFocusProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [focusedId, setFocusedId] = useState<null | string>(null)\n const itemsRef = useRef<Map<string, FocusableItem>>(new Map())\n\n const registerItem = useCallback((item: FocusableItem) => {\n itemsRef.current.set(item.id, item)\n }, [])\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current.delete(id)\n }, [])\n\n const moveFocus = useCallback(\n (direction: 'down' | 'up') => {\n const items = Array.from(itemsRef.current.values())\n if (items.length === 0) {\n return\n }\n\n // Sort items by their DOM position to ensure correct navigation order\n const sortedItems = items\n .filter((item) => item.ref.current)\n .sort((a, b) => {\n const aElement = a.ref.current\n const bElement = b.ref.current\n if (!aElement || !bElement) {\n return 0\n }\n\n const position = aElement.compareDocumentPosition(bElement)\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1\n }\n return 0\n })\n\n const currentIndex = focusedId ? sortedItems.findIndex((item) => item.id === focusedId) : -1\n\n let nextIndex: number\n if (direction === 'down') {\n nextIndex = currentIndex === -1 ? 0 : Math.min(currentIndex + 1, sortedItems.length - 1)\n } else {\n nextIndex = Math.max(currentIndex - 1, 0)\n }\n\n const nextItem = sortedItems[nextIndex]\n if (nextItem && nextItem.ref.current) {\n nextItem.ref.current.focus()\n setFocusedId(nextItem.id)\n }\n },\n [focusedId],\n )\n\n return (\n <TreeFocusContext\n value={{\n focusedId,\n moveFocus,\n registerItem,\n setFocusedId,\n unregisterItem,\n }}\n >\n {children}\n </TreeFocusContext>\n )\n}\n\nexport const useTreeFocus = () => {\n const context = use(TreeFocusContext)\n if (!context) {\n throw new Error('useTreeFocus must be used within TreeFocusProvider')\n }\n return context\n}\n\nexport const useFocusableItem = ({\n id,\n type,\n ref,\n}: {\n id: string\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}) => {\n const { focusedId, registerItem, setFocusedId, unregisterItem } = useTreeFocus()\n const isFocused = focusedId === id\n const isFirstItemEver = focusedId === null\n\n useEffect(() => {\n registerItem({ id, type, ref })\n return () => {\n unregisterItem(id)\n }\n }, [id, ref, type, registerItem, unregisterItem])\n\n const handleFocus = useCallback(() => {\n setFocusedId(id)\n }, [id, setFocusedId])\n\n // Roving tabindex: focused item gets 0, first item (when nothing focused) gets 0, all others get -1\n const tabIndex = isFocused ? 0 : isFirstItemEver ? 0 : -1\n\n return {\n handleFocus,\n isFocused,\n tabIndex,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { TreeNodeProps } from '../types.js';
3
+ import './index.scss';
4
+ export declare const TreeNode: ({ cache, collectionSlug, depth, expandedNodes, limit, node, onSelect, onToggle, parentFieldName, selected, selectedNodeId, useAsTitle, }: TreeNodeProps) => React.JSX.Element;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/HierarchyTree/TreeNode/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAQhD,OAAO,cAAc,CAAA;AAmBrB,eAAO,MAAM,QAAQ,6IAalB,aAAa,sBA6Kf,CAAA"}
@@ -0,0 +1,201 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
+ import { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared';
5
+ import React, { useCallback, useRef } from 'react';
6
+ import { Spinner } from '../../../elements/Spinner/index.js';
7
+ import { ChevronIcon } from '../../../icons/Chevron/index.js';
8
+ import { useTranslation } from '../../../providers/Translation/index.js';
9
+ import { LoadMore } from '../LoadMore/index.js';
10
+ import { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js';
11
+ import { useChildren } from '../useChildren.js';
12
+ import './index.scss';
13
+ const baseClass = 'hierarchy-tree-node';
14
+ const getDocumentTitle = (doc, useAsTitle) => {
15
+ const docId = doc.id;
16
+ const idStr = typeof docId === 'number' ? String(docId) : docId;
17
+ if (!useAsTitle) {
18
+ return idStr;
19
+ }
20
+ const value = doc[useAsTitle];
21
+ if (value && (typeof value === 'string' || typeof value === 'number')) {
22
+ return String(value);
23
+ }
24
+ return idStr;
25
+ };
26
+ export const TreeNode = ({
27
+ cache,
28
+ collectionSlug,
29
+ depth = 0,
30
+ expandedNodes,
31
+ limit = DEFAULT_HIERARCHY_TREE_LIMIT,
32
+ node,
33
+ onSelect,
34
+ onToggle,
35
+ parentFieldName,
36
+ selected,
37
+ selectedNodeId,
38
+ useAsTitle
39
+ }) => {
40
+ const {
41
+ t
42
+ } = useTranslation();
43
+ const expanded = expandedNodes.has(node.id);
44
+ const nodeRef = useRef(null);
45
+ const contentRef = useRef(null);
46
+ const {
47
+ setFocusedId
48
+ } = useTreeFocus();
49
+ const {
50
+ children,
51
+ hasMore,
52
+ isLoading,
53
+ loadMore: loadMoreFromHook,
54
+ totalDocs
55
+ } = useChildren({
56
+ cache,
57
+ collectionSlug,
58
+ enabled: expanded,
59
+ limit,
60
+ parentFieldName,
61
+ parentId: node.id
62
+ });
63
+ const handleLoadMore = React.useCallback(async () => {
64
+ const newDocs = await loadMoreFromHook();
65
+ if (newDocs && newDocs.length > 0) {
66
+ const firstNewDoc = newDocs[0];
67
+ const docId = firstNewDoc.id;
68
+ setFocusedId(`node-${docId}`);
69
+ }
70
+ }, [loadMoreFromHook, setFocusedId]);
71
+ const {
72
+ handleFocus,
73
+ isFocused,
74
+ tabIndex
75
+ } = useFocusableItem({
76
+ id: `node-${node.id}`,
77
+ type: 'node',
78
+ ref: contentRef
79
+ });
80
+ // When focusedId points to this node, actually call .focus()
81
+ React.useEffect(() => {
82
+ if (isFocused && contentRef.current && document.activeElement !== contentRef.current) {
83
+ contentRef.current.focus();
84
+ }
85
+ }, [isFocused]);
86
+ // Determine if node has children:
87
+ // - If explicitly set in data, use that
88
+ // - If expanded and loaded, check the actual children
89
+ // - Otherwise, assume it might have children (show chevron until proven otherwise)
90
+ const hasChildren = node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true);
91
+ const handleToggleClick = useCallback(e => {
92
+ e.stopPropagation();
93
+ onToggle({
94
+ id: node.id
95
+ });
96
+ }, [node.id, onToggle]);
97
+ const handleSelectClick = useCallback(() => {
98
+ onSelect({
99
+ id: node.id
100
+ });
101
+ }, [node.id, onSelect]);
102
+ const handleKeyDown = useCallback(e_0 => {
103
+ switch (e_0.key) {
104
+ case ' ':
105
+ case 'Enter':
106
+ e_0.preventDefault();
107
+ handleSelectClick();
108
+ break;
109
+ case 'ArrowLeft':
110
+ if (hasChildren && expanded) {
111
+ e_0.preventDefault();
112
+ onToggle({
113
+ id: node.id
114
+ });
115
+ }
116
+ break;
117
+ case 'ArrowRight':
118
+ if (hasChildren && !expanded) {
119
+ e_0.preventDefault();
120
+ onToggle({
121
+ id: node.id
122
+ });
123
+ }
124
+ break;
125
+ }
126
+ }, [hasChildren, expanded, handleSelectClick, onToggle, node.id]);
127
+ return /*#__PURE__*/_jsxs("div", {
128
+ className: baseClass,
129
+ ref: nodeRef,
130
+ style: {
131
+ '--hierarchy-tree-depth': depth
132
+ },
133
+ children: [/*#__PURE__*/_jsxs("div", {
134
+ className: [`${baseClass}__content`, selected && `${baseClass}__content--selected`].filter(Boolean).join(' '),
135
+ onClick: handleSelectClick,
136
+ onFocus: handleFocus,
137
+ onKeyDown: handleKeyDown,
138
+ ref: contentRef,
139
+ role: "button",
140
+ tabIndex: tabIndex,
141
+ children: [/*#__PURE__*/_jsx("div", {
142
+ className: `${baseClass}__indicator`
143
+ }), hasChildren ? /*#__PURE__*/_jsx("button", {
144
+ "aria-label": expanded ? t('general:collapse') : t('general:open'),
145
+ className: `${baseClass}__toggle`,
146
+ onClick: handleToggleClick,
147
+ tabIndex: -1,
148
+ type: "button",
149
+ children: /*#__PURE__*/_jsx(ChevronIcon, {
150
+ direction: expanded ? 'down' : 'right'
151
+ })
152
+ }) : /*#__PURE__*/_jsx("div", {
153
+ className: `${baseClass}__toggle-spacer`
154
+ }), /*#__PURE__*/_jsx("span", {
155
+ className: `${baseClass}__title`,
156
+ title: node.title,
157
+ children: node.title
158
+ }), isLoading && expanded && /*#__PURE__*/_jsx("span", {
159
+ className: `${baseClass}__loading`,
160
+ children: /*#__PURE__*/_jsx(Spinner, {
161
+ loadingText: null,
162
+ size: "small"
163
+ })
164
+ })]
165
+ }), expanded && children && children.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
166
+ children: [/*#__PURE__*/_jsx("div", {
167
+ className: `${baseClass}__children`,
168
+ children: children.map(child => {
169
+ const childData = child;
170
+ const childId = childData.id;
171
+ const childTitle = getDocumentTitle(child, useAsTitle);
172
+ return /*#__PURE__*/_jsx(TreeNode, {
173
+ cache: cache,
174
+ collectionSlug: collectionSlug,
175
+ depth: depth + 1,
176
+ expandedNodes: expandedNodes,
177
+ limit: limit,
178
+ node: {
179
+ id: childId,
180
+ hasChildren: true,
181
+ title: childTitle
182
+ },
183
+ onSelect: onSelect,
184
+ onToggle: onToggle,
185
+ parentFieldName: parentFieldName,
186
+ selected: String(childId) === String(selectedNodeId),
187
+ selectedNodeId: selectedNodeId,
188
+ useAsTitle: useAsTitle
189
+ }, String(childId));
190
+ })
191
+ }), hasMore && /*#__PURE__*/_jsx(LoadMore, {
192
+ currentCount: children.length,
193
+ depth: depth + 1,
194
+ id: `load-more-${node.id}`,
195
+ onLoadMore: handleLoadMore,
196
+ totalDocs: totalDocs
197
+ })]
198
+ })]
199
+ });
200
+ };
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useRef","Spinner","ChevronIcon","useTranslation","LoadMore","useFocusableItem","useTreeFocus","useChildren","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","TreeNode","cache","collectionSlug","depth","expandedNodes","limit","node","onSelect","onToggle","parentFieldName","selected","selectedNodeId","t","expanded","has","nodeRef","contentRef","setFocusedId","children","hasMore","isLoading","loadMore","loadMoreFromHook","totalDocs","enabled","parentId","handleLoadMore","newDocs","length","firstNewDoc","handleFocus","isFocused","tabIndex","type","ref","useEffect","current","document","activeElement","focus","hasChildren","handleToggleClick","e","stopPropagation","handleSelectClick","handleKeyDown","key","preventDefault","_jsxs","className","style","filter","Boolean","join","onClick","onFocus","onKeyDown","role","_jsx","direction","title","loadingText","size","_Fragment","map","child","childData","childId","childTitle","currentCount","onLoadMore"],"sources":["../../../../src/elements/HierarchyTree/TreeNode/index.tsx"],"sourcesContent":["'use client'\n\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport type { TreeNodeProps } from '../types.js'\n\nimport { Spinner } from '../../../elements/Spinner/index.js'\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { LoadMore } from '../LoadMore/index.js'\nimport { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js'\nimport { useChildren } from '../useChildren.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-tree-node'\n\nconst getDocumentTitle = (doc: Record<string, unknown>, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id as number | string\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nexport const TreeNode = ({\n cache,\n collectionSlug,\n depth = 0,\n expandedNodes,\n limit = DEFAULT_HIERARCHY_TREE_LIMIT,\n node,\n onSelect,\n onToggle,\n parentFieldName,\n selected,\n selectedNodeId,\n useAsTitle,\n}: TreeNodeProps) => {\n const { t } = useTranslation()\n const expanded = expandedNodes.has(node.id)\n const nodeRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const { setFocusedId } = useTreeFocus()\n\n const {\n children,\n hasMore,\n isLoading,\n loadMore: loadMoreFromHook,\n totalDocs,\n } = useChildren({\n cache,\n collectionSlug,\n enabled: expanded,\n limit,\n parentFieldName,\n parentId: node.id,\n })\n\n const handleLoadMore = React.useCallback(async () => {\n const newDocs = await loadMoreFromHook()\n\n if (newDocs && newDocs.length > 0) {\n const firstNewDoc = newDocs[0]\n const docId: number | string = (firstNewDoc as { id: number | string }).id\n setFocusedId(`node-${docId}`)\n }\n }, [loadMoreFromHook, setFocusedId])\n\n const { handleFocus, isFocused, tabIndex } = useFocusableItem({\n id: `node-${node.id}`,\n type: 'node',\n ref: contentRef,\n })\n\n // When focusedId points to this node, actually call .focus()\n React.useEffect(() => {\n if (isFocused && contentRef.current && document.activeElement !== contentRef.current) {\n contentRef.current.focus()\n }\n }, [isFocused])\n\n // Determine if node has children:\n // - If explicitly set in data, use that\n // - If expanded and loaded, check the actual children\n // - Otherwise, assume it might have children (show chevron until proven otherwise)\n const hasChildren =\n node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true)\n\n const handleToggleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n onToggle({ id: node.id })\n },\n [node.id, onToggle],\n )\n\n const handleSelectClick = useCallback(() => {\n onSelect({ id: node.id })\n }, [node.id, onSelect])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault()\n handleSelectClick()\n break\n case 'ArrowLeft':\n if (hasChildren && expanded) {\n e.preventDefault()\n onToggle({ id: node.id })\n }\n break\n case 'ArrowRight':\n if (hasChildren && !expanded) {\n e.preventDefault()\n onToggle({ id: node.id })\n }\n break\n }\n },\n [hasChildren, expanded, handleSelectClick, onToggle, node.id],\n )\n\n return (\n <div\n className={baseClass}\n ref={nodeRef}\n style={{ '--hierarchy-tree-depth': depth } as React.CSSProperties}\n >\n <div\n className={[`${baseClass}__content`, selected && `${baseClass}__content--selected`]\n .filter(Boolean)\n .join(' ')}\n onClick={handleSelectClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={contentRef}\n role=\"button\"\n tabIndex={tabIndex}\n >\n <div className={`${baseClass}__indicator`} />\n {hasChildren ? (\n <button\n aria-label={expanded ? t('general:collapse') : t('general:open')}\n className={`${baseClass}__toggle`}\n onClick={handleToggleClick}\n tabIndex={-1}\n type=\"button\"\n >\n <ChevronIcon direction={expanded ? 'down' : 'right'} />\n </button>\n ) : (\n <div className={`${baseClass}__toggle-spacer`} />\n )}\n <span className={`${baseClass}__title`} title={node.title}>\n {node.title}\n </span>\n {isLoading && expanded && (\n <span className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"small\" />\n </span>\n )}\n </div>\n\n {expanded && children && children.length > 0 && (\n <>\n <div className={`${baseClass}__children`}>\n {children.map((child) => {\n const childData = child as { id: number | string }\n const childId = childData.id\n const childTitle = getDocumentTitle(child, useAsTitle)\n return (\n <TreeNode\n cache={cache}\n collectionSlug={collectionSlug}\n depth={depth + 1}\n expandedNodes={expandedNodes}\n key={String(childId)}\n limit={limit}\n node={{\n id: childId,\n hasChildren: true,\n title: childTitle,\n }}\n onSelect={onSelect}\n onToggle={onToggle}\n parentFieldName={parentFieldName}\n selected={String(childId) === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )\n })}\n </div>\n {hasMore && (\n <LoadMore\n currentCount={children.length}\n depth={depth + 1}\n id={`load-more-${node.id}`}\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ @import '../../../scss/styles.scss';
2
+
3
+ .hierarchy-tree-node {
4
+ margin-left: var(--nav-padding-inline-start);
5
+ margin-right: var(--nav-padding-inline-start);
6
+ .hierarchy-tree-node {
7
+ margin-left: 0;
8
+ margin-right: 0;
9
+ }
10
+ // Variables are inherited from parent .hierarchy-tree
11
+
12
+ &__indicator {
13
+ position: absolute;
14
+ left: 0;
15
+ top: 0;
16
+ width: 2px;
17
+ height: 16px;
18
+ background-color: transparent;
19
+ border-start-end-radius: 2px;
20
+ border-end-end-radius: 2px;
21
+ left: calc(var(--nav-padding-inline-start) * -1);
22
+ top: 50%;
23
+ bottom: 50%;
24
+ transform: translateY(-50%);
25
+ }
26
+
27
+ &__content--selected {
28
+ font-weight: 600;
29
+
30
+ & > .hierarchy-tree-node__indicator {
31
+ background-color: var(--theme-text);
32
+ }
33
+ }
34
+
35
+ &__content {
36
+ display: flex;
37
+ align-items: center;
38
+ padding: var(--hierarchy-tree-node-padding-y) 0px;
39
+ padding-left: calc(var(--hierarchy-tree-depth, 0) * var(--hierarchy-tree-indent));
40
+ user-select: none;
41
+ transition: background-color 100ms ease;
42
+ font-size: var(--hierarchy-tree-font-size);
43
+ line-height: var(--hierarchy-tree-node-content-height);
44
+ height: var(--hierarchy-tree-node-content-height);
45
+ position: relative;
46
+ margin-bottom: var(--hierarchy-tree-row-gap);
47
+ border-radius: var(--style-radius-s);
48
+ }
49
+
50
+ &__toggle {
51
+ background: none;
52
+ border: none;
53
+ padding: 0;
54
+ margin: 0;
55
+ margin-right: var(--hierarchy-tree-chevron-spacing);
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ cursor: default;
60
+ color: var(--theme-elevation-400);
61
+ width: var(--hierarchy-tree-chevron-width);
62
+ height: var(--hierarchy-tree-chevron-width);
63
+ flex-shrink: 0;
64
+ border-radius: var(--style-radius-m);
65
+
66
+ &:hover {
67
+ border: 1px solid var(--theme-elevation-400);
68
+ }
69
+ }
70
+
71
+ &__toggle-spacer {
72
+ width: calc(var(--hierarchy-tree-chevron-width) + var(--hierarchy-tree-chevron-spacing));
73
+ flex-shrink: 0;
74
+ }
75
+
76
+ &__title {
77
+ flex: 1;
78
+ min-width: 0;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ font-size: var(--hierarchy-tree-font-size);
83
+ color: var(--theme-text);
84
+ cursor: pointer;
85
+ &:hover {
86
+ text-decoration: underline;
87
+ }
88
+ }
89
+
90
+ &__loading {
91
+ margin-left: 8px;
92
+ display: inline-flex;
93
+ align-items: center;
94
+ }
95
+
96
+ &__children {
97
+ /* Children are rendered with depth variable set */
98
+ }
99
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { HierarchyTreeProps } from './types.js';
3
+ export declare const HierarchyTree: React.FC<HierarchyTreeProps>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/HierarchyTree/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA0EtD,CAAA"}
@@ -0,0 +1,66 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared';
5
+ import React, { useCallback, useMemo } from 'react';
6
+ import { useConfig } from '../../providers/Config/index.js';
7
+ import { useHierarchy } from '../../providers/Hierarchy/index.js';
8
+ import { Tree } from '../Tree/index.js';
9
+ export const HierarchyTree = ({
10
+ baseFilter,
11
+ collectionSlug,
12
+ filterByCollections,
13
+ icon,
14
+ initialData: initialDataProp,
15
+ onNodeClick,
16
+ selectedNodeId,
17
+ useAsTitle: useAsTitleProp
18
+ }) => {
19
+ const {
20
+ getExpandedNodesForCollection,
21
+ getTreeDataForCollection,
22
+ toggleNodeForCollection,
23
+ typeFieldName
24
+ } = useHierarchy();
25
+ // Get initialData from context (cleared on refresh, hydrated by HydrateHierarchyProvider)
26
+ // Falls back to prop for first render before hydration completes
27
+ const contextData = getTreeDataForCollection(collectionSlug);
28
+ const initialData = contextData ?? initialDataProp;
29
+ const {
30
+ getEntityConfig
31
+ } = useConfig();
32
+ const collectionConfig = getEntityConfig({
33
+ collectionSlug
34
+ });
35
+ const hierarchyConfig = collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object' ? collectionConfig.hierarchy : undefined;
36
+ const parentFieldName = hierarchyConfig?.parentFieldName;
37
+ const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT;
38
+ const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle;
39
+ // Get all possible type values from relatedCollections for filtering empty arrays
40
+ const allPossibleTypeValues = useMemo(() => hierarchyConfig?.relatedCollections ? Object.keys(hierarchyConfig.relatedCollections) : undefined, [hierarchyConfig?.relatedCollections]);
41
+ // Get expanded nodes for THIS collection specifically
42
+ const expandedNodes = useMemo(() => getExpandedNodesForCollection(collectionSlug), [collectionSlug, getExpandedNodesForCollection]);
43
+ // Toggle node for THIS collection specifically
44
+ const handleToggleNode = useCallback(({
45
+ id
46
+ }) => {
47
+ toggleNodeForCollection(collectionSlug, id);
48
+ }, [collectionSlug, toggleNodeForCollection]);
49
+ return /*#__PURE__*/_jsx(Tree, {
50
+ allPossibleTypeValues: allPossibleTypeValues,
51
+ baseFilter: baseFilter,
52
+ collectionSlug: collectionSlug,
53
+ expandedNodes: expandedNodes,
54
+ filterByCollections: filterByCollections,
55
+ icon: icon,
56
+ initialData: initialData,
57
+ onNodeClick: onNodeClick,
58
+ parentFieldName: parentFieldName,
59
+ selectedNodeId: selectedNodeId,
60
+ toggleNode: handleToggleNode,
61
+ treeLimit: treeLimit,
62
+ typeFieldName: typeFieldName,
63
+ useAsTitle: useAsTitle
64
+ });
65
+ };
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useMemo","useConfig","useHierarchy","Tree","HierarchyTree","baseFilter","collectionSlug","filterByCollections","icon","initialData","initialDataProp","onNodeClick","selectedNodeId","useAsTitle","useAsTitleProp","getExpandedNodesForCollection","getTreeDataForCollection","toggleNodeForCollection","typeFieldName","contextData","getEntityConfig","collectionConfig","hierarchyConfig","hierarchy","undefined","parentFieldName","treeLimit","admin","allPossibleTypeValues","relatedCollections","Object","keys","expandedNodes","handleToggleNode","id","_jsx","toggleNode"],"sources":["../../../src/elements/HierarchyTree/index.tsx"],"sourcesContent":["'use client'\n\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { HierarchyTreeProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useHierarchy } from '../../providers/Hierarchy/index.js'\nimport { Tree } from '../Tree/index.js'\n\nexport const HierarchyTree: React.FC<HierarchyTreeProps> = ({\n baseFilter,\n collectionSlug,\n filterByCollections,\n icon,\n initialData: initialDataProp,\n onNodeClick,\n selectedNodeId,\n useAsTitle: useAsTitleProp,\n}) => {\n const {\n getExpandedNodesForCollection,\n getTreeDataForCollection,\n toggleNodeForCollection,\n typeFieldName,\n } = useHierarchy()\n\n // Get initialData from context (cleared on refresh, hydrated by HydrateHierarchyProvider)\n // Falls back to prop for first render before hydration completes\n const contextData = getTreeDataForCollection(collectionSlug)\n const initialData = contextData ?? initialDataProp\n\n const { getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const hierarchyConfig =\n collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle\n\n // Get all possible type values from relatedCollections for filtering empty arrays\n const allPossibleTypeValues = useMemo(\n () =>\n hierarchyConfig?.relatedCollections\n ? Object.keys(hierarchyConfig.relatedCollections)\n : undefined,\n [hierarchyConfig?.relatedCollections],\n )\n\n // Get expanded nodes for THIS collection specifically\n const expandedNodes = useMemo(\n () => getExpandedNodesForCollection(collectionSlug),\n [collectionSlug, getExpandedNodesForCollection],\n )\n\n // Toggle node for THIS collection specifically\n const handleToggleNode = useCallback(\n ({ id }: { id: number | string }) => {\n toggleNodeForCollection(collectionSlug, id)\n },\n [collectionSlug, toggleNodeForCollection],\n )\n\n return (\n <Tree\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n collectionSlug={collectionSlug}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n initialData={initialData}\n onNodeClick={onNodeClick}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n toggleNode={handleToggleNode}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,4BAA4B,QAAQ;AAC7C,OAAOC,KAAA,IAASC,WAAW,EAAEC,OAAO,QAAQ;AAI5C,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,aAAA,GAA8CA,CAAC;EAC1DC,UAAU;EACVC,cAAc;EACdC,mBAAmB;EACnBC,IAAI;EACJC,WAAA,EAAaC,eAAe;EAC5BC,WAAW;EACXC,cAAc;EACdC,UAAA,EAAYC;AAAc,CAC3B;EACC,MAAM;IACJC,6BAA6B;IAC7BC,wBAAwB;IACxBC,uBAAuB;IACvBC;EAAa,CACd,GAAGhB,YAAA;EAEJ;EACA;EACA,MAAMiB,WAAA,GAAcH,wBAAA,CAAyBV,cAAA;EAC7C,MAAMG,WAAA,GAAcU,WAAA,IAAeT,eAAA;EAEnC,MAAM;IAAEU;EAAe,CAAE,GAAGnB,SAAA;EAE5B,MAAMoB,gBAAA,GAAmBD,eAAA,CAAgB;IAAEd;EAAe;EAC1D,MAAMgB,eAAA,GACJD,gBAAA,CAAiBE,SAAS,IAAI,OAAOF,gBAAA,CAAiBE,SAAS,KAAK,WAChEF,gBAAA,CAAiBE,SAAS,GAC1BC,SAAA;EACN,MAAMC,eAAA,GAAkBH,eAAA,EAAiBG,eAAA;EACzC,MAAMC,SAAA,GAAYJ,eAAA,EAAiBK,KAAA,EAAOD,SAAA,IAAa7B,4BAAA;EACvD,MAAMgB,UAAA,GAAaC,cAAA,IAAkBO,gBAAA,CAAiBM,KAAK,EAAEd,UAAA;EAE7D;EACA,MAAMe,qBAAA,GAAwB5B,OAAA,CAC5B,MACEsB,eAAA,EAAiBO,kBAAA,GACbC,MAAA,CAAOC,IAAI,CAACT,eAAA,CAAgBO,kBAAkB,IAC9CL,SAAA,EACN,CAACF,eAAA,EAAiBO,kBAAA,CAAmB;EAGvC;EACA,MAAMG,aAAA,GAAgBhC,OAAA,CACpB,MAAMe,6BAAA,CAA8BT,cAAA,GACpC,CAACA,cAAA,EAAgBS,6BAAA,CAA8B;EAGjD;EACA,MAAMkB,gBAAA,GAAmBlC,WAAA,CACvB,CAAC;IAAEmC;EAAE,CAA2B;IAC9BjB,uBAAA,CAAwBX,cAAA,EAAgB4B,EAAA;EAC1C,GACA,CAAC5B,cAAA,EAAgBW,uBAAA,CAAwB;EAG3C,oBACEkB,IAAA,CAAChC,IAAA;IACCyB,qBAAA,EAAuBA,qBAAA;IACvBvB,UAAA,EAAYA,UAAA;IACZC,cAAA,EAAgBA,cAAA;IAChB0B,aAAA,EAAeA,aAAA;IACfzB,mBAAA,EAAqBA,mBAAA;IACrBC,IAAA,EAAMA,IAAA;IACNC,WAAA,EAAaA,WAAA;IACbE,WAAA,EAAaA,WAAA;IACbc,eAAA,EAAiBA,eAAA;IACjBb,cAAA,EAAgBA,cAAA;IAChBwB,UAAA,EAAYH,gBAAA;IACZP,SAAA,EAAWA,SAAA;IACXR,aAAA,EAAeA,aAAA;IACfL,UAAA,EAAYA;;AAGlB","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ @import '../../scss/styles.scss';
2
+
3
+ .hierarchy-sidebar-tab {
4
+ display: flex;
5
+ flex-direction: column;
6
+ padding: 0;
7
+ margin: 0;
8
+ overflow-y: auto;
9
+ height: 100%;
10
+ // pull width edge to edge of the nav-sidebar container
11
+ width: calc(100% + var(--nav-padding-inline-start) + var(--nav-padding-inline-end));
12
+ margin-inline: calc(var(--nav-padding-inline-start) * -1);
13
+ }
14
+
15
+ .hierarchy-tree {
16
+ // CSS variables for customization - defined once at the top level
17
+ --hierarchy-tree-indent: 20px;
18
+ --hierarchy-tree-chevron-width: 16px;
19
+ --hierarchy-tree-chevron-spacing: 8px;
20
+ --hierarchy-tree-node-padding-y: calc(var(--base) / 4); // 4px
21
+ --hierarchy-tree-node-content-height: 24px;
22
+ --hierarchy-tree-row-gap: 8px;
23
+ --hierarchy-tree-font-size: 13px;
24
+
25
+ padding: 0;
26
+ margin: 0;
27
+ margin-top: 2px; // account for accessibility outline
28
+
29
+ &__loading {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ padding: var(--base);
34
+ min-height: 100px;
35
+ }
36
+
37
+ &__empty {
38
+ padding: 12px 16px;
39
+ color: var(--theme-elevation-500);
40
+ font-size: var(--hierarchy-tree-font-size);
41
+ }
42
+ }