@strapi/content-releases 0.0.0-experimental.d954d57341a6623992a0d211daaec8e245c3517d → 0.0.0-experimental.d9724d67b33363354d7171a9f2265e1c42485e13

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 (357) hide show
  1. package/LICENSE +17 -1
  2. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  5. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  6. package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
  9. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  10. package/dist/admin/components/EntryValidationPopover.js +310 -0
  11. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  12. package/dist/admin/components/EntryValidationPopover.mjs +308 -0
  13. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  14. package/dist/admin/components/RelativeTime.js +76 -0
  15. package/dist/admin/components/RelativeTime.js.map +1 -0
  16. package/dist/admin/components/RelativeTime.mjs +55 -0
  17. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  18. package/dist/admin/components/ReleaseAction.js +203 -0
  19. package/dist/admin/components/ReleaseAction.js.map +1 -0
  20. package/dist/admin/components/ReleaseAction.mjs +201 -0
  21. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  22. package/dist/admin/components/ReleaseActionMenu.js +194 -0
  23. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  24. package/dist/admin/components/ReleaseActionMenu.mjs +173 -0
  25. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  26. package/dist/admin/components/ReleaseActionModal.js +268 -0
  27. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  28. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  29. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  30. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  31. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  32. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  33. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  34. package/dist/admin/components/ReleaseListCell.js +103 -0
  35. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  36. package/dist/admin/components/ReleaseListCell.mjs +100 -0
  37. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  38. package/dist/admin/components/ReleaseModal.js +323 -0
  39. package/dist/admin/components/ReleaseModal.js.map +1 -0
  40. package/dist/admin/components/ReleaseModal.mjs +302 -0
  41. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  42. package/dist/admin/components/ReleasesPanel.js +138 -0
  43. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  44. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  45. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  46. package/dist/admin/components/Widgets.js +122 -0
  47. package/dist/admin/components/Widgets.js.map +1 -0
  48. package/dist/admin/components/Widgets.mjs +120 -0
  49. package/dist/admin/components/Widgets.mjs.map +1 -0
  50. package/dist/admin/constants.js +79 -0
  51. package/dist/admin/constants.js.map +1 -0
  52. package/dist/admin/constants.mjs +76 -0
  53. package/dist/admin/constants.mjs.map +1 -0
  54. package/dist/admin/index.js +148 -4
  55. package/dist/admin/index.js.map +1 -1
  56. package/dist/admin/index.mjs +143 -4
  57. package/dist/admin/index.mjs.map +1 -1
  58. package/dist/admin/modules/hooks.js +8 -0
  59. package/dist/admin/modules/hooks.js.map +1 -0
  60. package/dist/admin/modules/hooks.mjs +6 -0
  61. package/dist/admin/modules/hooks.mjs.map +1 -0
  62. package/dist/admin/pages/App.js +29 -0
  63. package/dist/admin/pages/App.js.map +1 -0
  64. package/dist/admin/pages/App.mjs +27 -0
  65. package/dist/admin/pages/App.mjs.map +1 -0
  66. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  67. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  68. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  69. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  70. package/dist/admin/pages/ReleaseDetailsPage.js +772 -0
  71. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  72. package/dist/admin/pages/ReleaseDetailsPage.mjs +751 -0
  73. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  74. package/dist/admin/pages/ReleasesPage.js +403 -0
  75. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  76. package/dist/admin/pages/ReleasesPage.mjs +381 -0
  77. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  78. package/dist/admin/pages/ReleasesSettingsPage.js +225 -0
  79. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  80. package/dist/admin/pages/ReleasesSettingsPage.mjs +223 -0
  81. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  82. package/dist/admin/pluginId.js +6 -0
  83. package/dist/admin/pluginId.js.map +1 -0
  84. package/dist/admin/pluginId.mjs +4 -0
  85. package/dist/admin/pluginId.mjs.map +1 -0
  86. package/dist/admin/services/homepage.js +24 -0
  87. package/dist/admin/services/homepage.js.map +1 -0
  88. package/dist/admin/services/homepage.mjs +22 -0
  89. package/dist/admin/services/homepage.mjs.map +1 -0
  90. package/dist/admin/services/release.js +474 -0
  91. package/dist/admin/services/release.js.map +1 -0
  92. package/dist/admin/services/release.mjs +457 -0
  93. package/dist/admin/services/release.mjs.map +1 -0
  94. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  95. package/dist/admin/src/components/ReleaseActionMenu.d.ts +2 -2
  96. package/dist/admin/src/components/{CMReleasesContainer.d.ts → ReleaseActionModal.d.ts} +3 -1
  97. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  98. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  99. package/dist/admin/src/components/Widgets.d.ts +2 -0
  100. package/dist/admin/src/constants.d.ts +19 -0
  101. package/dist/admin/src/modules/hooks.d.ts +7 -0
  102. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  103. package/dist/admin/src/services/homepage.d.ts +9 -0
  104. package/dist/admin/src/services/release.d.ts +43 -36
  105. package/dist/admin/src/utils/time.d.ts +9 -0
  106. package/dist/admin/src/validation/schemas.d.ts +6 -0
  107. package/dist/admin/store/hooks.js +8 -0
  108. package/dist/admin/store/hooks.js.map +1 -0
  109. package/dist/admin/store/hooks.mjs +6 -0
  110. package/dist/admin/store/hooks.mjs.map +1 -0
  111. package/dist/admin/translations/en.json.js +111 -0
  112. package/dist/admin/translations/en.json.js.map +1 -0
  113. package/dist/admin/translations/en.json.mjs +109 -0
  114. package/dist/admin/translations/en.json.mjs.map +1 -0
  115. package/dist/admin/translations/uk.json.js +103 -0
  116. package/dist/admin/translations/uk.json.js.map +1 -0
  117. package/dist/admin/translations/uk.json.mjs +101 -0
  118. package/dist/admin/translations/uk.json.mjs.map +1 -0
  119. package/dist/admin/utils/api.js +8 -0
  120. package/dist/admin/utils/api.js.map +1 -0
  121. package/dist/admin/utils/api.mjs +6 -0
  122. package/dist/admin/utils/api.mjs.map +1 -0
  123. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  124. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  125. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  126. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  127. package/dist/admin/utils/time.js +42 -0
  128. package/dist/admin/utils/time.js.map +1 -0
  129. package/dist/admin/utils/time.mjs +39 -0
  130. package/dist/admin/utils/time.mjs.map +1 -0
  131. package/dist/admin/validation/schemas.js +65 -0
  132. package/dist/admin/validation/schemas.js.map +1 -0
  133. package/dist/admin/validation/schemas.mjs +43 -0
  134. package/dist/admin/validation/schemas.mjs.map +1 -0
  135. package/dist/server/bootstrap.js +68 -0
  136. package/dist/server/bootstrap.js.map +1 -0
  137. package/dist/server/bootstrap.mjs +66 -0
  138. package/dist/server/bootstrap.mjs.map +1 -0
  139. package/dist/server/constants.js +74 -0
  140. package/dist/server/constants.js.map +1 -0
  141. package/dist/server/constants.mjs +69 -0
  142. package/dist/server/constants.mjs.map +1 -0
  143. package/dist/server/content-types/index.js +12 -0
  144. package/dist/server/content-types/index.js.map +1 -0
  145. package/dist/server/content-types/index.mjs +10 -0
  146. package/dist/server/content-types/index.mjs.map +1 -0
  147. package/dist/server/content-types/release/index.js +10 -0
  148. package/dist/server/content-types/release/index.js.map +1 -0
  149. package/dist/server/content-types/release/index.mjs +8 -0
  150. package/dist/server/content-types/release/index.mjs.map +1 -0
  151. package/dist/server/content-types/release/schema.js +58 -0
  152. package/dist/server/content-types/release/schema.js.map +1 -0
  153. package/dist/server/content-types/release/schema.mjs +56 -0
  154. package/dist/server/content-types/release/schema.mjs.map +1 -0
  155. package/dist/server/content-types/release-action/index.js +10 -0
  156. package/dist/server/content-types/release-action/index.js.map +1 -0
  157. package/dist/server/content-types/release-action/index.mjs +8 -0
  158. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  159. package/dist/server/content-types/release-action/schema.js +55 -0
  160. package/dist/server/content-types/release-action/schema.js.map +1 -0
  161. package/dist/server/content-types/release-action/schema.mjs +53 -0
  162. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  163. package/dist/server/controllers/homepage.js +15 -0
  164. package/dist/server/controllers/homepage.js.map +1 -0
  165. package/dist/server/controllers/homepage.mjs +13 -0
  166. package/dist/server/controllers/homepage.mjs.map +1 -0
  167. package/dist/server/controllers/index.js +16 -0
  168. package/dist/server/controllers/index.js.map +1 -0
  169. package/dist/server/controllers/index.mjs +14 -0
  170. package/dist/server/controllers/index.mjs.map +1 -0
  171. package/dist/server/controllers/release-action.js +150 -0
  172. package/dist/server/controllers/release-action.js.map +1 -0
  173. package/dist/server/controllers/release-action.mjs +148 -0
  174. package/dist/server/controllers/release-action.mjs.map +1 -0
  175. package/dist/server/controllers/release.js +302 -0
  176. package/dist/server/controllers/release.js.map +1 -0
  177. package/dist/server/controllers/release.mjs +300 -0
  178. package/dist/server/controllers/release.mjs.map +1 -0
  179. package/dist/server/controllers/settings.js +37 -0
  180. package/dist/server/controllers/settings.js.map +1 -0
  181. package/dist/server/controllers/settings.mjs +35 -0
  182. package/dist/server/controllers/settings.mjs.map +1 -0
  183. package/dist/server/controllers/validation/release-action.js +34 -0
  184. package/dist/server/controllers/validation/release-action.js.map +1 -0
  185. package/dist/server/controllers/validation/release-action.mjs +30 -0
  186. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  187. package/dist/server/controllers/validation/release.js +26 -0
  188. package/dist/server/controllers/validation/release.js.map +1 -0
  189. package/dist/server/controllers/validation/release.mjs +22 -0
  190. package/dist/server/controllers/validation/release.mjs.map +1 -0
  191. package/dist/server/controllers/validation/settings.js +32 -0
  192. package/dist/server/controllers/validation/settings.js.map +1 -0
  193. package/dist/server/controllers/validation/settings.mjs +10 -0
  194. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  195. package/dist/server/destroy.js +15 -0
  196. package/dist/server/destroy.js.map +1 -0
  197. package/dist/server/destroy.mjs +13 -0
  198. package/dist/server/destroy.mjs.map +1 -0
  199. package/dist/server/index.js +25 -1774
  200. package/dist/server/index.js.map +1 -1
  201. package/dist/server/index.mjs +24 -1754
  202. package/dist/server/index.mjs.map +1 -1
  203. package/dist/server/middlewares/documents.js +104 -0
  204. package/dist/server/middlewares/documents.js.map +1 -0
  205. package/dist/server/middlewares/documents.mjs +101 -0
  206. package/dist/server/middlewares/documents.mjs.map +1 -0
  207. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  208. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  209. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  210. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  211. package/dist/server/migrations/index.js +205 -0
  212. package/dist/server/migrations/index.js.map +1 -0
  213. package/dist/server/migrations/index.mjs +198 -0
  214. package/dist/server/migrations/index.mjs.map +1 -0
  215. package/dist/server/register.js +23 -0
  216. package/dist/server/register.js.map +1 -0
  217. package/dist/server/register.mjs +21 -0
  218. package/dist/server/register.mjs.map +1 -0
  219. package/dist/server/routes/homepage.js +25 -0
  220. package/dist/server/routes/homepage.js.map +1 -0
  221. package/dist/server/routes/homepage.mjs +23 -0
  222. package/dist/server/routes/homepage.mjs.map +1 -0
  223. package/dist/server/routes/index.js +16 -0
  224. package/dist/server/routes/index.js.map +1 -0
  225. package/dist/server/routes/index.mjs +14 -0
  226. package/dist/server/routes/index.mjs.map +1 -0
  227. package/dist/server/routes/release-action.js +100 -0
  228. package/dist/server/routes/release-action.js.map +1 -0
  229. package/dist/server/routes/release-action.mjs +98 -0
  230. package/dist/server/routes/release-action.mjs.map +1 -0
  231. package/dist/server/routes/release.js +154 -0
  232. package/dist/server/routes/release.js.map +1 -0
  233. package/dist/server/routes/release.mjs +152 -0
  234. package/dist/server/routes/release.mjs.map +1 -0
  235. package/dist/server/routes/settings.js +46 -0
  236. package/dist/server/routes/settings.js.map +1 -0
  237. package/dist/server/routes/settings.mjs +44 -0
  238. package/dist/server/routes/settings.mjs.map +1 -0
  239. package/dist/server/services/homepage.js +26 -0
  240. package/dist/server/services/homepage.js.map +1 -0
  241. package/dist/server/services/homepage.mjs +24 -0
  242. package/dist/server/services/homepage.mjs.map +1 -0
  243. package/dist/server/services/index.js +20 -0
  244. package/dist/server/services/index.js.map +1 -0
  245. package/dist/server/services/index.mjs +18 -0
  246. package/dist/server/services/index.mjs.map +1 -0
  247. package/dist/server/services/release-action.js +324 -0
  248. package/dist/server/services/release-action.js.map +1 -0
  249. package/dist/server/services/release-action.mjs +322 -0
  250. package/dist/server/services/release-action.mjs.map +1 -0
  251. package/dist/server/services/release.js +324 -0
  252. package/dist/server/services/release.js.map +1 -0
  253. package/dist/server/services/release.mjs +322 -0
  254. package/dist/server/services/release.mjs.map +1 -0
  255. package/dist/server/services/scheduling.js +74 -0
  256. package/dist/server/services/scheduling.js.map +1 -0
  257. package/dist/server/services/scheduling.mjs +72 -0
  258. package/dist/server/services/scheduling.mjs.map +1 -0
  259. package/dist/server/services/settings.js +34 -0
  260. package/dist/server/services/settings.js.map +1 -0
  261. package/dist/server/services/settings.mjs +32 -0
  262. package/dist/server/services/settings.mjs.map +1 -0
  263. package/dist/server/services/validation.js +91 -0
  264. package/dist/server/services/validation.js.map +1 -0
  265. package/dist/server/services/validation.mjs +86 -0
  266. package/dist/server/services/validation.mjs.map +1 -0
  267. package/dist/server/src/bootstrap.d.ts.map +1 -1
  268. package/dist/server/src/constants.d.ts +11 -2
  269. package/dist/server/src/constants.d.ts.map +1 -1
  270. package/dist/server/src/content-types/index.d.ts +3 -5
  271. package/dist/server/src/content-types/index.d.ts.map +1 -1
  272. package/dist/server/src/content-types/release-action/index.d.ts +3 -5
  273. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -1
  274. package/dist/server/src/content-types/release-action/schema.d.ts +3 -5
  275. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -1
  276. package/dist/server/src/controllers/homepage.d.ts +6 -0
  277. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  278. package/dist/server/src/controllers/index.d.ts +9 -1
  279. package/dist/server/src/controllers/index.d.ts.map +1 -1
  280. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  281. package/dist/server/src/controllers/release.d.ts +7 -1
  282. package/dist/server/src/controllers/release.d.ts.map +1 -1
  283. package/dist/server/src/controllers/settings.d.ts +11 -0
  284. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  285. package/dist/server/src/controllers/validation/release-action.d.ts +7 -1
  286. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -1
  287. package/dist/server/src/controllers/validation/release.d.ts +2 -0
  288. package/dist/server/src/controllers/validation/release.d.ts.map +1 -1
  289. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  290. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  291. package/dist/server/src/destroy.d.ts +1 -1
  292. package/dist/server/src/destroy.d.ts.map +1 -1
  293. package/dist/server/src/index.d.ts +77 -53
  294. package/dist/server/src/index.d.ts.map +1 -1
  295. package/dist/server/src/middlewares/documents.d.ts +6 -0
  296. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  297. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  298. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  299. package/dist/server/src/migrations/index.d.ts.map +1 -1
  300. package/dist/server/src/register.d.ts.map +1 -1
  301. package/dist/server/src/routes/homepage.d.ts +4 -0
  302. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  303. package/dist/server/src/routes/index.d.ts +17 -0
  304. package/dist/server/src/routes/index.d.ts.map +1 -1
  305. package/dist/server/src/routes/release.d.ts.map +1 -1
  306. package/dist/server/src/routes/settings.d.ts +18 -0
  307. package/dist/server/src/routes/settings.d.ts.map +1 -0
  308. package/dist/server/src/services/homepage.d.ts +9 -0
  309. package/dist/server/src/services/homepage.d.ts.map +1 -0
  310. package/dist/server/src/services/index.d.ts +45 -42
  311. package/dist/server/src/services/index.d.ts.map +1 -1
  312. package/dist/server/src/services/release-action.d.ts +34 -0
  313. package/dist/server/src/services/release-action.d.ts.map +1 -0
  314. package/dist/server/src/services/release.d.ts +6 -41
  315. package/dist/server/src/services/release.d.ts.map +1 -1
  316. package/dist/server/src/services/scheduling.d.ts +5 -6
  317. package/dist/server/src/services/scheduling.d.ts.map +1 -1
  318. package/dist/server/src/services/settings.d.ts +13 -0
  319. package/dist/server/src/services/settings.d.ts.map +1 -0
  320. package/dist/server/src/services/validation.d.ts +2 -2
  321. package/dist/server/src/services/validation.d.ts.map +1 -1
  322. package/dist/server/src/utils/index.d.ts +29 -8
  323. package/dist/server/src/utils/index.d.ts.map +1 -1
  324. package/dist/server/utils/index.js +94 -0
  325. package/dist/server/utils/index.js.map +1 -0
  326. package/dist/server/utils/index.mjs +88 -0
  327. package/dist/server/utils/index.mjs.map +1 -0
  328. package/dist/shared/contracts/homepage.d.ts +11 -0
  329. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  330. package/dist/shared/contracts/release-actions.d.ts +17 -12
  331. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  332. package/dist/shared/contracts/releases.d.ts +9 -8
  333. package/dist/shared/contracts/releases.d.ts.map +1 -1
  334. package/dist/shared/contracts/settings.d.ts +38 -0
  335. package/dist/shared/contracts/settings.d.ts.map +1 -0
  336. package/dist/shared/types.d.ts +1 -1
  337. package/dist/shared/types.d.ts.map +1 -1
  338. package/package.json +23 -19
  339. package/dist/_chunks/App-CqbuK4M6.js +0 -1345
  340. package/dist/_chunks/App-CqbuK4M6.js.map +0 -1
  341. package/dist/_chunks/App-Do-Rnv0A.mjs +0 -1323
  342. package/dist/_chunks/App-Do-Rnv0A.mjs.map +0 -1
  343. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js +0 -52
  344. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
  345. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs +0 -52
  346. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +0 -1
  347. package/dist/_chunks/en-B9Ur3VsE.mjs +0 -86
  348. package/dist/_chunks/en-B9Ur3VsE.mjs.map +0 -1
  349. package/dist/_chunks/en-DtFJ5ViE.js +0 -86
  350. package/dist/_chunks/en-DtFJ5ViE.js.map +0 -1
  351. package/dist/_chunks/index-D_pgdqQL.mjs +0 -1010
  352. package/dist/_chunks/index-D_pgdqQL.mjs.map +0 -1
  353. package/dist/_chunks/index-Tedsw4GC.js +0 -1029
  354. package/dist/_chunks/index-Tedsw4GC.js.map +0 -1
  355. package/dist/shared/validation-schemas.d.ts +0 -2
  356. package/dist/shared/validation-schemas.d.ts.map +0 -1
  357. package/strapi-server.js +0 -3
@@ -1,1010 +0,0 @@
1
- import { Cross, Pencil, More, Plus, PaperPlane } from "@strapi/icons";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { skipToken } from "@reduxjs/toolkit/query";
5
- import { adminApi, useNotification, useAPIErrorHandler, useRBAC, useAuth, isFetchError, useQueryParams } from "@strapi/admin/strapi-admin";
6
- import { unstable_useDocument } from "@strapi/content-manager/strapi-admin";
7
- import { Menu, Flex, Typography, AccessibleIcon, Field, VisuallyHidden, Box, Button, Modal, SingleSelect, SingleSelectOption, EmptyStateLayout, LinkButton } from "@strapi/design-system";
8
- import { EmptyDocuments } from "@strapi/icons/symbols";
9
- import { Formik, Form } from "formik";
10
- import { useIntl } from "react-intl";
11
- import { Link, useParams } from "react-router-dom";
12
- import * as yup from "yup";
13
- import { styled } from "styled-components";
14
- const __variableDynamicImportRuntimeHelper = (glob, path) => {
15
- const v = glob[path];
16
- if (v) {
17
- return typeof v === "function" ? v() : Promise.resolve(v);
18
- }
19
- return new Promise((_, reject) => {
20
- (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
21
- });
22
- };
23
- const PERMISSIONS = {
24
- main: [
25
- {
26
- action: "plugin::content-releases.read",
27
- subject: null,
28
- id: "",
29
- actionParameters: {},
30
- properties: {},
31
- conditions: []
32
- }
33
- ],
34
- create: [
35
- {
36
- action: "plugin::content-releases.create",
37
- subject: null,
38
- id: "",
39
- actionParameters: {},
40
- properties: {},
41
- conditions: []
42
- }
43
- ],
44
- update: [
45
- {
46
- action: "plugin::content-releases.update",
47
- subject: null,
48
- id: "",
49
- actionParameters: {},
50
- properties: {},
51
- conditions: []
52
- }
53
- ],
54
- delete: [
55
- {
56
- action: "plugin::content-releases.delete",
57
- subject: null,
58
- id: "",
59
- actionParameters: {},
60
- properties: {},
61
- conditions: []
62
- }
63
- ],
64
- createAction: [
65
- {
66
- action: "plugin::content-releases.create-action",
67
- subject: null,
68
- id: "",
69
- actionParameters: {},
70
- properties: {},
71
- conditions: []
72
- }
73
- ],
74
- deleteAction: [
75
- {
76
- action: "plugin::content-releases.delete-action",
77
- subject: null,
78
- id: "",
79
- actionParameters: {},
80
- properties: {},
81
- conditions: []
82
- }
83
- ],
84
- publish: [
85
- {
86
- action: "plugin::content-releases.publish",
87
- subject: null,
88
- id: "",
89
- actionParameters: {},
90
- properties: {},
91
- conditions: []
92
- }
93
- ]
94
- };
95
- const releaseApi = adminApi.enhanceEndpoints({
96
- addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease"]
97
- }).injectEndpoints({
98
- endpoints: (build) => {
99
- return {
100
- getReleasesForEntry: build.query({
101
- query(params) {
102
- return {
103
- url: "/content-releases",
104
- method: "GET",
105
- config: {
106
- params
107
- }
108
- };
109
- },
110
- providesTags: (result) => result ? [
111
- ...result.data.map(({ id }) => ({ type: "Release", id })),
112
- { type: "Release", id: "LIST" }
113
- ] : []
114
- }),
115
- getReleases: build.query({
116
- query({ page, pageSize, filters } = {
117
- page: 1,
118
- pageSize: 16,
119
- filters: {
120
- releasedAt: {
121
- $notNull: false
122
- }
123
- }
124
- }) {
125
- return {
126
- url: "/content-releases",
127
- method: "GET",
128
- config: {
129
- params: {
130
- page: page || 1,
131
- pageSize: pageSize || 16,
132
- filters: filters || {
133
- releasedAt: {
134
- $notNull: false
135
- }
136
- }
137
- }
138
- }
139
- };
140
- },
141
- transformResponse(response, meta, arg) {
142
- const releasedAtValue = arg?.filters?.releasedAt?.$notNull;
143
- const isActiveDoneTab = releasedAtValue === "true";
144
- const newResponse = {
145
- ...response,
146
- meta: {
147
- ...response.meta,
148
- activeTab: isActiveDoneTab ? "done" : "pending"
149
- }
150
- };
151
- return newResponse;
152
- },
153
- providesTags: (result) => result ? [
154
- ...result.data.map(({ id }) => ({ type: "Release", id })),
155
- { type: "Release", id: "LIST" }
156
- ] : [{ type: "Release", id: "LIST" }]
157
- }),
158
- getRelease: build.query({
159
- query({ id }) {
160
- return {
161
- url: `/content-releases/${id}`,
162
- method: "GET"
163
- };
164
- },
165
- providesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
166
- }),
167
- getReleaseActions: build.query({
168
- query({ releaseId, ...params }) {
169
- return {
170
- url: `/content-releases/${releaseId}/actions`,
171
- method: "GET",
172
- config: {
173
- params
174
- }
175
- };
176
- },
177
- providesTags: [{ type: "ReleaseAction", id: "LIST" }]
178
- }),
179
- createRelease: build.mutation({
180
- query(data) {
181
- return {
182
- url: "/content-releases",
183
- method: "POST",
184
- data
185
- };
186
- },
187
- invalidatesTags: [{ type: "Release", id: "LIST" }]
188
- }),
189
- updateRelease: build.mutation({
190
- query({ id, ...data }) {
191
- return {
192
- url: `/content-releases/${id}`,
193
- method: "PUT",
194
- data
195
- };
196
- },
197
- invalidatesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
198
- }),
199
- createReleaseAction: build.mutation({
200
- query({ body, params }) {
201
- return {
202
- url: `/content-releases/${params.releaseId}/actions`,
203
- method: "POST",
204
- data: body
205
- };
206
- },
207
- invalidatesTags: [
208
- { type: "Release", id: "LIST" },
209
- { type: "ReleaseAction", id: "LIST" }
210
- ]
211
- }),
212
- createManyReleaseActions: build.mutation({
213
- query({ body, params }) {
214
- return {
215
- url: `/content-releases/${params.releaseId}/actions/bulk`,
216
- method: "POST",
217
- data: body
218
- };
219
- },
220
- invalidatesTags: [
221
- { type: "Release", id: "LIST" },
222
- { type: "ReleaseAction", id: "LIST" },
223
- { type: "EntriesInRelease" }
224
- ]
225
- }),
226
- updateReleaseAction: build.mutation({
227
- query({ body, params }) {
228
- return {
229
- url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,
230
- method: "PUT",
231
- data: body
232
- };
233
- },
234
- invalidatesTags: () => [{ type: "ReleaseAction", id: "LIST" }],
235
- async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
236
- const paramsWithoutActionId = {
237
- releaseId: params.releaseId,
238
- ...query
239
- };
240
- const patchResult = dispatch(
241
- releaseApi.util.updateQueryData(
242
- "getReleaseActions",
243
- paramsWithoutActionId,
244
- (draft) => {
245
- const [key, index] = actionPath;
246
- const action = draft.data[key][index];
247
- if (action) {
248
- action.type = body.type;
249
- }
250
- }
251
- )
252
- );
253
- try {
254
- await queryFulfilled;
255
- } catch {
256
- patchResult.undo();
257
- }
258
- }
259
- }),
260
- deleteReleaseAction: build.mutation({
261
- query({ params }) {
262
- return {
263
- url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,
264
- method: "DELETE"
265
- };
266
- },
267
- invalidatesTags: (result, error, arg) => [
268
- { type: "Release", id: "LIST" },
269
- { type: "Release", id: arg.params.releaseId },
270
- { type: "ReleaseAction", id: "LIST" },
271
- { type: "EntriesInRelease" }
272
- ]
273
- }),
274
- publishRelease: build.mutation({
275
- query({ id }) {
276
- return {
277
- url: `/content-releases/${id}/publish`,
278
- method: "POST"
279
- };
280
- },
281
- invalidatesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
282
- }),
283
- deleteRelease: build.mutation({
284
- query({ id }) {
285
- return {
286
- url: `/content-releases/${id}`,
287
- method: "DELETE"
288
- };
289
- },
290
- invalidatesTags: () => [{ type: "Release", id: "LIST" }, { type: "EntriesInRelease" }]
291
- }),
292
- getMappedEntriesInReleases: build.query({
293
- query(params) {
294
- return {
295
- url: "/content-releases/mapEntriesToReleases",
296
- method: "GET",
297
- config: {
298
- params
299
- }
300
- };
301
- },
302
- transformResponse(response) {
303
- return response.data;
304
- },
305
- providesTags: [{ type: "EntriesInRelease" }]
306
- })
307
- };
308
- }
309
- });
310
- const {
311
- useGetReleasesQuery,
312
- useGetReleasesForEntryQuery,
313
- useGetReleaseQuery,
314
- useGetReleaseActionsQuery,
315
- useCreateReleaseMutation,
316
- useCreateReleaseActionMutation,
317
- useCreateManyReleaseActionsMutation,
318
- useUpdateReleaseMutation,
319
- useUpdateReleaseActionMutation,
320
- usePublishReleaseMutation,
321
- useDeleteReleaseActionMutation,
322
- useDeleteReleaseMutation,
323
- useGetMappedEntriesInReleasesQuery
324
- } = releaseApi;
325
- const getTimezoneOffset = (timezone, date) => {
326
- try {
327
- const offsetPart = new Intl.DateTimeFormat("en", {
328
- timeZone: timezone,
329
- timeZoneName: "longOffset"
330
- }).formatToParts(date).find((part) => part.type === "timeZoneName");
331
- const offset = offsetPart ? offsetPart.value : "";
332
- let utcOffset = offset.replace("GMT", "UTC");
333
- if (!utcOffset.includes("+") && !utcOffset.includes("-")) {
334
- utcOffset = `${utcOffset}+00:00`;
335
- }
336
- return utcOffset;
337
- } catch (error) {
338
- return "";
339
- }
340
- };
341
- const StyledMenuItem = styled(Menu.Item)`
342
- &:hover {
343
- background: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}100`]};
344
-
345
- svg {
346
- fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
347
- }
348
-
349
- a {
350
- color: ${({ theme }) => theme.colors.neutral800};
351
- }
352
- }
353
-
354
- svg {
355
- fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
356
- }
357
-
358
- a {
359
- color: ${({ theme }) => theme.colors.neutral800};
360
- }
361
-
362
- span,
363
- a {
364
- width: 100%;
365
- }
366
- `;
367
- const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
368
- const { formatMessage } = useIntl();
369
- const { toggleNotification } = useNotification();
370
- const { formatAPIError } = useAPIErrorHandler();
371
- const [deleteReleaseAction] = useDeleteReleaseActionMutation();
372
- const {
373
- allowedActions: { canDeleteAction }
374
- } = useRBAC(PERMISSIONS);
375
- const handleDeleteAction = async () => {
376
- const response = await deleteReleaseAction({
377
- params: { releaseId, actionId }
378
- });
379
- if ("data" in response) {
380
- toggleNotification({
381
- type: "success",
382
- message: formatMessage({
383
- id: "content-releases.content-manager-edit-view.remove-from-release.notification.success",
384
- defaultMessage: "Entry removed from release"
385
- })
386
- });
387
- return;
388
- }
389
- if ("error" in response) {
390
- if (isFetchError(response.error)) {
391
- toggleNotification({
392
- type: "danger",
393
- message: formatAPIError(response.error)
394
- });
395
- } else {
396
- toggleNotification({
397
- type: "danger",
398
- message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
399
- });
400
- }
401
- }
402
- };
403
- if (!canDeleteAction) {
404
- return null;
405
- }
406
- return /* @__PURE__ */ jsx(StyledMenuItem, { $variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
407
- /* @__PURE__ */ jsx(Cross, { width: "1.6rem", height: "1.6rem" }),
408
- /* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
409
- id: "content-releases.content-manager-edit-view.remove-from-release",
410
- defaultMessage: "Remove from release"
411
- }) })
412
- ] }) });
413
- };
414
- const ReleaseActionEntryLinkItem = ({
415
- contentTypeUid,
416
- entryId,
417
- locale
418
- }) => {
419
- const { formatMessage } = useIntl();
420
- const userPermissions = useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
421
- const canUpdateEntryForLocale = React.useMemo(() => {
422
- const updatePermissions = userPermissions.find(
423
- (permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
424
- );
425
- if (!updatePermissions) {
426
- return false;
427
- }
428
- return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
429
- }, [contentTypeUid, locale, userPermissions]);
430
- const {
431
- allowedActions: { canUpdate: canUpdateContentType }
432
- } = useRBAC({
433
- updateContentType: [
434
- {
435
- action: "plugin::content-manager.explorer.update",
436
- subject: contentTypeUid
437
- }
438
- ]
439
- });
440
- if (!canUpdateContentType || !canUpdateEntryForLocale) {
441
- return null;
442
- }
443
- return /* @__PURE__ */ jsx(
444
- StyledMenuItem,
445
- {
446
- tag: Link,
447
- isLink: true,
448
- to: {
449
- pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
450
- search: locale && `?plugins[i18n][locale]=${locale}`
451
- },
452
- children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
453
- /* @__PURE__ */ jsx(Pencil, { width: "1.6rem", height: "1.6rem" }),
454
- /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
455
- id: "content-releases.content-manager-edit-view.edit-entry",
456
- defaultMessage: "Edit entry"
457
- }) })
458
- ] })
459
- }
460
- );
461
- };
462
- const EditReleaseItem = ({ releaseId }) => {
463
- const { formatMessage } = useIntl();
464
- return (
465
- /* @ts-expect-error inference isn't working in DS */
466
- /* @__PURE__ */ jsx(StyledMenuItem, { tag: Link, isLink: true, to: `/plugins/content-releases/${releaseId}`, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
467
- /* @__PURE__ */ jsx(Pencil, { width: "1.6rem", height: "1.6rem" }),
468
- /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
469
- id: "content-releases.content-manager-edit-view.edit-release",
470
- defaultMessage: "Edit release"
471
- }) })
472
- ] }) })
473
- );
474
- };
475
- const Root = ({ children }) => {
476
- const { formatMessage } = useIntl();
477
- const { allowedActions } = useRBAC(PERMISSIONS);
478
- return (
479
- // A user can access the dropdown if they have permissions to delete a release-action OR update a release
480
- allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxs(Menu.Root, { children: [
481
- /* @__PURE__ */ jsx(Menu.Trigger, { paddingLeft: 2, paddingRight: 2, children: /* @__PURE__ */ jsx(
482
- AccessibleIcon,
483
- {
484
- label: formatMessage({
485
- id: "content-releases.content-manager-edit-view.release-action-menu",
486
- defaultMessage: "Release action options"
487
- }),
488
- children: /* @__PURE__ */ jsx(More, {})
489
- }
490
- ) }),
491
- /* @__PURE__ */ jsx(Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
492
- ] }) : null
493
- );
494
- };
495
- const ReleaseActionMenu = {
496
- Root,
497
- EditReleaseItem,
498
- DeleteReleaseActionItem,
499
- ReleaseActionEntryLinkItem
500
- };
501
- const getBorderLeftRadiusValue = (actionType) => {
502
- return actionType === "publish" ? 1 : 0;
503
- };
504
- const getBorderRightRadiusValue = (actionType) => {
505
- return actionType === "publish" ? 0 : 1;
506
- };
507
- const FieldWrapper = styled(Field.Root)`
508
- border-top-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
509
- border-bottom-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
510
- border-top-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
511
- border-bottom-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
512
-
513
- > label {
514
- color: inherit;
515
- padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};
516
- text-align: center;
517
- vertical-align: middle;
518
- text-transform: capitalize;
519
- }
520
-
521
- &[data-checked='true'] {
522
- color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
523
- background-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
524
- border-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
525
- }
526
-
527
- &[data-checked='false'] {
528
- border-left: ${({ $actionType }) => $actionType === "unpublish" && "none"};
529
- border-right: ${({ $actionType }) => $actionType === "publish" && "none"};
530
- }
531
-
532
- &[data-checked='false'][data-disabled='false']:hover {
533
- color: ${({ theme }) => theme.colors.neutral700};
534
- background-color: ${({ theme }) => theme.colors.neutral100};
535
- border-color: ${({ theme }) => theme.colors.neutral200};
536
-
537
- & > label {
538
- cursor: pointer;
539
- }
540
- }
541
-
542
- &[data-disabled='true'] {
543
- color: ${({ theme }) => theme.colors.neutral600};
544
- background-color: ${({ theme }) => theme.colors.neutral150};
545
- border-color: ${({ theme }) => theme.colors.neutral300};
546
- }
547
- `;
548
- const ActionOption = ({
549
- selected,
550
- actionType,
551
- handleChange,
552
- name,
553
- disabled = false
554
- }) => {
555
- return /* @__PURE__ */ jsx(
556
- FieldWrapper,
557
- {
558
- $actionType: actionType,
559
- background: "primary0",
560
- borderColor: "neutral200",
561
- color: selected === actionType ? "primary600" : "neutral600",
562
- position: "relative",
563
- cursor: "pointer",
564
- "data-checked": selected === actionType,
565
- "data-disabled": disabled && selected !== actionType,
566
- children: /* @__PURE__ */ jsxs(Field.Label, { children: [
567
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(
568
- Field.Input,
569
- {
570
- type: "radio",
571
- name,
572
- checked: selected === actionType,
573
- onChange: handleChange,
574
- value: actionType,
575
- disabled
576
- }
577
- ) }),
578
- actionType
579
- ] })
580
- }
581
- );
582
- };
583
- const ReleaseActionOptions = ({
584
- selected,
585
- handleChange,
586
- name,
587
- disabled = false
588
- }) => {
589
- return /* @__PURE__ */ jsxs(Flex, { children: [
590
- /* @__PURE__ */ jsx(
591
- ActionOption,
592
- {
593
- actionType: "publish",
594
- selected,
595
- handleChange,
596
- name,
597
- disabled
598
- }
599
- ),
600
- /* @__PURE__ */ jsx(
601
- ActionOption,
602
- {
603
- actionType: "unpublish",
604
- selected,
605
- handleChange,
606
- name,
607
- disabled
608
- }
609
- )
610
- ] });
611
- };
612
- const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({
613
- type: yup.string().oneOf(["publish", "unpublish"]).required(),
614
- releaseId: yup.string().required()
615
- });
616
- const INITIAL_VALUES = {
617
- type: "publish",
618
- releaseId: ""
619
- };
620
- const NoReleases = () => {
621
- const { formatMessage } = useIntl();
622
- return /* @__PURE__ */ jsx(
623
- EmptyStateLayout,
624
- {
625
- icon: /* @__PURE__ */ jsx(EmptyDocuments, { width: "16rem" }),
626
- content: formatMessage({
627
- id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
628
- defaultMessage: "No available releases. Open the list of releases and create a new one from there."
629
- }),
630
- action: /* @__PURE__ */ jsx(
631
- LinkButton,
632
- {
633
- to: {
634
- pathname: "/plugins/content-releases"
635
- },
636
- tag: Link,
637
- variant: "secondary",
638
- children: formatMessage({
639
- id: "content-releases.content-manager-edit-view.add-to-release.redirect-button",
640
- defaultMessage: "Open the list of releases"
641
- })
642
- }
643
- )
644
- }
645
- );
646
- };
647
- const AddActionToReleaseModal = ({
648
- open,
649
- onOpenChange,
650
- contentTypeUid,
651
- entryId
652
- }) => {
653
- const { formatMessage } = useIntl();
654
- const { toggleNotification } = useNotification();
655
- const { formatAPIError } = useAPIErrorHandler();
656
- const [{ query }] = useQueryParams();
657
- const locale = query.plugins?.i18n?.locale;
658
- const response = useGetReleasesForEntryQuery({
659
- contentTypeUid,
660
- entryId,
661
- hasEntryAttached: false
662
- });
663
- const releases = response.data?.data;
664
- const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
665
- const handleSubmit = async (values) => {
666
- const releaseActionEntry = {
667
- contentType: contentTypeUid,
668
- id: entryId,
669
- locale
670
- };
671
- const response2 = await createReleaseAction({
672
- body: { type: values.type, entry: releaseActionEntry },
673
- params: { releaseId: values.releaseId }
674
- });
675
- if ("data" in response2) {
676
- toggleNotification({
677
- type: "success",
678
- message: formatMessage({
679
- id: "content-releases.content-manager-edit-view.add-to-release.notification.success",
680
- defaultMessage: "Entry added to release"
681
- })
682
- });
683
- onOpenChange();
684
- return;
685
- }
686
- if ("error" in response2) {
687
- if (isFetchError(response2.error)) {
688
- toggleNotification({
689
- type: "danger",
690
- message: formatAPIError(response2.error)
691
- });
692
- } else {
693
- toggleNotification({
694
- type: "danger",
695
- message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
696
- });
697
- }
698
- }
699
- };
700
- return /* @__PURE__ */ jsx(Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs(Modal.Content, { children: [
701
- /* @__PURE__ */ jsx(Modal.Header, { children: /* @__PURE__ */ jsx(Modal.Title, { fontWeight: "bold", children: formatMessage({
702
- id: "content-releases.content-manager-edit-view.add-to-release",
703
- defaultMessage: "Add to release"
704
- }) }) }),
705
- /* @__PURE__ */ jsx(
706
- Formik,
707
- {
708
- onSubmit: handleSubmit,
709
- validationSchema: RELEASE_ACTION_FORM_SCHEMA,
710
- initialValues: INITIAL_VALUES,
711
- children: ({ values, setFieldValue }) => {
712
- return /* @__PURE__ */ jsxs(Form, { children: [
713
- releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
714
- /* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxs(Field.Root, { required: true, children: [
715
- /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
716
- id: "content-releases.content-manager-edit-view.add-to-release.select-label",
717
- defaultMessage: "Select a release"
718
- }) }),
719
- /* @__PURE__ */ jsx(
720
- SingleSelect,
721
- {
722
- placeholder: formatMessage({
723
- id: "content-releases.content-manager-edit-view.add-to-release.select-placeholder",
724
- defaultMessage: "Select"
725
- }),
726
- onChange: (value) => setFieldValue("releaseId", value),
727
- value: values.releaseId,
728
- children: releases?.map((release) => /* @__PURE__ */ jsx(SingleSelectOption, { value: release.id, children: release.name }, release.id))
729
- }
730
- )
731
- ] }) }),
732
- /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
733
- id: "content-releases.content-manager-edit-view.add-to-release.action-type-label",
734
- defaultMessage: "What do you want to do with this entry?"
735
- }) }),
736
- /* @__PURE__ */ jsx(
737
- ReleaseActionOptions,
738
- {
739
- selected: values.type,
740
- handleChange: (e) => setFieldValue("type", e.target.value),
741
- name: "type"
742
- }
743
- )
744
- ] }) }),
745
- /* @__PURE__ */ jsxs(Modal.Footer, { children: [
746
- /* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", name: "cancel", children: formatMessage({
747
- id: "content-releases.content-manager-edit-view.add-to-release.cancel-button",
748
- defaultMessage: "Cancel"
749
- }) }) }),
750
- /* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
751
- id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
752
- defaultMessage: "Continue"
753
- }) })
754
- ] })
755
- ] });
756
- }
757
- }
758
- )
759
- ] }) });
760
- };
761
- const CMReleasesContainer = () => {
762
- const [isModalOpen, setIsModalOpen] = React.useState(false);
763
- const { formatMessage, formatDate, formatTime } = useIntl();
764
- const { id, slug, collectionType } = useParams();
765
- const isCreatingEntry = id === "create";
766
- const entryId = parseInt(id, 10);
767
- const { allowedActions } = useRBAC(PERMISSIONS);
768
- const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
769
- const { schema } = unstable_useDocument({
770
- collectionType,
771
- model: slug
772
- });
773
- const hasDraftAndPublish = schema?.options?.draftAndPublish;
774
- const contentTypeUid = slug;
775
- const canFetch = id != null && contentTypeUid != null;
776
- const fetchParams = canFetch ? {
777
- contentTypeUid,
778
- entryId,
779
- hasEntryAttached: true
780
- } : skipToken;
781
- const response = useGetReleasesForEntryQuery(fetchParams);
782
- const releases = response.data?.data;
783
- if (!canFetch) {
784
- return null;
785
- }
786
- if (isCreatingEntry || !hasDraftAndPublish) {
787
- return null;
788
- }
789
- const toggleModal = () => setIsModalOpen((prev) => !prev);
790
- const getReleaseColorVariant = (actionType, shade) => {
791
- if (actionType === "unpublish") {
792
- return `secondary${shade}`;
793
- }
794
- return `success${shade}`;
795
- };
796
- if (!canMain) {
797
- return null;
798
- }
799
- return /* @__PURE__ */ jsxs(
800
- Box,
801
- {
802
- tag: "aside",
803
- "aria-label": formatMessage({
804
- id: "content-releases.plugin.name",
805
- defaultMessage: "Releases"
806
- }),
807
- background: "neutral0",
808
- borderColor: "neutral150",
809
- hasRadius: true,
810
- padding: 4,
811
- shadow: "tableShadow",
812
- children: [
813
- /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 3, children: [
814
- /* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", children: formatMessage({
815
- id: "content-releases.plugin.name",
816
- defaultMessage: "Releases"
817
- }) }),
818
- releases?.map((release) => {
819
- return /* @__PURE__ */ jsxs(
820
- Flex,
821
- {
822
- direction: "column",
823
- alignItems: "start",
824
- borderWidth: "1px",
825
- borderStyle: "solid",
826
- borderColor: getReleaseColorVariant(release.actions[0].type, "200"),
827
- overflow: "hidden",
828
- hasRadius: true,
829
- children: [
830
- /* @__PURE__ */ jsx(
831
- Box,
832
- {
833
- paddingTop: 3,
834
- paddingBottom: 3,
835
- paddingLeft: 4,
836
- paddingRight: 4,
837
- background: getReleaseColorVariant(release.actions[0].type, "100"),
838
- width: "100%",
839
- children: /* @__PURE__ */ jsx(
840
- Typography,
841
- {
842
- fontSize: 1,
843
- variant: "pi",
844
- textColor: getReleaseColorVariant(release.actions[0].type, "600"),
845
- children: formatMessage(
846
- {
847
- id: "content-releases.content-manager-edit-view.list-releases.title",
848
- defaultMessage: "{isPublish, select, true {Will be published in} other {Will be unpublished in}}"
849
- },
850
- { isPublish: release.actions[0].type === "publish" }
851
- )
852
- }
853
- )
854
- }
855
- ),
856
- /* @__PURE__ */ jsx(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: /* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
857
- /* @__PURE__ */ jsx(Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
858
- release.scheduledAt && release.timezone && /* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
859
- {
860
- id: "content-releases.content-manager-edit-view.scheduled.date",
861
- defaultMessage: "{date} at {time} ({offset})"
862
- },
863
- {
864
- date: formatDate(new Date(release.scheduledAt), {
865
- day: "2-digit",
866
- month: "2-digit",
867
- year: "numeric",
868
- timeZone: release.timezone
869
- }),
870
- time: formatTime(new Date(release.scheduledAt), {
871
- hourCycle: "h23",
872
- timeZone: release.timezone
873
- }),
874
- offset: getTimezoneOffset(
875
- release.timezone,
876
- new Date(release.scheduledAt)
877
- )
878
- }
879
- ) }),
880
- canDeleteAction ? /* @__PURE__ */ jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
881
- /* @__PURE__ */ jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
882
- /* @__PURE__ */ jsx(
883
- ReleaseActionMenu.DeleteReleaseActionItem,
884
- {
885
- releaseId: release.id,
886
- actionId: release.actions[0].id
887
- }
888
- )
889
- ] }) : null
890
- ] }) })
891
- ]
892
- },
893
- release.id
894
- );
895
- }),
896
- canCreateAction ? /* @__PURE__ */ jsx(
897
- Button,
898
- {
899
- justifyContent: "center",
900
- paddingLeft: 4,
901
- paddingRight: 4,
902
- color: "neutral700",
903
- variant: "tertiary",
904
- startIcon: /* @__PURE__ */ jsx(Plus, {}),
905
- onClick: toggleModal,
906
- children: formatMessage({
907
- id: "content-releases.content-manager-edit-view.add-to-release",
908
- defaultMessage: "Add to release"
909
- })
910
- }
911
- ) : null
912
- ] }),
913
- /* @__PURE__ */ jsx(
914
- AddActionToReleaseModal,
915
- {
916
- open: isModalOpen,
917
- onOpenChange: toggleModal,
918
- contentTypeUid,
919
- entryId
920
- }
921
- )
922
- ]
923
- }
924
- );
925
- };
926
- const pluginId = "content-releases";
927
- const prefixPluginTranslations = (trad, pluginId2) => {
928
- if (!pluginId2) {
929
- throw new TypeError("pluginId can't be empty");
930
- }
931
- return Object.keys(trad).reduce((acc, current) => {
932
- acc[`${pluginId2}.${current}`] = trad[current];
933
- return acc;
934
- }, {});
935
- };
936
- const admin = {
937
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
938
- register(app) {
939
- app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
940
- if (window.strapi.features.isEnabled("cms-content-releases")) {
941
- app.addMenuLink({
942
- to: `plugins/${pluginId}`,
943
- icon: PaperPlane,
944
- intlLabel: {
945
- id: `${pluginId}.plugin.name`,
946
- defaultMessage: "Releases"
947
- },
948
- Component: () => import("./App-Do-Rnv0A.mjs").then((mod) => ({ default: mod.App })),
949
- permissions: PERMISSIONS.main,
950
- position: 2
951
- });
952
- app.getPlugin("content-manager").injectComponent("editView", "right-links", {
953
- name: `${pluginId}-link`,
954
- Component: CMReleasesContainer
955
- });
956
- } else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
957
- app.addMenuLink({
958
- to: `/plugins/purchase-content-releases`,
959
- icon: PaperPlane,
960
- intlLabel: {
961
- id: `${pluginId}.plugin.name`,
962
- defaultMessage: "Releases"
963
- },
964
- permissions: [],
965
- async Component() {
966
- const { PurchaseContentReleases } = await import("./PurchaseContentReleases-_MxP6-Dt.mjs");
967
- return { default: PurchaseContentReleases };
968
- },
969
- lockIcon: true,
970
- position: 2
971
- });
972
- }
973
- },
974
- async registerTrads({ locales }) {
975
- const importedTrads = await Promise.all(
976
- locales.map((locale) => {
977
- return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-B9Ur3VsE.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
978
- return {
979
- data: prefixPluginTranslations(data, "content-releases"),
980
- locale
981
- };
982
- }).catch(() => {
983
- return {
984
- data: {},
985
- locale
986
- };
987
- });
988
- })
989
- );
990
- return Promise.resolve(importedTrads);
991
- }
992
- };
993
- export {
994
- PERMISSIONS as P,
995
- ReleaseActionOptions as R,
996
- useCreateReleaseMutation as a,
997
- useGetReleaseQuery as b,
998
- useUpdateReleaseMutation as c,
999
- useDeleteReleaseMutation as d,
1000
- usePublishReleaseMutation as e,
1001
- useGetReleaseActionsQuery as f,
1002
- getTimezoneOffset as g,
1003
- useUpdateReleaseActionMutation as h,
1004
- ReleaseActionMenu as i,
1005
- admin as j,
1006
- pluginId as p,
1007
- releaseApi as r,
1008
- useGetReleasesQuery as u
1009
- };
1010
- //# sourceMappingURL=index-D_pgdqQL.mjs.map