@payloadcms/ui 3.49.0-canary.7 → 3.49.0

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 (288) hide show
  1. package/dist/elements/ColumnSelector/index.js +1 -1
  2. package/dist/elements/ColumnSelector/index.js.map +1 -1
  3. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  4. package/dist/elements/DeleteDocument/index.js +65 -47
  5. package/dist/elements/DeleteDocument/index.js.map +1 -1
  6. package/dist/elements/DeleteDocument/index.scss +10 -0
  7. package/dist/elements/DeleteMany/index.d.ts +17 -2
  8. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  9. package/dist/elements/DeleteMany/index.js +162 -49
  10. package/dist/elements/DeleteMany/index.js.map +1 -1
  11. package/dist/elements/DeleteMany/index.scss +13 -0
  12. package/dist/elements/DocumentControls/index.d.ts +3 -0
  13. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentControls/index.js +24 -5
  15. package/dist/elements/DocumentControls/index.js.map +1 -1
  16. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  17. package/dist/elements/DocumentDrawer/DrawerContent.js +4 -2
  18. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  19. package/dist/elements/DocumentDrawer/Provider.d.ts +4 -0
  20. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  21. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  22. package/dist/elements/DocumentDrawer/types.d.ts +1 -0
  23. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  24. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  25. package/dist/elements/DocumentFields/index.d.ts +1 -0
  26. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  27. package/dist/elements/DocumentFields/index.js +3 -1
  28. package/dist/elements/DocumentFields/index.js.map +1 -1
  29. package/dist/elements/EditMany/DrawerContent.d.ts +2 -0
  30. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  31. package/dist/elements/EditMany/DrawerContent.js +7 -3
  32. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  33. package/dist/elements/EditMany/index.d.ts +7 -2
  34. package/dist/elements/EditMany/index.d.ts.map +1 -1
  35. package/dist/elements/EditMany/index.js +39 -34
  36. package/dist/elements/EditMany/index.js.map +1 -1
  37. package/dist/elements/FolderView/Cell/index.client.d.ts +3 -2
  38. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  39. package/dist/elements/FolderView/Cell/index.client.js +3 -1
  40. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  41. package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -1
  42. package/dist/elements/FolderView/Cell/index.server.js +2 -1
  43. package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
  44. package/dist/elements/GroupByBuilder/index.d.ts +9 -0
  45. package/dist/elements/GroupByBuilder/index.d.ts.map +1 -0
  46. package/dist/elements/GroupByBuilder/index.js +112 -0
  47. package/dist/elements/GroupByBuilder/index.js.map +1 -0
  48. package/dist/elements/GroupByBuilder/index.scss +39 -0
  49. package/dist/elements/LeaveWithoutSaving/index.d.ts +6 -1
  50. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  51. package/dist/elements/LeaveWithoutSaving/index.js +69 -49
  52. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  53. package/dist/elements/ListControls/index.d.ts.map +1 -1
  54. package/dist/elements/ListControls/index.js +28 -4
  55. package/dist/elements/ListControls/index.js.map +1 -1
  56. package/dist/elements/ListControls/index.scss +4 -2
  57. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  58. package/dist/elements/ListDrawer/DrawerContent.js +34 -15
  59. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  60. package/dist/elements/ListDrawer/Provider.d.ts +9 -3
  61. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  62. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  63. package/dist/elements/ListDrawer/index.d.ts +19 -0
  64. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  65. package/dist/elements/ListDrawer/index.js +19 -0
  66. package/dist/elements/ListDrawer/index.js.map +1 -1
  67. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts +7 -0
  68. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -0
  69. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +164 -0
  70. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -0
  71. package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
  72. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  73. package/dist/elements/ListHeader/TitleActions/index.js +1 -0
  74. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  75. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +10 -0
  76. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +1 -0
  77. package/dist/elements/ListHeaderTabs/ByFolderPill.js +70 -0
  78. package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +1 -0
  79. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +9 -0
  80. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +1 -0
  81. package/dist/elements/ListHeaderTabs/DefaultListPill.js +68 -0
  82. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -0
  83. package/dist/elements/ListHeaderTabs/TrashPill.d.ts +6 -0
  84. package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +1 -0
  85. package/dist/elements/ListHeaderTabs/TrashPill.js +53 -0
  86. package/dist/elements/ListHeaderTabs/TrashPill.js.map +1 -0
  87. package/dist/elements/{ListFolderPills → ListHeaderTabs}/index.scss +1 -2
  88. package/dist/elements/ListSelection/index.scss +1 -1
  89. package/dist/elements/PageControls/GroupByPageControls.d.ts +16 -0
  90. package/dist/elements/PageControls/GroupByPageControls.d.ts.map +1 -0
  91. package/dist/elements/PageControls/GroupByPageControls.js +83 -0
  92. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -0
  93. package/dist/elements/PageControls/index.d.ts +17 -0
  94. package/dist/elements/PageControls/index.d.ts.map +1 -0
  95. package/dist/elements/PageControls/index.js +70 -0
  96. package/dist/elements/PageControls/index.js.map +1 -0
  97. package/dist/elements/PageControls/index.scss +40 -0
  98. package/dist/elements/Pagination/ClickableArrow/index.scss +3 -3
  99. package/dist/elements/Pagination/index.js +1 -1
  100. package/dist/elements/Pagination/index.js.map +1 -1
  101. package/dist/elements/Pagination/index.scss +4 -4
  102. package/dist/elements/PermanentlyDeleteButton/index.d.ts +14 -0
  103. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -0
  104. package/dist/elements/PermanentlyDeleteButton/index.js +147 -0
  105. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -0
  106. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -0
  107. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  108. package/dist/elements/PublishMany/DrawerContent.js +7 -3
  109. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  110. package/dist/elements/PublishMany/index.d.ts +6 -1
  111. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  112. package/dist/elements/PublishMany/index.js +38 -33
  113. package/dist/elements/PublishMany/index.js.map +1 -1
  114. package/dist/elements/ReactSelect/types.d.ts +1 -0
  115. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  116. package/dist/elements/ReactSelect/types.js.map +1 -1
  117. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  118. package/dist/elements/RelationshipTable/index.js +16 -11
  119. package/dist/elements/RelationshipTable/index.js.map +1 -1
  120. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  121. package/dist/elements/RenderTitle/index.js +1 -0
  122. package/dist/elements/RenderTitle/index.js.map +1 -1
  123. package/dist/elements/RestoreButton/index.d.ts +15 -0
  124. package/dist/elements/RestoreButton/index.d.ts.map +1 -0
  125. package/dist/elements/RestoreButton/index.js +171 -0
  126. package/dist/elements/RestoreButton/index.js.map +1 -0
  127. package/dist/elements/RestoreButton/index.scss +25 -0
  128. package/dist/elements/RestoreMany/index.d.ts +9 -0
  129. package/dist/elements/RestoreMany/index.d.ts.map +1 -0
  130. package/dist/elements/RestoreMany/index.js +193 -0
  131. package/dist/elements/RestoreMany/index.js.map +1 -0
  132. package/dist/elements/RestoreMany/index.scss +25 -0
  133. package/dist/elements/Status/index.d.ts.map +1 -1
  134. package/dist/elements/Status/index.js +6 -4
  135. package/dist/elements/Status/index.js.map +1 -1
  136. package/dist/elements/StickyToolbar/index.d.ts +6 -0
  137. package/dist/elements/StickyToolbar/index.d.ts.map +1 -0
  138. package/dist/elements/StickyToolbar/index.js +11 -0
  139. package/dist/elements/StickyToolbar/index.js.map +1 -0
  140. package/dist/elements/StickyToolbar/index.scss +27 -0
  141. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  142. package/dist/elements/Table/DefaultCell/index.js +10 -8
  143. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  144. package/dist/elements/Table/OrderableTable.d.ts +2 -0
  145. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  146. package/dist/elements/Table/OrderableTable.js +4 -3
  147. package/dist/elements/Table/OrderableTable.js.map +1 -1
  148. package/dist/elements/Table/index.d.ts +1 -0
  149. package/dist/elements/Table/index.d.ts.map +1 -1
  150. package/dist/elements/Table/index.js +5 -4
  151. package/dist/elements/Table/index.js.map +1 -1
  152. package/dist/elements/TrashBanner/index.d.ts +4 -0
  153. package/dist/elements/TrashBanner/index.d.ts.map +1 -0
  154. package/dist/elements/TrashBanner/index.js +37 -0
  155. package/dist/elements/TrashBanner/index.js.map +1 -0
  156. package/dist/elements/TrashBanner/index.scss +20 -0
  157. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -0
  158. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  159. package/dist/elements/UnpublishMany/DrawerContent.js +6 -2
  160. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  161. package/dist/elements/UnpublishMany/index.d.ts +6 -1
  162. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  163. package/dist/elements/UnpublishMany/index.js +38 -33
  164. package/dist/elements/UnpublishMany/index.js.map +1 -1
  165. package/dist/elements/WhereBuilder/index.js +3 -3
  166. package/dist/elements/WhereBuilder/index.js.map +1 -1
  167. package/dist/exports/client/index.d.ts +2 -0
  168. package/dist/exports/client/index.d.ts.map +1 -1
  169. package/dist/exports/client/index.js +24 -22
  170. package/dist/exports/client/index.js.map +4 -4
  171. package/dist/fields/Blocks/index.d.ts.map +1 -1
  172. package/dist/fields/Blocks/index.js +1 -0
  173. package/dist/fields/Blocks/index.js.map +1 -1
  174. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  175. package/dist/fields/Checkbox/Input.js +2 -0
  176. package/dist/fields/Checkbox/Input.js.map +1 -1
  177. package/dist/fields/Select/Input.d.ts +1 -0
  178. package/dist/fields/Select/Input.d.ts.map +1 -1
  179. package/dist/fields/Select/Input.js +48 -45
  180. package/dist/fields/Select/Input.js.map +1 -1
  181. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  182. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  183. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +7 -0
  184. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  185. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  186. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  187. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  188. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  189. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  190. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  191. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  192. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  193. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  194. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  195. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  196. package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
  197. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  198. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  199. package/dist/icons/Trash/index.d.ts +6 -0
  200. package/dist/icons/Trash/index.d.ts.map +1 -0
  201. package/dist/icons/Trash/index.js +22 -0
  202. package/dist/icons/Trash/index.js.map +1 -0
  203. package/dist/icons/Trash/index.scss +6 -0
  204. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  205. package/dist/providers/DocumentInfo/index.js +6 -0
  206. package/dist/providers/DocumentInfo/index.js.map +1 -1
  207. package/dist/providers/DocumentInfo/types.d.ts +7 -0
  208. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  209. package/dist/providers/DocumentInfo/types.js.map +1 -1
  210. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  211. package/dist/providers/ListQuery/index.js +24 -13
  212. package/dist/providers/ListQuery/index.js.map +1 -1
  213. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  214. package/dist/providers/ListQuery/mergeQuery.js +15 -1
  215. package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
  216. package/dist/providers/ListQuery/types.d.ts +7 -3
  217. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  218. package/dist/providers/ListQuery/types.js.map +1 -1
  219. package/dist/providers/Selection/index.d.ts +6 -2
  220. package/dist/providers/Selection/index.d.ts.map +1 -1
  221. package/dist/providers/Selection/index.js +37 -19
  222. package/dist/providers/Selection/index.js.map +1 -1
  223. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  224. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  225. package/dist/providers/ServerFunctions/index.js.map +1 -1
  226. package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
  227. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  228. package/dist/providers/TableColumns/buildColumnState/index.js +4 -2
  229. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  230. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
  231. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  232. package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -2
  233. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  234. package/dist/styles.css +1 -1
  235. package/dist/utilities/buildFormState.d.ts.map +1 -1
  236. package/dist/utilities/buildFormState.js +2 -0
  237. package/dist/utilities/buildFormState.js.map +1 -1
  238. package/dist/utilities/buildTableState.js +5 -7
  239. package/dist/utilities/buildTableState.js.map +1 -1
  240. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  241. package/dist/utilities/copyDataFromLocale.js +29 -19
  242. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  243. package/dist/{elements/WhereBuilder/reduceFields.d.ts → utilities/reduceFieldsToOptions.d.ts} +3 -3
  244. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -0
  245. package/dist/{elements/WhereBuilder/reduceFields.js → utilities/reduceFieldsToOptions.js} +11 -11
  246. package/dist/utilities/reduceFieldsToOptions.js.map +1 -0
  247. package/dist/utilities/renderTable.d.ts +9 -3
  248. package/dist/utilities/renderTable.d.ts.map +1 -1
  249. package/dist/utilities/renderTable.js +63 -22
  250. package/dist/utilities/renderTable.js.map +1 -1
  251. package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +1 -1
  252. package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
  253. package/dist/views/CollectionFolder/index.d.ts.map +1 -1
  254. package/dist/views/CollectionFolder/index.js +15 -5
  255. package/dist/views/CollectionFolder/index.js.map +1 -1
  256. package/dist/views/Edit/Auth/index.js +5 -4
  257. package/dist/views/Edit/Auth/index.js.map +1 -1
  258. package/dist/views/Edit/SetDocumentStepNav/index.d.ts +1 -0
  259. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  260. package/dist/views/Edit/SetDocumentStepNav/index.js +26 -15
  261. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  262. package/dist/views/Edit/index.d.ts.map +1 -1
  263. package/dist/views/Edit/index.js +59 -35
  264. package/dist/views/Edit/index.js.map +1 -1
  265. package/dist/views/List/GroupByHeader/index.d.ts +10 -0
  266. package/dist/views/List/GroupByHeader/index.d.ts.map +1 -0
  267. package/dist/views/List/GroupByHeader/index.js +29 -0
  268. package/dist/views/List/GroupByHeader/index.js.map +1 -0
  269. package/dist/views/List/GroupByHeader/index.scss +17 -0
  270. package/dist/views/List/ListHeader/index.d.ts +4 -2
  271. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  272. package/dist/views/List/ListHeader/index.js +30 -10
  273. package/dist/views/List/ListHeader/index.js.map +1 -1
  274. package/dist/views/List/ListSelection/index.d.ts +5 -1
  275. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  276. package/dist/views/List/ListSelection/index.js +53 -30
  277. package/dist/views/List/ListSelection/index.js.map +1 -1
  278. package/dist/views/List/index.d.ts.map +1 -1
  279. package/dist/views/List/index.js +122 -170
  280. package/dist/views/List/index.js.map +1 -1
  281. package/dist/views/List/index.scss +12 -35
  282. package/package.json +5 -5
  283. package/dist/elements/ListFolderPills/index.d.ts +0 -10
  284. package/dist/elements/ListFolderPills/index.d.ts.map +0 -1
  285. package/dist/elements/ListFolderPills/index.js +0 -97
  286. package/dist/elements/ListFolderPills/index.js.map +0 -1
  287. package/dist/elements/WhereBuilder/reduceFields.d.ts.map +0 -1
  288. package/dist/elements/WhereBuilder/reduceFields.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAoJrC,CAAA"}
1
+ {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAsJrC,CAAA"}
@@ -72,6 +72,7 @@ export const buildFormState = async args => {
72
72
  initialBlockFormState,
73
73
  mockRSCs,
74
74
  operation,
75
+ readOnly,
75
76
  renderAllFields,
76
77
  req,
77
78
  req: {
@@ -157,6 +158,7 @@ export const buildFormState = async args => {
157
158
  fields: {}
158
159
  },
159
160
  previousFormState: formState,
161
+ readOnly,
160
162
  renderAllFields,
161
163
  renderFieldFn: renderField,
162
164
  req,
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n let data = incomingData\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n let documentData = undefined\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n let data = incomingData\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n let documentData = undefined\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -30,7 +30,7 @@ const buildTableState = async args => {
30
30
  const {
31
31
  collectionSlug,
32
32
  columns,
33
- docs: docsFromArgs,
33
+ data: dataFromArgs,
34
34
  enableRowSelections,
35
35
  orderableFieldName,
36
36
  parent,
@@ -98,10 +98,9 @@ const buildTableState = async args => {
98
98
  sort: query?.sort
99
99
  }
100
100
  });
101
- let docs = docsFromArgs;
102
- let data;
101
+ let data = dataFromArgs;
103
102
  // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`
104
- if (!docs || query) {
103
+ if (!data?.docs || query) {
105
104
  if (Array.isArray(collectionSlug)) {
106
105
  if (!parent) {
107
106
  throw new APIError('Unexpected array of collectionSlug, parent must be provided');
@@ -139,7 +138,6 @@ const buildTableState = async args => {
139
138
  for (let i = 0; i < segments.length; i++) {
140
139
  if (i === segments.length - 1) {
141
140
  data = parentDoc[segments[i]];
142
- docs = data.docs;
143
141
  } else {
144
142
  parentDoc = parentDoc[segments[i]];
145
143
  }
@@ -157,7 +155,6 @@ const buildTableState = async args => {
157
155
  user: req.user,
158
156
  where: query?.where
159
157
  });
160
- docs = data.docs;
161
158
  }
162
159
  }
163
160
  const {
@@ -169,11 +166,12 @@ const buildTableState = async args => {
169
166
  collectionConfig,
170
167
  collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,
171
168
  columns,
172
- docs,
169
+ data,
173
170
  enableRowSelections,
174
171
  i18n: req.i18n,
175
172
  orderableFieldName,
176
173
  payload,
174
+ query,
177
175
  renderRowTypes,
178
176
  tableAppearance,
179
177
  useAsTitle: Array.isArray(collectionSlug) ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle : collectionConfig?.admin?.useAsTitle
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.js","names":["APIError","formatErrors","isNumber","getClientConfig","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","slug","collectionPreferences","key","joinPath","value","Number","undefined","sort","data","select","currentSelectRef","segments","split","i","joinQuery","where","isNaN","page","parentDoc","findByID","id","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n docs = data.docs\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n docs = data.docs\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns,\n docs,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildTableState.js","names":["APIError","formatErrors","isNumber","getClientConfig","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","data","dataFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","slug","collectionPreferences","key","joinPath","value","Number","undefined","sort","select","currentSelectRef","segments","split","i","joinQuery","where","isNaN","page","parentDoc","findByID","id","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n data: dataFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let data: PaginatedDocs = dataFromArgs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!data?.docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns,\n data,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n query,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAA;AAMhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAoLD,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,sBAAsB,CAiB5E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CA2HpE,CAAA"}
1
+ {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAA;AAMhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AA6LD,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,sBAAsB,CAiB5E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAqHpE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import ObjectIdImport from 'bson-objectid';
2
- import { formatErrors } from 'payload';
2
+ import { formatErrors, traverseFields } from 'payload';
3
3
  import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared';
4
4
  const ObjectId = ObjectIdImport.default || ObjectIdImport;
5
5
  function iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized) {
@@ -32,9 +32,9 @@ function iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocali
32
32
  break;
33
33
  case 'blocks':
34
34
  // if the field has no value, take the source value
35
- if (field.name in toLocaleData &&
36
- // only replace if the target value is null or undefined
37
- [null, undefined].includes(toLocaleData[field.name]) && field.name in fromLocaleData) {
35
+ if (field.name in toLocaleData && (
36
+ // only replace if the target value is null, undefined, or empty array
37
+ [null, undefined].includes(toLocaleData[field.name]) || Array.isArray(toLocaleData[field.name]) && toLocaleData[field.name].length === 0) && field.name in fromLocaleData) {
38
38
  toLocaleData[field.name] = fromLocaleData[field.name];
39
39
  break;
40
40
  }
@@ -110,17 +110,24 @@ function mergeData(fromLocaleData, toLocaleData, fields, req, parentIsLocalized)
110
110
  iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized);
111
111
  return toLocaleData;
112
112
  }
113
- function removeIds(data) {
114
- if (Array.isArray(data)) {
115
- return data.map(removeIds);
116
- }
117
- if (typeof data === 'object' && data !== null) {
118
- const {
119
- id: _id,
120
- ...rest
121
- } = data;
122
- return Object.fromEntries(Object.entries(rest).map(([key, value]) => [key, removeIds(value)]));
123
- }
113
+ /**
114
+ * We don't have to recursively remove all ids,
115
+ * just the ones from the fields inside a localized array or block.
116
+ */
117
+ function removeIdIfParentIsLocalized(data, fields) {
118
+ traverseFields({
119
+ callback: ({
120
+ parentIsLocalized,
121
+ ref
122
+ }) => {
123
+ if (parentIsLocalized) {
124
+ delete ref.id;
125
+ }
126
+ },
127
+ fields,
128
+ fillEmpty: false,
129
+ ref: data
130
+ });
124
131
  return data;
125
132
  }
126
133
  export const copyDataFromLocaleHandler = async args => {
@@ -211,11 +218,14 @@ export const copyDataFromLocale = async args => {
211
218
  if (toLocaleData.status === 'rejected') {
212
219
  throw new Error(`Error fetching data from locale "${toLocale}"`);
213
220
  }
214
- const fromLocaleDataWithoutID = removeIds(fromLocaleData.value);
215
- const toLocaleDataWithoutID = removeIds(toLocaleData.value);
221
+ const fields = globalSlug ? globals[globalSlug].config.fields : collections[collectionSlug].config.fields;
222
+ const fromLocaleDataWithoutID = fromLocaleData.value;
223
+ const toLocaleDataWithoutID = toLocaleData.value;
224
+ const dataWithID = overrideData ? fromLocaleDataWithoutID : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, fields, req, false);
225
+ const data = removeIdIfParentIsLocalized(dataWithID, fields);
216
226
  return globalSlug ? await payload.updateGlobal({
217
227
  slug: globalSlug,
218
- data: overrideData ? fromLocaleDataWithoutID : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, globals[globalSlug].config.fields, req, false),
228
+ data,
219
229
  locale: toLocale,
220
230
  overrideAccess: false,
221
231
  req,
@@ -223,7 +233,7 @@ export const copyDataFromLocale = async args => {
223
233
  }) : await payload.update({
224
234
  id: docID,
225
235
  collection: collectionSlug,
226
- data: overrideData ? fromLocaleDataWithoutID : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, collections[collectionSlug].config.fields, req, false),
236
+ data,
227
237
  locale: toLocale,
228
238
  overrideAccess: false,
229
239
  req,
@@ -1 +1 @@
1
- {"version":3,"file":"copyDataFromLocale.js","names":["ObjectIdImport","formatErrors","fieldAffectsData","fieldShouldBeLocalized","tabHasName","ObjectId","default","iterateFields","fields","fromLocaleData","toLocaleData","req","parentIsLocalized","map","field","type","name","undefined","includes","item","index","id","toHexString","localized","blockData","block","payload","blocks","blockType","blockReferences","find","slug","length","tabs","tab","mergeData","removeIds","data","Array","isArray","_id","rest","Object","fromEntries","entries","key","value","copyDataFromLocaleHandler","args","copyDataFromLocale","err","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","depth","locale","overrideAccess","findByID","joins","status","fromLocaleDataWithoutID","toLocaleDataWithoutID","updateGlobal","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import ObjectIdImport from 'bson-objectid'\nimport {\n type CollectionSlug,\n type Data,\n type Field,\n type FlattenedBlock,\n formatErrors,\n type PayloadRequest,\n type ServerFunction,\n} from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(\n fields: Field[],\n fromLocaleData: Data,\n toLocaleData: Data,\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n iterateFields(\n field.fields,\n fromLocaleData[field.name][index],\n item,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const block =\n req.payload.blocks[blockData.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockData.blockType,\n ) as FlattenedBlock | undefined)\n\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n if (block?.fields?.length) {\n iterateFields(\n block?.fields,\n fromLocaleData[field.name][index],\n blockData,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (\n fieldAffectsData(field) &&\n field.name in toLocaleData &&\n fromLocaleData?.[field.name] !== undefined\n ) {\n iterateFields(\n field.fields,\n fromLocaleData[field.name],\n toLocaleData[field.name],\n req,\n parentIsLocalized || field.localized,\n )\n } else {\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(\n tab.fields,\n fromLocaleData[tab.name],\n toLocaleData[tab.name],\n req,\n parentIsLocalized,\n )\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(\n fromLocaleData: Data,\n toLocaleData: Data,\n fields: Field[],\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): Data {\n iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n\n return toLocaleData\n}\n\nfunction removeIds(data: Data): Data {\n if (Array.isArray(data)) {\n return data.map(removeIds)\n }\n if (typeof data === 'object' && data !== null) {\n const { id: _id, ...rest } = data\n return Object.fromEntries(Object.entries(rest).map(([key, value]) => [key, removeIds(value)]))\n }\n return data\n}\n\nexport const copyDataFromLocaleHandler: ServerFunction<CopyDataFromLocaleArgs> = async (args) => {\n const { req } = args\n\n try {\n return await copyDataFromLocale(args)\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n req,\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n const fromLocaleDataWithoutID = removeIds(fromLocaleData.value)\n const toLocaleDataWithoutID = removeIds(toLocaleData.value)\n\n return globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data: overrideData\n ? fromLocaleDataWithoutID\n : mergeData(\n fromLocaleDataWithoutID,\n toLocaleDataWithoutID,\n globals[globalSlug].config.fields,\n req,\n false,\n ),\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data: overrideData\n ? fromLocaleDataWithoutID\n : mergeData(\n fromLocaleDataWithoutID,\n toLocaleDataWithoutID,\n collections[collectionSlug].config.fields,\n req,\n false,\n ),\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"copyDataFromLocale.js","names":["ObjectIdImport","formatErrors","traverseFields","fieldAffectsData","fieldShouldBeLocalized","tabHasName","ObjectId","default","iterateFields","fields","fromLocaleData","toLocaleData","req","parentIsLocalized","map","field","type","name","undefined","includes","item","index","id","toHexString","localized","Array","isArray","length","blockData","block","payload","blocks","blockType","blockReferences","find","slug","tabs","tab","mergeData","removeIdIfParentIsLocalized","data","callback","ref","fillEmpty","copyDataFromLocaleHandler","args","copyDataFromLocale","err","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","depth","locale","overrideAccess","findByID","joins","status","fromLocaleDataWithoutID","value","toLocaleDataWithoutID","dataWithID","updateGlobal","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import ObjectIdImport from 'bson-objectid'\nimport {\n type CollectionSlug,\n type Data,\n type Field,\n type FlattenedBlock,\n formatErrors,\n type PayloadRequest,\n type ServerFunction,\n traverseFields,\n} from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(\n fields: Field[],\n fromLocaleData: Data,\n toLocaleData: Data,\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n iterateFields(\n field.fields,\n fromLocaleData[field.name][index],\n item,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null, undefined, or empty array\n ([null, undefined].includes(toLocaleData[field.name]) ||\n (Array.isArray(toLocaleData[field.name]) && toLocaleData[field.name].length === 0)) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const block =\n req.payload.blocks[blockData.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockData.blockType,\n ) as FlattenedBlock | undefined)\n\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n if (block?.fields?.length) {\n iterateFields(\n block?.fields,\n fromLocaleData[field.name][index],\n blockData,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (\n fieldAffectsData(field) &&\n field.name in toLocaleData &&\n fromLocaleData?.[field.name] !== undefined\n ) {\n iterateFields(\n field.fields,\n fromLocaleData[field.name],\n toLocaleData[field.name],\n req,\n parentIsLocalized || field.localized,\n )\n } else {\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(\n tab.fields,\n fromLocaleData[tab.name],\n toLocaleData[tab.name],\n req,\n parentIsLocalized,\n )\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(\n fromLocaleData: Data,\n toLocaleData: Data,\n fields: Field[],\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): Data {\n iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n\n return toLocaleData\n}\n\n/**\n * We don't have to recursively remove all ids,\n * just the ones from the fields inside a localized array or block.\n */\nfunction removeIdIfParentIsLocalized(data: Data, fields: Field[]): Data {\n traverseFields({\n callback: ({ parentIsLocalized, ref }) => {\n if (parentIsLocalized) {\n delete (ref as { id: unknown }).id\n }\n },\n fields,\n fillEmpty: false,\n ref: data,\n })\n\n return data\n}\n\nexport const copyDataFromLocaleHandler: ServerFunction<CopyDataFromLocaleArgs> = async (args) => {\n const { req } = args\n\n try {\n return await copyDataFromLocale(args)\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n req,\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n const fields = globalSlug\n ? globals[globalSlug].config.fields\n : collections[collectionSlug].config.fields\n\n const fromLocaleDataWithoutID = fromLocaleData.value\n const toLocaleDataWithoutID = toLocaleData.value\n\n const dataWithID = overrideData\n ? fromLocaleDataWithoutID\n : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, fields, req, false)\n\n const data = removeIdIfParentIsLocalized(dataWithID, fields)\n\n return globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { ClientField } from 'payload';
3
- import type { ReducedField } from './types.js';
3
+ import type { ReducedField } from '../elements/WhereBuilder/types.js';
4
4
  type ReduceFieldOptionsArgs = {
5
5
  fields: ClientField[];
6
6
  i18n: I18nClient;
@@ -11,6 +11,6 @@ type ReduceFieldOptionsArgs = {
11
11
  * Reduces a field map to a flat array of fields with labels and values.
12
12
  * Used in the WhereBuilder component to render the fields in the dropdown.
13
13
  */
14
- export declare const reduceFields: ({ fields, i18n, labelPrefix, pathPrefix, }: ReduceFieldOptionsArgs) => ReducedField[];
14
+ export declare const reduceFieldsToOptions: ({ fields, i18n, labelPrefix, pathPrefix, }: ReduceFieldOptionsArgs) => ReducedField[];
15
15
  export {};
16
- //# sourceMappingURL=reduceFields.d.ts.map
16
+ //# sourceMappingURL=reduceFieldsToOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceFieldsToOptions.d.ts","sourceRoot":"","sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAMrE,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,+CAK/B,sBAAsB,KAAG,YAAY,EAuLvC,CAAA"}
@@ -2,14 +2,14 @@
2
2
 
3
3
  import { getTranslation } from '@payloadcms/translations';
4
4
  import { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared';
5
- import { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js';
6
- import { combineFieldLabel } from '../../utilities/combineFieldLabel.js';
7
- import fieldTypes, { arrayOperators } from './field-types.js';
5
+ import fieldTypes, { arrayOperators } from '../elements/WhereBuilder/field-types.js';
6
+ import { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js';
7
+ import { combineFieldLabel } from './combineFieldLabel.js';
8
8
  /**
9
9
  * Reduces a field map to a flat array of fields with labels and values.
10
10
  * Used in the WhereBuilder component to render the fields in the dropdown.
11
11
  */
12
- export const reduceFields = ({
12
+ export const reduceFieldsToOptions = ({
13
13
  fields,
14
14
  i18n,
15
15
  labelPrefix,
@@ -29,7 +29,7 @@ export const reduceFields = ({
29
29
  // Make sure we handle nested tabs
30
30
  const tabPathPrefix = tabHasName(tab) && tab.name ? pathPrefix ? pathPrefix + '.' + tab.name : tab.name : pathPrefix;
31
31
  if (typeof localizedTabLabel === 'string') {
32
- reduced.push(...reduceFields({
32
+ reduced.push(...reduceFieldsToOptions({
33
33
  fields: tab.fields,
34
34
  i18n,
35
35
  labelPrefix: labelWithPrefix,
@@ -42,7 +42,7 @@ export const reduceFields = ({
42
42
  }
43
43
  // Rows cant have labels, so we need to handle them differently
44
44
  if (field.type === 'row' && 'fields' in field) {
45
- reduced.push(...reduceFields({
45
+ reduced.push(...reduceFieldsToOptions({
46
46
  fields: field.fields,
47
47
  i18n,
48
48
  labelPrefix,
@@ -53,7 +53,7 @@ export const reduceFields = ({
53
53
  if (field.type === 'collapsible' && 'fields' in field) {
54
54
  const localizedTabLabel = getTranslation(field.label || '', i18n);
55
55
  const labelWithPrefix = labelPrefix ? labelPrefix + ' > ' + localizedTabLabel : localizedTabLabel;
56
- reduced.push(...reduceFields({
56
+ reduced.push(...reduceFieldsToOptions({
57
57
  fields: field.fields,
58
58
  i18n,
59
59
  labelPrefix: labelWithPrefix,
@@ -67,14 +67,14 @@ export const reduceFields = ({
67
67
  if (fieldAffectsData(field)) {
68
68
  // Make sure we handle deeply nested groups
69
69
  const pathWithPrefix = field.name ? pathPrefix ? pathPrefix + '.' + field.name : field.name : pathPrefix;
70
- reduced.push(...reduceFields({
70
+ reduced.push(...reduceFieldsToOptions({
71
71
  fields: field.fields,
72
72
  i18n,
73
73
  labelPrefix: labelWithPrefix,
74
74
  pathPrefix: pathWithPrefix
75
75
  }));
76
76
  } else {
77
- reduced.push(...reduceFields({
77
+ reduced.push(...reduceFieldsToOptions({
78
78
  fields: field.fields,
79
79
  i18n,
80
80
  labelPrefix: labelWithPrefix,
@@ -88,7 +88,7 @@ export const reduceFields = ({
88
88
  const labelWithPrefix = labelPrefix ? translatedLabel ? labelPrefix + ' > ' + translatedLabel : labelPrefix : translatedLabel;
89
89
  // Make sure we handle deeply nested groups
90
90
  const pathWithPrefix = field.name ? pathPrefix ? pathPrefix + '.' + field.name : field.name : pathPrefix;
91
- reduced.push(...reduceFields({
91
+ reduced.push(...reduceFieldsToOptions({
92
92
  fields: field.fields,
93
93
  i18n,
94
94
  labelPrefix: labelWithPrefix,
@@ -130,4 +130,4 @@ export const reduceFields = ({
130
130
  return reduced;
131
131
  }, []);
132
132
  };
133
- //# sourceMappingURL=reduceFields.js.map
133
+ //# sourceMappingURL=reduceFieldsToOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceFieldsToOptions.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","fieldTypes","arrayOperators","createNestedClientFieldPath","combineFieldLabel","reduceFieldsToOptions","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","operatorKeys","Set","fieldOperators","hasMany","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","fieldPath","formattedField","plainTextLabel"],"sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport fieldTypes, { arrayOperators } from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return reduced\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n\n const fieldOperators =\n 'hasMany' in field && field.hasMany ? arrayOperators : fieldTypes[field.type].operators\n\n const operators = fieldOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n value: fieldPath,\n ...fieldTypes[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n return reduced\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,23 +1,29 @@
1
- import type { ClientCollectionConfig, ClientConfig, CollectionConfig, CollectionPreferences, Column, Field, ImportMap, PaginatedDocs, Payload, SanitizedCollectionConfig } from 'payload';
1
+ import type { ClientCollectionConfig, ClientConfig, CollectionConfig, CollectionPreferences, Column, Field, ImportMap, ListQuery, PaginatedDocs, Payload, SanitizedCollectionConfig, ViewTypes } from 'payload';
2
2
  import { type I18nClient } from '@payloadcms/translations';
3
3
  import React from 'react';
4
4
  export declare const renderFilters: (fields: Field[], importMap: ImportMap) => Map<string, React.ReactNode>;
5
- export declare const renderTable: ({ clientCollectionConfig, clientConfig, collectionConfig, collections, columns: columnsFromArgs, customCellProps, docs, enableRowSelections, i18n, orderableFieldName, payload, renderRowTypes, tableAppearance, useAsTitle, }: {
5
+ export declare const renderTable: ({ clientCollectionConfig, clientConfig, collectionConfig, collections, columns: columnsFromArgs, customCellProps, data, enableRowSelections, groupByFieldPath, groupByValue, heading, i18n, key, orderableFieldName, payload, query, renderRowTypes, tableAppearance, useAsTitle, viewType, }: {
6
6
  clientCollectionConfig?: ClientCollectionConfig;
7
7
  clientConfig?: ClientConfig;
8
8
  collectionConfig?: SanitizedCollectionConfig;
9
9
  collections?: string[];
10
10
  columns?: CollectionPreferences["columns"];
11
11
  customCellProps?: Record<string, unknown>;
12
- docs: PaginatedDocs["docs"];
12
+ data: PaginatedDocs;
13
13
  drawerSlug?: string;
14
14
  enableRowSelections: boolean;
15
+ groupByFieldPath?: string;
16
+ groupByValue?: string;
17
+ heading?: string;
15
18
  i18n: I18nClient;
19
+ key?: string;
16
20
  orderableFieldName: string;
17
21
  payload: Payload;
22
+ query?: ListQuery;
18
23
  renderRowTypes?: boolean;
19
24
  tableAppearance?: "condensed" | "default";
20
25
  useAsTitle: CollectionConfig["admin"]["useAsTitle"];
26
+ viewType?: ViewTypes;
21
27
  }) => {
22
28
  columnState: Column[];
23
29
  Table: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EAEN,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAmBzB,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,mOAerB;IACD,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACpD,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CA0KvB,CAAA"}
1
+ {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EAEN,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAsBzB,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,kSAqBrB;IACD,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CAiNvB,CAAA"}