@payloadcms/ui 3.80.0-internal.37a8509 → 3.80.0-internal.52ab774

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 (490) 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/Hierarchy/ColumnBrowser/Column/index.d.ts +5 -0
  42. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -0
  43. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +166 -0
  44. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -0
  45. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.scss +63 -0
  46. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts +5 -0
  47. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -0
  48. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +161 -0
  49. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -0
  50. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.scss +105 -0
  51. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +8 -0
  52. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -0
  53. package/dist/elements/Hierarchy/ColumnBrowser/index.js +473 -0
  54. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -0
  55. package/dist/elements/Hierarchy/ColumnBrowser/index.scss +20 -0
  56. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +106 -0
  57. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -0
  58. package/dist/elements/Hierarchy/ColumnBrowser/types.js +2 -0
  59. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -0
  60. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts +11 -0
  61. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -0
  62. package/dist/elements/Hierarchy/DocHeaderButton/index.js +126 -0
  63. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -0
  64. package/dist/elements/{FolderView/MoveDocToFolder → Hierarchy/DocHeaderButton}/index.scss +7 -1
  65. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts +10 -0
  66. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +1 -0
  67. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +34 -0
  68. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -0
  69. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts +15 -0
  70. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +1 -0
  71. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js +60 -0
  72. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +1 -0
  73. package/dist/elements/Hierarchy/Drawer/index.d.ts +20 -0
  74. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -0
  75. package/dist/elements/Hierarchy/Drawer/index.js +291 -0
  76. package/dist/elements/Hierarchy/Drawer/index.js.map +1 -0
  77. package/dist/elements/Hierarchy/Drawer/index.scss +81 -0
  78. package/dist/elements/Hierarchy/Drawer/types.d.ts +68 -0
  79. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +1 -0
  80. package/dist/elements/Hierarchy/Drawer/types.js +3 -0
  81. package/dist/elements/Hierarchy/Drawer/types.js.map +1 -0
  82. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +30 -0
  83. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +1 -0
  84. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js +148 -0
  85. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +1 -0
  86. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +13 -0
  87. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
  88. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +185 -0
  89. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
  90. package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +78 -0
  91. package/dist/elements/Hierarchy/Field/index.client.d.ts +8 -0
  92. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -0
  93. package/dist/elements/Hierarchy/Field/index.client.js +186 -0
  94. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -0
  95. package/dist/elements/Hierarchy/Field/index.scss +35 -0
  96. package/dist/elements/Hierarchy/Field/index.server.d.ts +3 -0
  97. package/dist/elements/Hierarchy/Field/index.server.d.ts.map +1 -0
  98. package/dist/elements/Hierarchy/Field/index.server.js +30 -0
  99. package/dist/elements/Hierarchy/Field/index.server.js.map +1 -0
  100. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +4 -0
  101. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +1 -0
  102. package/dist/elements/Hierarchy/HydrateProvider/index.js +70 -0
  103. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -0
  104. package/dist/elements/Hierarchy/MoveMany/index.d.ts +22 -0
  105. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -0
  106. package/dist/elements/Hierarchy/MoveMany/index.js +278 -0
  107. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -0
  108. package/dist/elements/Hierarchy/MoveMany/index.scss +7 -0
  109. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts +18 -0
  110. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +1 -0
  111. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js +115 -0
  112. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +1 -0
  113. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts +13 -0
  114. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +1 -0
  115. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +88 -0
  116. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -0
  117. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts +17 -0
  118. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +1 -0
  119. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js +85 -0
  120. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -0
  121. package/dist/elements/Hierarchy/Search/index.d.ts +10 -0
  122. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -0
  123. package/dist/elements/Hierarchy/Search/index.js +144 -0
  124. package/dist/elements/Hierarchy/Search/index.js.map +1 -0
  125. package/dist/elements/Hierarchy/Search/index.scss +212 -0
  126. package/dist/elements/Hierarchy/Search/types.d.ts +21 -0
  127. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -0
  128. package/dist/elements/Hierarchy/Search/types.js +2 -0
  129. package/dist/elements/Hierarchy/Search/types.js.map +1 -0
  130. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts +20 -0
  131. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -0
  132. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +122 -0
  133. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -0
  134. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +21 -0
  135. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -0
  136. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +194 -0
  137. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -0
  138. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts +7 -0
  139. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -0
  140. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +177 -0
  141. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -0
  142. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts +8 -0
  143. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  144. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js +36 -0
  145. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +1 -0
  146. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +12 -0
  147. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -0
  148. package/dist/elements/Hierarchy/Tree/LoadMore/index.js +29 -0
  149. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -0
  150. package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +26 -0
  151. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +7 -0
  152. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +1 -0
  153. package/dist/elements/Hierarchy/Tree/TreeConnector.js +23 -0
  154. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +1 -0
  155. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +28 -0
  156. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -0
  157. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +140 -0
  158. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -0
  159. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +5 -0
  160. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -0
  161. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +225 -0
  162. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -0
  163. package/dist/elements/Hierarchy/Tree/TreeNode/index.scss +110 -0
  164. package/dist/elements/Hierarchy/Tree/index.d.ts +5 -0
  165. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -0
  166. package/dist/elements/Hierarchy/Tree/index.js +305 -0
  167. package/dist/elements/Hierarchy/Tree/index.js.map +1 -0
  168. package/dist/elements/Hierarchy/Tree/index.scss +60 -0
  169. package/dist/elements/Hierarchy/Tree/types.d.ts +76 -0
  170. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -0
  171. package/dist/elements/Hierarchy/Tree/types.js +2 -0
  172. package/dist/elements/Hierarchy/Tree/types.js.map +1 -0
  173. package/dist/elements/Hierarchy/Tree/useChildren.d.ts +32 -0
  174. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -0
  175. package/dist/elements/Hierarchy/Tree/useChildren.js +233 -0
  176. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -0
  177. package/dist/elements/Link/index.d.ts +4 -0
  178. package/dist/elements/Link/index.d.ts.map +1 -1
  179. package/dist/elements/Link/index.js +5 -0
  180. package/dist/elements/Link/index.js.map +1 -1
  181. package/dist/elements/ListHeader/TitleActions/index.d.ts +0 -1
  182. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  183. package/dist/elements/ListHeader/TitleActions/index.js +0 -1
  184. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  185. package/dist/elements/ListHeader/index.js +2 -2
  186. package/dist/elements/ListHeader/index.js.map +1 -1
  187. package/dist/elements/ListSelection/index.scss +2 -1
  188. package/dist/elements/LoadMoreRow/index.d.ts +15 -0
  189. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -0
  190. package/dist/elements/LoadMoreRow/index.js +75 -0
  191. package/dist/elements/LoadMoreRow/index.js.map +1 -0
  192. package/dist/elements/LoadMoreRow/index.scss +42 -0
  193. package/dist/elements/Locked/index.scss +1 -1
  194. package/dist/elements/RelationshipTable/index.js +3 -3
  195. package/dist/elements/RelationshipTable/index.js.map +1 -1
  196. package/dist/elements/Spinner/index.d.ts +16 -0
  197. package/dist/elements/Spinner/index.d.ts.map +1 -0
  198. package/dist/elements/Spinner/index.js +49 -0
  199. package/dist/elements/Spinner/index.js.map +1 -0
  200. package/dist/elements/Spinner/index.scss +39 -0
  201. package/dist/elements/StepNav/index.d.ts.map +1 -1
  202. package/dist/elements/StepNav/index.js +10 -1
  203. package/dist/elements/StepNav/index.js.map +1 -1
  204. package/dist/elements/StepNav/types.d.ts +1 -0
  205. package/dist/elements/StepNav/types.d.ts.map +1 -1
  206. package/dist/elements/StepNav/types.js.map +1 -1
  207. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts +6 -0
  208. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -0
  209. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +187 -0
  210. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -0
  211. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.scss +29 -0
  212. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  213. package/dist/elements/Table/DefaultCell/index.js +20 -0
  214. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  215. package/dist/elements/Tooltip/index.js +1 -1
  216. package/dist/elements/Tooltip/index.js.map +1 -1
  217. package/dist/elements/Tooltip/index.scss +1 -15
  218. package/dist/elements/withMergedProps/index.d.ts +1 -1
  219. package/dist/elements/withMergedProps/index.js +1 -1
  220. package/dist/elements/withMergedProps/index.js.map +1 -1
  221. package/dist/exports/client/index.d.ts +26 -9
  222. package/dist/exports/client/index.d.ts.map +1 -1
  223. package/dist/exports/client/index.js +14 -12
  224. package/dist/exports/client/index.js.map +4 -4
  225. package/dist/exports/rsc/index.d.ts +3 -3
  226. package/dist/exports/rsc/index.d.ts.map +1 -1
  227. package/dist/exports/rsc/index.js +3 -3
  228. package/dist/exports/rsc/index.js.map +1 -1
  229. package/dist/exports/shared/index.js.map +1 -1
  230. package/dist/fields/Join/index.d.ts.map +1 -1
  231. package/dist/fields/Join/index.js +1 -1
  232. package/dist/fields/Join/index.js.map +1 -1
  233. package/dist/fields/Null/index.d.ts +11 -0
  234. package/dist/fields/Null/index.d.ts.map +1 -0
  235. package/dist/fields/Null/index.js +13 -0
  236. package/dist/fields/Null/index.js.map +1 -0
  237. package/dist/icons/Chevron/index.d.ts.map +1 -1
  238. package/dist/icons/Chevron/index.js +5 -1
  239. package/dist/icons/Chevron/index.js.map +1 -1
  240. package/dist/icons/Document/index.d.ts +3 -1
  241. package/dist/icons/Document/index.d.ts.map +1 -1
  242. package/dist/icons/Document/index.js +4 -2
  243. package/dist/icons/Document/index.js.map +1 -1
  244. package/dist/icons/Document/index.scss +4 -0
  245. package/dist/icons/Filter/index.d.ts +4 -0
  246. package/dist/icons/Filter/index.d.ts.map +1 -0
  247. package/dist/icons/Filter/index.js +15 -0
  248. package/dist/icons/Filter/index.js.map +1 -0
  249. package/dist/icons/Filter/index.scss +13 -0
  250. package/dist/icons/Folder/index.d.ts +4 -2
  251. package/dist/icons/Folder/index.d.ts.map +1 -1
  252. package/dist/icons/Folder/index.js +4 -2
  253. package/dist/icons/Folder/index.js.map +1 -1
  254. package/dist/icons/Folder/index.scss +8 -0
  255. package/dist/icons/Lock/index.scss +1 -1
  256. package/dist/icons/Plus/index.d.ts.map +1 -1
  257. package/dist/icons/Plus/index.js +2 -1
  258. package/dist/icons/Plus/index.js.map +1 -1
  259. package/dist/icons/TableView/index.d.ts +3 -0
  260. package/dist/icons/TableView/index.d.ts.map +1 -0
  261. package/dist/icons/TableView/index.js +16 -0
  262. package/dist/icons/TableView/index.js.map +1 -0
  263. package/dist/icons/Tag/index.d.ts +8 -0
  264. package/dist/icons/Tag/index.d.ts.map +1 -0
  265. package/dist/icons/Tag/index.js +22 -0
  266. package/dist/icons/Tag/index.js.map +1 -0
  267. package/dist/icons/Tag/index.scss +14 -0
  268. package/dist/providers/DocumentSelection/index.d.ts +8 -0
  269. package/dist/providers/DocumentSelection/index.d.ts.map +1 -0
  270. package/dist/providers/DocumentSelection/index.js +239 -0
  271. package/dist/providers/DocumentSelection/index.js.map +1 -0
  272. package/dist/providers/DocumentSelection/types.d.ts +122 -0
  273. package/dist/providers/DocumentSelection/types.d.ts.map +1 -0
  274. package/dist/providers/DocumentSelection/types.js +5 -0
  275. package/dist/providers/DocumentSelection/types.js.map +1 -0
  276. package/dist/providers/Hierarchy/index.d.ts +5 -0
  277. package/dist/providers/Hierarchy/index.d.ts.map +1 -0
  278. package/dist/providers/Hierarchy/index.js +358 -0
  279. package/dist/providers/Hierarchy/index.js.map +1 -0
  280. package/dist/providers/Hierarchy/types.d.ts +106 -0
  281. package/dist/providers/Hierarchy/types.d.ts.map +1 -0
  282. package/dist/providers/Hierarchy/types.js +2 -0
  283. package/dist/providers/Hierarchy/types.js.map +1 -0
  284. package/dist/providers/Root/index.d.ts.map +1 -1
  285. package/dist/providers/Root/index.js +18 -15
  286. package/dist/providers/Root/index.js.map +1 -1
  287. package/dist/providers/ServerFunctions/index.d.ts +1 -6
  288. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  289. package/dist/providers/ServerFunctions/index.js +0 -18
  290. package/dist/providers/ServerFunctions/index.js.map +1 -1
  291. package/dist/providers/SidebarTabs/index.d.ts +19 -0
  292. package/dist/providers/SidebarTabs/index.d.ts.map +1 -0
  293. package/dist/providers/SidebarTabs/index.js +24 -0
  294. package/dist/providers/SidebarTabs/index.js.map +1 -0
  295. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  296. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  297. package/dist/providers/TableColumns/buildColumnState/renderCell.js +34 -1
  298. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  299. package/dist/styles.css +1 -1
  300. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  301. package/dist/utilities/isSuperset.d.ts +6 -0
  302. package/dist/utilities/isSuperset.d.ts.map +1 -0
  303. package/dist/utilities/isSuperset.js +10 -0
  304. package/dist/utilities/isSuperset.js.map +1 -0
  305. package/dist/utilities/renderTable.d.ts +3 -1
  306. package/dist/utilities/renderTable.d.ts.map +1 -1
  307. package/dist/utilities/renderTable.js +9 -3
  308. package/dist/utilities/renderTable.js.map +1 -1
  309. package/dist/views/Edit/index.d.ts +1 -1
  310. package/dist/views/Edit/index.d.ts.map +1 -1
  311. package/dist/views/Edit/index.js +4 -2
  312. package/dist/views/Edit/index.js.map +1 -1
  313. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts +10 -0
  314. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -0
  315. package/dist/views/HierarchyList/DocumentListSelection/index.js +196 -0
  316. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -0
  317. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +21 -0
  318. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -0
  319. package/dist/views/HierarchyList/HierarchyListHeader/index.js +68 -0
  320. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -0
  321. package/dist/views/HierarchyList/HierarchyListHeader/index.scss +9 -0
  322. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts +4 -0
  323. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -0
  324. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +104 -0
  325. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -0
  326. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts +4 -0
  327. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts.map +1 -0
  328. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +53 -0
  329. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -0
  330. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts +4 -0
  331. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -0
  332. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +128 -0
  333. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -0
  334. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +99 -0
  335. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -0
  336. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +118 -0
  337. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -0
  338. package/dist/views/HierarchyList/HierarchyTable/SlotTable.scss +214 -0
  339. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +27 -0
  340. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -0
  341. package/dist/views/HierarchyList/HierarchyTable/index.js +388 -0
  342. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -0
  343. package/dist/views/HierarchyList/HierarchyTable/index.scss +148 -0
  344. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +20 -0
  345. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -0
  346. package/dist/views/HierarchyList/HierarchyTable/types.js +2 -0
  347. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -0
  348. package/dist/views/HierarchyList/TypeFilter/index.d.ts +15 -0
  349. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -0
  350. package/dist/views/HierarchyList/TypeFilter/index.js +37 -0
  351. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -0
  352. package/dist/views/HierarchyList/TypeFilter/index.scss +32 -0
  353. package/dist/views/HierarchyList/index.d.ts +5 -0
  354. package/dist/views/HierarchyList/index.d.ts.map +1 -0
  355. package/dist/views/HierarchyList/index.js +305 -0
  356. package/dist/views/HierarchyList/index.js.map +1 -0
  357. package/dist/views/HierarchyList/index.scss +72 -0
  358. package/dist/views/List/index.d.ts.map +1 -1
  359. package/dist/views/List/index.js +51 -7
  360. package/dist/views/List/index.js.map +1 -1
  361. package/package.json +4 -4
  362. package/dist/elements/FolderView/Breadcrumbs/index.d.ts +0 -19
  363. package/dist/elements/FolderView/Breadcrumbs/index.d.ts.map +0 -1
  364. package/dist/elements/FolderView/Breadcrumbs/index.js +0 -96
  365. package/dist/elements/FolderView/Breadcrumbs/index.js.map +0 -1
  366. package/dist/elements/FolderView/Breadcrumbs/index.scss +0 -56
  367. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts +0 -6
  368. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +0 -1
  369. package/dist/elements/FolderView/BrowseByFolderButton/index.js +0 -40
  370. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +0 -1
  371. package/dist/elements/FolderView/BrowseByFolderButton/index.scss +0 -30
  372. package/dist/elements/FolderView/Cell/index.client.d.ts +0 -13
  373. package/dist/elements/FolderView/Cell/index.client.d.ts.map +0 -1
  374. package/dist/elements/FolderView/Cell/index.client.js +0 -95
  375. package/dist/elements/FolderView/Cell/index.client.js.map +0 -1
  376. package/dist/elements/FolderView/Cell/index.server.d.ts +0 -4
  377. package/dist/elements/FolderView/Cell/index.server.d.ts.map +0 -1
  378. package/dist/elements/FolderView/Cell/index.server.js +0 -18
  379. package/dist/elements/FolderView/Cell/index.server.js.map +0 -1
  380. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts +0 -3
  381. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts.map +0 -1
  382. package/dist/elements/FolderView/ColoredFolderIcon/index.js +0 -9
  383. package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +0 -1
  384. package/dist/elements/FolderView/ColoredFolderIcon/index.scss +0 -5
  385. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts +0 -7
  386. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +0 -1
  387. package/dist/elements/FolderView/CurrentFolderActions/index.js +0 -162
  388. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +0 -1
  389. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts +0 -11
  390. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts.map +0 -1
  391. package/dist/elements/FolderView/DragOverlaySelection/index.js +0 -62
  392. package/dist/elements/FolderView/DragOverlaySelection/index.js.map +0 -1
  393. package/dist/elements/FolderView/DragOverlaySelection/index.scss +0 -35
  394. package/dist/elements/FolderView/DraggableTableRow/index.d.ts +0 -18
  395. package/dist/elements/FolderView/DraggableTableRow/index.d.ts.map +0 -1
  396. package/dist/elements/FolderView/DraggableTableRow/index.js +0 -63
  397. package/dist/elements/FolderView/DraggableTableRow/index.js.map +0 -1
  398. package/dist/elements/FolderView/DraggableTableRow/index.scss +0 -135
  399. package/dist/elements/FolderView/DraggableWithClick/index.d.ts +0 -15
  400. package/dist/elements/FolderView/DraggableWithClick/index.d.ts.map +0 -1
  401. package/dist/elements/FolderView/DraggableWithClick/index.js +0 -86
  402. package/dist/elements/FolderView/DraggableWithClick/index.js.map +0 -1
  403. package/dist/elements/FolderView/DraggableWithClick/index.scss +0 -5
  404. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts +0 -7
  405. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts.map +0 -1
  406. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +0 -39
  407. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +0 -1
  408. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts +0 -37
  409. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts.map +0 -1
  410. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +0 -609
  411. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +0 -1
  412. package/dist/elements/FolderView/Drawers/MoveToFolder/index.scss +0 -30
  413. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts +0 -4
  414. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts.map +0 -1
  415. package/dist/elements/FolderView/FilterFolderTypePill/index.js +0 -102
  416. package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +0 -1
  417. package/dist/elements/FolderView/FilterFolderTypePill/index.scss +0 -16
  418. package/dist/elements/FolderView/FolderField/index.scss +0 -12
  419. package/dist/elements/FolderView/FolderField/index.server.d.ts +0 -4
  420. package/dist/elements/FolderView/FolderField/index.server.d.ts.map +0 -1
  421. package/dist/elements/FolderView/FolderField/index.server.js +0 -16
  422. package/dist/elements/FolderView/FolderField/index.server.js.map +0 -1
  423. package/dist/elements/FolderView/FolderFileCard/index.d.ts +0 -30
  424. package/dist/elements/FolderView/FolderFileCard/index.d.ts.map +0 -1
  425. package/dist/elements/FolderView/FolderFileCard/index.js +0 -209
  426. package/dist/elements/FolderView/FolderFileCard/index.js.map +0 -1
  427. package/dist/elements/FolderView/FolderFileCard/index.scss +0 -247
  428. package/dist/elements/FolderView/FolderFileTable/index.d.ts +0 -8
  429. package/dist/elements/FolderView/FolderFileTable/index.d.ts.map +0 -1
  430. package/dist/elements/FolderView/FolderFileTable/index.js +0 -284
  431. package/dist/elements/FolderView/FolderFileTable/index.js.map +0 -1
  432. package/dist/elements/FolderView/FolderFileTable/index.scss +0 -11
  433. package/dist/elements/FolderView/FolderTypeField/index.d.ts +0 -4
  434. package/dist/elements/FolderView/FolderTypeField/index.d.ts.map +0 -1
  435. package/dist/elements/FolderView/FolderTypeField/index.js +0 -123
  436. package/dist/elements/FolderView/FolderTypeField/index.js.map +0 -1
  437. package/dist/elements/FolderView/ItemCardGrid/index.d.ts +0 -16
  438. package/dist/elements/FolderView/ItemCardGrid/index.d.ts.map +0 -1
  439. package/dist/elements/FolderView/ItemCardGrid/index.js +0 -34
  440. package/dist/elements/FolderView/ItemCardGrid/index.js.map +0 -1
  441. package/dist/elements/FolderView/ItemCardGrid/index.scss +0 -16
  442. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +0 -37
  443. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +0 -1
  444. package/dist/elements/FolderView/MoveDocToFolder/index.js +0 -292
  445. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +0 -1
  446. package/dist/elements/FolderView/SimpleTable/index.d.ts +0 -19
  447. package/dist/elements/FolderView/SimpleTable/index.d.ts.map +0 -1
  448. package/dist/elements/FolderView/SimpleTable/index.js +0 -95
  449. package/dist/elements/FolderView/SimpleTable/index.js.map +0 -1
  450. package/dist/elements/FolderView/SimpleTable/index.scss +0 -59
  451. package/dist/elements/FolderView/SortByPill/index.d.ts +0 -4
  452. package/dist/elements/FolderView/SortByPill/index.d.ts.map +0 -1
  453. package/dist/elements/FolderView/SortByPill/index.js +0 -112
  454. package/dist/elements/FolderView/SortByPill/index.js.map +0 -1
  455. package/dist/elements/FolderView/SortByPill/index.scss +0 -16
  456. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts +0 -8
  457. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts.map +0 -1
  458. package/dist/elements/FolderView/ToggleViewButtons/index.js +0 -31
  459. package/dist/elements/FolderView/ToggleViewButtons/index.js.map +0 -1
  460. package/dist/elements/FolderView/ToggleViewButtons/index.scss +0 -17
  461. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts +0 -15
  462. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts.map +0 -1
  463. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +0 -182
  464. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +0 -1
  465. package/dist/providers/Folders/groupItemIDsByRelation.d.ts +0 -3
  466. package/dist/providers/Folders/groupItemIDsByRelation.d.ts.map +0 -1
  467. package/dist/providers/Folders/groupItemIDsByRelation.js +0 -10
  468. package/dist/providers/Folders/groupItemIDsByRelation.js.map +0 -1
  469. package/dist/providers/Folders/index.d.ts +0 -143
  470. package/dist/providers/Folders/index.d.ts.map +0 -1
  471. package/dist/providers/Folders/index.js +0 -641
  472. package/dist/providers/Folders/index.js.map +0 -1
  473. package/dist/utilities/getFolderResultsComponentAndData.d.ts +0 -25
  474. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +0 -1
  475. package/dist/utilities/getFolderResultsComponentAndData.js +0 -135
  476. package/dist/utilities/getFolderResultsComponentAndData.js.map +0 -1
  477. package/dist/views/BrowseByFolder/index.d.ts +0 -5
  478. package/dist/views/BrowseByFolder/index.d.ts.map +0 -1
  479. package/dist/views/BrowseByFolder/index.js +0 -342
  480. package/dist/views/BrowseByFolder/index.js.map +0 -1
  481. package/dist/views/BrowseByFolder/index.scss +0 -174
  482. package/dist/views/CollectionFolder/ListSelection/index.d.ts +0 -9
  483. package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +0 -1
  484. package/dist/views/CollectionFolder/ListSelection/index.js +0 -180
  485. package/dist/views/CollectionFolder/ListSelection/index.js.map +0 -1
  486. package/dist/views/CollectionFolder/index.d.ts +0 -5
  487. package/dist/views/CollectionFolder/index.d.ts.map +0 -1
  488. package/dist/views/CollectionFolder/index.js +0 -325
  489. package/dist/views/CollectionFolder/index.js.map +0 -1
  490. package/dist/views/CollectionFolder/index.scss +0 -162
@@ -0,0 +1,473 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { getTranslation } from '@payloadcms/translations';
5
+ import { combineWhereConstraints, DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL } from 'payload/shared';
6
+ import * as qs from 'qs-esm';
7
+ import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
8
+ import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
9
+ import { useAuth } from '../../../providers/Auth/index.js';
10
+ import { useConfig } from '../../../providers/Config/index.js';
11
+ import { useTranslation } from '../../../providers/Translation/index.js';
12
+ import { isSuperset } from '../../../utilities/isSuperset.js';
13
+ import { Spinner } from '../../Spinner/index.js';
14
+ import { Column } from './Column/index.js';
15
+ import './index.scss';
16
+ const baseClass = 'hierarchy-column-browser';
17
+ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
18
+ ancestorsWithSelections,
19
+ baseFilter,
20
+ disabledIds,
21
+ filterByCollection,
22
+ hierarchyCollectionSlug,
23
+ initialExpandedPath,
24
+ isLoadingPath,
25
+ onCreateNew,
26
+ onSelect,
27
+ parentFieldName,
28
+ ref,
29
+ selectedIds,
30
+ useAsTitle = 'id'
31
+ }) {
32
+ const {
33
+ i18n
34
+ } = useTranslation();
35
+ const {
36
+ permissions
37
+ } = useAuth();
38
+ const {
39
+ config: {
40
+ routes: {
41
+ api
42
+ },
43
+ serverURL
44
+ },
45
+ getEntityConfig
46
+ } = useConfig();
47
+ const collectionConfig = getEntityConfig({
48
+ collectionSlug: hierarchyCollectionSlug
49
+ });
50
+ const hierarchyConfig = collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object' ? collectionConfig.hierarchy : undefined;
51
+ const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT;
52
+ const collectionLabel = collectionConfig ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n) : hierarchyCollectionSlug;
53
+ const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create);
54
+ const [columns, setColumns] = useState([]);
55
+ const [expandedPath, setExpandedPath] = useState([]);
56
+ const containerRef = useRef(null);
57
+ const lastColumnRef = useRef(null);
58
+ const hasLoadedRef = useRef(false);
59
+ const fetchItems = useCallback(async ({
60
+ page,
61
+ parentId
62
+ }) => {
63
+ const parentWhere = parentId === null ? {
64
+ [parentFieldName]: {
65
+ exists: false
66
+ }
67
+ } : {
68
+ [parentFieldName]: {
69
+ equals: parentId
70
+ }
71
+ };
72
+ // Build the final where clause, adding collectionSpecific filtering if configured
73
+ let where = parentWhere;
74
+ // Filter by collection type if collectionSpecific is configured and filterByCollection is defined
75
+ // - undefined: no filtering, show all folders
76
+ // - [] empty: show all folders (no constraints)
77
+ // - ['posts', ...]: show folders that allow ANY of these OR unrestricted
78
+ // Note: Ideally we'd enforce ALL (superset) but hasMany enum fields in PG
79
+ // do not support "contains all" queries easily
80
+ if (hierarchyConfig?.collectionSpecific && filterByCollection !== undefined) {
81
+ const typeFieldName = hierarchyConfig.collectionSpecific.fieldName;
82
+ if (filterByCollection.length > 0) {
83
+ // Get all possible type field values from relatedCollections
84
+ // This is used to detect "unrestricted" folders (empty allowedTypes array)
85
+ const allPossibleTypes = Object.keys(hierarchyConfig.relatedCollections || {});
86
+ where = {
87
+ and: [parentWhere, {
88
+ or: [
89
+ // items that allow ANY of the selected collections
90
+ {
91
+ [typeFieldName]: {
92
+ in: filterByCollection
93
+ }
94
+ },
95
+ // OR items that are unrestricted (no type field exists)
96
+ {
97
+ [typeFieldName]: {
98
+ exists: false
99
+ }
100
+ },
101
+ // OR items with empty allowedTypes array (unrestricted)
102
+ // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres
103
+ ...(allPossibleTypes.length > 0 ? [{
104
+ [typeFieldName]: {
105
+ not_in: allPossibleTypes
106
+ }
107
+ }] : [])]
108
+ }]
109
+ };
110
+ } else {
111
+ // Empty array: show all items of this parent
112
+ where = parentWhere;
113
+ }
114
+ }
115
+ // Combine with baseFilter if provided
116
+ const whereWithBaseFilter = combineWhereConstraints([where, baseFilter]);
117
+ const queryString = qs.stringify({
118
+ limit: treeLimit,
119
+ page,
120
+ sort: useAsTitle,
121
+ where: whereWithBaseFilter
122
+ }, {
123
+ addQueryPrefix: true
124
+ });
125
+ const url = formatAdminURL({
126
+ apiRoute: api,
127
+ path: `/${hierarchyCollectionSlug}${queryString}`,
128
+ serverURL
129
+ });
130
+ const response = await fetch(url, {
131
+ credentials: 'include'
132
+ });
133
+ if (!response.ok) {
134
+ throw new Error('Failed to fetch items');
135
+ }
136
+ const data = await response.json();
137
+ const typeFieldName_0 = hierarchyConfig?.collectionSpecific ? hierarchyConfig.collectionSpecific.fieldName : undefined;
138
+ const allItems = (data.docs || []).map(doc => ({
139
+ id: doc.id,
140
+ allowedCollections: typeFieldName_0 ? doc[typeFieldName_0] : undefined,
141
+ hasChildren: true,
142
+ title: String(doc[useAsTitle] || doc.id)
143
+ }));
144
+ // Client-side filter: only show items that are a superset of required collections
145
+ // Server query uses ANY (due to PG limitations), but we want ALL (superset)
146
+ const items = filterByCollection && filterByCollection.length > 0 ? allItems.filter(item => isSuperset(item.allowedCollections, filterByCollection)) : allItems;
147
+ return {
148
+ hasNextPage: data.hasNextPage || false,
149
+ items,
150
+ totalDocs: data.totalDocs || 0
151
+ };
152
+ }, [api, baseFilter, filterByCollection, hierarchyConfig, parentFieldName, serverURL, hierarchyCollectionSlug, treeLimit, useAsTitle]);
153
+ const refreshColumn = useCallback(async parentId_0 => {
154
+ const columnIndex = columns.findIndex(col => col.parentId === parentId_0);
155
+ if (columnIndex === -1) {
156
+ return;
157
+ }
158
+ setColumns(prev => {
159
+ const updated = [...prev];
160
+ updated[columnIndex] = {
161
+ ...updated[columnIndex],
162
+ isLoading: true
163
+ };
164
+ return updated;
165
+ });
166
+ try {
167
+ const {
168
+ hasNextPage,
169
+ items: items_0,
170
+ totalDocs
171
+ } = await fetchItems({
172
+ page: 1,
173
+ parentId: parentId_0
174
+ });
175
+ setColumns(prev_1 => {
176
+ const updated_1 = [...prev_1];
177
+ if (updated_1[columnIndex]) {
178
+ updated_1[columnIndex] = {
179
+ ...updated_1[columnIndex],
180
+ hasNextPage,
181
+ isLoading: false,
182
+ items: items_0,
183
+ page: 1,
184
+ totalDocs
185
+ };
186
+ }
187
+ return updated_1;
188
+ });
189
+ } catch {
190
+ setColumns(prev_0 => {
191
+ const updated_0 = [...prev_0];
192
+ if (updated_0[columnIndex]) {
193
+ updated_0[columnIndex] = {
194
+ ...updated_0[columnIndex],
195
+ isLoading: false
196
+ };
197
+ }
198
+ return updated_0;
199
+ });
200
+ }
201
+ }, [columns, fetchItems]);
202
+ useImperativeHandle(ref, () => ({
203
+ refreshColumn
204
+ }), [refreshColumn]);
205
+ const loadColumns = useEffectEvent(async path => {
206
+ // Build list of parentIds to fetch: [null, ...path]
207
+ const parentIds = [null];
208
+ if (path?.length) {
209
+ parentIds.push(...path);
210
+ }
211
+ // Set initial loading state for all columns
212
+ setColumns(parentIds.map(parentId_1 => ({
213
+ hasNextPage: false,
214
+ isLoading: true,
215
+ items: [],
216
+ page: 1,
217
+ parentId: parentId_1,
218
+ totalDocs: 0
219
+ })));
220
+ // Set expanded path to match (excluding null/root)
221
+ if (path?.length) {
222
+ setExpandedPath(path);
223
+ }
224
+ // Fetch all columns in parallel
225
+ const results = await Promise.all(parentIds.map(async (parentId_2, index) => {
226
+ try {
227
+ const {
228
+ hasNextPage: hasNextPage_0,
229
+ items: items_1,
230
+ totalDocs: totalDocs_0
231
+ } = await fetchItems({
232
+ page: 1,
233
+ parentId: parentId_2
234
+ });
235
+ let parentTitle;
236
+ if (index > 0 && parentId_2 !== null) {
237
+ // Will be filled in after all fetches complete
238
+ }
239
+ return {
240
+ hasNextPage: hasNextPage_0,
241
+ isLoading: false,
242
+ items: items_1,
243
+ page: 1,
244
+ parentId: parentId_2,
245
+ parentTitle,
246
+ totalDocs: totalDocs_0
247
+ };
248
+ } catch {
249
+ return {
250
+ hasNextPage: false,
251
+ isLoading: false,
252
+ items: [],
253
+ page: 1,
254
+ parentId: parentId_2,
255
+ parentTitle: undefined,
256
+ totalDocs: 0
257
+ };
258
+ }
259
+ }));
260
+ // Fill in parent titles from previous columns
261
+ const columnsWithTitles = results.map((col_0, index_0) => {
262
+ if (index_0 === 0 || col_0.parentId === null) {
263
+ return col_0;
264
+ }
265
+ const prevColumn = results[index_0 - 1];
266
+ const parentItem = prevColumn?.items.find(item_0 => item_0.id === col_0.parentId);
267
+ return {
268
+ ...col_0,
269
+ parentTitle: parentItem?.title || String(col_0.parentId)
270
+ };
271
+ });
272
+ setColumns(columnsWithTitles);
273
+ });
274
+ // Load columns on mount - wait for path loading to complete
275
+ useEffect(() => {
276
+ if (isLoadingPath || hasLoadedRef.current) {
277
+ return;
278
+ }
279
+ hasLoadedRef.current = true;
280
+ void loadColumns(initialExpandedPath);
281
+ }, [initialExpandedPath, isLoadingPath]);
282
+ // Auto-scroll to the last column when columns change
283
+ useEffect(() => {
284
+ if (lastColumnRef.current && columns.length > 1) {
285
+ lastColumnRef.current.scrollIntoView({
286
+ behavior: 'instant',
287
+ inline: 'start'
288
+ });
289
+ }
290
+ }, [columns.length]);
291
+ const handleExpand = useCallback(async ({
292
+ columnIndex: columnIndex_0,
293
+ itemId
294
+ }) => {
295
+ const column = columns[columnIndex_0];
296
+ if (!column) {
297
+ return;
298
+ }
299
+ const item_1 = column.items.find(i => i.id === itemId);
300
+ if (!item_1) {
301
+ return;
302
+ }
303
+ // Update expanded path - keep path up to this column, add new item
304
+ const newExpandedPath = [...expandedPath.slice(0, columnIndex_0), itemId];
305
+ setExpandedPath(newExpandedPath);
306
+ // Remove columns to the right and add new loading column
307
+ const newColumns = columns.slice(0, columnIndex_0 + 1);
308
+ newColumns.push({
309
+ hasNextPage: false,
310
+ isLoading: true,
311
+ items: [],
312
+ page: 1,
313
+ parentId: itemId,
314
+ parentTitle: item_1.title,
315
+ totalDocs: 0
316
+ });
317
+ setColumns(newColumns);
318
+ // Fetch children
319
+ try {
320
+ const {
321
+ hasNextPage: hasNextPage_1,
322
+ items: items_2,
323
+ totalDocs: totalDocs_1
324
+ } = await fetchItems({
325
+ page: 1,
326
+ parentId: itemId
327
+ });
328
+ setColumns(prev_3 => {
329
+ const updated_3 = [...prev_3];
330
+ const targetIndex_0 = columnIndex_0 + 1;
331
+ if (updated_3[targetIndex_0]?.parentId === itemId) {
332
+ updated_3[targetIndex_0] = {
333
+ hasNextPage: hasNextPage_1,
334
+ isLoading: false,
335
+ items: items_2,
336
+ page: 1,
337
+ parentId: itemId,
338
+ parentTitle: item_1.title,
339
+ totalDocs: totalDocs_1
340
+ };
341
+ }
342
+ return updated_3;
343
+ });
344
+ } catch {
345
+ setColumns(prev_2 => {
346
+ const updated_2 = [...prev_2];
347
+ const targetIndex = columnIndex_0 + 1;
348
+ if (updated_2[targetIndex]?.parentId === itemId) {
349
+ updated_2[targetIndex] = {
350
+ hasNextPage: false,
351
+ isLoading: false,
352
+ items: [],
353
+ page: 1,
354
+ parentId: itemId,
355
+ parentTitle: item_1.title,
356
+ totalDocs: 0
357
+ };
358
+ }
359
+ return updated_2;
360
+ });
361
+ }
362
+ }, [columns, expandedPath, fetchItems]);
363
+ const handleLoadMore = useCallback(async ({
364
+ columnIndex: columnIndex_1
365
+ }) => {
366
+ const column_0 = columns[columnIndex_1];
367
+ if (!column_0 || column_0.isLoading || !column_0.hasNextPage) {
368
+ return;
369
+ }
370
+ const nextPage = column_0.page + 1;
371
+ // Set loading state
372
+ setColumns(prev_4 => {
373
+ const updated_4 = [...prev_4];
374
+ updated_4[columnIndex_1] = {
375
+ ...updated_4[columnIndex_1],
376
+ isLoading: true
377
+ };
378
+ return updated_4;
379
+ });
380
+ try {
381
+ const {
382
+ hasNextPage: hasNextPage_2,
383
+ items: newItems
384
+ } = await fetchItems({
385
+ page: nextPage,
386
+ parentId: column_0.parentId
387
+ });
388
+ setColumns(prev_6 => {
389
+ const updated_6 = [...prev_6];
390
+ if (updated_6[columnIndex_1]) {
391
+ updated_6[columnIndex_1] = {
392
+ ...updated_6[columnIndex_1],
393
+ hasNextPage: hasNextPage_2,
394
+ isLoading: false,
395
+ items: [...updated_6[columnIndex_1].items, ...newItems],
396
+ page: nextPage
397
+ };
398
+ }
399
+ return updated_6;
400
+ });
401
+ } catch {
402
+ setColumns(prev_5 => {
403
+ const updated_5 = [...prev_5];
404
+ if (updated_5[columnIndex_1]) {
405
+ updated_5[columnIndex_1] = {
406
+ ...updated_5[columnIndex_1],
407
+ isLoading: false
408
+ };
409
+ }
410
+ return updated_5;
411
+ });
412
+ }
413
+ }, [columns, fetchItems]);
414
+ // Build path for each column based on parent info
415
+ const getPathToColumn = columnIndex_2 => {
416
+ const path_0 = [];
417
+ for (let i_0 = 1; i_0 <= columnIndex_2; i_0++) {
418
+ const col_1 = columns[i_0];
419
+ if (col_1?.parentId !== null && col_1?.parentId !== undefined) {
420
+ path_0.push({
421
+ id: col_1.parentId,
422
+ title: col_1.parentTitle || String(col_1.parentId)
423
+ });
424
+ }
425
+ }
426
+ return path_0;
427
+ };
428
+ return /*#__PURE__*/_jsxs("div", {
429
+ className: baseClass,
430
+ ref: containerRef,
431
+ children: [columns.map((column_1, index_1) => {
432
+ const isLastColumn = index_1 === columns.length - 1 && !isLoadingPath;
433
+ const expandedId = expandedPath[index_1] ?? null;
434
+ const pathToColumn = getPathToColumn(index_1);
435
+ return /*#__PURE__*/_jsx("div", {
436
+ className: `${baseClass}__column-wrapper`,
437
+ ref: isLastColumn ? lastColumnRef : undefined,
438
+ children: /*#__PURE__*/_jsx(Column, {
439
+ ancestorsWithSelections: ancestorsWithSelections,
440
+ canCreate: canCreate && Boolean(onCreateNew),
441
+ collectionLabel: collectionLabel,
442
+ disabled: isLoadingPath,
443
+ disabledIds: disabledIds,
444
+ expandedId: expandedId,
445
+ filterByCollection: filterByCollection,
446
+ hasNextPage: column_1.hasNextPage,
447
+ isLoading: column_1.isLoading,
448
+ items: column_1.items,
449
+ onCreateNew: onCreateNew || (() => {}),
450
+ onExpand: ({
451
+ id
452
+ }) => handleExpand({
453
+ columnIndex: index_1,
454
+ itemId: id
455
+ }),
456
+ onLoadMore: () => handleLoadMore({
457
+ columnIndex: index_1
458
+ }),
459
+ onSelect: onSelect,
460
+ parentId: column_1.parentId,
461
+ parentTitle: column_1.parentTitle,
462
+ pathToColumn: pathToColumn,
463
+ selectedIds: selectedIds,
464
+ totalDocs: column_1.totalDocs
465
+ })
466
+ }, `${column_1.parentId ?? 'root'}-${index_1}`);
467
+ }), isLoadingPath && /*#__PURE__*/_jsx("div", {
468
+ className: `${baseClass}__column-wrapper ${baseClass}__column-wrapper--loading`,
469
+ children: /*#__PURE__*/_jsx(Spinner, {})
470
+ })]
471
+ });
472
+ };
473
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_TREE_LIMIT","formatAdminURL","qs","React","useCallback","useEffect","useImperativeHandle","useRef","useState","useEffectEvent","useAuth","useConfig","useTranslation","isSuperset","Spinner","Column","baseClass","HierarchyColumnBrowser","ancestorsWithSelections","baseFilter","disabledIds","filterByCollection","hierarchyCollectionSlug","initialExpandedPath","isLoadingPath","onCreateNew","onSelect","parentFieldName","ref","selectedIds","useAsTitle","i18n","permissions","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","hierarchyConfig","hierarchy","undefined","treeLimit","admin","collectionLabel","labels","singular","canCreate","Boolean","collections","create","columns","setColumns","expandedPath","setExpandedPath","containerRef","lastColumnRef","hasLoadedRef","fetchItems","page","parentId","parentWhere","exists","equals","where","collectionSpecific","typeFieldName","fieldName","length","allPossibleTypes","Object","keys","relatedCollections","and","or","in","not_in","whereWithBaseFilter","queryString","stringify","limit","sort","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allItems","docs","map","doc","id","allowedCollections","hasChildren","title","String","items","filter","item","hasNextPage","totalDocs","refreshColumn","columnIndex","findIndex","col","prev","updated","isLoading","loadColumns","parentIds","push","results","Promise","all","index","parentTitle","columnsWithTitles","prevColumn","parentItem","find","current","scrollIntoView","behavior","inline","handleExpand","itemId","column","i","newExpandedPath","slice","newColumns","targetIndex","handleLoadMore","nextPage","newItems","getPathToColumn","_jsxs","className","isLastColumn","expandedId","pathToColumn","_jsx","disabled","onExpand","onLoadMore"],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\n\nimport type {\n ColumnItemData,\n ColumnState,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n} from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\nimport { Spinner } from '../../Spinner/index.js'\nimport { Column } from './Column/index.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-column-browser'\n\nexport const HierarchyColumnBrowser = function HierarchyColumnBrowser({\n ancestorsWithSelections,\n baseFilter,\n disabledIds,\n filterByCollection,\n hierarchyCollectionSlug,\n initialExpandedPath,\n isLoadingPath,\n onCreateNew,\n onSelect,\n parentFieldName,\n ref,\n selectedIds,\n useAsTitle = 'id',\n}: { ref?: React.RefObject<HierarchyColumnBrowserRef | null> } & HierarchyColumnBrowserProps) {\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create)\n\n const [columns, setColumns] = useState<ColumnState[]>([])\n const [expandedPath, setExpandedPath] = useState<(number | string)[]>([])\n const containerRef = useRef<HTMLDivElement>(null)\n const lastColumnRef = useRef<HTMLDivElement>(null)\n const hasLoadedRef = useRef(false)\n\n const fetchItems = useCallback(\n async ({\n page,\n parentId,\n }: {\n page: number\n parentId: null | number | string\n }): Promise<{\n hasNextPage: boolean\n items: ColumnItemData[]\n totalDocs: number\n }> => {\n const parentWhere =\n parentId === null\n ? { [parentFieldName]: { exists: false } }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build the final where clause, adding collectionSpecific filtering if configured\n let where: Record<string, unknown> = parentWhere\n\n // Filter by collection type if collectionSpecific is configured and filterByCollection is defined\n // - undefined: no filtering, show all folders\n // - [] empty: show all folders (no constraints)\n // - ['posts', ...]: show folders that allow ANY of these OR unrestricted\n // Note: Ideally we'd enforce ALL (superset) but hasMany enum fields in PG\n // do not support \"contains all\" queries easily\n if (hierarchyConfig?.collectionSpecific && filterByCollection !== undefined) {\n const typeFieldName = hierarchyConfig.collectionSpecific.fieldName\n\n if (filterByCollection.length > 0) {\n // Get all possible type field values from relatedCollections\n // This is used to detect \"unrestricted\" folders (empty allowedTypes array)\n const allPossibleTypes = Object.keys(hierarchyConfig.relatedCollections || {})\n\n where = {\n and: [\n parentWhere,\n {\n or: [\n // items that allow ANY of the selected collections\n { [typeFieldName]: { in: filterByCollection } },\n // OR items that are unrestricted (no type field exists)\n { [typeFieldName]: { exists: false } },\n // OR items with empty allowedTypes array (unrestricted)\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypes.length > 0\n ? [{ [typeFieldName]: { not_in: allPossibleTypes } }]\n : []),\n ],\n },\n ],\n }\n } else {\n // Empty array: show all items of this parent\n where = parentWhere\n }\n }\n\n // Combine with baseFilter if provided\n const whereWithBaseFilter = combineWhereConstraints([where, baseFilter])\n\n const queryString = qs.stringify(\n { limit: treeLimit, page, sort: useAsTitle, where: whereWithBaseFilter },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${hierarchyCollectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch items')\n }\n\n const data = await response.json()\n\n const typeFieldName = hierarchyConfig?.collectionSpecific\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n\n const allItems: ColumnItemData[] = (data.docs || []).map(\n (doc: { id: number | string } & Record<string, unknown>) => ({\n id: doc.id,\n allowedCollections: typeFieldName\n ? (doc[typeFieldName] as string[] | undefined)\n : undefined,\n hasChildren: true, // Always allow expansion - empty children handled gracefully\n title: String(doc[useAsTitle] || doc.id),\n }),\n )\n\n // Client-side filter: only show items that are a superset of required collections\n // Server query uses ANY (due to PG limitations), but we want ALL (superset)\n const items =\n filterByCollection && filterByCollection.length > 0\n ? allItems.filter((item) => isSuperset(item.allowedCollections, filterByCollection))\n : allItems\n\n return {\n hasNextPage: data.hasNextPage || false,\n items,\n totalDocs: data.totalDocs || 0,\n }\n },\n [\n api,\n baseFilter,\n filterByCollection,\n hierarchyConfig,\n parentFieldName,\n serverURL,\n hierarchyCollectionSlug,\n treeLimit,\n useAsTitle,\n ],\n )\n\n const refreshColumn = useCallback(\n async (parentId: null | number | string) => {\n const columnIndex = columns.findIndex((col) => col.parentId === parentId)\n if (columnIndex === -1) {\n return\n }\n\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n totalDocs,\n }\n }\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n useImperativeHandle(ref, () => ({ refreshColumn }), [refreshColumn])\n\n const loadColumns = useEffectEvent(async (path?: (number | string)[]) => {\n // Build list of parentIds to fetch: [null, ...path]\n const parentIds: (null | number | string)[] = [null]\n if (path?.length) {\n parentIds.push(...path)\n }\n\n // Set initial loading state for all columns\n setColumns(\n parentIds.map((parentId) => ({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId,\n totalDocs: 0,\n })),\n )\n\n // Set expanded path to match (excluding null/root)\n if (path?.length) {\n setExpandedPath(path)\n }\n\n // Fetch all columns in parallel\n const results = await Promise.all(\n parentIds.map(async (parentId, index) => {\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n let parentTitle: string | undefined\n if (index > 0 && parentId !== null) {\n // Will be filled in after all fetches complete\n }\n return {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId,\n parentTitle,\n totalDocs,\n }\n } catch {\n return {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId,\n parentTitle: undefined,\n totalDocs: 0,\n }\n }\n }),\n )\n\n // Fill in parent titles from previous columns\n const columnsWithTitles = results.map((col, index) => {\n if (index === 0 || col.parentId === null) {\n return col\n }\n const prevColumn = results[index - 1]\n const parentItem = prevColumn?.items.find((item) => item.id === col.parentId)\n return {\n ...col,\n parentTitle: parentItem?.title || String(col.parentId),\n }\n })\n\n setColumns(columnsWithTitles)\n })\n\n // Load columns on mount - wait for path loading to complete\n useEffect(() => {\n if (isLoadingPath || hasLoadedRef.current) {\n return\n }\n hasLoadedRef.current = true\n void loadColumns(initialExpandedPath)\n }, [initialExpandedPath, isLoadingPath])\n\n // Auto-scroll to the last column when columns change\n useEffect(() => {\n if (lastColumnRef.current && columns.length > 1) {\n lastColumnRef.current.scrollIntoView({ behavior: 'instant', inline: 'start' })\n }\n }, [columns.length])\n\n const handleExpand = useCallback(\n async ({ columnIndex, itemId }: { columnIndex: number; itemId: number | string }) => {\n const column = columns[columnIndex]\n if (!column) {\n return\n }\n\n const item = column.items.find((i) => i.id === itemId)\n if (!item) {\n return\n }\n\n // Update expanded path - keep path up to this column, add new item\n const newExpandedPath = [...expandedPath.slice(0, columnIndex), itemId]\n setExpandedPath(newExpandedPath)\n\n // Remove columns to the right and add new loading column\n const newColumns = columns.slice(0, columnIndex + 1)\n newColumns.push({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n })\n\n setColumns(newColumns)\n\n // Fetch children\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId: itemId })\n\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n }\n }\n\n return updated\n })\n }\n },\n [columns, expandedPath, fetchItems],\n )\n\n const handleLoadMore = useCallback(\n async ({ columnIndex }: { columnIndex: number }) => {\n const column = columns[columnIndex]\n if (!column || column.isLoading || !column.hasNextPage) {\n return\n }\n\n const nextPage = column.page + 1\n\n // Set loading state\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items: newItems } = await fetchItems({\n page: nextPage,\n parentId: column.parentId,\n })\n\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items: [...updated[columnIndex].items, ...newItems],\n page: nextPage,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n // Build path for each column based on parent info\n const getPathToColumn = (columnIndex: number) => {\n const path: Array<{ id: number | string; title: string }> = []\n\n for (let i = 1; i <= columnIndex; i++) {\n const col = columns[i]\n if (col?.parentId !== null && col?.parentId !== undefined) {\n path.push({\n id: col.parentId,\n title: col.parentTitle || String(col.parentId),\n })\n }\n }\n\n return path\n }\n\n return (\n <div className={baseClass} ref={containerRef}>\n {columns.map((column, index) => {\n const isLastColumn = index === columns.length - 1 && !isLoadingPath\n const expandedId = expandedPath[index] ?? null\n const pathToColumn = getPathToColumn(index)\n\n return (\n <div\n className={`${baseClass}__column-wrapper`}\n key={`${column.parentId ?? 'root'}-${index}`}\n ref={isLastColumn ? lastColumnRef : undefined}\n >\n <Column\n ancestorsWithSelections={ancestorsWithSelections}\n canCreate={canCreate && Boolean(onCreateNew)}\n collectionLabel={collectionLabel}\n disabled={isLoadingPath}\n disabledIds={disabledIds}\n expandedId={expandedId}\n filterByCollection={filterByCollection}\n hasNextPage={column.hasNextPage}\n isLoading={column.isLoading}\n items={column.items}\n onCreateNew={onCreateNew || (() => {})}\n onExpand={({ id }) => handleExpand({ columnIndex: index, itemId: id })}\n onLoadMore={() => handleLoadMore({ columnIndex: index })}\n onSelect={onSelect}\n parentId={column.parentId}\n parentTitle={column.parentTitle}\n pathToColumn={pathToColumn}\n selectedIds={selectedIds}\n totalDocs={column.totalDocs}\n />\n </div>\n )\n })}\n {isLoadingPath && (\n <div className={`${baseClass}__column-wrapper ${baseClass}__column-wrapper--loading`}>\n <Spinner />\n </div>\n )}\n </div>\n )\n}\n\nexport type {\n ColumnItemData,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n PathSegment,\n} from './types.js'\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ .hierarchy-column-browser {
2
+ display: flex;
3
+ flex: 1;
4
+ overflow-x: auto;
5
+ // scroll-snap-type: x proximity;
6
+
7
+ &__column-wrapper {
8
+ // scroll-snap-align: start;
9
+ flex-shrink: 0;
10
+
11
+ &:first-child {
12
+ margin-left: var(--gutter-h);
13
+ border-left: 1px solid var(--theme-elevation-100);
14
+ }
15
+ }
16
+
17
+ &__column-wrapper--loading {
18
+ padding: calc(var(--base) * 0.8) var(--base);
19
+ }
20
+ }
@@ -0,0 +1,106 @@
1
+ import type { Where } from 'payload';
2
+ export type ColumnItemData = {
3
+ /** For folders with collectionSpecific config, the allowed collection slugs */
4
+ allowedCollections?: string[];
5
+ hasChildren: boolean;
6
+ id: number | string;
7
+ title: string;
8
+ };
9
+ export type PathSegment = {
10
+ id: number | string;
11
+ title: string;
12
+ };
13
+ export type ColumnItemProps = {
14
+ disabled?: boolean;
15
+ /** Required collections that the folder must allow (for superset check) */
16
+ filterByCollection?: string[];
17
+ hasSelectedDescendants: boolean;
18
+ isExpanded: boolean;
19
+ isSelected: boolean;
20
+ item: ColumnItemData;
21
+ onExpand: (params: {
22
+ id: number | string;
23
+ }) => void;
24
+ onSelect: (params: {
25
+ id: number | string;
26
+ }) => void;
27
+ };
28
+ export type ColumnProps = {
29
+ ancestorsWithSelections: Set<number | string>;
30
+ /** Whether user can create new documents */
31
+ canCreate: boolean;
32
+ /** Label for the collection (e.g., "Folder") */
33
+ collectionLabel: string;
34
+ disabled?: boolean;
35
+ /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
36
+ disabledIds?: Set<number | string>;
37
+ expandedId: null | number | string;
38
+ /** Required collections for superset check (passed to ColumnItem) */
39
+ filterByCollection?: string[];
40
+ hasNextPage: boolean;
41
+ isLoading: boolean;
42
+ items: ColumnItemData[];
43
+ /** Called when user clicks "New" button - parent should open drawer with parentId */
44
+ onCreateNew: (params: {
45
+ parentId: null | number | string;
46
+ }) => void;
47
+ onExpand: (params: {
48
+ id: number | string;
49
+ }) => void;
50
+ onLoadMore: () => void;
51
+ onSelect: (params: {
52
+ id: number | string;
53
+ path: PathSegment[];
54
+ }) => void;
55
+ parentId: null | number | string;
56
+ parentTitle?: string;
57
+ pathToColumn: PathSegment[];
58
+ selectedIds: Set<number | string>;
59
+ totalDocs: number;
60
+ };
61
+ export type ColumnState = {
62
+ hasNextPage: boolean;
63
+ isLoading: boolean;
64
+ items: ColumnItemData[];
65
+ page: number;
66
+ parentId: null | number | string;
67
+ parentTitle?: string;
68
+ totalDocs: number;
69
+ };
70
+ export type HierarchyColumnBrowserRef = {
71
+ /** Refetch a specific column by parentId */
72
+ refreshColumn: (parentId: null | number | string) => Promise<void>;
73
+ };
74
+ export type HierarchyColumnBrowserProps = {
75
+ ancestorsWithSelections: Set<number | string>;
76
+ /** Base filter constraint (e.g., tenant filter) to apply to all queries */
77
+ baseFilter?: null | Where;
78
+ /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
79
+ disabledIds?: Set<number | string>;
80
+ /**
81
+ * Filters hierarchy items based on collection type restrictions:
82
+ * - `undefined`: No filtering, show all folders
83
+ * - `[]` (empty array): No filtering, show all folders (no constraints)
84
+ * - `['posts', ...]`: Show folders accepting ANY of these collections OR unrestricted folders
85
+ *
86
+ * Note: Query uses ANY semantics due to PG hasMany enum limitations.
87
+ * Client-side enforcement can disable selection of folders that don't allow ALL required collections.
88
+ */
89
+ filterByCollection?: string[];
90
+ hierarchyCollectionSlug: string;
91
+ initialExpandedPath?: (number | string)[];
92
+ /** Whether the initial expanded path is still being loaded */
93
+ isLoadingPath?: boolean;
94
+ /** Called when user clicks "New" button to create a new item */
95
+ onCreateNew?: (params: {
96
+ parentId: null | number | string;
97
+ }) => void;
98
+ onSelect: (params: {
99
+ id: number | string;
100
+ path: PathSegment[];
101
+ }) => void;
102
+ parentFieldName: string;
103
+ selectedIds: Set<number | string>;
104
+ useAsTitle?: string;
105
+ };
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map