@payloadcms/ui 4.0.0-internal.e7d4ebc → 4.0.0-internal.f05c47f

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 (494) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +10 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +1 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +1 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +45 -32
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/Autosave/index.d.ts.map +1 -1
  15. package/dist/elements/Autosave/index.js +3 -0
  16. package/dist/elements/Autosave/index.js.map +1 -1
  17. package/dist/elements/BranchSelector/index.css +83 -0
  18. package/dist/elements/BranchSelector/index.d.ts +12 -0
  19. package/dist/elements/BranchSelector/index.d.ts.map +1 -0
  20. package/dist/elements/BranchSelector/index.js +160 -0
  21. package/dist/elements/BranchSelector/index.js.map +1 -0
  22. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  23. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  24. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
  26. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  27. package/dist/elements/Button/index.css +2 -2
  28. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  29. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  30. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  31. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  32. package/dist/elements/CodeEditor/index.css +0 -5
  33. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  34. package/dist/elements/ColumnSelection/Popup.js +3 -3
  35. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  36. package/dist/elements/Combobox/index.css +76 -23
  37. package/dist/elements/Combobox/index.d.ts +7 -0
  38. package/dist/elements/Combobox/index.d.ts.map +1 -1
  39. package/dist/elements/Combobox/index.js +58 -20
  40. package/dist/elements/Combobox/index.js.map +1 -1
  41. package/dist/elements/CommandPalette/index.css +0 -7
  42. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  43. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  44. package/dist/elements/CopyToClipboard/index.js +10 -8
  45. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  46. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  47. package/dist/elements/CreateDocumentButton/index.js +4 -1
  48. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  49. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  50. package/dist/elements/DatePicker/DatePicker.js +1 -0
  51. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  52. package/dist/elements/DatePicker/index.css +1 -1
  53. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  54. package/dist/elements/DeleteDocument/index.js +24 -2
  55. package/dist/elements/DeleteDocument/index.js.map +1 -1
  56. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  57. package/dist/elements/DeleteMany/index.js +4 -1
  58. package/dist/elements/DeleteMany/index.js.map +1 -1
  59. package/dist/elements/Drawer/index.css +10 -4
  60. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  61. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  62. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  63. package/dist/elements/DuplicateDocument/index.js +6 -1
  64. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  65. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  66. package/dist/elements/EditMany/DrawerContent.js +6 -3
  67. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  68. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  69. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  70. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  71. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  72. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  73. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  74. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  75. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  76. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  77. package/dist/elements/FileManager/index.js +1 -0
  78. package/dist/elements/FileManager/index.js.map +1 -1
  79. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  80. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  81. package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
  82. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  83. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  84. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
  85. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  86. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
  87. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  88. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
  89. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  90. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Modal/index.js +3 -0
  92. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  93. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  94. package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
  95. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  96. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  97. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
  98. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  99. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  100. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  101. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  102. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  103. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  104. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  105. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  106. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  107. package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
  108. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  109. package/dist/elements/IDLabel/index.css +6 -0
  110. package/dist/elements/IDLabel/index.d.ts +1 -1
  111. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  112. package/dist/elements/IDLabel/index.js +16 -21
  113. package/dist/elements/IDLabel/index.js.map +1 -1
  114. package/dist/elements/InputStepper/index.css +0 -1
  115. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  116. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  117. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  118. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  119. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  120. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
  121. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  122. package/dist/elements/Locked/index.css +0 -8
  123. package/dist/elements/Locked/index.d.ts.map +1 -1
  124. package/dist/elements/Locked/index.js +70 -64
  125. package/dist/elements/Locked/index.js.map +1 -1
  126. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  127. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  128. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  129. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  130. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  131. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  132. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  133. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  134. package/dist/elements/NavGroup/index.css +0 -1
  135. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  136. package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
  137. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  138. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  139. package/dist/elements/Popup/index.js +1 -1
  140. package/dist/elements/Popup/index.js.map +1 -1
  141. package/dist/elements/PreviewButton/index.d.ts +1 -2
  142. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  143. package/dist/elements/PreviewButton/index.js +11 -5
  144. package/dist/elements/PreviewButton/index.js.map +1 -1
  145. package/dist/elements/PreviewSizes/index.css +8 -9
  146. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  147. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  148. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  149. package/dist/elements/PublishButton/index.js +6 -2
  150. package/dist/elements/PublishButton/index.js.map +1 -1
  151. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  152. package/dist/elements/PublishMany/DrawerContent.js +4 -1
  153. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  154. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  155. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  156. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  157. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  158. package/dist/elements/ReactSelect/index.css +0 -3
  159. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  160. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  161. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  162. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  163. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  164. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  165. package/dist/elements/RelationshipTable/index.js +41 -5
  166. package/dist/elements/RelationshipTable/index.js.map +1 -1
  167. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  168. package/dist/elements/RestoreButton/index.js +4 -1
  169. package/dist/elements/RestoreButton/index.js.map +1 -1
  170. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  171. package/dist/elements/RestoreMany/index.js +3 -0
  172. package/dist/elements/RestoreMany/index.js.map +1 -1
  173. package/dist/elements/SelectRow/index.d.ts +4 -3
  174. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  175. package/dist/elements/SelectRow/index.js +10 -7
  176. package/dist/elements/SelectRow/index.js.map +1 -1
  177. package/dist/elements/SidebarToggle/index.css +0 -17
  178. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  179. package/dist/elements/SortColumn/index.js +42 -38
  180. package/dist/elements/SortColumn/index.js.map +1 -1
  181. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  182. package/dist/elements/SortHeader/index.js +29 -26
  183. package/dist/elements/SortHeader/index.js.map +1 -1
  184. package/dist/elements/StepNav/index.css +64 -14
  185. package/dist/elements/StepNav/index.d.ts.map +1 -1
  186. package/dist/elements/StepNav/index.js +145 -69
  187. package/dist/elements/StepNav/index.js.map +1 -1
  188. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  189. package/dist/elements/Table/DefaultCell/index.js +3 -11
  190. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  191. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  192. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  193. package/dist/elements/Table/OrderableRow.js +17 -1
  194. package/dist/elements/Table/OrderableRow.js.map +1 -1
  195. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  196. package/dist/elements/Table/OrderableTable.js +22 -3
  197. package/dist/elements/Table/OrderableTable.js.map +1 -1
  198. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  199. package/dist/elements/Table/RelationshipProvider/index.js +29 -23
  200. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  201. package/dist/elements/TableSection/index.css +0 -1
  202. package/dist/elements/Tooltip/index.css +15 -34
  203. package/dist/elements/Tooltip/index.d.ts +11 -3
  204. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  205. package/dist/elements/Tooltip/index.js +151 -85
  206. package/dist/elements/Tooltip/index.js.map +1 -1
  207. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  208. package/dist/elements/UnpublishButton/index.js +4 -1
  209. package/dist/elements/UnpublishButton/index.js.map +1 -1
  210. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  211. package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
  212. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  213. package/dist/elements/Upload/index.css +0 -5
  214. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  215. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
  216. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  217. package/dist/exports/client/index.d.ts +8 -1
  218. package/dist/exports/client/index.d.ts.map +1 -1
  219. package/dist/exports/client/index.js +1 -1
  220. package/dist/exports/client/index.js.map +3 -3
  221. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  222. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  223. package/dist/fields/Array/ArrayRow.js +2 -0
  224. package/dist/fields/Array/ArrayRow.js.map +1 -1
  225. package/dist/fields/Array/index.d.ts.map +1 -1
  226. package/dist/fields/Array/index.js +38 -10
  227. package/dist/fields/Array/index.js.map +1 -1
  228. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  229. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  230. package/dist/fields/Blocks/BlockRow.js +2 -0
  231. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  232. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  233. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  234. package/dist/fields/Blocks/RowActions.js +22 -19
  235. package/dist/fields/Blocks/RowActions.js.map +1 -1
  236. package/dist/fields/Blocks/index.d.ts.map +1 -1
  237. package/dist/fields/Blocks/index.js +38 -10
  238. package/dist/fields/Blocks/index.js.map +1 -1
  239. package/dist/fields/Checkbox/Input.d.ts +2 -0
  240. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  241. package/dist/fields/Checkbox/Input.js +32 -26
  242. package/dist/fields/Checkbox/Input.js.map +1 -1
  243. package/dist/fields/Checkbox/index.css +37 -73
  244. package/dist/fields/FieldError/index.css +0 -9
  245. package/dist/fields/FieldError/index.d.ts.map +1 -1
  246. package/dist/fields/FieldError/index.js +19 -9
  247. package/dist/fields/FieldError/index.js.map +1 -1
  248. package/dist/fields/Join/index.css +9 -0
  249. package/dist/fields/Join/index.d.ts.map +1 -1
  250. package/dist/fields/Join/index.js +13 -9
  251. package/dist/fields/Join/index.js.map +1 -1
  252. package/dist/fields/RadioGroup/index.css +0 -7
  253. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  254. package/dist/fields/Relationship/Input.js +37 -15
  255. package/dist/fields/Relationship/Input.js.map +1 -1
  256. package/dist/fields/Slug/index.css +0 -1
  257. package/dist/fields/Slug/index.d.ts.map +1 -1
  258. package/dist/fields/Slug/index.js +80 -125
  259. package/dist/fields/Slug/index.js.map +1 -1
  260. package/dist/fields/Upload/Input.d.ts.map +1 -1
  261. package/dist/fields/Upload/Input.js +4 -1
  262. package/dist/fields/Upload/Input.js.map +1 -1
  263. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  264. package/dist/forms/Form/fieldReducer.js +3 -1
  265. package/dist/forms/Form/fieldReducer.js.map +1 -1
  266. package/dist/forms/Form/index.d.ts.map +1 -1
  267. package/dist/forms/Form/index.js +9 -1
  268. package/dist/forms/Form/index.js.map +1 -1
  269. package/dist/forms/Form/types.d.ts +1 -1
  270. package/dist/forms/Form/types.d.ts.map +1 -1
  271. package/dist/forms/Form/types.js.map +1 -1
  272. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  273. package/dist/forms/WatchChildErrors/index.js +2 -2
  274. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  275. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  276. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  277. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  278. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  279. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  280. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  281. package/dist/hooks/usePayloadAPI.js +44 -40
  282. package/dist/hooks/usePayloadAPI.js.map +1 -1
  283. package/dist/icons/Edit/index.d.ts +0 -1
  284. package/dist/icons/Edit/index.d.ts.map +1 -1
  285. package/dist/icons/Edit/index.js +4 -4
  286. package/dist/icons/Edit/index.js.map +1 -1
  287. package/dist/layouts/Root/index.d.ts +1 -1
  288. package/dist/layouts/Root/index.d.ts.map +1 -1
  289. package/dist/layouts/Root/index.js +8 -2
  290. package/dist/layouts/Root/index.js.map +1 -1
  291. package/dist/providers/Actions/index.d.ts +1 -0
  292. package/dist/providers/Actions/index.d.ts.map +1 -1
  293. package/dist/providers/Actions/index.js +43 -11
  294. package/dist/providers/Actions/index.js.map +1 -1
  295. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  296. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  297. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  298. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  299. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  300. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  301. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  302. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  303. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  304. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  305. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  306. package/dist/providers/Auth/authSessionRequests.js +119 -0
  307. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  308. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  309. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  310. package/dist/providers/Auth/index.d.ts +2 -56
  311. package/dist/providers/Auth/index.d.ts.map +1 -1
  312. package/dist/providers/Auth/index.js +283 -135
  313. package/dist/providers/Auth/index.js.map +1 -1
  314. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  315. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  316. package/dist/providers/Auth/sessionActivity.js +49 -0
  317. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  318. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  319. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  320. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  321. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  322. package/dist/providers/Auth/sessionTiming.js +18 -0
  323. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  324. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  325. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  326. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  327. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  328. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  329. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  330. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  331. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  332. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  333. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  334. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  335. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  336. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  337. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  338. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  339. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  340. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  341. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  342. package/dist/providers/Auth/types.d.ts +65 -0
  343. package/dist/providers/Auth/types.d.ts.map +1 -0
  344. package/dist/providers/Auth/types.js +2 -0
  345. package/dist/providers/Auth/types.js.map +1 -0
  346. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  347. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  348. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  349. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  350. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  351. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  352. package/dist/providers/Branch/index.d.ts +62 -0
  353. package/dist/providers/Branch/index.d.ts.map +1 -0
  354. package/dist/providers/Branch/index.js +192 -0
  355. package/dist/providers/Branch/index.js.map +1 -0
  356. package/dist/providers/Branch/index.server.d.ts +14 -0
  357. package/dist/providers/Branch/index.server.d.ts.map +1 -0
  358. package/dist/providers/Branch/index.server.js +80 -0
  359. package/dist/providers/Branch/index.server.js.map +1 -0
  360. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  361. package/dist/providers/DocumentInfo/index.js +5 -1
  362. package/dist/providers/DocumentInfo/index.js.map +1 -1
  363. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  364. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  365. package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
  366. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  367. package/dist/providers/Embed/index.d.ts +24 -0
  368. package/dist/providers/Embed/index.d.ts.map +1 -0
  369. package/dist/providers/Embed/index.js +105 -0
  370. package/dist/providers/Embed/index.js.map +1 -0
  371. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  372. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  373. package/dist/providers/FormErrorHandler/index.js +6 -0
  374. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  375. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  376. package/dist/providers/Hierarchy/index.js +4 -1
  377. package/dist/providers/Hierarchy/index.js.map +1 -1
  378. package/dist/providers/Locale/index.d.ts.map +1 -1
  379. package/dist/providers/Locale/index.js +41 -36
  380. package/dist/providers/Locale/index.js.map +1 -1
  381. package/dist/providers/Root/index.d.ts +1 -0
  382. package/dist/providers/Root/index.d.ts.map +1 -1
  383. package/dist/providers/Root/index.js +37 -31
  384. package/dist/providers/Root/index.js.map +1 -1
  385. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  386. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  387. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  388. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  389. package/dist/providers/RouteTransition/index.d.ts +2 -0
  390. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  391. package/dist/providers/RouteTransition/index.js +42 -14
  392. package/dist/providers/RouteTransition/index.js.map +1 -1
  393. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  394. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  395. package/dist/providers/SidebarTabs/index.js.map +1 -1
  396. package/dist/providers/Theme/index.d.ts +3 -0
  397. package/dist/providers/Theme/index.d.ts.map +1 -1
  398. package/dist/providers/Theme/index.js +107 -95
  399. package/dist/providers/Theme/index.js.map +1 -1
  400. package/dist/styles.css +12 -10
  401. package/dist/templates/Default/index.d.ts +1 -0
  402. package/dist/templates/Default/index.d.ts.map +1 -1
  403. package/dist/templates/Default/index.js +45 -39
  404. package/dist/templates/Default/index.js.map +1 -1
  405. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  406. package/dist/utilities/combineFieldLabel.js +5 -1
  407. package/dist/utilities/combineFieldLabel.js.map +1 -1
  408. package/dist/utilities/generateFieldID.d.ts +1 -1
  409. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  410. package/dist/utilities/generateFieldID.js +2 -2
  411. package/dist/utilities/generateFieldID.js.map +1 -1
  412. package/dist/utilities/getRequestBranch.d.ts +18 -0
  413. package/dist/utilities/getRequestBranch.d.ts.map +1 -0
  414. package/dist/utilities/getRequestBranch.js +32 -0
  415. package/dist/utilities/getRequestBranch.js.map +1 -0
  416. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  417. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  418. package/dist/utilities/getRequestEmbed.js +10 -0
  419. package/dist/utilities/getRequestEmbed.js.map +1 -0
  420. package/dist/utilities/initReq.d.ts.map +1 -1
  421. package/dist/utilities/initReq.js +8 -0
  422. package/dist/utilities/initReq.js.map +1 -1
  423. package/dist/utilities/matchesSearchQuery.d.ts +12 -0
  424. package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
  425. package/dist/utilities/matchesSearchQuery.js +23 -0
  426. package/dist/utilities/matchesSearchQuery.js.map +1 -0
  427. package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
  428. package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
  429. package/dist/utilities/renderTable.d.ts.map +1 -1
  430. package/dist/utilities/renderTable.js +18 -2
  431. package/dist/utilities/renderTable.js.map +1 -1
  432. package/dist/utilities/slugify.d.ts.map +1 -1
  433. package/dist/utilities/slugify.js +49 -6
  434. package/dist/utilities/slugify.js.map +1 -1
  435. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  436. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  437. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  438. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  439. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  440. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  441. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  442. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  443. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  444. package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
  445. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  446. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  447. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  448. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  449. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  450. package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
  451. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  452. package/dist/views/HierarchyList/index.css +1 -1
  453. package/dist/views/List/ListHeader/index.d.ts +1 -10
  454. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  455. package/dist/views/List/ListHeader/index.js +1 -3
  456. package/dist/views/List/ListHeader/index.js.map +1 -1
  457. package/dist/views/List/index.client.d.ts.map +1 -1
  458. package/dist/views/List/index.client.js +0 -14
  459. package/dist/views/List/index.client.js.map +1 -1
  460. package/dist/views/List/index.css +6 -1
  461. package/dist/views/List/index.d.ts.map +1 -1
  462. package/dist/views/List/index.js +4 -0
  463. package/dist/views/List/index.js.map +1 -1
  464. package/dist/views/Logout/index.d.ts.map +1 -1
  465. package/dist/views/Logout/index.js +11 -0
  466. package/dist/views/Logout/index.js.map +1 -1
  467. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  468. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  469. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  470. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  471. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  472. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  473. package/dist/views/Root/index.d.ts.map +1 -1
  474. package/dist/views/Root/index.js +1 -0
  475. package/dist/views/Root/index.js.map +1 -1
  476. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  477. package/dist/views/Version/Restore/index.js +6 -3
  478. package/dist/views/Version/Restore/index.js.map +1 -1
  479. package/package.json +5 -10
  480. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
  481. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
  482. package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
  483. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
  484. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
  485. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  486. package/dist/scss/app.scss +0 -183
  487. package/dist/scss/colors.scss +0 -191
  488. package/dist/scss/custom.css +0 -1
  489. package/dist/scss/queries.scss +0 -27
  490. package/dist/scss/styles.scss +0 -9
  491. package/dist/scss/svg.scss +0 -10
  492. package/dist/scss/toastify.scss +0 -61
  493. package/dist/scss/vars.scss +0 -192
  494. package/dist/scss/z-index.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useEffectEvent","TagIcon","useConfig","useHierarchy","useTranslation","Button","DialogBody","DialogHeader","DialogModal","useDocumentDrawer","DrawerDepthProvider","HierarchyColumnBrowser","fetchAncestorPath","baseClass","HierarchyModalContent","baseFilter","closeModal","columnBrowserRef","disabledIds","filterByCollection","hasMany","hierarchyCollectionSlug","Icon","initialSelections","onCreateNew","onMoveToRoot","onSave","parentFieldName","ref","showMoveToRoot","useAsTitle","i18n","t","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","collectionLabel","labels","plural","parentFieldName_internal","hierarchy","initialExpandedPath","setInitialExpandedPath","isLoadingPath","setIsLoadingPath","Boolean","length","hasLoadedPathRef","firstSelection","mapSelections","ids","map","Map","id","set","path","loadAncestorPath","itemId","current","selections","setSelections","selectedIds","Set","keys","ancestorsWithSelections","handleSave","handleSelect","prev","next","has","delete","clear","handleClearAll","handleCancel","selectItem","selectionCount","size","_jsxs","className","_jsx","title","label","buttonStyle","margin","onClick","_Fragment","count","onSelect","HierarchyModal","props","modalSlug","reopenCount","refreshTree","createParentId","setCreateParentId","modalContentRef","documentDrawerKey","setDocumentDrawerKey","documentDrawerSlug","DocumentDrawer","closeDrawer","closeDocumentDrawer","openDrawer","openDocumentDrawer","drawerSlug","handleCreateNew","parentId","setTimeout","handleDocumentSave","doc","undefined","refreshColumn","modalContent","closeOnBlur","slug","initialData"],"sources":["../../../../src/elements/Hierarchy/Modal/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type { HierarchyColumnBrowserRef } from '../ColumnBrowser/index.js'\nimport type { HierarchyModalInternalProps, SelectionWithPath } from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DialogBody, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { DrawerDepthProvider } from '../../Drawer/index.js'\nimport { HierarchyColumnBrowser } from '../ColumnBrowser/index.js'\nimport { fetchAncestorPath } from './fetchAncestorPath.js'\nimport './index.css'\n\nexport const baseClass = 'hierarchy-modal'\n\ntype HierarchyModalContentProps = {\n columnBrowserRef?: React.RefObject<HierarchyColumnBrowserRef | null>\n onCreateNew?: (params: { parentId: null | number | string }) => void\n} & HierarchyModalInternalProps\n\nexport type HierarchyModalContentRef = {\n selectItem: (id: number | string) => void\n}\n\nexport const HierarchyModalContent = function HierarchyModalContent({\n baseFilter,\n closeModal,\n columnBrowserRef,\n disabledIds,\n filterByCollection,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n initialSelections,\n onCreateNew,\n onMoveToRoot,\n onSave,\n parentFieldName,\n ref,\n showMoveToRoot,\n useAsTitle,\n}: { ref?: React.RefObject<HierarchyModalContentRef | null> } & HierarchyModalContentProps) {\n const { i18n, t } = useTranslation()\n // NOTE: Do NOT use useModal() here - it causes re-renders when any modal state changes\n // Use closeModal prop instead which already handles closing the modal\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n const [initialExpandedPath, setInitialExpandedPath] = useState<(number | string)[] | undefined>()\n const [isLoadingPath, setIsLoadingPath] = useState(Boolean(initialSelections?.length))\n const hasLoadedPathRef = React.useRef(false)\n const firstSelection = initialSelections?.[0]\n\n const mapSelections = useCallback((ids?: (number | string)[]) => {\n const map = new Map<number | string, SelectionWithPath>()\n\n if (ids) {\n for (const id of ids) {\n map.set(id, { id, path: [] })\n }\n }\n\n return map\n }, [])\n\n const loadAncestorPath = useEffectEvent(async (itemId?: number | string) => {\n if (!itemId) {\n setIsLoadingPath(false)\n return\n }\n\n try {\n const path = await fetchAncestorPath({\n api,\n collectionSlug: hierarchyCollectionSlug,\n itemId,\n parentFieldName: parentFieldName_internal,\n serverURL,\n })\n setInitialExpandedPath(path)\n } catch {\n // Silently handle fetch errors - will just start at root\n } finally {\n setIsLoadingPath(false)\n }\n })\n\n // Load ancestor path on mount\n useEffect(() => {\n if (hasLoadedPathRef.current) {\n return\n }\n hasLoadedPathRef.current = true\n void loadAncestorPath(firstSelection)\n }, [firstSelection])\n\n const [selections, setSelections] = useState<Map<number | string, SelectionWithPath>>(() =>\n mapSelections(initialSelections),\n )\n\n const selectedIds = useMemo(() => new Set(selections.keys()), [selections])\n\n // For now, ancestorsWithSelections is empty - will be computed when we have path tracking\n const ancestorsWithSelections = useMemo(() => new Set<number | string>(), [])\n\n const handleSave = useCallback(() => {\n onSave({ closeModal, selections })\n }, [onSave, selections, closeModal])\n\n const handleSelect = useCallback(\n ({\n id,\n path,\n }: {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n }) => {\n setSelections((prev) => {\n const next = new Map(prev)\n\n if (next.has(id)) {\n next.delete(id)\n } else {\n if (!hasMany) {\n // Single select: clear previous selections\n next.clear()\n }\n next.set(id, { id, path })\n }\n\n return next\n })\n },\n [hasMany],\n )\n\n const handleClearAll = useCallback(() => {\n setSelections(new Map())\n }, [])\n\n const handleCancel = useCallback(() => {\n setSelections(mapSelections(initialSelections))\n closeModal()\n }, [closeModal, initialSelections, mapSelections])\n\n // Expose selectItem for programmatic selection (e.g., after creating a new item)\n useImperativeHandle(\n ref,\n () => ({\n selectItem: (id: number | string) => {\n setSelections((prev) => {\n const next = new Map(prev)\n if (!hasMany) {\n next.clear()\n }\n // Path will be empty for newly created items - could be enhanced later\n next.set(id, { id, path: [] })\n return next\n })\n },\n }),\n [hasMany],\n )\n\n const selectionCount = selections.size\n\n return (\n <div className={`${baseClass}__content`}>\n <DialogHeader title={t('general:selectValue', { label: collectionLabel })}>\n <div className={`${baseClass}__header-actions`}>\n <Button buttonStyle=\"secondary\" margin={false} onClick={handleCancel} size=\"medium\">\n {t('general:cancel')}\n </Button>\n <Button margin={false} onClick={handleSave} size=\"medium\">\n {t('general:select')}\n </Button>\n </div>\n </DialogHeader>\n <DialogBody>\n <div className={`${baseClass}__subheader`}>\n <div className={`${baseClass}__subheader-left`}>\n {Icon || <TagIcon />}\n <h4>{collectionLabel}</h4>\n </div>\n <div className={`${baseClass}__subheader-right`}>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__move-to-root`}\n margin={false}\n onClick={onMoveToRoot}\n size=\"medium\"\n >\n {t('hierarchy:moveToRoot')}\n </Button>\n )}\n {Boolean(selectionCount) && (\n <>\n {\n <span className={`${baseClass}__selection-info`}>\n {t('general:selectedCount', { count: selectionCount, label: '' })}\n </span>\n }\n <span>—</span>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__clear-all`}\n margin={false}\n onClick={handleClearAll}\n size=\"medium\"\n >\n {t('general:clear')}\n </Button>\n </>\n )}\n </div>\n </div>\n <div className={`${baseClass}__columns`}>\n <HierarchyColumnBrowser\n ancestorsWithSelections={ancestorsWithSelections}\n baseFilter={baseFilter}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n initialExpandedPath={initialExpandedPath}\n isLoadingPath={isLoadingPath}\n onCreateNew={onCreateNew}\n onSelect={handleSelect}\n parentFieldName={parentFieldName}\n ref={columnBrowserRef}\n selectedIds={selectedIds}\n useAsTitle={useAsTitle}\n />\n </div>\n </DialogBody>\n </div>\n )\n}\n\nexport const HierarchyModal: React.FC<HierarchyModalInternalProps> = (props) => {\n const { hierarchyCollectionSlug, modalSlug, parentFieldName, reopenCount } = props\n\n const { refreshTree } = useHierarchy()\n\n // Get parentFieldName from hierarchy config\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n // Track which parentId is being used for the document drawer - use state to trigger re-render\n const [createParentId, setCreateParentId] = useState<null | number | string>(null)\n\n // Ref to access column browser's refresh function\n const columnBrowserRef = useRef<HierarchyColumnBrowserRef | null>(null)\n\n // Ref to access drawer content's selectItem function\n const modalContentRef = useRef<HierarchyModalContentRef | null>(null)\n\n // Key for DocumentDrawer to force remount when parentId changes\n const [documentDrawerKey, setDocumentDrawerKey] = useState(0)\n\n // Stable drawer slug for the document drawer - must not change on remount\n const documentDrawerSlug = `${modalSlug}-create-doc`\n\n // Document drawer for creating new items - rendered OUTSIDE the modal to avoid nested modal issues\n const [DocumentDrawer, , { closeDrawer: closeDocumentDrawer, openDrawer: openDocumentDrawer }] =\n useDocumentDrawer({\n collectionSlug: hierarchyCollectionSlug,\n drawerSlug: documentDrawerSlug,\n })\n\n const handleCreateNew = useCallback(\n ({ parentId }: { parentId: null | number | string }) => {\n // Increment key to force DocumentDrawer remount with new initialData\n setDocumentDrawerKey((prev) => prev + 1)\n setCreateParentId(parentId)\n // Use setTimeout to ensure state update triggers re-render before opening drawer\n setTimeout(() => {\n openDocumentDrawer()\n }, 0)\n },\n [openDocumentDrawer],\n )\n\n // Refresh the column, select the new item, and close the document drawer after creation\n const handleDocumentSave = useCallback<\n NonNullable<React.ComponentProps<typeof DocumentDrawer>['onSave']>\n >(\n ({ doc }) => {\n if (columnBrowserRef.current && createParentId !== undefined) {\n void columnBrowserRef.current.refreshColumn(createParentId)\n }\n if (modalContentRef.current && doc?.id) {\n modalContentRef.current.selectItem(doc.id)\n }\n refreshTree(hierarchyCollectionSlug)\n closeDocumentDrawer()\n },\n [closeDocumentDrawer, createParentId, hierarchyCollectionSlug, refreshTree],\n )\n\n // Memoize the content - only depends on stable values\n const modalContent = useMemo(\n () => (\n <HierarchyModalContent\n key={reopenCount}\n {...props}\n columnBrowserRef={columnBrowserRef}\n onCreateNew={handleCreateNew}\n ref={modalContentRef}\n />\n ),\n [handleCreateNew, props, reopenCount],\n )\n\n return (\n <>\n <DialogModal className={baseClass} closeOnBlur size=\"large\" slug={modalSlug}>\n {modalContent}\n </DialogModal>\n <DrawerDepthProvider>\n <DocumentDrawer\n initialData={\n createParentId !== null ? { [parentFieldName_internal]: createParentId } : undefined\n }\n key={documentDrawerKey}\n onSave={handleDocumentSave}\n />\n </DrawerDepthProvider>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useEffectEvent","TagIcon","useBranchParam","useConfig","useHierarchy","useTranslation","Button","DialogBody","DialogHeader","DialogModal","useDocumentDrawer","DrawerDepthProvider","HierarchyColumnBrowser","fetchAncestorPath","baseClass","HierarchyModalContent","baseFilter","closeModal","columnBrowserRef","disabledIds","filterByCollection","hasMany","hierarchyCollectionSlug","Icon","initialSelections","onCreateNew","onMoveToRoot","onSave","parentFieldName","ref","showMoveToRoot","useAsTitle","i18n","t","config","routes","api","serverURL","getEntityConfig","branch","collectionConfig","collectionSlug","collectionLabel","labels","plural","parentFieldName_internal","hierarchy","initialExpandedPath","setInitialExpandedPath","isLoadingPath","setIsLoadingPath","Boolean","length","hasLoadedPathRef","firstSelection","mapSelections","ids","map","Map","id","set","path","loadAncestorPath","itemId","current","selections","setSelections","selectedIds","Set","keys","ancestorsWithSelections","handleSave","handleSelect","prev","next","has","delete","clear","handleClearAll","handleCancel","selectItem","selectionCount","size","_jsxs","className","_jsx","title","label","buttonStyle","margin","onClick","_Fragment","count","onSelect","HierarchyModal","props","modalSlug","reopenCount","refreshTree","createParentId","setCreateParentId","modalContentRef","documentDrawerKey","setDocumentDrawerKey","documentDrawerSlug","DocumentDrawer","closeDrawer","closeDocumentDrawer","openDrawer","openDocumentDrawer","drawerSlug","handleCreateNew","parentId","setTimeout","handleDocumentSave","doc","undefined","refreshColumn","modalContent","closeOnBlur","slug","initialData"],"sources":["../../../../src/elements/Hierarchy/Modal/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type { HierarchyColumnBrowserRef } from '../ColumnBrowser/index.js'\nimport type { HierarchyModalInternalProps, SelectionWithPath } from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { useBranchParam } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DialogBody, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { DrawerDepthProvider } from '../../Drawer/index.js'\nimport { HierarchyColumnBrowser } from '../ColumnBrowser/index.js'\nimport { fetchAncestorPath } from './fetchAncestorPath.js'\nimport './index.css'\n\nexport const baseClass = 'hierarchy-modal'\n\ntype HierarchyModalContentProps = {\n columnBrowserRef?: React.RefObject<HierarchyColumnBrowserRef | null>\n onCreateNew?: (params: { parentId: null | number | string }) => void\n} & HierarchyModalInternalProps\n\nexport type HierarchyModalContentRef = {\n selectItem: (id: number | string) => void\n}\n\nexport const HierarchyModalContent = function HierarchyModalContent({\n baseFilter,\n closeModal,\n columnBrowserRef,\n disabledIds,\n filterByCollection,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n initialSelections,\n onCreateNew,\n onMoveToRoot,\n onSave,\n parentFieldName,\n ref,\n showMoveToRoot,\n useAsTitle,\n}: { ref?: React.RefObject<HierarchyModalContentRef | null> } & HierarchyModalContentProps) {\n const { i18n, t } = useTranslation()\n // NOTE: Do NOT use useModal() here - it causes re-renders when any modal state changes\n // Use closeModal prop instead which already handles closing the modal\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const branch = useBranchParam()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n const [initialExpandedPath, setInitialExpandedPath] = useState<(number | string)[] | undefined>()\n const [isLoadingPath, setIsLoadingPath] = useState(Boolean(initialSelections?.length))\n const hasLoadedPathRef = React.useRef(false)\n const firstSelection = initialSelections?.[0]\n\n const mapSelections = useCallback((ids?: (number | string)[]) => {\n const map = new Map<number | string, SelectionWithPath>()\n\n if (ids) {\n for (const id of ids) {\n map.set(id, { id, path: [] })\n }\n }\n\n return map\n }, [])\n\n const loadAncestorPath = useEffectEvent(async (itemId?: number | string) => {\n if (!itemId) {\n setIsLoadingPath(false)\n return\n }\n\n try {\n const path = await fetchAncestorPath({\n api,\n branch,\n collectionSlug: hierarchyCollectionSlug,\n itemId,\n parentFieldName: parentFieldName_internal,\n serverURL,\n })\n setInitialExpandedPath(path)\n } catch {\n // Silently handle fetch errors - will just start at root\n } finally {\n setIsLoadingPath(false)\n }\n })\n\n // Load ancestor path on mount\n useEffect(() => {\n if (hasLoadedPathRef.current) {\n return\n }\n hasLoadedPathRef.current = true\n void loadAncestorPath(firstSelection)\n }, [firstSelection])\n\n const [selections, setSelections] = useState<Map<number | string, SelectionWithPath>>(() =>\n mapSelections(initialSelections),\n )\n\n const selectedIds = useMemo(() => new Set(selections.keys()), [selections])\n\n // For now, ancestorsWithSelections is empty - will be computed when we have path tracking\n const ancestorsWithSelections = useMemo(() => new Set<number | string>(), [])\n\n const handleSave = useCallback(() => {\n onSave({ closeModal, selections })\n }, [onSave, selections, closeModal])\n\n const handleSelect = useCallback(\n ({\n id,\n path,\n }: {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n }) => {\n setSelections((prev) => {\n const next = new Map(prev)\n\n if (next.has(id)) {\n next.delete(id)\n } else {\n if (!hasMany) {\n // Single select: clear previous selections\n next.clear()\n }\n next.set(id, { id, path })\n }\n\n return next\n })\n },\n [hasMany],\n )\n\n const handleClearAll = useCallback(() => {\n setSelections(new Map())\n }, [])\n\n const handleCancel = useCallback(() => {\n setSelections(mapSelections(initialSelections))\n closeModal()\n }, [closeModal, initialSelections, mapSelections])\n\n // Expose selectItem for programmatic selection (e.g., after creating a new item)\n useImperativeHandle(\n ref,\n () => ({\n selectItem: (id: number | string) => {\n setSelections((prev) => {\n const next = new Map(prev)\n if (!hasMany) {\n next.clear()\n }\n // Path will be empty for newly created items - could be enhanced later\n next.set(id, { id, path: [] })\n return next\n })\n },\n }),\n [hasMany],\n )\n\n const selectionCount = selections.size\n\n return (\n <div className={`${baseClass}__content`}>\n <DialogHeader title={t('general:selectValue', { label: collectionLabel })}>\n <div className={`${baseClass}__header-actions`}>\n <Button buttonStyle=\"secondary\" margin={false} onClick={handleCancel} size=\"medium\">\n {t('general:cancel')}\n </Button>\n <Button margin={false} onClick={handleSave} size=\"medium\">\n {t('general:select')}\n </Button>\n </div>\n </DialogHeader>\n <DialogBody>\n <div className={`${baseClass}__subheader`}>\n <div className={`${baseClass}__subheader-left`}>\n {Icon || <TagIcon />}\n <h4>{collectionLabel}</h4>\n </div>\n <div className={`${baseClass}__subheader-right`}>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__move-to-root`}\n margin={false}\n onClick={onMoveToRoot}\n size=\"medium\"\n >\n {t('hierarchy:moveToRoot')}\n </Button>\n )}\n {Boolean(selectionCount) && (\n <>\n {\n <span className={`${baseClass}__selection-info`}>\n {t('general:selectedCount', { count: selectionCount, label: '' })}\n </span>\n }\n <span>—</span>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__clear-all`}\n margin={false}\n onClick={handleClearAll}\n size=\"medium\"\n >\n {t('general:clear')}\n </Button>\n </>\n )}\n </div>\n </div>\n <div className={`${baseClass}__columns`}>\n <HierarchyColumnBrowser\n ancestorsWithSelections={ancestorsWithSelections}\n baseFilter={baseFilter}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n initialExpandedPath={initialExpandedPath}\n isLoadingPath={isLoadingPath}\n onCreateNew={onCreateNew}\n onSelect={handleSelect}\n parentFieldName={parentFieldName}\n ref={columnBrowserRef}\n selectedIds={selectedIds}\n useAsTitle={useAsTitle}\n />\n </div>\n </DialogBody>\n </div>\n )\n}\n\nexport const HierarchyModal: React.FC<HierarchyModalInternalProps> = (props) => {\n const { hierarchyCollectionSlug, modalSlug, parentFieldName, reopenCount } = props\n\n const { refreshTree } = useHierarchy()\n\n // Get parentFieldName from hierarchy config\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n // Track which parentId is being used for the document drawer - use state to trigger re-render\n const [createParentId, setCreateParentId] = useState<null | number | string>(null)\n\n // Ref to access column browser's refresh function\n const columnBrowserRef = useRef<HierarchyColumnBrowserRef | null>(null)\n\n // Ref to access drawer content's selectItem function\n const modalContentRef = useRef<HierarchyModalContentRef | null>(null)\n\n // Key for DocumentDrawer to force remount when parentId changes\n const [documentDrawerKey, setDocumentDrawerKey] = useState(0)\n\n // Stable drawer slug for the document drawer - must not change on remount\n const documentDrawerSlug = `${modalSlug}-create-doc`\n\n // Document drawer for creating new items - rendered OUTSIDE the modal to avoid nested modal issues\n const [DocumentDrawer, , { closeDrawer: closeDocumentDrawer, openDrawer: openDocumentDrawer }] =\n useDocumentDrawer({\n collectionSlug: hierarchyCollectionSlug,\n drawerSlug: documentDrawerSlug,\n })\n\n const handleCreateNew = useCallback(\n ({ parentId }: { parentId: null | number | string }) => {\n // Increment key to force DocumentDrawer remount with new initialData\n setDocumentDrawerKey((prev) => prev + 1)\n setCreateParentId(parentId)\n // Use setTimeout to ensure state update triggers re-render before opening drawer\n setTimeout(() => {\n openDocumentDrawer()\n }, 0)\n },\n [openDocumentDrawer],\n )\n\n // Refresh the column, select the new item, and close the document drawer after creation\n const handleDocumentSave = useCallback<\n NonNullable<React.ComponentProps<typeof DocumentDrawer>['onSave']>\n >(\n ({ doc }) => {\n if (columnBrowserRef.current && createParentId !== undefined) {\n void columnBrowserRef.current.refreshColumn(createParentId)\n }\n if (modalContentRef.current && doc?.id) {\n modalContentRef.current.selectItem(doc.id)\n }\n refreshTree(hierarchyCollectionSlug)\n closeDocumentDrawer()\n },\n [closeDocumentDrawer, createParentId, hierarchyCollectionSlug, refreshTree],\n )\n\n // Memoize the content - only depends on stable values\n const modalContent = useMemo(\n () => (\n <HierarchyModalContent\n key={reopenCount}\n {...props}\n columnBrowserRef={columnBrowserRef}\n onCreateNew={handleCreateNew}\n ref={modalContentRef}\n />\n ),\n [handleCreateNew, props, reopenCount],\n )\n\n return (\n <>\n <DialogModal className={baseClass} closeOnBlur size=\"large\" slug={modalSlug}>\n {modalContent}\n </DialogModal>\n <DrawerDepthProvider>\n <DocumentDrawer\n initialData={\n createParentId !== null ? { [parentFieldName_internal]: createParentId } : undefined\n }\n key={documentDrawerKey}\n onSave={handleDocumentSave}\n />\n </DrawerDepthProvider>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAe7D,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,KAAK,aAAa,GAAG;IACnB,oEAAoE;IACpE,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CACzD,CAAA;AAeD,wBAAgB,QAAQ,CAAC,EACvB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACX,EAAE,aAAa,qBAiQf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAgB7D,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,KAAK,aAAa,GAAG;IACnB,oEAAoE;IACpE,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CACzD,CAAA;AAeD,wBAAgB,QAAQ,CAAC,EACvB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACX,EAAE,aAAa,qBA+Qf"}
@@ -7,6 +7,7 @@ import { formatAdminURL } from 'payload/shared';
7
7
  import * as qs from 'qs-esm';
8
8
  import React, { useCallback, useMemo, useState } from 'react';
9
9
  import { toast } from 'sonner';
10
+ import { useBranchParam } from '../../../providers/Branch/index.js';
10
11
  import { useConfig } from '../../../providers/Config/index.js';
11
12
  import { useDocumentSelection } from '../../../providers/DocumentSelection/index.js';
12
13
  import { useLocale } from '../../../providers/Locale/index.js';
@@ -39,6 +40,7 @@ export function MoveMany({
39
40
  const {
40
41
  code: locale
41
42
  } = useLocale();
43
+ const branch = useBranchParam();
42
44
  const {
43
45
  openModal
44
46
  } = useModal();
@@ -158,6 +160,7 @@ export function MoveMany({
158
160
  continue;
159
161
  }
160
162
  const queryString = qs.stringify({
163
+ branch,
161
164
  locale,
162
165
  where: {
163
166
  id: {
@@ -218,7 +221,7 @@ export function MoveMany({
218
221
  } finally {
219
222
  setDestination(null);
220
223
  }
221
- }, [closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess]);
224
+ }, [branch, closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess]);
222
225
  if (count === 0 || !canMove) {
223
226
  return null;
224
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","useCallback","useMemo","useState","toast","useConfig","useDocumentSelection","useLocale","useTranslation","requests","ConfirmationModal","ListSelectionButton","Translation","useHierarchyModal","baseClass","getParentFieldName","hierarchyConfig","config","hierarchy","undefined","parentFieldName","MoveMany","currentParentID","hierarchySlug","Icon","modalPrefix","onSuccess","selections","i18n","t","code","locale","openModal","collections","routes","api","getSelectionsWithMetadata","destination","setDestination","confirmMoveDrawerSlug","requiredCollections","selectionsWithMeta","required","Set","collectionSlug","items","Object","entries","metadata","allowedCollections","slug","add","size","Array","from","disabledIds","parentIds","ids","length","HierarchyModal","closeModal","openHierarchyModal","filterByCollection","hierarchyCollectionSlug","count","label","totalCount","labels","find","c","collectionLabel","plural","singular","push","join","hierarchyCollectionConfig","canMove","handleDrawerSave","selectionsMap","firstSelection","values","next","value","destinationId","id","destinationTitle","path","title","String","handleMoveToRoot","handleConfirmMove","totalMoved","hasErrors","queryString","stringify","where","in","addQueryPrefix","url","apiRoute","response","patch","body","JSON","headers","language","credentials","json","status","errors","error","message","description","map","movedCount","docs","successKey","success","_err","_jsxs","Fragment","_jsx","className","onClick","hasMany","initialSelections","onMoveToRoot","onSave","showMoveToRoot","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\n\nexport const baseClass = 'move-many'\n\ntype MoveManyProps = {\n /** Current parent ID - modal will open expanded to this location */\n currentParentID?: null | number | string\n /** The hierarchy collection slug (e.g., 'folders') */\n hierarchySlug: string\n /** Icon to display in the hierarchy modal */\n Icon?: React.ReactNode\n /** When multiple MoveMany components are rendered on the page, this will differentiate them */\n modalPrefix?: string\n /** Callback after successful move */\n onSuccess?: () => void\n /** Selections grouped by collection slug */\n selections: Record<string, { ids: (number | string)[] }>\n}\n\n/**\n * Gets the parent field name from the hierarchy config.\n */\nfunction getParentFieldName(\n hierarchyConfig: ClientCollectionConfig | undefined,\n): string | undefined {\n const config =\n hierarchyConfig?.hierarchy && typeof hierarchyConfig.hierarchy === 'object'\n ? hierarchyConfig.hierarchy\n : undefined\n return config?.parentFieldName\n}\n\nexport function MoveMany({\n currentParentID,\n hierarchySlug,\n Icon,\n modalPrefix,\n onSuccess,\n selections,\n}: MoveManyProps) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { openModal } = useModal()\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { getSelectionsWithMetadata } = useDocumentSelection()\n\n const [destination, setDestination] = useState<{\n id: null | number | string\n title: string\n } | null>(null)\n\n const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`\n\n // Compute required collections from selection metadata\n // For related items: add their collection slug\n // For folders: add their allowedCollections values\n const requiredCollections = useMemo(() => {\n const selectionsWithMeta = getSelectionsWithMetadata()\n const required = new Set<string>()\n\n for (const [collectionSlug, { selections: items }] of Object.entries(selectionsWithMeta)) {\n if (collectionSlug === hierarchySlug) {\n // For folders, add their allowedCollections to required set\n for (const { metadata } of items) {\n if (metadata.allowedCollections) {\n for (const slug of metadata.allowedCollections) {\n required.add(slug)\n }\n }\n }\n } else {\n // For related items, add their collection slug\n required.add(collectionSlug)\n }\n }\n\n return required.size > 0 ? Array.from(required) : undefined\n }, [getSelectionsWithMetadata, hierarchySlug])\n\n // Folders being moved cannot be selected as destination (can't move into themselves)\n const disabledIds = useMemo(() => {\n const parentIds = selections[hierarchySlug]?.ids\n return parentIds?.length ? new Set(parentIds) : undefined\n }, [selections, hierarchySlug])\n\n const [HierarchyModal, , { closeModal, openModal: openHierarchyModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection: requiredCollections,\n hierarchyCollectionSlug: hierarchySlug,\n Icon,\n })\n\n // Calculate total count and label\n const { count, label } = useMemo(() => {\n let totalCount = 0\n const labels: string[] = []\n\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n const config = collections.find((c) => c.slug === collectionSlug)\n\n if (config && ids.length > 0) {\n totalCount += ids.length\n const collectionLabel = getTranslation(\n ids.length > 1 ? config.labels.plural : config.labels.singular,\n i18n,\n )\n labels.push(collectionLabel)\n }\n }\n\n return {\n count: totalCount,\n label: labels.join(', '),\n }\n }, [selections, collections, i18n])\n\n const hierarchyCollectionConfig = collections.find((c) => c.slug === hierarchySlug)\n const parentFieldName = getParentFieldName(hierarchyCollectionConfig)\n\n // Check if hierarchy has a valid parentFieldName\n const canMove = parentFieldName !== undefined\n\n const handleDrawerSave = useCallback(\n ({ selections: selectionsMap }: { selections: Map<number | string, SelectionWithPath> }) => {\n if (selectionsMap.size === 0) {\n return\n }\n\n const firstSelection = selectionsMap.values().next().value\n const destinationId = firstSelection?.id\n const destinationTitle =\n firstSelection?.path?.[firstSelection.path.length - 1]?.title || String(destinationId)\n\n setDestination({ id: destinationId, title: destinationTitle })\n openModal(confirmMoveDrawerSlug)\n },\n [openModal, confirmMoveDrawerSlug],\n )\n\n const handleMoveToRoot = useCallback(() => {\n setDestination({ id: null, title: t('hierarchy:noParent') })\n openModal(confirmMoveDrawerSlug)\n }, [openModal, confirmMoveDrawerSlug, t])\n\n const handleConfirmMove = useCallback(async () => {\n if (destination === null) {\n return\n }\n\n let totalMoved = 0\n let hasErrors = false\n\n try {\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n if (ids.length === 0) {\n continue\n }\n\n const queryString = qs.stringify(\n {\n locale,\n where: { id: { in: ids } },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n })\n\n const response = await requests.patch(url, {\n body: JSON.stringify({ [parentFieldName]: destination.id }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n\n const json = await response.json()\n\n if (response.status >= 400) {\n hasErrors = true\n\n if (json?.errors?.length > 0) {\n toast.error(json.message || t('error:unknown'), {\n description: json.errors\n .map((error: { message: string }) => error.message)\n .join('\\n'),\n })\n } else {\n toast.error(json?.message || t('error:unknown'))\n }\n\n continue\n }\n\n const movedCount = json?.docs?.length || 0\n totalMoved += movedCount\n\n if (json?.errors?.length > 0) {\n hasErrors = true\n toast.error(json.message, {\n description: json.errors.map((error: { message: string }) => error.message).join('\\n'),\n })\n }\n }\n\n if (totalMoved > 0) {\n const successKey =\n destination.id === null ? 'hierarchy:itemsMovedToRoot' : 'hierarchy:itemsMovedTo'\n\n toast.success(\n t(successKey, {\n destination: destination.title,\n title: label,\n }),\n )\n }\n\n if (!hasErrors || totalMoved > 0) {\n closeModal()\n onSuccess?.()\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setDestination(null)\n }\n }, [closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess])\n\n if (count === 0 || !canMove) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:move')}\n className={`${baseClass}__toggle`}\n onClick={openHierarchyModal}\n >\n {t('general:move')}\n </ListSelectionButton>\n <HierarchyModal\n hasMany={false}\n initialSelections={currentParentID ? [currentParentID] : null}\n onMoveToRoot={handleMoveToRoot}\n onSave={handleDrawerSave}\n showMoveToRoot\n />\n <ConfirmationModal\n body={\n <p>\n {destination?.id === null ? (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"hierarchy:moveItemsToRootConfirmation\"\n t={t}\n variables={{\n count,\n label,\n }}\n />\n ) : (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:moveConfirm\"\n t={t}\n variables={{\n count,\n destination: destination?.title || '',\n label,\n }}\n />\n )}\n </p>\n }\n confirmingLabel={t('general:moving')}\n heading={t('general:confirmMove')}\n modalSlug={confirmMoveDrawerSlug}\n onConfirm={handleConfirmMove}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","useCallback","useMemo","useState","toast","useBranchParam","useConfig","useDocumentSelection","useLocale","useTranslation","requests","ConfirmationModal","ListSelectionButton","Translation","useHierarchyModal","baseClass","getParentFieldName","hierarchyConfig","config","hierarchy","undefined","parentFieldName","MoveMany","currentParentID","hierarchySlug","Icon","modalPrefix","onSuccess","selections","i18n","t","code","locale","branch","openModal","collections","routes","api","getSelectionsWithMetadata","destination","setDestination","confirmMoveDrawerSlug","requiredCollections","selectionsWithMeta","required","Set","collectionSlug","items","Object","entries","metadata","allowedCollections","slug","add","size","Array","from","disabledIds","parentIds","ids","length","HierarchyModal","closeModal","openHierarchyModal","filterByCollection","hierarchyCollectionSlug","count","label","totalCount","labels","find","c","collectionLabel","plural","singular","push","join","hierarchyCollectionConfig","canMove","handleDrawerSave","selectionsMap","firstSelection","values","next","value","destinationId","id","destinationTitle","path","title","String","handleMoveToRoot","handleConfirmMove","totalMoved","hasErrors","queryString","stringify","where","in","addQueryPrefix","url","apiRoute","response","patch","body","JSON","headers","language","credentials","json","status","errors","error","message","description","map","movedCount","docs","successKey","success","_err","_jsxs","Fragment","_jsx","className","onClick","hasMany","initialSelections","onMoveToRoot","onSave","showMoveToRoot","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useBranchParam } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\n\nexport const baseClass = 'move-many'\n\ntype MoveManyProps = {\n /** Current parent ID - modal will open expanded to this location */\n currentParentID?: null | number | string\n /** The hierarchy collection slug (e.g., 'folders') */\n hierarchySlug: string\n /** Icon to display in the hierarchy modal */\n Icon?: React.ReactNode\n /** When multiple MoveMany components are rendered on the page, this will differentiate them */\n modalPrefix?: string\n /** Callback after successful move */\n onSuccess?: () => void\n /** Selections grouped by collection slug */\n selections: Record<string, { ids: (number | string)[] }>\n}\n\n/**\n * Gets the parent field name from the hierarchy config.\n */\nfunction getParentFieldName(\n hierarchyConfig: ClientCollectionConfig | undefined,\n): string | undefined {\n const config =\n hierarchyConfig?.hierarchy && typeof hierarchyConfig.hierarchy === 'object'\n ? hierarchyConfig.hierarchy\n : undefined\n return config?.parentFieldName\n}\n\nexport function MoveMany({\n currentParentID,\n hierarchySlug,\n Icon,\n modalPrefix,\n onSuccess,\n selections,\n}: MoveManyProps) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n const { openModal } = useModal()\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { getSelectionsWithMetadata } = useDocumentSelection()\n\n const [destination, setDestination] = useState<{\n id: null | number | string\n title: string\n } | null>(null)\n\n const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`\n\n // Compute required collections from selection metadata\n // For related items: add their collection slug\n // For folders: add their allowedCollections values\n const requiredCollections = useMemo(() => {\n const selectionsWithMeta = getSelectionsWithMetadata()\n const required = new Set<string>()\n\n for (const [collectionSlug, { selections: items }] of Object.entries(selectionsWithMeta)) {\n if (collectionSlug === hierarchySlug) {\n // For folders, add their allowedCollections to required set\n for (const { metadata } of items) {\n if (metadata.allowedCollections) {\n for (const slug of metadata.allowedCollections) {\n required.add(slug)\n }\n }\n }\n } else {\n // For related items, add their collection slug\n required.add(collectionSlug)\n }\n }\n\n return required.size > 0 ? Array.from(required) : undefined\n }, [getSelectionsWithMetadata, hierarchySlug])\n\n // Folders being moved cannot be selected as destination (can't move into themselves)\n const disabledIds = useMemo(() => {\n const parentIds = selections[hierarchySlug]?.ids\n return parentIds?.length ? new Set(parentIds) : undefined\n }, [selections, hierarchySlug])\n\n const [HierarchyModal, , { closeModal, openModal: openHierarchyModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection: requiredCollections,\n hierarchyCollectionSlug: hierarchySlug,\n Icon,\n })\n\n // Calculate total count and label\n const { count, label } = useMemo(() => {\n let totalCount = 0\n const labels: string[] = []\n\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n const config = collections.find((c) => c.slug === collectionSlug)\n\n if (config && ids.length > 0) {\n totalCount += ids.length\n const collectionLabel = getTranslation(\n ids.length > 1 ? config.labels.plural : config.labels.singular,\n i18n,\n )\n labels.push(collectionLabel)\n }\n }\n\n return {\n count: totalCount,\n label: labels.join(', '),\n }\n }, [selections, collections, i18n])\n\n const hierarchyCollectionConfig = collections.find((c) => c.slug === hierarchySlug)\n const parentFieldName = getParentFieldName(hierarchyCollectionConfig)\n\n // Check if hierarchy has a valid parentFieldName\n const canMove = parentFieldName !== undefined\n\n const handleDrawerSave = useCallback(\n ({ selections: selectionsMap }: { selections: Map<number | string, SelectionWithPath> }) => {\n if (selectionsMap.size === 0) {\n return\n }\n\n const firstSelection = selectionsMap.values().next().value\n const destinationId = firstSelection?.id\n const destinationTitle =\n firstSelection?.path?.[firstSelection.path.length - 1]?.title || String(destinationId)\n\n setDestination({ id: destinationId, title: destinationTitle })\n openModal(confirmMoveDrawerSlug)\n },\n [openModal, confirmMoveDrawerSlug],\n )\n\n const handleMoveToRoot = useCallback(() => {\n setDestination({ id: null, title: t('hierarchy:noParent') })\n openModal(confirmMoveDrawerSlug)\n }, [openModal, confirmMoveDrawerSlug, t])\n\n const handleConfirmMove = useCallback(async () => {\n if (destination === null) {\n return\n }\n\n let totalMoved = 0\n let hasErrors = false\n\n try {\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n if (ids.length === 0) {\n continue\n }\n\n const queryString = qs.stringify(\n {\n branch,\n locale,\n where: { id: { in: ids } },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n })\n\n const response = await requests.patch(url, {\n body: JSON.stringify({ [parentFieldName]: destination.id }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n\n const json = await response.json()\n\n if (response.status >= 400) {\n hasErrors = true\n\n if (json?.errors?.length > 0) {\n toast.error(json.message || t('error:unknown'), {\n description: json.errors\n .map((error: { message: string }) => error.message)\n .join('\\n'),\n })\n } else {\n toast.error(json?.message || t('error:unknown'))\n }\n\n continue\n }\n\n const movedCount = json?.docs?.length || 0\n totalMoved += movedCount\n\n if (json?.errors?.length > 0) {\n hasErrors = true\n toast.error(json.message, {\n description: json.errors.map((error: { message: string }) => error.message).join('\\n'),\n })\n }\n }\n\n if (totalMoved > 0) {\n const successKey =\n destination.id === null ? 'hierarchy:itemsMovedToRoot' : 'hierarchy:itemsMovedTo'\n\n toast.success(\n t(successKey, {\n destination: destination.title,\n title: label,\n }),\n )\n }\n\n if (!hasErrors || totalMoved > 0) {\n closeModal()\n onSuccess?.()\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setDestination(null)\n }\n }, [\n branch,\n closeModal,\n destination,\n selections,\n parentFieldName,\n locale,\n api,\n i18n,\n t,\n label,\n onSuccess,\n ])\n\n if (count === 0 || !canMove) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:move')}\n className={`${baseClass}__toggle`}\n onClick={openHierarchyModal}\n >\n {t('general:move')}\n </ListSelectionButton>\n <HierarchyModal\n hasMany={false}\n initialSelections={currentParentID ? [currentParentID] : null}\n onMoveToRoot={handleMoveToRoot}\n onSave={handleDrawerSave}\n showMoveToRoot\n />\n <ConfirmationModal\n body={\n <p>\n {destination?.id === null ? (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"hierarchy:moveItemsToRootConfirmation\"\n t={t}\n variables={{\n count,\n label,\n }}\n />\n ) : (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:moveConfirm\"\n t={t}\n variables={{\n count,\n destination: destination?.title || '',\n label,\n }}\n />\n )}\n </p>\n }\n confirmingLabel={t('general:moving')}\n heading={t('general:confirmMove')}\n modalSlug={confirmMoveDrawerSlug}\n onConfirm={handleConfirmMove}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useHierarchySearch.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Search/useHierarchySearch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,kBAAkB,4EAM5B,sBAAsB,KAAG,wBAmH3B,CAAA"}
1
+ {"version":3,"file":"useHierarchySearch.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Search/useHierarchySearch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,kBAAkB,4EAM5B,sBAAsB,KAAG,wBAqH3B,CAAA"}
@@ -3,6 +3,7 @@
3
3
  import { formatAdminURL } from 'payload/shared';
4
4
  import * as qs from 'qs-esm';
5
5
  import { useCallback, useState } from 'react';
6
+ import { useBranchParam } from '../../../providers/Branch/index.js';
6
7
  import { useConfig } from '../../../providers/Config/index.js';
7
8
  import { useLocale } from '../../../providers/Locale/index.js';
8
9
  export const useHierarchySearch = ({
@@ -29,6 +30,7 @@ export const useHierarchySearch = ({
29
30
  const {
30
31
  code: locale
31
32
  } = useLocale();
33
+ const branch = useBranchParam();
32
34
  const fetchResults = useCallback(async ({
33
35
  append,
34
36
  pageToFetch,
@@ -37,6 +39,7 @@ export const useHierarchySearch = ({
37
39
  setIsLoading(true);
38
40
  try {
39
41
  const queryString = qs.stringify({
42
+ branch,
40
43
  computeHierarchyPaths: true,
41
44
  limit,
42
45
  locale,
@@ -1 +1 @@
1
- {"version":3,"file":"useHierarchySearch.js","names":["formatAdminURL","qs","useCallback","useState","useConfig","useLocale","useHierarchySearch","collectionSlug","limit","parentFieldName","titleField","titlePathField","results","setResults","isLoading","setIsLoading","hasNextPage","setHasNextPage","totalDocs","setTotalDocs","page","setPage","currentQuery","setCurrentQuery","config","routes","api","serverURL","code","locale","fetchResults","append","pageToFetch","query","queryString","stringify","computeHierarchyPaths","select","where","contains","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","docs","map","doc","prev","search","loadMore","clearResults"],"sources":["../../../../src/elements/Hierarchy/Search/useHierarchySearch.ts"],"sourcesContent":["'use client'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useState } from 'react'\n\nimport type { SearchResult } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\n\ntype UseHierarchySearchArgs = {\n collectionSlug: string\n limit?: number\n parentFieldName?: string\n titleField: string\n titlePathField?: string\n}\n\ntype UseHierarchySearchReturn = {\n clearResults: () => void\n hasNextPage: boolean\n isLoading: boolean\n loadMore: () => Promise<void>\n results: SearchResult[]\n search: (query: string) => Promise<void>\n totalDocs: number\n}\n\nexport const useHierarchySearch = ({\n collectionSlug,\n limit = 15,\n parentFieldName = 'parent',\n titleField,\n titlePathField = '_h_titlePath',\n}: UseHierarchySearchArgs): UseHierarchySearchReturn => {\n const [results, setResults] = useState<SearchResult[]>([])\n const [isLoading, setIsLoading] = useState(false)\n const [hasNextPage, setHasNextPage] = useState(false)\n const [totalDocs, setTotalDocs] = useState(0)\n const [page, setPage] = useState(1)\n const [currentQuery, setCurrentQuery] = useState('')\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { code: locale } = useLocale()\n\n const fetchResults = useCallback(\n async ({\n append,\n pageToFetch,\n query,\n }: {\n append: boolean\n pageToFetch: number\n query: string\n }) => {\n setIsLoading(true)\n\n try {\n const queryString = qs.stringify(\n {\n computeHierarchyPaths: true,\n limit,\n locale,\n page: pageToFetch,\n select: {\n [parentFieldName]: true,\n [titleField]: true,\n [titlePathField]: true,\n },\n where: {\n [titleField]: { contains: query },\n },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Search failed')\n }\n\n const data = await response.json()\n const docs: SearchResult[] = (data.docs || []).map((doc: Record<string, unknown>) => ({\n ...doc,\n path: doc[titlePathField] || '',\n }))\n\n setResults(append ? (prev) => [...prev, ...docs] : docs)\n setHasNextPage(data.hasNextPage || false)\n setTotalDocs(data.totalDocs || 0)\n setPage(pageToFetch)\n setCurrentQuery(query)\n } catch {\n if (!append) {\n setResults([])\n setHasNextPage(false)\n setTotalDocs(0)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [api, collectionSlug, limit, locale, parentFieldName, serverURL, titleField, titlePathField],\n )\n\n const search = useCallback(\n async (query: string) => {\n await fetchResults({ append: false, pageToFetch: 1, query })\n },\n [fetchResults],\n )\n\n const loadMore = useCallback(async () => {\n if (isLoading || !hasNextPage || !currentQuery) {\n return\n }\n\n await fetchResults({ append: true, pageToFetch: page + 1, query: currentQuery })\n }, [isLoading, hasNextPage, currentQuery, page, fetchResults])\n\n const clearResults = useCallback(() => {\n setResults([])\n setHasNextPage(false)\n setTotalDocs(0)\n setPage(1)\n setCurrentQuery('')\n }, [])\n\n return {\n clearResults,\n hasNextPage,\n isLoading,\n loadMore,\n results,\n search,\n totalDocs,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useHierarchySearch.js","names":["formatAdminURL","qs","useCallback","useState","useBranchParam","useConfig","useLocale","useHierarchySearch","collectionSlug","limit","parentFieldName","titleField","titlePathField","results","setResults","isLoading","setIsLoading","hasNextPage","setHasNextPage","totalDocs","setTotalDocs","page","setPage","currentQuery","setCurrentQuery","config","routes","api","serverURL","code","locale","branch","fetchResults","append","pageToFetch","query","queryString","stringify","computeHierarchyPaths","select","where","contains","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","docs","map","doc","prev","search","loadMore","clearResults"],"sources":["../../../../src/elements/Hierarchy/Search/useHierarchySearch.ts"],"sourcesContent":["'use client'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useState } from 'react'\n\nimport type { SearchResult } from './types.js'\n\nimport { useBranchParam } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\n\ntype UseHierarchySearchArgs = {\n collectionSlug: string\n limit?: number\n parentFieldName?: string\n titleField: string\n titlePathField?: string\n}\n\ntype UseHierarchySearchReturn = {\n clearResults: () => void\n hasNextPage: boolean\n isLoading: boolean\n loadMore: () => Promise<void>\n results: SearchResult[]\n search: (query: string) => Promise<void>\n totalDocs: number\n}\n\nexport const useHierarchySearch = ({\n collectionSlug,\n limit = 15,\n parentFieldName = 'parent',\n titleField,\n titlePathField = '_h_titlePath',\n}: UseHierarchySearchArgs): UseHierarchySearchReturn => {\n const [results, setResults] = useState<SearchResult[]>([])\n const [isLoading, setIsLoading] = useState(false)\n const [hasNextPage, setHasNextPage] = useState(false)\n const [totalDocs, setTotalDocs] = useState(0)\n const [page, setPage] = useState(1)\n const [currentQuery, setCurrentQuery] = useState('')\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n\n const fetchResults = useCallback(\n async ({\n append,\n pageToFetch,\n query,\n }: {\n append: boolean\n pageToFetch: number\n query: string\n }) => {\n setIsLoading(true)\n\n try {\n const queryString = qs.stringify(\n {\n branch,\n computeHierarchyPaths: true,\n limit,\n locale,\n page: pageToFetch,\n select: {\n [parentFieldName]: true,\n [titleField]: true,\n [titlePathField]: true,\n },\n where: {\n [titleField]: { contains: query },\n },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Search failed')\n }\n\n const data = await response.json()\n const docs: SearchResult[] = (data.docs || []).map((doc: Record<string, unknown>) => ({\n ...doc,\n path: doc[titlePathField] || '',\n }))\n\n setResults(append ? (prev) => [...prev, ...docs] : docs)\n setHasNextPage(data.hasNextPage || false)\n setTotalDocs(data.totalDocs || 0)\n setPage(pageToFetch)\n setCurrentQuery(query)\n } catch {\n if (!append) {\n setResults([])\n setHasNextPage(false)\n setTotalDocs(0)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [api, collectionSlug, limit, locale, parentFieldName, serverURL, titleField, titlePathField],\n )\n\n const search = useCallback(\n async (query: string) => {\n await fetchResults({ append: false, pageToFetch: 1, query })\n },\n [fetchResults],\n )\n\n const loadMore = useCallback(async () => {\n if (isLoading || !hasNextPage || !currentQuery) {\n return\n }\n\n await fetchResults({ append: true, pageToFetch: page + 1, query: currentQuery })\n }, [isLoading, hasNextPage, currentQuery, page, fetchResults])\n\n const clearResults = useCallback(() => {\n setResults([])\n setHasNextPage(false)\n setTotalDocs(0)\n setPage(1)\n setCurrentQuery('')\n }, [])\n\n return {\n clearResults,\n hasNextPage,\n isLoading,\n loadMore,\n results,\n search,\n totalDocs,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGpD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAWtD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CACxC;IACE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,yBAAyB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9D,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,oBAAoB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,qBAAqB,CAgH1B,CAAA"}
1
+ {"version":3,"file":"HierarchySidebarTab.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGpD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAWtD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CACxC;IACE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,yBAAyB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9D,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,oBAAoB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,qBAAqB,CAmI1B,CAAA"}
@@ -13,7 +13,7 @@ import { HydrateHierarchyProvider } from '../HydrateProvider/index.js';
13
13
  import { HierarchySearch } from '../Search/index.js';
14
14
  import { HierarchyTree } from './index.js';
15
15
  export const HierarchySidebarTab = t0 => {
16
- const $ = _c(40);
16
+ const $ = _c(44);
17
17
  const {
18
18
  baseFilter,
19
19
  collectionSpecificOptions,
@@ -57,83 +57,107 @@ export const HierarchySidebarTab = t0 => {
57
57
  treeRefreshKeys
58
58
  } = useHierarchy();
59
59
  const sidebarTabs = useSidebarTabs();
60
- const tabSlug = `hierarchy-${hierarchyCollectionSlug}`;
60
+ const resolvedParentFieldName = parentFieldName ?? "parent";
61
61
  let t4;
62
- if ($[2] !== hierarchyCollectionSlug || $[3] !== treeRefreshKeys) {
63
- t4 = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0;
64
- $[2] = hierarchyCollectionSlug;
65
- $[3] = treeRefreshKeys;
62
+ if ($[2] !== resolvedParentFieldName || $[3] !== searchParams) {
63
+ t4 = searchParams.get(resolvedParentFieldName);
64
+ $[2] = resolvedParentFieldName;
65
+ $[3] = searchParams;
66
66
  $[4] = t4;
67
67
  } else {
68
68
  t4 = $[4];
69
69
  }
70
- const treeRefreshKey = t4;
71
- const prevTreeRefreshKeyRef = useRef(treeRefreshKey);
70
+ const currentParentParam = t4;
71
+ const tabSlug = `hierarchy-${hierarchyCollectionSlug}`;
72
+ const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug;
72
73
  let t5;
74
+ if ($[5] !== hierarchyCollectionSlug || $[6] !== treeRefreshKeys) {
75
+ t5 = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0;
76
+ $[5] = hierarchyCollectionSlug;
77
+ $[6] = treeRefreshKeys;
78
+ $[7] = t5;
79
+ } else {
80
+ t5 = $[7];
81
+ }
82
+ const treeRefreshKey = t5;
83
+ const prevTreeRefreshKeyRef = useRef(treeRefreshKey);
73
84
  let t6;
74
- if ($[5] !== sidebarTabs || $[6] !== tabSlug || $[7] !== treeRefreshKey) {
75
- t5 = () => {
85
+ let t7;
86
+ if ($[8] !== currentParentParam || $[9] !== isActiveTab || $[10] !== resolvedParentFieldName || $[11] !== sidebarTabs || $[12] !== tabSlug || $[13] !== treeRefreshKey) {
87
+ t6 = () => {
76
88
  if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {
77
89
  prevTreeRefreshKeyRef.current = treeRefreshKey;
78
- sidebarTabs?.reloadTabContent(tabSlug);
90
+ sidebarTabs?.reloadTabContent(tabSlug, {
91
+ searchParams: isActiveTab && currentParentParam ? {
92
+ [resolvedParentFieldName]: currentParentParam
93
+ } : undefined
94
+ });
79
95
  }
80
96
  };
81
- t6 = [treeRefreshKey, sidebarTabs, tabSlug];
82
- $[5] = sidebarTabs;
83
- $[6] = tabSlug;
84
- $[7] = treeRefreshKey;
85
- $[8] = t5;
86
- $[9] = t6;
97
+ t7 = [treeRefreshKey, sidebarTabs, tabSlug, isActiveTab, currentParentParam, resolvedParentFieldName];
98
+ $[8] = currentParentParam;
99
+ $[9] = isActiveTab;
100
+ $[10] = resolvedParentFieldName;
101
+ $[11] = sidebarTabs;
102
+ $[12] = tabSlug;
103
+ $[13] = treeRefreshKey;
104
+ $[14] = t6;
105
+ $[15] = t7;
87
106
  } else {
88
- t5 = $[8];
89
- t6 = $[9];
107
+ t6 = $[14];
108
+ t7 = $[15];
90
109
  }
91
- useEffect(t5, t6);
92
- let t7;
93
- if ($[10] !== adminRoute || $[11] !== baseFilter || $[12] !== collectionSpecificOptions || $[13] !== hierarchyCollectionSlug || $[14] !== icon || $[15] !== initialData || $[16] !== initialExpandedNodes || $[17] !== initialSelectedFilters || $[18] !== isSearchActive || $[19] !== parentFieldName || $[20] !== router || $[21] !== searchParams || $[22] !== selectedFilters || $[23] !== selectedNodeIdFromServer || $[24] !== setSelectedFiltersContext || $[25] !== sidebarTabs?.activeTabSlug || $[26] !== startRouteTransition || $[27] !== tabSlug || $[28] !== treeLimit || $[29] !== typeFieldName || $[30] !== useAsTitle) {
94
- const parentParam = searchParams.get(parentFieldName ?? "parent");
95
- const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug;
96
- const selectedNodeId = isActiveTab ? parentParam ?? selectedNodeIdFromServer ?? undefined : undefined;
97
- const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : "";
98
- let t8;
99
- if ($[32] !== setSelectedFiltersContext) {
100
- t8 = filters => {
101
- setSelectedFiltersLocal(filters);
102
- setSelectedFiltersContext(filters);
103
- };
104
- $[32] = setSelectedFiltersContext;
105
- $[33] = t8;
106
- } else {
107
- t8 = $[33];
108
- }
109
- const handleFilterChange = t8;
110
- let t9;
111
- if ($[34] !== adminRoute || $[35] !== hierarchyCollectionSlug || $[36] !== parentFieldName || $[37] !== router || $[38] !== startRouteTransition) {
112
- t9 = t10 => {
113
- const {
114
- id
115
- } = t10;
116
- const queryParam = parentFieldName ?? "parent";
117
- const url = formatAdminURL({
118
- adminRoute,
119
- path: `/collections/${hierarchyCollectionSlug}/hierarchy?${queryParam}=${id}`
120
- });
121
- startRouteTransition(() => {
122
- router.push(url);
123
- router.refresh();
124
- });
125
- };
126
- $[34] = adminRoute;
127
- $[35] = hierarchyCollectionSlug;
128
- $[36] = parentFieldName;
129
- $[37] = router;
130
- $[38] = startRouteTransition;
131
- $[39] = t9;
132
- } else {
133
- t9 = $[39];
134
- }
135
- const handleNavigateToParent = t9;
136
- t7 = _jsxs(_Fragment, {
110
+ useEffect(t6, t7);
111
+ const selectedNodeId = isActiveTab ? currentParentParam ?? selectedNodeIdFromServer ?? undefined : undefined;
112
+ let t8;
113
+ if ($[16] !== baseFilter) {
114
+ t8 = baseFilter ? JSON.stringify(baseFilter) : "";
115
+ $[16] = baseFilter;
116
+ $[17] = t8;
117
+ } else {
118
+ t8 = $[17];
119
+ }
120
+ const baseFilterKey = t8;
121
+ let t9;
122
+ if ($[18] !== setSelectedFiltersContext) {
123
+ t9 = filters => {
124
+ setSelectedFiltersLocal(filters);
125
+ setSelectedFiltersContext(filters);
126
+ };
127
+ $[18] = setSelectedFiltersContext;
128
+ $[19] = t9;
129
+ } else {
130
+ t9 = $[19];
131
+ }
132
+ const handleFilterChange = t9;
133
+ let t10;
134
+ if ($[20] !== adminRoute || $[21] !== hierarchyCollectionSlug || $[22] !== resolvedParentFieldName || $[23] !== router || $[24] !== startRouteTransition) {
135
+ t10 = t11 => {
136
+ const {
137
+ id
138
+ } = t11;
139
+ const url = formatAdminURL({
140
+ adminRoute,
141
+ path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`
142
+ });
143
+ startRouteTransition(() => {
144
+ router.push(url);
145
+ router.refresh();
146
+ });
147
+ };
148
+ $[20] = adminRoute;
149
+ $[21] = hierarchyCollectionSlug;
150
+ $[22] = resolvedParentFieldName;
151
+ $[23] = router;
152
+ $[24] = startRouteTransition;
153
+ $[25] = t10;
154
+ } else {
155
+ t10 = $[25];
156
+ }
157
+ const handleNavigateToParent = t10;
158
+ let t11;
159
+ if ($[26] !== baseFilter || $[27] !== baseFilterKey || $[28] !== collectionSpecificOptions || $[29] !== handleFilterChange || $[30] !== handleNavigateToParent || $[31] !== hierarchyCollectionSlug || $[32] !== icon || $[33] !== initialData || $[34] !== initialExpandedNodes || $[35] !== initialSelectedFilters || $[36] !== isSearchActive || $[37] !== parentFieldName || $[38] !== selectedFilters || $[39] !== selectedNodeId || $[40] !== treeLimit || $[41] !== typeFieldName || $[42] !== useAsTitle) {
160
+ t11 = _jsxs(_Fragment, {
137
161
  children: [_jsx(HydrateHierarchyProvider, {
138
162
  baseFilter,
139
163
  collectionSlug: hierarchyCollectionSlug,
@@ -166,31 +190,27 @@ export const HierarchySidebarTab = t0 => {
166
190
  }, `${hierarchyCollectionSlug}-${baseFilterKey}`)]
167
191
  })]
168
192
  });
169
- $[10] = adminRoute;
170
- $[11] = baseFilter;
171
- $[12] = collectionSpecificOptions;
172
- $[13] = hierarchyCollectionSlug;
173
- $[14] = icon;
174
- $[15] = initialData;
175
- $[16] = initialExpandedNodes;
176
- $[17] = initialSelectedFilters;
177
- $[18] = isSearchActive;
178
- $[19] = parentFieldName;
179
- $[20] = router;
180
- $[21] = searchParams;
181
- $[22] = selectedFilters;
182
- $[23] = selectedNodeIdFromServer;
183
- $[24] = setSelectedFiltersContext;
184
- $[25] = sidebarTabs?.activeTabSlug;
185
- $[26] = startRouteTransition;
186
- $[27] = tabSlug;
187
- $[28] = treeLimit;
188
- $[29] = typeFieldName;
189
- $[30] = useAsTitle;
190
- $[31] = t7;
193
+ $[26] = baseFilter;
194
+ $[27] = baseFilterKey;
195
+ $[28] = collectionSpecificOptions;
196
+ $[29] = handleFilterChange;
197
+ $[30] = handleNavigateToParent;
198
+ $[31] = hierarchyCollectionSlug;
199
+ $[32] = icon;
200
+ $[33] = initialData;
201
+ $[34] = initialExpandedNodes;
202
+ $[35] = initialSelectedFilters;
203
+ $[36] = isSearchActive;
204
+ $[37] = parentFieldName;
205
+ $[38] = selectedFilters;
206
+ $[39] = selectedNodeId;
207
+ $[40] = treeLimit;
208
+ $[41] = typeFieldName;
209
+ $[42] = useAsTitle;
210
+ $[43] = t11;
191
211
  } else {
192
- t7 = $[31];
212
+ t11 = $[43];
193
213
  }
194
- return t7;
214
+ return t11;
195
215
  };
196
216
  //# sourceMappingURL=HierarchySidebarTab.js.map