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,116 @@
1
+ import { useConfig } from '@payloadcms/config-provider';
2
+ import { formatDistance } from 'date-fns';
3
+ import { useHistory } from 'react-router-dom';
4
+ import { toast } from 'react-toastify';
5
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
6
+ import { useWatchForm, useFormModified } from '../../forms/Form/context';
7
+ import { useLocale } from '../../utilities/Locale';
8
+ import reduceFieldsToValues from '../../forms/Form/reduceFieldsToValues';
9
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
10
+ import useDebounce from '../../../hooks/useDebounce';
11
+ import './index.scss';
12
+ const baseClass = 'autosave';
13
+ const Autosave = ({ collection, global, id, publishedDocUpdatedAt }) => {
14
+ var _a, _b, _c, _d;
15
+ const { serverURL, routes: { api, admin } } = useConfig();
16
+ const { versions, getVersions } = useDocumentInfo();
17
+ const { fields, dispatchFields } = useWatchForm();
18
+ const modified = useFormModified();
19
+ const locale = useLocale();
20
+ const { replace } = useHistory();
21
+ let interval = 800;
22
+ if ((collection === null || collection === void 0 ? void 0 : collection.versions.drafts) && ((_b = (_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) === null || _b === void 0 ? void 0 : _b.autosave))
23
+ interval = collection.versions.drafts.autosave.interval;
24
+ if ((global === null || global === void 0 ? void 0 : global.versions.drafts) && ((_d = (_c = global.versions) === null || _c === void 0 ? void 0 : _c.drafts) === null || _d === void 0 ? void 0 : _d.autosave))
25
+ interval = global.versions.drafts.autosave.interval;
26
+ const [saving, setSaving] = useState(false);
27
+ const [lastSaved, setLastSaved] = useState();
28
+ const debouncedFields = useDebounce(fields, interval);
29
+ const fieldRef = useRef(fields);
30
+ // Store fields in ref so the autosave func
31
+ // can always retrieve the most to date copies
32
+ // after the timeout has executed
33
+ fieldRef.current = fields;
34
+ const createCollectionDoc = useCallback(async () => {
35
+ const res = await fetch(`${serverURL}${api}/${collection.slug}?locale=${locale}&fallback-locale=null&depth=0&draft=true`, {
36
+ method: 'POST',
37
+ headers: {
38
+ 'Content-Type': 'application/json',
39
+ },
40
+ body: JSON.stringify({}),
41
+ });
42
+ if (res.status === 201) {
43
+ const json = await res.json();
44
+ replace(`${admin}/collections/${collection.slug}/${json.doc.id}`, {
45
+ state: {
46
+ data: json.doc,
47
+ },
48
+ });
49
+ }
50
+ else {
51
+ toast.error('There was a problem while autosaving this document.');
52
+ }
53
+ }, [collection, serverURL, api, admin, locale, replace]);
54
+ useEffect(() => {
55
+ // If no ID, but this is used for a collection doc,
56
+ // Immediately save it and set lastSaved
57
+ if (!id && collection) {
58
+ createCollectionDoc();
59
+ }
60
+ }, [id, collection, createCollectionDoc]);
61
+ // When debounced fields change, autosave
62
+ useEffect(() => {
63
+ const autosave = async () => {
64
+ if (modified) {
65
+ setSaving(true);
66
+ let url;
67
+ let method;
68
+ if (collection && id) {
69
+ url = `${serverURL}${api}/${collection.slug}/${id}?draft=true&autosave=true`;
70
+ method = 'PUT';
71
+ }
72
+ if (global) {
73
+ url = `${serverURL}${api}/globals/${global.slug}?draft=true&autosave=true`;
74
+ method = 'POST';
75
+ }
76
+ if (url) {
77
+ const body = {
78
+ ...reduceFieldsToValues(fieldRef.current),
79
+ _status: 'draft',
80
+ };
81
+ setTimeout(async () => {
82
+ const res = await fetch(url, {
83
+ method,
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ },
87
+ body: JSON.stringify(body),
88
+ });
89
+ setSaving(false);
90
+ if (res.status === 200) {
91
+ setLastSaved(new Date().getTime());
92
+ getVersions();
93
+ }
94
+ }, 1000);
95
+ }
96
+ }
97
+ };
98
+ autosave();
99
+ }, [debouncedFields, modified, serverURL, api, collection, global, id, dispatchFields, getVersions]);
100
+ useEffect(() => {
101
+ var _a;
102
+ if ((_a = versions === null || versions === void 0 ? void 0 : versions.docs) === null || _a === void 0 ? void 0 : _a[0]) {
103
+ setLastSaved(new Date(versions.docs[0].updatedAt).getTime());
104
+ }
105
+ else if (publishedDocUpdatedAt) {
106
+ setLastSaved(new Date(publishedDocUpdatedAt).getTime());
107
+ }
108
+ }, [publishedDocUpdatedAt, versions]);
109
+ return (React.createElement("div", { className: baseClass },
110
+ saving && 'Saving...',
111
+ (!saving && lastSaved) && (React.createElement(React.Fragment, null,
112
+ "Last saved\u00A0",
113
+ formatDistance(new Date(), new Date(lastSaved)),
114
+ "\u00A0ago"))));
115
+ };
116
+ export default Autosave;
@@ -0,0 +1,5 @@
1
+ @import '../../../scss/styles.scss';
2
+
3
+ .autosave {
4
+ min-height: $baseline;
5
+ }
@@ -0,0 +1,8 @@
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
+ publishedDocUpdatedAt: string;
8
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -55,8 +55,7 @@
55
55
  }
56
56
 
57
57
  &--type-success {
58
- background: rgba($color-green, .1);
59
- color: darken($color-green, 20%);
58
+ background: $color-green;
60
59
 
61
60
  &.button--has-action {
62
61
  &:hover {
@@ -48,7 +48,8 @@ const Button = (props) => {
48
48
  const buttonProps = {
49
49
  type,
50
50
  className: classes,
51
- onClick: handleClick,
51
+ disabled,
52
+ onClick: !disabled ? handleClick : undefined,
52
53
  rel: newTab ? 'noopener noreferrer' : undefined,
53
54
  target: newTab ? '_blank' : undefined,
54
55
  };
@@ -72,8 +72,18 @@
72
72
  background-color: $color-dark-gray;
73
73
  color: white;
74
74
 
75
- &:hover {
76
- background: lighten($color-dark-gray, 5%);
75
+ &.btn--disabled {
76
+ background-color: rgba($color-dark-gray, .6);
77
+ }
78
+
79
+ &:not(.btn--disabled) {
80
+ &:hover {
81
+ background: lighten($color-dark-gray, 5%);
82
+ }
83
+
84
+ &:active {
85
+ background: lighten($color-dark-gray, 10%);
86
+ }
77
87
  }
78
88
 
79
89
  &:focus {
@@ -81,9 +91,6 @@
81
91
  outline: none;
82
92
  }
83
93
 
84
- &:active {
85
- background: lighten($color-dark-gray, 10%);
86
- }
87
94
  }
88
95
 
89
96
  &--style-secondary {
@@ -99,14 +106,20 @@
99
106
  box-shadow: $hover-box-shadow;
100
107
  }
101
108
 
109
+ &:active {
110
+ background: lighten($color-light-gray, 7%);
111
+ }
112
+
113
+ &.btn--disabled {
114
+ color: rgba($color-dark-gray, .6);
115
+ background: none;
116
+ box-shadow: inset 0 0 0 $style-stroke-width rgba($color-dark-gray, .4);
117
+ }
118
+
102
119
  &:focus {
103
120
  outline: none;
104
121
  box-shadow: $hover-box-shadow, $focus-box-shadow;
105
122
  }
106
-
107
- &:active {
108
- background: lighten($color-light-gray, 7%);
109
- }
110
123
  }
111
124
 
112
125
  &--style-none {
@@ -172,6 +185,10 @@
172
185
  }
173
186
  }
174
187
 
188
+ &--disabled {
189
+ cursor: default;
190
+ }
191
+
175
192
  &:hover {
176
193
  .btn__icon {
177
194
  @include color-svg(white);
@@ -35,14 +35,8 @@ const DeleteDocument = (props) => {
35
35
  const json = await res.json();
36
36
  if (res.status < 400) {
37
37
  closeAll();
38
- return history.push({
39
- pathname: `${admin}/collections/${slug}`,
40
- state: {
41
- status: {
42
- message: `${singular} "${title}" successfully deleted.`,
43
- },
44
- },
45
- });
38
+ toast.success(`${singular} "${title}" successfully deleted.`);
39
+ return history.push(`${admin}/collections/${slug}`);
46
40
  }
47
41
  closeAll();
48
42
  if (json.errors) {
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import './index.scss';
3
+ declare const IDLabel: React.FC<{
4
+ id: string;
5
+ prefix?: string;
6
+ }>;
7
+ export default IDLabel;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import './index.scss';
3
+ const baseClass = 'id-label';
4
+ const IDLabel = ({ id, prefix = 'ID:' }) => (React.createElement("div", { className: baseClass },
5
+ prefix,
6
+ "\u00A0\u00A0",
7
+ id));
8
+ export default IDLabel;
@@ -0,0 +1,11 @@
1
+ @import '../../../scss/styles';
2
+
3
+ .id-label {
4
+ font-size: base(.75);
5
+ font-weight: normal;
6
+ color: $color-gray;
7
+ background: $color-background-gray;
8
+ padding: base(.25) base(.5);
9
+ border-radius: $style-radius-m;
10
+ display: inline-flex;
11
+ }
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
- import { SanitizedCollectionConfig } from '../../../../collections/config/types';
3
2
  import './index.scss';
4
3
  declare type Props = {
5
- collection: SanitizedCollectionConfig;
4
+ limits: number[];
6
5
  limit: number;
7
6
  handleChange?: (limit: number) => void;
8
7
  modifySearchParams?: boolean;
@@ -4,10 +4,11 @@ import { useHistory } from 'react-router-dom';
4
4
  import { useSearchParams } from '../../utilities/SearchParams';
5
5
  import Popup from '../Popup';
6
6
  import Chevron from '../../icons/Chevron';
7
+ import { defaults } from '../../../../collections/config/defaults';
7
8
  import './index.scss';
8
9
  const baseClass = 'per-page';
9
- const PerPage = ({ collection, limit, handleChange, modifySearchParams = true }) => {
10
- const { admin: { pagination: { limits, }, }, } = collection;
10
+ const defaultLimits = defaults.admin.pagination.limits;
11
+ const PerPage = ({ limits = defaultLimits, limit, handleChange, modifySearchParams = true }) => {
11
12
  const params = useSearchParams();
12
13
  const history = useHistory();
13
14
  return (React.createElement("div", { className: baseClass },
@@ -11,6 +11,7 @@
11
11
  border-radius: $style-radius-s;
12
12
  padding: 0 base(.25);
13
13
  padding-left: base(.0875 + .25);
14
+ cursor: default;
14
15
 
15
16
  &:active,
16
17
  &:focus {
@@ -36,13 +37,28 @@
36
37
  padding-right: base(.125);
37
38
  }
38
39
 
39
- &--style-light {
40
- &:hover {
41
- background: lighten($color-light-gray, 3%);
40
+ &--style-white {
41
+ background: white;
42
+ &.pill--has-action {
43
+ &:hover {
44
+ background: lighten($color-light-gray, 3%);
45
+ }
46
+
47
+ &:active {
48
+ background: lighten($color-light-gray, 5%);
49
+ }
42
50
  }
51
+ }
52
+
53
+ &--style-light {
54
+ &.pill--has-action {
55
+ &:hover {
56
+ background: lighten($color-light-gray, 3%);
57
+ }
43
58
 
44
- &:active {
45
- background: lighten($color-light-gray, 5%);
59
+ &:active {
60
+ background: lighten($color-light-gray, 5%);
61
+ }
46
62
  }
47
63
  }
48
64
 
@@ -51,6 +67,14 @@
51
67
  color: $color-dark-gray;
52
68
  }
53
69
 
70
+ &--style-warning {
71
+ background: $color-yellow;
72
+ }
73
+
74
+ &--style-success {
75
+ background: $color-green;
76
+ }
77
+
54
78
  &--style-dark {
55
79
  background: $color-dark-gray;
56
80
  color: white;
@@ -59,12 +83,14 @@
59
83
  @include color-svg(white);
60
84
  }
61
85
 
62
- &:hover {
63
- background: lighten($color-dark-gray, 3%);
64
- }
86
+ &.pill--has-action {
87
+ &:hover {
88
+ background: lighten($color-dark-gray, 3%);
89
+ }
65
90
 
66
- &:active {
67
- background: lighten($color-dark-gray, 5%);
91
+ &:active {
92
+ background: lighten($color-dark-gray, 5%);
93
+ }
68
94
  }
69
95
  }
70
96
  }
@@ -5,7 +5,7 @@ export declare type Props = {
5
5
  icon?: React.ReactNode;
6
6
  alignIcon?: 'left' | 'right';
7
7
  onClick?: () => void;
8
- pillStyle?: 'light' | 'dark' | 'light-gray';
8
+ pillStyle?: 'white' | 'light' | 'dark' | 'light-gray' | 'warning' | 'success';
9
9
  };
10
10
  export declare type RenderedTypeProps = {
11
11
  className?: string;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
2
  import { Props } from './types';
3
+ import './index.scss';
3
4
  declare const PreviewButton: React.FC<Props>;
4
5
  export default PreviewButton;
@@ -2,9 +2,10 @@ import React, { useEffect, useState } from 'react';
2
2
  import { useAuth } from '@payloadcms/config-provider';
3
3
  import Button from '../Button';
4
4
  import { useLocale } from '../../utilities/Locale';
5
+ import './index.scss';
5
6
  const baseClass = 'preview-btn';
6
7
  const PreviewButton = (props) => {
7
- const { generatePreviewURL, data } = props;
8
+ const { generatePreviewURL, data, } = props;
8
9
  const [url, setUrl] = useState(undefined);
9
10
  const locale = useLocale();
10
11
  const { token } = useAuth();
@@ -20,7 +21,7 @@ const PreviewButton = (props) => {
20
21
  generatePreviewURL,
21
22
  locale,
22
23
  token,
23
- data
24
+ data,
24
25
  ]);
25
26
  if (url) {
26
27
  return (React.createElement(Button, { el: "anchor", className: baseClass, buttonStyle: "secondary", url: url, newTab: true }, "Preview"));
@@ -0,0 +1 @@
1
+ @import '../../../scss/styles.scss';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ declare const Publish: React.FC<Props>;
4
+ export default Publish;
@@ -0,0 +1,20 @@
1
+ import React, { useCallback } from 'react';
2
+ import FormSubmit from '../../forms/Submit';
3
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
4
+ import { useForm, useFormModified } from '../../forms/Form/context';
5
+ const Publish = () => {
6
+ const { unpublishedVersions, publishedDoc } = useDocumentInfo();
7
+ const { submit } = useForm();
8
+ const modified = useFormModified();
9
+ const hasNewerVersions = (unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.totalDocs) > 0;
10
+ const canPublish = modified || hasNewerVersions || !publishedDoc;
11
+ const publish = useCallback(() => {
12
+ submit({
13
+ overrides: {
14
+ _status: 'published',
15
+ },
16
+ });
17
+ }, [submit]);
18
+ return (React.createElement(FormSubmit, { type: "button", onClick: publish, disabled: !canPublish }, "Publish changes"));
19
+ };
20
+ export default Publish;
@@ -0,0 +1 @@
1
+ export declare type Props = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -3,12 +3,12 @@ import Select from 'react-select';
3
3
  import Chevron from '../../icons/Chevron';
4
4
  import './index.scss';
5
5
  const ReactSelect = (props) => {
6
- const { className, showError = false, options, onChange, value, disabled = false, placeholder, } = props;
6
+ const { className, showError = false, options, onChange, value, disabled = false, placeholder, isSearchable = true, } = props;
7
7
  const classes = [
8
8
  className,
9
9
  'react-select',
10
10
  showError && 'react-select--error',
11
11
  ].filter(Boolean).join(' ');
12
- return (React.createElement(Select, { placeholder: placeholder, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, components: { DropdownIndicator: Chevron }, className: classes, classNamePrefix: "rs", options: options }));
12
+ return (React.createElement(Select, { placeholder: placeholder, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, components: { DropdownIndicator: Chevron }, className: classes, classNamePrefix: "rs", options: options, isSearchable: isSearchable }));
13
13
  };
14
14
  export default ReactSelect;
@@ -9,7 +9,8 @@ div.react-select {
9
9
  }
10
10
 
11
11
  .rs__value-container {
12
- padding: 0;
12
+ padding: base(.25) 0;
13
+ min-height: base(1.5);
13
14
 
14
15
  > * {
15
16
  margin-top: 0;
@@ -20,6 +21,8 @@ div.react-select {
20
21
 
21
22
  &--is-multi {
22
23
  margin-left: - base(.25);
24
+ padding-top: 0;
25
+ padding-bottom: 0;
23
26
  }
24
27
  }
25
28
 
@@ -40,9 +43,6 @@ div.react-select {
40
43
  }
41
44
 
42
45
  .rs__input {
43
- margin-top: base(.25);
44
- margin-bottom: base(.25);
45
-
46
46
  input {
47
47
  font-family: $font-body;
48
48
  width: 100% !important;
@@ -17,4 +17,5 @@ export declare type Props = {
17
17
  onInputChange?: (val: string) => void;
18
18
  onMenuScrollToBottom?: () => void;
19
19
  placeholder?: string;
20
+ isSearchable?: boolean;
20
21
  };
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
2
  import { Props } from './types';
3
- import './index.scss';
4
3
  declare const RenderTitle: React.FC<Props>;
5
4
  export default RenderTitle;
@@ -1,6 +1,6 @@
1
- import React, { Fragment } from 'react';
1
+ import React from 'react';
2
2
  import useTitle from '../../../hooks/useTitle';
3
- import './index.scss';
3
+ import IDLabel from '../IDLabel';
4
4
  const baseClass = 'render-title';
5
5
  const RenderTitle = (props) => {
6
6
  const { useAsTitle, title: titleFromProps, data, fallback = '[untitled]', } = props;
@@ -15,12 +15,9 @@ const RenderTitle = (props) => {
15
15
  title = fallback;
16
16
  title = titleFromProps || title;
17
17
  const idAsTitle = title === (data === null || data === void 0 ? void 0 : data.id);
18
- const classes = [
19
- baseClass,
20
- idAsTitle && `${baseClass}--id-as-title`,
21
- ].filter(Boolean).join(' ');
22
- return (React.createElement("span", { className: classes },
23
- idAsTitle && (React.createElement(Fragment, null, "ID:\u00A0\u00A0")),
24
- title));
18
+ if (idAsTitle) {
19
+ return (React.createElement(IDLabel, { id: data === null || data === void 0 ? void 0 : data.id }));
20
+ }
21
+ return (React.createElement("span", { className: baseClass }, title));
25
22
  };
26
23
  export default RenderTitle;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import './index.scss';
3
+ declare const SaveDraft: React.FC;
4
+ export default SaveDraft;
@@ -0,0 +1,39 @@
1
+ import React, { useCallback } from 'react';
2
+ import { useConfig } from '@payloadcms/config-provider';
3
+ import FormSubmit from '../../forms/Submit';
4
+ import { useForm, useFormModified } from '../../forms/Form/context';
5
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
6
+ import { useLocale } from '../../utilities/Locale';
7
+ import './index.scss';
8
+ const baseClass = 'save-draft';
9
+ const SaveDraft = () => {
10
+ const { serverURL, routes: { api } } = useConfig();
11
+ const { submit } = useForm();
12
+ const { collection, global, id } = useDocumentInfo();
13
+ const modified = useFormModified();
14
+ const locale = useLocale();
15
+ const canSaveDraft = modified;
16
+ const saveDraft = useCallback(() => {
17
+ const search = `?locale=${locale}&depth=0&fallback-locale=null&draft=true`;
18
+ let action;
19
+ let method = 'POST';
20
+ if (collection) {
21
+ action = `${serverURL}${api}/${collection.slug}${id ? `/${id}` : ''}${search}`;
22
+ if (id)
23
+ method = 'PUT';
24
+ }
25
+ if (global) {
26
+ action = `${serverURL}${api}/globals/${global.slug}${search}`;
27
+ }
28
+ submit({
29
+ action,
30
+ method,
31
+ skipValidation: true,
32
+ overrides: {
33
+ _status: 'draft',
34
+ },
35
+ });
36
+ }, [submit, collection, global, serverURL, api, locale, id]);
37
+ return (React.createElement(FormSubmit, { className: baseClass, type: "button", buttonStyle: "secondary", onClick: saveDraft, disabled: !canSaveDraft }, "Save draft"));
38
+ };
39
+ export default SaveDraft;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ import './index.scss';
4
+ declare const Status: React.FC<Props>;
5
+ export default Status;