@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,174 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared';
5
+ import React, { useCallback, useState } from 'react';
6
+ import { toast } from 'sonner';
7
+ import { TextInput } from '../../../fields/Text/Input.js';
8
+ import { BranchIcon } from '../../../icons/Branch/index.js';
9
+ import { useBranch } from '../../../providers/Branch/index.js';
10
+ import { useConfig } from '../../../providers/Config/index.js';
11
+ import { useTranslation } from '../../../providers/Translation/index.js';
12
+ import { requests } from '../../../utilities/api.js';
13
+ import { Button } from '../../Button/index.js';
14
+ import { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../../Dialog/index.js';
15
+ import { useModal } from '../../Modal/index.js';
16
+ import { Pill } from '../../Pill/index.js';
17
+ import './index.css';
18
+ export const newBranchModalSlug = 'new-branch';
19
+ const baseClass = 'new-branch-modal';
20
+ /**
21
+ * Creates a branch without leaving the current view.
22
+ *
23
+ * The slug is derived from the name server-side rather than asked for, so the
24
+ * only thing required here is a name — which is why this is a modal rather than
25
+ * a trip to the collection's create view.
26
+ */
27
+ export const NewBranchModal = () => {
28
+ const {
29
+ t
30
+ } = useTranslation();
31
+ const {
32
+ closeModal
33
+ } = useModal();
34
+ const {
35
+ setBranch
36
+ } = useBranch();
37
+ const {
38
+ config: {
39
+ routes: {
40
+ api
41
+ },
42
+ serverURL
43
+ }
44
+ } = useConfig();
45
+ const [name, setName] = useState('');
46
+ const [description, setDescription] = useState('');
47
+ const [isCreating, setIsCreating] = useState(false);
48
+ const trimmedName = name.trim();
49
+ const reset = useCallback(() => {
50
+ setName('');
51
+ setDescription('');
52
+ }, []);
53
+ const handleCreate = useCallback(async () => {
54
+ if (!trimmedName || isCreating) {
55
+ return;
56
+ }
57
+ setIsCreating(true);
58
+ try {
59
+ const trimmedDescription = description.trim();
60
+ const response = await requests.post(formatAdminURL({
61
+ apiRoute: api,
62
+ path: `/${branchesCollectionSlug}`,
63
+ serverURL
64
+ }), {
65
+ body: JSON.stringify({
66
+ name: trimmedName,
67
+ ...(trimmedDescription ? {
68
+ description: trimmedDescription
69
+ } : {})
70
+ }),
71
+ headers: {
72
+ 'Content-Type': 'application/json'
73
+ }
74
+ });
75
+ const json = await response.json();
76
+ if (!response.ok) {
77
+ const fieldErrors = json?.errors?.flatMap(({
78
+ data
79
+ }) => data?.errors ?? []) ?? [];
80
+ // Field errors are reported against `slug`, which is derived rather than
81
+ // typed — naming it would point the editor at a field they never saw. The
82
+ // name is what they control, so that is what the message names.
83
+ const messages = fieldErrors.length ? fieldErrors.map(({
84
+ message,
85
+ path
86
+ }) => path === 'slug' ? `${t('branching:branchName')}: ${message}` : message) : json?.errors?.map(({
87
+ message: message_0
88
+ }) => message_0) ?? [];
89
+ if (messages.length) {
90
+ messages.forEach(message_1 => toast.error(message_1));
91
+ } else {
92
+ toast.error(t('error:unknown'));
93
+ }
94
+ return;
95
+ }
96
+ closeModal(newBranchModalSlug);
97
+ reset();
98
+ // Creating a branch is a declaration of intent to work on it, so the
99
+ // switch follows the save.
100
+ if (json?.doc?.slug) {
101
+ setBranch(json.doc.slug);
102
+ }
103
+ } catch (_err) {
104
+ toast.error(t('error:unknown'));
105
+ } finally {
106
+ setIsCreating(false);
107
+ }
108
+ }, [api, closeModal, description, isCreating, reset, serverURL, setBranch, t, trimmedName]);
109
+ return /*#__PURE__*/_jsxs(DialogModal, {
110
+ className: baseClass,
111
+ closeOnBlur: true,
112
+ slug: newBranchModalSlug,
113
+ children: [/*#__PURE__*/_jsx(DialogHeader, {
114
+ showClose: true,
115
+ title: t('branching:createNewBranch')
116
+ }), /*#__PURE__*/_jsx(DialogBody, {
117
+ children: /*#__PURE__*/_jsxs("form", {
118
+ className: `${baseClass}__form`,
119
+ onSubmit: e => {
120
+ e.preventDefault();
121
+ void handleCreate();
122
+ },
123
+ children: [/*#__PURE__*/_jsx(TextInput, {
124
+ label: t('branching:branchName'),
125
+ onChange: e_0 => setName(e_0.target.value),
126
+ path: "name",
127
+ required: true,
128
+ value: name
129
+ }), /*#__PURE__*/_jsx(TextInput, {
130
+ label: t('branching:branchDescription'),
131
+ onChange: e_1 => setDescription(e_1.target.value),
132
+ path: "description",
133
+ value: description
134
+ }), /*#__PURE__*/_jsxs("div", {
135
+ className: `${baseClass}__source`,
136
+ children: [/*#__PURE__*/_jsx("span", {
137
+ className: `${baseClass}__source-label`,
138
+ children: t('branching:branchedFrom')
139
+ }), /*#__PURE__*/_jsxs("div", {
140
+ className: `${baseClass}__source-value`,
141
+ children: [/*#__PURE__*/_jsx(BranchIcon, {
142
+ size: 24
143
+ }), /*#__PURE__*/_jsx("span", {
144
+ className: `${baseClass}__source-name`,
145
+ children: MAIN_BRANCH
146
+ }), /*#__PURE__*/_jsx(Pill, {
147
+ pillStyle: "light-gray",
148
+ size: "small",
149
+ children: t('branching:defaultBranch')
150
+ })]
151
+ })]
152
+ })]
153
+ })
154
+ }), /*#__PURE__*/_jsxs(DialogFooter, {
155
+ children: [/*#__PURE__*/_jsx(Button, {
156
+ buttonStyle: "secondary",
157
+ disabled: isCreating,
158
+ onClick: () => {
159
+ closeModal(newBranchModalSlug);
160
+ reset();
161
+ },
162
+ size: "medium",
163
+ children: t('general:cancel')
164
+ }), /*#__PURE__*/_jsx(Button, {
165
+ buttonStyle: "primary",
166
+ disabled: !trimmedName || isCreating,
167
+ onClick: () => void handleCreate(),
168
+ size: "medium",
169
+ children: isCreating ? t('general:creating') : t('branching:createAndSwitch')
170
+ })]
171
+ })]
172
+ });
173
+ };
174
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["branchesCollectionSlug","formatAdminURL","MAIN_BRANCH","React","useCallback","useState","toast","TextInput","BranchIcon","useBranch","useConfig","useTranslation","requests","Button","DialogBody","DialogFooter","DialogHeader","DialogModal","useModal","Pill","newBranchModalSlug","baseClass","NewBranchModal","t","closeModal","setBranch","config","routes","api","serverURL","name","setName","description","setDescription","isCreating","setIsCreating","trimmedName","trim","reset","handleCreate","trimmedDescription","response","post","apiRoute","path","body","JSON","stringify","headers","json","ok","fieldErrors","errors","flatMap","data","messages","length","map","message","forEach","error","doc","slug","_err","_jsxs","className","closeOnBlur","_jsx","showClose","title","onSubmit","e","preventDefault","label","onChange","target","value","required","size","pillStyle","buttonStyle","disabled","onClick"],"sources":["../../../../src/elements/BranchSelector/NewBranchModal/index.tsx"],"sourcesContent":["'use client'\n\nimport { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { TextInput } from '../../../fields/Text/Input.js'\nimport { BranchIcon } from '../../../icons/Branch/index.js'\nimport { useBranch } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Button } from '../../Button/index.js'\nimport { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useModal } from '../../Modal/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport './index.css'\n\nexport const newBranchModalSlug = 'new-branch'\n\nconst baseClass = 'new-branch-modal'\n\n/**\n * Creates a branch without leaving the current view.\n *\n * The slug is derived from the name server-side rather than asked for, so the\n * only thing required here is a name — which is why this is a modal rather than\n * a trip to the collection's create view.\n */\nexport const NewBranchModal: React.FC = () => {\n const { t } = useTranslation()\n const { closeModal } = useModal()\n const { setBranch } = useBranch()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [name, setName] = useState('')\n const [description, setDescription] = useState('')\n const [isCreating, setIsCreating] = useState(false)\n\n const trimmedName = name.trim()\n\n const reset = useCallback(() => {\n setName('')\n setDescription('')\n }, [])\n\n const handleCreate = useCallback(async () => {\n if (!trimmedName || isCreating) {\n return\n }\n\n setIsCreating(true)\n\n try {\n const trimmedDescription = description.trim()\n\n const response = await requests.post(\n formatAdminURL({ apiRoute: api, path: `/${branchesCollectionSlug}`, serverURL }),\n {\n body: JSON.stringify({\n name: trimmedName,\n ...(trimmedDescription ? { description: trimmedDescription } : {}),\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n )\n\n const json = (await response.json()) as {\n doc?: { slug?: string }\n errors?: {\n data?: { errors?: { message: string; path: string }[] }\n message: string\n }[]\n }\n\n if (!response.ok) {\n const fieldErrors = json?.errors?.flatMap(({ data }) => data?.errors ?? []) ?? []\n\n // Field errors are reported against `slug`, which is derived rather than\n // typed — naming it would point the editor at a field they never saw. The\n // name is what they control, so that is what the message names.\n const messages = fieldErrors.length\n ? fieldErrors.map(({ message, path }) =>\n path === 'slug' ? `${t('branching:branchName')}: ${message}` : message,\n )\n : (json?.errors?.map(({ message }) => message) ?? [])\n\n if (messages.length) {\n messages.forEach((message) => toast.error(message))\n } else {\n toast.error(t('error:unknown'))\n }\n\n return\n }\n\n closeModal(newBranchModalSlug)\n reset()\n\n // Creating a branch is a declaration of intent to work on it, so the\n // switch follows the save.\n if (json?.doc?.slug) {\n setBranch(json.doc.slug)\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsCreating(false)\n }\n }, [api, closeModal, description, isCreating, reset, serverURL, setBranch, t, trimmedName])\n\n return (\n <DialogModal className={baseClass} closeOnBlur slug={newBranchModalSlug}>\n <DialogHeader showClose title={t('branching:createNewBranch')} />\n <DialogBody>\n <form\n className={`${baseClass}__form`}\n onSubmit={(e) => {\n e.preventDefault()\n void handleCreate()\n }}\n >\n <TextInput\n label={t('branching:branchName')}\n onChange={(e) => setName(e.target.value)}\n path=\"name\"\n required\n value={name}\n />\n <TextInput\n label={t('branching:branchDescription')}\n onChange={(e) => setDescription(e.target.value)}\n path=\"description\"\n value={description}\n />\n {/* Display-only: branching from a branch is not supported, so `main` is\n the only possible source and there is nothing here to choose. */}\n <div className={`${baseClass}__source`}>\n <span className={`${baseClass}__source-label`}>{t('branching:branchedFrom')}</span>\n <div className={`${baseClass}__source-value`}>\n <BranchIcon size={24} />\n <span className={`${baseClass}__source-name`}>{MAIN_BRANCH}</span>\n <Pill pillStyle=\"light-gray\" size=\"small\">\n {t('branching:defaultBranch')}\n </Pill>\n </div>\n </div>\n </form>\n </DialogBody>\n <DialogFooter>\n <Button\n buttonStyle=\"secondary\"\n disabled={isCreating}\n onClick={() => {\n closeModal(newBranchModalSlug)\n reset()\n }}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n buttonStyle=\"primary\"\n disabled={!trimmedName || isCreating}\n onClick={() => void handleCreate()}\n size=\"medium\"\n >\n {isCreating ? t('general:creating') : t('branching:createAndSwitch')}\n </Button>\n </DialogFooter>\n </DialogModal>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,172 @@
1
+ @layer payload-default {
2
+ .branch-selector {
3
+ flex-shrink: 0;
4
+ }
5
+
6
+ /* The chevron lives inside the label rather than in the button's own icon
7
+ slot, which is taken by the branch icon, so close the end padding by hand. */
8
+ .branch-selector__trigger.btn--size-medium {
9
+ padding-inline-end: var(--spacer-1);
10
+ }
11
+
12
+ .branch-selector__trigger .btn__label {
13
+ min-width: 0;
14
+ overflow: hidden;
15
+ }
16
+
17
+ .branch-selector__trigger-label {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: var(--spacer-1);
21
+ min-width: 0;
22
+ /* Matches `.step-nav__item`: a branch name gets the same room as a crumb
23
+ before it starts costing the trail beside it. */
24
+ max-width: calc(var(--spacer-6) * 4);
25
+ }
26
+
27
+ .branch-selector__trigger-name {
28
+ text-overflow: ellipsis;
29
+ overflow: hidden;
30
+ white-space: nowrap;
31
+ }
32
+
33
+ .branch-selector__popup .combobox__entry {
34
+ flex-direction: column;
35
+ }
36
+
37
+ .branch-selector__option {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ gap: var(--spacer-3);
42
+ width: 100%;
43
+ padding-inline: var(--spacer-3);
44
+ padding-block: var(--spacer-1);
45
+ font-family: var(--text-body-medium-font-family);
46
+ font-size: var(--text-body-medium-font-size);
47
+ font-weight: var(--text-body-medium-font-weight);
48
+ line-height: var(--text-body-medium-line-height);
49
+ color: var(--color-text);
50
+
51
+ &:hover {
52
+ background: var(--color-bg-secondary);
53
+ }
54
+ }
55
+
56
+ .branch-selector__option svg {
57
+ flex-shrink: 0;
58
+ color: var(--color-icon);
59
+ }
60
+
61
+ .branch-selector__option-labels {
62
+ display: flex;
63
+ align-items: baseline;
64
+ gap: var(--spacer-2);
65
+ min-width: 0;
66
+ white-space: nowrap;
67
+ }
68
+
69
+ .branch-selector__option-name {
70
+ text-overflow: ellipsis;
71
+ overflow: hidden;
72
+ }
73
+
74
+ /* The branch you are on, pinned above the list of the ones you are not. */
75
+ .branch-selector__current {
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: space-between;
79
+ gap: var(--spacer-3);
80
+ padding-inline: var(--spacer-3);
81
+ padding-block: var(--spacer-1);
82
+ }
83
+
84
+ .branch-selector__current-name {
85
+ min-width: 0;
86
+ overflow: hidden;
87
+ text-overflow: ellipsis;
88
+ white-space: nowrap;
89
+ font-family: var(--text-body-medium-strong-font-family);
90
+ font-weight: var(--text-body-medium-strong-font-weight);
91
+ color: var(--color-text);
92
+ }
93
+
94
+ /* On a branch the name is the way into its manage view. The icon is the standing
95
+ affordance, so the underline is held back for hover — a permanently underlined
96
+ name reads as decoration on what is otherwise the row's heading. */
97
+ .branch-selector__current-link {
98
+ display: inline-flex;
99
+ align-items: center;
100
+ gap: var(--spacer-1);
101
+ min-width: 0;
102
+ text-decoration: none;
103
+
104
+ &:hover {
105
+ color: var(--color-text-brand);
106
+ }
107
+
108
+ &:hover .branch-selector__current-text {
109
+ text-decoration: underline;
110
+ }
111
+ }
112
+
113
+ .branch-selector__current-text {
114
+ min-width: 0;
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
117
+ }
118
+
119
+ .branch-selector__current-icon {
120
+ flex-shrink: 0;
121
+ color: var(--color-icon);
122
+ }
123
+
124
+ .branch-selector__current-link:hover .branch-selector__current-icon {
125
+ color: var(--color-text-brand);
126
+ }
127
+
128
+ /* Reads as a state to notice rather than a footnote, so it takes the same green
129
+ the banner on the branch page does. */
130
+ .branch-selector__option-scheduled {
131
+ flex-shrink: 0;
132
+ font-family: var(--text-body-small-font-family);
133
+ font-size: var(--text-body-small-font-size);
134
+ color: var(--color-text-success);
135
+ }
136
+
137
+ /* Muted and small: it qualifies the name rather than competing with it. */
138
+ .branch-selector__option-merged {
139
+ flex-shrink: 0;
140
+ font-family: var(--text-body-small-font-family);
141
+ font-size: var(--text-body-small-font-size);
142
+ color: var(--color-text-secondary);
143
+ }
144
+
145
+ /* Shared by the pinned footer rows, which are a link and a button rather than
146
+ combobox entries and so arrive with their own user-agent styling. */
147
+ .branch-selector__action {
148
+ background: none;
149
+ border: none;
150
+ font: inherit;
151
+ text-align: start;
152
+ text-decoration: none;
153
+ color: var(--color-text);
154
+ cursor: pointer;
155
+ }
156
+
157
+ .branch-selector__action .branch-selector__option-labels {
158
+ align-items: center;
159
+ gap: var(--spacer-1);
160
+ }
161
+
162
+ .branch-selector__footer-divider {
163
+ height: var(--stroke-width-small);
164
+ margin-block: var(--spacer-2);
165
+ background: var(--color-border);
166
+ }
167
+
168
+ .branch-selector__option--active .branch-selector__option-name {
169
+ font-family: var(--text-body-medium-strong-font-family);
170
+ font-weight: var(--text-body-medium-strong-font-weight);
171
+ }
172
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './index.css';
3
+ /**
4
+ * Switcher for the active content branch, sitting to the left of the breadcrumb
5
+ * trail — everything after it is scoped to the branch it names.
6
+ *
7
+ * Renders nothing when branching is off, and nothing while `main` is the only
8
+ * branch there is — until a branch exists there is nothing to switch to.
9
+ */
10
+ export declare const BranchSelector: React.FC<{
11
+ className?: string;
12
+ }>;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BranchSelector/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAkBhD,OAAO,aAAa,CAAA;AAIpB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA+M3D,CAAA"}
@@ -0,0 +1,255 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared';
5
+ import React, { Fragment, useMemo } from 'react';
6
+ import { BranchIcon } from '../../icons/Branch/index.js';
7
+ import { ChevronIcon } from '../../icons/Chevron/index.js';
8
+ import { NewTabIcon } from '../../icons/NewTab/index.js';
9
+ import { PlusIcon } from '../../icons/Plus/index.js';
10
+ import { useBranch, useShowBranchSelector } from '../../providers/Branch/index.js';
11
+ import { useConfig } from '../../providers/Config/index.js';
12
+ import { useTranslation } from '../../providers/Translation/index.js';
13
+ import { Button } from '../Button/index.js';
14
+ import { Combobox } from '../Combobox/index.js';
15
+ import { Link } from '../Link/index.js';
16
+ import { useMergeBranch } from '../MergeBranch/context.js';
17
+ import { useModal } from '../Modal/index.js';
18
+ import { NewBranchModal, newBranchModalSlug } from './NewBranchModal/index.js';
19
+ import './index.css';
20
+ const baseClass = 'branch-selector';
21
+ /**
22
+ * Switcher for the active content branch, sitting to the left of the breadcrumb
23
+ * trail — everything after it is scoped to the branch it names.
24
+ *
25
+ * Renders nothing when branching is off, and nothing while `main` is the only
26
+ * branch there is — until a branch exists there is nothing to switch to.
27
+ */
28
+ export const BranchSelector = ({
29
+ className
30
+ }) => {
31
+ const {
32
+ activeBranch,
33
+ branches,
34
+ setBranch
35
+ } = useBranch();
36
+ const showSelector = useShowBranchSelector();
37
+ const {
38
+ t
39
+ } = useTranslation();
40
+ const {
41
+ openModal
42
+ } = useModal();
43
+ const {
44
+ openMerge
45
+ } = useMergeBranch();
46
+ const {
47
+ config: {
48
+ routes: {
49
+ admin: adminRoute
50
+ }
51
+ }
52
+ } = useConfig();
53
+ const manageBranchesURL = formatAdminURL({
54
+ adminRoute,
55
+ path: `/collections/${branchesCollectionSlug}`
56
+ });
57
+ // A branch that was merged, closed or made unreadable while it was still
58
+ // selected is no longer in the list. It is still what the request resolved to,
59
+ // so the switcher names it — and pinning it at the top is also the way out.
60
+ const activeOption = activeBranch === MAIN_BRANCH ? {
61
+ name: MAIN_BRANCH,
62
+ slug: MAIN_BRANCH
63
+ } : branches.find(({
64
+ slug
65
+ }) => slug === activeBranch) ?? {
66
+ name: activeBranch,
67
+ slug: activeBranch
68
+ };
69
+ const {
70
+ entries: entries_0,
71
+ slugByEntry: slugByEntry_0
72
+ } = useMemo(() => {
73
+ // Everything except where you already are: the active branch is pinned above
74
+ // the search, so listing it again would offer switching to it.
75
+ const options = [{
76
+ name: MAIN_BRANCH,
77
+ slug: MAIN_BRANCH
78
+ }, ...branches].filter(({
79
+ slug: slug_0
80
+ }) => slug_0 !== activeBranch);
81
+ const slugByEntry = new Map();
82
+ const entries = options.map(option => {
83
+ const hasDistinctName = option.name !== option.slug;
84
+ const entry = {
85
+ Component: /*#__PURE__*/_jsx("span", {
86
+ className: `${baseClass}__option`,
87
+ children: /*#__PURE__*/_jsxs("span", {
88
+ className: `${baseClass}__option-labels`,
89
+ children: [/*#__PURE__*/_jsx("span", {
90
+ className: `${baseClass}__option-name`,
91
+ children: option.name
92
+ }), option.isScheduled ? /*#__PURE__*/_jsx("span", {
93
+ className: `${baseClass}__option-scheduled`,
94
+ children: t('branching:scheduledToMerge')
95
+ }) : option.isMerged && /*#__PURE__*/_jsx("span", {
96
+ className: `${baseClass}__option-merged`,
97
+ children: t('branching:status_merged')
98
+ })]
99
+ })
100
+ }),
101
+ // The slug is not rendered — editors name branches, the slug is derived —
102
+ // but it stays searchable, since it is what URLs and the API expose.
103
+ name: hasDistinctName ? `${option.name} ${option.slug}` : option.name
104
+ };
105
+ slugByEntry.set(entry, option.slug);
106
+ return entry;
107
+ });
108
+ return {
109
+ entries,
110
+ slugByEntry
111
+ };
112
+ }, [activeBranch, branches, t]);
113
+ if (!showSelector) {
114
+ return null;
115
+ }
116
+ const activeLabel = branches.find(({
117
+ slug: slug_1
118
+ }) => slug_1 === activeBranch)?.name ?? activeBranch ?? MAIN_BRANCH;
119
+ return /*#__PURE__*/_jsxs(Fragment, {
120
+ children: [/*#__PURE__*/_jsx(Combobox, {
121
+ "aria-label": t('branching:branches'),
122
+ className: [baseClass, className].filter(Boolean).join(' '),
123
+ entries: entries_0,
124
+ // Pinned rather than listed, so both stay reachable no matter what the
125
+ // search has filtered the list down to.
126
+ footer: ({
127
+ close
128
+ }) => /*#__PURE__*/_jsxs(Fragment, {
129
+ children: [/*#__PURE__*/_jsx(Link, {
130
+ className: `${baseClass}__option ${baseClass}__action ${baseClass}__manage`,
131
+ href: manageBranchesURL,
132
+ onClick: close,
133
+ children: /*#__PURE__*/_jsx("span", {
134
+ className: `${baseClass}__option-labels`,
135
+ children: t('branching:manageBranches')
136
+ })
137
+ }), /*#__PURE__*/_jsx("div", {
138
+ className: `${baseClass}__footer-divider`
139
+ }), /*#__PURE__*/_jsx("button", {
140
+ className: `${baseClass}__option ${baseClass}__action ${baseClass}__create`,
141
+ onClick: () => {
142
+ close();
143
+ openModal(newBranchModalSlug);
144
+ },
145
+ type: "button",
146
+ children: /*#__PURE__*/_jsxs("span", {
147
+ className: `${baseClass}__option-labels`,
148
+ children: [/*#__PURE__*/_jsx(PlusIcon, {
149
+ size: 16
150
+ }), t('branching:createNewBranch')]
151
+ })
152
+ })]
153
+ }),
154
+ // Where you are, before what you could switch to. On a branch the name
155
+ // itself is the way to manage it, so the row carries only the name and the
156
+ // one action that is not reachable from anywhere else.
157
+ header: ({
158
+ close: close_0
159
+ }) => /*#__PURE__*/_jsxs("div", {
160
+ className: `${baseClass}__current`,
161
+ children: [activeOption.id === undefined ? /*#__PURE__*/_jsx("span", {
162
+ className: `${baseClass}__current-name`,
163
+ children: activeOption.name
164
+ }) :
165
+ // Opens in a new tab, which is what the icon promises. Reviewing a
166
+ // branch is a detour from whatever you were editing when you opened
167
+ // the switcher, so it should not cost you that place.
168
+ /*#__PURE__*/
169
+ _jsxs(Link, {
170
+ className: `${baseClass}__current-name ${baseClass}__current-link`,
171
+ href: formatAdminURL({
172
+ adminRoute,
173
+ path: `/collections/${branchesCollectionSlug}/${activeOption.id}`
174
+ }),
175
+ onClick: close_0,
176
+ rel: "noopener noreferrer",
177
+ target: "_blank",
178
+ children: [/*#__PURE__*/_jsx("span", {
179
+ className: `${baseClass}__current-text`,
180
+ children: activeOption.name
181
+ }), /*#__PURE__*/_jsx(NewTabIcon, {
182
+ className: `${baseClass}__current-icon`,
183
+ size: 16
184
+ })]
185
+ }), activeOption.id !== undefined && /*#__PURE__*/_jsx(Button, {
186
+ buttonStyle: "primary",
187
+ onClick: () => {
188
+ close_0();
189
+ // No selection to pass: from the switcher, merging means the whole
190
+ // branch — so it hands over the way to narrow that instead, and
191
+ // lets the modal count what is pending.
192
+ openMerge({
193
+ branchID: activeOption.id,
194
+ branchName: activeOption.name,
195
+ branchSlug: activeOption.slug,
196
+ reviewURL: formatAdminURL({
197
+ adminRoute,
198
+ path: `/collections/${branchesCollectionSlug}/${activeOption.id}`
199
+ })
200
+ });
201
+ },
202
+ size: "medium",
203
+ children: t('branching:merge')
204
+ })]
205
+ }),
206
+ horizontalAlign: "left",
207
+ // Searchable as soon as there is anything to search. With nothing to switch
208
+ // to, a search box and a "no matches" message describe a search nobody ran —
209
+ // the popup is then only its two actions.
210
+ minEntriesForSearch: entries_0.length ? 0 : 1,
211
+ onSelect: entry_0 => {
212
+ const slug_2 = slugByEntry_0.get(entry_0);
213
+ if (slug_2) {
214
+ setBranch(slug_2);
215
+ }
216
+ },
217
+ portalClassName: `${baseClass}__popup`,
218
+ renderButton: ({
219
+ active,
220
+ onClick,
221
+ onKeyDown,
222
+ ...ariaProps
223
+ }) => /*#__PURE__*/_jsx(Button, {
224
+ "aria-label": t('branching:selectBranch'),
225
+ buttonStyle: "secondary",
226
+ className: `${baseClass}__trigger`,
227
+ extraButtonProps: {
228
+ onKeyDown
229
+ },
230
+ icon: /*#__PURE__*/_jsx(BranchIcon, {}),
231
+ iconPosition: "left",
232
+ onClick: onClick,
233
+ selected: active,
234
+ size: "medium",
235
+ ...ariaProps,
236
+ children: /*#__PURE__*/_jsxs("span", {
237
+ className: `${baseClass}__trigger-label`,
238
+ children: [/*#__PURE__*/_jsx("span", {
239
+ className: `${baseClass}__trigger-name`,
240
+ children: activeLabel
241
+ }), /*#__PURE__*/_jsx(ChevronIcon, {
242
+ direction: active ? 'up' : 'down',
243
+ size: 16
244
+ })]
245
+ })
246
+ }),
247
+ searchPlaceholder: t('branching:searchBranches'),
248
+ // Suppressed only when there is nothing to match against in the first place;
249
+ // a search that filters everything out still says so.
250
+ showEmptyMessage: entries_0.length > 0,
251
+ size: "fit-content"
252
+ }), /*#__PURE__*/_jsx(NewBranchModal, {})]
253
+ });
254
+ };
255
+ //# sourceMappingURL=index.js.map