@payloadcms/ui 3.80.0-internal.8d9ec7c → 3.80.0-internal.cdd7ef7

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 (286) hide show
  1. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  2. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +4 -2
  3. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  4. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +157 -0
  5. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  6. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -0
  7. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.js +5 -5
  8. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -0
  9. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.scss +1 -1
  10. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -0
  11. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.js +3 -3
  12. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -0
  13. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.scss +1 -1
  14. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -0
  15. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.js +6 -6
  16. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -0
  17. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -0
  18. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -0
  19. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -0
  20. package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.js +6 -6
  21. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -0
  22. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +1 -0
  23. package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.js +3 -3
  24. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -0
  25. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +1 -0
  26. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +1 -0
  27. package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.d.ts +2 -2
  28. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -0
  29. package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.js +2 -2
  30. package/dist/elements/Hierarchy/Drawer/index.js.map +1 -0
  31. package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.d.ts +1 -1
  32. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +1 -0
  33. package/dist/elements/Hierarchy/Drawer/types.js.map +1 -0
  34. package/dist/elements/{HierarchyDrawer/index.d.ts → Hierarchy/Drawer/useHierarchyDrawer.d.ts} +1 -1
  35. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +1 -0
  36. package/dist/elements/{HierarchyDrawer/index.js → Hierarchy/Drawer/useHierarchyDrawer.js} +6 -6
  37. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +1 -0
  38. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
  39. package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.js +7 -16
  40. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
  41. package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.scss +1 -1
  42. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -0
  43. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.js +17 -29
  44. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -0
  45. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.scss +1 -1
  46. package/dist/elements/Hierarchy/Field/index.server.d.ts.map +1 -0
  47. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.js +2 -2
  48. package/dist/elements/Hierarchy/Field/index.server.js.map +1 -0
  49. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +4 -0
  50. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +1 -0
  51. package/dist/elements/{HydrateHierarchyProvider → Hierarchy/HydrateProvider}/index.js +1 -1
  52. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -0
  53. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.d.ts +3 -3
  54. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -0
  55. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.js +10 -10
  56. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -0
  57. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.scss +1 -1
  58. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +1 -0
  59. package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.js +5 -5
  60. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +1 -0
  61. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +1 -0
  62. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -0
  63. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +1 -0
  64. package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.js +2 -2
  65. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -0
  66. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -0
  67. package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.js +2 -2
  68. package/dist/elements/Hierarchy/Search/index.js.map +1 -0
  69. package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.scss +1 -1
  70. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -0
  71. package/dist/elements/Hierarchy/Search/types.js.map +1 -0
  72. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -0
  73. package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.js +2 -2
  74. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -0
  75. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -0
  76. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.js +43 -48
  77. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -0
  78. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -0
  79. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.js +6 -5
  80. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -0
  81. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  82. package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/LoadMoreButton.js +1 -1
  83. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +1 -0
  84. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -0
  85. package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.js +1 -1
  86. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -0
  87. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +1 -0
  88. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +1 -0
  89. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -0
  90. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -0
  91. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -0
  92. package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.js +8 -4
  93. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -0
  94. package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.scss +1 -1
  95. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/index.d.ts +1 -0
  96. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -0
  97. package/dist/elements/{Tree → Hierarchy/Tree}/index.js +72 -72
  98. package/dist/elements/Hierarchy/Tree/index.js.map +1 -0
  99. package/dist/elements/{Tree → Hierarchy/Tree}/index.scss +2 -5
  100. package/dist/elements/{Tree → Hierarchy/Tree}/types.d.ts +30 -24
  101. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -0
  102. package/dist/elements/Hierarchy/Tree/types.js.map +1 -0
  103. package/dist/elements/{Tree → Hierarchy/Tree}/useChildren.d.ts +5 -1
  104. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -0
  105. package/dist/elements/{Tree → Hierarchy/Tree}/useChildren.js +41 -25
  106. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -0
  107. package/dist/elements/LoadMoreRow/index.js +1 -1
  108. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  109. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  110. package/dist/elements/RelationshipTable/index.js +14 -9
  111. package/dist/elements/RelationshipTable/index.js.map +1 -1
  112. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +1 -1
  113. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  114. package/dist/exports/client/index.d.ts +11 -15
  115. package/dist/exports/client/index.d.ts.map +1 -1
  116. package/dist/exports/client/index.js +26 -26
  117. package/dist/exports/client/index.js.map +4 -4
  118. package/dist/exports/rsc/index.d.ts +3 -3
  119. package/dist/exports/rsc/index.d.ts.map +1 -1
  120. package/dist/exports/rsc/index.js +3 -3
  121. package/dist/exports/rsc/index.js.map +1 -1
  122. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  123. package/dist/forms/Form/mergeServerFormState.js +101 -24
  124. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  125. package/dist/icons/TableView/index.d.ts +3 -0
  126. package/dist/icons/TableView/index.d.ts.map +1 -0
  127. package/dist/icons/TableView/index.js +16 -0
  128. package/dist/icons/TableView/index.js.map +1 -0
  129. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  130. package/dist/providers/Hierarchy/index.js +5 -1
  131. package/dist/providers/Hierarchy/index.js.map +1 -1
  132. package/dist/providers/Hierarchy/types.d.ts +1 -0
  133. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  134. package/dist/providers/Hierarchy/types.js.map +1 -1
  135. package/dist/providers/SidebarTabs/index.d.ts +19 -0
  136. package/dist/providers/SidebarTabs/index.d.ts.map +1 -0
  137. package/dist/providers/SidebarTabs/index.js +24 -0
  138. package/dist/providers/SidebarTabs/index.js.map +1 -0
  139. package/dist/styles.css +1 -1
  140. package/dist/views/Edit/index.d.ts.map +1 -1
  141. package/dist/views/Edit/index.js +11 -2
  142. package/dist/views/Edit/index.js.map +1 -1
  143. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  144. package/dist/views/HierarchyList/DocumentListSelection/index.js +145 -86
  145. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  146. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +1 -1
  147. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  148. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  149. package/package.json +4 -4
  150. package/dist/elements/HierarchyButton/index.d.ts.map +0 -1
  151. package/dist/elements/HierarchyButton/index.js.map +0 -1
  152. package/dist/elements/HierarchyButton/index.server.d.ts.map +0 -1
  153. package/dist/elements/HierarchyButton/index.server.js.map +0 -1
  154. package/dist/elements/HierarchyColumnBrowser/Column/index.d.ts.map +0 -1
  155. package/dist/elements/HierarchyColumnBrowser/Column/index.js.map +0 -1
  156. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.d.ts.map +0 -1
  157. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.js.map +0 -1
  158. package/dist/elements/HierarchyColumnBrowser/index.d.ts.map +0 -1
  159. package/dist/elements/HierarchyColumnBrowser/index.js.map +0 -1
  160. package/dist/elements/HierarchyColumnBrowser/types.d.ts.map +0 -1
  161. package/dist/elements/HierarchyColumnBrowser/types.js.map +0 -1
  162. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts.map +0 -1
  163. package/dist/elements/HierarchyDrawer/Drawer/index.js.map +0 -1
  164. package/dist/elements/HierarchyDrawer/fetchAncestorPath.d.ts.map +0 -1
  165. package/dist/elements/HierarchyDrawer/fetchAncestorPath.js.map +0 -1
  166. package/dist/elements/HierarchyDrawer/index.d.ts.map +0 -1
  167. package/dist/elements/HierarchyDrawer/index.js.map +0 -1
  168. package/dist/elements/HierarchyDrawer/types.d.ts.map +0 -1
  169. package/dist/elements/HierarchyDrawer/types.js.map +0 -1
  170. package/dist/elements/HierarchyField/SelectedHierarchies.d.ts.map +0 -1
  171. package/dist/elements/HierarchyField/SelectedHierarchies.js.map +0 -1
  172. package/dist/elements/HierarchyField/index.client.d.ts.map +0 -1
  173. package/dist/elements/HierarchyField/index.client.js.map +0 -1
  174. package/dist/elements/HierarchyField/index.server.d.ts.map +0 -1
  175. package/dist/elements/HierarchyField/index.server.js.map +0 -1
  176. package/dist/elements/HierarchySearch/HierarchySearchInput.d.ts.map +0 -1
  177. package/dist/elements/HierarchySearch/HierarchySearchInput.js.map +0 -1
  178. package/dist/elements/HierarchySearch/HierarchySearchResultItem.d.ts.map +0 -1
  179. package/dist/elements/HierarchySearch/HierarchySearchResultItem.js.map +0 -1
  180. package/dist/elements/HierarchySearch/HierarchySearchResults.d.ts.map +0 -1
  181. package/dist/elements/HierarchySearch/HierarchySearchResults.js.map +0 -1
  182. package/dist/elements/HierarchySearch/index.d.ts.map +0 -1
  183. package/dist/elements/HierarchySearch/index.js.map +0 -1
  184. package/dist/elements/HierarchySearch/types.d.ts.map +0 -1
  185. package/dist/elements/HierarchySearch/types.js.map +0 -1
  186. package/dist/elements/HierarchySearch/useHierarchySearch.d.ts.map +0 -1
  187. package/dist/elements/HierarchySearch/useHierarchySearch.js.map +0 -1
  188. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts.map +0 -1
  189. package/dist/elements/HierarchyTree/HierarchySidebarTab.js.map +0 -1
  190. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts.map +0 -1
  191. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js.map +0 -1
  192. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.d.ts.map +0 -1
  193. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js +0 -36
  194. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js.map +0 -1
  195. package/dist/elements/HierarchyTree/LoadMore/index.d.ts.map +0 -1
  196. package/dist/elements/HierarchyTree/LoadMore/index.js +0 -29
  197. package/dist/elements/HierarchyTree/LoadMore/index.js.map +0 -1
  198. package/dist/elements/HierarchyTree/LoadMore/index.scss +0 -26
  199. package/dist/elements/HierarchyTree/TreeConnector.d.ts.map +0 -1
  200. package/dist/elements/HierarchyTree/TreeConnector.js.map +0 -1
  201. package/dist/elements/HierarchyTree/TreeFocusContext.d.ts.map +0 -1
  202. package/dist/elements/HierarchyTree/TreeFocusContext.js.map +0 -1
  203. package/dist/elements/HierarchyTree/TreeNode/index.d.ts +0 -5
  204. package/dist/elements/HierarchyTree/TreeNode/index.d.ts.map +0 -1
  205. package/dist/elements/HierarchyTree/TreeNode/index.js +0 -201
  206. package/dist/elements/HierarchyTree/TreeNode/index.js.map +0 -1
  207. package/dist/elements/HierarchyTree/TreeNode/index.scss +0 -99
  208. package/dist/elements/HierarchyTree/index.d.ts.map +0 -1
  209. package/dist/elements/HierarchyTree/index.js +0 -66
  210. package/dist/elements/HierarchyTree/index.js.map +0 -1
  211. package/dist/elements/HierarchyTree/index.scss +0 -42
  212. package/dist/elements/HierarchyTree/types.d.ts +0 -57
  213. package/dist/elements/HierarchyTree/types.d.ts.map +0 -1
  214. package/dist/elements/HierarchyTree/types.js.map +0 -1
  215. package/dist/elements/HierarchyTree/useChildren.d.ts +0 -26
  216. package/dist/elements/HierarchyTree/useChildren.d.ts.map +0 -1
  217. package/dist/elements/HierarchyTree/useChildren.js +0 -150
  218. package/dist/elements/HierarchyTree/useChildren.js.map +0 -1
  219. package/dist/elements/HierarchyTree/useTreeState.d.ts +0 -9
  220. package/dist/elements/HierarchyTree/useTreeState.d.ts.map +0 -1
  221. package/dist/elements/HierarchyTree/useTreeState.js +0 -50
  222. package/dist/elements/HierarchyTree/useTreeState.js.map +0 -1
  223. package/dist/elements/HydrateHierarchyProvider/index.d.ts +0 -4
  224. package/dist/elements/HydrateHierarchyProvider/index.d.ts.map +0 -1
  225. package/dist/elements/HydrateHierarchyProvider/index.js.map +0 -1
  226. package/dist/elements/MoveMany/index.d.ts.map +0 -1
  227. package/dist/elements/MoveMany/index.js.map +0 -1
  228. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts +0 -8
  229. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts.map +0 -1
  230. package/dist/elements/Tree/LoadMore/LoadMoreButton.js.map +0 -1
  231. package/dist/elements/Tree/LoadMore/index.d.ts +0 -12
  232. package/dist/elements/Tree/LoadMore/index.d.ts.map +0 -1
  233. package/dist/elements/Tree/LoadMore/index.js.map +0 -1
  234. package/dist/elements/Tree/TreeConnector.d.ts +0 -7
  235. package/dist/elements/Tree/TreeConnector.d.ts.map +0 -1
  236. package/dist/elements/Tree/TreeConnector.js +0 -23
  237. package/dist/elements/Tree/TreeConnector.js.map +0 -1
  238. package/dist/elements/Tree/TreeFocusContext.d.ts +0 -28
  239. package/dist/elements/Tree/TreeFocusContext.d.ts.map +0 -1
  240. package/dist/elements/Tree/TreeFocusContext.js +0 -140
  241. package/dist/elements/Tree/TreeFocusContext.js.map +0 -1
  242. package/dist/elements/Tree/TreeNode/index.d.ts.map +0 -1
  243. package/dist/elements/Tree/TreeNode/index.js.map +0 -1
  244. package/dist/elements/Tree/index.d.ts +0 -5
  245. package/dist/elements/Tree/index.d.ts.map +0 -1
  246. package/dist/elements/Tree/index.js.map +0 -1
  247. package/dist/elements/Tree/types.d.ts.map +0 -1
  248. package/dist/elements/Tree/types.js +0 -2
  249. package/dist/elements/Tree/types.js.map +0 -1
  250. package/dist/elements/Tree/useChildren.d.ts.map +0 -1
  251. package/dist/elements/Tree/useChildren.js.map +0 -1
  252. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.d.ts +0 -0
  253. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.d.ts +0 -0
  254. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.d.ts +0 -0
  255. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.scss +0 -0
  256. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.d.ts +0 -0
  257. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.js +0 -0
  258. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.d.ts +0 -0
  259. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.scss +0 -0
  260. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.d.ts +0 -0
  261. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.d.ts +0 -0
  262. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.js +0 -0
  263. /package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.scss +0 -0
  264. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.js +0 -0
  265. /package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.d.ts +0 -0
  266. /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.d.ts +0 -0
  267. /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.d.ts +0 -0
  268. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.d.ts +0 -0
  269. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.d.ts +0 -0
  270. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.js +0 -0
  271. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.d.ts +0 -0
  272. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.d.ts +0 -0
  273. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.d.ts +0 -0
  274. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.js +0 -0
  275. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.d.ts +0 -0
  276. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.d.ts +0 -0
  277. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.d.ts +0 -0
  278. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/LoadMoreButton.d.ts +0 -0
  279. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/index.d.ts +0 -0
  280. /package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.scss +0 -0
  281. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.d.ts +0 -0
  282. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.js +0 -0
  283. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.d.ts +0 -0
  284. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.js +0 -0
  285. /package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.d.ts +0 -0
  286. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/types.js +0 -0
@@ -1,12 +1,13 @@
1
1
  import { combineWhereConstraints, formatAdminURL } from 'payload/shared';
2
2
  import * as qs from 'qs-esm';
3
3
  import { useCallback, useEffect, useRef, useState } from 'react';
4
- import { useConfig } from '../../providers/Config/index.js';
5
- import { isSuperset } from '../../utilities/isSuperset.js';
4
+ import { useConfig } from '../../../providers/Config/index.js';
5
+ import { isSuperset } from '../../../utilities/isSuperset.js';
6
6
  export const useChildren = ({
7
7
  allPossibleTypeValues,
8
8
  baseFilter,
9
9
  cache,
10
+ cacheKey: cacheKeyProp,
10
11
  collectionSlug,
11
12
  enabled = true,
12
13
  filterByCollections,
@@ -19,7 +20,8 @@ export const useChildren = ({
19
20
  }) => {
20
21
  const filterKey = filterByCollections?.length ? filterByCollections.slice().sort().join(',') : '';
21
22
  const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : '';
22
- const cacheKey = `${collectionSlug}-${parentId}-${filterKey}-${baseFilterKey}`;
23
+ // Use provided cacheKey for consistency with cache population, or compute if not provided
24
+ const cacheKey = cacheKeyProp ?? `${collectionSlug}-${String(parentId)}-${filterKey}-${baseFilterKey}`;
23
25
  const cachedData = cache?.current.get(cacheKey);
24
26
  // Check if we have initial data for this specific parent
25
27
  const parentKey = parentId === 'null' ? 'null' : String(parentId);
@@ -38,11 +40,16 @@ export const useChildren = ({
38
40
  return true;
39
41
  }) : null;
40
42
  const [children, setChildren] = useState(initialDocsForParent || cachedData?.children || null);
41
- const [isLoading, setIsLoading] = useState(!hasInitialData && !cachedData && enabled);
43
+ const [isLoading, setIsLoading] = useState(false);
42
44
  const [page, setPage] = useState(cachedData?.page || 1);
43
45
  const [totalDocs, setTotalDocs] = useState(parentMeta?.totalDocs || cachedData?.totalDocs || 0);
44
46
  const [hasMore, setHasMore] = useState(parentMeta?.hasMore || cachedData?.hasMore || false);
45
47
  const initializedRef = useRef(!!hasInitialData);
48
+ // Refs for stable access inside load() without adding state to its dep array
49
+ const childrenRef = useRef(children);
50
+ childrenRef.current = children;
51
+ const isLoadingRef = useRef(isLoading);
52
+ isLoadingRef.current = isLoading;
46
53
  const {
47
54
  config: {
48
55
  routes: {
@@ -150,8 +157,8 @@ export const useChildren = ({
150
157
  } finally {
151
158
  setIsLoading(false);
152
159
  }
153
- }, [allPossibleTypeValues, baseFilter, parentId, filterKey, parentFieldName, filterByCollections, typeFieldName, limit, useAsTitle, api, collectionSlug, serverURL, cache, cacheKey]);
154
- // Reset state when filter changes
160
+ }, [allPossibleTypeValues, baseFilter, parentId, parentFieldName, filterByCollections, typeFieldName, limit, useAsTitle, api, collectionSlug, serverURL, cache, cacheKey]);
161
+ // Reset state and reload when filter changes
155
162
  const prevFilterKeyRef = useRef(filterKey);
156
163
  useEffect(() => {
157
164
  if (prevFilterKeyRef.current !== filterKey) {
@@ -160,30 +167,38 @@ export const useChildren = ({
160
167
  setPage(1);
161
168
  setTotalDocs(0);
162
169
  setHasMore(false);
170
+ // If the node is currently expanded, immediately reload with the new filter
171
+ if (enabled) {
172
+ void fetchPage(1, null);
173
+ }
163
174
  }
164
- }, [filterKey]);
165
- useEffect(() => {
166
- if (!enabled) {
167
- return;
168
- }
169
- // Skip initial fetch if we have initialData
170
- if (initializedRef.current && children !== null) {
175
+ }, [filterKey, enabled, fetchPage]);
176
+ // Load children explicitly. Safe to call multiple times — no-ops if already loaded or loading.
177
+ const load = useCallback(async () => {
178
+ // Consume initialData on first call without re-fetching
179
+ if (initializedRef.current && childrenRef.current !== null) {
171
180
  initializedRef.current = false;
172
- return;
181
+ return childrenRef.current;
173
182
  }
174
- // Restore from cache if children was reset (e.g., filter changed)
175
- if (cachedData && children === null) {
176
- setChildren(cachedData.children);
177
- setPage(cachedData.page);
178
- setTotalDocs(cachedData.totalDocs);
179
- setHasMore(cachedData.hasMore);
180
- return;
183
+ // Already loaded
184
+ if (childrenRef.current !== null) {
185
+ return childrenRef.current;
181
186
  }
182
- if (cachedData && page === cachedData.page) {
183
- return;
187
+ // Guard against concurrent calls
188
+ if (isLoadingRef.current) {
189
+ return [];
184
190
  }
185
- void fetchPage(page, children);
186
- }, [enabled, page, cachedData, fetchPage, children]);
191
+ // Restore from cache when available (e.g., after a filter reset)
192
+ const currentCachedData = cache?.current.get(cacheKey);
193
+ if (currentCachedData) {
194
+ setChildren(currentCachedData.children);
195
+ setPage(currentCachedData.page);
196
+ setTotalDocs(currentCachedData.totalDocs);
197
+ setHasMore(currentCachedData.hasMore);
198
+ return currentCachedData.children;
199
+ }
200
+ return fetchPage(1, null);
201
+ }, [cache, cacheKey, fetchPage]);
187
202
  const loadMore = useCallback(async () => {
188
203
  if (isLoading || !hasMore) {
189
204
  return [];
@@ -205,6 +220,7 @@ export const useChildren = ({
205
220
  children,
206
221
  hasMore,
207
222
  isLoading,
223
+ load,
208
224
  loadMore,
209
225
  refresh,
210
226
  totalDocs
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChildren.js","names":["combineWhereConstraints","formatAdminURL","qs","useCallback","useEffect","useRef","useState","useConfig","isSuperset","useChildren","allPossibleTypeValues","baseFilter","cache","cacheKey","cacheKeyProp","collectionSlug","enabled","filterByCollections","initialData","limit","parentFieldName","parentId","typeFieldName","useAsTitle","filterKey","length","slice","sort","join","baseFilterKey","JSON","stringify","String","cachedData","current","get","parentKey","parentMeta","loadedParents","hasInitialData","initialDocsForParent","docs","filter","doc","docParent","children","setChildren","isLoading","setIsLoading","page","setPage","totalDocs","setTotalDocs","hasMore","setHasMore","initializedRef","childrenRef","isLoadingRef","config","routes","api","serverURL","fetchPage","pageToFetch","currentChildren","parentCondition","or","exists","equals","filterCondition","in","not_in","undefined","where","queryParams","queryString","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allDocs","newDocs","newChildren","hasNextPage","set","emptyChildren","prevFilterKeyRef","load","currentCachedData","loadMore","shouldRefetchPage1","refresh","delete"],"sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"sourcesContent":["import type { Where } from 'payload'\n\nimport { combineWhereConstraints, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { TreeCache, TreeDocument, TreeInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\n\ntype UseChildrenArgs = {\n allPossibleTypeValues?: string[]\n /** Base filter to apply to all queries (e.g., tenant filter) */\n baseFilter?: null | Where\n cache?: TreeCache\n /** Pre-computed cache key to ensure consistency with cache population */\n cacheKey?: string\n collectionSlug: string\n enabled?: boolean\n filterByCollections?: string[]\n initialData?: null | TreeInitialData\n limit?: number\n parentFieldName: string\n parentId: number | string\n typeFieldName?: null | string\n useAsTitle?: string\n}\n\ntype UseChildrenReturn = {\n children: null | TreeDocument[]\n hasMore: boolean\n isLoading: boolean\n /** Explicitly load children. Safe to call multiple times — no-ops if already loaded. */\n load: () => Promise<TreeDocument[]>\n loadMore: () => Promise<TreeDocument[]>\n refresh: () => Promise<TreeDocument[]>\n totalDocs: number\n}\n\nexport const useChildren = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n cacheKey: cacheKeyProp,\n collectionSlug,\n enabled = true,\n filterByCollections,\n initialData,\n limit = 2,\n parentFieldName,\n parentId,\n typeFieldName,\n useAsTitle,\n}: UseChildrenArgs): UseChildrenReturn => {\n const filterKey = filterByCollections?.length ? filterByCollections.slice().sort().join(',') : ''\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n // Use provided cacheKey for consistency with cache population, or compute if not provided\n const cacheKey =\n cacheKeyProp ?? `${collectionSlug}-${String(parentId)}-${filterKey}-${baseFilterKey}`\n const cachedData = cache?.current.get(cacheKey)\n\n // Check if we have initial data for this specific parent\n const parentKey = parentId === 'null' ? 'null' : String(parentId)\n const parentMeta = initialData?.loadedParents?.[parentKey]\n const hasInitialData = !!parentMeta\n\n // Extract docs for this parent from initialData if available\n // Apply same superset filter as fetchPage for consistency\n const initialDocsForParent = hasInitialData\n ? initialData.docs.filter((doc) => {\n const docParent = doc[parentFieldName] || 'null'\n if (String(docParent) !== parentKey) {\n return false\n }\n if (filterByCollections?.length && typeFieldName) {\n return isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections)\n }\n return true\n })\n : null\n\n const [children, setChildren] = useState<null | TreeDocument[]>(\n initialDocsForParent || cachedData?.children || null,\n )\n const [isLoading, setIsLoading] = useState(false)\n const [page, setPage] = useState(cachedData?.page || 1)\n const [totalDocs, setTotalDocs] = useState(parentMeta?.totalDocs || cachedData?.totalDocs || 0)\n const [hasMore, setHasMore] = useState(parentMeta?.hasMore || cachedData?.hasMore || false)\n const initializedRef = useRef(!!hasInitialData)\n // Refs for stable access inside load() without adding state to its dep array\n const childrenRef = useRef(children)\n childrenRef.current = children\n const isLoadingRef = useRef(isLoading)\n isLoadingRef.current = isLoading\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const fetchPage = useCallback(\n async (\n pageToFetch: number,\n currentChildren: null | TreeDocument[],\n ): Promise<TreeDocument[]> => {\n setIsLoading(true)\n\n try {\n const parentCondition =\n parentId === 'null' || parentId === null\n ? {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build filter condition for collection type filtering\n // Matches items that:\n // - allow ANY of the selected collections, OR\n // - are unrestricted (type field doesn't exist), OR\n // - have empty allowedTypes array (unrestricted)\n const filterCondition: undefined | Where =\n filterByCollections?.length && typeFieldName\n ? {\n or: [\n { [typeFieldName]: { in: filterByCollections } },\n { [typeFieldName]: { exists: false } },\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypeValues?.length\n ? [{ [typeFieldName]: { not_in: allPossibleTypeValues } }]\n : []),\n ],\n }\n : undefined\n\n // Combine conditions: parent + filter + baseFilter\n const where = combineWhereConstraints([parentCondition, filterCondition, baseFilter])\n\n const queryParams: Record<string, unknown> = {\n limit,\n page: pageToFetch,\n sort: useAsTitle ?? 'id',\n where,\n }\n\n const queryString = qs.stringify(queryParams, { addQueryPrefix: true })\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch children')\n }\n\n const data = await response.json()\n const allDocs: TreeDocument[] = data.docs || []\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 newDocs =\n filterByCollections?.length && typeFieldName\n ? allDocs.filter((doc) =>\n isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections),\n )\n : allDocs\n\n const newChildren = pageToFetch === 1 ? newDocs : [...(currentChildren || []), ...newDocs]\n\n setChildren(newChildren)\n setTotalDocs(data.totalDocs || 0)\n setHasMore(data.hasNextPage || false)\n setPage(pageToFetch)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: newChildren,\n hasMore: data.hasNextPage || false,\n page: pageToFetch,\n totalDocs: data.totalDocs || 0,\n })\n }\n\n return newDocs\n } catch {\n if (pageToFetch === 1) {\n const emptyChildren: TreeDocument[] = []\n setChildren(emptyChildren)\n setHasMore(false)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: emptyChildren,\n hasMore: false,\n page: 1,\n totalDocs: 0,\n })\n }\n }\n\n return []\n } finally {\n setIsLoading(false)\n }\n },\n [\n allPossibleTypeValues,\n baseFilter,\n parentId,\n parentFieldName,\n filterByCollections,\n typeFieldName,\n limit,\n useAsTitle,\n api,\n collectionSlug,\n serverURL,\n cache,\n cacheKey,\n ],\n )\n\n // Reset state and reload when filter changes\n const prevFilterKeyRef = useRef(filterKey)\n useEffect(() => {\n if (prevFilterKeyRef.current !== filterKey) {\n prevFilterKeyRef.current = filterKey\n setChildren(null)\n setPage(1)\n setTotalDocs(0)\n setHasMore(false)\n // If the node is currently expanded, immediately reload with the new filter\n if (enabled) {\n void fetchPage(1, null)\n }\n }\n }, [filterKey, enabled, fetchPage])\n\n // Load children explicitly. Safe to call multiple times — no-ops if already loaded or loading.\n const load = useCallback(async (): Promise<TreeDocument[]> => {\n // Consume initialData on first call without re-fetching\n if (initializedRef.current && childrenRef.current !== null) {\n initializedRef.current = false\n return childrenRef.current\n }\n\n // Already loaded\n if (childrenRef.current !== null) {\n return childrenRef.current\n }\n\n // Guard against concurrent calls\n if (isLoadingRef.current) {\n return []\n }\n\n // Restore from cache when available (e.g., after a filter reset)\n const currentCachedData = cache?.current.get(cacheKey)\n if (currentCachedData) {\n setChildren(currentCachedData.children)\n setPage(currentCachedData.page)\n setTotalDocs(currentCachedData.totalDocs)\n setHasMore(currentCachedData.hasMore)\n return currentCachedData.children\n }\n\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n\n const loadMore = useCallback(async (): Promise<TreeDocument[]> => {\n if (isLoading || !hasMore) {\n return []\n }\n\n // If we have fewer items than our limit, the cached data was fetched with a smaller limit\n // We need to re-fetch page 1 with our limit to get the full first page\n const shouldRefetchPage1 = children && children.length < limit\n\n return fetchPage(shouldRefetchPage1 ? 1 : page + 1, children)\n }, [isLoading, hasMore, page, children, fetchPage, limit])\n\n const refresh = useCallback(async (): Promise<TreeDocument[]> => {\n if (cache) {\n cache.current.delete(cacheKey)\n }\n setChildren(null)\n setPage(1)\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n\n return { children, hasMore, isLoading, load, loadMore, refresh, totalDocs }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
5
5
  import React from 'react';
6
6
  import { useTranslation } from '../../providers/Translation/index.js';
7
7
  import { Button } from '../Button/index.js';
8
- import { TreeConnector } from '../HierarchyTree/TreeConnector.js';
8
+ import { TreeConnector } from '../Hierarchy/Tree/TreeConnector.js';
9
9
  import './index.scss';
10
10
  const baseClass = 'load-more-row';
11
11
  export const LoadMoreRow = t0 => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useTranslation","Button","TreeConnector","baseClass","LoadMoreRow","t0","$","className","currentCount","hasMore","isLoading","t1","loadMoreButton","onLoadMore","style","totalDocs","undefined","t","t2","defaultButton","_jsx","buttonStyle","disabled","margin","onClick","children","t3","filter","Boolean","_jsxs","join","_Fragment"],"sources":["../../../src/elements/LoadMoreRow/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { TreeConnector } from '../HierarchyTree/TreeConnector.js'\nimport './index.scss'\n\nconst baseClass = 'load-more-row'\n\nexport type LoadMoreRowProps = {\n className?: string\n currentCount: number\n hasMore: boolean\n isLoading?: boolean\n /** Custom button element - if provided, onLoadMore and isLoading are ignored */\n loadMoreButton?: React.ReactNode\n onLoadMore?: () => void\n style?: React.CSSProperties\n totalDocs: number\n}\n\nexport const LoadMoreRow: React.FC<LoadMoreRowProps> = ({\n className,\n currentCount,\n hasMore,\n isLoading = false,\n loadMoreButton,\n onLoadMore,\n style,\n totalDocs,\n}) => {\n const { t } = useTranslation()\n const defaultButton = onLoadMore && (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__button`}\n disabled={isLoading}\n margin={false}\n onClick={onLoadMore}\n >\n {isLoading ? t('general:loading') : t('general:loadMore')}\n </Button>\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} style={style}>\n <div className={`${baseClass}__connector`}>\n <TreeConnector />\n </div>\n <p className={`${baseClass}__text`}>\n {hasMore ? (\n <>\n Showing {currentCount} of {totalDocs} — {loadMoreButton || defaultButton}\n </>\n ) : (\n <>\n Showing {totalDocs} of {totalDocs}\n </>\n )}\n </p>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAclB,OAAO,MAAMC,WAAA,GAA0CC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS,SAAA;IAAAC,YAAA;IAAAC,OAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC,cAAA;IAAAC,UAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAV,EASvD;EALC,MAAAK,SAAA,GAAAC,EAAiB,KAAAK,SAAA,WAAjBL,EAAiB;EAMjB;IAAAM;EAAA,IAAcjB,cAAA;EAAA,IAAAkB,EAAA;EAAA,IAAAZ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAE,YAAA,IAAAF,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAI,SAAA,IAAAJ,CAAA,QAAAM,cAAA,IAAAN,CAAA,QAAAO,UAAA,IAAAP,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAW,CAAA,IAAAX,CAAA,QAAAS,SAAA;IACd,MAAAI,aAAA,GAAsBN,UAAA,IACpBO,IAAA,CAAAnB,MAAA;MAAAoB,WAAA,EACc;MAAAd,SAAA,EACD,GAAAJ,SAAA,UAAsB;MAAAmB,QAAA,EACvBZ,SAAA;MAAAa,MAAA;MAAAC,OAAA,EAEDX,UAAA;MAAAY,QAAA,EAERf,SAAA,GAAYO,CAAA,CAAE,qBAAqBA,CAAA,CAAE;IAAA,C;;;MAKxBS,EAAA,IAAAvB,SAAA,EAAYI,SAAA,EAAAoB,MAAA,CAAAC,OAAkB;MAAAtB,CAAA,OAAAC,SAAA;MAAAD,CAAA,OAAAoB,EAAA;IAAA;MAAAA,EAAA,GAAApB,CAAA;IAAA;IAA9CY,EAAA,GAAAW,KAAA,CAAC;MAAAtB,SAAA,EAAemB,EAA8B,CAAAI,IAAA,CAAc;MAAAhB,KAAA;MAAAW,QAAA,GAC1DL,IAAA,CAAC;QAAAb,SAAA,EAAe,GAAAJ,SAAA,aAAyB;QAAAsB,QAAA,EACvCL,IAAA,CAAAlB,aAAA,IAAC;MAAA,C,GAEHkB,IAAA,CAAC;QAAAb,SAAA,EAAa,GAAAJ,SAAA,QAAoB;QAAAsB,QAAA,EAC/BhB,OAAA,GACCoB,KAAA,CAAAE,SAAA;UAAAN,QAAA,GAAE,YACSjB,YAAA,EAAa,QAAKO,SAAA,EAAU,YAAIH,cAAA,IAAkBO,aAAA;QAAA,C,IAG7DU,KAAA,CAAAE,SAAA;UAAAN,QAAA,GAAE,YACSV,SAAA,EAAU,QAAKA,SAAA;QAAA,C;;;;;;;;;;;;;;;;SAXhCG,E;CAiBJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useTranslation","Button","TreeConnector","baseClass","LoadMoreRow","t0","$","className","currentCount","hasMore","isLoading","t1","loadMoreButton","onLoadMore","style","totalDocs","undefined","t","t2","defaultButton","_jsx","buttonStyle","disabled","margin","onClick","children","t3","filter","Boolean","_jsxs","join","_Fragment"],"sources":["../../../src/elements/LoadMoreRow/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { TreeConnector } from '../Hierarchy/Tree/TreeConnector.js'\nimport './index.scss'\n\nconst baseClass = 'load-more-row'\n\nexport type LoadMoreRowProps = {\n className?: string\n currentCount: number\n hasMore: boolean\n isLoading?: boolean\n /** Custom button element - if provided, onLoadMore and isLoading are ignored */\n loadMoreButton?: React.ReactNode\n onLoadMore?: () => void\n style?: React.CSSProperties\n totalDocs: number\n}\n\nexport const LoadMoreRow: React.FC<LoadMoreRowProps> = ({\n className,\n currentCount,\n hasMore,\n isLoading = false,\n loadMoreButton,\n onLoadMore,\n style,\n totalDocs,\n}) => {\n const { t } = useTranslation()\n const defaultButton = onLoadMore && (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__button`}\n disabled={isLoading}\n margin={false}\n onClick={onLoadMore}\n >\n {isLoading ? t('general:loading') : t('general:loadMore')}\n </Button>\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} style={style}>\n <div className={`${baseClass}__connector`}>\n <TreeConnector />\n </div>\n <p className={`${baseClass}__text`}>\n {hasMore ? (\n <>\n Showing {currentCount} of {totalDocs} — {loadMoreButton || defaultButton}\n </>\n ) : (\n <>\n Showing {totalDocs} of {totalDocs}\n </>\n )}\n </p>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAclB,OAAO,MAAMC,WAAA,GAA0CC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS,SAAA;IAAAC,YAAA;IAAAC,OAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC,cAAA;IAAAC,UAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAV,EASvD;EALC,MAAAK,SAAA,GAAAC,EAAiB,KAAAK,SAAA,WAAjBL,EAAiB;EAMjB;IAAAM;EAAA,IAAcjB,cAAA;EAAA,IAAAkB,EAAA;EAAA,IAAAZ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAE,YAAA,IAAAF,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAI,SAAA,IAAAJ,CAAA,QAAAM,cAAA,IAAAN,CAAA,QAAAO,UAAA,IAAAP,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAW,CAAA,IAAAX,CAAA,QAAAS,SAAA;IACd,MAAAI,aAAA,GAAsBN,UAAA,IACpBO,IAAA,CAAAnB,MAAA;MAAAoB,WAAA,EACc;MAAAd,SAAA,EACD,GAAAJ,SAAA,UAAsB;MAAAmB,QAAA,EACvBZ,SAAA;MAAAa,MAAA;MAAAC,OAAA,EAEDX,UAAA;MAAAY,QAAA,EAERf,SAAA,GAAYO,CAAA,CAAE,qBAAqBA,CAAA,CAAE;IAAA,C;;;MAKxBS,EAAA,IAAAvB,SAAA,EAAYI,SAAA,EAAAoB,MAAA,CAAAC,OAAkB;MAAAtB,CAAA,OAAAC,SAAA;MAAAD,CAAA,OAAAoB,EAAA;IAAA;MAAAA,EAAA,GAAApB,CAAA;IAAA;IAA9CY,EAAA,GAAAW,KAAA,CAAC;MAAAtB,SAAA,EAAemB,EAA8B,CAAAI,IAAA,CAAc;MAAAhB,KAAA;MAAAW,QAAA,GAC1DL,IAAA,CAAC;QAAAb,SAAA,EAAe,GAAAJ,SAAA,aAAyB;QAAAsB,QAAA,EACvCL,IAAA,CAAAlB,aAAA,IAAC;MAAA,C,GAEHkB,IAAA,CAAC;QAAAb,SAAA,EAAa,GAAAJ,SAAA,QAAoB;QAAAsB,QAAA,EAC/BhB,OAAA,GACCoB,KAAA,CAAAE,SAAA;UAAAN,QAAA,GAAE,YACSjB,YAAA,EAAa,QAAKO,SAAA,EAAU,YAAIH,cAAA,IAAkBO,aAAA;QAAA,C,IAG7DU,KAAA,CAAAE,SAAA;UAAAN,QAAA,GAAE,YACSV,SAAA,EAAU,QAAKA,SAAA;QAAA,C;;;;;;;;;;;;;;;;SAXhCG,E;CAiBJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAkBrE,OAAO,cAAc,CAAA;AAIrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzE,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA6VvE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAmBrE,OAAO,cAAc,CAAA;AAIrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzE,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAyWvE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
5
  import { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared';
6
6
  import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react';
@@ -16,6 +16,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
16
16
  import { AnimateHeight } from '../AnimateHeight/index.js';
17
17
  import { ColumnSelector } from '../ColumnSelector/index.js';
18
18
  import { useDocumentDrawer } from '../DocumentDrawer/index.js';
19
+ import { NoListResults } from '../NoListResults/index.js';
19
20
  import { RelationshipProvider } from '../Table/RelationshipProvider/index.js';
20
21
  import { AddNewButton } from './AddNewButton.js';
21
22
  import { DrawerLink } from './cells/DrawerLink/index.js';
@@ -234,13 +235,8 @@ export const RelationshipTable = props => {
234
235
  }), BeforeInput, isLoadingTable ? /*#__PURE__*/_jsx("p", {
235
236
  children: t('general:loading')
236
237
  }) : /*#__PURE__*/_jsxs(Fragment, {
237
- children: [data?.docs && data.docs.length === 0 && /*#__PURE__*/_jsxs("div", {
238
- className: `${baseClass}__no-results`,
239
- children: [/*#__PURE__*/_jsx("p", {
240
- children: i18n.t('general:noResults', {
241
- label: isPolymorphic ? i18n.t('general:documents') : getTranslation(collectionConfig?.labels?.plural, i18n)
242
- })
243
- }), /*#__PURE__*/_jsx(AddNewButton, {
238
+ children: [data?.docs && data.docs.length === 0 && /*#__PURE__*/_jsx(NoListResults, {
239
+ Actions: canCreate ? [/*#__PURE__*/_jsx(AddNewButton, {
244
240
  allowCreate: canCreate,
245
241
  baseClass: baseClass,
246
242
  collections: config.collections,
@@ -251,7 +247,16 @@ export const RelationshipTable = props => {
251
247
  onClick: isPolymorphic ? setSelectedCollection : openDrawer,
252
248
  permissions: permissions,
253
249
  relationTo: relationTo
254
- })]
250
+ }, "create")] : [],
251
+ Message: /*#__PURE__*/_jsxs(_Fragment, {
252
+ children: [/*#__PURE__*/_jsx("h3", {
253
+ children: i18n.t('general:noResultsFound')
254
+ }), /*#__PURE__*/_jsx("p", {
255
+ children: i18n.t('general:noResults', {
256
+ label: isPolymorphic ? i18n.t('general:documents') : getTranslation(collectionConfig?.labels?.plural, i18n)
257
+ })
258
+ })]
259
+ })
255
260
  }), data?.docs && data.docs.length > 0 && /*#__PURE__*/_jsx(RelationshipProvider, {
256
261
  children: /*#__PURE__*/_jsx(ListQueryProvider, {
257
262
  data: data,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useRef","useState","Pill","useEffectEvent","ChevronIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","isPolymorphic","Array","isArray","selectedCollection","setSelectedCollection","undefined","permissions","openDrawerWhenRelationChanges","currentDrawerID","setCurrentDrawerID","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","id","isLoadingTable","setIsLoadingTable","data","setData","docs","reduce","acc","doc","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","renderRowTypes","disableRowTypes","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","tableAppearance","handleTableRender","onDrawerSave","operation","foundDocIndex","findIndex","d","withNewOrUpdatedData","newDocs","onDrawerDelete","args","filter","onDrawerOpen","current","canCreate","collections","create","memoizedListQuery","useMemo","_jsxs","className","_jsx","buttonStyle","icon","label","onClick","direction","pillStyle","size","length","labels","plural","singular","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","height","slug","onDelete","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport type OnDrawerOpen = (id?: string, collectionSlug?: string) => void\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n\n const { permissions } = useAuth()\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const [currentDrawerID, setCurrentDrawerID] = useState<string | undefined>(undefined)\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentDrawerID,\n collectionSlug: selectedCollection,\n })\n\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n\n const [data, setData] = useState<PaginatedDocs>(() =>\n initialDataFromProps\n ? {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string' || typeof doc === 'number') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n\n return [...acc, doc]\n }, [])\n : [],\n }\n : undefined,\n )\n\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin?.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const renderRowTypes =\n typeof field.admin?.disableRowTypes === 'boolean'\n ? !field.admin.disableRowTypes\n : Array.isArray(relationTo)\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin?.defaultColumns,\n field.admin?.disableRowTypes,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n ({ doc, operation }) => {\n if (operation === 'create') {\n closeDrawer()\n }\n\n const foundDocIndex = data?.docs?.findIndex((d) => d.id === doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable, closeDrawer],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n\n setCurrentDrawerID(undefined)\n },\n [data, renderTable],\n )\n\n const onDrawerOpen = useCallback<OnDrawerOpen>((id, collectionSlug) => {\n openDrawerWhenRelationChanges.current = true\n\n if (id) {\n setCurrentDrawerID(id)\n } else {\n setCurrentDrawerID(undefined)\n }\n\n if (collectionSlug) {\n setSelectedCollection(collectionSlug)\n } else {\n setSelectedCollection(undefined)\n }\n }, [])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawerWhenRelationChanges.current = false\n openDrawer()\n }\n }, [openDrawer])\n\n useEffect(() => {\n if (!isDrawerOpen) {\n setCurrentDrawerID(undefined)\n }\n }, [isDrawerOpen])\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"none\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ' doc-drawer__toggler'}`}\n collections={config.collections}\n i18n={i18n}\n icon={isPolymorphic ? 'plus' : undefined}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink currentDrawerID={currentDrawerID} onDrawerOpen={onDrawerOpen} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer\n initialData={initialDrawerData}\n onDelete={onDrawerDelete}\n onSave={onDrawerSave}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useRef","useState","Pill","useEffectEvent","ChevronIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","NoListResults","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","isPolymorphic","Array","isArray","selectedCollection","setSelectedCollection","undefined","permissions","openDrawerWhenRelationChanges","currentDrawerID","setCurrentDrawerID","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","id","isLoadingTable","setIsLoadingTable","data","setData","docs","reduce","acc","doc","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","renderRowTypes","disableRowTypes","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","tableAppearance","handleTableRender","onDrawerSave","operation","foundDocIndex","findIndex","d","withNewOrUpdatedData","newDocs","onDrawerDelete","args","filter","onDrawerOpen","current","canCreate","collections","create","memoizedListQuery","useMemo","_jsxs","className","_jsx","buttonStyle","icon","label","onClick","direction","pillStyle","size","length","Actions","labels","singular","Message","_Fragment","plural","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","height","slug","onDelete","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { NoListResults } from '../NoListResults/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport type OnDrawerOpen = (id?: string, collectionSlug?: string) => void\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n\n const { permissions } = useAuth()\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const [currentDrawerID, setCurrentDrawerID] = useState<string | undefined>(undefined)\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentDrawerID,\n collectionSlug: selectedCollection,\n })\n\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n\n const [data, setData] = useState<PaginatedDocs>(() =>\n initialDataFromProps\n ? {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string' || typeof doc === 'number') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n\n return [...acc, doc]\n }, [])\n : [],\n }\n : undefined,\n )\n\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin?.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const renderRowTypes =\n typeof field.admin?.disableRowTypes === 'boolean'\n ? !field.admin.disableRowTypes\n : Array.isArray(relationTo)\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin?.defaultColumns,\n field.admin?.disableRowTypes,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n ({ doc, operation }) => {\n if (operation === 'create') {\n closeDrawer()\n }\n\n const foundDocIndex = data?.docs?.findIndex((d) => d.id === doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable, closeDrawer],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n\n setCurrentDrawerID(undefined)\n },\n [data, renderTable],\n )\n\n const onDrawerOpen = useCallback<OnDrawerOpen>((id, collectionSlug) => {\n openDrawerWhenRelationChanges.current = true\n\n if (id) {\n setCurrentDrawerID(id)\n } else {\n setCurrentDrawerID(undefined)\n }\n\n if (collectionSlug) {\n setSelectedCollection(collectionSlug)\n } else {\n setSelectedCollection(undefined)\n }\n }, [])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawerWhenRelationChanges.current = false\n openDrawer()\n }\n }, [openDrawer])\n\n useEffect(() => {\n if (!isDrawerOpen) {\n setCurrentDrawerID(undefined)\n }\n }, [isDrawerOpen])\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"none\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ' doc-drawer__toggler'}`}\n collections={config.collections}\n i18n={i18n}\n icon={isPolymorphic ? 'plus' : undefined}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <NoListResults\n Actions={\n canCreate\n ? [\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n key=\"create\"\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />,\n ]\n : []\n }\n Message={\n <>\n <h3>{i18n.t('general:noResultsFound')}</h3>\n <p>\n {i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n </>\n }\n />\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink currentDrawerID={currentDrawerID} onDrawerOpen={onDrawerOpen} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer\n initialData={initialDrawerData}\n onDelete={onDrawerDelete}\n onSave={onDrawerSave}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ import { useTranslation } from '../../../../../providers/Translation/index.js';
10
10
  import { canUseDOM } from '../../../../../utilities/canUseDOM.js';
11
11
  import { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js';
12
12
  import { Button } from '../../../../Button/index.js';
13
- import { useHierarchyDrawer } from '../../../../HierarchyDrawer/index.js';
13
+ import { useHierarchyDrawer } from '../../../../Hierarchy/Drawer/useHierarchyDrawer.js';
14
14
  import { useListRelationships } from '../../../RelationshipProvider/index.js';
15
15
  import './index.scss';
16
16
  const baseClass = 'hierarchy-cell';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","useIntersect","FolderIcon","TagIcon","useConfig","useTranslation","canUseDOM","formatDocTitle","Button","useHierarchyDrawer","useListRelationships","baseClass","HierarchyCell","cellData","cellDataFromProps","collectionSlug","customCellProps","field","rowData","relationTo","undefined","hasMany","config","getEntityConfig","intersectionRef","entry","values","setValues","documents","getRelationships","hasRequestedRef","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","hierarchyCollectionSlug","hierarchyCollectionConfig","hierarchyConfig","hierarchy","preRenderedIcon","hierarchyIcon","fallbackIcon","IconComponent","allowHasMany","_jsx","color","HierarchyDrawer","openDrawer","current","formattedValues","arrayCellData","Array","isArray","forEach","cell","push","value","initialSelections","data","map","item","handleSave","closeDrawer","selections","selectedIds","from","keys","newValue","response","fetch","serverURL","routes","api","id","body","JSON","stringify","name","credentials","headers","method","ok","newValues","length","_error","labels","rel","document","relatedCollection","collectionConfig","dateFormat","admin","fallback","displayText","join","isLoading","some","_jsxs","className","ref","buttonStyle","icon","iconPosition","margin","onClick","size","onSave"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Hierarchy/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, RelationshipFieldClient } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { SelectionWithPath } from '../../../../HierarchyDrawer/types.js'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { FolderIcon } from '../../../../../icons/Folder/index.js'\nimport { TagIcon } from '../../../../../icons/Tag/index.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { Button } from '../../../../Button/index.js'\nimport { useHierarchyDrawer } from '../../../../HierarchyDrawer/index.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'hierarchy-cell'\n\nexport type HierarchyCellProps = DefaultCellComponentProps<RelationshipFieldClient>\n\nexport const HierarchyCell: React.FC<HierarchyCellProps> = ({\n cellData: cellDataFromProps,\n collectionSlug,\n customCellProps,\n field,\n rowData,\n}) => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n const hasMany = field.hasMany ?? false\n\n const { config, getEntityConfig } = useConfig()\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const hasRequestedRef = useRef(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n // Get the hierarchy collection config\n const hierarchyCollectionSlug = typeof relationTo === 'string' ? relationTo : undefined\n const hierarchyCollectionConfig = hierarchyCollectionSlug\n ? getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n : undefined\n\n // Use pre-rendered icon from server if available, otherwise determine on client\n const hierarchyConfig =\n hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object'\n ? hierarchyCollectionConfig.hierarchy\n : undefined\n\n // Pre-rendered icon from server (supports custom icons)\n const preRenderedIcon = customCellProps?.hierarchyIcon as React.ReactNode | undefined\n\n // Fallback icon for client-side rendering\n const fallbackIcon = useMemo(() => {\n if (preRenderedIcon) {\n return null // Don't need fallback if we have pre-rendered icon\n }\n // Default based on allowHasMany: false = folder-like, true = tag-like\n const IconComponent = hierarchyConfig?.allowHasMany === false ? FolderIcon : TagIcon\n return <IconComponent color=\"muted\" />\n }, [hierarchyConfig, preRenderedIcon])\n\n // Set up the hierarchy drawer\n const [HierarchyDrawer, , { openDrawer }] = useHierarchyDrawer({\n hierarchyCollectionSlug: hierarchyCollectionSlug || '',\n })\n\n // Fetch relationship data when visible\n useEffect(() => {\n if (\n (cellDataFromProps || typeof cellDataFromProps === 'number') &&\n isAboveViewport &&\n !hasRequestedRef.current &&\n typeof relationTo === 'string'\n ) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellDataFromProps)\n ? cellDataFromProps\n : [cellDataFromProps]\n\n arrayCellData.forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (typeof cell === 'number' || typeof cell === 'string') {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n\n getRelationships(formattedValues)\n hasRequestedRef.current = true\n setValues(formattedValues)\n }\n }, [cellDataFromProps, relationTo, isAboveViewport, getRelationships])\n\n // Reset when data changes\n useEffect(() => {\n hasRequestedRef.current = false\n }, [cellDataFromProps])\n\n // Get current selection IDs for the drawer\n const initialSelections = useMemo(() => {\n if (!cellDataFromProps) {\n return []\n }\n const data = Array.isArray(cellDataFromProps) ? cellDataFromProps : [cellDataFromProps]\n return data.map((item) => {\n if (typeof item === 'object' && 'value' in item) {\n return item.value\n }\n return item\n }) as (number | string)[]\n }, [cellDataFromProps])\n\n // Handle save from drawer\n const handleSave = useCallback(\n async ({\n closeDrawer,\n selections,\n }: {\n closeDrawer: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n // Get selected IDs\n const selectedIds = Array.from(selections.keys())\n const newValue = hasMany ? selectedIds : (selectedIds[0] ?? null)\n\n // Update the document via API\n try {\n const response = await fetch(\n `${config.serverURL}${config.routes.api}/${collectionSlug}/${rowData.id}`,\n {\n body: JSON.stringify({\n [field.name]: newValue,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n\n if (response.ok && typeof relationTo === 'string') {\n // Update local state with new selection to avoid page reload\n const newValues: Value[] = selectedIds.map((id) => ({\n relationTo,\n value: id,\n }))\n setValues(newValues)\n\n // Request the new relationship docs to update the display\n if (newValues.length > 0) {\n getRelationships(newValues)\n }\n }\n } catch (_error) {\n // swallow error and close drawer anyway, user can try again\n }\n\n closeDrawer()\n },\n [collectionSlug, config, field.name, hasMany, rowData, relationTo, getRelationships],\n )\n\n // Build display labels\n const labels = useMemo(() => {\n return values.map(({ relationTo: rel, value }) => {\n const document = documents[rel]?.[value]\n const relatedCollection = getEntityConfig({ collectionSlug: rel })\n\n return formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n })\n }, [values, documents, getEntityConfig, config.admin.dateFormat, t, i18n])\n\n const displayText = labels.length > 0 ? labels.join(', ') : t('general:none')\n const isLoading =\n values.length > 0 &&\n values.some(({ relationTo: rel, value }) => documents[rel]?.[value] === null)\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n <Button\n buttonStyle=\"subtle\"\n className={`${baseClass}__pill`}\n icon={preRenderedIcon || fallbackIcon}\n iconPosition=\"left\"\n margin={false}\n onClick={openDrawer}\n size=\"small\"\n >\n {isLoading ? `${t('general:loading')}...` : displayText}\n </Button>\n {hierarchyCollectionSlug && (\n <HierarchyDrawer\n hasMany={hasMany}\n initialSelections={initialSelections}\n onSave={handleSave}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","useIntersect","FolderIcon","TagIcon","useConfig","useTranslation","canUseDOM","formatDocTitle","Button","useHierarchyDrawer","useListRelationships","baseClass","HierarchyCell","cellData","cellDataFromProps","collectionSlug","customCellProps","field","rowData","relationTo","undefined","hasMany","config","getEntityConfig","intersectionRef","entry","values","setValues","documents","getRelationships","hasRequestedRef","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","hierarchyCollectionSlug","hierarchyCollectionConfig","hierarchyConfig","hierarchy","preRenderedIcon","hierarchyIcon","fallbackIcon","IconComponent","allowHasMany","_jsx","color","HierarchyDrawer","openDrawer","current","formattedValues","arrayCellData","Array","isArray","forEach","cell","push","value","initialSelections","data","map","item","handleSave","closeDrawer","selections","selectedIds","from","keys","newValue","response","fetch","serverURL","routes","api","id","body","JSON","stringify","name","credentials","headers","method","ok","newValues","length","_error","labels","rel","document","relatedCollection","collectionConfig","dateFormat","admin","fallback","displayText","join","isLoading","some","_jsxs","className","ref","buttonStyle","icon","iconPosition","margin","onClick","size","onSave"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Hierarchy/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, RelationshipFieldClient } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { SelectionWithPath } from '../../../../Hierarchy/Drawer/types.js'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { FolderIcon } from '../../../../../icons/Folder/index.js'\nimport { TagIcon } from '../../../../../icons/Tag/index.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { Button } from '../../../../Button/index.js'\nimport { useHierarchyDrawer } from '../../../../Hierarchy/Drawer/useHierarchyDrawer.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'hierarchy-cell'\n\nexport type HierarchyCellProps = DefaultCellComponentProps<RelationshipFieldClient>\n\nexport const HierarchyCell: React.FC<HierarchyCellProps> = ({\n cellData: cellDataFromProps,\n collectionSlug,\n customCellProps,\n field,\n rowData,\n}) => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n const hasMany = field.hasMany ?? false\n\n const { config, getEntityConfig } = useConfig()\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const hasRequestedRef = useRef(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n // Get the hierarchy collection config\n const hierarchyCollectionSlug = typeof relationTo === 'string' ? relationTo : undefined\n const hierarchyCollectionConfig = hierarchyCollectionSlug\n ? getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n : undefined\n\n // Use pre-rendered icon from server if available, otherwise determine on client\n const hierarchyConfig =\n hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object'\n ? hierarchyCollectionConfig.hierarchy\n : undefined\n\n // Pre-rendered icon from server (supports custom icons)\n const preRenderedIcon = customCellProps?.hierarchyIcon as React.ReactNode | undefined\n\n // Fallback icon for client-side rendering\n const fallbackIcon = useMemo(() => {\n if (preRenderedIcon) {\n return null // Don't need fallback if we have pre-rendered icon\n }\n // Default based on allowHasMany: false = folder-like, true = tag-like\n const IconComponent = hierarchyConfig?.allowHasMany === false ? FolderIcon : TagIcon\n return <IconComponent color=\"muted\" />\n }, [hierarchyConfig, preRenderedIcon])\n\n // Set up the hierarchy drawer\n const [HierarchyDrawer, , { openDrawer }] = useHierarchyDrawer({\n hierarchyCollectionSlug: hierarchyCollectionSlug || '',\n })\n\n // Fetch relationship data when visible\n useEffect(() => {\n if (\n (cellDataFromProps || typeof cellDataFromProps === 'number') &&\n isAboveViewport &&\n !hasRequestedRef.current &&\n typeof relationTo === 'string'\n ) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellDataFromProps)\n ? cellDataFromProps\n : [cellDataFromProps]\n\n arrayCellData.forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (typeof cell === 'number' || typeof cell === 'string') {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n\n getRelationships(formattedValues)\n hasRequestedRef.current = true\n setValues(formattedValues)\n }\n }, [cellDataFromProps, relationTo, isAboveViewport, getRelationships])\n\n // Reset when data changes\n useEffect(() => {\n hasRequestedRef.current = false\n }, [cellDataFromProps])\n\n // Get current selection IDs for the drawer\n const initialSelections = useMemo(() => {\n if (!cellDataFromProps) {\n return []\n }\n const data = Array.isArray(cellDataFromProps) ? cellDataFromProps : [cellDataFromProps]\n return data.map((item) => {\n if (typeof item === 'object' && 'value' in item) {\n return item.value\n }\n return item\n }) as (number | string)[]\n }, [cellDataFromProps])\n\n // Handle save from drawer\n const handleSave = useCallback(\n async ({\n closeDrawer,\n selections,\n }: {\n closeDrawer: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n // Get selected IDs\n const selectedIds = Array.from(selections.keys())\n const newValue = hasMany ? selectedIds : (selectedIds[0] ?? null)\n\n // Update the document via API\n try {\n const response = await fetch(\n `${config.serverURL}${config.routes.api}/${collectionSlug}/${rowData.id}`,\n {\n body: JSON.stringify({\n [field.name]: newValue,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n\n if (response.ok && typeof relationTo === 'string') {\n // Update local state with new selection to avoid page reload\n const newValues: Value[] = selectedIds.map((id) => ({\n relationTo,\n value: id,\n }))\n setValues(newValues)\n\n // Request the new relationship docs to update the display\n if (newValues.length > 0) {\n getRelationships(newValues)\n }\n }\n } catch (_error) {\n // swallow error and close drawer anyway, user can try again\n }\n\n closeDrawer()\n },\n [collectionSlug, config, field.name, hasMany, rowData, relationTo, getRelationships],\n )\n\n // Build display labels\n const labels = useMemo(() => {\n return values.map(({ relationTo: rel, value }) => {\n const document = documents[rel]?.[value]\n const relatedCollection = getEntityConfig({ collectionSlug: rel })\n\n return formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n })\n }, [values, documents, getEntityConfig, config.admin.dateFormat, t, i18n])\n\n const displayText = labels.length > 0 ? labels.join(', ') : t('general:none')\n const isLoading =\n values.length > 0 &&\n values.some(({ relationTo: rel, value }) => documents[rel]?.[value] === null)\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n <Button\n buttonStyle=\"subtle\"\n className={`${baseClass}__pill`}\n icon={preRenderedIcon || fallbackIcon}\n iconPosition=\"left\"\n margin={false}\n onClick={openDrawer}\n size=\"small\"\n >\n {isLoading ? `${t('general:loading')}...` : displayText}\n </Button>\n {hierarchyCollectionSlug && (\n <HierarchyDrawer\n hasMany={hasMany}\n initialSelections={initialSelections}\n onSave={handleSave}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,8 @@ export { useEffectEvent } from '../../hooks/useEffectEvent.js';
13
13
  export { FieldPathContext, useFieldPath } from '../../forms/RenderFields/context.js';
14
14
  export { useQueue } from '../../hooks/useQueue.js';
15
15
  export { useUseTitleField } from '../../hooks/useUseAsTitle.js';
16
+ export { SidebarTabsProvider, useSidebarTabs } from '../../providers/SidebarTabs/index.js';
17
+ export type { SidebarTabsContextType } from '../../providers/SidebarTabs/index.js';
16
18
  export { SortHeader } from '../../elements/SortHeader/index.js';
17
19
  export { SortRow } from '../../elements/SortRow/index.js';
18
20
  export { OrderableTable } from '../../elements/Table/OrderableTable.js';
@@ -46,7 +48,7 @@ export { AnimateHeight } from '../../elements/AnimateHeight/index.js';
46
48
  export { PillSelector, type SelectablePill } from '../../elements/PillSelector/index.js';
47
49
  export { Card } from '../../elements/Card/index.js';
48
50
  export { Collapsible, useCollapsible } from '../../elements/Collapsible/index.js';
49
- export { HierarchySidebarTab } from '../../elements/HierarchyTree/HierarchySidebarTab.js';
51
+ export { HierarchySidebarTab } from '../../elements/Hierarchy/Tree/HierarchySidebarTab.js';
50
52
  export { CopyLocaleData } from '../../elements/CopyLocaleData/index.js';
51
53
  export { CopyToClipboard } from '../../elements/CopyToClipboard/index.js';
52
54
  export { DeleteMany } from '../../elements/DeleteMany/index.js';
@@ -68,24 +70,17 @@ export { GenerateConfirmation } from '../../elements/GenerateConfirmation/index.
68
70
  export { Gutter } from '../../elements/Gutter/index.js';
69
71
  export { Hamburger } from '../../elements/Hamburger/index.js';
70
72
  export { HydrateAuthProvider } from '../../elements/HydrateAuthProvider/index.js';
71
- export { HydrateHierarchyProvider } from '../../elements/HydrateHierarchyProvider/index.js';
72
- export { Tree } from '../../elements/Tree/index.js';
73
- export { LoadMore } from '../../elements/Tree/LoadMore/index.js';
74
- export { TreeConnector } from '../../elements/Tree/TreeConnector.js';
75
- export { TreeFocusProvider, useTreeFocus } from '../../elements/Tree/TreeFocusContext.js';
76
- export { TreeNode } from '../../elements/Tree/TreeNode/index.js';
77
- export type { CachedChildren, TreeCache, TreeDocument, TreeInitialData, TreeNodeData, TreeNodeProps, TreeProps, } from '../../elements/Tree/types.js';
78
- export { useChildren } from '../../elements/Tree/useChildren.js';
73
+ export { HydrateHierarchyProvider } from '../../elements/Hierarchy/HydrateProvider/index.js';
79
74
  export { Locked } from '../../elements/Locked/index.js';
80
75
  export { ListControls } from '../../elements/ListControls/index.js';
81
76
  export { useListDrawer } from '../../elements/ListDrawer/index.js';
82
77
  export type { ListDrawerProps, ListTogglerProps, RenderListServerFnArgs, RenderListServerFnReturnType, UseListDrawer, } from '../../elements/ListDrawer/types.js';
83
- export { HierarchyButtonClient } from '../../elements/HierarchyButton/index.js';
84
- export type { HierarchyButtonClientProps } from '../../elements/HierarchyButton/index.js';
85
- export { HierarchyFieldClient } from '../../elements/HierarchyField/index.client.js';
86
- export type { HierarchyFieldClientProps } from '../../elements/HierarchyField/index.client.js';
87
- export { formatHierarchyDrawerSlug, HierarchyDrawerToggler, useHierarchyDrawer, } from '../../elements/HierarchyDrawer/index.js';
88
- export type { HierarchyDrawerProps, HierarchyDrawerTogglerProps, SelectionWithPath, UseHierarchyDrawer, UseHierarchyDrawerArgs, } from '../../elements/HierarchyDrawer/types.js';
78
+ export { HierarchyButtonClient } from '../../elements/Hierarchy/DocHeaderButton/index.js';
79
+ export type { HierarchyButtonClientProps } from '../../elements/Hierarchy/DocHeaderButton/index.js';
80
+ export { HierarchyFieldClient } from '../../elements/Hierarchy/Field/index.client.js';
81
+ export type { HierarchyFieldClientProps } from '../../elements/Hierarchy/Field/index.client.js';
82
+ export { formatHierarchyDrawerSlug, HierarchyDrawerToggler, useHierarchyDrawer, } from '../../elements/Hierarchy/Drawer/useHierarchyDrawer.js';
83
+ export type { HierarchyDrawerProps, HierarchyDrawerTogglerProps, SelectionWithPath, UseHierarchyDrawer, UseHierarchyDrawerArgs, } from '../../elements/Hierarchy/Drawer/types.js';
89
84
  export { ListSelection } from '../../views/List/ListSelection/index.js';
90
85
  export { CollectionListHeader as ListHeader } from '../../views/List/ListHeader/index.js';
91
86
  export { GroupByHeader } from '../../views/List/GroupByHeader/index.js';
@@ -237,6 +232,7 @@ export { DocumentIcon } from '../../icons/Document/index.js';
237
232
  export { MoveFolderIcon } from '../../icons/MoveFolder/index.js';
238
233
  export { GridViewIcon } from '../../icons/GridView/index.js';
239
234
  export { ListViewIcon } from '../../icons/ListView/index.js';
235
+ export { TableViewIcon } from '../../icons/TableView/index.js';
240
236
  export { Error as ErrorIcon } from '../../providers/ToastContainer/icons/Error.js';
241
237
  export { Info as InfoIcon } from '../../providers/ToastContainer/icons/Info.js';
242
238
  export { Success as SuccessIcon } from '../../providers/ToastContainer/icons/Success.js';