@payloadcms/ui 3.24.0-canary.72057b1 → 3.24.0-canary.80e034e

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 (346) hide show
  1. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  2. package/dist/elements/AppHeader/index.js +2 -4
  3. package/dist/elements/AppHeader/index.js.map +1 -1
  4. package/dist/elements/Autosave/index.d.ts.map +1 -1
  5. package/dist/elements/Autosave/index.js +143 -108
  6. package/dist/elements/Autosave/index.js.map +1 -1
  7. package/dist/elements/Banner/index.d.ts.map +1 -1
  8. package/dist/elements/Banner/index.js +1 -2
  9. package/dist/elements/Banner/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/EditForm/index.js +6 -2
  12. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  14. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +22 -20
  15. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  16. package/dist/elements/Button/index.d.ts.map +1 -1
  17. package/dist/elements/Button/index.js +12 -12
  18. package/dist/elements/Button/index.js.map +1 -1
  19. package/dist/elements/Button/index.scss +21 -5
  20. package/dist/elements/Button/types.d.ts +5 -0
  21. package/dist/elements/Button/types.d.ts.map +1 -1
  22. package/dist/elements/Button/types.js.map +1 -1
  23. package/dist/elements/Card/index.d.ts +7 -3
  24. package/dist/elements/Card/index.d.ts.map +1 -1
  25. package/dist/elements/Card/index.js +0 -2
  26. package/dist/elements/Card/index.js.map +1 -1
  27. package/dist/elements/ConfirmationModal/index.d.ts +16 -0
  28. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -0
  29. package/dist/elements/ConfirmationModal/index.js +158 -0
  30. package/dist/elements/ConfirmationModal/index.js.map +1 -0
  31. package/dist/elements/{GenerateConfirmation → ConfirmationModal}/index.scss +1 -1
  32. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  33. package/dist/elements/CopyLocaleData/index.js +220 -99
  34. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  35. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  36. package/dist/elements/DatePicker/DatePicker.js +2 -0
  37. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  38. package/dist/elements/DatePicker/types.d.ts +1 -0
  39. package/dist/elements/DatePicker/types.d.ts.map +1 -1
  40. package/dist/elements/DatePicker/types.js.map +1 -1
  41. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  42. package/dist/elements/DeleteDocument/index.js +37 -81
  43. package/dist/elements/DeleteDocument/index.js.map +1 -1
  44. package/dist/elements/DeleteDocument/index.scss +0 -29
  45. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  46. package/dist/elements/DeleteMany/index.js +17 -44
  47. package/dist/elements/DeleteMany/index.js.map +1 -1
  48. package/dist/elements/DeleteMany/index.scss +0 -29
  49. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  50. package/dist/elements/DocumentControls/index.js.map +1 -1
  51. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  52. package/dist/elements/DocumentLocked/index.js +67 -39
  53. package/dist/elements/DocumentLocked/index.js.map +1 -1
  54. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -1
  55. package/dist/elements/DocumentTakeOver/index.js +28 -12
  56. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  57. package/dist/elements/DuplicateDocument/index.d.ts +0 -1
  58. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  59. package/dist/elements/DuplicateDocument/index.js +31 -56
  60. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  61. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  62. package/dist/elements/EditMany/DrawerContent.js +3 -2
  63. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  64. package/dist/elements/EditUpload/index.js +1 -1
  65. package/dist/elements/EditUpload/index.js.map +1 -1
  66. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -0
  67. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  68. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -17
  69. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  70. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -0
  71. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  72. package/dist/elements/FileDetails/StaticFileDetails/index.js +2 -1
  73. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  74. package/dist/elements/FileDetails/index.d.ts +1 -0
  75. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  76. package/dist/elements/FileDetails/index.js.map +1 -1
  77. package/dist/elements/GenerateConfirmation/index.d.ts +1 -2
  78. package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
  79. package/dist/elements/GenerateConfirmation/index.js +23 -47
  80. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  81. package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -1
  82. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  83. package/dist/elements/LeaveWithoutSaving/index.js +56 -113
  84. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  85. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  86. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +6 -2
  87. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  88. package/dist/elements/Link/formatUrl.d.ts +4 -0
  89. package/dist/elements/Link/formatUrl.d.ts.map +1 -0
  90. package/dist/elements/Link/formatUrl.js +87 -0
  91. package/dist/elements/Link/formatUrl.js.map +1 -0
  92. package/dist/elements/Link/index.d.ts +6 -0
  93. package/dist/elements/Link/index.d.ts.map +1 -0
  94. package/dist/elements/Link/index.js +58 -0
  95. package/dist/elements/Link/index.js.map +1 -0
  96. package/dist/elements/ListControls/index.d.ts +1 -0
  97. package/dist/elements/ListControls/index.d.ts.map +1 -1
  98. package/dist/elements/ListControls/index.js +14 -0
  99. package/dist/elements/ListControls/index.js.map +1 -1
  100. package/dist/elements/ListControls/index.scss +5 -0
  101. package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
  102. package/dist/elements/Localizer/LocalizerLabel/index.js +11 -8
  103. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  104. package/dist/elements/Localizer/index.d.ts.map +1 -1
  105. package/dist/elements/Localizer/index.js +2 -0
  106. package/dist/elements/Localizer/index.js.map +1 -1
  107. package/dist/elements/Logout/index.d.ts +5 -0
  108. package/dist/elements/Logout/index.d.ts.map +1 -1
  109. package/dist/elements/Logout/index.js +10 -13
  110. package/dist/elements/Logout/index.js.map +1 -1
  111. package/dist/elements/Nav/context.d.ts.map +1 -1
  112. package/dist/elements/Nav/context.js +3 -1
  113. package/dist/elements/Nav/context.js.map +1 -1
  114. package/dist/elements/Pill/index.d.ts.map +1 -1
  115. package/dist/elements/Pill/index.js +1 -2
  116. package/dist/elements/Pill/index.js.map +1 -1
  117. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  118. package/dist/elements/Popup/PopupButtonList/index.js +1 -2
  119. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  120. package/dist/elements/Popup/index.d.ts +1 -0
  121. package/dist/elements/Popup/index.d.ts.map +1 -1
  122. package/dist/elements/Popup/index.js +2 -0
  123. package/dist/elements/Popup/index.js.map +1 -1
  124. package/dist/elements/PreviewButton/index.d.ts +2 -1
  125. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  126. package/dist/elements/PreviewButton/index.js +2 -2
  127. package/dist/elements/PreviewButton/index.js.map +1 -1
  128. package/dist/elements/PreviewSizes/index.js +1 -1
  129. package/dist/elements/PreviewSizes/index.js.map +1 -1
  130. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +1 -2
  131. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  132. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  133. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +2 -0
  134. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  135. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  137. package/dist/elements/PublishButton/index.d.ts +2 -3
  138. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/PublishButton/index.js +20 -17
  140. package/dist/elements/PublishButton/index.js.map +1 -1
  141. package/dist/elements/PublishMany/index.d.ts +0 -1
  142. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  143. package/dist/elements/PublishMany/index.js +19 -45
  144. package/dist/elements/PublishMany/index.js.map +1 -1
  145. package/dist/elements/RelationshipTable/index.d.ts +7 -2
  146. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  147. package/dist/elements/RelationshipTable/index.js +69 -23
  148. package/dist/elements/RelationshipTable/index.js.map +1 -1
  149. package/dist/elements/RelationshipTable/index.scss +6 -0
  150. package/dist/elements/SaveButton/index.d.ts +2 -3
  151. package/dist/elements/SaveButton/index.d.ts.map +1 -1
  152. package/dist/elements/SaveButton/index.js +3 -3
  153. package/dist/elements/SaveButton/index.js.map +1 -1
  154. package/dist/elements/SaveDraftButton/index.d.ts +2 -1
  155. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  156. package/dist/elements/SaveDraftButton/index.js +2 -2
  157. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  158. package/dist/elements/Status/index.d.ts.map +1 -1
  159. package/dist/elements/Status/index.js +173 -154
  160. package/dist/elements/Status/index.js.map +1 -1
  161. package/dist/elements/Status/index.scss +0 -41
  162. package/dist/elements/StayLoggedIn/index.d.ts +0 -1
  163. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  164. package/dist/elements/StayLoggedIn/index.js +48 -75
  165. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  166. package/dist/elements/StepNav/index.d.ts +5 -0
  167. package/dist/elements/StepNav/index.d.ts.map +1 -1
  168. package/dist/elements/StepNav/index.js +18 -25
  169. package/dist/elements/StepNav/index.js.map +1 -1
  170. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  171. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +12 -4
  172. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  173. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  174. package/dist/elements/Table/DefaultCell/index.js +1 -2
  175. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  176. package/dist/elements/Table/index.d.ts +1 -9
  177. package/dist/elements/Table/index.d.ts.map +1 -1
  178. package/dist/elements/Table/index.js.map +1 -1
  179. package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
  180. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  181. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  182. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts +20 -0
  183. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
  184. package/dist/elements/TableColumns/buildPolymorphicColumnState.js +200 -0
  185. package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +1 -0
  186. package/dist/elements/TableColumns/index.d.ts +2 -3
  187. package/dist/elements/TableColumns/index.d.ts.map +1 -1
  188. package/dist/elements/TableColumns/index.js +4 -3
  189. package/dist/elements/TableColumns/index.js.map +1 -1
  190. package/dist/elements/Thumbnail/index.js +2 -2
  191. package/dist/elements/Thumbnail/index.js.map +1 -1
  192. package/dist/elements/UnpublishMany/index.d.ts +1 -2
  193. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  194. package/dist/elements/UnpublishMany/index.js +14 -42
  195. package/dist/elements/UnpublishMany/index.js.map +1 -1
  196. package/dist/elements/Upload/index.d.ts.map +1 -1
  197. package/dist/elements/Upload/index.js +5 -1
  198. package/dist/elements/Upload/index.js.map +1 -1
  199. package/dist/elements/ViewDescription/index.d.ts +2 -5
  200. package/dist/elements/ViewDescription/index.d.ts.map +1 -1
  201. package/dist/elements/ViewDescription/index.js +2 -2
  202. package/dist/elements/ViewDescription/index.js.map +1 -1
  203. package/dist/exports/client/{CodeEditor-BMYVMDNZ.js → CodeEditor-L6GW2VQ6.js} +2 -2
  204. package/dist/exports/client/{CodeEditor-BMYVMDNZ.js.map → CodeEditor-L6GW2VQ6.js.map} +0 -1
  205. package/dist/exports/client/{DatePicker-THCU4KZJ.js → DatePicker-HHQ6TPOW.js} +2 -2
  206. package/dist/exports/client/{DatePicker-THCU4KZJ.js.map → DatePicker-HHQ6TPOW.js.map} +0 -1
  207. package/dist/exports/client/chunk-5LKBKI4T.js.map +0 -1
  208. package/dist/exports/client/{chunk-EG3ZOHFS.js → chunk-IMEQ6NKQ.js} +2 -2
  209. package/dist/exports/client/{chunk-EG3ZOHFS.js.map → chunk-IMEQ6NKQ.js.map} +3 -4
  210. package/dist/exports/client/chunk-ZZDNSFEW.js +26 -0
  211. package/dist/exports/client/{chunk-CQQHQHCB.js.map → chunk-ZZDNSFEW.js.map} +4 -5
  212. package/dist/exports/client/index.d.ts +49 -4
  213. package/dist/exports/client/index.d.ts.map +1 -1
  214. package/dist/exports/client/index.js +23 -23
  215. package/dist/exports/client/index.js.map +4 -5
  216. package/dist/fields/Array/index.d.ts.map +1 -1
  217. package/dist/fields/Array/index.js +1 -2
  218. package/dist/fields/Array/index.js.map +1 -1
  219. package/dist/fields/Blocks/BlockRow.d.ts +1 -1
  220. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  221. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  222. package/dist/fields/Blocks/BlocksDrawer/index.d.ts +1 -1
  223. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  224. package/dist/fields/Blocks/BlocksDrawer/index.js +31 -23
  225. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  226. package/dist/fields/Blocks/RowActions.d.ts +1 -1
  227. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  228. package/dist/fields/Blocks/RowActions.js.map +1 -1
  229. package/dist/fields/Blocks/index.d.ts.map +1 -1
  230. package/dist/fields/Blocks/index.js +6 -4
  231. package/dist/fields/Blocks/index.js.map +1 -1
  232. package/dist/fields/DateTime/index.d.ts.map +1 -1
  233. package/dist/fields/DateTime/index.js +24 -6
  234. package/dist/fields/DateTime/index.js.map +1 -1
  235. package/dist/fields/JSON/index.d.ts.map +1 -1
  236. package/dist/fields/JSON/index.js +5 -6
  237. package/dist/fields/JSON/index.js.map +1 -1
  238. package/dist/fields/Join/index.d.ts.map +1 -1
  239. package/dist/fields/Join/index.js +28 -7
  240. package/dist/fields/Join/index.js.map +1 -1
  241. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  242. package/dist/fields/Relationship/optionsReducer.js +1 -0
  243. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  244. package/dist/fields/Select/Input.d.ts.map +1 -1
  245. package/dist/fields/Select/Input.js +2 -0
  246. package/dist/fields/Select/Input.js.map +1 -1
  247. package/dist/fields/Tabs/Tab/index.scss +2 -1
  248. package/dist/fields/Upload/Input.d.ts +1 -0
  249. package/dist/fields/Upload/Input.d.ts.map +1 -1
  250. package/dist/fields/Upload/Input.js.map +1 -1
  251. package/dist/fields/Upload/RelationshipContent/index.js +1 -1
  252. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  253. package/dist/forms/Form/index.d.ts.map +1 -1
  254. package/dist/forms/Form/index.js +24 -9
  255. package/dist/forms/Form/index.js.map +1 -1
  256. package/dist/forms/Form/initContextState.d.ts.map +1 -1
  257. package/dist/forms/Form/initContextState.js +2 -0
  258. package/dist/forms/Form/initContextState.js.map +1 -1
  259. package/dist/forms/Form/types.d.ts +6 -0
  260. package/dist/forms/Form/types.d.ts.map +1 -1
  261. package/dist/forms/Form/types.js.map +1 -1
  262. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  263. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +2 -1
  264. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  265. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  266. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +1 -1
  267. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  268. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  269. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  270. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  271. package/dist/icons/Dots/index.d.ts +7 -0
  272. package/dist/icons/Dots/index.d.ts.map +1 -0
  273. package/dist/icons/Dots/index.js +12 -0
  274. package/dist/icons/Dots/index.js.map +1 -0
  275. package/dist/icons/Dots/index.scss +27 -0
  276. package/dist/providers/Auth/index.d.ts.map +1 -1
  277. package/dist/providers/Auth/index.js +9 -13
  278. package/dist/providers/Auth/index.js.map +1 -1
  279. package/dist/providers/Config/index.d.ts +2 -2
  280. package/dist/providers/Config/index.d.ts.map +1 -1
  281. package/dist/providers/Config/index.js +17 -2
  282. package/dist/providers/Config/index.js.map +1 -1
  283. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  284. package/dist/providers/ListQuery/index.js +2 -1
  285. package/dist/providers/ListQuery/index.js.map +1 -1
  286. package/dist/providers/Root/index.d.ts.map +1 -1
  287. package/dist/providers/Root/index.js +44 -41
  288. package/dist/providers/Root/index.js.map +1 -1
  289. package/dist/providers/RouteTransition/ProgressBar/index.d.ts +17 -0
  290. package/dist/providers/RouteTransition/ProgressBar/index.d.ts.map +1 -0
  291. package/dist/providers/RouteTransition/ProgressBar/index.js +104 -0
  292. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -0
  293. package/dist/providers/RouteTransition/ProgressBar/index.scss +21 -0
  294. package/dist/providers/RouteTransition/index.d.ts +51 -0
  295. package/dist/providers/RouteTransition/index.d.ts.map +1 -0
  296. package/dist/providers/RouteTransition/index.js +133 -0
  297. package/dist/providers/RouteTransition/index.js.map +1 -0
  298. package/dist/providers/Selection/index.d.ts.map +1 -1
  299. package/dist/providers/Selection/index.js +5 -6
  300. package/dist/providers/Selection/index.js.map +1 -1
  301. package/dist/styles.css +1 -1
  302. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  303. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +3 -1
  304. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  305. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  306. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +4 -1
  307. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  308. package/dist/utilities/buildTableState.d.ts +1 -2
  309. package/dist/utilities/buildTableState.d.ts.map +1 -1
  310. package/dist/utilities/buildTableState.js +72 -19
  311. package/dist/utilities/buildTableState.js.map +1 -1
  312. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  313. package/dist/utilities/copyDataFromLocale.js +22 -18
  314. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  315. package/dist/utilities/getClientConfig.js.map +1 -1
  316. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  317. package/dist/utilities/handleFormStateLocking.js +3 -6
  318. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  319. package/dist/utilities/renderTable.d.ts +6 -4
  320. package/dist/utilities/renderTable.d.ts.map +1 -1
  321. package/dist/utilities/renderTable.js +49 -54
  322. package/dist/utilities/renderTable.js.map +1 -1
  323. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  324. package/dist/views/Edit/Auth/index.js +56 -55
  325. package/dist/views/Edit/Auth/index.js.map +1 -1
  326. package/dist/views/Edit/index.d.ts +2 -2
  327. package/dist/views/Edit/index.d.ts.map +1 -1
  328. package/dist/views/Edit/index.js +8 -4
  329. package/dist/views/Edit/index.js.map +1 -1
  330. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  331. package/dist/views/List/ListHeader/index.js +1 -4
  332. package/dist/views/List/ListHeader/index.js.map +1 -1
  333. package/dist/views/List/index.d.ts +2 -25
  334. package/dist/views/List/index.d.ts.map +1 -1
  335. package/dist/views/List/index.js +6 -6
  336. package/dist/views/List/index.js.map +1 -1
  337. package/dist/views/List/types.d.ts +1 -18
  338. package/dist/views/List/types.d.ts.map +1 -1
  339. package/dist/views/List/types.js.map +1 -1
  340. package/package.json +5 -5
  341. package/dist/elements/DuplicateDocument/index.scss +0 -42
  342. package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
  343. package/dist/elements/PublishMany/index.scss +0 -39
  344. package/dist/elements/StayLoggedIn/index.scss +0 -40
  345. package/dist/elements/UnpublishMany/index.scss +0 -39
  346. package/dist/exports/client/chunk-CQQHQHCB.js +0 -26
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","RenderCustomComponent","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","$","i18n","t","field","t0","path","permissions","readOnly","schemaPath","schemaPathFromProps","validate","name","admin","t1","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","t2","undefined","className","description","isSortable","t3","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","config","t4","localization","drawerSlug","submitted","plural","singular","t5","bb0","fallback","defaultLocale","editingDefaultLocale","t6","value","options","memoizedValidate","t7","hasRows","customComponents","t8","errorPaths","rows","t9","showError","valid","value_0","t10","AfterInput","BeforeInput","Description","Error","Label","RowLabels","t11","t12","rowIndex","blockType","setTimeout","addRow","t13","rowIndex_0","type","duplicateRow","t14","rowIndex_1","removeRow","t15","moveFromIndex","moveToIndex","moveRow","t16","collapsed","collapsedIDs","updatedRows","toggleCollapseAll","t17","rowID","collapsed_0","collapsedIDs_0","updatedRows_0","setCollapse","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","t18","t19","filter","Boolean","t20","_jsx","CustomComponent","Fallback","t21","count","withMessage","_jsxs","join","id","replace","children","onClick","fieldValue","ids","map","_temp","onDragEnd","t22","moveFromIndex_0","moveToIndex_0","row_0","i","blockType_0","isLoading","row","blockConfig","find","block","slug","rowPath","rowErrorCount","errorPath","startsWith","disabled","draggableSortableItemProps","errorCount","fields","parentPath","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlocksFieldClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: BlocksFieldClientComponent = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n field: {\n name,\n admin: { className, description, isSortable = true } = {},\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n path,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label, RowLabels } = {},\n errorPaths,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number, blockType: string) => {\n addFieldRow({\n blockType,\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n {BeforeInput}\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType, isLoading } = row\n const blockConfig = blocks.find((block) => block.slug === blockType)\n\n if (blockConfig) {\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockConfig}\n blocks={blocks}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={blockConfig.fields}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n Label={RowLabels?.[i]}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath + blockConfig.slug}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && (\n <Fragment>\n <DrawerToggler\n className={`${baseClass}__drawer-toggler`}\n disabled={readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={readOnly}\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","RenderCustomComponent","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","$","i18n","t","field","t0","path","permissions","readOnly","schemaPath","schemaPathFromProps","validate","name","admin","t1","blockReferences","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","t2","undefined","className","description","isSortable","t3","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","config","t4","localization","drawerSlug","submitted","plural","singular","t5","bb0","fallback","defaultLocale","editingDefaultLocale","t6","value","options","memoizedValidate","t7","hasRows","customComponents","t8","errorPaths","rows","t9","showError","valid","value_0","t10","AfterInput","BeforeInput","Description","Error","Label","RowLabels","t11","t12","rowIndex","blockType","setTimeout","addRow","t13","rowIndex_0","type","duplicateRow","t14","rowIndex_1","removeRow","t15","moveFromIndex","moveToIndex","moveRow","t16","collapsed","collapsedIDs","updatedRows","toggleCollapseAll","t17","rowID","collapsed_0","collapsedIDs_0","updatedRows_0","setCollapse","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","t18","t19","filter","Boolean","t20","_jsx","CustomComponent","Fallback","t21","count","withMessage","_jsxs","join","id","replace","children","onClick","fieldValue","ids","map","_temp","onDragEnd","t22","moveFromIndex_0","moveToIndex_0","row_0","i","blockType_0","isLoading","row","blockConfig","blocksMap","find","block","slug","rowPath","rowErrorCount","errorPath","startsWith","disabled","draggableSortableItemProps","errorCount","fields","parentPath","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlocksFieldClientComponent, ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: BlocksFieldClientComponent = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n field: {\n name,\n admin: { className, description, isSortable = true } = {},\n blockReferences,\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n path,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n config,\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label, RowLabels } = {},\n errorPaths,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number, blockType: string) => {\n addFieldRow({\n blockType,\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n {BeforeInput}\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType, isLoading } = row\n const blockConfig: ClientBlock =\n config.blocksMap[blockType] ??\n ((blockReferences ?? blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockType,\n ) as ClientBlock)\n\n if (blockConfig) {\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockConfig}\n blocks={blockReferences ?? blocks}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={blockConfig.fields}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n Label={RowLabels?.[i]}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath + blockConfig.slug}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && (\n <Fragment>\n <DrawerToggler\n className={`${baseClass}__drawer-toggler`}\n disabled={readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={readOnly}\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blockReferences ?? blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTime/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA4B,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAe5E,OAAO,cAAc,CAAA;AA0KrB,eAAO,MAAM,aAAa;;;;;+EAAwC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTime/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA4B,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAe5E,OAAO,cAAc,CAAA;AA4LrB,eAAO,MAAM,aAAa;;;;;+EAAwC,CAAA"}
@@ -39,6 +39,7 @@ const DateTimeFieldComponent = props => {
39
39
  readOnly,
40
40
  validate
41
41
  } = props;
42
+ const pickerAppearance = datePickerProps?.pickerAppearance || 'default';
42
43
  // Get the user timezone so we can adjust the displayed value against it
43
44
  const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
44
45
  const {
@@ -77,6 +78,11 @@ const DateTimeFieldComponent = props => {
77
78
  const timezonePath = path + '_tz';
78
79
  const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath]);
79
80
  const supportedTimezones = config.admin.timezones.supportedTimezones;
81
+ /**
82
+ * Date appearance doesn't include timestamps,
83
+ * which means we need to pin the time to always 12:00 for the selected date
84
+ */
85
+ const isDateOnly = ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance);
80
86
  const selectedTimezone = timezoneField?.value;
81
87
  // The displayed value should be the original value, adjusted to the user's timezone
82
88
  const displayedValue = useMemo(() => {
@@ -99,12 +105,24 @@ const DateTimeFieldComponent = props => {
99
105
  if (!readOnly) {
100
106
  if (timezone && selectedTimezone && incomingDate) {
101
107
  // Create TZDate instances for the selected timezone
102
- const tzDateWithUTC = TZDate.tz(selectedTimezone);
103
- // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor
104
- const dateToUserTz = new TZDate(incomingDate);
105
- // Transpose the date to the selected timezone
106
- const dateWithTimezone_0 = transpose(dateToUserTz, tzDateWithUTC);
107
- setValue(dateWithTimezone_0.toISOString() || null);
108
+ const TZDateWithSelectedTz = TZDate.tz(selectedTimezone);
109
+ if (isDateOnly) {
110
+ // We need to offset this hardcoded hour offset from the DatePicker elemenent
111
+ // this can be removed in 4.0 when we remove the hardcoded offset as it is a breaking change
112
+ // const tzOffset = incomingDate.getTimezoneOffset() / 60
113
+ const incomingOffset = incomingDate.getTimezoneOffset() / 60;
114
+ const originalHour = incomingDate.getHours() + incomingOffset;
115
+ incomingDate.setHours(originalHour);
116
+ // Convert the original date as picked into the desired timezone.
117
+ const dateToSelectedTz = transpose(incomingDate, TZDateWithSelectedTz);
118
+ setValue(dateToSelectedTz.toISOString() || null);
119
+ } else {
120
+ // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor
121
+ const dateToUserTz = new TZDate(incomingDate);
122
+ // Transpose the date to the selected timezone
123
+ const dateWithTimezone_0 = transpose(dateToUserTz, TZDateWithSelectedTz);
124
+ setValue(dateWithTimezone_0.toISOString() || null);
125
+ }
108
126
  } else {
109
127
  setValue(incomingDate?.toISOString() || null);
110
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["TZDateMini","TZDate","getTranslation","transpose","useCallback","useMemo","DatePickerField","RenderCustomComponent","TimezonePicker","FieldDescription","FieldError","FieldLabel","useForm","useFormFields","useField","withCondition","useConfig","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","DateTimeFieldComponent","props","field","admin","className","date","datePickerProps","description","placeholder","label","localized","required","timezone","path","readOnly","validate","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","config","i18n","dispatchFields","setModified","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","timezonePath","timezoneField","fields","_","supportedTimezones","timezones","selectedTimezone","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","styles","onChange","incomingDate","tzDateWithUTC","dateToUserTz","onChangeTimezone","type","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","id","replace","overrides","length","DateTimeField"],"sources":["../../../src/fields/DateTime/index.tsx"],"sourcesContent":["'use client'\nimport type { DateFieldClientComponent, DateFieldValidation } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transpose } from 'date-fns'\nimport { useCallback, useMemo } from 'react'\n\nimport { DatePickerField } from '../../elements/DatePicker/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { TimezonePicker } from '../../elements/TimezonePicker/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, useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport './index.scss'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'date-time-field'\n\nconst DateTimeFieldComponent: DateFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, date: datePickerProps, description, placeholder } = {},\n label,\n localized,\n required,\n timezone,\n },\n path,\n readOnly,\n validate,\n } = props\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n const memoizedValidate: DateFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<Date>({\n path,\n validate: memoizedValidate,\n })\n\n const timezonePath = path + '_tz'\n const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath])\n const supportedTimezones = config.admin.timezones.supportedTimezones\n\n const selectedTimezone = timezoneField?.value as string\n\n // The displayed value should be the original value, adjusted to the user's timezone\n const displayedValue = useMemo(() => {\n if (timezone && selectedTimezone && userTimezone && value) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(selectedTimezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(value).withTimeZone(selectedTimezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return value\n }, [timezone, selectedTimezone, value, userTimezone])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const onChange = useCallback(\n (incomingDate: Date) => {\n if (!readOnly) {\n if (timezone && selectedTimezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const tzDateWithUTC = TZDate.tz(selectedTimezone)\n\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, tzDateWithUTC)\n\n setValue(dateWithTimezone.toISOString() || null)\n } else {\n setValue(incomingDate?.toISOString() || null)\n }\n }\n },\n [readOnly, setValue, timezone, selectedTimezone],\n )\n\n const onChangeTimezone = useCallback(\n (timezone: string) => {\n if (timezonePath) {\n dispatchFields({\n type: 'UPDATE',\n path: timezonePath,\n value: timezone,\n })\n\n setModified(true)\n }\n },\n [dispatchFields, setModified, timezonePath],\n )\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && `${baseClass}--has-error`,\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} localized={localized} required={required} />}\n />\n <div className={`${fieldBaseClass}__wrap`} id={`field-${path.replace(/\\./g, '__')}`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <DatePickerField\n {...datePickerProps}\n onChange={onChange}\n overrides={{\n ...datePickerProps?.overrides,\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly}\n value={displayedValue}\n />\n {timezone && supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`${path}-timezone-picker`}\n onChange={onChangeTimezone}\n options={supportedTimezones}\n required={required}\n selectedTimezone={selectedTimezone}\n />\n )}\n\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const DateTimeField = withCondition(DateTimeFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["TZDateMini","TZDate","getTranslation","transpose","useCallback","useMemo","DatePickerField","RenderCustomComponent","TimezonePicker","FieldDescription","FieldError","FieldLabel","useForm","useFormFields","useField","withCondition","useConfig","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","DateTimeFieldComponent","props","field","admin","className","date","datePickerProps","description","placeholder","label","localized","required","timezone","path","readOnly","validate","pickerAppearance","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","config","i18n","dispatchFields","setModified","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","timezonePath","timezoneField","fields","_","supportedTimezones","timezones","isDateOnly","includes","selectedTimezone","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","styles","onChange","incomingDate","TZDateWithSelectedTz","incomingOffset","getTimezoneOffset","originalHour","getHours","setHours","dateToSelectedTz","dateToUserTz","onChangeTimezone","type","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","id","replace","overrides","length","DateTimeField"],"sources":["../../../src/fields/DateTime/index.tsx"],"sourcesContent":["'use client'\nimport type { DateFieldClientComponent, DateFieldValidation } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transpose } from 'date-fns'\nimport { useCallback, useMemo } from 'react'\n\nimport { DatePickerField } from '../../elements/DatePicker/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { TimezonePicker } from '../../elements/TimezonePicker/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, useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport './index.scss'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'date-time-field'\n\nconst DateTimeFieldComponent: DateFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, date: datePickerProps, description, placeholder } = {},\n label,\n localized,\n required,\n timezone,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const pickerAppearance = datePickerProps?.pickerAppearance || 'default'\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n const memoizedValidate: DateFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const timezonePath = path + '_tz'\n const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath])\n const supportedTimezones = config.admin.timezones.supportedTimezones\n /**\n * Date appearance doesn't include timestamps,\n * which means we need to pin the time to always 12:00 for the selected date\n */\n const isDateOnly = ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)\n const selectedTimezone = timezoneField?.value as string\n\n // The displayed value should be the original value, adjusted to the user's timezone\n const displayedValue = useMemo(() => {\n if (timezone && selectedTimezone && userTimezone && value) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(selectedTimezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(value).withTimeZone(selectedTimezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return value\n }, [timezone, selectedTimezone, value, userTimezone])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const onChange = useCallback(\n (incomingDate: Date) => {\n if (!readOnly) {\n if (timezone && selectedTimezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const TZDateWithSelectedTz = TZDate.tz(selectedTimezone)\n\n if (isDateOnly) {\n // We need to offset this hardcoded hour offset from the DatePicker elemenent\n // this can be removed in 4.0 when we remove the hardcoded offset as it is a breaking change\n // const tzOffset = incomingDate.getTimezoneOffset() / 60\n const incomingOffset = incomingDate.getTimezoneOffset() / 60\n const originalHour = incomingDate.getHours() + incomingOffset\n incomingDate.setHours(originalHour)\n\n // Convert the original date as picked into the desired timezone.\n const dateToSelectedTz = transpose(incomingDate, TZDateWithSelectedTz)\n\n setValue(dateToSelectedTz.toISOString() || null)\n } else {\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, TZDateWithSelectedTz)\n\n setValue(dateWithTimezone.toISOString() || null)\n }\n } else {\n setValue(incomingDate?.toISOString() || null)\n }\n }\n },\n [readOnly, setValue, timezone, selectedTimezone],\n )\n\n const onChangeTimezone = useCallback(\n (timezone: string) => {\n if (timezonePath) {\n dispatchFields({\n type: 'UPDATE',\n path: timezonePath,\n value: timezone,\n })\n\n setModified(true)\n }\n },\n [dispatchFields, setModified, timezonePath],\n )\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && `${baseClass}--has-error`,\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} localized={localized} required={required} />}\n />\n <div className={`${fieldBaseClass}__wrap`} id={`field-${path.replace(/\\./g, '__')}`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <DatePickerField\n {...datePickerProps}\n onChange={onChange}\n overrides={{\n ...datePickerProps?.overrides,\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly}\n value={displayedValue}\n />\n {timezone && supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`${path}-timezone-picker`}\n onChange={onChangeTimezone}\n options={supportedTimezones}\n required={required}\n selectedTimezone={selectedTimezone}\n />\n )}\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const DateTimeField = withCondition(DateTimeFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/JSON/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAUxE,OAAO,cAAc,CAAA;AA6IrB,eAAO,MAAM,SAAS;;;;;+EAAoC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/JSON/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAQxE,OAAO,cAAc,CAAA;AAqJrB,eAAO,MAAM,SAAS;;;;;+EAAoC,CAAA"}
@@ -8,9 +8,9 @@ import { useField } from '../../forms/useField/index.js';
8
8
  import { withCondition } from '../../forms/withCondition/index.js';
9
9
  import { FieldDescription } from '../FieldDescription/index.js';
10
10
  import { FieldError } from '../FieldError/index.js';
11
+ import './index.scss';
11
12
  import { FieldLabel } from '../FieldLabel/index.js';
12
13
  import { mergeFieldStyles } from '../mergeFieldStyles.js';
13
- import './index.scss';
14
14
  import { fieldBaseClass } from '../shared/index.js';
15
15
  const baseClass = 'json-field';
16
16
  const JSONFieldComponent = props => {
@@ -64,15 +64,14 @@ const JSONFieldComponent = props => {
64
64
  if (!jsonSchema) {
65
65
  return;
66
66
  }
67
- const existingSchemas = monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || [];
68
- const modelUri = monaco.Uri.parse(jsonSchema.uri);
69
- const model = monaco.editor.createModel(JSON.stringify(value_0, null, 2), 'json', modelUri);
70
67
  monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
71
68
  enableSchemaRequest: true,
72
- schemas: [...existingSchemas, jsonSchema],
69
+ schemas: [...(monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []), jsonSchema],
73
70
  validate: true
74
71
  });
75
- editor.setModel(model);
72
+ const uri = jsonSchema.uri;
73
+ const newUri = uri.includes('?') ? `${uri}&${crypto.randomUUID()}` : `${uri}?${crypto.randomUUID()}`;
74
+ editor.setModel(monaco.editor.createModel(JSON.stringify(value_0, null, 2), 'json', monaco.Uri.parse(newUri)));
76
75
  }, [jsonSchema, value_0]);
77
76
  const handleChange = useCallback(val => {
78
77
  if (readOnly) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","CodeEditor","RenderCustomComponent","useField","withCondition","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","baseClass","JSONFieldComponent","props","field","admin","className","description","editorOptions","maxHeight","jsonSchema","label","localized","required","path","readOnly","validate","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","initialValue","setValue","showError","handleMount","editor","monaco","existingSchemas","languages","json","jsonDefaults","diagnosticsOptions","schemas","modelUri","Uri","parse","uri","model","createModel","JSON","stringify","setDiagnosticsOptions","enableSchemaRequest","setModel","handleChange","val","undefined","e","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","message","defaultLanguage","onChange","onMount","JSONField"],"sources":["../../../src/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'json-field'\n\nconst JSONFieldComponent: JSONFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, maxHeight } = {},\n jsonSchema,\n label,\n localized,\n required,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, jsonError, required })\n }\n },\n [validate, required, jsonError],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n initialValue,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const handleMount = useCallback(\n (editor, monaco) => {\n if (!jsonSchema) {\n return\n }\n\n const existingSchemas = monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []\n const modelUri = monaco.Uri.parse(jsonSchema.uri)\n\n const model = monaco.editor.createModel(JSON.stringify(value, null, 2), 'json', modelUri)\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n enableSchemaRequest: true,\n schemas: [...existingSchemas, jsonSchema],\n validate: true,\n })\n\n editor.setModel(model)\n },\n [jsonSchema, value],\n )\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) {\n return\n }\n setStringValue(val)\n\n try {\n setValue(val ? JSON.parse(val) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue || value === undefined) {\n return\n }\n\n setStringValue(\n value || initialValue ? JSON.stringify(value ? value : initialValue, null, 2) : '',\n )\n\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError message={jsonError} path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n maxHeight={maxHeight}\n onChange={handleChange}\n onMount={handleMount}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JSONField = withCondition(JSONFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","CodeEditor","RenderCustomComponent","useField","withCondition","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","baseClass","JSONFieldComponent","props","field","admin","className","description","editorOptions","maxHeight","jsonSchema","label","localized","required","path","readOnly","validate","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","initialValue","setValue","showError","handleMount","editor","monaco","languages","json","jsonDefaults","setDiagnosticsOptions","enableSchemaRequest","schemas","diagnosticsOptions","uri","newUri","includes","crypto","randomUUID","setModel","createModel","JSON","stringify","Uri","parse","handleChange","val","undefined","e","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","message","defaultLanguage","onChange","onMount","JSONField"],"sources":["../../../src/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent } from 'payload'\n\nimport { type OnMount } from '@monaco-editor/react'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport './index.scss'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'json-field'\n\nconst JSONFieldComponent: JSONFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, maxHeight } = {},\n jsonSchema,\n label,\n localized,\n required,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, jsonError, required })\n }\n },\n [validate, required, jsonError],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n initialValue,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const handleMount = useCallback<OnMount>(\n (editor, monaco) => {\n if (!jsonSchema) {\n return\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n enableSchemaRequest: true,\n schemas: [\n ...(monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []),\n jsonSchema,\n ],\n validate: true,\n })\n\n const uri = jsonSchema.uri\n const newUri = uri.includes('?')\n ? `${uri}&${crypto.randomUUID()}`\n : `${uri}?${crypto.randomUUID()}`\n\n editor.setModel(\n monaco.editor.createModel(JSON.stringify(value, null, 2), 'json', monaco.Uri.parse(newUri)),\n )\n },\n [jsonSchema, value],\n )\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) {\n return\n }\n setStringValue(val)\n\n try {\n setValue(val ? JSON.parse(val) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue || value === undefined) {\n return\n }\n\n setStringValue(\n value || initialValue ? JSON.stringify(value ? value : initialValue, null, 2) : '',\n )\n\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError message={jsonError} path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n maxHeight={maxHeight}\n onChange={handleChange}\n onMount={handleMount}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JSONField = withCondition(JSONFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Join/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,eAAe,EAIhB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAuMtC,eAAO,MAAM,SAAS;;;;+EAAoC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Join/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EAIhB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAoOtC,eAAO,MAAM,SAAS;;;;+EAAoC,CAAA"}
@@ -11,6 +11,7 @@ import { withCondition } from '../../forms/withCondition/index.js';
11
11
  import { useConfig } from '../../providers/Config/index.js';
12
12
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
13
13
  import { FieldDescription } from '../FieldDescription/index.js';
14
+ import { FieldError } from '../FieldError/index.js';
14
15
  import { FieldLabel } from '../FieldLabel/index.js';
15
16
  import { fieldBaseClass } from '../index.js';
16
17
  const ObjectId = ObjectIdImport.default || ObjectIdImport;
@@ -19,6 +20,7 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
19
20
  */
20
21
  const getInitialDrawerData = ({
21
22
  collectionSlug,
23
+ config,
22
24
  docID,
23
25
  fields,
24
26
  segments
@@ -46,6 +48,7 @@ const getInitialDrawerData = ({
46
48
  return {
47
49
  [field.name]: getInitialDrawerData({
48
50
  collectionSlug,
51
+ config,
49
52
  docID,
50
53
  fields: field.fields,
51
54
  segments: nextSegments
@@ -55,6 +58,7 @@ const getInitialDrawerData = ({
55
58
  if (field.type === 'array') {
56
59
  const initialData = getInitialDrawerData({
57
60
  collectionSlug,
61
+ config,
58
62
  docID,
59
63
  fields: field.fields,
60
64
  segments: nextSegments
@@ -65,9 +69,11 @@ const getInitialDrawerData = ({
65
69
  };
66
70
  }
67
71
  if (field.type === 'blocks') {
68
- for (const block of field.blocks) {
72
+ for (const _block of field.blockReferences ?? field.blocks) {
73
+ const block = typeof _block === 'string' ? config.blocksMap[_block] : _block;
69
74
  const blockInitialData = getInitialDrawerData({
70
75
  collectionSlug,
76
+ config,
71
77
  docID,
72
78
  fields: block.fields,
73
79
  segments: nextSegments
@@ -103,6 +109,7 @@ const JoinFieldComponent = props => {
103
109
  docConfig
104
110
  } = useDocumentInfo();
105
111
  const {
112
+ config,
106
113
  getEntityConfig
107
114
  } = useConfig();
108
115
  const {
@@ -110,8 +117,10 @@ const JoinFieldComponent = props => {
110
117
  AfterInput,
111
118
  BeforeInput,
112
119
  Description,
120
+ Error,
113
121
  Label
114
122
  } = {},
123
+ showError,
115
124
  value
116
125
  } = useField({
117
126
  path
@@ -127,7 +136,7 @@ const JoinFieldComponent = props => {
127
136
  value: value_0
128
137
  };
129
138
  }
130
- const where = {
139
+ const where = Array.isArray(collection) ? {} : {
131
140
  [on]: {
132
141
  equals: value_0
133
142
  }
@@ -138,25 +147,32 @@ const JoinFieldComponent = props => {
138
147
  };
139
148
  }
140
149
  return where;
141
- }, [docID, field.targetField.relationTo, field.where, on, docConfig?.slug]);
150
+ }, [docID, collection, field.targetField.relationTo, field.where, on, docConfig?.slug]);
142
151
  const initialDrawerData = useMemo(() => {
143
152
  const relatedCollection = getEntityConfig({
144
- collectionSlug: field.collection
153
+ collectionSlug: Array.isArray(field.collection) ? field.collection[0] : field.collection
145
154
  });
146
155
  return getInitialDrawerData({
147
156
  collectionSlug: docConfig?.slug,
157
+ config,
148
158
  docID,
149
159
  fields: relatedCollection.fields,
150
160
  segments: field.on.split('.')
151
161
  });
152
- }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID]);
162
+ }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID, config]);
153
163
  if (!docConfig) {
154
164
  return null;
155
165
  }
156
166
  return /*#__PURE__*/_jsxs("div", {
157
- className: [fieldBaseClass, 'join'].filter(Boolean).join(' '),
167
+ className: [fieldBaseClass, showError && 'error', 'join'].filter(Boolean).join(' '),
158
168
  id: `field-${path?.replace(/\./g, '__')}`,
159
- children: [/*#__PURE__*/_jsx(RelationshipTable, {
169
+ children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
170
+ CustomComponent: Error,
171
+ Fallback: /*#__PURE__*/_jsx(FieldError, {
172
+ path: path,
173
+ showError: showError
174
+ })
175
+ }), /*#__PURE__*/_jsx(RelationshipTable, {
160
176
  AfterInput: AfterInput,
161
177
  allowCreate: typeof docID !== 'undefined' && allowCreate,
162
178
  BeforeInput: BeforeInput,
@@ -178,6 +194,11 @@ const JoinFieldComponent = props => {
178
194
  required: required
179
195
  })
180
196
  }),
197
+ parent: Array.isArray(collection) ? {
198
+ id: docID,
199
+ collectionSlug: docConfig.slug,
200
+ joinPath: path
201
+ } : undefined,
181
202
  relationTo: collection
182
203
  }), /*#__PURE__*/_jsx(RenderCustomComponent, {
183
204
  CustomComponent: Description,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ObjectIdImport","flattenTopLevelFields","React","useMemo","RelationshipTable","RenderCustomComponent","useField","withCondition","useConfig","useDocumentInfo","FieldDescription","FieldLabel","fieldBaseClass","ObjectId","default","getInitialDrawerData","collectionSlug","docID","fields","segments","flattenedFields","path","field","find","name","type","value","Array","isArray","relationTo","hasMany","nextSegments","slice","length","initialData","id","toHexString","block","blocks","blockInitialData","blockType","slug","JoinFieldComponent","props","admin","allowCreate","description","collection","label","localized","on","required","docConfig","getEntityConfig","customComponents","AfterInput","BeforeInput","Description","Label","filterOptions","targetField","where","equals","and","initialDrawerData","relatedCollection","split","_jsxs","className","filter","Boolean","join","replace","_jsx","disableTable","docs","style","margin","CustomComponent","Fallback","JoinField"],"sources":["../../../src/fields/Join/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientField,\n JoinFieldClient,\n JoinFieldClientComponent,\n PaginatedDocs,\n Where,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { flattenTopLevelFields } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { RelationshipTable } from '../../elements/RelationshipTable/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../index.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Recursively builds the default data for joined collection\n */\nconst getInitialDrawerData = ({\n collectionSlug,\n docID,\n fields,\n segments,\n}: {\n collectionSlug: string\n docID: number | string\n fields: ClientField[]\n segments: string[]\n}) => {\n const flattenedFields = flattenTopLevelFields(fields)\n\n const path = segments[0]\n\n const field = flattenedFields.find((field) => field.name === path)\n\n if (!field) {\n return null\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let value: { relationTo: string; value: number | string } | number | string = docID\n if (Array.isArray(field.relationTo)) {\n value = {\n relationTo: collectionSlug,\n value: docID,\n }\n }\n return {\n [field.name]: field.hasMany ? [value] : value,\n }\n }\n\n const nextSegments = segments.slice(1, segments.length)\n\n if (field.type === 'tab' || field.type === 'group') {\n return {\n [field.name]: getInitialDrawerData({\n collectionSlug,\n docID,\n fields: field.fields,\n segments: nextSegments,\n }),\n }\n }\n\n if (field.type === 'array') {\n const initialData = getInitialDrawerData({\n collectionSlug,\n docID,\n fields: field.fields,\n segments: nextSegments,\n })\n\n initialData.id = ObjectId().toHexString()\n\n return {\n [field.name]: [initialData],\n }\n }\n\n if (field.type === 'blocks') {\n for (const block of field.blocks) {\n const blockInitialData = getInitialDrawerData({\n collectionSlug,\n docID,\n fields: block.fields,\n segments: nextSegments,\n })\n\n if (blockInitialData) {\n blockInitialData.id = ObjectId().toHexString()\n blockInitialData.blockType = block.slug\n\n return {\n [field.name]: [blockInitialData],\n }\n }\n }\n }\n}\n\nconst JoinFieldComponent: JoinFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { allowCreate, description },\n collection,\n label,\n localized,\n on,\n required,\n },\n path,\n } = props\n\n const { id: docID, docConfig } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n\n const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, value } =\n useField<PaginatedDocs>({\n path,\n })\n\n const filterOptions: null | Where = useMemo(() => {\n if (!docID) {\n return null\n }\n\n let value: { relationTo: string; value: number | string } | number | string = docID\n\n if (Array.isArray(field.targetField.relationTo)) {\n value = {\n relationTo: docConfig.slug,\n value,\n }\n }\n\n const where = {\n [on]: {\n equals: value,\n },\n }\n\n if (field.where) {\n return {\n and: [where, field.where],\n }\n }\n\n return where\n }, [docID, field.targetField.relationTo, field.where, on, docConfig?.slug])\n\n const initialDrawerData = useMemo(() => {\n const relatedCollection = getEntityConfig({ collectionSlug: field.collection })\n\n return getInitialDrawerData({\n collectionSlug: docConfig?.slug,\n docID,\n fields: relatedCollection.fields,\n segments: field.on.split('.'),\n })\n }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID])\n\n if (!docConfig) {\n return null\n }\n\n return (\n <div\n className={[fieldBaseClass, 'join'].filter(Boolean).join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n <RelationshipTable\n AfterInput={AfterInput}\n allowCreate={typeof docID !== 'undefined' && allowCreate}\n BeforeInput={BeforeInput}\n disableTable={filterOptions === null}\n field={field as JoinFieldClient}\n filterOptions={filterOptions}\n initialData={docID && value ? value : ({ docs: [] } as PaginatedDocs)}\n initialDrawerData={initialDrawerData}\n Label={\n <h4 style={{ margin: 0 }}>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n </h4>\n }\n relationTo={collection}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JoinField = withCondition(JoinFieldComponent)\n"],"mappings":"AAAA;;;AAUA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,qBAAqB,QAAQ;AACtC,OAAOC,KAAA,IAASC,OAAO,QAAQ;AAE/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,QAAA,GAAYb,cAAA,CAAec,OAAO,IACtCd,cAAA;AAEF;;;AAGA,MAAMe,oBAAA,GAAuBA,CAAC;EAC5BC,cAAc;EACdC,KAAK;EACLC,MAAM;EACNC;AAAQ,CAMT;EACC,MAAMC,eAAA,GAAkBnB,qBAAA,CAAsBiB,MAAA;EAE9C,MAAMG,IAAA,GAAOF,QAAQ,CAAC,EAAE;EAExB,MAAMG,KAAA,GAAQF,eAAA,CAAgBG,IAAI,CAAED,KAAA,IAAUA,KAAA,CAAME,IAAI,KAAKH,IAAA;EAE7D,IAAI,CAACC,KAAA,EAAO;IACV,OAAO;EACT;EAEA,IAAIA,KAAA,CAAMG,IAAI,KAAK,kBAAkBH,KAAA,CAAMG,IAAI,KAAK,UAAU;IAC5D,IAAIC,KAAA,GAA0ET,KAAA;IAC9E,IAAIU,KAAA,CAAMC,OAAO,CAACN,KAAA,CAAMO,UAAU,GAAG;MACnCH,KAAA,GAAQ;QACNG,UAAA,EAAYb,cAAA;QACZU,KAAA,EAAOT;MACT;IACF;IACA,OAAO;MACL,CAACK,KAAA,CAAME,IAAI,GAAGF,KAAA,CAAMQ,OAAO,GAAG,CAACJ,KAAA,CAAM,GAAGA;IAC1C;EACF;EAEA,MAAMK,YAAA,GAAeZ,QAAA,CAASa,KAAK,CAAC,GAAGb,QAAA,CAASc,MAAM;EAEtD,IAAIX,KAAA,CAAMG,IAAI,KAAK,SAASH,KAAA,CAAMG,IAAI,KAAK,SAAS;IAClD,OAAO;MACL,CAACH,KAAA,CAAME,IAAI,GAAGT,oBAAA,CAAqB;QACjCC,cAAA;QACAC,KAAA;QACAC,MAAA,EAAQI,KAAA,CAAMJ,MAAM;QACpBC,QAAA,EAAUY;MACZ;IACF;EACF;EAEA,IAAIT,KAAA,CAAMG,IAAI,KAAK,SAAS;IAC1B,MAAMS,WAAA,GAAcnB,oBAAA,CAAqB;MACvCC,cAAA;MACAC,KAAA;MACAC,MAAA,EAAQI,KAAA,CAAMJ,MAAM;MACpBC,QAAA,EAAUY;IACZ;IAEAG,WAAA,CAAYC,EAAE,GAAGtB,QAAA,GAAWuB,WAAW;IAEvC,OAAO;MACL,CAACd,KAAA,CAAME,IAAI,GAAG,CAACU,WAAA;IACjB;EACF;EAEA,IAAIZ,KAAA,CAAMG,IAAI,KAAK,UAAU;IAC3B,KAAK,MAAMY,KAAA,IAASf,KAAA,CAAMgB,MAAM,EAAE;MAChC,MAAMC,gBAAA,GAAmBxB,oBAAA,CAAqB;QAC5CC,cAAA;QACAC,KAAA;QACAC,MAAA,EAAQmB,KAAA,CAAMnB,MAAM;QACpBC,QAAA,EAAUY;MACZ;MAEA,IAAIQ,gBAAA,EAAkB;QACpBA,gBAAA,CAAiBJ,EAAE,GAAGtB,QAAA,GAAWuB,WAAW;QAC5CG,gBAAA,CAAiBC,SAAS,GAAGH,KAAA,CAAMI,IAAI;QAEvC,OAAO;UACL,CAACnB,KAAA,CAAME,IAAI,GAAG,CAACe,gBAAA;QACjB;MACF;IACF;EACF;AACF;AAEA,MAAMG,kBAAA,GAAgDC,KAAA;EACpD,MAAM;IACJrB,KAAK;IACLA,KAAA,EAAO;MACLsB,KAAA,EAAO;QAAEC,WAAW;QAAEC;MAAW,CAAE;MACnCC,UAAU;MACVC,KAAK;MACLC,SAAS;MACTC,EAAE;MACFC;IAAQ,CACT;IACD9B;EAAI,CACL,GAAGsB,KAAA;EAEJ,MAAM;IAAER,EAAA,EAAIlB,KAAK;IAAEmC;EAAS,CAAE,GAAG3C,eAAA;EAEjC,MAAM;IAAE4C;EAAe,CAAE,GAAG7C,SAAA;EAE5B,MAAM;IAAE8C,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAAEhC;EAAK,CAAE,GACrFpB,QAAA,CAAwB;IACtBe;EACF;EAEF,MAAMsC,aAAA,GAA8BxD,OAAA,CAAQ;IAC1C,IAAI,CAACc,KAAA,EAAO;MACV,OAAO;IACT;IAEA,IAAIS,OAAA,GAA0ET,KAAA;IAE9E,IAAIU,KAAA,CAAMC,OAAO,CAACN,KAAA,CAAMsC,WAAW,CAAC/B,UAAU,GAAG;MAC/CH,OAAA,GAAQ;QACNG,UAAA,EAAYuB,SAAA,CAAUX,IAAI;QAC1Bf,KAAA,EAAAA;MACF;IACF;IAEA,MAAMmC,KAAA,GAAQ;MACZ,CAACX,EAAA,GAAK;QACJY,MAAA,EAAQpC;MACV;IACF;IAEA,IAAIJ,KAAA,CAAMuC,KAAK,EAAE;MACf,OAAO;QACLE,GAAA,EAAK,CAACF,KAAA,EAAOvC,KAAA,CAAMuC,KAAK;MAC1B;IACF;IAEA,OAAOA,KAAA;EACT,GAAG,CAAC5C,KAAA,EAAOK,KAAA,CAAMsC,WAAW,CAAC/B,UAAU,EAAEP,KAAA,CAAMuC,KAAK,EAAEX,EAAA,EAAIE,SAAA,EAAWX,IAAA,CAAK;EAE1E,MAAMuB,iBAAA,GAAoB7D,OAAA,CAAQ;IAChC,MAAM8D,iBAAA,GAAoBZ,eAAA,CAAgB;MAAErC,cAAA,EAAgBM,KAAA,CAAMyB;IAAW;IAE7E,OAAOhC,oBAAA,CAAqB;MAC1BC,cAAA,EAAgBoC,SAAA,EAAWX,IAAA;MAC3BxB,KAAA;MACAC,MAAA,EAAQ+C,iBAAA,CAAkB/C,MAAM;MAChCC,QAAA,EAAUG,KAAA,CAAM4B,EAAE,CAACgB,KAAK,CAAC;IAC3B;EACF,GAAG,CAACb,eAAA,EAAiB/B,KAAA,CAAMyB,UAAU,EAAEzB,KAAA,CAAM4B,EAAE,EAAEE,SAAA,EAAWX,IAAA,EAAMxB,KAAA,CAAM;EAExE,IAAI,CAACmC,SAAA,EAAW;IACd,OAAO;EACT;EAEA,oBACEe,KAAA,CAAC;IACCC,SAAA,EAAW,CAACxD,cAAA,EAAgB,OAAO,CAACyD,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;IACzDpC,EAAA,EAAI,SAASd,IAAA,EAAMmD,OAAA,CAAQ,OAAO,OAAO;4BAEzCC,IAAA,CAACrE,iBAAA;MACCmD,UAAA,EAAYA,UAAA;MACZV,WAAA,EAAa,OAAO5B,KAAA,KAAU,eAAe4B,WAAA;MAC7CW,WAAA,EAAaA,WAAA;MACbkB,YAAA,EAAcf,aAAA,KAAkB;MAChCrC,KAAA,EAAOA,KAAA;MACPqC,aAAA,EAAeA,aAAA;MACfzB,WAAA,EAAajB,KAAA,IAASS,KAAA,GAAQA,KAAA,GAAS;QAAEiD,IAAA,EAAM;MAAG;MAClDX,iBAAA,EAAmBA,iBAAA;MACnBN,KAAA,eACEe,IAAA,CAAC;QAAGG,KAAA,EAAO;UAAEC,MAAA,EAAQ;QAAE;kBACpBnB,KAAA,iBACCe,IAAA,CAAC9D,UAAA;UAAWqC,KAAA,EAAOA,KAAA;UAAOC,SAAA,EAAWA,SAAA;UAAW5B,IAAA,EAAMA,IAAA;UAAM8B,QAAA,EAAUA;;;MAI5EtB,UAAA,EAAYkB;qBAEd0B,IAAA,CAACpE,qBAAA;MACCyE,eAAA,EAAiBrB,WAAA;MACjBsB,QAAA,eAAUN,IAAA,CAAC/D,gBAAA;QAAiBoC,WAAA,EAAaA,WAAA;QAAazB,IAAA,EAAMA;;;;AAIpE;AAEA,OAAO,MAAM2D,SAAA,GAAYzE,aAAA,CAAcmC,kBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ObjectIdImport","flattenTopLevelFields","React","useMemo","RelationshipTable","RenderCustomComponent","useField","withCondition","useConfig","useDocumentInfo","FieldDescription","FieldError","FieldLabel","fieldBaseClass","ObjectId","default","getInitialDrawerData","collectionSlug","config","docID","fields","segments","flattenedFields","path","field","find","name","type","value","Array","isArray","relationTo","hasMany","nextSegments","slice","length","initialData","id","toHexString","_block","blockReferences","blocks","block","blocksMap","blockInitialData","blockType","slug","JoinFieldComponent","props","admin","allowCreate","description","collection","label","localized","on","required","docConfig","getEntityConfig","customComponents","AfterInput","BeforeInput","Description","Error","Label","showError","filterOptions","targetField","where","equals","and","initialDrawerData","relatedCollection","split","_jsxs","className","filter","Boolean","join","replace","_jsx","CustomComponent","Fallback","disableTable","docs","style","margin","parent","joinPath","undefined","JoinField"],"sources":["../../../src/fields/Join/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientConfig,\n ClientField,\n JoinFieldClient,\n JoinFieldClientComponent,\n PaginatedDocs,\n Where,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { flattenTopLevelFields } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { RelationshipTable } from '../../elements/RelationshipTable/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../index.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Recursively builds the default data for joined collection\n */\nconst getInitialDrawerData = ({\n collectionSlug,\n config,\n docID,\n fields,\n segments,\n}: {\n collectionSlug: string\n config: ClientConfig\n docID: number | string\n fields: ClientField[]\n segments: string[]\n}) => {\n const flattenedFields = flattenTopLevelFields(fields)\n\n const path = segments[0]\n\n const field = flattenedFields.find((field) => field.name === path)\n\n if (!field) {\n return null\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let value: { relationTo: string; value: number | string } | number | string = docID\n if (Array.isArray(field.relationTo)) {\n value = {\n relationTo: collectionSlug,\n value: docID,\n }\n }\n return {\n [field.name]: field.hasMany ? [value] : value,\n }\n }\n\n const nextSegments = segments.slice(1, segments.length)\n\n if (field.type === 'tab' || field.type === 'group') {\n return {\n [field.name]: getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n }),\n }\n }\n\n if (field.type === 'array') {\n const initialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n })\n\n initialData.id = ObjectId().toHexString()\n\n return {\n [field.name]: [initialData],\n }\n }\n\n if (field.type === 'blocks') {\n for (const _block of field.blockReferences ?? field.blocks) {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const blockInitialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: block.fields,\n segments: nextSegments,\n })\n\n if (blockInitialData) {\n blockInitialData.id = ObjectId().toHexString()\n blockInitialData.blockType = block.slug\n\n return {\n [field.name]: [blockInitialData],\n }\n }\n }\n }\n}\n\nconst JoinFieldComponent: JoinFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { allowCreate, description },\n collection,\n label,\n localized,\n on,\n required,\n },\n path,\n } = props\n\n const { id: docID, docConfig } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n showError,\n value,\n } = useField<PaginatedDocs>({\n path,\n })\n\n const filterOptions: null | Where = useMemo(() => {\n if (!docID) {\n return null\n }\n\n let value: { relationTo: string; value: number | string } | number | string = docID\n\n if (Array.isArray(field.targetField.relationTo)) {\n value = {\n relationTo: docConfig.slug,\n value,\n }\n }\n\n const where = Array.isArray(collection)\n ? {}\n : {\n [on]: {\n equals: value,\n },\n }\n\n if (field.where) {\n return {\n and: [where, field.where],\n }\n }\n\n return where\n }, [docID, collection, field.targetField.relationTo, field.where, on, docConfig?.slug])\n\n const initialDrawerData = useMemo(() => {\n const relatedCollection = getEntityConfig({\n collectionSlug: Array.isArray(field.collection) ? field.collection[0] : field.collection,\n })\n\n return getInitialDrawerData({\n collectionSlug: docConfig?.slug,\n config,\n docID,\n fields: relatedCollection.fields,\n segments: field.on.split('.'),\n })\n }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID, config])\n\n if (!docConfig) {\n return null\n }\n\n return (\n <div\n className={[fieldBaseClass, showError && 'error', 'join'].filter(Boolean).join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <RelationshipTable\n AfterInput={AfterInput}\n allowCreate={typeof docID !== 'undefined' && allowCreate}\n BeforeInput={BeforeInput}\n disableTable={filterOptions === null}\n field={field as JoinFieldClient}\n filterOptions={filterOptions}\n initialData={docID && value ? value : ({ docs: [] } as PaginatedDocs)}\n initialDrawerData={initialDrawerData}\n Label={\n <h4 style={{ margin: 0 }}>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n </h4>\n }\n parent={\n Array.isArray(collection)\n ? {\n id: docID,\n collectionSlug: docConfig.slug,\n joinPath: path,\n }\n : undefined\n }\n relationTo={collection}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JoinField = withCondition(JoinFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,eAAO,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EAiJhF,CAAA"}
1
+ {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,eAAO,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EAkJhF,CAAA"}
@@ -61,6 +61,7 @@ export const optionsReducer = (state, action) => {
61
61
  relationTo: relation
62
62
  });
63
63
  newSubOptions.push({
64
+ allowEdit: false,
64
65
  label: `${i18n.t('general:untitled')} - ID: ${id}`,
65
66
  relationTo: relation,
66
67
  value: id