@strapi/content-releases 0.0.0-experimental.d23f1485e5669cca1cee1bf5f8168b6b8109b78f → 0.0.0-experimental.d2ab08126cfde998bfecc0aad44d3ea2b29293a6

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/dist/_chunks/App-dLXY5ei3.js +1353 -0
  2. package/dist/_chunks/App-dLXY5ei3.js.map +1 -0
  3. package/dist/_chunks/App-jrh58sXY.mjs +1330 -0
  4. package/dist/_chunks/App-jrh58sXY.mjs.map +1 -0
  5. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs +51 -0
  6. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
  7. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js +51 -0
  8. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
  9. package/dist/_chunks/en-HrREghh3.js +86 -0
  10. package/dist/_chunks/en-HrREghh3.js.map +1 -0
  11. package/dist/_chunks/en-ltT1TlKQ.mjs +86 -0
  12. package/dist/_chunks/en-ltT1TlKQ.mjs.map +1 -0
  13. package/dist/_chunks/index-CVO0Rqdm.js +1336 -0
  14. package/dist/_chunks/index-CVO0Rqdm.js.map +1 -0
  15. package/dist/_chunks/index-PiOGBETy.mjs +1315 -0
  16. package/dist/_chunks/index-PiOGBETy.mjs.map +1 -0
  17. package/dist/admin/index.js +18 -148
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +18 -143
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/server/index.js +1784 -25
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/server/index.mjs +1763 -24
  24. package/dist/server/index.mjs.map +1 -1
  25. package/package.json +43 -39
  26. package/strapi-server.js +3 -0
  27. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +0 -6
  28. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +0 -1
  29. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +0 -4
  30. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +0 -1
  31. package/dist/admin/assets/purchase-page-illustration-light.svg.js +0 -6
  32. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +0 -1
  33. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +0 -4
  34. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +0 -1
  35. package/dist/admin/components/EntryValidationPopover.js +0 -310
  36. package/dist/admin/components/EntryValidationPopover.js.map +0 -1
  37. package/dist/admin/components/EntryValidationPopover.mjs +0 -308
  38. package/dist/admin/components/EntryValidationPopover.mjs.map +0 -1
  39. package/dist/admin/components/RelativeTime.js +0 -76
  40. package/dist/admin/components/RelativeTime.js.map +0 -1
  41. package/dist/admin/components/RelativeTime.mjs +0 -55
  42. package/dist/admin/components/RelativeTime.mjs.map +0 -1
  43. package/dist/admin/components/ReleaseAction.js +0 -203
  44. package/dist/admin/components/ReleaseAction.js.map +0 -1
  45. package/dist/admin/components/ReleaseAction.mjs +0 -201
  46. package/dist/admin/components/ReleaseAction.mjs.map +0 -1
  47. package/dist/admin/components/ReleaseActionMenu.js +0 -194
  48. package/dist/admin/components/ReleaseActionMenu.js.map +0 -1
  49. package/dist/admin/components/ReleaseActionMenu.mjs +0 -173
  50. package/dist/admin/components/ReleaseActionMenu.mjs.map +0 -1
  51. package/dist/admin/components/ReleaseActionModal.js +0 -268
  52. package/dist/admin/components/ReleaseActionModal.js.map +0 -1
  53. package/dist/admin/components/ReleaseActionModal.mjs +0 -244
  54. package/dist/admin/components/ReleaseActionModal.mjs.map +0 -1
  55. package/dist/admin/components/ReleaseActionOptions.js +0 -104
  56. package/dist/admin/components/ReleaseActionOptions.js.map +0 -1
  57. package/dist/admin/components/ReleaseActionOptions.mjs +0 -102
  58. package/dist/admin/components/ReleaseActionOptions.mjs.map +0 -1
  59. package/dist/admin/components/ReleaseListCell.js +0 -103
  60. package/dist/admin/components/ReleaseListCell.js.map +0 -1
  61. package/dist/admin/components/ReleaseListCell.mjs +0 -100
  62. package/dist/admin/components/ReleaseListCell.mjs.map +0 -1
  63. package/dist/admin/components/ReleaseModal.js +0 -323
  64. package/dist/admin/components/ReleaseModal.js.map +0 -1
  65. package/dist/admin/components/ReleaseModal.mjs +0 -302
  66. package/dist/admin/components/ReleaseModal.mjs.map +0 -1
  67. package/dist/admin/components/ReleasesPanel.js +0 -138
  68. package/dist/admin/components/ReleasesPanel.js.map +0 -1
  69. package/dist/admin/components/ReleasesPanel.mjs +0 -136
  70. package/dist/admin/components/ReleasesPanel.mjs.map +0 -1
  71. package/dist/admin/components/Widgets.js +0 -122
  72. package/dist/admin/components/Widgets.js.map +0 -1
  73. package/dist/admin/components/Widgets.mjs +0 -120
  74. package/dist/admin/components/Widgets.mjs.map +0 -1
  75. package/dist/admin/constants.js +0 -79
  76. package/dist/admin/constants.js.map +0 -1
  77. package/dist/admin/constants.mjs +0 -76
  78. package/dist/admin/constants.mjs.map +0 -1
  79. package/dist/admin/modules/hooks.js +0 -8
  80. package/dist/admin/modules/hooks.js.map +0 -1
  81. package/dist/admin/modules/hooks.mjs +0 -6
  82. package/dist/admin/modules/hooks.mjs.map +0 -1
  83. package/dist/admin/pages/App.js +0 -29
  84. package/dist/admin/pages/App.js.map +0 -1
  85. package/dist/admin/pages/App.mjs +0 -27
  86. package/dist/admin/pages/App.mjs.map +0 -1
  87. package/dist/admin/pages/PurchaseContentReleases.js +0 -192
  88. package/dist/admin/pages/PurchaseContentReleases.js.map +0 -1
  89. package/dist/admin/pages/PurchaseContentReleases.mjs +0 -190
  90. package/dist/admin/pages/PurchaseContentReleases.mjs.map +0 -1
  91. package/dist/admin/pages/ReleaseDetailsPage.js +0 -772
  92. package/dist/admin/pages/ReleaseDetailsPage.js.map +0 -1
  93. package/dist/admin/pages/ReleaseDetailsPage.mjs +0 -751
  94. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +0 -1
  95. package/dist/admin/pages/ReleasesPage.js +0 -403
  96. package/dist/admin/pages/ReleasesPage.js.map +0 -1
  97. package/dist/admin/pages/ReleasesPage.mjs +0 -381
  98. package/dist/admin/pages/ReleasesPage.mjs.map +0 -1
  99. package/dist/admin/pages/ReleasesSettingsPage.js +0 -225
  100. package/dist/admin/pages/ReleasesSettingsPage.js.map +0 -1
  101. package/dist/admin/pages/ReleasesSettingsPage.mjs +0 -223
  102. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +0 -1
  103. package/dist/admin/pluginId.js +0 -6
  104. package/dist/admin/pluginId.js.map +0 -1
  105. package/dist/admin/pluginId.mjs +0 -4
  106. package/dist/admin/pluginId.mjs.map +0 -1
  107. package/dist/admin/services/homepage.js +0 -24
  108. package/dist/admin/services/homepage.js.map +0 -1
  109. package/dist/admin/services/homepage.mjs +0 -22
  110. package/dist/admin/services/homepage.mjs.map +0 -1
  111. package/dist/admin/services/release.js +0 -474
  112. package/dist/admin/services/release.js.map +0 -1
  113. package/dist/admin/services/release.mjs +0 -457
  114. package/dist/admin/services/release.mjs.map +0 -1
  115. package/dist/admin/src/components/EntryValidationPopover.d.ts +0 -13
  116. package/dist/admin/src/components/RelativeTime.d.ts +0 -28
  117. package/dist/admin/src/components/ReleaseAction.d.ts +0 -3
  118. package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
  119. package/dist/admin/src/components/ReleaseActionModal.d.ts +0 -24
  120. package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
  121. package/dist/admin/src/components/ReleaseListCell.d.ts +0 -28
  122. package/dist/admin/src/components/ReleaseModal.d.ts +0 -17
  123. package/dist/admin/src/components/ReleasesPanel.d.ts +0 -3
  124. package/dist/admin/src/components/Widgets.d.ts +0 -2
  125. package/dist/admin/src/constants.d.ts +0 -77
  126. package/dist/admin/src/index.d.ts +0 -3
  127. package/dist/admin/src/modules/hooks.d.ts +0 -7
  128. package/dist/admin/src/pages/App.d.ts +0 -1
  129. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
  130. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
  131. package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
  132. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +0 -1
  133. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
  134. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
  135. package/dist/admin/src/pluginId.d.ts +0 -1
  136. package/dist/admin/src/services/homepage.d.ts +0 -9
  137. package/dist/admin/src/services/release.d.ts +0 -112
  138. package/dist/admin/src/store/hooks.d.ts +0 -7
  139. package/dist/admin/src/utils/api.d.ts +0 -6
  140. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  141. package/dist/admin/src/utils/time.d.ts +0 -10
  142. package/dist/admin/src/validation/schemas.d.ts +0 -6
  143. package/dist/admin/store/hooks.js +0 -8
  144. package/dist/admin/store/hooks.js.map +0 -1
  145. package/dist/admin/store/hooks.mjs +0 -6
  146. package/dist/admin/store/hooks.mjs.map +0 -1
  147. package/dist/admin/translations/en.json.js +0 -111
  148. package/dist/admin/translations/en.json.js.map +0 -1
  149. package/dist/admin/translations/en.json.mjs +0 -109
  150. package/dist/admin/translations/en.json.mjs.map +0 -1
  151. package/dist/admin/translations/uk.json.js +0 -103
  152. package/dist/admin/translations/uk.json.js.map +0 -1
  153. package/dist/admin/translations/uk.json.mjs +0 -101
  154. package/dist/admin/translations/uk.json.mjs.map +0 -1
  155. package/dist/admin/utils/api.js +0 -8
  156. package/dist/admin/utils/api.js.map +0 -1
  157. package/dist/admin/utils/api.mjs +0 -6
  158. package/dist/admin/utils/api.mjs.map +0 -1
  159. package/dist/admin/utils/prefixPluginTranslations.js +0 -11
  160. package/dist/admin/utils/prefixPluginTranslations.js.map +0 -1
  161. package/dist/admin/utils/prefixPluginTranslations.mjs +0 -9
  162. package/dist/admin/utils/prefixPluginTranslations.mjs.map +0 -1
  163. package/dist/admin/utils/time.js +0 -42
  164. package/dist/admin/utils/time.js.map +0 -1
  165. package/dist/admin/utils/time.mjs +0 -39
  166. package/dist/admin/utils/time.mjs.map +0 -1
  167. package/dist/admin/validation/schemas.js +0 -65
  168. package/dist/admin/validation/schemas.js.map +0 -1
  169. package/dist/admin/validation/schemas.mjs +0 -43
  170. package/dist/admin/validation/schemas.mjs.map +0 -1
  171. package/dist/server/bootstrap.js +0 -68
  172. package/dist/server/bootstrap.js.map +0 -1
  173. package/dist/server/bootstrap.mjs +0 -66
  174. package/dist/server/bootstrap.mjs.map +0 -1
  175. package/dist/server/constants.js +0 -74
  176. package/dist/server/constants.js.map +0 -1
  177. package/dist/server/constants.mjs +0 -69
  178. package/dist/server/constants.mjs.map +0 -1
  179. package/dist/server/content-types/index.js +0 -12
  180. package/dist/server/content-types/index.js.map +0 -1
  181. package/dist/server/content-types/index.mjs +0 -10
  182. package/dist/server/content-types/index.mjs.map +0 -1
  183. package/dist/server/content-types/release/index.js +0 -10
  184. package/dist/server/content-types/release/index.js.map +0 -1
  185. package/dist/server/content-types/release/index.mjs +0 -8
  186. package/dist/server/content-types/release/index.mjs.map +0 -1
  187. package/dist/server/content-types/release/schema.js +0 -58
  188. package/dist/server/content-types/release/schema.js.map +0 -1
  189. package/dist/server/content-types/release/schema.mjs +0 -56
  190. package/dist/server/content-types/release/schema.mjs.map +0 -1
  191. package/dist/server/content-types/release-action/index.js +0 -10
  192. package/dist/server/content-types/release-action/index.js.map +0 -1
  193. package/dist/server/content-types/release-action/index.mjs +0 -8
  194. package/dist/server/content-types/release-action/index.mjs.map +0 -1
  195. package/dist/server/content-types/release-action/schema.js +0 -55
  196. package/dist/server/content-types/release-action/schema.js.map +0 -1
  197. package/dist/server/content-types/release-action/schema.mjs +0 -53
  198. package/dist/server/content-types/release-action/schema.mjs.map +0 -1
  199. package/dist/server/controllers/homepage.js +0 -15
  200. package/dist/server/controllers/homepage.js.map +0 -1
  201. package/dist/server/controllers/homepage.mjs +0 -13
  202. package/dist/server/controllers/homepage.mjs.map +0 -1
  203. package/dist/server/controllers/index.js +0 -16
  204. package/dist/server/controllers/index.js.map +0 -1
  205. package/dist/server/controllers/index.mjs +0 -14
  206. package/dist/server/controllers/index.mjs.map +0 -1
  207. package/dist/server/controllers/release-action.js +0 -150
  208. package/dist/server/controllers/release-action.js.map +0 -1
  209. package/dist/server/controllers/release-action.mjs +0 -148
  210. package/dist/server/controllers/release-action.mjs.map +0 -1
  211. package/dist/server/controllers/release.js +0 -302
  212. package/dist/server/controllers/release.js.map +0 -1
  213. package/dist/server/controllers/release.mjs +0 -300
  214. package/dist/server/controllers/release.mjs.map +0 -1
  215. package/dist/server/controllers/settings.js +0 -37
  216. package/dist/server/controllers/settings.js.map +0 -1
  217. package/dist/server/controllers/settings.mjs +0 -35
  218. package/dist/server/controllers/settings.mjs.map +0 -1
  219. package/dist/server/controllers/validation/release-action.js +0 -34
  220. package/dist/server/controllers/validation/release-action.js.map +0 -1
  221. package/dist/server/controllers/validation/release-action.mjs +0 -30
  222. package/dist/server/controllers/validation/release-action.mjs.map +0 -1
  223. package/dist/server/controllers/validation/release.js +0 -26
  224. package/dist/server/controllers/validation/release.js.map +0 -1
  225. package/dist/server/controllers/validation/release.mjs +0 -22
  226. package/dist/server/controllers/validation/release.mjs.map +0 -1
  227. package/dist/server/controllers/validation/settings.js +0 -32
  228. package/dist/server/controllers/validation/settings.js.map +0 -1
  229. package/dist/server/controllers/validation/settings.mjs +0 -10
  230. package/dist/server/controllers/validation/settings.mjs.map +0 -1
  231. package/dist/server/destroy.js +0 -15
  232. package/dist/server/destroy.js.map +0 -1
  233. package/dist/server/destroy.mjs +0 -13
  234. package/dist/server/destroy.mjs.map +0 -1
  235. package/dist/server/middlewares/documents.js +0 -104
  236. package/dist/server/middlewares/documents.js.map +0 -1
  237. package/dist/server/middlewares/documents.mjs +0 -101
  238. package/dist/server/middlewares/documents.mjs.map +0 -1
  239. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +0 -51
  240. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +0 -1
  241. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +0 -49
  242. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +0 -1
  243. package/dist/server/migrations/index.js +0 -205
  244. package/dist/server/migrations/index.js.map +0 -1
  245. package/dist/server/migrations/index.mjs +0 -198
  246. package/dist/server/migrations/index.mjs.map +0 -1
  247. package/dist/server/register.js +0 -23
  248. package/dist/server/register.js.map +0 -1
  249. package/dist/server/register.mjs +0 -21
  250. package/dist/server/register.mjs.map +0 -1
  251. package/dist/server/routes/homepage.js +0 -25
  252. package/dist/server/routes/homepage.js.map +0 -1
  253. package/dist/server/routes/homepage.mjs +0 -23
  254. package/dist/server/routes/homepage.mjs.map +0 -1
  255. package/dist/server/routes/index.js +0 -16
  256. package/dist/server/routes/index.js.map +0 -1
  257. package/dist/server/routes/index.mjs +0 -14
  258. package/dist/server/routes/index.mjs.map +0 -1
  259. package/dist/server/routes/release-action.js +0 -100
  260. package/dist/server/routes/release-action.js.map +0 -1
  261. package/dist/server/routes/release-action.mjs +0 -98
  262. package/dist/server/routes/release-action.mjs.map +0 -1
  263. package/dist/server/routes/release.js +0 -154
  264. package/dist/server/routes/release.js.map +0 -1
  265. package/dist/server/routes/release.mjs +0 -152
  266. package/dist/server/routes/release.mjs.map +0 -1
  267. package/dist/server/routes/settings.js +0 -46
  268. package/dist/server/routes/settings.js.map +0 -1
  269. package/dist/server/routes/settings.mjs +0 -44
  270. package/dist/server/routes/settings.mjs.map +0 -1
  271. package/dist/server/services/homepage.js +0 -26
  272. package/dist/server/services/homepage.js.map +0 -1
  273. package/dist/server/services/homepage.mjs +0 -24
  274. package/dist/server/services/homepage.mjs.map +0 -1
  275. package/dist/server/services/index.js +0 -20
  276. package/dist/server/services/index.js.map +0 -1
  277. package/dist/server/services/index.mjs +0 -18
  278. package/dist/server/services/index.mjs.map +0 -1
  279. package/dist/server/services/release-action.js +0 -324
  280. package/dist/server/services/release-action.js.map +0 -1
  281. package/dist/server/services/release-action.mjs +0 -322
  282. package/dist/server/services/release-action.mjs.map +0 -1
  283. package/dist/server/services/release.js +0 -324
  284. package/dist/server/services/release.js.map +0 -1
  285. package/dist/server/services/release.mjs +0 -322
  286. package/dist/server/services/release.mjs.map +0 -1
  287. package/dist/server/services/scheduling.js +0 -74
  288. package/dist/server/services/scheduling.js.map +0 -1
  289. package/dist/server/services/scheduling.mjs +0 -72
  290. package/dist/server/services/scheduling.mjs.map +0 -1
  291. package/dist/server/services/settings.js +0 -34
  292. package/dist/server/services/settings.js.map +0 -1
  293. package/dist/server/services/settings.mjs +0 -32
  294. package/dist/server/services/settings.mjs.map +0 -1
  295. package/dist/server/services/validation.js +0 -91
  296. package/dist/server/services/validation.js.map +0 -1
  297. package/dist/server/services/validation.mjs +0 -86
  298. package/dist/server/services/validation.mjs.map +0 -1
  299. package/dist/server/src/bootstrap.d.ts +0 -5
  300. package/dist/server/src/bootstrap.d.ts.map +0 -1
  301. package/dist/server/src/constants.d.ts +0 -21
  302. package/dist/server/src/constants.d.ts.map +0 -1
  303. package/dist/server/src/content-types/index.d.ts +0 -97
  304. package/dist/server/src/content-types/index.d.ts.map +0 -1
  305. package/dist/server/src/content-types/release/index.d.ts +0 -48
  306. package/dist/server/src/content-types/release/index.d.ts.map +0 -1
  307. package/dist/server/src/content-types/release/schema.d.ts +0 -47
  308. package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
  309. package/dist/server/src/content-types/release-action/index.d.ts +0 -48
  310. package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
  311. package/dist/server/src/content-types/release-action/schema.d.ts +0 -47
  312. package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
  313. package/dist/server/src/controllers/homepage.d.ts +0 -6
  314. package/dist/server/src/controllers/homepage.d.ts.map +0 -1
  315. package/dist/server/src/controllers/index.d.ts +0 -28
  316. package/dist/server/src/controllers/index.d.ts.map +0 -1
  317. package/dist/server/src/controllers/release-action.d.ts +0 -10
  318. package/dist/server/src/controllers/release-action.d.ts.map +0 -1
  319. package/dist/server/src/controllers/release.d.ts +0 -18
  320. package/dist/server/src/controllers/release.d.ts.map +0 -1
  321. package/dist/server/src/controllers/settings.d.ts +0 -11
  322. package/dist/server/src/controllers/settings.d.ts.map +0 -1
  323. package/dist/server/src/controllers/validation/release-action.d.ts +0 -14
  324. package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
  325. package/dist/server/src/controllers/validation/release.d.ts +0 -4
  326. package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
  327. package/dist/server/src/controllers/validation/settings.d.ts +0 -3
  328. package/dist/server/src/controllers/validation/settings.d.ts.map +0 -1
  329. package/dist/server/src/destroy.d.ts +0 -5
  330. package/dist/server/src/destroy.d.ts.map +0 -1
  331. package/dist/server/src/index.d.ts +0 -2120
  332. package/dist/server/src/index.d.ts.map +0 -1
  333. package/dist/server/src/middlewares/documents.d.ts +0 -6
  334. package/dist/server/src/middlewares/documents.d.ts.map +0 -1
  335. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +0 -9
  336. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +0 -1
  337. package/dist/server/src/migrations/index.d.ts +0 -13
  338. package/dist/server/src/migrations/index.d.ts.map +0 -1
  339. package/dist/server/src/register.d.ts +0 -5
  340. package/dist/server/src/register.d.ts.map +0 -1
  341. package/dist/server/src/routes/homepage.d.ts +0 -4
  342. package/dist/server/src/routes/homepage.d.ts.map +0 -1
  343. package/dist/server/src/routes/index.d.ts +0 -52
  344. package/dist/server/src/routes/index.d.ts.map +0 -1
  345. package/dist/server/src/routes/release-action.d.ts +0 -18
  346. package/dist/server/src/routes/release-action.d.ts.map +0 -1
  347. package/dist/server/src/routes/release.d.ts +0 -18
  348. package/dist/server/src/routes/release.d.ts.map +0 -1
  349. package/dist/server/src/routes/settings.d.ts +0 -18
  350. package/dist/server/src/routes/settings.d.ts.map +0 -1
  351. package/dist/server/src/services/homepage.d.ts +0 -9
  352. package/dist/server/src/services/homepage.d.ts.map +0 -1
  353. package/dist/server/src/services/index.d.ts +0 -1829
  354. package/dist/server/src/services/index.d.ts.map +0 -1
  355. package/dist/server/src/services/release-action.d.ts +0 -34
  356. package/dist/server/src/services/release-action.d.ts.map +0 -1
  357. package/dist/server/src/services/release.d.ts +0 -31
  358. package/dist/server/src/services/release.d.ts.map +0 -1
  359. package/dist/server/src/services/scheduling.d.ts +0 -17
  360. package/dist/server/src/services/scheduling.d.ts.map +0 -1
  361. package/dist/server/src/services/settings.d.ts +0 -13
  362. package/dist/server/src/services/settings.d.ts.map +0 -1
  363. package/dist/server/src/services/validation.d.ts +0 -18
  364. package/dist/server/src/services/validation.d.ts.map +0 -1
  365. package/dist/server/src/utils/index.d.ts +0 -35
  366. package/dist/server/src/utils/index.d.ts.map +0 -1
  367. package/dist/server/utils/index.js +0 -94
  368. package/dist/server/utils/index.js.map +0 -1
  369. package/dist/server/utils/index.mjs +0 -88
  370. package/dist/server/utils/index.mjs.map +0 -1
  371. package/dist/shared/contracts/homepage.d.ts +0 -11
  372. package/dist/shared/contracts/homepage.d.ts.map +0 -1
  373. package/dist/shared/contracts/release-actions.d.ts +0 -136
  374. package/dist/shared/contracts/release-actions.d.ts.map +0 -1
  375. package/dist/shared/contracts/releases.d.ts +0 -183
  376. package/dist/shared/contracts/releases.d.ts.map +0 -1
  377. package/dist/shared/contracts/settings.d.ts +0 -38
  378. package/dist/shared/contracts/settings.d.ts.map +0 -1
  379. package/dist/shared/types.d.ts +0 -24
  380. package/dist/shared/types.d.ts.map +0 -1
@@ -1,310 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- require('react');
5
- var strapiAdmin = require('@strapi/content-manager/strapi-admin');
6
- var designSystem = require('@strapi/design-system');
7
- var icons = require('@strapi/icons');
8
- var qs = require('qs');
9
- var reactIntl = require('react-intl');
10
- var reactRouterDom = require('react-router-dom');
11
- var styledComponents = require('styled-components');
12
-
13
- const StyledPopoverFlex = styledComponents.styled(designSystem.Flex)`
14
- width: 100%;
15
- max-width: 256px;
16
-
17
- & > * {
18
- border-bottom: 1px solid ${({ theme })=>theme.colors.neutral150};
19
- }
20
-
21
- & > *:last-child {
22
- border-bottom: none;
23
- }
24
- `;
25
- const ButtonContent = styledComponents.styled(designSystem.Flex)`
26
- svg {
27
- fill: currentColor;
28
- }
29
- `;
30
- const CustomStatusButton = ({ children, icon, color })=>{
31
- return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Trigger, {
32
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
33
- variant: "ghost",
34
- endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.CaretDown, {}),
35
- children: /*#__PURE__*/ jsxRuntime.jsxs(ButtonContent, {
36
- color: color,
37
- gap: 2,
38
- children: [
39
- icon,
40
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
41
- textColor: color,
42
- variant: "omega",
43
- fontWeight: "bold",
44
- children: children
45
- })
46
- ]
47
- })
48
- })
49
- });
50
- };
51
- const EntryStatusTrigger = ({ action, status, hasErrors, requiredStage, entryStage })=>{
52
- const { formatMessage } = reactIntl.useIntl();
53
- if (action === 'publish') {
54
- if (hasErrors || requiredStage && requiredStage.id !== entryStage?.id) {
55
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
56
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.CrossCircle, {}),
57
- color: "danger600",
58
- children: formatMessage({
59
- id: 'content-releases.pages.ReleaseDetails.entry-validation.not-ready',
60
- defaultMessage: 'Not ready to publish'
61
- })
62
- });
63
- }
64
- if (status === 'draft') {
65
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
66
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {}),
67
- color: "success600",
68
- children: formatMessage({
69
- id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish',
70
- defaultMessage: 'Ready to publish'
71
- })
72
- });
73
- }
74
- if (status === 'modified') {
75
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
76
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.ArrowsCounterClockwise, {}),
77
- color: "alternative600",
78
- children: formatMessage({
79
- id: 'content-releases.pages.ReleaseDetails.entry-validation.modified',
80
- defaultMessage: 'Ready to publish changes'
81
- })
82
- });
83
- }
84
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
85
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {}),
86
- color: "success600",
87
- children: formatMessage({
88
- id: 'content-releases.pages.ReleaseDetails.entry-validation.already-published',
89
- defaultMessage: 'Already published'
90
- })
91
- });
92
- }
93
- if (status === 'published') {
94
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
95
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {}),
96
- color: "success600",
97
- children: formatMessage({
98
- id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish',
99
- defaultMessage: 'Ready to unpublish'
100
- })
101
- });
102
- }
103
- return /*#__PURE__*/ jsxRuntime.jsx(CustomStatusButton, {
104
- icon: /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {}),
105
- color: "success600",
106
- children: formatMessage({
107
- id: 'content-releases.pages.ReleaseDetails.entry-validation.already-unpublished',
108
- defaultMessage: 'Already unpublished'
109
- })
110
- });
111
- };
112
- const FieldsValidation = ({ hasErrors, errors, kind, contentTypeUid, documentId, locale })=>{
113
- const { formatMessage } = reactIntl.useIntl();
114
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
115
- direction: "column",
116
- gap: 1,
117
- width: "100%",
118
- padding: 5,
119
- children: [
120
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
121
- gap: 2,
122
- width: "100%",
123
- children: [
124
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
125
- fontWeight: "bold",
126
- children: formatMessage({
127
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields',
128
- defaultMessage: 'Fields'
129
- })
130
- }),
131
- hasErrors ? /*#__PURE__*/ jsxRuntime.jsx(icons.CrossCircle, {
132
- fill: "danger600"
133
- }) : /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {
134
- fill: "success600"
135
- })
136
- ]
137
- }),
138
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
139
- width: "100%",
140
- textColor: "neutral600",
141
- children: hasErrors ? formatMessage({
142
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.error',
143
- defaultMessage: '{errors} errors on fields.'
144
- }, {
145
- errors: errors ? Object.keys(errors).length : 0
146
- }) : formatMessage({
147
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.success',
148
- defaultMessage: 'All fields are filled correctly.'
149
- })
150
- }),
151
- hasErrors && /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
152
- tag: reactRouterDom.Link,
153
- to: {
154
- pathname: `/content-manager/${kind === 'collectionType' ? 'collection-types' : 'single-types'}/${contentTypeUid}/${documentId}`,
155
- search: locale ? qs.stringify({
156
- plugins: {
157
- i18n: {
158
- locale
159
- }
160
- }
161
- }) : ''
162
- },
163
- variant: "secondary",
164
- fullWidth: true,
165
- state: {
166
- forceValidation: true
167
- },
168
- children: formatMessage({
169
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.see-errors',
170
- defaultMessage: 'See errors'
171
- })
172
- })
173
- ]
174
- });
175
- };
176
- const getReviewStageIcon = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage })=>{
177
- if (!contentTypeHasReviewWorkflow) {
178
- return /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {
179
- fill: "neutral200"
180
- });
181
- }
182
- if (requiredStage && requiredStage.id !== entryStage?.id) {
183
- return /*#__PURE__*/ jsxRuntime.jsx(icons.CrossCircle, {
184
- fill: "danger600"
185
- });
186
- }
187
- return /*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {
188
- fill: "success600"
189
- });
190
- };
191
- const getReviewStageMessage = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage, formatMessage })=>{
192
- if (!contentTypeHasReviewWorkflow) {
193
- return formatMessage({
194
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-enabled',
195
- defaultMessage: 'This entry is not associated to any workflow.'
196
- });
197
- }
198
- if (requiredStage && requiredStage.id !== entryStage?.id) {
199
- return formatMessage({
200
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-ready',
201
- defaultMessage: 'This entry is not at the required stage for publishing. ({stageName})'
202
- }, {
203
- stageName: requiredStage?.name ?? ''
204
- });
205
- }
206
- if (requiredStage && requiredStage.id === entryStage?.id) {
207
- return formatMessage({
208
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.ready',
209
- defaultMessage: 'This entry is at the required stage for publishing. ({stageName})'
210
- }, {
211
- stageName: requiredStage?.name ?? ''
212
- });
213
- }
214
- return formatMessage({
215
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.stage-not-required',
216
- defaultMessage: 'No required stage for publication'
217
- });
218
- };
219
- const ReviewStageValidation = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage })=>{
220
- const { formatMessage } = reactIntl.useIntl();
221
- const Icon = getReviewStageIcon({
222
- contentTypeHasReviewWorkflow,
223
- requiredStage,
224
- entryStage
225
- });
226
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
227
- direction: "column",
228
- gap: 1,
229
- width: "100%",
230
- padding: 5,
231
- children: [
232
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
233
- gap: 2,
234
- width: "100%",
235
- children: [
236
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
237
- fontWeight: "bold",
238
- children: formatMessage({
239
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage',
240
- defaultMessage: 'Review stage'
241
- })
242
- }),
243
- Icon
244
- ]
245
- }),
246
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
247
- textColor: "neutral600",
248
- children: getReviewStageMessage({
249
- contentTypeHasReviewWorkflow,
250
- requiredStage,
251
- entryStage,
252
- formatMessage
253
- })
254
- })
255
- ]
256
- });
257
- };
258
- const EntryValidationPopover = ({ schema, entry, status, action })=>{
259
- const { validate, isLoading } = strapiAdmin.unstable_useDocument({
260
- collectionType: schema?.kind ?? '',
261
- model: schema?.uid ?? ''
262
- }, {
263
- // useDocument makes a request to get more data about the entry, but we only want to have the validation function so we skip the request
264
- skip: true
265
- });
266
- // Validation errors
267
- const errors = isLoading ? null : validate(entry);
268
- const hasErrors = errors ? Object.keys(errors).length > 0 : false;
269
- // Entry stage
270
- const contentTypeHasReviewWorkflow = schema?.hasReviewWorkflow ?? false;
271
- const requiredStage = schema?.stageRequiredToPublish;
272
- const entryStage = entry.strapi_stage;
273
- if (isLoading) {
274
- return null;
275
- }
276
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Root, {
277
- children: [
278
- /*#__PURE__*/ jsxRuntime.jsx(EntryStatusTrigger, {
279
- action: action,
280
- status: status,
281
- hasErrors: hasErrors,
282
- requiredStage: requiredStage,
283
- entryStage: entryStage
284
- }),
285
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Content, {
286
- children: /*#__PURE__*/ jsxRuntime.jsxs(StyledPopoverFlex, {
287
- direction: "column",
288
- children: [
289
- /*#__PURE__*/ jsxRuntime.jsx(FieldsValidation, {
290
- hasErrors: hasErrors,
291
- errors: errors,
292
- contentTypeUid: schema?.uid,
293
- kind: schema?.kind,
294
- documentId: entry.documentId,
295
- locale: entry.locale
296
- }),
297
- /*#__PURE__*/ jsxRuntime.jsx(ReviewStageValidation, {
298
- contentTypeHasReviewWorkflow: contentTypeHasReviewWorkflow,
299
- requiredStage: requiredStage,
300
- entryStage: entryStage
301
- })
302
- ]
303
- })
304
- })
305
- ]
306
- });
307
- };
308
-
309
- exports.EntryValidationPopover = EntryValidationPopover;
310
- //# sourceMappingURL=EntryValidationPopover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntryValidationPopover.js","sources":["../../../admin/src/components/EntryValidationPopover.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, FormValues } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport { Button, LinkButton, Flex, Typography, Popover } from '@strapi/design-system';\nimport { CheckCircle, CrossCircle, ArrowsCounterClockwise, CaretDown } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl, MessageDescriptor } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport type {\n ReleaseAction,\n ReleaseActionEntry,\n Stage,\n} from '../../../shared/contracts/release-actions';\nimport type { Struct } from '@strapi/types';\n\nconst StyledPopoverFlex = styled(Flex)`\n width: 100%;\n max-width: 256px;\n\n & > * {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n\n & > *:last-child {\n border-bottom: none;\n }\n`;\n\nconst ButtonContent = styled(Flex)`\n svg {\n fill: currentColor;\n }\n`;\n\nconst CustomStatusButton = ({\n children,\n icon,\n color,\n}: {\n icon: React.ReactElement;\n color: string;\n} & React.PropsWithChildren) => {\n return (\n <Popover.Trigger>\n <Button variant=\"ghost\" endIcon={<CaretDown />}>\n <ButtonContent color={color} gap={2}>\n {icon}\n <Typography textColor={color} variant=\"omega\" fontWeight=\"bold\">\n {children}\n </Typography>\n </ButtonContent>\n </Button>\n </Popover.Trigger>\n );\n};\n\ninterface EntryValidationPopoverProps {\n action: ReleaseAction['type'];\n schema?: Struct.ContentTypeSchema & {\n hasReviewWorkflow: boolean;\n stageRequiredToPublish?: Stage;\n };\n entry: ReleaseActionEntry;\n status: ReleaseAction['status'];\n}\n\ninterface ValidationStatusProps {\n action: ReleaseAction['type'];\n status: ReleaseAction['status'];\n hasErrors: boolean | null;\n requiredStage?: Stage;\n entryStage?: Stage;\n}\n\nconst EntryStatusTrigger = ({\n action,\n status,\n hasErrors,\n requiredStage,\n entryStage,\n}: ValidationStatusProps) => {\n const { formatMessage } = useIntl();\n\n if (action === 'publish') {\n if (hasErrors || (requiredStage && requiredStage.id !== entryStage?.id)) {\n return (\n <CustomStatusButton icon={<CrossCircle />} color=\"danger600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.not-ready',\n defaultMessage: 'Not ready to publish',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'draft') {\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'modified') {\n return (\n <CustomStatusButton icon={<ArrowsCounterClockwise />} color=\"alternative600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </CustomStatusButton>\n );\n }\n\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.already-published',\n defaultMessage: 'Already published',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'published') {\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish',\n defaultMessage: 'Ready to unpublish',\n })}\n </CustomStatusButton>\n );\n }\n\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.already-unpublished',\n defaultMessage: 'Already unpublished',\n })}\n </CustomStatusButton>\n );\n};\n\ninterface FieldsValidationProps {\n hasErrors: boolean;\n errors: FormErrors<FormValues> | null;\n kind?: string;\n contentTypeUid?: string;\n documentId?: string;\n locale?: string;\n}\n\nconst FieldsValidation = ({\n hasErrors,\n errors,\n kind,\n contentTypeUid,\n documentId,\n locale,\n}: FieldsValidationProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={1} width=\"100%\" padding={5}>\n <Flex gap={2} width=\"100%\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields',\n defaultMessage: 'Fields',\n })}\n </Typography>\n {hasErrors ? <CrossCircle fill=\"danger600\" /> : <CheckCircle fill=\"success600\" />}\n </Flex>\n <Typography width=\"100%\" textColor=\"neutral600\">\n {hasErrors\n ? formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.error',\n defaultMessage: '{errors} errors on fields.',\n },\n { errors: errors ? Object.keys(errors).length : 0 }\n )\n : formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.success',\n defaultMessage: 'All fields are filled correctly.',\n })}\n </Typography>\n {hasErrors && (\n <LinkButton\n tag={Link}\n to={{\n pathname: `/content-manager/${kind === 'collectionType' ? 'collection-types' : 'single-types'}/${contentTypeUid}/${documentId}`,\n search: locale\n ? stringify({\n plugins: {\n i18n: {\n locale,\n },\n },\n })\n : '',\n }}\n variant=\"secondary\"\n fullWidth\n state={{ forceValidation: true }}\n >\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.see-errors',\n defaultMessage: 'See errors',\n })}\n </LinkButton>\n )}\n </Flex>\n );\n};\n\nconst getReviewStageIcon = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n}) => {\n if (!contentTypeHasReviewWorkflow) {\n return <CheckCircle fill=\"neutral200\" />;\n }\n if (requiredStage && requiredStage.id !== entryStage?.id) {\n return <CrossCircle fill=\"danger600\" />;\n }\n return <CheckCircle fill=\"success600\" />;\n};\n\nconst getReviewStageMessage = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n formatMessage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n formatMessage: (messageDescriptor: MessageDescriptor, values?: Record<string, string>) => string;\n}) => {\n if (!contentTypeHasReviewWorkflow) {\n return formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-enabled',\n defaultMessage: 'This entry is not associated to any workflow.',\n });\n }\n\n if (requiredStage && requiredStage.id !== entryStage?.id) {\n return formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-ready',\n defaultMessage: 'This entry is not at the required stage for publishing. ({stageName})',\n },\n {\n stageName: requiredStage?.name ?? '',\n }\n );\n }\n\n if (requiredStage && requiredStage.id === entryStage?.id) {\n return formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.ready',\n defaultMessage: 'This entry is at the required stage for publishing. ({stageName})',\n },\n {\n stageName: requiredStage?.name ?? '',\n }\n );\n }\n\n return formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.stage-not-required',\n defaultMessage: 'No required stage for publication',\n });\n};\n\nconst ReviewStageValidation = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n}) => {\n const { formatMessage } = useIntl();\n\n const Icon = getReviewStageIcon({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n });\n\n return (\n <Flex direction=\"column\" gap={1} width=\"100%\" padding={5}>\n <Flex gap={2} width=\"100%\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage',\n defaultMessage: 'Review stage',\n })}\n </Typography>\n {Icon}\n </Flex>\n <Typography textColor=\"neutral600\">\n {getReviewStageMessage({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n formatMessage,\n })}\n </Typography>\n </Flex>\n );\n};\n\nexport const EntryValidationPopover = ({\n schema,\n entry,\n status,\n action,\n}: EntryValidationPopoverProps) => {\n const { validate, isLoading } = unstable_useDocument(\n {\n collectionType: schema?.kind ?? '',\n model: schema?.uid ?? '',\n },\n {\n // useDocument makes a request to get more data about the entry, but we only want to have the validation function so we skip the request\n skip: true,\n }\n );\n\n // Validation errors\n const errors = isLoading ? null : validate(entry);\n const hasErrors = errors ? Object.keys(errors).length > 0 : false;\n\n // Entry stage\n const contentTypeHasReviewWorkflow = schema?.hasReviewWorkflow ?? false;\n const requiredStage = schema?.stageRequiredToPublish;\n const entryStage = entry.strapi_stage;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <Popover.Root>\n <EntryStatusTrigger\n action={action}\n status={status}\n hasErrors={hasErrors}\n requiredStage={requiredStage}\n entryStage={entryStage}\n />\n <Popover.Content>\n <StyledPopoverFlex direction=\"column\">\n <FieldsValidation\n hasErrors={hasErrors}\n errors={errors}\n contentTypeUid={schema?.uid}\n kind={schema?.kind}\n documentId={entry.documentId}\n locale={entry.locale}\n />\n <ReviewStageValidation\n contentTypeHasReviewWorkflow={contentTypeHasReviewWorkflow}\n requiredStage={requiredStage}\n entryStage={entryStage}\n />\n </StyledPopoverFlex>\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["StyledPopoverFlex","styled","Flex","theme","colors","neutral150","ButtonContent","CustomStatusButton","children","icon","color","_jsx","Popover","Trigger","Button","variant","endIcon","CaretDown","_jsxs","gap","Typography","textColor","fontWeight","EntryStatusTrigger","action","status","hasErrors","requiredStage","entryStage","formatMessage","useIntl","id","CrossCircle","defaultMessage","CheckCircle","ArrowsCounterClockwise","FieldsValidation","errors","kind","contentTypeUid","documentId","locale","direction","width","padding","fill","Object","keys","length","LinkButton","tag","Link","to","pathname","search","stringify","plugins","i18n","fullWidth","state","forceValidation","getReviewStageIcon","contentTypeHasReviewWorkflow","getReviewStageMessage","stageName","name","ReviewStageValidation","Icon","EntryValidationPopover","schema","entry","validate","isLoading","unstable_useDocument","collectionType","model","uid","skip","hasReviewWorkflow","stageRequiredToPublish","strapi_stage","Root","Content"],"mappings":"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"}
@@ -1,308 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import 'react';
3
- import { unstable_useDocument } from '@strapi/content-manager/strapi-admin';
4
- import { Flex, Popover, Typography, LinkButton, Button } from '@strapi/design-system';
5
- import { CrossCircle, CheckCircle, ArrowsCounterClockwise, CaretDown } from '@strapi/icons';
6
- import { stringify } from 'qs';
7
- import { useIntl } from 'react-intl';
8
- import { Link } from 'react-router-dom';
9
- import { styled } from 'styled-components';
10
-
11
- const StyledPopoverFlex = styled(Flex)`
12
- width: 100%;
13
- max-width: 256px;
14
-
15
- & > * {
16
- border-bottom: 1px solid ${({ theme })=>theme.colors.neutral150};
17
- }
18
-
19
- & > *:last-child {
20
- border-bottom: none;
21
- }
22
- `;
23
- const ButtonContent = styled(Flex)`
24
- svg {
25
- fill: currentColor;
26
- }
27
- `;
28
- const CustomStatusButton = ({ children, icon, color })=>{
29
- return /*#__PURE__*/ jsx(Popover.Trigger, {
30
- children: /*#__PURE__*/ jsx(Button, {
31
- variant: "ghost",
32
- endIcon: /*#__PURE__*/ jsx(CaretDown, {}),
33
- children: /*#__PURE__*/ jsxs(ButtonContent, {
34
- color: color,
35
- gap: 2,
36
- children: [
37
- icon,
38
- /*#__PURE__*/ jsx(Typography, {
39
- textColor: color,
40
- variant: "omega",
41
- fontWeight: "bold",
42
- children: children
43
- })
44
- ]
45
- })
46
- })
47
- });
48
- };
49
- const EntryStatusTrigger = ({ action, status, hasErrors, requiredStage, entryStage })=>{
50
- const { formatMessage } = useIntl();
51
- if (action === 'publish') {
52
- if (hasErrors || requiredStage && requiredStage.id !== entryStage?.id) {
53
- return /*#__PURE__*/ jsx(CustomStatusButton, {
54
- icon: /*#__PURE__*/ jsx(CrossCircle, {}),
55
- color: "danger600",
56
- children: formatMessage({
57
- id: 'content-releases.pages.ReleaseDetails.entry-validation.not-ready',
58
- defaultMessage: 'Not ready to publish'
59
- })
60
- });
61
- }
62
- if (status === 'draft') {
63
- return /*#__PURE__*/ jsx(CustomStatusButton, {
64
- icon: /*#__PURE__*/ jsx(CheckCircle, {}),
65
- color: "success600",
66
- children: formatMessage({
67
- id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish',
68
- defaultMessage: 'Ready to publish'
69
- })
70
- });
71
- }
72
- if (status === 'modified') {
73
- return /*#__PURE__*/ jsx(CustomStatusButton, {
74
- icon: /*#__PURE__*/ jsx(ArrowsCounterClockwise, {}),
75
- color: "alternative600",
76
- children: formatMessage({
77
- id: 'content-releases.pages.ReleaseDetails.entry-validation.modified',
78
- defaultMessage: 'Ready to publish changes'
79
- })
80
- });
81
- }
82
- return /*#__PURE__*/ jsx(CustomStatusButton, {
83
- icon: /*#__PURE__*/ jsx(CheckCircle, {}),
84
- color: "success600",
85
- children: formatMessage({
86
- id: 'content-releases.pages.ReleaseDetails.entry-validation.already-published',
87
- defaultMessage: 'Already published'
88
- })
89
- });
90
- }
91
- if (status === 'published') {
92
- return /*#__PURE__*/ jsx(CustomStatusButton, {
93
- icon: /*#__PURE__*/ jsx(CheckCircle, {}),
94
- color: "success600",
95
- children: formatMessage({
96
- id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish',
97
- defaultMessage: 'Ready to unpublish'
98
- })
99
- });
100
- }
101
- return /*#__PURE__*/ jsx(CustomStatusButton, {
102
- icon: /*#__PURE__*/ jsx(CheckCircle, {}),
103
- color: "success600",
104
- children: formatMessage({
105
- id: 'content-releases.pages.ReleaseDetails.entry-validation.already-unpublished',
106
- defaultMessage: 'Already unpublished'
107
- })
108
- });
109
- };
110
- const FieldsValidation = ({ hasErrors, errors, kind, contentTypeUid, documentId, locale })=>{
111
- const { formatMessage } = useIntl();
112
- return /*#__PURE__*/ jsxs(Flex, {
113
- direction: "column",
114
- gap: 1,
115
- width: "100%",
116
- padding: 5,
117
- children: [
118
- /*#__PURE__*/ jsxs(Flex, {
119
- gap: 2,
120
- width: "100%",
121
- children: [
122
- /*#__PURE__*/ jsx(Typography, {
123
- fontWeight: "bold",
124
- children: formatMessage({
125
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields',
126
- defaultMessage: 'Fields'
127
- })
128
- }),
129
- hasErrors ? /*#__PURE__*/ jsx(CrossCircle, {
130
- fill: "danger600"
131
- }) : /*#__PURE__*/ jsx(CheckCircle, {
132
- fill: "success600"
133
- })
134
- ]
135
- }),
136
- /*#__PURE__*/ jsx(Typography, {
137
- width: "100%",
138
- textColor: "neutral600",
139
- children: hasErrors ? formatMessage({
140
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.error',
141
- defaultMessage: '{errors} errors on fields.'
142
- }, {
143
- errors: errors ? Object.keys(errors).length : 0
144
- }) : formatMessage({
145
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.success',
146
- defaultMessage: 'All fields are filled correctly.'
147
- })
148
- }),
149
- hasErrors && /*#__PURE__*/ jsx(LinkButton, {
150
- tag: Link,
151
- to: {
152
- pathname: `/content-manager/${kind === 'collectionType' ? 'collection-types' : 'single-types'}/${contentTypeUid}/${documentId}`,
153
- search: locale ? stringify({
154
- plugins: {
155
- i18n: {
156
- locale
157
- }
158
- }
159
- }) : ''
160
- },
161
- variant: "secondary",
162
- fullWidth: true,
163
- state: {
164
- forceValidation: true
165
- },
166
- children: formatMessage({
167
- id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.see-errors',
168
- defaultMessage: 'See errors'
169
- })
170
- })
171
- ]
172
- });
173
- };
174
- const getReviewStageIcon = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage })=>{
175
- if (!contentTypeHasReviewWorkflow) {
176
- return /*#__PURE__*/ jsx(CheckCircle, {
177
- fill: "neutral200"
178
- });
179
- }
180
- if (requiredStage && requiredStage.id !== entryStage?.id) {
181
- return /*#__PURE__*/ jsx(CrossCircle, {
182
- fill: "danger600"
183
- });
184
- }
185
- return /*#__PURE__*/ jsx(CheckCircle, {
186
- fill: "success600"
187
- });
188
- };
189
- const getReviewStageMessage = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage, formatMessage })=>{
190
- if (!contentTypeHasReviewWorkflow) {
191
- return formatMessage({
192
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-enabled',
193
- defaultMessage: 'This entry is not associated to any workflow.'
194
- });
195
- }
196
- if (requiredStage && requiredStage.id !== entryStage?.id) {
197
- return formatMessage({
198
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-ready',
199
- defaultMessage: 'This entry is not at the required stage for publishing. ({stageName})'
200
- }, {
201
- stageName: requiredStage?.name ?? ''
202
- });
203
- }
204
- if (requiredStage && requiredStage.id === entryStage?.id) {
205
- return formatMessage({
206
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.ready',
207
- defaultMessage: 'This entry is at the required stage for publishing. ({stageName})'
208
- }, {
209
- stageName: requiredStage?.name ?? ''
210
- });
211
- }
212
- return formatMessage({
213
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.stage-not-required',
214
- defaultMessage: 'No required stage for publication'
215
- });
216
- };
217
- const ReviewStageValidation = ({ contentTypeHasReviewWorkflow, requiredStage, entryStage })=>{
218
- const { formatMessage } = useIntl();
219
- const Icon = getReviewStageIcon({
220
- contentTypeHasReviewWorkflow,
221
- requiredStage,
222
- entryStage
223
- });
224
- return /*#__PURE__*/ jsxs(Flex, {
225
- direction: "column",
226
- gap: 1,
227
- width: "100%",
228
- padding: 5,
229
- children: [
230
- /*#__PURE__*/ jsxs(Flex, {
231
- gap: 2,
232
- width: "100%",
233
- children: [
234
- /*#__PURE__*/ jsx(Typography, {
235
- fontWeight: "bold",
236
- children: formatMessage({
237
- id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage',
238
- defaultMessage: 'Review stage'
239
- })
240
- }),
241
- Icon
242
- ]
243
- }),
244
- /*#__PURE__*/ jsx(Typography, {
245
- textColor: "neutral600",
246
- children: getReviewStageMessage({
247
- contentTypeHasReviewWorkflow,
248
- requiredStage,
249
- entryStage,
250
- formatMessage
251
- })
252
- })
253
- ]
254
- });
255
- };
256
- const EntryValidationPopover = ({ schema, entry, status, action })=>{
257
- const { validate, isLoading } = unstable_useDocument({
258
- collectionType: schema?.kind ?? '',
259
- model: schema?.uid ?? ''
260
- }, {
261
- // useDocument makes a request to get more data about the entry, but we only want to have the validation function so we skip the request
262
- skip: true
263
- });
264
- // Validation errors
265
- const errors = isLoading ? null : validate(entry);
266
- const hasErrors = errors ? Object.keys(errors).length > 0 : false;
267
- // Entry stage
268
- const contentTypeHasReviewWorkflow = schema?.hasReviewWorkflow ?? false;
269
- const requiredStage = schema?.stageRequiredToPublish;
270
- const entryStage = entry.strapi_stage;
271
- if (isLoading) {
272
- return null;
273
- }
274
- return /*#__PURE__*/ jsxs(Popover.Root, {
275
- children: [
276
- /*#__PURE__*/ jsx(EntryStatusTrigger, {
277
- action: action,
278
- status: status,
279
- hasErrors: hasErrors,
280
- requiredStage: requiredStage,
281
- entryStage: entryStage
282
- }),
283
- /*#__PURE__*/ jsx(Popover.Content, {
284
- children: /*#__PURE__*/ jsxs(StyledPopoverFlex, {
285
- direction: "column",
286
- children: [
287
- /*#__PURE__*/ jsx(FieldsValidation, {
288
- hasErrors: hasErrors,
289
- errors: errors,
290
- contentTypeUid: schema?.uid,
291
- kind: schema?.kind,
292
- documentId: entry.documentId,
293
- locale: entry.locale
294
- }),
295
- /*#__PURE__*/ jsx(ReviewStageValidation, {
296
- contentTypeHasReviewWorkflow: contentTypeHasReviewWorkflow,
297
- requiredStage: requiredStage,
298
- entryStage: entryStage
299
- })
300
- ]
301
- })
302
- })
303
- ]
304
- });
305
- };
306
-
307
- export { EntryValidationPopover };
308
- //# sourceMappingURL=EntryValidationPopover.mjs.map