@payloadcms/ui 4.0.0-internal.af6aad0 → 4.0.0-internal.b8a92d2

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 (855) hide show
  1. package/dist/css/app.css +1 -0
  2. package/dist/css/colors.css +9 -8
  3. package/dist/css/forms.css +1 -0
  4. package/dist/css/preflight.css +1 -0
  5. package/dist/css/spacing.css +12 -0
  6. package/dist/css/typography.css +158 -14
  7. package/dist/elements/APIKeyInput/index.d.ts +2 -0
  8. package/dist/elements/APIKeyInput/index.d.ts.map +1 -1
  9. package/dist/elements/APIKeyInput/index.js +27 -29
  10. package/dist/elements/APIKeyInput/index.js.map +1 -1
  11. package/dist/elements/AddNewRelation/index.css +4 -0
  12. package/dist/elements/AddNewRelation/index.js +2 -2
  13. package/dist/elements/AddNewRelation/index.js.map +1 -1
  14. package/dist/elements/AppHeader/EditViewWidthSettings/index.css +5 -0
  15. package/dist/elements/AppHeader/EditViewWidthSettings/index.d.ts +4 -0
  16. package/dist/elements/AppHeader/EditViewWidthSettings/index.d.ts.map +1 -0
  17. package/dist/elements/AppHeader/EditViewWidthSettings/index.js +77 -0
  18. package/dist/elements/AppHeader/EditViewWidthSettings/index.js.map +1 -0
  19. package/dist/{icons/CollapseLayers → elements/AppHeader/SettingsMenu}/index.css +1 -1
  20. package/dist/elements/AppHeader/SettingsMenu/index.d.ts +4 -0
  21. package/dist/elements/AppHeader/SettingsMenu/index.d.ts.map +1 -0
  22. package/dist/elements/AppHeader/SettingsMenu/index.js +59 -0
  23. package/dist/elements/AppHeader/SettingsMenu/index.js.map +1 -0
  24. package/dist/elements/AppHeader/TypeSizeSettings/index.d.ts +3 -0
  25. package/dist/elements/AppHeader/TypeSizeSettings/index.d.ts.map +1 -0
  26. package/dist/elements/AppHeader/TypeSizeSettings/index.js +58 -0
  27. package/dist/elements/AppHeader/TypeSizeSettings/index.js.map +1 -0
  28. package/dist/elements/AppHeader/index.css +3 -4
  29. package/dist/elements/AppHeader/index.d.ts +8 -1
  30. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  31. package/dist/elements/AppHeader/index.js +16 -6
  32. package/dist/elements/AppHeader/index.js.map +1 -1
  33. package/dist/elements/Autosave/index.d.ts.map +1 -1
  34. package/dist/elements/Autosave/index.js +2 -3
  35. package/dist/elements/Autosave/index.js.map +1 -1
  36. package/dist/elements/Banner/index.css +4 -0
  37. package/dist/elements/Banner/index.d.ts.map +1 -1
  38. package/dist/elements/Banner/index.js +1 -0
  39. package/dist/elements/Banner/index.js.map +1 -1
  40. package/dist/elements/BulkUpload/ActionsBar/index.css +1 -0
  41. package/dist/elements/BulkUpload/AddingFilesView/index.css +2 -4
  42. package/dist/elements/BulkUpload/FileSidebar/index.css +1 -0
  43. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +1 -1
  44. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  45. package/dist/elements/BulkUpload/FormsManager/createFormData.js +7 -3
  46. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  47. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  48. package/dist/elements/BulkUpload/FormsManager/index.js +18 -12
  49. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  50. package/dist/elements/BulkUpload/index.css +2 -0
  51. package/dist/elements/Button/index.css +0 -23
  52. package/dist/elements/Button/types.d.ts +1 -1
  53. package/dist/elements/Button/types.d.ts.map +1 -1
  54. package/dist/elements/Button/types.js.map +1 -1
  55. package/dist/elements/Collapsible/index.css +1 -0
  56. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  57. package/dist/elements/CopyLocaleData/index.js +8 -9
  58. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  59. package/dist/elements/DatePicker/index.css +2 -0
  60. package/dist/elements/DefaultListViewTabs/index.css +0 -1
  61. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  62. package/dist/elements/DefaultListViewTabs/index.js +62 -84
  63. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  64. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  65. package/dist/elements/DeleteMany/index.js +2 -3
  66. package/dist/elements/DeleteMany/index.js.map +1 -1
  67. package/dist/elements/Dialog/index.css +1 -0
  68. package/dist/elements/DocumentControls/index.css +1 -0
  69. package/dist/elements/DocumentDrawer/types.d.ts +1 -1
  70. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  71. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  72. package/dist/elements/DocumentFields/index.css +2 -0
  73. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +1 -0
  74. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  75. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +3 -2
  76. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  77. package/dist/elements/DocumentHeader/Tabs/index.css +1 -0
  78. package/dist/elements/DocumentHeader/Tabs/index.d.ts +1 -0
  79. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  80. package/dist/elements/DocumentHeader/Tabs/index.js +5 -3
  81. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  82. package/dist/elements/DocumentHeader/index.css +1 -0
  83. package/dist/elements/DocumentHeader/index.d.ts +1 -0
  84. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  85. package/dist/elements/DocumentHeader/index.js +4 -2
  86. package/dist/elements/DocumentHeader/index.js.map +1 -1
  87. package/dist/elements/Drawer/types.d.ts +2 -2
  88. package/dist/elements/Drawer/types.d.ts.map +1 -1
  89. package/dist/elements/Drawer/types.js.map +1 -1
  90. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  91. package/dist/elements/DuplicateDocument/index.js +2 -3
  92. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  93. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  94. package/dist/elements/EditMany/DrawerContent.js +2 -3
  95. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  96. package/dist/elements/EditUpload/index.css +1 -1
  97. package/dist/elements/FieldDiffContainer/index.css +1 -0
  98. package/dist/elements/FieldDiffLabel/index.css +1 -0
  99. package/dist/elements/FileDetails/StaticFileDetails/index.css +2 -0
  100. package/dist/elements/HTMLDiff/index.css +1 -0
  101. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +4 -22
  102. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -1
  103. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +49 -68
  104. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  105. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +15 -100
  106. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  107. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +137 -97
  108. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  109. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +1 -1
  110. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  111. package/dist/elements/Hierarchy/ColumnBrowser/index.js +23 -51
  112. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  113. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +3 -26
  114. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  115. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  116. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  117. package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -6
  118. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  119. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +3 -1
  120. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -1
  121. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +36 -0
  122. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +13 -0
  123. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
  124. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +141 -0
  125. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
  126. package/dist/elements/Hierarchy/Field/index.client.d.ts +0 -5
  127. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  128. package/dist/elements/Hierarchy/Field/index.client.js +95 -120
  129. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  130. package/dist/elements/Hierarchy/Field/index.css +34 -3
  131. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +4 -18
  132. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  133. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +24 -88
  134. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  135. package/dist/elements/Hierarchy/Modal/index.css +53 -4
  136. package/dist/elements/Hierarchy/Modal/index.d.ts +2 -5
  137. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  138. package/dist/elements/Hierarchy/Modal/index.js +99 -136
  139. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  140. package/dist/elements/Hierarchy/Modal/types.d.ts +0 -15
  141. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  142. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  143. package/dist/elements/Hierarchy/MoveMany/index.d.ts +3 -7
  144. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  145. package/dist/elements/Hierarchy/MoveMany/index.js +171 -45
  146. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  147. package/dist/elements/Hierarchy/Search/index.css +9 -2
  148. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
  149. package/dist/elements/Hierarchy/Search/index.js +73 -6
  150. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  151. package/dist/elements/Hierarchy/Search/types.d.ts +6 -2
  152. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -1
  153. package/dist/elements/Hierarchy/Search/types.js.map +1 -1
  154. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  155. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +2 -3
  156. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  157. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +4 -0
  158. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  159. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +186 -101
  160. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  161. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  162. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +21 -1
  163. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  164. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +3 -3
  165. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +29 -59
  166. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +1 -1
  167. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  168. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +10 -54
  169. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  170. package/dist/elements/Hierarchy/Tree/index.css +9 -8
  171. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  172. package/dist/elements/Hierarchy/Tree/index.js +47 -29
  173. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  174. package/dist/elements/Hierarchy/Tree/types.d.ts +1 -9
  175. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -1
  176. package/dist/elements/Hierarchy/Tree/types.js.map +1 -1
  177. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  178. package/dist/elements/Hierarchy/Tree/useChildren.js +1 -11
  179. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  180. package/dist/elements/ItemsDrawer/index.css +3 -0
  181. package/dist/elements/ListControls/index.css +1 -0
  182. package/dist/elements/ListControls/index.d.ts.map +1 -1
  183. package/dist/elements/ListControls/index.js +7 -2
  184. package/dist/elements/ListControls/index.js.map +1 -1
  185. package/dist/elements/ListControls/types.d.ts +3 -5
  186. package/dist/elements/ListControls/types.d.ts.map +1 -1
  187. package/dist/elements/ListControls/types.js.map +1 -1
  188. package/dist/elements/ListControlsBar/index.css +1 -0
  189. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  190. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +3 -4
  191. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  192. package/dist/elements/LivePreview/Window/index.css +1 -0
  193. package/dist/elements/LivePreview/Window/index.js +1 -1
  194. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  195. package/dist/elements/Localizer/index.js +1 -1
  196. package/dist/elements/Localizer/index.js.map +1 -1
  197. package/dist/elements/Nav/NavSidebarToggle/index.js +1 -1
  198. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  199. package/dist/elements/Nav/NavWrapper/index.d.ts +0 -1
  200. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  201. package/dist/elements/Nav/NavWrapper/index.js +18 -12
  202. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  203. package/dist/elements/Nav/SidebarTabs/index.css +2 -1
  204. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +3 -2
  205. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  206. package/dist/elements/Nav/context.d.ts +1 -0
  207. package/dist/elements/Nav/context.d.ts.map +1 -1
  208. package/dist/elements/Nav/context.js +67 -92
  209. package/dist/elements/Nav/context.js.map +1 -1
  210. package/dist/elements/Nav/index.css +44 -47
  211. package/dist/elements/Nav/index.d.ts +0 -4
  212. package/dist/elements/Nav/index.d.ts.map +1 -1
  213. package/dist/elements/Nav/index.js +1 -16
  214. package/dist/elements/Nav/index.js.map +1 -1
  215. package/dist/elements/NavGroup/index.css +15 -29
  216. package/dist/elements/PageControls/index.css +1 -0
  217. package/dist/elements/PillSelector/index.css +1 -0
  218. package/dist/elements/Popup/PopupButtonList/index.css +16 -32
  219. package/dist/elements/Popup/index.css +0 -6
  220. package/dist/elements/Popup/index.d.ts +0 -10
  221. package/dist/elements/Popup/index.d.ts.map +1 -1
  222. package/dist/elements/Popup/index.js +5 -12
  223. package/dist/elements/Popup/index.js.map +1 -1
  224. package/dist/elements/PreviewSizes/index.css +2 -0
  225. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  226. package/dist/elements/PublishButton/ScheduleDrawer/index.js +8 -30
  227. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  228. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
  229. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
  230. package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
  231. package/dist/elements/PublishButton/index.css +1 -0
  232. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  233. package/dist/elements/PublishButton/index.js +16 -31
  234. package/dist/elements/PublishButton/index.js.map +1 -1
  235. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  236. package/dist/elements/PublishMany/DrawerContent.js +2 -3
  237. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  238. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
  239. package/dist/elements/QueryPresets/QueryPresetBar/index.js +14 -1
  240. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  241. package/dist/elements/QueryPresets/fields/Heading/index.css +1 -0
  242. package/dist/elements/ReactSelect/types.d.ts +0 -5
  243. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  244. package/dist/elements/ReactSelect/types.js.map +1 -1
  245. package/dist/elements/RenderTitle/index.css +1 -0
  246. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  247. package/dist/elements/RestoreMany/index.js +2 -3
  248. package/dist/elements/RestoreMany/index.js.map +1 -1
  249. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  250. package/dist/elements/SaveDraftButton/index.js +2 -3
  251. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  252. package/dist/elements/SelectAll/index.d.ts.map +1 -1
  253. package/dist/elements/SelectAll/index.js +2 -1
  254. package/dist/elements/SelectAll/index.js.map +1 -1
  255. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  256. package/dist/elements/SelectRow/index.js +2 -1
  257. package/dist/elements/SelectRow/index.js.map +1 -1
  258. package/dist/elements/SidebarRow/index.css +5 -1
  259. package/dist/elements/SidebarToggle/index.css +1 -3
  260. package/dist/elements/Status/index.d.ts.map +1 -1
  261. package/dist/elements/Status/index.js +2 -3
  262. package/dist/elements/Status/index.js.map +1 -1
  263. package/dist/elements/StepNav/index.d.ts.map +1 -1
  264. package/dist/elements/StepNav/index.js +10 -14
  265. package/dist/elements/StepNav/index.js.map +1 -1
  266. package/dist/elements/StepNav/types.d.ts +0 -6
  267. package/dist/elements/StepNav/types.d.ts.map +1 -1
  268. package/dist/elements/StepNav/types.js.map +1 -1
  269. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +7 -5
  270. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  271. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +3 -14
  272. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  273. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  274. package/dist/elements/Table/OrderableTable.js +2 -3
  275. package/dist/elements/Table/OrderableTable.js.map +1 -1
  276. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  277. package/dist/elements/Table/RelationshipProvider/index.js +2 -3
  278. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  279. package/dist/elements/Table/index.css +1 -0
  280. package/dist/elements/TableSection/index.css +1 -0
  281. package/dist/elements/Tabs/index.css +1 -0
  282. package/dist/elements/Thumbnail/index.css +1 -0
  283. package/dist/elements/TimezonePicker/index.css +1 -0
  284. package/dist/elements/Tooltip/index.css +7 -0
  285. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  286. package/dist/elements/UnpublishButton/index.js +3 -4
  287. package/dist/elements/UnpublishButton/index.js.map +1 -1
  288. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  289. package/dist/elements/UnpublishMany/DrawerContent.js +2 -3
  290. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  291. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
  292. package/dist/elements/UserMenu/LanguageMenu/index.js +39 -83
  293. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  294. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  295. package/dist/elements/UserMenu/SettingsMenu/index.js +21 -57
  296. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  297. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
  298. package/dist/elements/UserMenu/ThemeMenu/index.js +39 -83
  299. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  300. package/dist/elements/UserMenu/index.css +2 -32
  301. package/dist/elements/UserMenu/index.d.ts +0 -1
  302. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  303. package/dist/elements/UserMenu/index.js +51 -77
  304. package/dist/elements/UserMenu/index.js.map +1 -1
  305. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -1
  306. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  307. package/dist/elements/WhereBuilder/Condition/index.css +1 -0
  308. package/dist/elements/WhereBuilder/index.css +2 -0
  309. package/dist/exports/client/index.d.ts +2 -4
  310. package/dist/exports/client/index.d.ts.map +1 -1
  311. package/dist/exports/client/index.js +1 -1
  312. package/dist/exports/client/index.js.map +3 -3
  313. package/dist/exports/rsc/index.d.ts +2 -0
  314. package/dist/exports/rsc/index.d.ts.map +1 -1
  315. package/dist/exports/rsc/index.js +2 -0
  316. package/dist/exports/rsc/index.js.map +1 -1
  317. package/dist/fields/Array/index.css +1 -0
  318. package/dist/fields/Array/index.d.ts.map +1 -1
  319. package/dist/fields/Array/index.js +2 -3
  320. package/dist/fields/Array/index.js.map +1 -1
  321. package/dist/fields/Blocks/index.css +1 -0
  322. package/dist/fields/Blocks/index.d.ts.map +1 -1
  323. package/dist/fields/Blocks/index.js +2 -3
  324. package/dist/fields/Blocks/index.js.map +1 -1
  325. package/dist/fields/Checkbox/Input.d.ts +2 -2
  326. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  327. package/dist/fields/Checkbox/Input.js +152 -134
  328. package/dist/fields/Checkbox/Input.js.map +1 -1
  329. package/dist/fields/Checkbox/index.css +163 -168
  330. package/dist/fields/FieldDescription/index.css +5 -0
  331. package/dist/fields/FieldLabel/index.css +8 -27
  332. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  333. package/dist/fields/FieldLabel/index.js +4 -5
  334. package/dist/fields/FieldLabel/index.js.map +1 -1
  335. package/dist/fields/Group/index.css +1 -0
  336. package/dist/fields/RadioGroup/Radio/index.css +1 -0
  337. package/dist/fields/RadioGroup/index.css +1 -1
  338. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  339. package/dist/fields/Relationship/Input.js +8 -27
  340. package/dist/fields/Relationship/Input.js.map +1 -1
  341. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  342. package/dist/fields/Relationship/optionsReducer.js +0 -2
  343. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  344. package/dist/fields/Relationship/types.d.ts +0 -24
  345. package/dist/fields/Relationship/types.d.ts.map +1 -1
  346. package/dist/fields/Relationship/types.js.map +1 -1
  347. package/dist/fields/Row/index.css +2 -0
  348. package/dist/fields/Slug/index.d.ts.map +1 -1
  349. package/dist/fields/Slug/index.js +2 -3
  350. package/dist/fields/Slug/index.js.map +1 -1
  351. package/dist/fields/Tabs/index.css +1 -0
  352. package/dist/fields/Textarea/index.css +1 -1
  353. package/dist/fields/Upload/Input.d.ts.map +1 -1
  354. package/dist/fields/Upload/Input.js +2 -3
  355. package/dist/fields/Upload/Input.js.map +1 -1
  356. package/dist/fields/shared/index.d.ts +1 -1
  357. package/dist/fields/shared/index.d.ts.map +1 -1
  358. package/dist/fields/shared/index.js.map +1 -1
  359. package/dist/forms/Form/context.d.ts +3 -1
  360. package/dist/forms/Form/context.d.ts.map +1 -1
  361. package/dist/forms/Form/context.js +3 -1
  362. package/dist/forms/Form/context.js.map +1 -1
  363. package/dist/forms/Form/index.d.ts.map +1 -1
  364. package/dist/forms/Form/index.js +15 -7
  365. package/dist/forms/Form/index.js.map +1 -1
  366. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  367. package/dist/forms/NullifyField/index.js +2 -3
  368. package/dist/forms/NullifyField/index.js.map +1 -1
  369. package/dist/forms/RenderFields/index.css +1 -7
  370. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  371. package/dist/forms/fieldSchemasToFormState/renderField.js +3 -2
  372. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  373. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.d.ts +12 -0
  374. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.d.ts.map +1 -0
  375. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.js +42 -0
  376. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.js.map +1 -0
  377. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +8 -6
  378. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  379. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +22 -9
  380. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  381. package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
  382. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  383. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  384. package/dist/hooks/useControllableState.js +3 -3
  385. package/dist/hooks/useControllableState.js.map +1 -1
  386. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  387. package/dist/hooks/usePayloadAPI.js +2 -3
  388. package/dist/hooks/usePayloadAPI.js.map +1 -1
  389. package/dist/layouts/Root/index.d.ts.map +1 -1
  390. package/dist/layouts/Root/index.js +19 -5
  391. package/dist/layouts/Root/index.js.map +1 -1
  392. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  393. package/dist/providers/DocumentInfo/index.js +32 -22
  394. package/dist/providers/DocumentInfo/index.js.map +1 -1
  395. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  396. package/dist/providers/Hierarchy/index.js +24 -53
  397. package/dist/providers/Hierarchy/index.js.map +1 -1
  398. package/dist/providers/Hierarchy/types.d.ts +0 -2
  399. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  400. package/dist/providers/Hierarchy/types.js.map +1 -1
  401. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  402. package/dist/providers/LivePreview/index.js +13 -6
  403. package/dist/providers/LivePreview/index.js.map +1 -1
  404. package/dist/providers/Locale/index.d.ts +1 -5
  405. package/dist/providers/Locale/index.d.ts.map +1 -1
  406. package/dist/providers/Locale/index.js +61 -140
  407. package/dist/providers/Locale/index.js.map +1 -1
  408. package/dist/providers/Root/index.d.ts +4 -1
  409. package/dist/providers/Root/index.d.ts.map +1 -1
  410. package/dist/providers/Root/index.js +25 -16
  411. package/dist/providers/Root/index.js.map +1 -1
  412. package/dist/providers/Selection/index.d.ts.map +1 -1
  413. package/dist/providers/Selection/index.js +2 -3
  414. package/dist/providers/Selection/index.js.map +1 -1
  415. package/dist/providers/ServerFunctions/index.d.ts +5 -1
  416. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  417. package/dist/providers/ServerFunctions/index.js +15 -0
  418. package/dist/providers/ServerFunctions/index.js.map +1 -1
  419. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  420. package/dist/providers/TableColumns/buildColumnState/index.js +0 -1
  421. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  422. package/dist/providers/Theme/index.d.ts +17 -1
  423. package/dist/providers/Theme/index.d.ts.map +1 -1
  424. package/dist/providers/Theme/index.js +253 -81
  425. package/dist/providers/Theme/index.js.map +1 -1
  426. package/dist/providers/Theme/shared.d.ts +8 -0
  427. package/dist/providers/Theme/shared.d.ts.map +1 -1
  428. package/dist/providers/Theme/shared.js +6 -0
  429. package/dist/providers/Theme/shared.js.map +1 -1
  430. package/dist/styles.css +182 -23
  431. package/dist/templates/Default/Wrapper/index.css +3 -2
  432. package/dist/templates/Default/Wrapper/index.d.ts +0 -2
  433. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  434. package/dist/templates/Default/Wrapper/index.js +6 -12
  435. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  436. package/dist/templates/Default/index.css +2 -3
  437. package/dist/templates/Default/index.d.ts.map +1 -1
  438. package/dist/templates/Default/index.js +15 -17
  439. package/dist/templates/Default/index.js.map +1 -1
  440. package/dist/utilities/buildFormState.d.ts.map +1 -1
  441. package/dist/utilities/buildFormState.js +6 -2
  442. package/dist/utilities/buildFormState.js.map +1 -1
  443. package/dist/utilities/formatAbsoluteURL.d.ts +1 -1
  444. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  445. package/dist/utilities/formatAbsoluteURL.js +18 -8
  446. package/dist/utilities/formatAbsoluteURL.js.map +1 -1
  447. package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
  448. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  449. package/dist/utilities/getHasScheduledPublish.js +2 -5
  450. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  451. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  452. package/dist/utilities/handleAuthRedirect.js +4 -1
  453. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  454. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  455. package/dist/utilities/handleServerFunctions.js +4 -2
  456. package/dist/utilities/handleServerFunctions.js.map +1 -1
  457. package/dist/utilities/initReq.d.ts.map +1 -1
  458. package/dist/utilities/initReq.js +40 -5
  459. package/dist/utilities/initReq.js.map +1 -1
  460. package/dist/utilities/isAbsoluteURL.d.ts +3 -0
  461. package/dist/utilities/isAbsoluteURL.d.ts.map +1 -0
  462. package/dist/utilities/isAbsoluteURL.js +15 -0
  463. package/dist/utilities/isAbsoluteURL.js.map +1 -0
  464. package/dist/utilities/isHttpURL.d.ts +3 -0
  465. package/dist/utilities/isHttpURL.d.ts.map +1 -0
  466. package/dist/utilities/isHttpURL.js +12 -0
  467. package/dist/utilities/isHttpURL.js.map +1 -0
  468. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  469. package/dist/utilities/isPathMatchingRoute.js +7 -5
  470. package/dist/utilities/isPathMatchingRoute.js.map +1 -1
  471. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  472. package/dist/utilities/isPublicAdminRoute.js +9 -6
  473. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  474. package/dist/utilities/schedulePublishHandler.d.ts +8 -1
  475. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  476. package/dist/utilities/schedulePublishHandler.js +72 -5
  477. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  478. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  479. package/dist/utilities/serverFunctionRegistry.js +2 -1
  480. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  481. package/dist/utilities/slugify.d.ts.map +1 -1
  482. package/dist/utilities/slugify.js +2 -0
  483. package/dist/utilities/slugify.js.map +1 -1
  484. package/dist/views/API/index.client.d.ts.map +1 -1
  485. package/dist/views/API/index.client.js +2 -3
  486. package/dist/views/API/index.client.js.map +1 -1
  487. package/dist/views/API/index.css +1 -0
  488. package/dist/views/Account/index.d.ts +1 -1
  489. package/dist/views/Account/index.d.ts.map +1 -1
  490. package/dist/views/Account/index.js +8 -5
  491. package/dist/views/Account/index.js.map +1 -1
  492. package/dist/views/Dashboard/Default/ModularDashboard/index.css +2 -0
  493. package/dist/views/Dashboard/Default/ModularDashboard/index.d.ts.map +1 -1
  494. package/dist/views/Dashboard/Default/ModularDashboard/index.js +1 -0
  495. package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -1
  496. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.d.ts.map +1 -1
  497. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +3 -1
  498. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -1
  499. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.d.ts.map +1 -1
  500. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -0
  501. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  502. package/dist/views/Dashboard/index.d.ts.map +1 -1
  503. package/dist/views/Dashboard/index.js +2 -3
  504. package/dist/views/Dashboard/index.js.map +1 -1
  505. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  506. package/dist/views/Document/handleServerFunction.js +2 -0
  507. package/dist/views/Document/handleServerFunction.js.map +1 -1
  508. package/dist/views/Document/index.d.ts +1 -1
  509. package/dist/views/Document/index.d.ts.map +1 -1
  510. package/dist/views/Document/index.js +10 -6
  511. package/dist/views/Document/index.js.map +1 -1
  512. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  513. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  514. package/dist/views/Document/renderDocumentSlots.js +7 -4
  515. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  516. package/dist/views/Edit/Auth/APIKey.d.ts +1 -1
  517. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  518. package/dist/views/Edit/Auth/APIKey.js +233 -59
  519. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  520. package/dist/views/Edit/Auth/APIKeyGenerationModal.d.ts +12 -0
  521. package/dist/views/Edit/Auth/APIKeyGenerationModal.d.ts.map +1 -0
  522. package/dist/views/Edit/Auth/APIKeyGenerationModal.js +117 -0
  523. package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -0
  524. package/dist/views/Edit/Auth/index.css +91 -0
  525. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  526. package/dist/views/Edit/Auth/index.js +10 -28
  527. package/dist/views/Edit/Auth/index.js.map +1 -1
  528. package/dist/views/Edit/Auth/types.d.ts +3 -1
  529. package/dist/views/Edit/Auth/types.d.ts.map +1 -1
  530. package/dist/views/Edit/Auth/types.js.map +1 -1
  531. package/dist/views/Edit/index.css +44 -0
  532. package/dist/views/Edit/index.d.ts.map +1 -1
  533. package/dist/views/Edit/index.js +13 -0
  534. package/dist/views/Edit/index.js.map +1 -1
  535. package/dist/views/Edit/useEditViewWidth.d.ts +8 -0
  536. package/dist/views/Edit/useEditViewWidth.d.ts.map +1 -0
  537. package/dist/views/Edit/useEditViewWidth.js +56 -0
  538. package/dist/views/Edit/useEditViewWidth.js.map +1 -0
  539. package/dist/views/ForgotPassword/ForgotPasswordForm/index.css +14 -0
  540. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  541. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +209 -161
  542. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  543. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  544. package/dist/views/ForgotPassword/index.js +2 -11
  545. package/dist/views/ForgotPassword/index.js.map +1 -1
  546. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  547. package/dist/views/HierarchyList/DocumentListSelection/index.js +105 -100
  548. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  549. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +1 -6
  550. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
  551. package/dist/views/HierarchyList/HierarchyListHeader/index.js +8 -10
  552. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  553. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  554. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +10 -11
  555. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  556. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +1 -0
  557. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  558. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +6 -3
  559. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  560. package/dist/views/HierarchyList/HierarchyTable/index.css +0 -51
  561. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +1 -13
  562. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  563. package/dist/views/HierarchyList/HierarchyTable/index.js +38 -156
  564. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  565. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +0 -6
  566. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  567. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  568. package/dist/views/HierarchyList/index.css +1 -0
  569. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  570. package/dist/views/HierarchyList/index.js +20 -103
  571. package/dist/views/HierarchyList/index.js.map +1 -1
  572. package/dist/views/List/ListHeader/index.css +1 -0
  573. package/dist/views/List/ListHeader/index.d.ts +0 -1
  574. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  575. package/dist/views/List/ListHeader/index.js +2 -6
  576. package/dist/views/List/ListHeader/index.js.map +1 -1
  577. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  578. package/dist/views/List/ListSelection/index.js +122 -138
  579. package/dist/views/List/ListSelection/index.js.map +1 -1
  580. package/dist/views/List/handleHierarchy.d.ts +1 -6
  581. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  582. package/dist/views/List/handleHierarchy.js +3 -34
  583. package/dist/views/List/handleHierarchy.js.map +1 -1
  584. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  585. package/dist/views/List/handleServerFunction.js +3 -1
  586. package/dist/views/List/handleServerFunction.js.map +1 -1
  587. package/dist/views/List/index.client.d.ts.map +1 -1
  588. package/dist/views/List/index.client.js +6 -129
  589. package/dist/views/List/index.client.js.map +1 -1
  590. package/dist/views/List/index.css +2 -0
  591. package/dist/views/List/index.d.ts.map +1 -1
  592. package/dist/views/List/index.js +18 -28
  593. package/dist/views/List/index.js.map +1 -1
  594. package/dist/views/NotFound/client.d.ts +2 -0
  595. package/dist/views/NotFound/client.d.ts.map +1 -0
  596. package/dist/views/NotFound/client.js +4 -0
  597. package/dist/views/NotFound/client.js.map +1 -0
  598. package/dist/views/NotFound/page.d.ts.map +1 -1
  599. package/dist/views/NotFound/page.js +4 -3
  600. package/dist/views/NotFound/page.js.map +1 -1
  601. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  602. package/dist/views/Root/getRouteData.js +2 -8
  603. package/dist/views/Root/getRouteData.js.map +1 -1
  604. package/dist/views/Root/index.d.ts.map +1 -1
  605. package/dist/views/Root/index.js +31 -22
  606. package/dist/views/Root/index.js.map +1 -1
  607. package/dist/views/Verify/index.d.ts +1 -1
  608. package/dist/views/Verify/index.d.ts.map +1 -1
  609. package/dist/views/Verify/index.js +4 -4
  610. package/dist/views/Verify/index.js.map +1 -1
  611. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  612. package/dist/views/Version/Default/SetStepNav.js +10 -13
  613. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  614. package/dist/views/Version/Default/index.css +2 -0
  615. package/dist/views/Version/Default/index.d.ts.map +1 -1
  616. package/dist/views/Version/Default/index.js +12 -13
  617. package/dist/views/Version/Default/index.js.map +1 -1
  618. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts +1 -0
  619. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
  620. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +56 -50
  621. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  622. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  623. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +41 -27
  624. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  625. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.css +8 -0
  626. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  627. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +10 -0
  628. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  629. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +1 -0
  630. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +1 -0
  631. package/dist/views/Version/RenderFieldsToDiff/index.css +2 -0
  632. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  633. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +33 -1
  634. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  635. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +8 -2
  636. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
  637. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +17 -19
  638. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  639. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  640. package/dist/views/Version/Restore/index.js +9 -6
  641. package/dist/views/Version/Restore/index.js.map +1 -1
  642. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  643. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
  644. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  645. package/dist/views/Versions/VersionPillLabel/index.css +1 -0
  646. package/dist/views/Versions/index.css +1 -0
  647. package/dist/widgets/CollectionCards/index.client.js +1 -1
  648. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  649. package/dist/widgets/CollectionCards/index.css +43 -33
  650. package/dist/widgets/CollectionCards/index.js +1 -1
  651. package/dist/widgets/CollectionCards/index.js.map +1 -1
  652. package/dist/widgets/RecentlyViewed/DocumentActivity/index.css +193 -0
  653. package/dist/widgets/RecentlyViewed/DocumentActivity/index.d.ts +5 -0
  654. package/dist/widgets/RecentlyViewed/DocumentActivity/index.d.ts.map +1 -0
  655. package/dist/widgets/RecentlyViewed/DocumentActivity/index.js +225 -0
  656. package/dist/widgets/RecentlyViewed/DocumentActivity/index.js.map +1 -0
  657. package/dist/widgets/RecentlyViewed/DocumentItem/index.css +181 -0
  658. package/dist/widgets/RecentlyViewed/DocumentItem/index.d.ts +11 -0
  659. package/dist/widgets/RecentlyViewed/DocumentItem/index.d.ts.map +1 -0
  660. package/dist/widgets/RecentlyViewed/DocumentItem/index.js +104 -0
  661. package/dist/widgets/RecentlyViewed/DocumentItem/index.js.map +1 -0
  662. package/dist/widgets/RecentlyViewed/getDocumentThumbnail.d.ts +10 -0
  663. package/dist/widgets/RecentlyViewed/getDocumentThumbnail.d.ts.map +1 -0
  664. package/dist/widgets/RecentlyViewed/getDocumentThumbnail.js +85 -0
  665. package/dist/widgets/RecentlyViewed/getDocumentThumbnail.js.map +1 -0
  666. package/dist/widgets/RecentlyViewed/getDocumentWidgetData.d.ts +7 -0
  667. package/dist/widgets/RecentlyViewed/getDocumentWidgetData.d.ts.map +1 -0
  668. package/dist/widgets/RecentlyViewed/getDocumentWidgetData.js +206 -0
  669. package/dist/widgets/RecentlyViewed/getDocumentWidgetData.js.map +1 -0
  670. package/dist/widgets/RecentlyViewed/index.d.ts +3 -5
  671. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -1
  672. package/dist/widgets/RecentlyViewed/index.js +10 -140
  673. package/dist/widgets/RecentlyViewed/index.js.map +1 -1
  674. package/dist/widgets/RecentlyViewed/shared.d.ts +38 -0
  675. package/dist/widgets/RecentlyViewed/shared.d.ts.map +1 -0
  676. package/dist/widgets/RecentlyViewed/shared.js +70 -0
  677. package/dist/widgets/RecentlyViewed/shared.js.map +1 -0
  678. package/dist/widgets/UploadDropzone/index.client.d.ts +7 -0
  679. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -0
  680. package/dist/widgets/UploadDropzone/index.client.js +134 -0
  681. package/dist/widgets/UploadDropzone/index.client.js.map +1 -0
  682. package/dist/widgets/UploadDropzone/index.css +50 -0
  683. package/dist/widgets/UploadDropzone/index.d.ts +8 -0
  684. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -0
  685. package/dist/widgets/UploadDropzone/index.js +29 -0
  686. package/dist/widgets/UploadDropzone/index.js.map +1 -0
  687. package/dist/widgets/Welcome/index.css +13 -0
  688. package/dist/widgets/Welcome/index.d.ts +5 -0
  689. package/dist/widgets/Welcome/index.d.ts.map +1 -0
  690. package/dist/widgets/Welcome/index.js +26 -0
  691. package/dist/widgets/Welcome/index.js.map +1 -0
  692. package/dist/widgets/WidgetIcon/assets/images.svg +3 -0
  693. package/dist/widgets/WidgetIcon/assets/pin-solid.svg +3 -0
  694. package/dist/widgets/WidgetIcon/assets/pin.svg +3 -0
  695. package/dist/widgets/WidgetIcon/assets/table.svg +3 -0
  696. package/dist/widgets/WidgetIcon/index.css +23 -0
  697. package/dist/widgets/WidgetIcon/index.d.ts +6 -0
  698. package/dist/widgets/WidgetIcon/index.d.ts.map +1 -0
  699. package/dist/widgets/WidgetIcon/index.js +10 -0
  700. package/dist/widgets/WidgetIcon/index.js.map +1 -0
  701. package/package.json +11 -5
  702. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +0 -120
  703. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +0 -1
  704. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +0 -144
  705. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +0 -1
  706. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +0 -885
  707. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +0 -1
  708. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +0 -87
  709. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
  710. package/dist/elements/CommandPalette/buildActions.spec.js +0 -158
  711. package/dist/elements/CommandPalette/buildActions.spec.js.map +0 -1
  712. package/dist/elements/CommandPalette/highlightLabel.spec.js +0 -78
  713. package/dist/elements/CommandPalette/highlightLabel.spec.js.map +0 -1
  714. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +0 -143
  715. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +0 -1
  716. package/dist/elements/Hierarchy/CreateNewButton/index.css +0 -9
  717. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts +0 -9
  718. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts.map +0 -1
  719. package/dist/elements/Hierarchy/CreateNewButton/index.js +0 -111
  720. package/dist/elements/Hierarchy/CreateNewButton/index.js.map +0 -1
  721. package/dist/elements/Hierarchy/Modal/Footer/index.css +0 -45
  722. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +0 -28
  723. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +0 -1
  724. package/dist/elements/Hierarchy/Modal/Footer/index.js +0 -166
  725. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +0 -1
  726. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts +0 -22
  727. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts.map +0 -1
  728. package/dist/elements/Hierarchy/getFolderHierarchySlug.js +0 -17
  729. package/dist/elements/Hierarchy/getFolderHierarchySlug.js.map +0 -1
  730. package/dist/elements/Hierarchy/move/moveDocuments.d.ts +0 -34
  731. package/dist/elements/Hierarchy/move/moveDocuments.d.ts.map +0 -1
  732. package/dist/elements/Hierarchy/move/moveDocuments.js +0 -94
  733. package/dist/elements/Hierarchy/move/moveDocuments.js.map +0 -1
  734. package/dist/elements/SegmentedControl/index.css +0 -58
  735. package/dist/elements/SegmentedControl/index.d.ts +0 -19
  736. package/dist/elements/SegmentedControl/index.d.ts.map +0 -1
  737. package/dist/elements/SegmentedControl/index.js +0 -104
  738. package/dist/elements/SegmentedControl/index.js.map +0 -1
  739. package/dist/elements/StepNav/DropTarget/index.css +0 -20
  740. package/dist/elements/StepNav/DropTarget/index.d.ts +0 -16
  741. package/dist/elements/StepNav/DropTarget/index.d.ts.map +0 -1
  742. package/dist/elements/StepNav/DropTarget/index.js +0 -71
  743. package/dist/elements/StepNav/DropTarget/index.js.map +0 -1
  744. package/dist/elements/Toasts/fieldErrors.spec.js +0 -46
  745. package/dist/elements/Toasts/fieldErrors.spec.js.map +0 -1
  746. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts +0 -18
  747. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts.map +0 -1
  748. package/dist/elements/UserMenu/HoverSubmenuGroup.js +0 -38
  749. package/dist/elements/UserMenu/HoverSubmenuGroup.js.map +0 -1
  750. package/dist/elements/UserMenu/useHoverSubmenu.d.ts +0 -21
  751. package/dist/elements/UserMenu/useHoverSubmenu.d.ts.map +0 -1
  752. package/dist/elements/UserMenu/useHoverSubmenu.js +0 -260
  753. package/dist/elements/UserMenu/useHoverSubmenu.js.map +0 -1
  754. package/dist/elements/ViewModeToggle/index.d.ts +0 -8
  755. package/dist/elements/ViewModeToggle/index.d.ts.map +0 -1
  756. package/dist/elements/ViewModeToggle/index.js +0 -29
  757. package/dist/elements/ViewModeToggle/index.js.map +0 -1
  758. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.spec.js +0 -152
  759. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.spec.js.map +0 -1
  760. package/dist/elements/WhereBuilder/conditionValue.spec.js +0 -65
  761. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +0 -1
  762. package/dist/fields/Upload/Input.spec.js +0 -241
  763. package/dist/fields/Upload/Input.spec.js.map +0 -1
  764. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.d.ts +0 -2
  765. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.d.ts.map +0 -1
  766. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +0 -67
  767. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +0 -1
  768. package/dist/icons/CollapseLayers/index.d.ts +0 -7
  769. package/dist/icons/CollapseLayers/index.d.ts.map +0 -1
  770. package/dist/icons/CollapseLayers/index.js +0 -23
  771. package/dist/icons/CollapseLayers/index.js.map +0 -1
  772. package/dist/icons/Table/index.css +0 -5
  773. package/dist/icons/Table/index.d.ts +0 -7
  774. package/dist/icons/Table/index.d.ts.map +0 -1
  775. package/dist/icons/Table/index.js +0 -25
  776. package/dist/icons/Table/index.js.map +0 -1
  777. package/dist/layouts/Root/index.spec.js +0 -20
  778. package/dist/layouts/Root/index.spec.js.map +0 -1
  779. package/dist/providers/Auth/authSessionRequests.spec.js +0 -121
  780. package/dist/providers/Auth/authSessionRequests.spec.js.map +0 -1
  781. package/dist/providers/Auth/sessionActivity.spec.js +0 -44
  782. package/dist/providers/Auth/sessionActivity.spec.js.map +0 -1
  783. package/dist/providers/Auth/tabSessionSync/index.spec.js +0 -463
  784. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +0 -1
  785. package/dist/providers/Auth/useAuthSessionTimers.spec.js +0 -311
  786. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +0 -1
  787. package/dist/providers/HierarchyDnd/index.css +0 -51
  788. package/dist/providers/HierarchyDnd/index.d.ts +0 -21
  789. package/dist/providers/HierarchyDnd/index.d.ts.map +0 -1
  790. package/dist/providers/HierarchyDnd/index.js +0 -163
  791. package/dist/providers/HierarchyDnd/index.js.map +0 -1
  792. package/dist/providers/HierarchyDnd/types.d.ts +0 -56
  793. package/dist/providers/HierarchyDnd/types.d.ts.map +0 -1
  794. package/dist/providers/HierarchyDnd/types.js +0 -21
  795. package/dist/providers/HierarchyDnd/types.js.map +0 -1
  796. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +0 -44
  797. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +0 -1
  798. package/dist/providers/TableColumns/buildColumnState/index.spec.js +0 -40
  799. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +0 -1
  800. package/dist/utilities/appendCacheTag.spec.js +0 -34
  801. package/dist/utilities/appendCacheTag.spec.js.map +0 -1
  802. package/dist/utilities/formatMetadata.spec.js +0 -83
  803. package/dist/utilities/formatMetadata.spec.js.map +0 -1
  804. package/dist/utilities/fuzzyMatch.spec.js +0 -38
  805. package/dist/utilities/fuzzyMatch.spec.js.map +0 -1
  806. package/dist/utilities/isCustomAdminView.spec.js +0 -90
  807. package/dist/utilities/isCustomAdminView.spec.js.map +0 -1
  808. package/dist/utilities/isPathMatchingRoute.spec.js +0 -178
  809. package/dist/utilities/isPathMatchingRoute.spec.js.map +0 -1
  810. package/dist/utilities/normalizeRelationshipValue.spec.js +0 -373
  811. package/dist/utilities/normalizeRelationshipValue.spec.js.map +0 -1
  812. package/dist/utilities/recentlyViewed.spec.js +0 -92
  813. package/dist/utilities/recentlyViewed.spec.js.map +0 -1
  814. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.css +0 -216
  815. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts +0 -20
  816. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts.map +0 -1
  817. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js +0 -182
  818. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js.map +0 -1
  819. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.css +0 -38
  820. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts +0 -15
  821. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts.map +0 -1
  822. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js +0 -85
  823. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js.map +0 -1
  824. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.css +0 -98
  825. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts +0 -27
  826. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts.map +0 -1
  827. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js +0 -84
  828. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js.map +0 -1
  829. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts +0 -19
  830. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts.map +0 -1
  831. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js +0 -100
  832. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js.map +0 -1
  833. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts +0 -53
  834. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts.map +0 -1
  835. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js +0 -145
  836. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js.map +0 -1
  837. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts +0 -8
  838. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts.map +0 -1
  839. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js +0 -21
  840. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js.map +0 -1
  841. package/dist/views/HierarchyList/HierarchyCards/index.css +0 -115
  842. package/dist/views/HierarchyList/HierarchyCards/index.d.ts +0 -80
  843. package/dist/views/HierarchyList/HierarchyCards/index.d.ts.map +0 -1
  844. package/dist/views/HierarchyList/HierarchyCards/index.js +0 -457
  845. package/dist/views/HierarchyList/HierarchyCards/index.js.map +0 -1
  846. package/dist/views/Root/getCustomCollectionViewByRoute.spec.js +0 -168
  847. package/dist/views/Root/getCustomCollectionViewByRoute.spec.js.map +0 -1
  848. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +0 -861
  849. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +0 -1
  850. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +0 -47
  851. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +0 -1
  852. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +0 -135
  853. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +0 -1
  854. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +0 -100
  855. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useId","useMemo","useRef","CollapseLayersIcon","useConfig","useHierarchy","useRouter","useTranslation","Button","CreateDocumentButton","DelayedSpinner","LoadMore","TreeFocusProvider","useTreeFocus","TreeNode","useChildren","baseClass","ROOT_ANCESTOR_IDS","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","HierarchyTreeInner","baseFilter","collectionSlug","filterByCollections","icon","initialData","initialDataProp","initialExpandedNodes","initialExpandedNodesProp","onNodeClick","selectedNodeId","useAsTitleProp","focusedId","moveFocus","setFocusedId","router","i18n","t","getEntityConfig","createDrawerSlug","collapseAllForCollection","getExpandedNodesForCollection","getTreeDataForCollection","toggleNodeForCollection","typeFieldName","collectionConfig","hierarchyConfig","hierarchy","undefined","parentFieldName","treeLimit","admin","allPossibleTypeValues","relatedCollections","Object","keys","contextData","baseFilterKey","JSON","stringify","contextBaseFilterKey","contextSeededRef","lastInitialExpandedRef","current","expandedNodes","contextExpanded","size","Set","handleToggleNode","wasSeeded","length","initialSet","map","isCurrentlyExpanded","has","nodeId","handleCollapseAll","childrenCache","Map","prevBaseFilterKeyRef","clear","docs","docsByParent","parentId","parentKey","set","get","push","filterKey","slice","sort","join","cacheKey","parentMeta","loadedParents","loadedCount","children","hasMore","page","Math","ceil","totalDocs","treeRef","rootNodes","isLoading","loadMore","loadMoreFromHook","refresh","cache","enabled","limit","handleLoadMore","handleNodeClick","rootFocusableIds","node","firstRootFocusableId","lastRootFocusableId","handleTreeKeyDown","e","key","preventDefault","_jsx","className","collectionLabel","buttonStyle","collections","drawerSlug","label","labels","singular","onSave","isAllSelected","handleAllClick","_jsxs","onKeyDown","ref","role","tabIndex","filter","Boolean","onClick","plural","margin","tooltip","nodeIdStr","nodeTitle","ancestorIds","depth","dropParentFieldName","hasChildren","title","onSelect","onToggle","selected","currentCount","onLoadMore","HierarchyTree","props"],"sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useId, useMemo, useRef } from 'react'\n\nimport type { CachedChildren, HierarchyTreeProps, TreeDocument } from './types.js'\n\nimport { CollapseLayersIcon } from '../../../icons/CollapseLayers/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { CreateDocumentButton } from '../../CreateDocumentButton/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { LoadMore } from './LoadMore/index.js'\nimport { TreeFocusProvider, useTreeFocus } from './TreeFocusContext.js'\nimport { TreeNode } from './TreeNode/index.js'\nimport { useChildren } from './useChildren.js'\nimport './index.css'\n\nconst baseClass = 'tree'\n\n/** Root nodes have no ancestors; hoisted so the reference stays stable across renders. */\nconst ROOT_ANCESTOR_IDS: (number | string)[] = []\n\nconst getDocumentTitle = (doc: TreeDocument, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nconst HierarchyTreeInner: React.FC<HierarchyTreeProps> = ({\n baseFilter,\n collectionSlug,\n filterByCollections,\n icon,\n initialData: initialDataProp,\n initialExpandedNodes: initialExpandedNodesProp,\n onNodeClick,\n selectedNodeId,\n useAsTitle: useAsTitleProp,\n}) => {\n const { focusedId, moveFocus, setFocusedId } = useTreeFocus()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { getEntityConfig } = useConfig()\n const createDrawerSlug = `tree-create-${useId()}`\n\n const {\n collapseAllForCollection,\n getExpandedNodesForCollection,\n getTreeDataForCollection,\n toggleNodeForCollection,\n typeFieldName,\n } = useHierarchy()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const hierarchyConfig =\n collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle\n\n const allPossibleTypeValues = useMemo(\n () =>\n hierarchyConfig?.relatedCollections\n ? Object.keys(hierarchyConfig.relatedCollections)\n : undefined,\n [hierarchyConfig?.relatedCollections],\n )\n\n const contextData = getTreeDataForCollection(collectionSlug)\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n const contextBaseFilterKey = contextData?.baseFilter ? JSON.stringify(contextData.baseFilter) : ''\n const initialData =\n baseFilterKey === contextBaseFilterKey ? (contextData ?? initialDataProp) : initialDataProp\n // Tracks whether context has been seeded at least once since the last navigation.\n // Resets when initialExpandedNodesProp changes (new array reference = navigation).\n // Allows the memo to distinguish \"not yet seeded\" (fall back to prop) from\n // \"user collapsed all nodes\" (trust empty context).\n const contextSeededRef = useRef(false)\n const lastInitialExpandedRef = useRef(initialExpandedNodesProp)\n if (lastInitialExpandedRef.current !== initialExpandedNodesProp) {\n lastInitialExpandedRef.current = initialExpandedNodesProp\n contextSeededRef.current = false\n }\n\n const expandedNodes = useMemo(() => {\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (contextExpanded.size > 0) {\n contextSeededRef.current = true\n return contextExpanded\n }\n if (contextSeededRef.current) {\n // Context was seeded (had nodes since last navigation) — trust empty set as \"all collapsed\"\n return contextExpanded\n }\n return initialExpandedNodesProp ? new Set(initialExpandedNodesProp) : contextExpanded\n }, [collectionSlug, getExpandedNodesForCollection, initialExpandedNodesProp])\n\n const handleToggleNode = useCallback(\n ({ id }: { id: number | string }) => {\n // Mark context as seeded so the memo never falls back to the prop after this interaction.\n // Capture the previous value first — seeding is only needed on the very first interaction.\n const wasSeeded = contextSeededRef.current\n contextSeededRef.current = true\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (!wasSeeded && contextExpanded.size === 0 && initialExpandedNodesProp?.length) {\n // Context not yet seeded. Seed it with all initial nodes, applying the toggle correctly:\n // exclude the target if collapsing, include it if expanding.\n const initialSet = new Set(initialExpandedNodesProp.map(String))\n const isCurrentlyExpanded = initialSet.has(String(id))\n for (const nodeId of initialExpandedNodesProp) {\n if (!isCurrentlyExpanded || String(nodeId) !== String(id)) {\n toggleNodeForCollection(collectionSlug, nodeId)\n }\n }\n if (!isCurrentlyExpanded) {\n toggleNodeForCollection(collectionSlug, id)\n }\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [\n collectionSlug,\n getExpandedNodesForCollection,\n initialExpandedNodesProp,\n toggleNodeForCollection,\n ],\n )\n\n const handleCollapseAll = useCallback(() => {\n // Mark context as seeded so the expandedNodes memo trusts the now-empty context\n // rather than falling back to the server-provided initial nodes.\n contextSeededRef.current = true\n collapseAllForCollection(collectionSlug)\n }, [collapseAllForCollection, collectionSlug])\n\n // Pre-populate cache with initialData synchronously before first render\n const childrenCache = useRef<Map<string, CachedChildren>>(new Map())\n\n const prevBaseFilterKeyRef = useRef(baseFilterKey)\n if (prevBaseFilterKeyRef.current !== baseFilterKey) {\n prevBaseFilterKeyRef.current = baseFilterKey\n childrenCache.current.clear()\n }\n\n useMemo(() => {\n if (!initialData || initialData.docs.length === 0) {\n return\n }\n\n const docsByParent = new Map<string, TreeDocument[]>()\n for (const doc of initialData.docs) {\n const parentId = doc[parentFieldName] || 'null'\n const parentKey = String(parentId)\n if (!docsByParent.has(parentKey)) {\n docsByParent.set(parentKey, [])\n }\n docsByParent.get(parentKey).push(doc)\n }\n\n const filterKey = filterByCollections?.length\n ? filterByCollections.slice().sort().join(',')\n : ''\n for (const [parentKey, docs] of docsByParent) {\n const cacheKey = `${collectionSlug}-${parentKey}-${filterKey}-${baseFilterKey}`\n const parentMeta = initialData.loadedParents[parentKey]\n\n if (parentMeta) {\n const loadedCount = parentMeta.loadedCount ?? docs.length\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: parentMeta.hasMore,\n page: Math.ceil(loadedCount / treeLimit) || 1,\n totalDocs: parentMeta.totalDocs,\n })\n } else {\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: false,\n page: 1,\n totalDocs: docs.length,\n })\n }\n }\n }, [initialData, filterByCollections, parentFieldName, collectionSlug, treeLimit, baseFilterKey])\n\n const treeRef = useRef<HTMLDivElement>(null)\n\n const {\n children: rootNodes,\n hasMore,\n isLoading,\n loadMore: loadMoreFromHook,\n refresh,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache: childrenCache,\n collectionSlug,\n enabled: true,\n filterByCollections,\n initialData,\n limit: treeLimit,\n parentFieldName,\n parentId: 'null',\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = useCallback(async () => {\n await loadMoreFromHook()\n }, [loadMoreFromHook])\n\n const handleNodeClick = useCallback(\n ({ id }: { id: number | string }) => {\n onNodeClick?.({ id })\n },\n [onNodeClick],\n )\n\n const rootFocusableIds = useMemo(\n () => (rootNodes ? rootNodes.map((node) => `node-${String(node.id)}`) : []),\n [rootNodes],\n )\n\n const firstRootFocusableId = rootFocusableIds[0]\n const lastRootFocusableId = rootFocusableIds[rootFocusableIds.length - 1]\n\n const handleTreeKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === lastRootFocusableId\n ) {\n setFocusedId(firstRootFocusableId)\n return\n }\n\n moveFocus('down')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === firstRootFocusableId\n ) {\n setFocusedId(lastRootFocusableId)\n return\n }\n\n moveFocus('up')\n }\n },\n [firstRootFocusableId, focusedId, lastRootFocusableId, moveFocus, setFocusedId],\n )\n\n if (isLoading && !rootNodes) {\n return (\n <div className={baseClass}>\n <DelayedSpinner baseClass={baseClass} isLoading={true} />\n </div>\n )\n }\n\n if (!rootNodes || rootNodes.length === 0) {\n const collectionLabel = getEntityConfig({ collectionSlug })\n return (\n <div className={baseClass}>\n <CreateDocumentButton\n buttonStyle=\"primary\"\n collections={[{ collectionSlug }]}\n drawerSlug={createDrawerSlug}\n label={t('general:createNewLabel', {\n label: getTranslation(collectionLabel.labels.singular, i18n),\n })}\n onSave={async () => {\n await refresh()\n router.refresh()\n }}\n />\n </div>\n )\n }\n\n const isAllSelected = selectedNodeId === null\n const handleAllClick = () => onNodeClick?.({ id: null })\n\n return (\n <div\n className={baseClass}\n onKeyDown={handleTreeKeyDown}\n ref={treeRef}\n role=\"tree\"\n tabIndex={-1}\n >\n <div className={`${baseClass}__all-option-wrapper`}>\n <div\n aria-selected={isAllSelected}\n className={[\n `${baseClass}__all-option`,\n 'sidebar-row',\n isAllSelected && `${baseClass}__all-option--selected`,\n isAllSelected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleAllClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleAllClick()\n }\n }}\n role=\"treeitem\"\n tabIndex={0}\n >\n {Boolean(icon) && <span className=\"sidebar-row__icon\">{icon}</span>}\n <span className=\"sidebar-row__title\">\n {getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n)}\n </span>\n </div>\n {expandedNodes.size > 0 && (\n <Button\n aria-label={t('fields:collapseAll')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__collapse-all-button`}\n margin={false}\n onClick={handleCollapseAll}\n tooltip={t('fields:collapseAll')}\n >\n <CollapseLayersIcon />\n </Button>\n )}\n </div>\n {rootNodes.map((node) => {\n const nodeId: number | string = node.id\n const nodeIdStr = typeof nodeId === 'number' ? String(nodeId) : nodeId\n const nodeTitle = getDocumentTitle(node, useAsTitle)\n\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n ancestorIds={ROOT_ANCESTOR_IDS}\n baseFilter={baseFilter}\n cache={childrenCache}\n collectionSlug={collectionSlug}\n depth={0}\n dropParentFieldName={parentFieldName}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n key={nodeIdStr}\n limit={treeLimit}\n node={{ id: nodeId, hasChildren: true, title: nodeTitle }}\n onSelect={handleNodeClick}\n onToggle={handleToggleNode}\n parentFieldName={parentFieldName}\n selected={nodeIdStr === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n {hasMore && (\n <LoadMore\n currentCount={rootNodes.length}\n depth={0}\n id=\"load-more-root\"\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport const HierarchyTree: React.FC<HierarchyTreeProps> = (props) => {\n return (\n <TreeFocusProvider>\n <HierarchyTreeInner {...props} />\n </TreeFocusProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useId","useMemo","useRef","useState","PlusIcon","useAuth","useConfig","useHierarchy","useRouter","useTranslation","Button","CreateDocumentButton","DelayedSpinner","DocumentDrawer","LoadMore","TreeFocusProvider","useTreeFocus","TreeNode","useChildren","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","HierarchyTreeInner","baseFilter","collectionSlug","filterByCollections","icon","initialData","initialDataProp","initialExpandedNodes","initialExpandedNodesProp","onNodeClick","selectedNodeId","useAsTitleProp","focusedId","moveFocus","setFocusedId","router","i18n","t","permissions","getEntityConfig","closeModal","openModal","createDrawerSlug","isCreateDrawerOpen","setIsCreateDrawerOpen","getExpandedNodesForCollection","getTreeDataForCollection","toggleNodeForCollection","typeFieldName","collectionConfig","hierarchyConfig","hierarchy","undefined","parentFieldName","treeLimit","admin","canCreate","Boolean","collections","create","allPossibleTypeValues","relatedCollections","Object","keys","contextData","baseFilterKey","JSON","stringify","contextBaseFilterKey","contextSeededRef","lastInitialExpandedRef","current","expandedNodes","contextExpanded","size","Set","handleToggleNode","wasSeeded","length","initialSet","map","isCurrentlyExpanded","has","nodeId","childrenCache","Map","prevBaseFilterKeyRef","clear","docs","docsByParent","parentId","parentKey","set","get","push","filterKey","slice","sort","join","cacheKey","parentMeta","loadedParents","loadedCount","children","hasMore","page","Math","ceil","totalDocs","treeRef","rootNodes","isLoading","loadMore","loadMoreFromHook","refresh","cache","enabled","limit","handleLoadMore","handleNodeClick","rootFocusableIds","node","firstRootFocusableId","lastRootFocusableId","handleTreeKeyDown","e","key","preventDefault","_jsx","className","collectionLabel","buttonStyle","drawerSlug","label","labels","singular","onSave","isAllSelected","handleAllClick","_jsxs","onKeyDown","ref","role","tabIndex","filter","onClick","plural","_Fragment","margin","redirectAfterCreate","nodeIdStr","nodeTitle","depth","hasChildren","title","onSelect","onToggle","selected","currentCount","onLoadMore","HierarchyTree","props"],"sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useId, useMemo, useRef, useState } from 'react'\n\nimport type { CachedChildren, HierarchyTreeProps, TreeDocument } from './types.js'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { CreateDocumentButton } from '../../CreateDocumentButton/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { DocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { LoadMore } from './LoadMore/index.js'\nimport { TreeFocusProvider, useTreeFocus } from './TreeFocusContext.js'\nimport { TreeNode } from './TreeNode/index.js'\nimport { useChildren } from './useChildren.js'\nimport './index.css'\n\nconst baseClass = 'tree'\n\nconst getDocumentTitle = (doc: TreeDocument, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nconst HierarchyTreeInner: React.FC<HierarchyTreeProps> = ({\n baseFilter,\n collectionSlug,\n filterByCollections,\n icon,\n initialData: initialDataProp,\n initialExpandedNodes: initialExpandedNodesProp,\n onNodeClick,\n selectedNodeId,\n useAsTitle: useAsTitleProp,\n}) => {\n const { focusedId, moveFocus, setFocusedId } = useTreeFocus()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { getEntityConfig } = useConfig()\n const { closeModal, openModal } = useModal()\n const createDrawerSlug = `tree-create-${useId()}`\n const [isCreateDrawerOpen, setIsCreateDrawerOpen] = useState(false)\n\n const {\n getExpandedNodesForCollection,\n getTreeDataForCollection,\n toggleNodeForCollection,\n typeFieldName,\n } = useHierarchy()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const hierarchyConfig =\n collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle\n const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create)\n\n const allPossibleTypeValues = useMemo(\n () =>\n hierarchyConfig?.relatedCollections\n ? Object.keys(hierarchyConfig.relatedCollections)\n : undefined,\n [hierarchyConfig?.relatedCollections],\n )\n\n const contextData = getTreeDataForCollection(collectionSlug)\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n const contextBaseFilterKey = contextData?.baseFilter ? JSON.stringify(contextData.baseFilter) : ''\n const initialData =\n baseFilterKey === contextBaseFilterKey ? (contextData ?? initialDataProp) : initialDataProp\n // Tracks whether context has been seeded at least once since the last navigation.\n // Resets when initialExpandedNodesProp changes (new array reference = navigation).\n // Allows the memo to distinguish \"not yet seeded\" (fall back to prop) from\n // \"user collapsed all nodes\" (trust empty context).\n const contextSeededRef = useRef(false)\n const lastInitialExpandedRef = useRef(initialExpandedNodesProp)\n if (lastInitialExpandedRef.current !== initialExpandedNodesProp) {\n lastInitialExpandedRef.current = initialExpandedNodesProp\n contextSeededRef.current = false\n }\n\n const expandedNodes = useMemo(() => {\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (contextExpanded.size > 0) {\n contextSeededRef.current = true\n return contextExpanded\n }\n if (contextSeededRef.current) {\n // Context was seeded (had nodes since last navigation) — trust empty set as \"all collapsed\"\n return contextExpanded\n }\n return initialExpandedNodesProp ? new Set(initialExpandedNodesProp) : contextExpanded\n }, [collectionSlug, getExpandedNodesForCollection, initialExpandedNodesProp])\n\n const handleToggleNode = useCallback(\n ({ id }: { id: number | string }) => {\n // Mark context as seeded so the memo never falls back to the prop after this interaction.\n // Capture the previous value first — seeding is only needed on the very first interaction.\n const wasSeeded = contextSeededRef.current\n contextSeededRef.current = true\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (!wasSeeded && contextExpanded.size === 0 && initialExpandedNodesProp?.length) {\n // Context not yet seeded. Seed it with all initial nodes, applying the toggle correctly:\n // exclude the target if collapsing, include it if expanding.\n const initialSet = new Set(initialExpandedNodesProp.map(String))\n const isCurrentlyExpanded = initialSet.has(String(id))\n for (const nodeId of initialExpandedNodesProp) {\n if (!isCurrentlyExpanded || String(nodeId) !== String(id)) {\n toggleNodeForCollection(collectionSlug, nodeId)\n }\n }\n if (!isCurrentlyExpanded) {\n toggleNodeForCollection(collectionSlug, id)\n }\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [\n collectionSlug,\n getExpandedNodesForCollection,\n initialExpandedNodesProp,\n toggleNodeForCollection,\n ],\n )\n\n // Pre-populate cache with initialData synchronously before first render\n const childrenCache = useRef<Map<string, CachedChildren>>(new Map())\n\n const prevBaseFilterKeyRef = useRef(baseFilterKey)\n if (prevBaseFilterKeyRef.current !== baseFilterKey) {\n prevBaseFilterKeyRef.current = baseFilterKey\n childrenCache.current.clear()\n }\n\n useMemo(() => {\n if (!initialData || initialData.docs.length === 0) {\n return\n }\n\n const docsByParent = new Map<string, TreeDocument[]>()\n for (const doc of initialData.docs) {\n const parentId = doc[parentFieldName] || 'null'\n const parentKey = String(parentId)\n if (!docsByParent.has(parentKey)) {\n docsByParent.set(parentKey, [])\n }\n docsByParent.get(parentKey).push(doc)\n }\n\n const filterKey = filterByCollections?.length\n ? filterByCollections.slice().sort().join(',')\n : ''\n for (const [parentKey, docs] of docsByParent) {\n const cacheKey = `${collectionSlug}-${parentKey}-${filterKey}-${baseFilterKey}`\n const parentMeta = initialData.loadedParents[parentKey]\n\n if (parentMeta) {\n const loadedCount = parentMeta.loadedCount ?? docs.length\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: parentMeta.hasMore,\n page: Math.ceil(loadedCount / treeLimit) || 1,\n totalDocs: parentMeta.totalDocs,\n })\n } else {\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: false,\n page: 1,\n totalDocs: docs.length,\n })\n }\n }\n }, [initialData, filterByCollections, parentFieldName, collectionSlug, treeLimit, baseFilterKey])\n\n const treeRef = useRef<HTMLDivElement>(null)\n\n const {\n children: rootNodes,\n hasMore,\n isLoading,\n loadMore: loadMoreFromHook,\n refresh,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache: childrenCache,\n collectionSlug,\n enabled: true,\n filterByCollections,\n initialData,\n limit: treeLimit,\n parentFieldName,\n parentId: 'null',\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = useCallback(async () => {\n await loadMoreFromHook()\n }, [loadMoreFromHook])\n\n const handleNodeClick = useCallback(\n ({ id }: { id: number | string }) => {\n onNodeClick?.({ id })\n },\n [onNodeClick],\n )\n\n const rootFocusableIds = useMemo(\n () => (rootNodes ? rootNodes.map((node) => `node-${String(node.id)}`) : []),\n [rootNodes],\n )\n\n const firstRootFocusableId = rootFocusableIds[0]\n const lastRootFocusableId = rootFocusableIds[rootFocusableIds.length - 1]\n\n const handleTreeKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === lastRootFocusableId\n ) {\n setFocusedId(firstRootFocusableId)\n return\n }\n\n moveFocus('down')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === firstRootFocusableId\n ) {\n setFocusedId(lastRootFocusableId)\n return\n }\n\n moveFocus('up')\n }\n },\n [firstRootFocusableId, focusedId, lastRootFocusableId, moveFocus, setFocusedId],\n )\n\n if (isLoading && !rootNodes) {\n return (\n <div className={baseClass}>\n <DelayedSpinner baseClass={baseClass} isLoading={true} />\n </div>\n )\n }\n\n if (!rootNodes || rootNodes.length === 0) {\n const collectionLabel = getEntityConfig({ collectionSlug })\n return (\n <div className={baseClass}>\n <CreateDocumentButton\n buttonStyle=\"primary\"\n collections={[{ collectionSlug }]}\n drawerSlug={createDrawerSlug}\n label={t('general:createNewLabel', {\n label: getTranslation(collectionLabel.labels.singular, i18n),\n })}\n onSave={async () => {\n await refresh()\n router.refresh()\n }}\n />\n </div>\n )\n }\n\n const isAllSelected = selectedNodeId === null\n const handleAllClick = () => onNodeClick?.({ id: null })\n\n return (\n <div\n className={baseClass}\n onKeyDown={handleTreeKeyDown}\n ref={treeRef}\n role=\"tree\"\n tabIndex={-1}\n >\n <div className={`${baseClass}__all-option-wrapper`}>\n <div\n aria-selected={isAllSelected}\n className={[\n `${baseClass}__all-option`,\n 'sidebar-row',\n isAllSelected && `${baseClass}__all-option--selected`,\n isAllSelected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleAllClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleAllClick()\n }\n }}\n role=\"treeitem\"\n tabIndex={0}\n >\n <span className=\"sidebar-row__title\">\n {t('general:all')}{' '}\n {getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n)}\n </span>\n </div>\n {canCreate && (\n <>\n <Button\n aria-label={t('general:createNew')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__create-button`}\n margin={false}\n onClick={() => {\n setIsCreateDrawerOpen(true)\n openModal(createDrawerSlug)\n }}\n >\n <PlusIcon size={24} />\n </Button>\n {isCreateDrawerOpen && (\n <DocumentDrawer\n collectionSlug={collectionSlug}\n drawerSlug={createDrawerSlug}\n initialData={parentFieldName ? { [parentFieldName]: null } : undefined}\n onSave={async () => {\n closeModal(createDrawerSlug)\n setIsCreateDrawerOpen(false)\n await refresh()\n router.refresh()\n }}\n redirectAfterCreate={false}\n />\n )}\n </>\n )}\n </div>\n {rootNodes.map((node) => {\n const nodeId: number | string = node.id\n const nodeIdStr = typeof nodeId === 'number' ? String(nodeId) : nodeId\n const nodeTitle = getDocumentTitle(node, useAsTitle)\n\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={childrenCache}\n collectionSlug={collectionSlug}\n depth={0}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={nodeIdStr}\n limit={treeLimit}\n node={{ id: nodeId, hasChildren: true, title: nodeTitle }}\n onSelect={handleNodeClick}\n onToggle={handleToggleNode}\n parentFieldName={parentFieldName}\n selected={nodeIdStr === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n {hasMore && (\n <LoadMore\n currentCount={rootNodes.length}\n depth={0}\n id=\"load-more-root\"\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport const HierarchyTree: React.FC<HierarchyTreeProps> = (props) => {\n return (\n <TreeFocusProvider>\n <HierarchyTreeInner {...props} />\n </TreeFocusProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -53,21 +53,13 @@ export type TreeInitialData = {
53
53
  };
54
54
  export type TreeNodeProps = {
55
55
  allPossibleTypeValues?: string[];
56
- /**
57
- * Ids of this node's ancestors, so a folder can't be dropped into its own subtree.
58
- */
59
- ancestorIds?: (number | string)[];
60
56
  baseFilter?: null | Where;
61
57
  cache: TreeCache;
62
58
  collectionSlug: string;
63
59
  depth: number;
64
- /**
65
- * Parent field name to set on documents dropped onto this node. Omit to make the tree inert as a
66
- * drop target.
67
- */
68
- dropParentFieldName?: string;
69
60
  expandedNodes: Set<number | string>;
70
61
  filterByCollections?: string[];
62
+ icon?: ReactNode;
71
63
  limit: number;
72
64
  node: TreeNodeData;
73
65
  onSelect?: ({ id }: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,GAAG,UAAU,CAAA;AAEd,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,IAAI,EAAE,iBAAiB,EAAE,CAAA;IAEzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7F,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,gHAAgH;IAChH,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,qHAAqH;IACrH,oBAAoB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC9D,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7F,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACnC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACpD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACnD,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/Tree/types.ts"],"sourcesContent":["import type { TypeWithID, Where } from 'payload'\nimport type { ReactNode, RefObject } from 'react'\n\nexport type HierarchyDocument = {\n [key: string]: unknown\n} & TypeWithID\n\nexport type HierarchyInitialData = {\n baseFilter?: null | Where\n docs: HierarchyDocument[]\n // Metadata about what was loaded - keyed by parent ID ('null' for root)\n loadedParents: Record<string, { hasMore: boolean; loadedCount?: number; totalDocs: number }>\n}\n\nexport type HierarchyTreeProps = {\n baseFilter?: null | Where\n collectionSlug: string\n filterByCollections?: string[]\n icon?: ReactNode\n /** Initial data for first render (before context hydration). After hydration, context data takes precedence. */\n initialData?: HierarchyInitialData | null\n /** Initial expanded nodes for first render (before context hydration). After hydration, context takes precedence. */\n initialExpandedNodes?: (number | string)[]\n onNodeClick?: ({ id }: { id: null | number | string }) => void\n selectedNodeId?: null | number | string\n useAsTitle?: string\n}\n\n// Tree primitive types (used by TreeNode, useChildren, HierarchyTree)\n\nexport type TreeDocument = {\n [key: string]: unknown\n id: number | string\n}\n\nexport type TreeNodeData = {\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type CachedChildren = {\n children: TreeDocument[]\n hasMore: boolean\n page: number\n totalDocs: number\n}\n\nexport type TreeCache = RefObject<Map<string, CachedChildren>>\n\nexport type TreeInitialData = {\n docs: TreeDocument[]\n loadedParents: Record<string, { hasMore: boolean; loadedCount?: number; totalDocs: number }>\n}\n\nexport type TreeNodeProps = {\n allPossibleTypeValues?: string[]\n /**\n * Ids of this node's ancestors, so a folder can't be dropped into its own subtree.\n */\n ancestorIds?: (number | string)[]\n baseFilter?: null | Where\n cache: TreeCache\n collectionSlug: string\n depth: number\n /**\n * Parent field name to set on documents dropped onto this node. Omit to make the tree inert as a\n * drop target.\n */\n dropParentFieldName?: string\n expandedNodes: Set<number | string>\n filterByCollections?: string[]\n limit: number\n node: TreeNodeData\n onSelect?: ({ id }: { id: number | string }) => void\n onToggle: ({ id }: { id: number | string }) => void\n parentFieldName: string\n selected?: boolean\n selectedNodeId?: number | string\n typeFieldName?: null | string\n useAsTitle?: string\n}\n"],"mappings":"AAuDA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/Tree/types.ts"],"sourcesContent":["import type { TypeWithID, Where } from 'payload'\nimport type { ReactNode, RefObject } from 'react'\n\nexport type HierarchyDocument = {\n [key: string]: unknown\n} & TypeWithID\n\nexport type HierarchyInitialData = {\n baseFilter?: null | Where\n docs: HierarchyDocument[]\n // Metadata about what was loaded - keyed by parent ID ('null' for root)\n loadedParents: Record<string, { hasMore: boolean; loadedCount?: number; totalDocs: number }>\n}\n\nexport type HierarchyTreeProps = {\n baseFilter?: null | Where\n collectionSlug: string\n filterByCollections?: string[]\n icon?: ReactNode\n /** Initial data for first render (before context hydration). After hydration, context data takes precedence. */\n initialData?: HierarchyInitialData | null\n /** Initial expanded nodes for first render (before context hydration). After hydration, context takes precedence. */\n initialExpandedNodes?: (number | string)[]\n onNodeClick?: ({ id }: { id: null | number | string }) => void\n selectedNodeId?: null | number | string\n useAsTitle?: string\n}\n\n// Tree primitive types (used by TreeNode, useChildren, HierarchyTree)\n\nexport type TreeDocument = {\n [key: string]: unknown\n id: number | string\n}\n\nexport type TreeNodeData = {\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type CachedChildren = {\n children: TreeDocument[]\n hasMore: boolean\n page: number\n totalDocs: number\n}\n\nexport type TreeCache = RefObject<Map<string, CachedChildren>>\n\nexport type TreeInitialData = {\n docs: TreeDocument[]\n loadedParents: Record<string, { hasMore: boolean; loadedCount?: number; totalDocs: number }>\n}\n\nexport type TreeNodeProps = {\n allPossibleTypeValues?: string[]\n baseFilter?: null | Where\n cache: TreeCache\n collectionSlug: string\n depth: number\n expandedNodes: Set<number | string>\n filterByCollections?: string[]\n icon?: ReactNode\n limit: number\n node: TreeNodeData\n onSelect?: ({ id }: { id: number | string }) => void\n onToggle: ({ id }: { id: number | string }) => void\n parentFieldName: string\n selected?: boolean\n selectedNodeId?: number | string\n typeFieldName?: null | string\n useAsTitle?: string\n}\n"],"mappings":"AAuDA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useChildren.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK1E,KAAK,eAAe,GAAG;IACrB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,eAAe,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,IAAI,GAAG,YAAY,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,kMAcrB,eAAe,KAAG,iBAmQpB,CAAA"}
1
+ {"version":3,"file":"useChildren.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK1E,KAAK,eAAe,GAAG;IACrB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,eAAe,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,IAAI,GAAG,YAAY,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,kMAcrB,eAAe,KAAG,iBAyPpB,CAAA"}
@@ -125,17 +125,7 @@ export const useChildren = ({
125
125
  // Client-side filter: only show items that are a superset of required collections
126
126
  // Server query uses ANY (due to PG limitations), but we want ALL (superset)
127
127
  const newDocs = filterByCollections?.length && typeFieldName ? allDocs.filter(doc => isSuperset(doc[typeFieldName], filterByCollections)) : allDocs;
128
- let newChildren;
129
- if (pageToFetch === 1) {
130
- newChildren = newDocs;
131
- } else {
132
- // Dedupe against already-loaded children: page-number math can drift from the
133
- // actual loaded count (e.g. after a cache merge), causing an overlapping page
134
- // to be re-fetched here.
135
- const existingIds = new Set((currentChildren || []).map(doc => doc.id));
136
- const dedupedNewDocs = newDocs.filter(doc => !existingIds.has(doc.id));
137
- newChildren = [...(currentChildren || []), ...dedupedNewDocs];
138
- }
128
+ const newChildren = pageToFetch === 1 ? newDocs : [...(currentChildren || []), ...newDocs];
139
129
  setChildren(newChildren);
140
130
  setTotalDocs(data.totalDocs || 0);
141
131
  setHasMore(data.hasNextPage || false);
@@ -1 +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","existingIds","Set","map","id","dedupedNewDocs","has","hasNextPage","set","emptyChildren","prevFilterKeyRef","load","currentCachedData","loadMore","shouldRefetchPage1","refresh","delete","effectiveChildren"],"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 let newChildren: TreeDocument[]\n if (pageToFetch === 1) {\n newChildren = newDocs\n } else {\n // Dedupe against already-loaded children: page-number math can drift from the\n // actual loaded count (e.g. after a cache merge), causing an overlapping page\n // to be re-fetched here.\n const existingIds = new Set((currentChildren || []).map((doc) => doc.id))\n const dedupedNewDocs = newDocs.filter((doc) => !existingIds.has(doc.id))\n newChildren = [...(currentChildren || []), ...dedupedNewDocs]\n }\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 // If state hasn't been loaded yet, read directly from cache as a synchronous fallback.\n // Tree's useMemo pre-populates the cache before child TreeNodes render, so this eliminates\n // the brief null-children flash that occurs when a node becomes expanded after context updates.\n const effectiveChildren = children ?? cache?.current.get(cacheKey)?.children ?? null\n\n return { children: effectiveChildren, hasMore, isLoading, load, loadMore, refresh, totalDocs }\n}\n"],"mappings":"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","ignoreList":[]}
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","effectiveChildren"],"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 // If state hasn't been loaded yet, read directly from cache as a synchronous fallback.\n // Tree's useMemo pre-populates the cache before child TreeNodes render, so this eliminates\n // the brief null-children flash that occurs when a node becomes expanded after context updates.\n const effectiveChildren = children ?? cache?.current.get(cacheKey)?.children ?? null\n\n return { children: effectiveChildren, hasMore, isLoading, load, loadMore, refresh, totalDocs }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -54,12 +54,14 @@
54
54
  }
55
55
  }
56
56
 
57
+ /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
57
58
  @media (max-width: 1440px) {
58
59
  .items-drawer__items {
59
60
  grid-template-columns: repeat(5, 1fr);
60
61
  }
61
62
  }
62
63
 
64
+ /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
63
65
  @media (max-width: 1024px) {
64
66
  .items-drawer__items-wrapper {
65
67
  padding-top: var(--spacer-2-5);
@@ -78,6 +80,7 @@
78
80
  }
79
81
  }
80
82
 
83
+ /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
81
84
  @media (max-width: 768px) {
82
85
  .items-drawer__items-wrapper {
83
86
  padding-top: var(--spacer-2-5);
@@ -39,6 +39,7 @@
39
39
  flex-shrink: 0;
40
40
  }
41
41
 
42
+ /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
42
43
  @media (max-width: 768px) {
43
44
  .list-controls__search-row {
44
45
  flex-wrap: wrap;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAanD,OAAO,aAAa,CAAA;AAIpB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4JpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAcnD,OAAO,aAAa,CAAA;AAIpB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkKpD,CAAA"}
@@ -12,6 +12,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
12
12
  import { Button } from '../Button/index.js';
13
13
  import { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js';
14
14
  import { ListGroupByButton } from '../ListGroupByButton/index.js';
15
+ import { ListEmptyTrashButton } from '../ListHeader/TitleActions/index.js';
15
16
  import { ListWhereBuilder } from '../ListWhereBuilder/index.js';
16
17
  import { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js';
17
18
  import { ListSearchFilter } from '../Search/ListSearchFilter/index.js';
@@ -33,6 +34,7 @@ export const ListControls = props => {
33
34
  enableFilters: t1,
34
35
  enableSort: t2,
35
36
  hasCreatePermission,
37
+ hasDeletePermission,
36
38
  isWhereOpen: isWhereOpenFromProps,
37
39
  listMenuItems,
38
40
  newDocumentURL,
@@ -41,7 +43,7 @@ export const ListControls = props => {
41
43
  queryPresetPermissions,
42
44
  renderedFilters,
43
45
  resolvedFilterOptions,
44
- viewModeToggle
46
+ viewType
45
47
  } = props;
46
48
  const enableColumns = t0 === undefined ? true : t0;
47
49
  const enableFilters = t1 === undefined ? true : t1;
@@ -158,7 +160,7 @@ export const ListControls = props => {
158
160
  onClick: () => setVisibleDrawer(visibleDrawer !== "sort" ? "sort" : undefined),
159
161
  size: "medium",
160
162
  children: t("general:sort")
161
- }), viewModeToggle, hasCreatePermission && newDocumentURL && _jsx(Button, {
163
+ }), hasCreatePermission && newDocumentURL && _jsx(Button, {
162
164
  buttonStyle: "primary",
163
165
  className: `${baseClass}__create-new`,
164
166
  el: "link",
@@ -166,6 +168,9 @@ export const ListControls = props => {
166
168
  size: "medium",
167
169
  to: newDocumentURL,
168
170
  children: t("general:createNew")
171
+ }), hasDeletePermission && collectionConfig.trash && viewType === "trash" && _jsx(ListEmptyTrashButton, {
172
+ collectionConfig,
173
+ hasDeletePermission
169
174
  }), listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && _jsx(Popup, {
170
175
  button: _jsx(Dots, {
171
176
  ariaLabel: t("general:moreOptions")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","React","Fragment","useEffect","useRef","useState","Popup","PopupList","ChevronIcon","Dots","useListQuery","useTranslation","Button","ListColumnSelectionButton","ListGroupByButton","ListWhereBuilder","QueryPresetBar","ListSearchFilter","baseClass","ListControls","props","$","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","t0","enableFilters","t1","enableSort","t2","hasCreatePermission","isWhereOpen","isWhereOpenFromProps","listMenuItems","newDocumentURL","onWhereToggle","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","viewModeToggle","undefined","isControlled","handleSearchChange","hasActiveFilters","query","t","breakpoints","t3","s","smallBreak","searchLabelTranslated","label","split","hasWhereParam","Boolean","where","visibleDrawer","setVisibleDrawer","t4","current","t5","t6","t7","handleWhereToggle","_jsxs","className","children","_jsx","onSearchChange","searchQueryParam","search","enableQueryPresets","buttonStyle","extraButtonProps","icon","direction","size","onClick","selected","slug","fields","el","id","to","Array","isArray","length","button","ariaLabel","horizontalAlign","verticalAlign","ButtonGroup","map","_temp","collectionPluralLabel","labels","plural","onEmptyRemove","item","i"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js'\nimport { ListGroupByButton } from '../ListGroupByButton/index.js'\nimport { ListWhereBuilder } from '../ListWhereBuilder/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { ListSearchFilter } from '../Search/ListSearchFilter/index.js'\nimport './index.css'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n hasCreatePermission,\n isWhereOpen: isWhereOpenFromProps,\n listMenuItems,\n newDocumentURL,\n onWhereToggle,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n viewModeToggle,\n } = props\n\n const isControlled = typeof onWhereToggle === 'function'\n\n const { handleSearchChange, hasActiveFilters, query } = useListQuery()\n\n const { t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n // Simplified placeholder - just \"Search\" instead of \"Search by X, Y, Z\"\n const searchLabelTranslated = t('general:searchBy', { label: '' }).split(' ')[0]\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n hasActiveFilters ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n const isWhereOpen = isControlled ? Boolean(isWhereOpenFromProps) : visibleDrawer === 'where'\n const handleWhereToggle = isControlled\n ? onWhereToggle\n : () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__search-row`}>\n <div className={`${baseClass}__left`}>\n <ListSearchFilter\n key={collectionSlug}\n label={searchLabelTranslated}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n </div>\n <div className={`${baseClass}__spacer`} />\n <div className={`${baseClass}__actions`}>\n {!smallBreak && beforeActions}\n {enableFilters && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-where`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-where`,\n 'aria-expanded': isWhereOpen,\n }}\n icon={<ChevronIcon direction={isWhereOpen ? 'up' : 'down'} size={16} />}\n id=\"toggle-list-filters\"\n onClick={handleWhereToggle}\n selected={isWhereOpen || hasActiveFilters}\n size=\"medium\"\n >\n {t('general:filters')}\n </Button>\n )}\n <ListGroupByButton\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig.fields}\n />\n {enableColumns && <ListColumnSelectionButton collectionSlug={collectionConfig.slug} />}\n {enableSort && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-sort`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-sort`,\n 'aria-expanded': visibleDrawer === 'sort',\n }}\n icon={<ChevronIcon size={16} />}\n id=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n size=\"medium\"\n >\n {t('general:sort')}\n </Button>\n )}\n {viewModeToggle}\n {hasCreatePermission && newDocumentURL && (\n <Button\n buttonStyle=\"primary\"\n className={`${baseClass}__create-new`}\n el=\"link\"\n id=\"create-new-doc\"\n size=\"medium\"\n to={newDocumentURL}\n >\n {t('general:createNew')}\n </Button>\n )}\n {listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n {!isControlled && isWhereOpen && (\n <div className={`${baseClass}__where`} id={`${baseClass}-where`}>\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setVisibleDrawer(undefined)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,aAAa,QAAQ;AAC9B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAI7D,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAC5B,SAASC,IAAI,QAAQ;AACrB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB;;;;;AAKA,OAAO,MAAMC,YAAA,GAA4CC,KAAA;EAAA,MAAAC,CAAA,GAAAtB,EAAA;EACvD;IAAAuB,aAAA;IAAAC,gBAAA;IAAAC,cAAA;IAAAC,mBAAA;IAAAC,aAAA,EAAAC,EAAA;IAAAC,aAAA,EAAAC,EAAA;IAAAC,UAAA,EAAAC,EAAA;IAAAC,mBAAA;IAAAC,WAAA,EAAAC,oBAAA;IAAAC,aAAA;IAAAC,cAAA;IAAAC,aAAA;IAAAC,WAAA,EAAAC,YAAA;IAAAC,sBAAA;IAAAC,eAAA;IAAAC,qBAAA;IAAAC;EAAA,IAkBIvB,KAAA;EAbF,MAAAM,aAAA,GAAAC,EAAoB,KAAAiB,SAAA,UAApBjB,EAAoB;EACpB,MAAAC,aAAA,GAAAC,EAAoB,KAAAe,SAAA,UAApBf,EAAoB;EACpB,MAAAC,UAAA,GAAAC,EAAkB,KAAAa,SAAA,WAAlBb,EAAkB;EAapB,MAAAc,YAAA,GAAqB,OAAOR,aAAA,KAAkB;EAE9C;IAAAS,kBAAA;IAAAC,gBAAA;IAAAC;EAAA,IAAwDtC,YAAA;EAExD;IAAAuC;EAAA,IAActC,cAAA;EAEd;IAAAuC,WAAA,EAAAC;EAAA,IAEInD,aAAA;EADW;IAAAoD,CAAA,EAAAC;EAAA,IAAAF,EAAiB;EAIhC,MAAAG,qBAAA,GAA8BL,CAAA,CAAE;IAAAM,KAAA,EAA6B;EAAA,CAAG,EAAAC,KAAA,CAAS,IAAI;EAE7E,MAAAC,aAAA,GAAsBrD,MAAA,CAAOsD,OAAA,CAAQV,KAAA,EAAAW,KAAO;EAE5C,OAAAC,aAAA,EAAAC,gBAAA,IAA0CxD,QAAA,CACxC0C,gBAAA,GAAmB,UAAAH,SAAU;EAAA,IAAAkB,EAAA;EAAA,IAAAzC,CAAA,QAAA2B,KAAA,EAAAW,KAAA;IAGrBG,EAAA,GAAAA,CAAA;MAAA,IACJL,aAAA,CAAAM,OAAA,KAA0Bf,KAAA,EAAAW,KAAO;QACnCF,aAAA,CAAAM,OAAA;MAAA;QAAA,IACSf,KAAA,EAAAW,KAAA;UACTF,aAAA,CAAAM,OAAA;QAAA;MAAA;IAAA;IAEJ1C,CAAA,MAAA2B,KAAA,EAAAW,KAAA;IAAAtC,CAAA,MAAAyC,EAAA;EAAA;IAAAA,EAAA,GAAAzC,CAAA;EAAA;EAAsB,MAAA2C,EAAA,GAAAhB,KAAA,EAAAW,KAAA;EAAO,IAAAM,EAAA;EAAA,IAAA5C,CAAA,QAAA2C,EAAA;IAA1BC,EAAA,IAACJ,gBAAA,EAAkBG,EAAO;IAAM3C,CAAA,MAAA2C,EAAA;IAAA3C,CAAA,MAAA4C,EAAA;EAAA;IAAAA,EAAA,GAAA5C,CAAA;EAAA;EANnClB,SAAA,CAAU2D,EAMV,EAAGG,EAAgC;EAEnC,MAAAhC,WAAA,GAAoBY,YAAA,GAAea,OAAA,CAAQxB,oBAAA,IAAwB0B,aAAA,KAAkB;EAAA,IAAAM,EAAA;EAAA,IAAA7C,CAAA,QAAAwB,YAAA,IAAAxB,CAAA,QAAAgB,aAAA,IAAAhB,CAAA,QAAAuC,aAAA;IAC3DM,EAAA,GAAArB,YAAA,GACtBR,aAAA,SACMwB,gBAAA,CAAiBD,aAAA,KAAkB,UAAU,UAAAhB,SAAU;IAAAvB,CAAA,MAAAwB,YAAA;IAAAxB,CAAA,MAAAgB,aAAA;IAAAhB,CAAA,MAAAuC,aAAA;IAAAvC,CAAA,MAAA6C,EAAA;EAAA;IAAAA,EAAA,GAAA7C,CAAA;EAAA;EAFjE,MAAA8C,iBAAA,GAA0BD,EAEuC;EAAA,OAG/DE,KAAA,CAAC;IAAAC,SAAA,EAAAnD,SAAA;IAAAoD,QAAA,GACCF,KAAA,CAAC;MAAAC,SAAA,EAAe,GAAAnD,SAAA,cAA0B;MAAAoD,QAAA,GACxCF,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAAnD,SAAA,QAAoB;QAAAoD,QAAA,GAClCC,IAAA,CAAAtD,gBAAA;UAAAsC,KAAA,EAESD,qBAAA;UAAAkB,cAAA,EACS1B,kBAAA;UAAA2B,gBAAA,EACEzB,KAAA,EAAA0B;QAAA,GAHblD,cAAA,GAKND,gBAAA,EAAAoD,kBAAA,KAAyClD,mBAAA,IACxC8C,IAAA,CAAAvD,cAAA;UAAAuB,YAAA;UAAAf,cAAA;UAAAgB;QAAA,C;UAOJ+B,IAAA,CAAC;QAAAF,SAAA,EAAe,GAAAnD,SAAA;MAAsB,C,GACtCkD,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAAnD,SAAA,WAAuB;QAAAoD,QAAA,GACpC,CAACjB,UAAA,IAAc/B,aAAA,EACfM,aAAA,IACC2C,IAAA,CAAA3D,MAAA;UAAAgE,WAAA,EACc;UAAAP,SAAA,EACD,GAAAnD,SAAA,gBAA4B;UAAA2D,gBAAA;YAAA,iBAEpB,GAAA3D,SAAA,QAAoB;YAAA,iBACpBe;UAAA;UAAA6C,IAAA,EAEbP,IAAA,CAAA/D,WAAA;YAAAuE,SAAA,EAAwB9C,WAAA,GAAc,OAAO;YAAA+C,IAAA;UAAA,C;cAChD;UAAAC,OAAA,EACMd,iBAAA;UAAAe,QAAA,EACCjD,WAAA,IAAec,gBAAA;UAAAiC,IAAA,EACpB;UAAAV,QAAA,EAEJrB,CAAA,CAAE;QAAA,C,GAGPsB,IAAA,CAAAzD,iBAAA;UAAAU,cAAA,EACkBD,gBAAA,CAAA4D,IAAA;UAAAC,MAAA,EACR7D,gBAAA,CAAA6D;QAAA,C,GAET1D,aAAA,IAAiB6C,IAAA,CAAA1D,yBAAA;UAAAW,cAAA,EAA2CD,gBAAA,CAAA4D;QAAA,C,GAC5DrD,UAAA,IACCyC,IAAA,CAAA3D,MAAA;UAAAgE,WAAA,EACc;UAAAP,SAAA,EACD,GAAAnD,SAAA,eAA2B;UAAA2D,gBAAA;YAAA,iBAEnB,GAAA3D,SAAA,OAAmB;YAAA,iBACnB0C,aAAA,KAAkB;UAAA;UAAAkB,IAAA,EAE/BP,IAAA,CAAA/D,WAAA;YAAAwE,IAAA;UAAA,C;cACH;UAAAC,OAAA,EAAAA,CAAA,KACYpB,gBAAA,CAAiBD,aAAA,KAAkB,SAAS,SAAAhB,SAAS;UAAAoC,IAAA,EAC/D;UAAAV,QAAA,EAEJrB,CAAA,CAAE;QAAA,C,GAGNN,cAAA,EACAX,mBAAA,IAAuBI,cAAA,IACtBmC,IAAA,CAAA3D,MAAA;UAAAgE,WAAA,EACc;UAAAP,SAAA,EACD,GAAAnD,SAAA,cAA0B;UAAAmE,EAAA,EAClC;UAAAC,EAAA,EACA;UAAAN,IAAA,EACE;UAAAO,EAAA,EACDnD,cAAA;UAAAkC,QAAA,EAEHrB,CAAA,CAAE;QAAA,C,GAGNd,aAAA,IAAiBqD,KAAA,CAAAC,OAAA,CAActD,aAAA,KAAkBA,aAAA,CAAAuD,MAAA,IAAuB,IACvEnB,IAAA,CAAAjE,KAAA;UAAAqF,MAAA,EACUpB,IAAA,CAAA9D,IAAA;YAAAmF,SAAA,EAAiB3C,CAAA,CAAE;UAAA,C;qBAChB,GAAA/B,SAAA,SAAqB;UAAA2E,eAAA,EAChB;UAAAP,EAAA,EACb;UAAAQ,aAAA,EACW;UAAAxB,QAAA,EAEdC,IAAA,CAAAhE,SAAA,CAAAwF,WAAA;YAAAzB,QAAA,EACGnC,aAAA,CAAA6D,GAAA,CAAAC,KACqC;UAAA,C;;;QAO/C,CAACpD,YAAA,IAAgBZ,WAAA,IAChBsC,IAAA,CAAC;MAAAF,SAAA,EAAe,GAAAnD,SAAA,SAAqB;MAAAoE,EAAA,EAAM,GAAApE,SAAA,QAAoB;MAAAoD,QAAA,EAC7DC,IAAA,CAAAxD,gBAAA;QAAAmF,qBAAA,EACyB3E,gBAAA,EAAA4E,MAAA,EAAAC,MAAA;QAAA5E,cAAA,EACPD,gBAAA,CAAA4D,IAAA;QAAAC,MAAA,EACR7D,gBAAA,EAAA6D,MAAA;QAAAiB,aAAA,EAAAA,CAAA,KACaxC,gBAAA,CAAAjB,SAAiB;QAAAH,eAAA;QAAAC;MAAA,C;;;CAQlD;AA5JyD,SAAAuD,MAAAK,IAAA,EAAAC,CAAA;EAAA,OAuIvChC,IAAA,CAAArE,QAAA;IAAAoE,QAAA,EAAuCgC;EAAA,GAAxB,kBAAkBC,CAAA,EAAG;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","React","Fragment","useEffect","useRef","useState","Popup","PopupList","ChevronIcon","Dots","useListQuery","useTranslation","Button","ListColumnSelectionButton","ListGroupByButton","ListEmptyTrashButton","ListWhereBuilder","QueryPresetBar","ListSearchFilter","baseClass","ListControls","props","$","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","t0","enableFilters","t1","enableSort","t2","hasCreatePermission","hasDeletePermission","isWhereOpen","isWhereOpenFromProps","listMenuItems","newDocumentURL","onWhereToggle","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","viewType","undefined","isControlled","handleSearchChange","hasActiveFilters","query","t","breakpoints","t3","s","smallBreak","searchLabelTranslated","label","split","hasWhereParam","Boolean","where","visibleDrawer","setVisibleDrawer","t4","current","t5","t6","t7","handleWhereToggle","_jsxs","className","children","_jsx","onSearchChange","searchQueryParam","search","enableQueryPresets","buttonStyle","extraButtonProps","icon","direction","size","onClick","selected","slug","fields","el","id","to","trash","Array","isArray","length","button","ariaLabel","horizontalAlign","verticalAlign","ButtonGroup","map","_temp","collectionPluralLabel","labels","plural","onEmptyRemove","item","i"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js'\nimport { ListGroupByButton } from '../ListGroupByButton/index.js'\nimport { ListEmptyTrashButton } from '../ListHeader/TitleActions/index.js'\nimport { ListWhereBuilder } from '../ListWhereBuilder/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { ListSearchFilter } from '../Search/ListSearchFilter/index.js'\nimport './index.css'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n hasCreatePermission,\n hasDeletePermission,\n isWhereOpen: isWhereOpenFromProps,\n listMenuItems,\n newDocumentURL,\n onWhereToggle,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n viewType,\n } = props\n\n const isControlled = typeof onWhereToggle === 'function'\n\n const { handleSearchChange, hasActiveFilters, query } = useListQuery()\n\n const { t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n // Simplified placeholder - just \"Search\" instead of \"Search by X, Y, Z\"\n const searchLabelTranslated = t('general:searchBy', { label: '' }).split(' ')[0]\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n hasActiveFilters ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n const isWhereOpen = isControlled ? Boolean(isWhereOpenFromProps) : visibleDrawer === 'where'\n const handleWhereToggle = isControlled\n ? onWhereToggle\n : () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__search-row`}>\n <div className={`${baseClass}__left`}>\n <ListSearchFilter\n key={collectionSlug}\n label={searchLabelTranslated}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n </div>\n <div className={`${baseClass}__spacer`} />\n <div className={`${baseClass}__actions`}>\n {!smallBreak && beforeActions}\n {enableFilters && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-where`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-where`,\n 'aria-expanded': isWhereOpen,\n }}\n icon={<ChevronIcon direction={isWhereOpen ? 'up' : 'down'} size={16} />}\n id=\"toggle-list-filters\"\n onClick={handleWhereToggle}\n selected={isWhereOpen || hasActiveFilters}\n size=\"medium\"\n >\n {t('general:filters')}\n </Button>\n )}\n <ListGroupByButton\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig.fields}\n />\n {enableColumns && <ListColumnSelectionButton collectionSlug={collectionConfig.slug} />}\n {enableSort && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-sort`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-sort`,\n 'aria-expanded': visibleDrawer === 'sort',\n }}\n icon={<ChevronIcon size={16} />}\n id=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n size=\"medium\"\n >\n {t('general:sort')}\n </Button>\n )}\n {hasCreatePermission && newDocumentURL && (\n <Button\n buttonStyle=\"primary\"\n className={`${baseClass}__create-new`}\n el=\"link\"\n id=\"create-new-doc\"\n size=\"medium\"\n to={newDocumentURL}\n >\n {t('general:createNew')}\n </Button>\n )}\n {hasDeletePermission && collectionConfig.trash && viewType === 'trash' && (\n <ListEmptyTrashButton\n collectionConfig={collectionConfig}\n hasDeletePermission={hasDeletePermission}\n />\n )}\n {listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n {!isControlled && isWhereOpen && (\n <div className={`${baseClass}__where`} id={`${baseClass}-where`}>\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setVisibleDrawer(undefined)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { ClientCollectionConfig, QueryPreset, ResolvedFilterOptions, SanitizedCollectionPermission, Where } from 'payload';
1
+ import type { ClientCollectionConfig, QueryPreset, ResolvedFilterOptions, SanitizedCollectionPermission, ViewTypes, Where } from 'payload';
2
2
  export type ListControlsProps = {
3
3
  readonly beforeActions?: React.ReactNode[];
4
4
  readonly collectionConfig: ClientCollectionConfig;
@@ -21,6 +21,7 @@ export type ListControlsProps = {
21
21
  readonly handleSortChange?: (sort: string) => void;
22
22
  readonly handleWhereChange?: (where: Where) => void;
23
23
  readonly hasCreatePermission?: boolean;
24
+ readonly hasDeletePermission?: boolean;
24
25
  readonly isWhereOpen?: boolean;
25
26
  readonly listMenuItems?: React.ReactNode[];
26
27
  readonly newDocumentURL?: string;
@@ -29,9 +30,6 @@ export type ListControlsProps = {
29
30
  readonly queryPresetPermissions?: SanitizedCollectionPermission;
30
31
  readonly renderedFilters?: Map<string, React.ReactNode>;
31
32
  readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>;
32
- /**
33
- * Renders a table/grid segmented control before the "Create new" button, e.g. `ViewModeToggle`.
34
- */
35
- readonly viewModeToggle?: React.ReactNode;
33
+ readonly viewType?: ViewTypes;
36
34
  };
37
35
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,6BAA6B,CAAA;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACnE;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,6BAA6B,CAAA;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ListControls/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n QueryPreset,\n ResolvedFilterOptions,\n SanitizedCollectionPermission,\n Where,\n} from 'payload'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkDelete?: boolean\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkEdit?: boolean\n readonly disableQueryPresets?: boolean\n readonly enableColumns?: boolean\n readonly enableFilters?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly hasCreatePermission?: boolean\n readonly isWhereOpen?: boolean\n readonly listMenuItems?: React.ReactNode[]\n readonly newDocumentURL?: string\n readonly onWhereToggle?: () => void\n readonly queryPreset?: QueryPreset\n readonly queryPresetPermissions?: SanitizedCollectionPermission\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n /**\n * Renders a table/grid segmented control before the \"Create new\" button, e.g. `ViewModeToggle`.\n */\n readonly viewModeToggle?: React.ReactNode\n}\n"],"mappings":"AAQA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ListControls/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n QueryPreset,\n ResolvedFilterOptions,\n SanitizedCollectionPermission,\n ViewTypes,\n Where,\n} from 'payload'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkDelete?: boolean\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkEdit?: boolean\n readonly disableQueryPresets?: boolean\n readonly enableColumns?: boolean\n readonly enableFilters?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly hasCreatePermission?: boolean\n readonly hasDeletePermission?: boolean\n readonly isWhereOpen?: boolean\n readonly listMenuItems?: React.ReactNode[]\n readonly newDocumentURL?: string\n readonly onWhereToggle?: () => void\n readonly queryPreset?: QueryPreset\n readonly queryPresetPermissions?: SanitizedCollectionPermission\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n readonly viewType?: ViewTypes\n}\n"],"mappings":"AASA","ignoreList":[]}
@@ -10,6 +10,7 @@
10
10
  border-bottom: var(--stroke-width-small) solid var(--color-border);
11
11
  }
12
12
 
13
+ /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
13
14
  @media (max-width: 768px) {
14
15
  .list-controls-bar {
15
16
  padding: var(--spacer-2-5) var(--spacer-3);
@@ -1 +1 @@
1
- {"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,mBAAmB,EAAE,OAAO,CAAA;CAC7B,qBA+KA"}
1
+ {"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,mBAAmB,EAAE,OAAO,CAAA;CAC7B,qBAgLA"}
@@ -25,9 +25,8 @@ export function ListEmptyTrashButton({
25
25
  i18n,
26
26
  t
27
27
  } = useTranslation();
28
- const {
29
- code: locale
30
- } = useLocale();
28
+ const currentLocale = useLocale();
29
+ const locale = currentLocale?.code;
31
30
  const {
32
31
  config
33
32
  } = useConfig();
@@ -132,7 +131,7 @@ export function ListEmptyTrashButton({
132
131
  "aria-label": t('general:emptyTrashLabel', {
133
132
  label: getTranslation(collectionConfig?.labels?.plural, i18n)
134
133
  }),
135
- buttonStyle: "pill",
134
+ buttonStyle: "secondary",
136
135
  disabled: trashCount === 0,
137
136
  id: "empty-trash-button",
138
137
  onClick: () => {