@payloadcms/ui 4.0.0-internal.532221d → 4.0.0-internal.567a487

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 (501) hide show
  1. package/dist/elements/AppHeader/index.css +5 -0
  2. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  3. package/dist/elements/AppHeader/index.js +3 -0
  4. package/dist/elements/AppHeader/index.js.map +1 -1
  5. package/dist/elements/ArrayAction/index.d.ts +1 -0
  6. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +45 -32
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.d.ts.map +1 -1
  10. package/dist/elements/Autosave/index.js +3 -0
  11. package/dist/elements/Autosave/index.js.map +1 -1
  12. package/dist/elements/BranchSelector/NewBranchModal/index.css +46 -0
  13. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +12 -0
  14. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +1 -0
  15. package/dist/elements/BranchSelector/NewBranchModal/index.js +174 -0
  16. package/dist/elements/BranchSelector/NewBranchModal/index.js.map +1 -0
  17. package/dist/elements/BranchSelector/index.css +172 -0
  18. package/dist/elements/BranchSelector/index.d.ts +13 -0
  19. package/dist/elements/BranchSelector/index.d.ts.map +1 -0
  20. package/dist/elements/BranchSelector/index.js +255 -0
  21. package/dist/elements/BranchSelector/index.js.map +1 -0
  22. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
  24. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  25. package/dist/elements/Button/index.css +2 -2
  26. package/dist/elements/ChangeSummary/index.css +18 -0
  27. package/dist/elements/ChangeSummary/index.d.ts +28 -0
  28. package/dist/elements/ChangeSummary/index.d.ts.map +1 -0
  29. package/dist/elements/ChangeSummary/index.js +147 -0
  30. package/dist/elements/ChangeSummary/index.js.map +1 -0
  31. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  32. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  33. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  34. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  35. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  36. package/dist/elements/ColumnSelection/Popup.js +3 -3
  37. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  38. package/dist/elements/Combobox/index.css +84 -23
  39. package/dist/elements/Combobox/index.d.ts +21 -0
  40. package/dist/elements/Combobox/index.d.ts.map +1 -1
  41. package/dist/elements/Combobox/index.js +66 -21
  42. package/dist/elements/Combobox/index.js.map +1 -1
  43. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  44. package/dist/elements/DeleteDocument/index.js +9 -2
  45. package/dist/elements/DeleteDocument/index.js.map +1 -1
  46. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  47. package/dist/elements/DeleteMany/index.js +4 -1
  48. package/dist/elements/DeleteMany/index.js.map +1 -1
  49. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +5 -3
  50. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +12 -0
  51. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +12 -0
  52. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +1 -0
  53. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +83 -0
  54. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +1 -0
  55. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +14 -0
  56. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +1 -0
  57. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +28 -0
  58. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +1 -0
  59. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  60. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +32 -1
  61. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  62. package/dist/elements/Drawer/index.css +10 -4
  63. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  64. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  65. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  66. package/dist/elements/DuplicateDocument/index.js +6 -1
  67. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  68. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  69. package/dist/elements/EditMany/DrawerContent.js +4 -1
  70. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  71. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
  73. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  74. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
  76. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  77. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
  78. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  79. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
  80. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  81. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  82. package/dist/elements/Hierarchy/Modal/index.js +3 -0
  83. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  84. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
  86. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  87. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  88. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
  89. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  90. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
  92. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  93. package/dist/elements/IDLabel/index.css +6 -0
  94. package/dist/elements/IDLabel/index.d.ts +1 -1
  95. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  96. package/dist/elements/IDLabel/index.js +16 -21
  97. package/dist/elements/IDLabel/index.js.map +1 -1
  98. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  99. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  100. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  101. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  102. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  103. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
  104. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  105. package/dist/elements/MergeBranch/context.d.ts +67 -0
  106. package/dist/elements/MergeBranch/context.d.ts.map +1 -0
  107. package/dist/elements/MergeBranch/context.js +47 -0
  108. package/dist/elements/MergeBranch/context.js.map +1 -0
  109. package/dist/elements/MergeBranch/index.css +136 -0
  110. package/dist/elements/MergeBranch/index.d.ts +15 -0
  111. package/dist/elements/MergeBranch/index.d.ts.map +1 -0
  112. package/dist/elements/MergeBranch/index.js +545 -0
  113. package/dist/elements/MergeBranch/index.js.map +1 -0
  114. package/dist/elements/MergeBranch/provider.d.ts +12 -0
  115. package/dist/elements/MergeBranch/provider.d.ts.map +1 -0
  116. package/dist/elements/MergeBranch/provider.js +19 -0
  117. package/dist/elements/MergeBranch/provider.js.map +1 -0
  118. package/dist/elements/MergeBranch/slug.d.ts +9 -0
  119. package/dist/elements/MergeBranch/slug.d.ts.map +1 -0
  120. package/dist/elements/MergeBranch/slug.js +8 -0
  121. package/dist/elements/MergeBranch/slug.js.map +1 -0
  122. package/dist/elements/Nav/context.js +2 -2
  123. package/dist/elements/Nav/context.js.map +1 -1
  124. package/dist/elements/Nav/getNavPrefs.d.ts +6 -0
  125. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  126. package/dist/elements/Nav/getNavPrefs.js +14 -46
  127. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  128. package/dist/elements/NavGroup/index.js +1 -1
  129. package/dist/elements/NavGroup/index.js.map +1 -1
  130. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  131. package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
  132. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  133. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  134. package/dist/elements/Popup/index.js +1 -1
  135. package/dist/elements/Popup/index.js.map +1 -1
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  137. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  138. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/PublishButton/index.js +6 -2
  140. package/dist/elements/PublishButton/index.js.map +1 -1
  141. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  142. package/dist/elements/PublishMany/DrawerContent.js +4 -1
  143. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  144. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  145. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  146. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  147. package/dist/elements/RelationshipTable/index.js +5 -2
  148. package/dist/elements/RelationshipTable/index.js.map +1 -1
  149. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  150. package/dist/elements/RestoreButton/index.js +4 -1
  151. package/dist/elements/RestoreButton/index.js.map +1 -1
  152. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  153. package/dist/elements/RestoreMany/index.js +3 -0
  154. package/dist/elements/RestoreMany/index.js.map +1 -1
  155. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  156. package/dist/elements/SaveDraftButton/index.js +15 -2
  157. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  158. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  159. package/dist/elements/SchedulePublishButton/index.js +7 -1
  160. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  161. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  162. package/dist/elements/SortHeader/index.js +29 -26
  163. package/dist/elements/SortHeader/index.js.map +1 -1
  164. package/dist/elements/Status/index.d.ts.map +1 -1
  165. package/dist/elements/Status/index.js +16 -3
  166. package/dist/elements/Status/index.js.map +1 -1
  167. package/dist/elements/StepNav/index.css +71 -14
  168. package/dist/elements/StepNav/index.d.ts.map +1 -1
  169. package/dist/elements/StepNav/index.js +135 -69
  170. package/dist/elements/StepNav/index.js.map +1 -1
  171. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +34 -0
  172. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +13 -0
  173. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +1 -0
  174. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +51 -0
  175. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -0
  176. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  177. package/dist/elements/Table/DefaultCell/index.js +3 -11
  178. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  179. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  180. package/dist/elements/Table/OrderableTable.js +3 -1
  181. package/dist/elements/Table/OrderableTable.js.map +1 -1
  182. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  183. package/dist/elements/Table/RelationshipProvider/index.js +29 -23
  184. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  185. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  186. package/dist/elements/UnpublishButton/index.js +4 -1
  187. package/dist/elements/UnpublishButton/index.js.map +1 -1
  188. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  189. package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
  190. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  191. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  192. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
  193. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  194. package/dist/exports/client/index.d.ts +19 -1
  195. package/dist/exports/client/index.d.ts.map +1 -1
  196. package/dist/exports/client/index.js +1 -1
  197. package/dist/exports/client/index.js.map +3 -3
  198. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  199. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  200. package/dist/fields/Array/ArrayRow.js +2 -0
  201. package/dist/fields/Array/ArrayRow.js.map +1 -1
  202. package/dist/fields/Array/index.d.ts.map +1 -1
  203. package/dist/fields/Array/index.js +38 -10
  204. package/dist/fields/Array/index.js.map +1 -1
  205. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  206. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  207. package/dist/fields/Blocks/BlockRow.js +2 -0
  208. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  209. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  210. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  211. package/dist/fields/Blocks/RowActions.js +22 -19
  212. package/dist/fields/Blocks/RowActions.js.map +1 -1
  213. package/dist/fields/Blocks/index.d.ts.map +1 -1
  214. package/dist/fields/Blocks/index.js +35 -7
  215. package/dist/fields/Blocks/index.js.map +1 -1
  216. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  217. package/dist/fields/Relationship/Input.js +5 -1
  218. package/dist/fields/Relationship/Input.js.map +1 -1
  219. package/dist/fields/Upload/Input.d.ts.map +1 -1
  220. package/dist/fields/Upload/Input.js +4 -1
  221. package/dist/fields/Upload/Input.js.map +1 -1
  222. package/dist/forms/Form/index.d.ts.map +1 -1
  223. package/dist/forms/Form/index.js +4 -1
  224. package/dist/forms/Form/index.js.map +1 -1
  225. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  226. package/dist/hooks/usePayloadAPI.js +44 -40
  227. package/dist/hooks/usePayloadAPI.js.map +1 -1
  228. package/dist/icons/Branch/index.css +5 -0
  229. package/dist/icons/Branch/index.d.ts +7 -0
  230. package/dist/icons/Branch/index.d.ts.map +1 -0
  231. package/dist/icons/Branch/index.js +25 -0
  232. package/dist/icons/Branch/index.js.map +1 -0
  233. package/dist/icons/Edit/index.d.ts +0 -1
  234. package/dist/icons/Edit/index.d.ts.map +1 -1
  235. package/dist/icons/Edit/index.js +4 -4
  236. package/dist/icons/Edit/index.js.map +1 -1
  237. package/dist/providers/Actions/index.d.ts +1 -0
  238. package/dist/providers/Actions/index.d.ts.map +1 -1
  239. package/dist/providers/Actions/index.js +43 -11
  240. package/dist/providers/Actions/index.js.map +1 -1
  241. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  242. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  243. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  244. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  245. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  246. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  247. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  248. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  249. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  250. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  251. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  252. package/dist/providers/Auth/authSessionRequests.js +119 -0
  253. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  254. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  255. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  256. package/dist/providers/Auth/index.d.ts +2 -56
  257. package/dist/providers/Auth/index.d.ts.map +1 -1
  258. package/dist/providers/Auth/index.js +283 -135
  259. package/dist/providers/Auth/index.js.map +1 -1
  260. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  261. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  262. package/dist/providers/Auth/sessionActivity.js +49 -0
  263. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  264. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  265. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  266. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  267. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  268. package/dist/providers/Auth/sessionTiming.js +18 -0
  269. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  270. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  271. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  272. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  273. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  274. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  275. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  276. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  277. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  278. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  279. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  280. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  281. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  282. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  283. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  284. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  285. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  286. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  287. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  288. package/dist/providers/Auth/types.d.ts +65 -0
  289. package/dist/providers/Auth/types.d.ts.map +1 -0
  290. package/dist/providers/Auth/types.js +2 -0
  291. package/dist/providers/Auth/types.js.map +1 -0
  292. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  293. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  294. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  295. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  296. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  297. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  298. package/dist/providers/Branch/index.d.ts +68 -0
  299. package/dist/providers/Branch/index.d.ts.map +1 -0
  300. package/dist/providers/Branch/index.js +193 -0
  301. package/dist/providers/Branch/index.js.map +1 -0
  302. package/dist/providers/Branch/index.server.d.ts +14 -0
  303. package/dist/providers/Branch/index.server.d.ts.map +1 -0
  304. package/dist/providers/Branch/index.server.js +125 -0
  305. package/dist/providers/Branch/index.server.js.map +1 -0
  306. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  307. package/dist/providers/DocumentInfo/index.js +5 -1
  308. package/dist/providers/DocumentInfo/index.js.map +1 -1
  309. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  310. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  311. package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
  312. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  313. package/dist/providers/FormErrorHandler/index.d.ts +5 -1
  314. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  315. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  316. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  317. package/dist/providers/Hierarchy/index.js +4 -1
  318. package/dist/providers/Hierarchy/index.js.map +1 -1
  319. package/dist/providers/Locale/index.d.ts.map +1 -1
  320. package/dist/providers/Locale/index.js +41 -36
  321. package/dist/providers/Locale/index.js.map +1 -1
  322. package/dist/providers/Preferences/index.d.ts +3 -1
  323. package/dist/providers/Preferences/index.d.ts.map +1 -1
  324. package/dist/providers/Preferences/index.js +9 -3
  325. package/dist/providers/Preferences/index.js.map +1 -1
  326. package/dist/providers/Root/index.js +4 -4
  327. package/dist/providers/Root/index.js.map +1 -1
  328. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  329. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  330. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  331. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  332. package/dist/providers/RouteTransition/index.d.ts +2 -0
  333. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  334. package/dist/providers/RouteTransition/index.js +42 -14
  335. package/dist/providers/RouteTransition/index.js.map +1 -1
  336. package/dist/styles.css +1 -1
  337. package/dist/templates/Default/index.d.ts +1 -0
  338. package/dist/templates/Default/index.d.ts.map +1 -1
  339. package/dist/templates/Default/index.js +44 -36
  340. package/dist/templates/Default/index.js.map +1 -1
  341. package/dist/utilities/getAdminPreferences.d.ts +14 -0
  342. package/dist/utilities/getAdminPreferences.d.ts.map +1 -0
  343. package/dist/utilities/getAdminPreferences.js +22 -0
  344. package/dist/utilities/getAdminPreferences.js.map +1 -0
  345. package/dist/utilities/getRequestBranch.d.ts +20 -0
  346. package/dist/utilities/getRequestBranch.d.ts.map +1 -0
  347. package/dist/utilities/getRequestBranch.js +35 -0
  348. package/dist/utilities/getRequestBranch.js.map +1 -0
  349. package/dist/utilities/getVersions.d.ts +6 -1
  350. package/dist/utilities/getVersions.d.ts.map +1 -1
  351. package/dist/utilities/getVersions.js +5 -0
  352. package/dist/utilities/getVersions.js.map +1 -1
  353. package/dist/utilities/initReq.d.ts.map +1 -1
  354. package/dist/utilities/initReq.js +8 -0
  355. package/dist/utilities/initReq.js.map +1 -1
  356. package/dist/utilities/matchesSearchQuery.d.ts +12 -0
  357. package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
  358. package/dist/utilities/matchesSearchQuery.js +23 -0
  359. package/dist/utilities/matchesSearchQuery.js.map +1 -0
  360. package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
  361. package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
  362. package/dist/utilities/scheduleMergeHandler.d.ts +33 -0
  363. package/dist/utilities/scheduleMergeHandler.d.ts.map +1 -0
  364. package/dist/utilities/scheduleMergeHandler.js +119 -0
  365. package/dist/utilities/scheduleMergeHandler.js.map +1 -0
  366. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  367. package/dist/utilities/schedulePublishHandler.js +10 -0
  368. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  369. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  370. package/dist/utilities/serverFunctionRegistry.js +6 -0
  371. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  372. package/dist/views/API/index.client.d.ts.map +1 -1
  373. package/dist/views/API/index.client.js +10 -2
  374. package/dist/views/API/index.client.js.map +1 -1
  375. package/dist/views/Branch/BranchChanges/index.d.ts +23 -0
  376. package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -0
  377. package/dist/views/Branch/BranchChanges/index.js +150 -0
  378. package/dist/views/Branch/BranchChanges/index.js.map +1 -0
  379. package/dist/views/Branch/ChangedDocuments/index.css +118 -0
  380. package/dist/views/Branch/ChangedDocuments/index.d.ts +34 -0
  381. package/dist/views/Branch/ChangedDocuments/index.d.ts.map +1 -0
  382. package/dist/views/Branch/ChangedDocuments/index.js +233 -0
  383. package/dist/views/Branch/ChangedDocuments/index.js.map +1 -0
  384. package/dist/views/Branch/DiscardChangesButton/index.d.ts +16 -0
  385. package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +1 -0
  386. package/dist/views/Branch/DiscardChangesButton/index.js +106 -0
  387. package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -0
  388. package/dist/views/Branch/Manage/index.d.ts +11 -0
  389. package/dist/views/Branch/Manage/index.d.ts.map +1 -0
  390. package/dist/views/Branch/Manage/index.js +71 -0
  391. package/dist/views/Branch/Manage/index.js.map +1 -0
  392. package/dist/views/Branch/MergeChangesButton/index.d.ts +14 -0
  393. package/dist/views/Branch/MergeChangesButton/index.d.ts.map +1 -0
  394. package/dist/views/Branch/MergeChangesButton/index.js +55 -0
  395. package/dist/views/Branch/MergeChangesButton/index.js.map +1 -0
  396. package/dist/views/Branch/MergeLedger/index.css +137 -0
  397. package/dist/views/Branch/MergeLedger/index.d.ts +31 -0
  398. package/dist/views/Branch/MergeLedger/index.d.ts.map +1 -0
  399. package/dist/views/Branch/MergeLedger/index.js +211 -0
  400. package/dist/views/Branch/MergeLedger/index.js.map +1 -0
  401. package/dist/views/Branch/ScheduledMerges/index.css +83 -0
  402. package/dist/views/Branch/ScheduledMerges/index.d.ts +32 -0
  403. package/dist/views/Branch/ScheduledMerges/index.d.ts.map +1 -0
  404. package/dist/views/Branch/ScheduledMerges/index.js +183 -0
  405. package/dist/views/Branch/ScheduledMerges/index.js.map +1 -0
  406. package/dist/views/Branch/index.css +77 -0
  407. package/dist/views/Branch/index.d.ts +17 -0
  408. package/dist/views/Branch/index.d.ts.map +1 -0
  409. package/dist/views/Branch/index.js +188 -0
  410. package/dist/views/Branch/index.js.map +1 -0
  411. package/dist/views/Branch/renderBranchDiff.d.ts +29 -0
  412. package/dist/views/Branch/renderBranchDiff.d.ts.map +1 -0
  413. package/dist/views/Branch/renderBranchDiff.js +151 -0
  414. package/dist/views/Branch/renderBranchDiff.js.map +1 -0
  415. package/dist/views/Branch/renderMergeDiff.d.ts +24 -0
  416. package/dist/views/Branch/renderMergeDiff.d.ts.map +1 -0
  417. package/dist/views/Branch/renderMergeDiff.js +94 -0
  418. package/dist/views/Branch/renderMergeDiff.js.map +1 -0
  419. package/dist/views/Branches/index.d.ts +16 -0
  420. package/dist/views/Branches/index.d.ts.map +1 -0
  421. package/dist/views/Branches/index.js +54 -0
  422. package/dist/views/Branches/index.js.map +1 -0
  423. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  424. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  425. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  426. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  427. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  428. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  429. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  430. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  431. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  432. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  433. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  434. package/dist/views/Document/getDocumentView.js +21 -2
  435. package/dist/views/Document/getDocumentView.js.map +1 -1
  436. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  437. package/dist/views/Document/getMetaBySegment.js +9 -0
  438. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  439. package/dist/views/Document/index.d.ts +3 -1
  440. package/dist/views/Document/index.d.ts.map +1 -1
  441. package/dist/views/Document/index.js +8 -1
  442. package/dist/views/Document/index.js.map +1 -1
  443. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  444. package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
  445. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  446. package/dist/views/List/ListHeader/index.d.ts +1 -10
  447. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  448. package/dist/views/List/ListHeader/index.js +1 -3
  449. package/dist/views/List/ListHeader/index.js.map +1 -1
  450. package/dist/views/List/index.client.d.ts.map +1 -1
  451. package/dist/views/List/index.client.js +0 -14
  452. package/dist/views/List/index.client.js.map +1 -1
  453. package/dist/views/List/index.css +5 -0
  454. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  455. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  456. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  457. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  458. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  459. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  460. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  461. package/dist/views/Root/getRouteData.js +12 -4
  462. package/dist/views/Root/getRouteData.js.map +1 -1
  463. package/dist/views/Root/index.d.ts.map +1 -1
  464. package/dist/views/Root/index.js +1 -0
  465. package/dist/views/Root/index.js.map +1 -1
  466. package/dist/views/Version/Default/index.css +26 -2
  467. package/dist/views/Version/Default/index.d.ts.map +1 -1
  468. package/dist/views/Version/Default/index.js +18 -6
  469. package/dist/views/Version/Default/index.js.map +1 -1
  470. package/dist/views/Version/Default/types.d.ts +9 -0
  471. package/dist/views/Version/Default/types.d.ts.map +1 -1
  472. package/dist/views/Version/Default/types.js.map +1 -1
  473. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  474. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +8 -0
  475. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.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/dist/views/Version/index.d.ts.map +1 -1
  480. package/dist/views/Version/index.js +4 -0
  481. package/dist/views/Version/index.js.map +1 -1
  482. package/dist/views/Versions/buildColumns.d.ts +2 -1
  483. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  484. package/dist/views/Versions/buildColumns.js +21 -1
  485. package/dist/views/Versions/buildColumns.js.map +1 -1
  486. package/dist/views/Versions/cells/Branch/index.d.ts +12 -0
  487. package/dist/views/Versions/cells/Branch/index.d.ts.map +1 -0
  488. package/dist/views/Versions/cells/Branch/index.js +27 -0
  489. package/dist/views/Versions/cells/Branch/index.js.map +1 -0
  490. package/dist/views/Versions/index.client.d.ts +0 -1
  491. package/dist/views/Versions/index.client.d.ts.map +1 -1
  492. package/dist/views/Versions/index.client.js.map +1 -1
  493. package/dist/views/Versions/index.d.ts.map +1 -1
  494. package/dist/views/Versions/index.js +2 -14
  495. package/dist/views/Versions/index.js.map +1 -1
  496. package/package.json +5 -5
  497. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
  498. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
  499. package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
  500. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
  501. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["branchChangesCollectionSlug","branchesCollectionSlug","formatAdminURL","MAIN_BRANCH","React","useCallback","useEffect","useState","toast","CheckboxInput","FieldLabel","Radio","useConfig","useRouter","useRouteTransition","useServerFunctions","useTranslation","requests","buildUpcomingMergeWhere","Button","ChangeSummary","DatePickerField","DialogBody","DialogFooter","DialogHeader","DialogModal","Link","useModal","useMergeBranch","mergeBranchModalSlug","baseClass","SUMMARY_SAMPLE_LIMIT","MergeBranchModal","closeMerge","target","t","isModalOpen","router","startRouteTransition","serverFunction","config","routes","api","serverURL","mode","setMode","scheduledFor","setScheduledFor","isMerging","setIsMerging","progress","setProgress","countedChanges","setCountedChanges","sampledChanges","setSampledChanges","outcome","setOutcome","closeBranch","setCloseBranch","isScheduling","setIsScheduling","upcoming","setUpcoming","isOpen","branchSlug","knownChanges","changes","canCloseBranch","selectedChangeIDs","undefined","controller","AbortController","readChanges","response","get","apiRoute","path","params","depth","limit","select","collectionSlug","operation","where","branch","equals","signal","json","totalDocs","docs","length","_err","abort","loadUpcoming","sort","filter","doc","Boolean","waitUntil","map","id","String","reset","dismiss","reportResult","result","merged","success","count","blocked","forEach","message","error","info","handleSchedule","name","args","branchID","date","toLocaleString","dateStyle","timeStyle","refresh","handleCancel","deleteID","handleMergeNow","fetch","body","JSON","stringify","stream","credentials","headers","method","ok","catch","readMergeStream","onProgress","type","modeOptions","label","value","total","totalChanges","selectedCount","summaryChanges","summary","selected","mergedCount","isDone","percentComplete","Math","round","current","_jsxs","className","closeOnBlur","slug","_jsx","showClose","title","branchName","Fragment","showOperations","reviewURL","href","onClick","option","isSelected","onChange","readOnly","required","minDate","Date","pickerAppearance","event","buttonStyle","disabled","checked","onToggle","prev","join","style","width","each","changeID","size","reader","getReader","decoder","TextDecoder","buffered","handleLine","line","trimmed","trim","parse","Number","done","read","decode","lines","split","pop","terminal"],"sources":["../../../src/elements/MergeBranch/index.tsx"],"sourcesContent":["'use client'\n\nimport type { MergeResult, MergeStreamEvent } from 'payload'\n\nimport {\n branchChangesCollectionSlug,\n branchesCollectionSlug,\n formatAdminURL,\n MAIN_BRANCH,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SummarizableChange } from '../ChangeSummary/index.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { Radio } from '../../fields/RadioGroup/Radio/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { buildUpcomingMergeWhere } from '../../utilities/scheduleMergeHandler.js'\nimport { Button } from '../Button/index.js'\nimport { ChangeSummary } from '../ChangeSummary/index.js'\nimport { DatePickerField } from '../DatePicker/index.js'\nimport { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../Dialog/index.js'\nimport { Link } from '../Link/index.js'\nimport { useModal } from '../Modal/index.js'\nimport { useMergeBranch } from './context.js'\nimport { mergeBranchModalSlug } from './slug.js'\nimport './index.css'\n\nconst baseClass = 'merge-branch-modal'\n\ntype MergeMode = 'now' | 'schedule'\n\n/**\n * How many changes the modal will read to describe the merge.\n *\n * High enough to cover any branch a person is reviewing by hand, low enough that a\n * runaway branch does not turn opening this modal into a bulk read.\n */\nconst SUMMARY_SAMPLE_LIMIT = 200\n\ntype Progress = {\n current: number\n total: number\n}\n\n/**\n * The modal every merge entry point opens.\n *\n * Merging is a decision — what to take, and when — so it happens in a modal from\n * wherever the branch is on screen, rather than by routing somewhere first.\n *\n * The merge itself streams. A branch can hold hundreds of documents and each one\n * is a full write with hooks and validation, so \"merging 34 of 230\" is real\n * information rather than a spinner's decoration; see `endpoints/merge.ts` for\n * why that is a streamed response rather than a job and a polling loop.\n */\nexport const MergeBranchModal: React.FC = () => {\n const { closeMerge, target } = useMergeBranch()\n const { t } = useTranslation()\n const { isModalOpen } = useModal()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const { serverFunction } = useServerFunctions()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [mode, setMode] = useState<MergeMode>('now')\n const [scheduledFor, setScheduledFor] = useState<Date | undefined>()\n const [isMerging, setIsMerging] = useState(false)\n const [progress, setProgress] = useState<null | Progress>(null)\n const [countedChanges, setCountedChanges] = useState<null | number>(null)\n /** The branch's changes, read here when the opener did not already know them. */\n const [sampledChanges, setSampledChanges] = useState<null | SummarizableChange[]>(null)\n /** Set once the merge has finished, which switches the modal to its receipt. */\n const [outcome, setOutcome] = useState<MergeResult | null>(null)\n const [closeBranch, setCloseBranch] = useState(false)\n const [isScheduling, setIsScheduling] = useState(false)\n const [upcoming, setUpcoming] = useState<{ id: number | string; waitUntil: string }[]>([])\n\n const isOpen = isModalOpen(mergeBranchModalSlug)\n const branchSlug = target?.branchSlug\n const knownChanges = target?.changes\n\n // Offered only when nothing is left behind. Merging a subset means there is still\n // work on the branch by definition, so closing it would abandon that work — a\n // destructive act wearing a convenience checkbox. Computed up here because\n // `handleMergeNow` depends on it.\n const canCloseBranch = target?.selectedChangeIDs === undefined\n\n // Read on open rather than with the screen behind it: the switcher can be opened\n // from anywhere, and a summary nobody has asked to see is a query on every page\n // load. Skipped entirely when the opener already knows what it is merging.\n useEffect(() => {\n if (!isOpen || !branchSlug || knownChanges) {\n return\n }\n\n const controller = new AbortController()\n\n const readChanges = async () => {\n try {\n const response = await requests.get(\n formatAdminURL({ apiRoute: api, path: `/${branchChangesCollectionSlug}`, serverURL }),\n {\n params: {\n depth: 0,\n limit: SUMMARY_SAMPLE_LIMIT,\n select: { collectionSlug: true, operation: true },\n where: { branch: { equals: branchSlug } },\n },\n signal: controller.signal,\n },\n )\n\n const json = (await response.json()) as {\n docs?: SummarizableChange[]\n totalDocs?: number\n }\n\n if (typeof json?.totalDocs === 'number') {\n setCountedChanges(json.totalDocs)\n\n // Only when the sample is the whole set. A breakdown of the first 200 of\n // 900 changes would read as a description of the merge and be wrong about\n // it, so past that point the count says it on its own.\n setSampledChanges(json.docs?.length === json.totalDocs ? (json.docs ?? null) : null)\n }\n } catch (_err) {\n // A missing summary degrades the copy, not the action — the merge still\n // knows what it is applying.\n }\n }\n\n void readChanges()\n\n return () => controller.abort()\n }, [api, branchSlug, isOpen, knownChanges, serverURL])\n\n // Upcoming schedules for this branch, loaded when the schedule option is chosen\n // rather than with the modal — most merges are immediate and never ask.\n const loadUpcoming = useCallback(async () => {\n if (!branchSlug) {\n return\n }\n\n try {\n const response = await requests.get(\n formatAdminURL({ apiRoute: api, path: '/payload-jobs', serverURL }),\n {\n params: {\n depth: 0,\n limit: 10,\n sort: 'waitUntil',\n where: buildUpcomingMergeWhere({ branchSlug }),\n },\n },\n )\n\n const json = (await response.json()) as {\n docs?: { id: number | string; waitUntil?: string }[]\n }\n\n setUpcoming(\n (json.docs ?? [])\n .filter((doc) => Boolean(doc.waitUntil))\n .map((doc) => ({ id: doc.id, waitUntil: String(doc.waitUntil) })),\n )\n } catch (_err) {\n // A missing list costs the reader context, not the action.\n }\n }, [api, branchSlug, serverURL])\n\n useEffect(() => {\n if (isOpen && mode === 'schedule') {\n void loadUpcoming()\n }\n }, [isOpen, loadUpcoming, mode])\n\n const reset = useCallback(() => {\n setMode('now')\n setScheduledFor(undefined)\n setProgress(null)\n setOutcome(null)\n setCloseBranch(false)\n setUpcoming([])\n }, [])\n\n const dismiss = useCallback(() => {\n closeMerge()\n reset()\n }, [closeMerge, reset])\n\n const reportResult = useCallback(\n (result: MergeResult) => {\n if (result.merged.length) {\n toast.success(t('branching:mergedCount', { count: result.merged.length }))\n }\n\n // Blocked entries are per-document refusals, not a failed merge: the rest\n // was applied and the branch stays open for what was not.\n result.blocked.forEach(({ message }) => toast.error(message))\n\n if (!result.merged.length && !result.blocked.length) {\n toast.info(t('branching:noChangesYet'))\n }\n },\n [t],\n )\n\n const handleSchedule = useCallback(async () => {\n if (!target || !scheduledFor || isScheduling) {\n return\n }\n\n setIsScheduling(true)\n\n try {\n const result = (await serverFunction({\n name: 'schedule-merge',\n args: {\n branchID: target.branchID,\n changes: target.selectedChangeIDs,\n closeBranch: canCloseBranch && closeBranch,\n date: scheduledFor,\n },\n })) as { error?: string }\n\n if (result?.error) {\n toast.error(result.error)\n\n return\n }\n\n toast.success(\n t('branching:mergeScheduledFor', {\n date: scheduledFor.toLocaleString(undefined, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }),\n }),\n )\n\n dismiss()\n\n // The branch page shows nothing about a queued merge yet, but the jobs list\n // does — and the branch's own state may have been read before this.\n startRouteTransition(() => router.refresh())\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsScheduling(false)\n }\n }, [\n canCloseBranch,\n closeBranch,\n dismiss,\n isScheduling,\n router,\n scheduledFor,\n serverFunction,\n startRouteTransition,\n t,\n target,\n ])\n\n const handleCancel = useCallback(\n async (deleteID: number | string) => {\n setIsScheduling(true)\n\n try {\n await serverFunction({ name: 'schedule-merge', args: { deleteID } })\n await loadUpcoming()\n toast.success(t('general:deletedSuccessfully'))\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsScheduling(false)\n }\n },\n [loadUpcoming, serverFunction, t],\n )\n\n const handleMergeNow = useCallback(async () => {\n if (!target || isMerging) {\n return\n }\n\n setIsMerging(true)\n setProgress(null)\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${branchesCollectionSlug}/${target.branchID}/merge`,\n serverURL,\n }),\n {\n body: JSON.stringify({\n changes: target.selectedChangeIDs,\n // Ignored server-side when changes are left behind, but not sent at all\n // when a subset is selected: the checkbox is not offered then either.\n closeBranch: canCloseBranch && closeBranch,\n stream: true,\n }),\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n },\n )\n\n if (!response.ok || !response.body) {\n // A non-streaming failure still returns JSON — a 403 carrying `blocked`,\n // most usefully — so read it as the result rather than a bare error.\n const json = (await response.json().catch(() => null)) as MergeResult | null\n\n if (json?.blocked?.length) {\n reportResult(json)\n } else {\n toast.error(t('error:unknown'))\n }\n\n return\n }\n\n const result = await readMergeStream({\n body: response.body,\n onProgress: setProgress,\n })\n\n if (!result) {\n // The stream ended without a terminal event, which means the connection\n // dropped mid-merge. The transaction rolls back with it, so nothing was\n // applied — but say so rather than implying success.\n toast.error(t('branching:mergeInterrupted'))\n\n return\n }\n\n if (result.type === 'error') {\n toast.error(result.message)\n\n return\n }\n\n reportResult(result.result)\n\n // Held open rather than dismissed. A small branch merges faster than the\n // progress bar can be read, so closing on success would make the whole\n // operation a flicker — the reader is left guessing whether it ran. The\n // completed state is the receipt, and it is dismissed deliberately.\n setOutcome(result.result)\n\n // The changed-documents list and the branch's status both moved. Refreshed\n // behind the modal so the page is already correct when it is dismissed.\n startRouteTransition(() => router.refresh())\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsMerging(false)\n }\n }, [\n api,\n canCloseBranch,\n closeBranch,\n isMerging,\n reportResult,\n router,\n serverURL,\n startRouteTransition,\n t,\n target,\n ])\n\n if (!target) {\n return null\n }\n\n const modeOptions = [\n { label: t('branching:mergeNow'), value: 'now' },\n { label: t('branching:scheduleMerge'), value: 'schedule' },\n ]\n\n const total = target.totalChanges ?? countedChanges ?? undefined\n const selectedCount = target.selectedChangeIDs?.length\n const summaryChanges = target.changes ?? sampledChanges\n\n // Three cases, in order of how much is known: a subset chosen, the whole branch\n // with a count, and the whole branch before the count lands.\n const summary =\n selectedCount !== undefined && total !== undefined\n ? t('branching:mergeSelectedOfTotal', { selected: selectedCount, total })\n : total !== undefined\n ? t('branching:mergeAllCount', { count: total })\n : t('branching:mergeAllChanges')\n\n const mergedCount = outcome?.merged.length ?? 0\n const isDone = Boolean(outcome)\n\n // Completed bar rather than a residual fraction: the last progress event fires\n // *before* the last document is applied, so it never reaches 100% on its own.\n const percentComplete = isDone\n ? 100\n : progress?.total\n ? Math.round((progress.current / progress.total) * 100)\n : 0\n\n return (\n <DialogModal className={baseClass} closeOnBlur={!isMerging} slug={mergeBranchModalSlug}>\n <DialogHeader\n showClose={!isMerging}\n title={\n isDone\n ? t('branching:mergeComplete')\n : t('branching:mergeBranchInto', {\n branch: target.branchName,\n target: MAIN_BRANCH,\n })\n }\n />\n <DialogBody>\n {!isDone && (\n <React.Fragment>\n <div className={`${baseClass}__intro`}>\n <p className={`${baseClass}__summary`}>{summary}</p>\n\n {/* The ledger: what the count is made of, which is what decides whether\n this merge is the one the reader meant to run. */}\n {summaryChanges && <ChangeSummary changes={summaryChanges} showOperations />}\n\n {/* Offered only where the choice cannot be made: from the switcher,\n which can be opened anywhere. On the changed-documents view this\n would link back to the page the reader is already on. */}\n {target.reviewURL && !isMerging && (\n <Link className={`${baseClass}__review`} href={target.reviewURL} onClick={dismiss}>\n {t('branching:mergeOnlySelected')}\n </Link>\n )}\n </div>\n\n <div className={`${baseClass}__modes`}>\n {modeOptions.map((option) => (\n <Radio\n id={`merge-mode-${option.value}`}\n isSelected={mode === option.value}\n key={option.value}\n onChange={() => setMode(option.value as MergeMode)}\n option={option}\n path=\"merge-mode\"\n readOnly={isMerging}\n />\n ))}\n </div>\n\n {/* Directly under the option it belongs to, and indented to it: the date\n is part of choosing \"schedule\", not a separate question that happens\n to appear afterwards. */}\n {mode === 'schedule' && (\n <div className={`${baseClass}__schedule`}>\n <div className={`${baseClass}__schedule-field`}>\n {/* The same label scheduled publish puts on the same control, so\n the two schedulers read alike. */}\n <FieldLabel label={t('general:time')} path=\"merge-scheduled-for\" required />\n <DatePickerField\n id=\"merge-scheduled-for\"\n minDate={new Date()}\n onChange={(value) => setScheduledFor(value ?? undefined)}\n pickerAppearance=\"dayAndTime\"\n readOnly={isScheduling}\n value={scheduledFor}\n />\n </div>\n <p className={`${baseClass}__schedule-help`}>{t('branching:scheduleMergeHelp')}</p>\n\n {/* Already-queued merges for this branch, so a second schedule is a\n deliberate addition rather than an accidental duplicate. */}\n {upcoming.length > 0 && (\n <div className={`${baseClass}__upcoming`}>\n <h4 className={`${baseClass}__upcoming-title`}>\n {t('branching:scheduledMerges')}\n </h4>\n <ul className={`${baseClass}__upcoming-list`}>\n {upcoming.map((event) => (\n <li className={`${baseClass}__upcoming-row`} key={String(event.id)}>\n <span>\n {new Date(event.waitUntil).toLocaleString(undefined, {\n dateStyle: 'medium',\n timeStyle: 'short',\n })}\n </span>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__upcoming-cancel`}\n disabled={isScheduling}\n onClick={() => void handleCancel(event.id)}\n >\n {t('general:cancel')}\n </Button>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )}\n\n {/* The GitHub move: merging does not decide the branch's fate, the\n author does — and at the moment they have the context to. */}\n {canCloseBranch && (\n <div className={`${baseClass}__close-branch`}>\n <CheckboxInput\n checked={closeBranch}\n id=\"merge-close-branch\"\n label={t('branching:closeBranchAfterMerge')}\n onToggle={() => setCloseBranch((prev) => !prev)}\n readOnly={isMerging}\n />\n <p className={`${baseClass}__close-branch-help`}>\n {closeBranch\n ? t('branching:closeBranchHelpOn')\n : t('branching:closeBranchHelpOff')}\n </p>\n </div>\n )}\n </React.Fragment>\n )}\n\n {(isMerging || isDone) && (\n <div className={`${baseClass}__progress`}>\n <div className={`${baseClass}__progress-bar`}>\n <div\n className={[\n `${baseClass}__progress-fill`,\n isDone && `${baseClass}__progress-fill--complete`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ width: `${percentComplete}%` }}\n />\n </div>\n <span className={`${baseClass}__progress-label`}>\n {isDone\n ? t('branching:mergedOfTotal', { current: mergedCount, total: mergedCount })\n : progress\n ? t('branching:mergingProgress', {\n current: progress.current,\n total: progress.total,\n })\n : t('branching:mergeStarting')}\n </span>\n </div>\n )}\n\n {/* Refusals survive into the receipt: they are the reason the branch is\n still open, and a toast is gone before it can be acted on. */}\n {outcome && outcome.blocked.length > 0 && (\n <ul className={`${baseClass}__blocked`}>\n {outcome.blocked.map((each) => (\n <li key={String(each.changeID)}>{each.message}</li>\n ))}\n </ul>\n )}\n </DialogBody>\n <DialogFooter>\n {isDone ? (\n <Button buttonStyle=\"primary\" onClick={dismiss} size=\"medium\">\n {t('general:close')}\n </Button>\n ) : (\n <React.Fragment>\n <Button buttonStyle=\"secondary\" disabled={isMerging} onClick={dismiss} size=\"medium\">\n {t('general:cancel')}\n </Button>\n <Button\n buttonStyle=\"primary\"\n disabled={\n isMerging ||\n isScheduling ||\n // A schedule with no date is not a decision yet.\n (mode === 'schedule' && !scheduledFor)\n }\n onClick={() => void (mode === 'schedule' ? handleSchedule() : handleMergeNow())}\n size=\"medium\"\n >\n {mode === 'schedule'\n ? isScheduling\n ? t('branching:scheduling')\n : t('branching:scheduleMerge')\n : isMerging\n ? t('branching:merging')\n : t('branching:merge')}\n </Button>\n </React.Fragment>\n )}\n </DialogFooter>\n </DialogModal>\n )\n}\n\n/**\n * Reads the NDJSON merge stream, returning the terminal event.\n *\n * Returns null when the stream ends without one, which is how a dropped\n * connection presents — indistinguishable from the server never finishing, and\n * treated the same way, because in both cases the transaction did not commit.\n */\nconst readMergeStream = async ({\n body,\n onProgress,\n}: {\n body: ReadableStream<Uint8Array>\n onProgress: (progress: Progress) => void\n}): Promise<Extract<MergeStreamEvent, { type: 'complete' | 'error' }> | null> => {\n const reader = body.getReader()\n const decoder = new TextDecoder()\n\n let buffered = ''\n\n const handleLine = (\n line: string,\n ): Extract<MergeStreamEvent, { type: 'complete' | 'error' }> | null => {\n const trimmed = line.trim()\n\n if (!trimmed) {\n return null\n }\n\n let event: MergeStreamEvent\n\n try {\n event = JSON.parse(trimmed) as MergeStreamEvent\n } catch (_err) {\n return null\n }\n\n if (event.type === 'progress') {\n onProgress({ current: Number(event.current), total: Number(event.total) })\n\n return null\n }\n\n return event\n }\n\n while (true) {\n const { done, value } = await reader.read()\n\n if (done) {\n break\n }\n\n buffered += decoder.decode(value, { stream: true })\n\n // A chunk can split a line anywhere, so only whole lines are parsed and the\n // remainder is carried forward.\n const lines = buffered.split('\\n')\n buffered = lines.pop() ?? ''\n\n for (const line of lines) {\n const terminal = handleLine(line)\n\n if (terminal) {\n return terminal\n }\n }\n }\n\n return handleLine(buffered)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ /**
3
+ * The merge modal and the store that points it at something, mounted together.
4
+ *
5
+ * Composed here rather than leaving the modal to each entry point: one provider
6
+ * renders exactly one modal, which is the only way to guarantee two dialogs cannot
7
+ * share the slug. Every trigger calls `openMerge` instead of mounting its own.
8
+ */
9
+ export declare const MergeBranchProvider: React.FC<{
10
+ children: React.ReactNode;
11
+ }>;
12
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/elements/MergeBranch/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAKvE,CAAA"}
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import React from 'react';
5
+ import { MergeBranchStoreProvider } from './context.js';
6
+ import { MergeBranchModal } from './index.js';
7
+ /**
8
+ * The merge modal and the store that points it at something, mounted together.
9
+ *
10
+ * Composed here rather than leaving the modal to each entry point: one provider
11
+ * renders exactly one modal, which is the only way to guarantee two dialogs cannot
12
+ * share the slug. Every trigger calls `openMerge` instead of mounting its own.
13
+ */
14
+ export const MergeBranchProvider = ({
15
+ children
16
+ }) => /*#__PURE__*/_jsxs(MergeBranchStoreProvider, {
17
+ children: [children, /*#__PURE__*/_jsx(MergeBranchModal, {})]
18
+ });
19
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","names":["React","MergeBranchStoreProvider","MergeBranchModal","MergeBranchProvider","children","_jsxs","_jsx"],"sources":["../../../src/elements/MergeBranch/provider.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { MergeBranchStoreProvider } from './context.js'\nimport { MergeBranchModal } from './index.js'\n\n/**\n * The merge modal and the store that points it at something, mounted together.\n *\n * Composed here rather than leaving the modal to each entry point: one provider\n * renders exactly one modal, which is the only way to guarantee two dialogs cannot\n * share the slug. Every trigger calls `openMerge` instead of mounting its own.\n */\nexport const MergeBranchProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <MergeBranchStoreProvider>\n {children}\n <MergeBranchModal />\n </MergeBranchStoreProvider>\n)\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AACzC,SAASC,gBAAgB,QAAQ;AAEjC;;;;;;;AAOA,OAAO,MAAMC,mBAAA,GAA+DA,CAAC;EAAEC;AAAQ,CAAE,kBACvFC,KAAA,CAACJ,wBAAA;aACEG,QAAA,E,aACDE,IAAA,CAACJ,gBAAA","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The modal every merge entry point opens.
3
+ *
4
+ * Kept apart from the modal itself so that the entry points — the branch
5
+ * switcher and the changed-documents view — can name the modal without importing
6
+ * it, and so the modal can be rendered once per screen rather than per trigger.
7
+ */
8
+ export declare const mergeBranchModalSlug = "merge-branch";
9
+ //# sourceMappingURL=slug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../../src/elements/MergeBranch/slug.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,iBAAiB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The modal every merge entry point opens.
3
+ *
4
+ * Kept apart from the modal itself so that the entry points — the branch
5
+ * switcher and the changed-documents view — can name the modal without importing
6
+ * it, and so the modal can be rendered once per screen rather than per trigger.
7
+ */export const mergeBranchModalSlug = 'merge-branch';
8
+ //# sourceMappingURL=slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.js","names":["mergeBranchModalSlug"],"sources":["../../../src/elements/MergeBranch/slug.ts"],"sourcesContent":["/**\n * The modal every merge entry point opens.\n *\n * Kept apart from the modal itself so that the entry points — the branch\n * switcher and the changed-documents view — can name the modal without importing\n * it, and so the modal can be rendered once per screen rather than per trigger.\n */\nexport const mergeBranchModalSlug = 'merge-branch'\n"],"mappings":"AAAA;;;;;;GAOA,OAAO,MAAMA,oBAAA,GAAuB","ignoreList":[]}
@@ -17,8 +17,8 @@ export const NavContext = /*#__PURE__*/React.createContext({
17
17
  });
18
18
  export const useNav = () => React.use(NavContext);
19
19
  const getNavPreference = async getPreference => {
20
- const navPrefs = await getPreference(PREFERENCE_KEYS.NAV);
21
- const preferredState = navPrefs?.open;
20
+ const adminPrefs = await getPreference(PREFERENCE_KEYS.ADMIN);
21
+ const preferredState = adminPrefs?.open;
22
22
  if (typeof preferredState === 'boolean') {
23
23
  return preferredState;
24
24
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":["useWindowInfo","PREFERENCE_KEYS","React","useEffect","useRef","usePreferences","usePathname","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","useNav","use","getNavPreference","getPreference","navPrefs","NAV","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","pathname","useState","setHydrated","setNavFromPreferences","current","style","overscrollBehavior","_jsx","value"],"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { usePathname } from '../../providers/RouterAdapter/index.js'\n\ntype NavContextType = {\n hydrated: boolean\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n}\n\n/**\n * @internal\n */\nexport const NavContext = React.createContext<NavContextType>({\n hydrated: false,\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n})\n\nexport const useNav = () => React.use(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference(PREFERENCE_KEYS.NAV)\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\n/**\n * @internal\n */\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n initialIsOpen?: boolean\n}> = ({ children, initialIsOpen }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const pathname = usePathname()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(initialIsOpen)\n\n const [hydrated, setHydrated] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n void setNavFromPreferences()\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n useEffect(() => {\n if (smallBreak === true) {\n setNavOpen(false)\n }\n }, [pathname])\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n navRef.current.style.overscrollBehavior = 'contain'\n } else {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === true || midBreak === true || smallBreak === true) {\n setNavOpen(false)\n }\n setHydrated(true)\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n if (navRef.current) {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [])\n\n return <NavContext value={{ hydrated, navOpen, navRef, setNavOpen }}>{children}</NavContext>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"context.js","names":["useWindowInfo","PREFERENCE_KEYS","React","useEffect","useRef","usePreferences","usePathname","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","useNav","use","getNavPreference","getPreference","adminPrefs","ADMIN","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","pathname","useState","setHydrated","setNavFromPreferences","current","style","overscrollBehavior","_jsx","value"],"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { usePathname } from '../../providers/RouterAdapter/index.js'\n\ntype NavContextType = {\n hydrated: boolean\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n}\n\n/**\n * @internal\n */\nexport const NavContext = React.createContext<NavContextType>({\n hydrated: false,\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n})\n\nexport const useNav = () => React.use(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const adminPrefs = await getPreference(PREFERENCE_KEYS.ADMIN)\n const preferredState = adminPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\n/**\n * @internal\n */\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n initialIsOpen?: boolean\n}> = ({ children, initialIsOpen }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const pathname = usePathname()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(initialIsOpen)\n\n const [hydrated, setHydrated] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n void setNavFromPreferences()\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n useEffect(() => {\n if (smallBreak === true) {\n setNavOpen(false)\n }\n }, [pathname])\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n navRef.current.style.overscrollBehavior = 'contain'\n } else {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === true || midBreak === true || smallBreak === true) {\n setNavOpen(false)\n }\n setHydrated(true)\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n if (navRef.current) {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [])\n\n return <NavContext value={{ hydrated, navOpen, navRef, setNavOpen }}>{children}</NavContext>\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,9 @@
1
1
  import type { NavPreferences, PayloadRequest } from 'payload';
2
+ /**
3
+ * Assembles the nav's view of the user's preferences.
4
+ *
5
+ * The group and open state come from the shared `admin` preference, so this is
6
+ * the same read that resolved the request's branch rather than a second query.
7
+ */
2
8
  export declare const getNavPrefs: (req: PayloadRequest) => Promise<NavPreferences>;
3
9
  //# sourceMappingURL=getNavPrefs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNavPrefs.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/getNavPrefs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAK7D,eAAO,MAAM,WAAW,QAAqB,cAAc,KAAG,OAAO,CAAC,cAAc,CAoElF,CAAA"}
1
+ {"version":3,"file":"getNavPrefs.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/getNavPrefs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAQ7D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAqB,cAAc,KAAG,OAAO,CAAC,cAAc,CAmBlF,CAAA"}
@@ -1,5 +1,13 @@
1
1
  import { PREFERENCE_KEYS } from 'payload/shared';
2
2
  import { cache } from 'react';
3
+ import { getAdminPreferences } from '../../utilities/getAdminPreferences.js';
4
+ import { getPreferences } from '../../utilities/getPreferences.js';
5
+ /**
6
+ * Assembles the nav's view of the user's preferences.
7
+ *
8
+ * The group and open state come from the shared `admin` preference, so this is
9
+ * the same read that resolved the request's branch rather than a second query.
10
+ */
3
11
  export const getNavPrefs = cache(async req => {
4
12
  if (!req?.user?.collection) {
5
13
  return {
@@ -8,54 +16,14 @@ export const getNavPrefs = cache(async req => {
8
16
  open: true
9
17
  };
10
18
  }
11
- const navPrefs = await req.payload.find({
12
- collection: 'payload-preferences',
13
- depth: 0,
14
- limit: 1,
15
- pagination: false,
16
- req,
17
- where: {
18
- and: [{
19
- key: {
20
- equals: PREFERENCE_KEYS.NAV
21
- }
22
- }, {
23
- 'user.relationTo': {
24
- equals: req.user.collection
25
- }
26
- }, {
27
- 'user.value': {
28
- equals: req?.user?.id
29
- }
30
- }]
31
- }
32
- })?.then(res => res?.docs?.[0]?.value);
33
- const sidebarPrefs = await req.payload.find({
34
- collection: 'payload-preferences',
35
- depth: 0,
36
- limit: 1,
37
- pagination: false,
38
- req,
39
- where: {
40
- and: [{
41
- key: {
42
- equals: PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB
43
- }
44
- }, {
45
- 'user.relationTo': {
46
- equals: req.user.collection
47
- }
48
- }, {
49
- 'user.value': {
50
- equals: req?.user?.id
51
- }
52
- }]
53
- }
54
- })?.then(res => res?.docs?.[0]?.value);
19
+ const adminPrefs = await getAdminPreferences({
20
+ req
21
+ });
22
+ const sidebarPrefs = await getPreferences(PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB, req.payload, req.user.id, req.user.collection).then(res => res?.value);
55
23
  return {
56
24
  activeTab: sidebarPrefs?.activeTab,
57
- groups: navPrefs?.groups ?? {},
58
- open: navPrefs?.open ?? true
25
+ groups: adminPrefs.groups ?? {},
26
+ open: adminPrefs.open ?? true
59
27
  };
60
28
  });
61
29
  //# sourceMappingURL=getNavPrefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNavPrefs.js","names":["PREFERENCE_KEYS","cache","getNavPrefs","req","user","collection","activeTab","undefined","groups","open","navPrefs","payload","find","depth","limit","pagination","where","and","key","equals","NAV","id","then","res","docs","value","sidebarPrefs","NAV_SIDEBAR_ACTIVE_TAB"],"sources":["../../../src/elements/Nav/getNavPrefs.ts"],"sourcesContent":["import type { NavPreferences, PayloadRequest } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport { cache } from 'react'\n\nexport const getNavPrefs = cache(async (req: PayloadRequest): Promise<NavPreferences> => {\n if (!req?.user?.collection) {\n return { activeTab: undefined, groups: {}, open: true }\n }\n\n const navPrefs = await req.payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n and: [\n {\n key: {\n equals: PREFERENCE_KEYS.NAV,\n },\n },\n {\n 'user.relationTo': {\n equals: req.user.collection,\n },\n },\n {\n 'user.value': {\n equals: req?.user?.id,\n },\n },\n ],\n },\n })\n ?.then((res) => res?.docs?.[0]?.value)\n\n const sidebarPrefs = await req.payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n and: [\n {\n key: {\n equals: PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB,\n },\n },\n {\n 'user.relationTo': {\n equals: req.user.collection,\n },\n },\n {\n 'user.value': {\n equals: req?.user?.id,\n },\n },\n ],\n },\n })\n ?.then((res) => res?.docs?.[0]?.value)\n\n return {\n activeTab: sidebarPrefs?.activeTab,\n groups: navPrefs?.groups ?? {},\n open: navPrefs?.open ?? true,\n }\n})\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,KAAK,QAAQ;AAEtB,OAAO,MAAMC,WAAA,GAAcD,KAAA,CAAM,MAAOE,GAAA;EACtC,IAAI,CAACA,GAAA,EAAKC,IAAA,EAAMC,UAAA,EAAY;IAC1B,OAAO;MAAEC,SAAA,EAAWC,SAAA;MAAWC,MAAA,EAAQ,CAAC;MAAGC,IAAA,EAAM;IAAK;EACxD;EAEA,MAAMC,QAAA,GAAW,MAAMP,GAAA,CAAIQ,OAAO,CAC/BC,IAAI,CAAC;IACJP,UAAA,EAAY;IACZQ,KAAA,EAAO;IACPC,KAAA,EAAO;IACPC,UAAA,EAAY;IACZZ,GAAA;IACAa,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQnB,eAAA,CAAgBoB;QAC1B;MACF,GACA;QACE,mBAAmB;UACjBD,MAAA,EAAQhB,GAAA,CAAIC,IAAI,CAACC;QACnB;MACF,GACA;QACE,cAAc;UACZc,MAAA,EAAQhB,GAAA,EAAKC,IAAA,EAAMiB;QACrB;MACF;IAEJ;EACF,IACEC,IAAA,CAAMC,GAAA,IAAQA,GAAA,EAAKC,IAAA,GAAO,EAAE,EAAEC,KAAA;EAElC,MAAMC,YAAA,GAAe,MAAMvB,GAAA,CAAIQ,OAAO,CACnCC,IAAI,CAAC;IACJP,UAAA,EAAY;IACZQ,KAAA,EAAO;IACPC,KAAA,EAAO;IACPC,UAAA,EAAY;IACZZ,GAAA;IACAa,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQnB,eAAA,CAAgB2B;QAC1B;MACF,GACA;QACE,mBAAmB;UACjBR,MAAA,EAAQhB,GAAA,CAAIC,IAAI,CAACC;QACnB;MACF,GACA;QACE,cAAc;UACZc,MAAA,EAAQhB,GAAA,EAAKC,IAAA,EAAMiB;QACrB;MACF;IAEJ;EACF,IACEC,IAAA,CAAMC,GAAA,IAAQA,GAAA,EAAKC,IAAA,GAAO,EAAE,EAAEC,KAAA;EAElC,OAAO;IACLnB,SAAA,EAAWoB,YAAA,EAAcpB,SAAA;IACzBE,MAAA,EAAQE,QAAA,EAAUF,MAAA,IAAU,CAAC;IAC7BC,IAAA,EAAMC,QAAA,EAAUD,IAAA,IAAQ;EAC1B;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getNavPrefs.js","names":["PREFERENCE_KEYS","cache","getAdminPreferences","getPreferences","getNavPrefs","req","user","collection","activeTab","undefined","groups","open","adminPrefs","sidebarPrefs","NAV_SIDEBAR_ACTIVE_TAB","payload","id","then","res","value"],"sources":["../../../src/elements/Nav/getNavPrefs.ts"],"sourcesContent":["import type { NavPreferences, PayloadRequest } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport { cache } from 'react'\n\nimport { getAdminPreferences } from '../../utilities/getAdminPreferences.js'\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\n/**\n * Assembles the nav's view of the user's preferences.\n *\n * The group and open state come from the shared `admin` preference, so this is\n * the same read that resolved the request's branch rather than a second query.\n */\nexport const getNavPrefs = cache(async (req: PayloadRequest): Promise<NavPreferences> => {\n if (!req?.user?.collection) {\n return { activeTab: undefined, groups: {}, open: true }\n }\n\n const adminPrefs = await getAdminPreferences({ req })\n\n const sidebarPrefs = await getPreferences<{ activeTab?: string }>(\n PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB,\n req.payload,\n req.user.id,\n req.user.collection,\n ).then((res) => res?.value)\n\n return {\n activeTab: sidebarPrefs?.activeTab,\n groups: adminPrefs.groups ?? {},\n open: adminPrefs.open ?? true,\n }\n})\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,KAAK,QAAQ;AAEtB,SAASC,mBAAmB,QAAQ;AACpC,SAASC,cAAc,QAAQ;AAE/B;;;;;;AAMA,OAAO,MAAMC,WAAA,GAAcH,KAAA,CAAM,MAAOI,GAAA;EACtC,IAAI,CAACA,GAAA,EAAKC,IAAA,EAAMC,UAAA,EAAY;IAC1B,OAAO;MAAEC,SAAA,EAAWC,SAAA;MAAWC,MAAA,EAAQ,CAAC;MAAGC,IAAA,EAAM;IAAK;EACxD;EAEA,MAAMC,UAAA,GAAa,MAAMV,mBAAA,CAAoB;IAAEG;EAAI;EAEnD,MAAMQ,YAAA,GAAe,MAAMV,cAAA,CACzBH,eAAA,CAAgBc,sBAAsB,EACtCT,GAAA,CAAIU,OAAO,EACXV,GAAA,CAAIC,IAAI,CAACU,EAAE,EACXX,GAAA,CAAIC,IAAI,CAACC,UAAU,EACnBU,IAAI,CAAEC,GAAA,IAAQA,GAAA,EAAKC,KAAA;EAErB,OAAO;IACLX,SAAA,EAAWK,YAAA,EAAcL,SAAA;IACzBE,MAAA,EAAQE,UAAA,CAAWF,MAAM,IAAI,CAAC;IAC9BC,IAAA,EAAMC,UAAA,CAAWD,IAAI,IAAI;EAC3B;AACF","ignoreList":[]}
@@ -35,7 +35,7 @@ export const NavGroup = t0 => {
35
35
  } else {
36
36
  newGroupPrefs[label].open = Boolean(collapsed);
37
37
  }
38
- setPreference(PREFERENCE_KEYS.NAV, {
38
+ setPreference(PREFERENCE_KEYS.ADMIN, {
39
39
  groups: newGroupPrefs
40
40
  }, true);
41
41
  setCollapsed(!collapsed);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","PREFERENCE_KEYS","React","useState","ChevronIcon","usePreferences","useNav","baseClass","NavGroup","t0","$","children","isOpen","isOpenFromProps","label","collapsed","setCollapsed","setPreference","navOpen","t1","newGroupPrefs","open","Boolean","NAV","groups","toggleCollapsed","t2","t3","t4","filter","t5","join","t6","t7","t8","t9","t10","t11","t12","_jsxs","className","id","onClick","tabIndex","type","_jsx","direction","size","Fragment"],"sources":["../../../src/elements/NavGroup/index.tsx"],"sourcesContent":["'use client'\nimport type { NavPreferences } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useNav } from '../Nav/context.js'\nimport './index.css'\n\nconst baseClass = 'nav-group'\n\ntype Props = {\n children: React.ReactNode\n isOpen?: boolean\n label: string\n}\n\nexport const NavGroup: React.FC<Props> = ({ children, isOpen: isOpenFromProps, label }) => {\n const [collapsed, setCollapsed] = useState(\n typeof isOpenFromProps !== 'undefined' ? !isOpenFromProps : false,\n )\n\n const { setPreference } = usePreferences()\n const { navOpen } = useNav()\n\n if (label) {\n const toggleCollapsed = () => {\n const newGroupPrefs: NavPreferences['groups'] = {}\n\n if (!newGroupPrefs?.[label]) {\n newGroupPrefs[label] = { open: Boolean(collapsed) }\n } else {\n newGroupPrefs[label].open = Boolean(collapsed)\n }\n\n void setPreference(PREFERENCE_KEYS.NAV, { groups: newGroupPrefs }, true)\n setCollapsed(!collapsed)\n }\n\n return (\n <div\n className={[`${baseClass}`, `${label}`, collapsed && `${baseClass}--collapsed`]\n .filter(Boolean)\n .join(' ')}\n id={`nav-group-${label}`}\n >\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsed}\n tabIndex={!navOpen ? -1 : 0}\n type=\"button\"\n >\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon direction={collapsed ? 'right' : 'down'} size={16} />\n </div>\n <div className={`${baseClass}__label`}>{label}</div>\n </button>\n {!collapsed && <div className={`${baseClass}__content`}>{children}</div>}\n </div>\n )\n }\n\n return <React.Fragment>{children}</React.Fragment>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","PREFERENCE_KEYS","React","useState","ChevronIcon","usePreferences","useNav","baseClass","NavGroup","t0","$","children","isOpen","isOpenFromProps","label","collapsed","setCollapsed","setPreference","navOpen","t1","newGroupPrefs","open","Boolean","ADMIN","groups","toggleCollapsed","t2","t3","t4","filter","t5","join","t6","t7","t8","t9","t10","t11","t12","_jsxs","className","id","onClick","tabIndex","type","_jsx","direction","size","Fragment"],"sources":["../../../src/elements/NavGroup/index.tsx"],"sourcesContent":["'use client'\nimport type { AdminPreferences } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useNav } from '../Nav/context.js'\nimport './index.css'\n\nconst baseClass = 'nav-group'\n\ntype Props = {\n children: React.ReactNode\n isOpen?: boolean\n label: string\n}\n\nexport const NavGroup: React.FC<Props> = ({ children, isOpen: isOpenFromProps, label }) => {\n const [collapsed, setCollapsed] = useState(\n typeof isOpenFromProps !== 'undefined' ? !isOpenFromProps : false,\n )\n\n const { setPreference } = usePreferences()\n const { navOpen } = useNav()\n\n if (label) {\n const toggleCollapsed = () => {\n const newGroupPrefs: AdminPreferences['groups'] = {}\n\n if (!newGroupPrefs?.[label]) {\n newGroupPrefs[label] = { open: Boolean(collapsed) }\n } else {\n newGroupPrefs[label].open = Boolean(collapsed)\n }\n\n void setPreference(PREFERENCE_KEYS.ADMIN, { groups: newGroupPrefs }, true)\n setCollapsed(!collapsed)\n }\n\n return (\n <div\n className={[`${baseClass}`, `${label}`, collapsed && `${baseClass}--collapsed`]\n .filter(Boolean)\n .join(' ')}\n id={`nav-group-${label}`}\n >\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsed}\n tabIndex={!navOpen ? -1 : 0}\n type=\"button\"\n >\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon direction={collapsed ? 'right' : 'down'} size={16} />\n </div>\n <div className={`${baseClass}__label`}>{label}</div>\n </button>\n {!collapsed && <div className={`${baseClass}__content`}>{children}</div>}\n </div>\n )\n }\n\n return <React.Fragment>{children}</React.Fragment>\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAY9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmJnD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAa9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsJnD,CAAA"}
@@ -7,6 +7,7 @@ import { formatAdminURL } from 'payload/shared';
7
7
  import * as qs from 'qs-esm';
8
8
  import React, { Fragment, useCallback } 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 { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
12
13
  import { useRouter } from '../../providers/RouterAdapter/index.js';
@@ -44,6 +45,7 @@ export const PermanentlyDeleteButton = props => {
44
45
  i18n,
45
46
  t
46
47
  } = useTranslation();
48
+ const branch = useBranchParam();
47
49
  const {
48
50
  title
49
51
  } = useDocumentTitle();
@@ -64,6 +66,7 @@ export const PermanentlyDeleteButton = props => {
64
66
  const url = formatAdminURL({
65
67
  apiRoute: api,
66
68
  path: `/${collectionSlug}${qs.stringify({
69
+ branch,
67
70
  trash: true,
68
71
  where: {
69
72
  and: [{
@@ -115,7 +118,7 @@ export const PermanentlyDeleteButton = props => {
115
118
  } catch (_err) {
116
119
  addDefaultError();
117
120
  }
118
- }, [serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
121
+ }, [branch, serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
119
122
  if (id) {
120
123
  return /*#__PURE__*/_jsxs(Fragment, {
121
124
  children: [/*#__PURE__*/_jsx(Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","Fragment","useCallback","toast","useConfig","useDocumentTitle","useRouter","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","apiRoute","path","stringify","trash","where","and","equals","deletedAt","exists","addQueryPrefix","res","delete","headers","language","json","status","success","label","message","push","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } 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, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","Fragment","useCallback","toast","useBranchParam","useConfig","useDocumentTitle","useRouter","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","branch","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","apiRoute","path","stringify","trash","where","and","equals","deletedAt","exists","addQueryPrefix","res","delete","headers","language","json","status","success","label","message","push","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } 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, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useBranchParam } from '../../providers/Branch/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const branch = useBranchParam()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n branch,\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n branch,\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -51,7 +51,7 @@
51
51
  font-weight: var(--text-body-medium-font-weight);
52
52
  letter-spacing: var(--text-body-medium-letter-spacing);
53
53
  line-height: var(--text-body-medium-line-height);
54
- padding: var(--spacer-1) var(--spacer-2) var(--spacer-1) var(--spacer-1);
54
+ padding: var(--spacer-1) var(--spacer-2);
55
55
  }
56
56
 
57
57
  .popup-button-list__button:focus-visible {
@@ -113,7 +113,7 @@ export const Popup = props => {
113
113
  const scrollY = useFixed ? 0 : window.scrollY;
114
114
  const scrollX = useFixed ? 0 : window.scrollX;
115
115
  // Gap between the popup and the trigger/viewport edges (in pixels)
116
- const offset = 10;
116
+ const offset = 8;
117
117
  // Additional gap used in side mode so the child popup has breathing room from its parent
118
118
  const sideOffset = 4;
119
119
  let top;