@payloadcms/ui 4.0.0-internal.9726517 → 4.0.0-internal.a1317b2

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 (558) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +11 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +1 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +6 -2
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +1 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +45 -32
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/Autosave/index.d.ts.map +1 -1
  15. package/dist/elements/Autosave/index.js +2 -3
  16. package/dist/elements/Autosave/index.js.map +1 -1
  17. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  18. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  19. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  20. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  22. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  23. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  24. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.js +2 -3
  26. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  27. package/dist/elements/Button/index.css +2 -2
  28. package/dist/elements/Button/index.d.ts.map +1 -1
  29. package/dist/elements/Button/index.js +2 -0
  30. package/dist/elements/Button/index.js.map +1 -1
  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 +65 -3
  34. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  35. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  36. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  37. package/dist/elements/CodeEditor/index.css +0 -5
  38. package/dist/elements/CommandPalette/index.css +0 -7
  39. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  40. package/dist/elements/CopyLocaleData/index.js +8 -9
  41. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  42. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  43. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  44. package/dist/elements/CopyToClipboard/index.js +10 -8
  45. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  46. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  47. package/dist/elements/CreateDocumentButton/index.js +4 -1
  48. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  49. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  50. package/dist/elements/DatePicker/DatePicker.js +1 -0
  51. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  52. package/dist/elements/DatePicker/index.css +1 -1
  53. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  54. package/dist/elements/DeleteDocument/index.js +16 -1
  55. package/dist/elements/DeleteDocument/index.js.map +1 -1
  56. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  57. package/dist/elements/DeleteMany/index.js +2 -3
  58. package/dist/elements/DeleteMany/index.js.map +1 -1
  59. package/dist/elements/Drawer/index.css +10 -4
  60. package/dist/elements/Dropzone/index.css +10 -4
  61. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  62. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  63. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  64. package/dist/elements/DuplicateDocument/index.js +2 -3
  65. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  66. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  67. package/dist/elements/EditMany/DrawerContent.js +4 -5
  68. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  69. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  70. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  71. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  72. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  73. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  74. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  75. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  76. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  77. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  78. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  79. package/dist/elements/FileManager/index.css +35 -52
  80. package/dist/elements/FileManager/index.d.ts.map +1 -1
  81. package/dist/elements/FileManager/index.js +385 -282
  82. package/dist/elements/FileManager/index.js.map +1 -1
  83. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  84. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/MoveMany/index.js +2 -3
  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 +2 -3
  89. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  90. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  92. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  93. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  94. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  95. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  96. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  97. package/dist/elements/IDLabel/index.css +6 -0
  98. package/dist/elements/IDLabel/index.d.ts +1 -1
  99. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  100. package/dist/elements/IDLabel/index.js +16 -21
  101. package/dist/elements/IDLabel/index.js.map +1 -1
  102. package/dist/elements/InputStepper/index.css +0 -1
  103. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  104. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  105. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  106. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  107. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  108. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +2 -3
  109. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  110. package/dist/elements/LivePreview/Window/index.js +1 -1
  111. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  112. package/dist/elements/Localizer/index.js +1 -1
  113. package/dist/elements/Localizer/index.js.map +1 -1
  114. package/dist/elements/Locked/index.css +0 -8
  115. package/dist/elements/Locked/index.d.ts.map +1 -1
  116. package/dist/elements/Locked/index.js +70 -64
  117. package/dist/elements/Locked/index.js.map +1 -1
  118. package/dist/elements/MiniCarousel/index.css +39 -37
  119. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  120. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  121. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  122. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  123. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  124. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  125. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  126. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  127. package/dist/elements/NavGroup/index.css +0 -1
  128. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  129. package/dist/elements/Popup/index.js +1 -1
  130. package/dist/elements/Popup/index.js.map +1 -1
  131. package/dist/elements/PreviewButton/index.d.ts +1 -2
  132. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  133. package/dist/elements/PreviewButton/index.js +11 -5
  134. package/dist/elements/PreviewButton/index.js.map +1 -1
  135. package/dist/elements/PreviewSizes/index.css +8 -9
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  137. package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
  138. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  139. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
  140. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
  141. package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
  142. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  143. package/dist/elements/PublishButton/index.js +5 -6
  144. package/dist/elements/PublishButton/index.js.map +1 -1
  145. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  146. package/dist/elements/PublishMany/DrawerContent.js +2 -3
  147. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  148. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  149. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  150. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  151. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  152. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  153. package/dist/elements/ReactSelect/index.css +0 -3
  154. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  155. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  156. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  157. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  158. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  159. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  160. package/dist/elements/RelationshipTable/index.js +41 -5
  161. package/dist/elements/RelationshipTable/index.js.map +1 -1
  162. package/dist/elements/RenderTitle/index.css +4 -0
  163. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  164. package/dist/elements/RenderTitle/index.js +18 -13
  165. package/dist/elements/RenderTitle/index.js.map +1 -1
  166. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  167. package/dist/elements/RestoreMany/index.js +2 -3
  168. package/dist/elements/RestoreMany/index.js.map +1 -1
  169. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  170. package/dist/elements/SaveDraftButton/index.js +2 -3
  171. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  172. package/dist/elements/SelectRow/index.d.ts +4 -3
  173. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  174. package/dist/elements/SelectRow/index.js +10 -7
  175. package/dist/elements/SelectRow/index.js.map +1 -1
  176. package/dist/elements/SidebarToggle/index.css +0 -17
  177. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  178. package/dist/elements/SortColumn/index.js +42 -38
  179. package/dist/elements/SortColumn/index.js.map +1 -1
  180. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  181. package/dist/elements/SortHeader/index.js +29 -26
  182. package/dist/elements/SortHeader/index.js.map +1 -1
  183. package/dist/elements/Status/index.d.ts.map +1 -1
  184. package/dist/elements/Status/index.js +2 -3
  185. package/dist/elements/Status/index.js.map +1 -1
  186. package/dist/elements/StepNav/index.css +64 -14
  187. package/dist/elements/StepNav/index.d.ts.map +1 -1
  188. package/dist/elements/StepNav/index.js +143 -69
  189. package/dist/elements/StepNav/index.js.map +1 -1
  190. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  191. package/dist/elements/Table/DefaultCell/index.js +3 -11
  192. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  193. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  194. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  195. package/dist/elements/Table/OrderableRow.js +17 -1
  196. package/dist/elements/Table/OrderableRow.js.map +1 -1
  197. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  198. package/dist/elements/Table/OrderableTable.js +20 -4
  199. package/dist/elements/Table/OrderableTable.js.map +1 -1
  200. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  201. package/dist/elements/Table/RelationshipProvider/index.js +2 -3
  202. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  203. package/dist/elements/TableSection/index.css +0 -1
  204. package/dist/elements/Tooltip/index.css +15 -34
  205. package/dist/elements/Tooltip/index.d.ts +11 -3
  206. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  207. package/dist/elements/Tooltip/index.js +151 -85
  208. package/dist/elements/Tooltip/index.js.map +1 -1
  209. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  210. package/dist/elements/UnpublishButton/index.js +3 -4
  211. package/dist/elements/UnpublishButton/index.js.map +1 -1
  212. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  213. package/dist/elements/UnpublishMany/DrawerContent.js +2 -3
  214. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  215. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  216. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  217. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  218. package/dist/elements/Upload/index.css +39 -37
  219. package/dist/elements/Upload/index.d.ts.map +1 -1
  220. package/dist/elements/Upload/index.js +37 -99
  221. package/dist/elements/Upload/index.js.map +1 -1
  222. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  223. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  224. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  225. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  226. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  227. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  228. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  229. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  230. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  231. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  232. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  233. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  234. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  235. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -1
  236. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  237. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  238. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  239. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  240. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  241. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  242. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  243. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  244. package/dist/elements/WhereBuilder/index.js +15 -4
  245. package/dist/elements/WhereBuilder/index.js.map +1 -1
  246. package/dist/exports/client/index.d.ts +5 -1
  247. package/dist/exports/client/index.d.ts.map +1 -1
  248. package/dist/exports/client/index.js +1 -1
  249. package/dist/exports/client/index.js.map +3 -3
  250. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  251. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  252. package/dist/fields/Array/ArrayRow.js +2 -0
  253. package/dist/fields/Array/ArrayRow.js.map +1 -1
  254. package/dist/fields/Array/index.d.ts.map +1 -1
  255. package/dist/fields/Array/index.js +40 -13
  256. package/dist/fields/Array/index.js.map +1 -1
  257. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  258. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  259. package/dist/fields/Blocks/BlockRow.js +2 -0
  260. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  261. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  262. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  263. package/dist/fields/Blocks/RowActions.js +22 -19
  264. package/dist/fields/Blocks/RowActions.js.map +1 -1
  265. package/dist/fields/Blocks/index.d.ts.map +1 -1
  266. package/dist/fields/Blocks/index.js +40 -13
  267. package/dist/fields/Blocks/index.js.map +1 -1
  268. package/dist/fields/Checkbox/Input.d.ts +2 -0
  269. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  270. package/dist/fields/Checkbox/Input.js +32 -26
  271. package/dist/fields/Checkbox/Input.js.map +1 -1
  272. package/dist/fields/Checkbox/index.css +37 -73
  273. package/dist/fields/FieldError/index.css +0 -9
  274. package/dist/fields/FieldError/index.d.ts.map +1 -1
  275. package/dist/fields/FieldError/index.js +19 -9
  276. package/dist/fields/FieldError/index.js.map +1 -1
  277. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  278. package/dist/fields/FieldLabel/index.js +4 -5
  279. package/dist/fields/FieldLabel/index.js.map +1 -1
  280. package/dist/fields/Join/index.css +9 -0
  281. package/dist/fields/Join/index.d.ts.map +1 -1
  282. package/dist/fields/Join/index.js +13 -9
  283. package/dist/fields/Join/index.js.map +1 -1
  284. package/dist/fields/RadioGroup/index.css +0 -7
  285. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  286. package/dist/fields/Relationship/Input.js +34 -17
  287. package/dist/fields/Relationship/Input.js.map +1 -1
  288. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  289. package/dist/fields/Slug/index.css +0 -1
  290. package/dist/fields/Slug/index.d.ts.map +1 -1
  291. package/dist/fields/Slug/index.js +74 -111
  292. package/dist/fields/Slug/index.js.map +1 -1
  293. package/dist/fields/Upload/Input.d.ts.map +1 -1
  294. package/dist/fields/Upload/Input.js +46 -19
  295. package/dist/fields/Upload/Input.js.map +1 -1
  296. package/dist/fields/Upload/Input.spec.js +242 -0
  297. package/dist/fields/Upload/Input.spec.js.map +1 -0
  298. package/dist/fields/Upload/index.css +19 -4
  299. package/dist/fields/shared/index.d.ts +1 -1
  300. package/dist/fields/shared/index.d.ts.map +1 -1
  301. package/dist/fields/shared/index.js.map +1 -1
  302. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  303. package/dist/forms/Form/fieldReducer.js +3 -1
  304. package/dist/forms/Form/fieldReducer.js.map +1 -1
  305. package/dist/forms/Form/index.d.ts.map +1 -1
  306. package/dist/forms/Form/index.js +11 -4
  307. package/dist/forms/Form/index.js.map +1 -1
  308. package/dist/forms/Form/types.d.ts +1 -1
  309. package/dist/forms/Form/types.d.ts.map +1 -1
  310. package/dist/forms/Form/types.js.map +1 -1
  311. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  312. package/dist/forms/NullifyField/index.js +2 -3
  313. package/dist/forms/NullifyField/index.js.map +1 -1
  314. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  315. package/dist/forms/WatchChildErrors/index.js +2 -2
  316. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  317. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  318. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +2 -1
  319. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  320. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  321. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  322. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  323. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  324. package/dist/hooks/usePayloadAPI.js +2 -3
  325. package/dist/hooks/usePayloadAPI.js.map +1 -1
  326. package/dist/icons/Edit/index.d.ts +0 -1
  327. package/dist/icons/Edit/index.d.ts.map +1 -1
  328. package/dist/icons/Edit/index.js +4 -4
  329. package/dist/icons/Edit/index.js.map +1 -1
  330. package/dist/layouts/Root/index.d.ts +1 -1
  331. package/dist/layouts/Root/index.d.ts.map +1 -1
  332. package/dist/layouts/Root/index.js +8 -2
  333. package/dist/layouts/Root/index.js.map +1 -1
  334. package/dist/providers/Actions/index.d.ts +1 -0
  335. package/dist/providers/Actions/index.d.ts.map +1 -1
  336. package/dist/providers/Actions/index.js +43 -11
  337. package/dist/providers/Actions/index.js.map +1 -1
  338. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  339. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  340. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  341. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  342. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  343. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  344. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  345. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  346. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  347. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  348. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  349. package/dist/providers/Auth/authSessionRequests.js +119 -0
  350. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  351. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  352. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  353. package/dist/providers/Auth/index.d.ts +2 -56
  354. package/dist/providers/Auth/index.d.ts.map +1 -1
  355. package/dist/providers/Auth/index.js +283 -135
  356. package/dist/providers/Auth/index.js.map +1 -1
  357. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  358. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  359. package/dist/providers/Auth/sessionActivity.js +49 -0
  360. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  361. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  362. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  363. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  364. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  365. package/dist/providers/Auth/sessionTiming.js +18 -0
  366. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  367. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  368. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  369. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  370. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  371. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  372. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  373. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  374. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  375. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  376. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  377. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  378. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  379. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  380. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  381. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  382. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  383. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  384. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  385. package/dist/providers/Auth/types.d.ts +65 -0
  386. package/dist/providers/Auth/types.d.ts.map +1 -0
  387. package/dist/providers/Auth/types.js +2 -0
  388. package/dist/providers/Auth/types.js.map +1 -0
  389. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  390. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  391. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  392. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  393. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  394. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  395. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  396. package/dist/providers/DocumentInfo/index.js +2 -3
  397. package/dist/providers/DocumentInfo/index.js.map +1 -1
  398. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  399. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  400. package/dist/providers/DocumentTitle/index.js +2 -0
  401. package/dist/providers/DocumentTitle/index.js.map +1 -1
  402. package/dist/providers/Embed/index.d.ts +24 -0
  403. package/dist/providers/Embed/index.d.ts.map +1 -0
  404. package/dist/providers/Embed/index.js +105 -0
  405. package/dist/providers/Embed/index.js.map +1 -0
  406. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  407. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  408. package/dist/providers/FormErrorHandler/index.js +6 -0
  409. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  410. package/dist/providers/Locale/index.d.ts +1 -5
  411. package/dist/providers/Locale/index.d.ts.map +1 -1
  412. package/dist/providers/Locale/index.js +64 -137
  413. package/dist/providers/Locale/index.js.map +1 -1
  414. package/dist/providers/Root/index.d.ts +1 -0
  415. package/dist/providers/Root/index.d.ts.map +1 -1
  416. package/dist/providers/Root/index.js +37 -31
  417. package/dist/providers/Root/index.js.map +1 -1
  418. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  419. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  420. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  421. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  422. package/dist/providers/RouteTransition/index.d.ts +2 -0
  423. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  424. package/dist/providers/RouteTransition/index.js +42 -14
  425. package/dist/providers/RouteTransition/index.js.map +1 -1
  426. package/dist/providers/Selection/index.d.ts.map +1 -1
  427. package/dist/providers/Selection/index.js +2 -3
  428. package/dist/providers/Selection/index.js.map +1 -1
  429. package/dist/providers/ServerFunctions/index.d.ts +5 -1
  430. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  431. package/dist/providers/ServerFunctions/index.js +15 -0
  432. package/dist/providers/ServerFunctions/index.js.map +1 -1
  433. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  434. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  435. package/dist/providers/SidebarTabs/index.js.map +1 -1
  436. package/dist/providers/Theme/index.d.ts +3 -0
  437. package/dist/providers/Theme/index.d.ts.map +1 -1
  438. package/dist/providers/Theme/index.js +107 -95
  439. package/dist/providers/Theme/index.js.map +1 -1
  440. package/dist/styles.css +13 -10
  441. package/dist/templates/Default/index.d.ts +1 -0
  442. package/dist/templates/Default/index.d.ts.map +1 -1
  443. package/dist/templates/Default/index.js +2 -0
  444. package/dist/templates/Default/index.js.map +1 -1
  445. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  446. package/dist/utilities/combineFieldLabel.js +5 -1
  447. package/dist/utilities/combineFieldLabel.js.map +1 -1
  448. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  449. package/dist/utilities/formatMetadata.js +0 -5
  450. package/dist/utilities/formatMetadata.js.map +1 -1
  451. package/dist/utilities/generateFieldID.d.ts +1 -1
  452. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  453. package/dist/utilities/generateFieldID.js +2 -2
  454. package/dist/utilities/generateFieldID.js.map +1 -1
  455. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  456. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  457. package/dist/utilities/getFilesFromClipboard.js +49 -0
  458. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  459. package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
  460. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  461. package/dist/utilities/getHasScheduledPublish.js +2 -5
  462. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  463. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  464. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  465. package/dist/utilities/getRequestEmbed.js +10 -0
  466. package/dist/utilities/getRequestEmbed.js.map +1 -0
  467. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  468. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  469. package/dist/utilities/handleServerFunctions.js +17 -37
  470. package/dist/utilities/handleServerFunctions.js.map +1 -1
  471. package/dist/utilities/renderTable.d.ts.map +1 -1
  472. package/dist/utilities/renderTable.js +18 -2
  473. package/dist/utilities/renderTable.js.map +1 -1
  474. package/dist/utilities/schedulePublishHandler.d.ts +8 -1
  475. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  476. package/dist/utilities/schedulePublishHandler.js +68 -4
  477. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  478. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  479. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  480. package/dist/utilities/serverFunctionRegistry.js +27 -8
  481. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  482. package/dist/utilities/slugify.d.ts.map +1 -1
  483. package/dist/utilities/slugify.js +52 -6
  484. package/dist/utilities/slugify.js.map +1 -1
  485. package/dist/views/API/index.client.d.ts.map +1 -1
  486. package/dist/views/API/index.client.js +2 -3
  487. package/dist/views/API/index.client.js.map +1 -1
  488. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  489. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  490. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  491. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  492. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  493. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  494. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  495. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  496. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  497. package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
  498. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  499. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  500. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  501. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  502. package/dist/views/Document/index.d.ts.map +1 -1
  503. package/dist/views/Document/index.js +1 -2
  504. package/dist/views/Document/index.js.map +1 -1
  505. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  506. package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
  507. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  508. package/dist/views/Edit/index.css +61 -53
  509. package/dist/views/Edit/index.d.ts.map +1 -1
  510. package/dist/views/Edit/index.js +3 -2
  511. package/dist/views/Edit/index.js.map +1 -1
  512. package/dist/views/HierarchyList/index.css +1 -1
  513. package/dist/views/List/ListHeader/index.d.ts +1 -10
  514. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  515. package/dist/views/List/ListHeader/index.js +1 -3
  516. package/dist/views/List/ListHeader/index.js.map +1 -1
  517. package/dist/views/List/index.client.d.ts.map +1 -1
  518. package/dist/views/List/index.client.js +0 -14
  519. package/dist/views/List/index.client.js.map +1 -1
  520. package/dist/views/List/index.css +6 -1
  521. package/dist/views/List/index.d.ts.map +1 -1
  522. package/dist/views/List/index.js +4 -0
  523. package/dist/views/List/index.js.map +1 -1
  524. package/dist/views/Logout/index.d.ts.map +1 -1
  525. package/dist/views/Logout/index.js +11 -0
  526. package/dist/views/Logout/index.js.map +1 -1
  527. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  528. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  529. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  530. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  531. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  532. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  533. package/dist/views/Root/index.d.ts +12 -1
  534. package/dist/views/Root/index.d.ts.map +1 -1
  535. package/dist/views/Root/index.js +11 -3
  536. package/dist/views/Root/index.js.map +1 -1
  537. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  538. package/dist/views/Version/Default/SetStepNav.js +10 -13
  539. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  540. package/dist/views/Version/Default/index.d.ts.map +1 -1
  541. package/dist/views/Version/Default/index.js +12 -13
  542. package/dist/views/Version/Default/index.js.map +1 -1
  543. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  544. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  545. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
  546. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  547. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  548. package/package.json +6 -10
  549. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  550. package/dist/scss/app.scss +0 -183
  551. package/dist/scss/colors.scss +0 -191
  552. package/dist/scss/custom.css +0 -1
  553. package/dist/scss/queries.scss +0 -27
  554. package/dist/scss/styles.scss +0 -9
  555. package/dist/scss/svg.scss +0 -10
  556. package/dist/scss/toastify.scss +0 -61
  557. package/dist/scss/vars.scss +0 -192
  558. package/dist/scss/z-index.scss +0 -9
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import { getTranslation } from '@payloadcms/translations';
6
5
  import React, { useCallback, useState } from 'react';
6
+ import { toast } from 'sonner';
7
7
  import { Button } from '../../elements/Button/index.js';
8
8
  import { FieldDescription } from '../../fields/FieldDescription/index.js';
9
9
  import { FieldError } from '../../fields/FieldError/index.js';
@@ -15,6 +15,7 @@ import { LockIcon } from '../../icons/Lock/index.js';
15
15
  import { LockOpenIcon } from '../../icons/LockOpen/index.js';
16
16
  import { RefreshIcon } from '../../icons/Refresh/index.js';
17
17
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
18
+ import { useLocale } from '../../providers/Locale/index.js';
18
19
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
19
20
  import { useTranslation } from '../../providers/Translation/index.js';
20
21
  import './index.css';
@@ -22,12 +23,10 @@ const baseClass = 'slug-field-component';
22
23
  /**
23
24
  * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.
24
25
  */
25
- const SlugFieldComponent = t0 => {
26
- const $ = _c(17);
27
- const {
28
- field,
29
- path
30
- } = t0;
26
+ const SlugFieldComponent = ({
27
+ field,
28
+ path
29
+ }) => {
31
30
  const {
32
31
  admin,
33
32
  label,
@@ -44,159 +43,123 @@ const SlugFieldComponent = t0 => {
44
43
  t
45
44
  } = useTranslation();
46
45
  const {
46
+ id,
47
47
  collectionSlug,
48
48
  globalSlug
49
49
  } = useDocumentInfo();
50
50
  const {
51
51
  slugify
52
52
  } = useServerFunctions();
53
- const t1 = path || field.name;
54
- let t2;
55
- if ($[0] !== t1) {
56
- t2 = {
57
- path: t1
58
- };
59
- $[0] = t1;
60
- $[1] = t2;
61
- } else {
62
- t2 = $[1];
63
- }
53
+ const currentLocale = useLocale();
54
+ const locale = currentLocale?.code;
64
55
  const {
65
56
  path: fieldPath,
66
57
  setValue,
67
58
  showError,
68
59
  value
69
- } = useField(t2);
60
+ } = useField({
61
+ path: path || field.name
62
+ });
70
63
  const {
71
64
  getData,
72
65
  getDataByPath
73
66
  } = useForm();
74
67
  const [isLocked, setIsLocked] = useState(true);
75
- let t3;
76
- if ($[2] !== collectionSlug || $[3] !== fieldPath || $[4] !== getData || $[5] !== getDataByPath || $[6] !== globalSlug || $[7] !== setValue || $[8] !== slugify || $[9] !== useAsSlug || $[10] !== value) {
77
- t3 = async e => {
78
- e.preventDefault();
79
- const valueToSlugify = getDataByPath(useAsSlug);
80
- const formattedSlug = await slugify({
68
+ /**
69
+ * This method allows the user to generate their slug on demand, e.g. when they click the "generate" button.
70
+ * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.
71
+ */
72
+ const handleGenerate = useCallback(async e => {
73
+ e.preventDefault();
74
+ const valueToSlugify = useAsSlug ? getDataByPath(useAsSlug) : undefined;
75
+ let formattedSlug;
76
+ try {
77
+ formattedSlug = await slugify({
78
+ id: id ?? undefined,
81
79
  collectionSlug,
82
80
  data: getData(),
83
81
  globalSlug,
82
+ locale,
84
83
  path: fieldPath,
85
84
  valueToSlugify
86
85
  });
87
- if (formattedSlug === null || formattedSlug === undefined) {
88
- setValue("");
89
- return;
90
- }
91
- if (value !== formattedSlug) {
92
- setValue(formattedSlug);
93
- }
94
- };
95
- $[2] = collectionSlug;
96
- $[3] = fieldPath;
97
- $[4] = getData;
98
- $[5] = getDataByPath;
99
- $[6] = globalSlug;
100
- $[7] = setValue;
101
- $[8] = slugify;
102
- $[9] = useAsSlug;
103
- $[10] = value;
104
- $[11] = t3;
105
- } else {
106
- t3 = $[11];
107
- }
108
- const handleGenerate = t3;
109
- let t4;
110
- if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
111
- t4 = e_0 => {
112
- e_0.preventDefault();
113
- setIsLocked(_temp);
114
- };
115
- $[12] = t4;
116
- } else {
117
- t4 = $[12];
118
- }
119
- const toggleLock = t4;
120
- let t5;
121
- if ($[13] !== setValue) {
122
- t5 = e_1 => {
123
- setValue(e_1.target.value);
124
- };
125
- $[13] = setValue;
126
- $[14] = t5;
127
- } else {
128
- t5 = $[14];
129
- }
130
- const handleChange = t5;
86
+ } catch (_err) {
87
+ toast.error(t('error:unspecific'));
88
+ return;
89
+ }
90
+ // Empty only comes back for globals (no counter fallback) — keep the current value. For
91
+ // collections the server returns the `<singular>-N` fallback when there's no source.
92
+ if (formattedSlug === null || formattedSlug === undefined || formattedSlug === '') {
93
+ return;
94
+ }
95
+ /**
96
+ * The result may be the same as the current value, and if so, we don't want to trigger a re-render.
97
+ */
98
+ if (value !== formattedSlug) {
99
+ setValue(formattedSlug);
100
+ }
101
+ }, [setValue, value, useAsSlug, getData, slugify, getDataByPath, id, collectionSlug, globalSlug, locale, fieldPath, t]);
102
+ const toggleLock = useCallback(e_0 => {
103
+ e_0.preventDefault();
104
+ setIsLocked(prev => !prev);
105
+ }, []);
106
+ const handleChange = useCallback(e_1 => {
107
+ setValue(e_1.target.value);
108
+ }, [setValue]);
131
109
  const isReadOnly = Boolean(readOnlyFromProps || isLocked);
132
- const t6 = ["field-type", baseClass, showError && `${baseClass}--error`, isLocked && `${baseClass}--locked`, readOnlyFromProps && `${baseClass}--read-only`].filter(Boolean).join(" ");
133
- const t7 = _jsx(FieldLabel, {
134
- htmlFor: `field-${fieldPath}`,
135
- label,
136
- required
137
- });
138
- const t8 = _jsx(FieldError, {
139
- path: fieldPath,
140
- showError
141
- });
142
- const t9 = showError && "form-input-group-error";
143
- let t10;
144
- if ($[15] !== t9) {
145
- t10 = ["form-input-group", `${baseClass}__input-container`, t9].filter(Boolean);
146
- $[15] = t9;
147
- $[16] = t10;
148
- } else {
149
- t10 = $[16];
150
- }
151
- return _jsxs("div", {
152
- className: t6,
153
- children: [t7, _jsxs("div", {
110
+ return /*#__PURE__*/_jsxs("div", {
111
+ className: ['field-type', baseClass, showError && `${baseClass}--error`, isLocked && `${baseClass}--locked`, readOnlyFromProps && `${baseClass}--read-only`].filter(Boolean).join(' '),
112
+ children: [/*#__PURE__*/_jsx(FieldLabel, {
113
+ htmlFor: `field-${fieldPath}`,
114
+ label: label,
115
+ required: required
116
+ }), /*#__PURE__*/_jsxs("div", {
154
117
  className: `${baseClass}__wrap`,
155
- children: [t8, _jsxs("div", {
156
- className: t10.join(" "),
157
- children: [_jsx("input", {
118
+ children: [/*#__PURE__*/_jsx(FieldError, {
119
+ path: fieldPath,
120
+ showError: showError
121
+ }), /*#__PURE__*/_jsxs("div", {
122
+ className: ['form-input-group', `${baseClass}__input-container`, showError && 'form-input-group-error'].filter(Boolean).join(' '),
123
+ children: [/*#__PURE__*/_jsx("input", {
158
124
  "aria-label": getTranslation(label, i18n) || path,
159
125
  className: `form-input ${baseClass}__input`,
160
126
  disabled: isReadOnly,
161
- id: `field-${fieldPath?.replace(/\./g, "__")}`,
127
+ id: `field-${fieldPath?.replace(/\./g, '__')}`,
162
128
  name: fieldPath,
163
129
  onChange: handleChange,
164
130
  placeholder: getTranslation(placeholder, i18n),
165
131
  type: "text",
166
- value: value || ""
167
- }), !readOnlyFromProps && _jsxs("div", {
132
+ value: value || ''
133
+ }), !readOnlyFromProps && /*#__PURE__*/_jsxs("div", {
168
134
  className: `${baseClass}__actions`,
169
- children: [!isLocked && _jsx(Button, {
170
- "aria-label": t("authentication:generate"),
135
+ children: [!isLocked && /*#__PURE__*/_jsx(Button, {
136
+ "aria-label": t('authentication:generate'),
171
137
  buttonStyle: "ghost",
172
138
  className: `${baseClass}__action-btn`,
173
- icon: _jsx(RefreshIcon, {}),
174
- id: `field-${fieldPath?.replace(/\./g, "__")}-generate`,
139
+ icon: /*#__PURE__*/_jsx(RefreshIcon, {}),
140
+ id: `field-${fieldPath?.replace(/\./g, '__')}-generate`,
175
141
  margin: false,
176
142
  onClick: handleGenerate
177
- }), _jsx(Button, {
178
- "aria-label": isLocked ? t("general:unlock") : t("general:lock"),
143
+ }), /*#__PURE__*/_jsx(Button, {
144
+ "aria-label": isLocked ? t('general:unlock') : t('general:lock'),
179
145
  buttonStyle: "ghost",
180
146
  className: `${baseClass}__action-btn`,
181
- icon: isLocked ? _jsx(LockIcon, {
147
+ icon: isLocked ? /*#__PURE__*/_jsx(LockIcon, {
182
148
  size: 16
183
- }) : _jsx(LockOpenIcon, {
149
+ }) : /*#__PURE__*/_jsx(LockOpenIcon, {
184
150
  size: 16
185
151
  }),
186
- id: `field-${fieldPath?.replace(/\./g, "__")}-lock`,
152
+ id: `field-${fieldPath?.replace(/\./g, '__')}-lock`,
187
153
  margin: false,
188
154
  onClick: toggleLock
189
155
  })]
190
156
  })]
191
- }), _jsx(FieldDescription, {
192
- description,
157
+ }), /*#__PURE__*/_jsx(FieldDescription, {
158
+ description: description,
193
159
  path: fieldPath
194
160
  })]
195
161
  })]
196
162
  });
197
163
  };
198
164
  export const SlugField = withCondition(SlugFieldComponent);
199
- function _temp(prev) {
200
- return !prev;
201
- }
202
165
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useCallback","useState","Button","FieldDescription","FieldError","FieldLabel","useForm","useField","withCondition","LockIcon","LockOpenIcon","RefreshIcon","useDocumentInfo","useServerFunctions","useTranslation","baseClass","SlugFieldComponent","t0","$","field","path","admin","label","required","useAsSlug","description","placeholder","readOnly","readOnlyFromProps","i18n","t","collectionSlug","globalSlug","slugify","t1","name","t2","fieldPath","setValue","showError","value","getData","getDataByPath","isLocked","setIsLocked","t3","e","preventDefault","valueToSlugify","formattedSlug","data","undefined","handleGenerate","t4","Symbol","for","e_0","_temp","toggleLock","t5","e_1","target","handleChange","isReadOnly","Boolean","t6","filter","join","t7","_jsx","htmlFor","t8","t9","t10","_jsxs","className","children","disabled","id","replace","onChange","type","buttonStyle","icon","margin","onClick","size","SlugField","prev"],"sources":["../../../src/fields/Slug/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SlugFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { LockOpenIcon } from '../../icons/LockOpen/index.js'\nimport { RefreshIcon } from '../../icons/Refresh/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'slug-field-component'\n\ntype SlugFieldProps = {\n readonly field: SlugFieldClient\n readonly path?: string\n}\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nconst SlugFieldComponent: React.FC<SlugFieldProps> = ({ field, path }) => {\n const { admin, label, required, useAsSlug } = field\n const { description, placeholder, readOnly: readOnlyFromProps } = admin || {}\n\n const { i18n, t } = useTranslation()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const {\n path: fieldPath,\n setValue,\n showError,\n value,\n } = useField<string>({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent<Element>) => {\n e.preventDefault()\n\n const valueToSlugify = getDataByPath(useAsSlug)\n\n const formattedSlug = await slugify({\n collectionSlug,\n data: getData(),\n globalSlug,\n path: fieldPath,\n valueToSlugify,\n })\n\n if (formattedSlug === null || formattedSlug === undefined) {\n setValue('')\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [\n setValue,\n value,\n useAsSlug,\n getData,\n slugify,\n getDataByPath,\n collectionSlug,\n globalSlug,\n fieldPath,\n ],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent<Element>) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n },\n [setValue],\n )\n\n const isReadOnly = Boolean(readOnlyFromProps || isLocked)\n\n return (\n <div\n className={[\n 'field-type',\n baseClass,\n showError && `${baseClass}--error`,\n isLocked && `${baseClass}--locked`,\n readOnlyFromProps && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel htmlFor={`field-${fieldPath}`} label={label} required={required} />\n <div className={`${baseClass}__wrap`}>\n <FieldError path={fieldPath} showError={showError} />\n\n <div\n className={[\n 'form-input-group',\n `${baseClass}__input-container`,\n showError && 'form-input-group-error',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <input\n aria-label={getTranslation(label, i18n) || path}\n className={`form-input ${baseClass}__input`}\n disabled={isReadOnly}\n id={`field-${fieldPath?.replace(/\\./g, '__')}`}\n name={fieldPath}\n onChange={handleChange}\n placeholder={getTranslation(placeholder, i18n)}\n type=\"text\"\n value={value || ''}\n />\n\n {!readOnlyFromProps && (\n <div className={`${baseClass}__actions`}>\n {!isLocked && (\n <Button\n aria-label={t('authentication:generate')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={<RefreshIcon />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-generate`}\n margin={false}\n onClick={handleGenerate}\n />\n )}\n <Button\n aria-label={isLocked ? t('general:unlock') : t('general:lock')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={isLocked ? <LockIcon size={16} /> : <LockOpenIcon size={16} />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-lock`}\n margin={false}\n onClick={toggleLock}\n />\n </div>\n )}\n </div>\n\n <FieldDescription description={description} path={fieldPath} />\n </div>\n </div>\n )\n}\n\nexport const SlugField = withCondition(SlugFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useState","toast","Button","FieldDescription","FieldError","FieldLabel","useForm","useField","withCondition","LockIcon","LockOpenIcon","RefreshIcon","useDocumentInfo","useLocale","useServerFunctions","useTranslation","baseClass","SlugFieldComponent","field","path","admin","label","required","useAsSlug","description","placeholder","readOnly","readOnlyFromProps","i18n","t","id","collectionSlug","globalSlug","slugify","currentLocale","locale","code","fieldPath","setValue","showError","value","name","getData","getDataByPath","isLocked","setIsLocked","handleGenerate","e","preventDefault","valueToSlugify","undefined","formattedSlug","data","_err","error","toggleLock","prev","handleChange","target","isReadOnly","Boolean","_jsxs","className","filter","join","_jsx","htmlFor","disabled","replace","onChange","type","buttonStyle","icon","margin","onClick","size","SlugField"],"sources":["../../../src/fields/Slug/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SlugFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { LockOpenIcon } from '../../icons/LockOpen/index.js'\nimport { RefreshIcon } from '../../icons/Refresh/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'slug-field-component'\n\ntype SlugFieldProps = {\n readonly field: SlugFieldClient\n readonly path?: string\n}\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nconst SlugFieldComponent: React.FC<SlugFieldProps> = ({ field, path }) => {\n const { admin, label, required, useAsSlug } = field\n const { description, placeholder, readOnly: readOnlyFromProps } = admin || {}\n\n const { i18n, t } = useTranslation()\n\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n\n const {\n path: fieldPath,\n setValue,\n showError,\n value,\n } = useField<string>({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent<Element>) => {\n e.preventDefault()\n\n const valueToSlugify = useAsSlug ? getDataByPath(useAsSlug) : undefined\n\n let formattedSlug: null | string | undefined\n\n try {\n formattedSlug = await slugify({\n id: id ?? undefined,\n collectionSlug,\n data: getData(),\n globalSlug,\n locale,\n path: fieldPath,\n valueToSlugify,\n })\n } catch (_err) {\n toast.error(t('error:unspecific'))\n return\n }\n\n // Empty only comes back for globals (no counter fallback) — keep the current value. For\n // collections the server returns the `<singular>-N` fallback when there's no source.\n if (formattedSlug === null || formattedSlug === undefined || formattedSlug === '') {\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [\n setValue,\n value,\n useAsSlug,\n getData,\n slugify,\n getDataByPath,\n id,\n collectionSlug,\n globalSlug,\n locale,\n fieldPath,\n t,\n ],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent<Element>) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n },\n [setValue],\n )\n\n const isReadOnly = Boolean(readOnlyFromProps || isLocked)\n\n return (\n <div\n className={[\n 'field-type',\n baseClass,\n showError && `${baseClass}--error`,\n isLocked && `${baseClass}--locked`,\n readOnlyFromProps && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel htmlFor={`field-${fieldPath}`} label={label} required={required} />\n <div className={`${baseClass}__wrap`}>\n <FieldError path={fieldPath} showError={showError} />\n\n <div\n className={[\n 'form-input-group',\n `${baseClass}__input-container`,\n showError && 'form-input-group-error',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <input\n aria-label={getTranslation(label, i18n) || path}\n className={`form-input ${baseClass}__input`}\n disabled={isReadOnly}\n id={`field-${fieldPath?.replace(/\\./g, '__')}`}\n name={fieldPath}\n onChange={handleChange}\n placeholder={getTranslation(placeholder, i18n)}\n type=\"text\"\n value={value || ''}\n />\n\n {!readOnlyFromProps && (\n <div className={`${baseClass}__actions`}>\n {!isLocked && (\n <Button\n aria-label={t('authentication:generate')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={<RefreshIcon />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-generate`}\n margin={false}\n onClick={handleGenerate}\n />\n )}\n <Button\n aria-label={isLocked ? t('general:unlock') : t('general:lock')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={isLocked ? <LockIcon size={16} /> : <LockOpenIcon size={16} />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-lock`}\n margin={false}\n onClick={toggleLock}\n />\n </div>\n )}\n </div>\n\n <FieldDescription description={description} path={fieldPath} />\n </div>\n </div>\n )\n}\n\nexport const SlugField = withCondition(SlugFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAC9B,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAKjD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAqB9D,OAAO,aAAa,CAAA;AAGpB,eAAO,MAAM,SAAS,WAAW,CAAA;AAIjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;CACjG,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBA0sBlD"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAC9B,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAKjD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAwB9D,OAAO,aAAa,CAAA;AAGpB,eAAO,MAAM,SAAS,WAAW,CAAA;AAIjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;CACjG,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBA4uBlD"}
@@ -5,6 +5,7 @@ import { useModal } from '@faceless-ui/modal';
5
5
  import { formatAdminURL } from 'payload/shared';
6
6
  import * as qs from 'qs-esm';
7
7
  import React, { useCallback, useEffect, useMemo } from 'react';
8
+ import { toast } from 'sonner';
8
9
  import { useBulkUpload } from '../../elements/BulkUpload/index.js';
9
10
  import { Button } from '../../elements/Button/index.js';
10
11
  import { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js';
@@ -18,6 +19,8 @@ import { FieldLabel } from '../../fields/FieldLabel/index.js';
18
19
  import { useAuth } from '../../providers/Auth/index.js';
19
20
  import { useLocale } from '../../providers/Locale/index.js';
20
21
  import { useTranslation } from '../../providers/Translation/index.js';
22
+ import { abortAndIgnore } from '../../utilities/abortAndIgnore.js';
23
+ import { getFilesFromClipboard } from '../../utilities/getFilesFromClipboard.js';
21
24
  import { normalizeRelationshipValue } from '../../utilities/normalizeRelationshipValue.js';
22
25
  import { fieldBaseClass } from '../shared/index.js';
23
26
  import { UploadComponentHasMany } from './HasMany/index.js';
@@ -68,9 +71,8 @@ export function UploadInput(props) {
68
71
  const {
69
72
  permissions
70
73
  } = useAuth();
71
- const {
72
- code
73
- } = useLocale();
74
+ const locale = useLocale();
75
+ const code = locale?.code;
74
76
  const {
75
77
  i18n,
76
78
  t
@@ -139,10 +141,6 @@ export function UploadInput(props) {
139
141
  }] = useDocumentDrawer({
140
142
  collectionSlug: activeRelationTo
141
143
  });
142
- /**
143
- * Track the last loaded value to prevent unnecessary reloads
144
- */
145
- const loadedValueRef = React.useRef(null);
146
144
  const canCreate = useMemo(() => {
147
145
  if (!allowCreate) {
148
146
  return false;
@@ -159,7 +157,7 @@ export function UploadInput(props) {
159
157
  onChangeFromProps(newValue);
160
158
  }
161
159
  }, [onChangeFromProps]);
162
- const populateDocs = React.useCallback(async items => {
160
+ const populateDocs = React.useCallback(async (items, options) => {
163
161
  if (!items?.length) {
164
162
  return [];
165
163
  }
@@ -205,7 +203,8 @@ export function UploadInput(props) {
205
203
  'Content-Type': 'application/x-www-form-urlencoded',
206
204
  'X-Payload-HTTP-Method-Override': 'GET'
207
205
  },
208
- method: 'POST'
206
+ method: 'POST',
207
+ signal: options?.signal
209
208
  });
210
209
  let docs = [];
211
210
  if (response.ok) {
@@ -298,6 +297,18 @@ export function UploadInput(props) {
298
297
  }
299
298
  openModal(drawerSlug);
300
299
  }, [hasMany, relationTo, activeRelationTo, setCollectionSlug, collectionSlugsWithCreatePermission, maxRows, openModal, drawerSlug, setInitialFiles, setSelectableCollections, setMaxFiles]);
300
+ const handlePasteFromClipboard = useCallback(async () => {
301
+ try {
302
+ const files = await getFilesFromClipboard();
303
+ if (!files) {
304
+ toast.error(t('error:noFileFoundInClipboard'));
305
+ return;
306
+ }
307
+ onLocalFileSelection(files);
308
+ } catch (_err) {
309
+ toast.error(t('error:unableToReadClipboard'));
310
+ }
311
+ }, [onLocalFileSelection, t]);
301
312
  // only hasMany can bulk select
302
313
  const onListBulkSelect = React.useCallback(async (docs_0, collectionSlug) => {
303
314
  const isPoly_1 = Array.isArray(relationTo);
@@ -433,6 +444,7 @@ export function UploadInput(props) {
433
444
  setPopulatedDocs(newValue_4);
434
445
  }, [onChange, hasMany, relationTo]);
435
446
  useEffect(() => {
447
+ const abortController = new AbortController();
436
448
  async function loadInitialDocs() {
437
449
  if (value) {
438
450
  let itemsToLoad_0 = [];
@@ -469,23 +481,26 @@ export function UploadInput(props) {
469
481
  }
470
482
  }
471
483
  if (itemsToLoad_0.length > 0) {
472
- const loadedDocs_1 = await populateDocs(itemsToLoad_0);
473
- if (loadedDocs_1) {
474
- setPopulatedDocs(loadedDocs_1);
475
- loadedValueRef.current = value;
484
+ try {
485
+ const loadedDocs_1 = await populateDocs(itemsToLoad_0, {
486
+ signal: abortController.signal
487
+ });
488
+ if (loadedDocs_1 && !abortController.signal.aborted) {
489
+ setPopulatedDocs(loadedDocs_1);
490
+ }
491
+ } catch (_err_0) {
492
+ // Ignore aborted requests from superseded values / unmount
476
493
  }
477
494
  }
478
495
  } else {
479
496
  // Clear populated docs when value is cleared
480
497
  setPopulatedDocs([]);
481
- loadedValueRef.current = null;
482
498
  }
483
499
  }
484
- // Only load if value has changed from what we last loaded
485
- const valueChanged = loadedValueRef.current !== value;
486
- if (valueChanged) {
487
- void loadInitialDocs();
488
- }
500
+ void loadInitialDocs();
501
+ return () => {
502
+ abortAndIgnore(abortController);
503
+ };
489
504
  }, [populateDocs, value, relationTo]);
490
505
  useEffect(() => {
491
506
  setOnSuccess(onUploadSuccess);
@@ -579,6 +594,18 @@ export function UploadInput(props) {
579
594
  onClick: openListDrawer,
580
595
  size: "medium",
581
596
  children: t('fields:chooseFromExisting')
597
+ }), canCreate && !readOnly && /*#__PURE__*/_jsxs(_Fragment, {
598
+ children: [/*#__PURE__*/_jsx("span", {
599
+ className: `${baseClass}__dropzoneContent__orText`,
600
+ children: t('general:or')
601
+ }), /*#__PURE__*/_jsx(Button, {
602
+ buttonStyle: "secondary",
603
+ className: `${baseClass}__pasteFromClipboard`,
604
+ icon: "clipboard",
605
+ onClick: handlePasteFromClipboard,
606
+ size: "medium",
607
+ tooltip: t('upload:pasteFromClipboard')
608
+ })]
582
609
  }), /*#__PURE__*/_jsx(CreateDocDrawer, {
583
610
  onSave: onDocCreate
584
611
  }), /*#__PURE__*/_jsx(ListDrawer, {