payload 0.14.22-beta.0 → 0.14.23-beta.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 (380) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/components/index.js +10 -2
  3. package/components/styles.css +1 -1
  4. package/dist/admin/components/Routes.js +81 -29
  5. package/dist/admin/components/elements/Autosave/index.d.ts +5 -0
  6. package/dist/admin/components/elements/Autosave/index.js +116 -0
  7. package/dist/admin/components/elements/Autosave/index.scss +5 -0
  8. package/dist/admin/components/elements/Autosave/types.d.ts +8 -0
  9. package/dist/admin/components/elements/Autosave/types.js +1 -0
  10. package/dist/admin/components/elements/Banner/index.scss +1 -2
  11. package/dist/admin/components/elements/Button/index.js +2 -1
  12. package/dist/admin/components/elements/Button/index.scss +26 -9
  13. package/dist/admin/components/elements/DeleteDocument/index.js +2 -8
  14. package/dist/admin/components/elements/IDLabel/index.d.ts +7 -0
  15. package/dist/admin/components/elements/IDLabel/index.js +8 -0
  16. package/dist/admin/components/elements/IDLabel/index.scss +11 -0
  17. package/dist/admin/components/elements/PerPage/index.d.ts +1 -2
  18. package/dist/admin/components/elements/PerPage/index.js +3 -2
  19. package/dist/admin/components/elements/Pill/index.scss +36 -10
  20. package/dist/admin/components/elements/Pill/types.d.ts +1 -1
  21. package/dist/admin/components/elements/PreviewButton/index.d.ts +1 -0
  22. package/dist/admin/components/elements/PreviewButton/index.js +3 -2
  23. package/dist/admin/components/elements/PreviewButton/index.scss +1 -0
  24. package/dist/admin/components/elements/Publish/index.d.ts +4 -0
  25. package/dist/admin/components/elements/Publish/index.js +20 -0
  26. package/dist/admin/components/elements/Publish/types.d.ts +1 -0
  27. package/dist/admin/components/elements/Publish/types.js +1 -0
  28. package/dist/admin/components/elements/ReactSelect/index.js +2 -2
  29. package/dist/admin/components/elements/ReactSelect/index.scss +4 -4
  30. package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -0
  31. package/dist/admin/components/elements/RenderTitle/index.d.ts +0 -1
  32. package/dist/admin/components/elements/RenderTitle/index.js +6 -9
  33. package/dist/admin/components/elements/SaveDraft/index.d.ts +4 -0
  34. package/dist/admin/components/elements/SaveDraft/index.js +39 -0
  35. package/dist/admin/components/elements/SaveDraft/index.scss +0 -0
  36. package/dist/admin/components/elements/Status/index.d.ts +5 -0
  37. package/dist/admin/components/elements/Status/index.js +107 -0
  38. package/dist/admin/components/elements/Status/index.scss +30 -0
  39. package/dist/admin/components/elements/Status/types.d.ts +1 -0
  40. package/dist/admin/components/elements/Status/types.js +1 -0
  41. package/dist/admin/components/elements/VersionsCount/index.d.ts +5 -0
  42. package/dist/admin/components/elements/VersionsCount/index.js +42 -0
  43. package/dist/admin/components/elements/VersionsCount/index.scss +9 -0
  44. package/dist/admin/components/elements/VersionsCount/types.d.ts +7 -0
  45. package/dist/admin/components/elements/VersionsCount/types.js +1 -0
  46. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.d.ts +2 -1
  47. package/dist/admin/components/forms/Form/getDataByPath.d.ts +1 -1
  48. package/dist/admin/components/forms/Form/index.js +34 -11
  49. package/dist/admin/components/forms/Form/initContextState.js +3 -0
  50. package/dist/admin/components/forms/Form/types.d.ts +13 -4
  51. package/dist/admin/components/forms/Submit/index.d.ts +3 -4
  52. package/dist/admin/components/forms/Submit/index.js +3 -2
  53. package/dist/admin/components/forms/field-types/Array/Array.js +1 -5
  54. package/dist/admin/components/forms/field-types/Array/types.d.ts +1 -25
  55. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +1 -5
  56. package/dist/admin/components/forms/field-types/Blocks/types.d.ts +1 -26
  57. package/dist/admin/components/forms/field-types/Relationship/createRelationMap.d.ts +10 -0
  58. package/dist/admin/components/forms/field-types/Relationship/createRelationMap.js +29 -0
  59. package/dist/admin/components/forms/field-types/Relationship/index.js +67 -47
  60. package/dist/admin/components/forms/field-types/Relationship/optionsReducer.js +15 -6
  61. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +10 -1
  62. package/dist/admin/components/forms/field-types/RichText/RichText.js +6 -2
  63. package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.d.ts +1 -1
  64. package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.js +3 -2
  65. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.d.ts +1 -1
  66. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.js +4 -3
  67. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.js +1 -1
  68. package/dist/admin/components/forms/field-types/RichText/elements/upload/{modal.scss → addSwapModals.scss} +0 -0
  69. package/dist/admin/components/forms/field-types/Select/index.js +5 -2
  70. package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.js +2 -1
  71. package/dist/admin/components/utilities/DocumentInfo/index.d.ts +2 -13
  72. package/dist/admin/components/utilities/DocumentInfo/index.js +128 -19
  73. package/dist/admin/components/utilities/DocumentInfo/types.d.ts +23 -0
  74. package/dist/admin/components/utilities/DocumentInfo/types.js +1 -0
  75. package/dist/admin/components/views/Account/Default.js +3 -3
  76. package/dist/admin/components/views/Account/index.js +11 -13
  77. package/dist/admin/components/views/Global/Default.js +27 -9
  78. package/dist/admin/components/views/Global/index.js +23 -28
  79. package/dist/admin/components/views/Global/types.d.ts +3 -1
  80. package/dist/admin/components/views/NotFound/index.d.ts +1 -0
  81. package/dist/admin/components/views/NotFound/index.js +7 -5
  82. package/dist/admin/components/views/NotFound/index.scss +10 -0
  83. package/dist/admin/components/views/Version/Compare/index.d.ts +5 -0
  84. package/dist/admin/components/views/Version/Compare/index.js +79 -0
  85. package/dist/admin/components/views/Version/Compare/index.scss +15 -0
  86. package/dist/admin/components/views/Version/Compare/types.d.ts +26 -0
  87. package/dist/admin/components/views/Version/Compare/types.js +1 -0
  88. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.d.ts +4 -0
  89. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.js +5 -0
  90. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.scss +6 -0
  91. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +8 -0
  92. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +57 -0
  93. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +25 -0
  94. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +8 -0
  95. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.js +15 -0
  96. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +8 -0
  97. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +8 -0
  98. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +68 -0
  99. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +10 -0
  100. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +5 -0
  101. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +25 -0
  102. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.scss +10 -0
  103. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.d.ts +1 -0
  104. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.js +82 -0
  105. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.d.ts +1 -0
  106. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.js +52 -0
  107. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.d.ts +6 -0
  108. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.js +6 -0
  109. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.d.ts +33 -0
  110. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +23 -0
  111. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.d.ts +16 -0
  112. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.js +1 -0
  113. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.d.ts +5 -0
  114. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +39 -0
  115. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.scss +11 -0
  116. package/dist/admin/components/views/Version/RenderFieldsToDiff/types.d.ts +11 -0
  117. package/dist/admin/components/views/Version/RenderFieldsToDiff/types.js +1 -0
  118. package/dist/admin/components/views/Version/Restore/index.d.ts +5 -0
  119. package/dist/admin/components/views/Version/Restore/index.js +50 -0
  120. package/dist/admin/components/views/Version/Restore/index.scss +20 -0
  121. package/dist/admin/components/views/Version/Restore/types.d.ts +10 -0
  122. package/dist/admin/components/views/Version/Restore/types.js +1 -0
  123. package/dist/admin/components/views/Version/SelectLocales/index.d.ts +5 -0
  124. package/dist/admin/components/views/Version/SelectLocales/index.js +8 -0
  125. package/dist/admin/components/views/Version/SelectLocales/index.scss +9 -0
  126. package/dist/admin/components/views/Version/SelectLocales/types.d.ts +6 -0
  127. package/dist/admin/components/views/Version/SelectLocales/types.js +1 -0
  128. package/dist/admin/components/views/Version/Version.d.ts +5 -0
  129. package/dist/admin/components/views/Version/Version.js +158 -0
  130. package/dist/admin/components/views/Version/index.d.ts +4 -0
  131. package/dist/admin/components/views/Version/index.js +6 -0
  132. package/dist/admin/components/views/Version/index.scss +65 -0
  133. package/dist/admin/components/views/Version/shared.d.ts +8 -0
  134. package/dist/admin/components/views/Version/shared.js +8 -0
  135. package/dist/admin/components/views/Version/types.d.ts +16 -0
  136. package/dist/admin/components/views/Version/types.js +1 -0
  137. package/dist/admin/components/views/Versions/columns.d.ts +4 -0
  138. package/dist/admin/components/views/Versions/columns.js +47 -0
  139. package/dist/admin/components/views/Versions/index.d.ts +5 -0
  140. package/dist/admin/components/views/Versions/index.js +178 -0
  141. package/dist/admin/components/views/Versions/index.scss +79 -0
  142. package/dist/admin/components/views/Versions/types.d.ts +6 -0
  143. package/dist/admin/components/views/Versions/types.js +1 -0
  144. package/dist/admin/components/views/collections/Edit/Default.js +38 -24
  145. package/dist/admin/components/views/collections/Edit/index.js +41 -30
  146. package/dist/admin/components/views/collections/Edit/index.scss +15 -3
  147. package/dist/admin/components/views/collections/Edit/types.d.ts +1 -0
  148. package/dist/admin/components/views/collections/List/Default.js +2 -1
  149. package/dist/admin/components/views/collections/List/index.js +1 -0
  150. package/dist/admin/components/views/collections/List/types.d.ts +2 -1
  151. package/dist/admin/hooks/useDebounce.d.ts +1 -1
  152. package/dist/admin/scss/app.scss +1 -1
  153. package/dist/{fields/baseFields/baseAccountLockFields.d.ts → auth/baseFields/accountLock.d.ts} +1 -1
  154. package/dist/auth/baseFields/accountLock.js +16 -0
  155. package/dist/{fields/baseFields/baseAuthFields.d.ts → auth/baseFields/apiKey.d.ts} +1 -1
  156. package/dist/auth/baseFields/apiKey.js +63 -0
  157. package/dist/{fields/baseFields/baseVerificationFields.d.ts → auth/baseFields/auth.d.ts} +1 -1
  158. package/dist/auth/baseFields/auth.js +28 -0
  159. package/dist/{fields/baseFields/baseAPIKeyFields.d.ts → auth/baseFields/verification.d.ts} +1 -1
  160. package/dist/auth/baseFields/verification.js +41 -0
  161. package/dist/auth/operations/access.d.ts +2 -1
  162. package/dist/auth/operations/access.js +14 -3
  163. package/dist/auth/operations/local/login.d.ts +4 -1
  164. package/dist/auth/operations/local/login.js +1 -1
  165. package/dist/auth/operations/login.d.ts +2 -1
  166. package/dist/auth/operations/login.js +2 -2
  167. package/dist/auth/operations/registerFirstUser.d.ts +6 -0
  168. package/dist/auth/operations/registerFirstUser.js +11 -8
  169. package/dist/collections/bindCollection.d.ts +3 -2
  170. package/dist/collections/bindCollection.js +1 -1
  171. package/dist/collections/config/defaults.d.ts +1 -0
  172. package/dist/collections/config/defaults.js +2 -1
  173. package/dist/collections/config/sanitize.js +39 -45
  174. package/dist/collections/config/schema.js +12 -1
  175. package/dist/collections/config/types.d.ts +16 -16
  176. package/dist/collections/graphql/init.js +63 -3
  177. package/dist/collections/graphql/resolvers/create.js +2 -1
  178. package/dist/collections/graphql/resolvers/find.js +2 -1
  179. package/dist/collections/graphql/resolvers/findByID.js +2 -1
  180. package/dist/collections/graphql/resolvers/findVersionByID.d.ts +11 -0
  181. package/dist/collections/graphql/resolvers/findVersionByID.js +22 -0
  182. package/dist/collections/graphql/resolvers/findVersions.d.ts +16 -0
  183. package/dist/collections/graphql/resolvers/findVersions.js +25 -0
  184. package/dist/collections/graphql/resolvers/restoreVersion.d.ts +8 -0
  185. package/dist/collections/graphql/resolvers/restoreVersion.js +17 -0
  186. package/dist/collections/graphql/resolvers/update.js +3 -1
  187. package/dist/collections/init.js +26 -2
  188. package/dist/collections/operations/create.d.ts +1 -0
  189. package/dist/collections/operations/create.js +13 -58
  190. package/dist/collections/operations/find.d.ts +3 -1
  191. package/dist/collections/operations/find.js +44 -46
  192. package/dist/collections/operations/findByID.d.ts +3 -1
  193. package/dist/collections/operations/findByID.js +21 -11
  194. package/dist/collections/operations/findVersionByID.d.ts +16 -0
  195. package/dist/collections/operations/findVersionByID.js +102 -0
  196. package/dist/collections/operations/findVersions.d.ts +19 -0
  197. package/dist/collections/operations/findVersions.js +125 -0
  198. package/dist/collections/operations/local/create.d.ts +5 -2
  199. package/dist/collections/operations/local/create.js +4 -2
  200. package/dist/collections/operations/local/find.d.ts +3 -1
  201. package/dist/collections/operations/local/find.js +3 -2
  202. package/dist/collections/operations/local/findByID.d.ts +2 -0
  203. package/dist/collections/operations/local/findByID.js +5 -2
  204. package/dist/collections/operations/local/findVersionByID.d.ts +16 -0
  205. package/dist/collections/operations/local/findVersionByID.js +24 -0
  206. package/dist/collections/operations/local/findVersions.d.ts +17 -0
  207. package/dist/collections/operations/local/findVersions.js +26 -0
  208. package/dist/collections/operations/local/index.d.ts +6 -0
  209. package/dist/collections/operations/local/index.js +7 -1
  210. package/dist/collections/operations/local/restoreVersion.d.ts +14 -0
  211. package/dist/collections/operations/local/restoreVersion.js +25 -0
  212. package/dist/collections/operations/local/update.d.ts +6 -5
  213. package/dist/collections/operations/local/update.js +4 -2
  214. package/dist/collections/operations/restoreVersion.d.ts +15 -0
  215. package/dist/collections/operations/restoreVersion.js +118 -0
  216. package/dist/collections/operations/update.d.ts +5 -2
  217. package/dist/collections/operations/update.js +72 -79
  218. package/dist/collections/requestHandlers/create.js +2 -1
  219. package/dist/collections/requestHandlers/find.d.ts +2 -1
  220. package/dist/collections/requestHandlers/find.js +2 -1
  221. package/dist/collections/requestHandlers/findByID.js +2 -1
  222. package/dist/collections/requestHandlers/findVersionByID.d.ts +8 -0
  223. package/dist/collections/requestHandlers/findVersionByID.js +19 -0
  224. package/dist/collections/requestHandlers/findVersions.d.ts +5 -0
  225. package/dist/collections/requestHandlers/findVersions.js +33 -0
  226. package/dist/collections/requestHandlers/restoreVersion.d.ts +8 -0
  227. package/dist/collections/requestHandlers/restoreVersion.js +27 -0
  228. package/dist/collections/requestHandlers/update.js +11 -2
  229. package/dist/config/defaults.d.ts +1 -0
  230. package/dist/config/defaults.js +2 -1
  231. package/dist/config/schema.js +1 -2
  232. package/dist/config/types.d.ts +1 -1
  233. package/dist/errors/TimestampsRequired.d.ts +6 -0
  234. package/dist/errors/TimestampsRequired.js +13 -0
  235. package/dist/express/middleware/index.js +2 -2
  236. package/dist/fields/accessPromise.d.ts +1 -1
  237. package/dist/fields/hookPromise.d.ts +3 -1
  238. package/dist/fields/hookPromise.js +41 -14
  239. package/dist/fields/mergeBaseFields.d.ts +2 -0
  240. package/dist/fields/mergeBaseFields.js +40 -0
  241. package/dist/fields/performFieldOperations.d.ts +4 -4
  242. package/dist/fields/performFieldOperations.js +4 -2
  243. package/dist/fields/relationshipPopulationPromise.js +3 -3
  244. package/dist/fields/richText/populate.js +4 -7
  245. package/dist/fields/traverseFields.d.ts +2 -1
  246. package/dist/fields/traverseFields.js +4 -2
  247. package/dist/globals/buildModel.d.ts +2 -2
  248. package/dist/globals/buildModel.js +3 -1
  249. package/dist/globals/config/sanitize.js +25 -2
  250. package/dist/globals/config/schema.js +11 -1
  251. package/dist/globals/config/types.d.ts +13 -3
  252. package/dist/globals/graphql/init.js +60 -2
  253. package/dist/globals/graphql/resolvers/findOne.js +2 -1
  254. package/dist/globals/graphql/resolvers/findVersionByID.d.ts +13 -0
  255. package/dist/globals/graphql/resolvers/findVersionByID.js +23 -0
  256. package/dist/globals/graphql/resolvers/findVersions.d.ts +3 -0
  257. package/dist/globals/graphql/resolvers/findVersions.js +35 -0
  258. package/dist/globals/graphql/resolvers/index.d.ts +4 -5
  259. package/dist/globals/graphql/resolvers/index.js +10 -5
  260. package/dist/globals/graphql/resolvers/restoreVersion.d.ts +3 -0
  261. package/dist/globals/graphql/resolvers/restoreVersion.js +18 -0
  262. package/dist/globals/graphql/resolvers/update.js +4 -3
  263. package/dist/globals/init.js +28 -1
  264. package/dist/globals/operations/findOne.js +39 -6
  265. package/dist/globals/operations/findVersionByID.d.ts +15 -0
  266. package/dist/globals/operations/findVersionByID.js +97 -0
  267. package/dist/globals/operations/findVersions.d.ts +18 -0
  268. package/dist/globals/operations/findVersions.js +110 -0
  269. package/dist/globals/operations/local/findOne.js +3 -2
  270. package/dist/globals/operations/local/update.js +3 -2
  271. package/dist/globals/operations/restoreVersion.d.ts +18 -0
  272. package/dist/globals/operations/restoreVersion.js +95 -0
  273. package/dist/globals/operations/update.d.ts +3 -1
  274. package/dist/globals/operations/update.js +93 -10
  275. package/dist/globals/requestHandlers/findOne.js +2 -1
  276. package/dist/globals/requestHandlers/findVersionByID.d.ts +3 -0
  277. package/dist/globals/requestHandlers/findVersionByID.js +23 -0
  278. package/dist/globals/requestHandlers/findVersions.d.ts +2 -0
  279. package/dist/globals/requestHandlers/findVersions.js +37 -0
  280. package/dist/globals/requestHandlers/restoreVersion.d.ts +2 -0
  281. package/dist/globals/requestHandlers/restoreVersion.js +31 -0
  282. package/dist/globals/requestHandlers/update.js +11 -2
  283. package/dist/graphql/bindResolvers.d.ts +12 -0
  284. package/dist/graphql/bindResolvers.js +13 -1
  285. package/dist/graphql/schema/buildPoliciesType.js +14 -3
  286. package/dist/graphql/schema/buildWhereInputType.js +7 -202
  287. package/dist/graphql/schema/fieldToSchemaMap.d.ts +2 -0
  288. package/dist/graphql/schema/fieldToSchemaMap.js +169 -0
  289. package/dist/graphql/schema/operators.d.ts +7 -0
  290. package/dist/graphql/schema/operators.js +10 -0
  291. package/dist/graphql/schema/recursivelyBuildNestedPaths.d.ts +3 -0
  292. package/dist/graphql/schema/recursivelyBuildNestedPaths.js +38 -0
  293. package/dist/index.d.ts +38 -8
  294. package/dist/index.js +33 -2
  295. package/dist/init/bindOperations.d.ts +64 -0
  296. package/dist/init/bindOperations.js +13 -1
  297. package/dist/init/bindRequestHandlers.d.ts +12 -0
  298. package/dist/init/bindRequestHandlers.js +13 -1
  299. package/dist/mongoose/buildSchema.d.ts +2 -2
  300. package/dist/mongoose/buildSchema.js +13 -13
  301. package/dist/mongoose/buildSortParam.d.ts +1 -0
  302. package/dist/mongoose/buildSortParam.js +27 -0
  303. package/dist/mongoose/types.d.ts +12 -0
  304. package/dist/mongoose/types.js +3 -0
  305. package/dist/types/index.d.ts +2 -0
  306. package/dist/types/index.js +6 -1
  307. package/dist/{fields/baseFields/getBaseUploadFields.d.ts → uploads/getBaseFields.d.ts} +3 -3
  308. package/dist/{fields/baseFields/getBaseUploadFields.js → uploads/getBaseFields.js} +2 -2
  309. package/dist/uploads/uploadFile.d.ts +13 -0
  310. package/dist/uploads/uploadFile.js +70 -0
  311. package/dist/utilities/getUniqueListBy.d.ts +1 -0
  312. package/dist/utilities/getUniqueListBy.js +7 -0
  313. package/dist/versions/baseFields.d.ts +7 -0
  314. package/dist/versions/baseFields.js +29 -0
  315. package/dist/versions/buildCollectionFields.d.ts +3 -0
  316. package/dist/versions/buildCollectionFields.js +29 -0
  317. package/dist/versions/buildGlobalFields.d.ts +3 -0
  318. package/dist/versions/buildGlobalFields.js +23 -0
  319. package/dist/versions/cleanUpFailedVersion.d.ts +11 -0
  320. package/dist/versions/cleanUpFailedVersion.js +11 -0
  321. package/dist/versions/defaults.d.ts +3 -0
  322. package/dist/versions/defaults.js +19 -0
  323. package/dist/versions/drafts/appendVersionToQueryKey.d.ts +2 -0
  324. package/dist/versions/drafts/appendVersionToQueryKey.js +19 -0
  325. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +13 -0
  326. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +66 -0
  327. package/dist/versions/drafts/saveCollectionDraft.d.ts +13 -0
  328. package/dist/versions/drafts/saveCollectionDraft.js +54 -0
  329. package/dist/versions/drafts/saveGlobalDraft.d.ts +10 -0
  330. package/dist/versions/drafts/saveGlobalDraft.js +49 -0
  331. package/dist/versions/enforceMaxVersions.d.ts +12 -0
  332. package/dist/versions/enforceMaxVersions.js +25 -0
  333. package/dist/versions/ensurePublishedCollectionVersion.d.ts +12 -0
  334. package/dist/versions/ensurePublishedCollectionVersion.js +62 -0
  335. package/dist/versions/ensurePublishedGlobalVersion.d.ts +11 -0
  336. package/dist/versions/ensurePublishedGlobalVersion.js +56 -0
  337. package/dist/versions/getVersionsModelName.d.ts +3 -0
  338. package/dist/versions/getVersionsModelName.js +6 -0
  339. package/dist/versions/saveCollectionVersion.d.ts +12 -0
  340. package/dist/versions/saveCollectionVersion.js +82 -0
  341. package/dist/versions/saveGlobalVersion.d.ts +11 -0
  342. package/dist/versions/saveGlobalVersion.js +76 -0
  343. package/dist/versions/shouldIncrementVersionCount.d.ts +14 -0
  344. package/dist/versions/shouldIncrementVersionCount.js +10 -0
  345. package/dist/versions/tests/collections-graphql.spec.d.ts +1 -0
  346. package/dist/versions/tests/collections-graphql.spec.js +141 -0
  347. package/dist/versions/tests/collections-rest.spec.d.ts +1 -0
  348. package/dist/versions/tests/collections-rest.spec.js +148 -0
  349. package/dist/versions/tests/globals-graphql.spec.d.ts +1 -0
  350. package/dist/versions/tests/globals-graphql.spec.js +157 -0
  351. package/dist/versions/tests/globals-rest.spec.d.ts +1 -0
  352. package/dist/versions/tests/globals-rest.spec.js +151 -0
  353. package/dist/versions/types.d.ts +34 -0
  354. package/dist/versions/types.js +3 -0
  355. package/dist/webpack/components.config.d.ts +2 -2
  356. package/dist/webpack/components.config.js +3 -3
  357. package/docs/access-control/globals.mdx +2 -2
  358. package/docs/admin/components.mdx +0 -1
  359. package/docs/admin/customizing-css.mdx +0 -2
  360. package/docs/admin/overview.mdx +0 -1
  361. package/docs/admin/webpack.mdx +0 -2
  362. package/docs/authentication/overview.mdx +0 -1
  363. package/docs/configuration/express.mdx +0 -2
  364. package/docs/configuration/localization.mdx +0 -1
  365. package/docs/configuration/overview.mdx +1 -2
  366. package/docs/getting-started/installation.mdx +2 -5
  367. package/docs/graphql/extending.mdx +0 -1
  368. package/docs/plugins/overview.mdx +0 -1
  369. package/docs/upload/overview.mdx +0 -1
  370. package/docs/versions/autosave.mdx +71 -0
  371. package/docs/versions/drafts.mdx +160 -0
  372. package/docs/versions/overview.mdx +140 -0
  373. package/package.json +13 -12
  374. package/dist/admin/components/elements/RenderTitle/index.scss +0 -12
  375. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.scss +0 -25
  376. package/dist/fields/baseFields/baseAPIKeyFields.js +0 -63
  377. package/dist/fields/baseFields/baseAccountLockFields.js +0 -16
  378. package/dist/fields/baseFields/baseAuthFields.js +0 -28
  379. package/dist/fields/baseFields/baseVerificationFields.js +0 -41
  380. package/docs/.DS_Store +0 -0
@@ -0,0 +1,107 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import { useConfig } from '@payloadcms/config-provider';
3
+ import { toast } from 'react-toastify';
4
+ import { Modal, useModal } from '@faceless-ui/modal';
5
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
6
+ import Button from '../Button';
7
+ import { MinimalTemplate } from '../..';
8
+ import { requests } from '../../../api';
9
+ import { useForm } from '../../forms/Form/context';
10
+ import { useLocale } from '../../utilities/Locale';
11
+ import './index.scss';
12
+ const baseClass = 'status';
13
+ const unPublishModalSlug = 'confirm-un-publish';
14
+ const revertModalSlug = 'confirm-revert';
15
+ const Status = () => {
16
+ var _a, _b;
17
+ const { publishedDoc, unpublishedVersions, collection, global, id, getVersions } = useDocumentInfo();
18
+ const { toggle, closeAll: closeAllModals } = useModal();
19
+ const { serverURL, routes: { api } } = useConfig();
20
+ const [processing, setProcessing] = useState(false);
21
+ const { reset: resetForm } = useForm();
22
+ const locale = useLocale();
23
+ let statusToRender;
24
+ if (((_a = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _a === void 0 ? void 0 : _a.length) > 0 && publishedDoc) {
25
+ statusToRender = 'Changed';
26
+ }
27
+ else if (!publishedDoc) {
28
+ statusToRender = 'Draft';
29
+ }
30
+ else if (publishedDoc && ((_b = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _b === void 0 ? void 0 : _b.length) <= 1) {
31
+ statusToRender = 'Published';
32
+ }
33
+ const performAction = useCallback(async (action) => {
34
+ let url;
35
+ let method;
36
+ let body;
37
+ setProcessing(true);
38
+ if (action === 'unpublish') {
39
+ body = {
40
+ _status: 'draft',
41
+ };
42
+ }
43
+ if (action === 'revert') {
44
+ body = publishedDoc;
45
+ }
46
+ if (collection) {
47
+ url = `${serverURL}${api}/${collection.slug}/${id}?depth=0&locale=${locale}&fallback-locale=null`;
48
+ method = 'put';
49
+ }
50
+ if (global) {
51
+ url = `${serverURL}${api}/globals/${global.slug}?depth=0&locale=${locale}&fallback-locale=null`;
52
+ method = 'post';
53
+ }
54
+ const res = await requests[method](url, {
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ },
58
+ body: JSON.stringify(body),
59
+ });
60
+ if (res.status === 200) {
61
+ let data;
62
+ let fields;
63
+ const json = await res.json();
64
+ if (global) {
65
+ data = json.result;
66
+ fields = global.fields;
67
+ }
68
+ if (collection) {
69
+ data = json.doc;
70
+ fields = collection.fields;
71
+ }
72
+ resetForm(fields, data);
73
+ toast.success(json.message);
74
+ getVersions();
75
+ }
76
+ else {
77
+ toast.error('There was a problem while un-publishing this document.');
78
+ }
79
+ setProcessing(false);
80
+ closeAllModals();
81
+ }, [closeAllModals, collection, global, serverURL, api, resetForm, id, locale, getVersions, publishedDoc]);
82
+ if (statusToRender) {
83
+ return (React.createElement("div", { className: baseClass },
84
+ React.createElement("div", { className: `${baseClass}__value-wrap` },
85
+ React.createElement("span", { className: `${baseClass}__value` }, statusToRender),
86
+ statusToRender === 'Published' && (React.createElement(React.Fragment, null,
87
+ "\u00A0\u2014\u00A0",
88
+ React.createElement(Button, { onClick: () => toggle(unPublishModalSlug), className: `${baseClass}__action`, buttonStyle: "none" }, "Unpublish"),
89
+ React.createElement(Modal, { slug: unPublishModalSlug, className: `${baseClass}__modal` },
90
+ React.createElement(MinimalTemplate, null,
91
+ React.createElement("h1", null, "Confirm unpublish"),
92
+ React.createElement("p", null, "You are about to unpublish this document. Are you sure?"),
93
+ React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(unPublishModalSlug) }, "Cancel"),
94
+ React.createElement(Button, { onClick: processing ? undefined : () => performAction('unpublish') }, processing ? 'Unpublishing...' : 'Confirm'))))),
95
+ statusToRender === 'Changed' && (React.createElement(React.Fragment, null,
96
+ "\u00A0\u2014\u00A0",
97
+ React.createElement(Button, { onClick: () => toggle(revertModalSlug), className: `${baseClass}__action`, buttonStyle: "none" }, "Revert to published"),
98
+ React.createElement(Modal, { slug: revertModalSlug, className: `${baseClass}__modal` },
99
+ React.createElement(MinimalTemplate, null,
100
+ React.createElement("h1", null, "Confirm revert to saved"),
101
+ React.createElement("p", null, "You are about to revert this document's changes to its published state. Are you sure?"),
102
+ React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(revertModalSlug) }, "Cancel"),
103
+ React.createElement(Button, { onClick: processing ? undefined : () => performAction('revert') }, processing ? 'Reverting...' : 'Confirm'))))))));
104
+ }
105
+ return null;
106
+ };
107
+ export default Status;
@@ -0,0 +1,30 @@
1
+ @import '../../../scss/styles.scss';
2
+
3
+ .status {
4
+ &__label {
5
+ color: gray;
6
+ }
7
+
8
+ &__value {
9
+ font-weight: 600;
10
+ }
11
+
12
+ &__action {
13
+ text-decoration: underline;
14
+ }
15
+
16
+ &__modal {
17
+ @include blur-bg;
18
+ display: flex;
19
+ align-items: center;
20
+ height: 100%;
21
+
22
+ &__toggle {
23
+ @extend %btn-reset;
24
+ }
25
+
26
+ .btn {
27
+ margin-right: $baseline;
28
+ }
29
+ }
30
+ }
@@ -0,0 +1 @@
1
+ export declare type Props = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ import './index.scss';
4
+ declare const VersionsCount: React.FC<Props>;
5
+ export default VersionsCount;
@@ -0,0 +1,42 @@
1
+ import { useConfig } from '@payloadcms/config-provider';
2
+ import React from 'react';
3
+ import Button from '../Button';
4
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
5
+ import { shouldIncrementVersionCount } from '../../../../versions/shouldIncrementVersionCount';
6
+ import './index.scss';
7
+ const baseClass = 'versions-count';
8
+ const VersionsCount = ({ collection, global, id }) => {
9
+ var _a, _b, _c;
10
+ const { routes: { admin } } = useConfig();
11
+ const { versions, publishedDoc, unpublishedVersions } = useDocumentInfo();
12
+ // Doc status could come from three places:
13
+ // 1. the newest unpublished version (a draft)
14
+ // 2. the published doc's status, in the event that the doc is published and there are no newer versions
15
+ // 3. if there is no published doc, it's a draft
16
+ const docStatus = ((_c = (_b = (_a = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.version) === null || _c === void 0 ? void 0 : _c._status) || (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._status) || 'draft';
17
+ let versionsURL;
18
+ let entity;
19
+ if (collection) {
20
+ versionsURL = `${admin}/collections/${collection.slug}/${id}/versions`;
21
+ entity = collection;
22
+ }
23
+ if (global) {
24
+ versionsURL = `${admin}/globals/${global.slug}/versions`;
25
+ entity = global;
26
+ }
27
+ let initialVersionsCount = 0;
28
+ if (shouldIncrementVersionCount({ entity, versions, docStatus })) {
29
+ initialVersionsCount = 1;
30
+ }
31
+ const versionCount = ((versions === null || versions === void 0 ? void 0 : versions.totalDocs) || 0) + initialVersionsCount;
32
+ return (React.createElement("div", { className: baseClass },
33
+ versionCount === 0 && 'No versions found',
34
+ versionCount > 0 && (React.createElement(Button, { className: `${baseClass}__button`, buttonStyle: "none", el: "link", to: versionsURL },
35
+ versionCount,
36
+ ' ',
37
+ "version",
38
+ versionCount > 1 && 's',
39
+ ' ',
40
+ "found"))));
41
+ };
42
+ export default VersionsCount;
@@ -0,0 +1,9 @@
1
+ @import '../../../scss/styles.scss';
2
+
3
+ .versions-count__button {
4
+ font-weight: 600;
5
+
6
+ &:hover {
7
+ text-decoration: underline;
8
+ }
9
+ }
@@ -0,0 +1,7 @@
1
+ import { SanitizedCollectionConfig } from '../../../../collections/config/types';
2
+ import { SanitizedGlobalConfig } from '../../../../globals/config/types';
3
+ export declare type Props = {
4
+ collection?: SanitizedCollectionConfig;
5
+ global?: SanitizedGlobalConfig;
6
+ id?: string | number;
7
+ };
@@ -1,5 +1,6 @@
1
1
  import { RelationshipField } from '../../../../../../fields/config/types';
2
- import { PaginatedDocs, SanitizedCollectionConfig } from '../../../../../../collections/config/types';
2
+ import { SanitizedCollectionConfig } from '../../../../../../collections/config/types';
3
+ import { PaginatedDocs } from '../../../../../../mongoose/types';
3
4
  export declare type Props = {
4
5
  onChange: (val: unknown) => void;
5
6
  value: unknown;
@@ -1,3 +1,3 @@
1
1
  import { Fields } from './types';
2
- declare const getDataByPath: (fields: Fields, path: string) => unknown;
2
+ declare const getDataByPath: <T = unknown>(fields: Fields, path: string) => T;
3
3
  export default getDataByPath;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
1
2
  import React, { useReducer, useEffect, useRef, useState, useCallback, } from 'react';
2
3
  import { serialize } from 'object-to-formdata';
3
4
  import { useHistory } from 'react-router-dom';
@@ -15,6 +16,7 @@ import wait from '../../../../utilities/wait';
15
16
  import buildInitialState from './buildInitialState';
16
17
  import errorMessages from './errorMessages';
17
18
  import { SubmittedContext, ProcessingContext, ModifiedContext, FormContext, FormWatchContext } from './context';
19
+ import buildStateFromSchema from './buildStateFromSchema';
18
20
  const baseClass = 'form';
19
21
  const Form = (props) => {
20
22
  const { disabled, onSubmit, method, action, handleResponse, onSuccess, children, className, redirect, disableSuccessStatus, initialState, // fully formed initial field state
@@ -27,6 +29,7 @@ const Form = (props) => {
27
29
  const [processing, setProcessing] = useState(false);
28
30
  const [submitted, setSubmitted] = useState(false);
29
31
  const [formattedInitialData, setFormattedInitialData] = useState(buildInitialState(initialData));
32
+ const formRef = useRef(null);
30
33
  const contextRef = useRef({});
31
34
  let initialFieldState = {};
32
35
  if (formattedInitialData)
@@ -62,17 +65,22 @@ const Form = (props) => {
62
65
  dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState });
63
66
  return isValid;
64
67
  }, [contextRef]);
65
- const submit = useCallback(async (e) => {
68
+ const submit = useCallback(async (options = {}, e) => {
69
+ const { overrides = {}, action: actionToUse = action, method: methodToUse = method, skipValidation, } = options;
66
70
  if (disabled) {
67
- e.preventDefault();
71
+ if (e) {
72
+ e.preventDefault();
73
+ }
68
74
  return;
69
75
  }
70
- e.stopPropagation();
71
- e.preventDefault();
76
+ if (e) {
77
+ e.stopPropagation();
78
+ e.preventDefault();
79
+ }
72
80
  setProcessing(true);
73
81
  if (waitForAutocomplete)
74
82
  await wait(100);
75
- const isValid = await contextRef.current.validateForm();
83
+ const isValid = skipValidation ? true : await contextRef.current.validateForm();
76
84
  setSubmitted(true);
77
85
  // If not valid, prevent submission
78
86
  if (!isValid) {
@@ -82,12 +90,16 @@ const Form = (props) => {
82
90
  }
83
91
  // If submit handler comes through via props, run that
84
92
  if (onSubmit) {
85
- onSubmit(fields, reduceFieldsToValues(fields));
93
+ const data = {
94
+ ...reduceFieldsToValues(fields),
95
+ ...overrides,
96
+ };
97
+ onSubmit(fields, data);
86
98
  return;
87
99
  }
88
- const formData = contextRef.current.createFormData();
100
+ const formData = contextRef.current.createFormData(overrides);
89
101
  try {
90
- const res = await requests[method.toLowerCase()](action, {
102
+ const res = await requests[methodToUse.toLowerCase()](actionToUse, {
91
103
  body: formData,
92
104
  });
93
105
  setModified(false);
@@ -202,20 +214,29 @@ const Form = (props) => {
202
214
  const getSiblingData = useCallback((path) => getSiblingDataFunc(contextRef.current.fields, path), [contextRef]);
203
215
  const getDataByPath = useCallback((path) => getDataByPathFunc(contextRef.current.fields, path), [contextRef]);
204
216
  const getUnflattenedValues = useCallback(() => reduceFieldsToValues(contextRef.current.fields), [contextRef]);
205
- const createFormData = useCallback(() => {
217
+ const createFormData = useCallback((overrides = {}) => {
206
218
  const data = reduceFieldsToValues(contextRef.current.fields, true);
207
219
  const file = data === null || data === void 0 ? void 0 : data.file;
208
220
  if (file) {
209
221
  delete data.file;
210
222
  }
223
+ const dataWithOverrides = {
224
+ ...data,
225
+ ...overrides,
226
+ };
211
227
  const dataToSerialize = {
212
- _payload: JSON.stringify(data),
228
+ _payload: JSON.stringify(dataWithOverrides),
213
229
  file,
214
230
  };
215
231
  // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves
216
232
  const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false });
217
233
  return formData;
218
234
  }, [contextRef]);
235
+ const reset = useCallback(async (fieldSchema, data) => {
236
+ const state = await buildStateFromSchema(fieldSchema, data);
237
+ contextRef.current = { ...initContextState };
238
+ dispatchFields({ type: 'REPLACE_STATE', state });
239
+ }, []);
219
240
  contextRef.current.dispatchFields = dispatchFields;
220
241
  contextRef.current.submit = submit;
221
242
  contextRef.current.getFields = getFields;
@@ -230,6 +251,8 @@ const Form = (props) => {
230
251
  contextRef.current.setProcessing = setProcessing;
231
252
  contextRef.current.setSubmitted = setSubmitted;
232
253
  contextRef.current.disabled = disabled;
254
+ contextRef.current.formRef = formRef;
255
+ contextRef.current.reset = reset;
233
256
  useEffect(() => {
234
257
  if (initialState) {
235
258
  contextRef.current = { ...initContextState };
@@ -259,7 +282,7 @@ const Form = (props) => {
259
282
  // eslint-disable-next-line no-console
260
283
  console.log(fields);
261
284
  }
262
- return (React.createElement("form", { noValidate: true, onSubmit: contextRef.current.submit, method: method, action: action, className: classes },
285
+ return (React.createElement("form", { noValidate: true, onSubmit: (e) => contextRef.current.submit({}, e), method: method, action: action, className: classes, ref: formRef },
263
286
  React.createElement(FormContext.Provider, { value: contextRef.current },
264
287
  React.createElement(FormWatchContext.Provider, { value: {
265
288
  fields,
@@ -7,6 +7,7 @@ const createFormData = () => undefined;
7
7
  const setModified = () => undefined;
8
8
  const setProcessing = () => undefined;
9
9
  const setSubmitted = () => undefined;
10
+ const reset = () => undefined;
10
11
  const initialContextState = {
11
12
  getFields: () => ({}),
12
13
  getField: () => undefined,
@@ -24,5 +25,7 @@ const initialContextState = {
24
25
  initialState: {},
25
26
  fields: {},
26
27
  disabled: false,
28
+ formRef: null,
29
+ reset,
27
30
  };
28
31
  export default initialContextState;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { Condition } from '../../../../fields/config/types';
2
+ import { Field as FieldConfig, Condition } from '../../../../fields/config/types';
3
3
  export declare type Field = {
4
4
  value: unknown;
5
5
  initialValue: unknown;
@@ -35,19 +35,26 @@ export declare type Props = {
35
35
  waitForAutocomplete?: boolean;
36
36
  log?: boolean;
37
37
  };
38
+ export declare type SubmitOptions = {
39
+ action?: string;
40
+ method?: string;
41
+ overrides?: Record<string, unknown>;
42
+ skipValidation?: boolean;
43
+ };
38
44
  export declare type DispatchFields = React.Dispatch<any>;
39
- export declare type Submit = (e: React.FormEvent<HTMLFormElement>) => void;
45
+ export declare type Submit = (options?: SubmitOptions, e?: React.FormEvent<HTMLFormElement>) => void;
40
46
  export declare type ValidateForm = () => Promise<boolean>;
41
- export declare type CreateFormData = () => FormData;
47
+ export declare type CreateFormData = (overrides?: any) => FormData;
42
48
  export declare type GetFields = () => Fields;
43
49
  export declare type GetField = (path: string) => Field;
44
50
  export declare type GetData = () => Data;
45
51
  export declare type GetSiblingData = (path: string) => Data;
46
52
  export declare type GetUnflattenedValues = () => Data;
47
- export declare type GetDataByPath = (path: string) => unknown;
53
+ export declare type GetDataByPath = <T = unknown>(path: string) => T;
48
54
  export declare type SetModified = (modified: boolean) => void;
49
55
  export declare type SetSubmitted = (submitted: boolean) => void;
50
56
  export declare type SetProcessing = (processing: boolean) => void;
57
+ export declare type Reset = (fieldSchema: FieldConfig[], data: unknown) => Promise<void>;
51
58
  export declare type Context = {
52
59
  dispatchFields: DispatchFields;
53
60
  submit: Submit;
@@ -65,4 +72,6 @@ export declare type Context = {
65
72
  setModified: SetModified;
66
73
  setProcessing: SetProcessing;
67
74
  setSubmitted: SetSubmitted;
75
+ formRef: React.MutableRefObject<HTMLFormElement>;
76
+ reset: Reset;
68
77
  };
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
+ import { Props } from '../../elements/Button/types';
2
3
  import './index.scss';
3
- declare const FormSubmit: ({ children }: {
4
- children: any;
5
- }) => JSX.Element;
4
+ declare const FormSubmit: React.FC<Props>;
6
5
  export default FormSubmit;
@@ -3,10 +3,11 @@ import { useForm, useFormProcessing } from '../Form/context';
3
3
  import Button from '../../elements/Button';
4
4
  import './index.scss';
5
5
  const baseClass = 'form-submit';
6
- const FormSubmit = ({ children }) => {
6
+ const FormSubmit = (props) => {
7
+ const { children, disabled: disabledFromProps, type = 'submit' } = props;
7
8
  const processing = useFormProcessing();
8
9
  const { disabled } = useForm();
9
10
  return (React.createElement("div", { className: baseClass },
10
- React.createElement(Button, { type: "submit", disabled: processing || disabled ? true : undefined }, children)));
11
+ React.createElement(Button, { ...props, type: type, disabled: disabledFromProps || processing || disabled ? true : undefined }, children)));
11
12
  };
12
13
  export default FormSubmit;
@@ -77,10 +77,6 @@ const ArrayFieldType = (props) => {
77
77
  setDisableFormData(true);
78
78
  }
79
79
  }, [rows, setValue]);
80
- return (React.createElement(RenderArray, { onDragEnd: onDragEnd, label: label, showError: showError, errorMessage: errorMessage, rows: rows, labels: labels, addRow: addRow, removeRow: removeRow, moveRow: moveRow, path: path, name: name, fieldTypes: fieldTypes, fields: fields, permissions: permissions, value: value, readOnly: readOnly, minRows: minRows, maxRows: maxRows, required: required, description: description }));
81
- };
82
- const RenderArray = React.memo((props) => {
83
- const { onDragEnd, label, showError, errorMessage, rows, labels, addRow, removeRow, moveRow, path, fieldTypes, fields, permissions, value, readOnly, minRows, maxRows, required, description, } = props;
84
80
  const hasMaxRows = maxRows && rows.length >= maxRows;
85
81
  return (React.createElement(DragDropContext, { onDragEnd: onDragEnd },
86
82
  React.createElement("div", { className: baseClass },
@@ -105,5 +101,5 @@ const RenderArray = React.memo((props) => {
105
101
  provided.placeholder))),
106
102
  (!readOnly && (!hasMaxRows)) && (React.createElement("div", { className: `${baseClass}__add-button-wrap` },
107
103
  React.createElement(Button, { onClick: () => addRow(value), buttonStyle: "icon-label", icon: "plus", iconStyle: "with-border", iconPosition: "left" }, `Add ${labels.singular}`))))));
108
- });
104
+ };
109
105
  export default withCondition(ArrayFieldType);
@@ -1,33 +1,9 @@
1
- import { Data } from '../../Form/types';
2
- import { ArrayField, Labels, Field } from '../../../../../fields/config/types';
1
+ import { ArrayField } from '../../../../../fields/config/types';
3
2
  import { FieldTypes } from '..';
4
3
  import { FieldPermissions } from '../../../../../auth/types';
5
- import { Description } from '../../FieldDescription/types';
6
4
  export declare type Props = Omit<ArrayField, 'type'> & {
7
5
  path?: string;
8
6
  fieldTypes: FieldTypes;
9
7
  permissions: FieldPermissions;
10
8
  label: string | false;
11
9
  };
12
- export declare type RenderArrayProps = {
13
- path: string;
14
- name: string;
15
- fieldTypes: FieldTypes;
16
- fields: Field[];
17
- permissions: FieldPermissions;
18
- onDragEnd: (result: any) => void;
19
- label: string | false;
20
- value: number;
21
- readOnly: boolean;
22
- minRows: number;
23
- maxRows: number;
24
- required: boolean;
25
- labels: Labels;
26
- addRow: (index: number) => Promise<void>;
27
- removeRow: (index: number) => void;
28
- moveRow: (fromIndex: number, toIndex: number) => void;
29
- showError: boolean;
30
- errorMessage: string;
31
- rows: Data[];
32
- description?: Description;
33
- };
@@ -117,10 +117,6 @@ const Blocks = (props) => {
117
117
  setDisableFormData(true);
118
118
  }
119
119
  }, [rows, setValue]);
120
- return (React.createElement(RenderBlocks, { onDragEnd: onDragEnd, label: label, showError: showError, errorMessage: errorMessage, rows: rows, labels: labels, addRow: addRow, removeRow: removeRow, moveRow: moveRow, path: path, name: name, fieldTypes: fieldTypes, setCollapse: setCollapse, permissions: permissions, value: value, blocks: blocks, readOnly: readOnly, minRows: minRows, maxRows: maxRows, required: required, description: description }));
121
- };
122
- const RenderBlocks = React.memo((props) => {
123
- const { onDragEnd, label, showError, errorMessage, rows, labels, addRow, removeRow, moveRow, path, fieldTypes, permissions, value, setCollapse, blocks, readOnly, minRows, maxRows, required, description, } = props;
124
120
  const hasMaxRows = maxRows && rows.length >= maxRows;
125
121
  return (React.createElement(DragDropContext, { onDragEnd: onDragEnd },
126
122
  React.createElement("div", { className: baseClass },
@@ -153,5 +149,5 @@ const RenderBlocks = React.memo((props) => {
153
149
  provided.placeholder))),
154
150
  (!readOnly && (rows.length < maxRows || maxRows === undefined)) && (React.createElement("div", { className: `${baseClass}__add-button-wrap` },
155
151
  React.createElement(Popup, { buttonType: "custom", size: "large", horizontalAlign: "left", button: (React.createElement(Button, { buttonStyle: "icon-label", icon: "plus", iconPosition: "left", iconStyle: "with-border" }, `Add ${labels.singular}`)), render: ({ close }) => (React.createElement(BlockSelector, { blocks: blocks, addRow: addRow, addRowIndex: value, close: close })) }))))));
156
- });
152
+ };
157
153
  export default withCondition(Blocks);
@@ -1,33 +1,8 @@
1
- import { Data } from '../../Form/types';
2
- import { BlockField, Labels, Block } from '../../../../../fields/config/types';
1
+ import { BlockField } from '../../../../../fields/config/types';
3
2
  import { FieldTypes } from '..';
4
3
  import { FieldPermissions } from '../../../../../auth/types';
5
- import { Description } from '../../FieldDescription/types';
6
4
  export declare type Props = Omit<BlockField, 'type'> & {
7
5
  path?: string;
8
6
  fieldTypes: FieldTypes;
9
7
  permissions: FieldPermissions;
10
8
  };
11
- export declare type RenderBlockProps = {
12
- path: string;
13
- name: string;
14
- fieldTypes: FieldTypes;
15
- permissions: FieldPermissions;
16
- onDragEnd: (result: any) => void;
17
- label: string | false;
18
- value: number;
19
- readOnly: boolean;
20
- minRows: number;
21
- maxRows: number;
22
- required: boolean;
23
- labels: Labels;
24
- addRow: (index: number, blockType: string) => Promise<void>;
25
- removeRow: (index: number) => void;
26
- moveRow: (fromIndex: number, toIndex: number) => void;
27
- showError: boolean;
28
- errorMessage: string;
29
- rows: Data[];
30
- blocks: Block[];
31
- setCollapse: (id: string, collapsed: boolean) => void;
32
- description?: Description;
33
- };
@@ -0,0 +1,10 @@
1
+ declare type RelationMap = {
2
+ [relation: string]: unknown[];
3
+ };
4
+ declare type CreateRelationMap = (args: {
5
+ hasMany: boolean;
6
+ relationTo: string | string[];
7
+ value: unknown;
8
+ }) => RelationMap;
9
+ export declare const createRelationMap: CreateRelationMap;
10
+ export {};
@@ -0,0 +1,29 @@
1
+ export const createRelationMap = ({ hasMany, relationTo, value, }) => {
2
+ const hasMultipleRelations = Array.isArray(relationTo);
3
+ const relationMap = {};
4
+ const add = (relation, id) => {
5
+ if (typeof relationMap[relation] === 'undefined')
6
+ relationMap[relation] = [];
7
+ if (id !== 'null' && id !== null) {
8
+ relationMap[relation].push(id);
9
+ }
10
+ };
11
+ if (hasMany) {
12
+ (value || []).forEach((val, i) => {
13
+ if (hasMultipleRelations) {
14
+ add(value[i].relationTo, value[i].value);
15
+ }
16
+ else {
17
+ add(relationTo, value[i]);
18
+ }
19
+ });
20
+ }
21
+ else if (hasMultipleRelations) {
22
+ const valueWithRelation = value;
23
+ add(valueWithRelation.relationTo, valueWithRelation.value);
24
+ }
25
+ else {
26
+ add(relationTo, value);
27
+ }
28
+ return relationMap;
29
+ };