@akbarsafari00/bonyan-content-releases 5.52.1-fa.2

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 (397) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +9 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.jpg.js +6 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -0
  5. package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs +4 -0
  6. package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.jpg.js +6 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -0
  9. package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs +4 -0
  10. package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -0
  11. package/dist/admin/components/EntryValidationPopover.js +310 -0
  12. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  13. package/dist/admin/components/EntryValidationPopover.mjs +308 -0
  14. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  15. package/dist/admin/components/RelativeTime.js +77 -0
  16. package/dist/admin/components/RelativeTime.js.map +1 -0
  17. package/dist/admin/components/RelativeTime.mjs +55 -0
  18. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  19. package/dist/admin/components/ReleaseAction.js +203 -0
  20. package/dist/admin/components/ReleaseAction.js.map +1 -0
  21. package/dist/admin/components/ReleaseAction.mjs +201 -0
  22. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  23. package/dist/admin/components/ReleaseActionMenu.js +194 -0
  24. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  25. package/dist/admin/components/ReleaseActionMenu.mjs +172 -0
  26. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  27. package/dist/admin/components/ReleaseActionModal.js +269 -0
  28. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  29. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  30. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  31. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  32. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  33. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  34. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  35. package/dist/admin/components/ReleaseListCell.js +109 -0
  36. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  37. package/dist/admin/components/ReleaseListCell.mjs +106 -0
  38. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  39. package/dist/admin/components/ReleaseModal.js +332 -0
  40. package/dist/admin/components/ReleaseModal.js.map +1 -0
  41. package/dist/admin/components/ReleaseModal.mjs +310 -0
  42. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  43. package/dist/admin/components/ReleasesPanel.js +138 -0
  44. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  45. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  46. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  47. package/dist/admin/components/Widgets.js +122 -0
  48. package/dist/admin/components/Widgets.js.map +1 -0
  49. package/dist/admin/components/Widgets.mjs +120 -0
  50. package/dist/admin/components/Widgets.mjs.map +1 -0
  51. package/dist/admin/constants.js +79 -0
  52. package/dist/admin/constants.js.map +1 -0
  53. package/dist/admin/constants.mjs +76 -0
  54. package/dist/admin/constants.mjs.map +1 -0
  55. package/dist/admin/index.js +155 -0
  56. package/dist/admin/index.js.map +1 -0
  57. package/dist/admin/index.mjs +151 -0
  58. package/dist/admin/index.mjs.map +1 -0
  59. package/dist/admin/modules/hooks.js +8 -0
  60. package/dist/admin/modules/hooks.js.map +1 -0
  61. package/dist/admin/modules/hooks.mjs +6 -0
  62. package/dist/admin/modules/hooks.mjs.map +1 -0
  63. package/dist/admin/pages/App.js +29 -0
  64. package/dist/admin/pages/App.js.map +1 -0
  65. package/dist/admin/pages/App.mjs +27 -0
  66. package/dist/admin/pages/App.mjs.map +1 -0
  67. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  68. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  69. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  70. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  71. package/dist/admin/pages/ReleaseDetailsPage.js +780 -0
  72. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  73. package/dist/admin/pages/ReleaseDetailsPage.mjs +755 -0
  74. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  75. package/dist/admin/pages/ReleasesPage.js +407 -0
  76. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  77. package/dist/admin/pages/ReleasesPage.mjs +384 -0
  78. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  79. package/dist/admin/pages/ReleasesSettingsPage.js +226 -0
  80. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  81. package/dist/admin/pages/ReleasesSettingsPage.mjs +224 -0
  82. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  83. package/dist/admin/pluginId.js +6 -0
  84. package/dist/admin/pluginId.js.map +1 -0
  85. package/dist/admin/pluginId.mjs +4 -0
  86. package/dist/admin/pluginId.mjs.map +1 -0
  87. package/dist/admin/services/homepage.js +24 -0
  88. package/dist/admin/services/homepage.js.map +1 -0
  89. package/dist/admin/services/homepage.mjs +22 -0
  90. package/dist/admin/services/homepage.mjs.map +1 -0
  91. package/dist/admin/services/release.js +473 -0
  92. package/dist/admin/services/release.js.map +1 -0
  93. package/dist/admin/services/release.mjs +456 -0
  94. package/dist/admin/services/release.mjs.map +1 -0
  95. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  96. package/dist/admin/src/components/RelativeTime.d.ts +28 -0
  97. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  98. package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
  99. package/dist/admin/src/components/ReleaseActionModal.d.ts +24 -0
  100. package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
  101. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  102. package/dist/admin/src/components/ReleaseModal.d.ts +17 -0
  103. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  104. package/dist/admin/src/components/Widgets.d.ts +2 -0
  105. package/dist/admin/src/constants.d.ts +77 -0
  106. package/dist/admin/src/index.d.ts +3 -0
  107. package/dist/admin/src/modules/hooks.d.ts +7 -0
  108. package/dist/admin/src/pages/App.d.ts +1 -0
  109. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
  110. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
  111. package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
  112. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  113. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
  114. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
  115. package/dist/admin/src/pluginId.d.ts +1 -0
  116. package/dist/admin/src/services/homepage.d.ts +9 -0
  117. package/dist/admin/src/services/release.d.ts +112 -0
  118. package/dist/admin/src/store/hooks.d.ts +7 -0
  119. package/dist/admin/src/utils/api.d.ts +6 -0
  120. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  121. package/dist/admin/src/utils/time.d.ts +10 -0
  122. package/dist/admin/src/validation/schemas.d.ts +6 -0
  123. package/dist/admin/store/hooks.js +8 -0
  124. package/dist/admin/store/hooks.js.map +1 -0
  125. package/dist/admin/store/hooks.mjs +6 -0
  126. package/dist/admin/store/hooks.mjs.map +1 -0
  127. package/dist/admin/translations/cs.json.js +111 -0
  128. package/dist/admin/translations/cs.json.js.map +1 -0
  129. package/dist/admin/translations/cs.json.mjs +109 -0
  130. package/dist/admin/translations/cs.json.mjs.map +1 -0
  131. package/dist/admin/translations/en.json.js +111 -0
  132. package/dist/admin/translations/en.json.js.map +1 -0
  133. package/dist/admin/translations/en.json.mjs +109 -0
  134. package/dist/admin/translations/en.json.mjs.map +1 -0
  135. package/dist/admin/translations/es.json.js +103 -0
  136. package/dist/admin/translations/es.json.js.map +1 -0
  137. package/dist/admin/translations/es.json.mjs +101 -0
  138. package/dist/admin/translations/es.json.mjs.map +1 -0
  139. package/dist/admin/translations/fa.json.js +111 -0
  140. package/dist/admin/translations/fa.json.js.map +1 -0
  141. package/dist/admin/translations/fa.json.mjs +109 -0
  142. package/dist/admin/translations/fa.json.mjs.map +1 -0
  143. package/dist/admin/translations/ja.json.js +111 -0
  144. package/dist/admin/translations/ja.json.js.map +1 -0
  145. package/dist/admin/translations/ja.json.mjs +109 -0
  146. package/dist/admin/translations/ja.json.mjs.map +1 -0
  147. package/dist/admin/translations/ko.json.js +111 -0
  148. package/dist/admin/translations/ko.json.js.map +1 -0
  149. package/dist/admin/translations/ko.json.mjs +109 -0
  150. package/dist/admin/translations/ko.json.mjs.map +1 -0
  151. package/dist/admin/translations/nl.json.js +111 -0
  152. package/dist/admin/translations/nl.json.js.map +1 -0
  153. package/dist/admin/translations/nl.json.mjs +109 -0
  154. package/dist/admin/translations/nl.json.mjs.map +1 -0
  155. package/dist/admin/translations/pl.json.js +111 -0
  156. package/dist/admin/translations/pl.json.js.map +1 -0
  157. package/dist/admin/translations/pl.json.mjs +109 -0
  158. package/dist/admin/translations/pl.json.mjs.map +1 -0
  159. package/dist/admin/translations/sk.json.js +111 -0
  160. package/dist/admin/translations/sk.json.js.map +1 -0
  161. package/dist/admin/translations/sk.json.mjs +109 -0
  162. package/dist/admin/translations/sk.json.mjs.map +1 -0
  163. package/dist/admin/translations/uk.json.js +103 -0
  164. package/dist/admin/translations/uk.json.js.map +1 -0
  165. package/dist/admin/translations/uk.json.mjs +101 -0
  166. package/dist/admin/translations/uk.json.mjs.map +1 -0
  167. package/dist/admin/utils/api.js +8 -0
  168. package/dist/admin/utils/api.js.map +1 -0
  169. package/dist/admin/utils/api.mjs +6 -0
  170. package/dist/admin/utils/api.mjs.map +1 -0
  171. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  172. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  173. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  174. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  175. package/dist/admin/utils/time.js +42 -0
  176. package/dist/admin/utils/time.js.map +1 -0
  177. package/dist/admin/utils/time.mjs +39 -0
  178. package/dist/admin/utils/time.mjs.map +1 -0
  179. package/dist/admin/validation/schemas.js +66 -0
  180. package/dist/admin/validation/schemas.js.map +1 -0
  181. package/dist/admin/validation/schemas.mjs +43 -0
  182. package/dist/admin/validation/schemas.mjs.map +1 -0
  183. package/dist/server/bootstrap.js +68 -0
  184. package/dist/server/bootstrap.js.map +1 -0
  185. package/dist/server/bootstrap.mjs +66 -0
  186. package/dist/server/bootstrap.mjs.map +1 -0
  187. package/dist/server/constants.js +74 -0
  188. package/dist/server/constants.js.map +1 -0
  189. package/dist/server/constants.mjs +69 -0
  190. package/dist/server/constants.mjs.map +1 -0
  191. package/dist/server/content-types/index.js +12 -0
  192. package/dist/server/content-types/index.js.map +1 -0
  193. package/dist/server/content-types/index.mjs +10 -0
  194. package/dist/server/content-types/index.mjs.map +1 -0
  195. package/dist/server/content-types/release/index.js +10 -0
  196. package/dist/server/content-types/release/index.js.map +1 -0
  197. package/dist/server/content-types/release/index.mjs +8 -0
  198. package/dist/server/content-types/release/index.mjs.map +1 -0
  199. package/dist/server/content-types/release/schema.js +58 -0
  200. package/dist/server/content-types/release/schema.js.map +1 -0
  201. package/dist/server/content-types/release/schema.mjs +56 -0
  202. package/dist/server/content-types/release/schema.mjs.map +1 -0
  203. package/dist/server/content-types/release-action/index.js +10 -0
  204. package/dist/server/content-types/release-action/index.js.map +1 -0
  205. package/dist/server/content-types/release-action/index.mjs +8 -0
  206. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  207. package/dist/server/content-types/release-action/schema.js +55 -0
  208. package/dist/server/content-types/release-action/schema.js.map +1 -0
  209. package/dist/server/content-types/release-action/schema.mjs +53 -0
  210. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  211. package/dist/server/controllers/homepage.js +15 -0
  212. package/dist/server/controllers/homepage.js.map +1 -0
  213. package/dist/server/controllers/homepage.mjs +13 -0
  214. package/dist/server/controllers/homepage.mjs.map +1 -0
  215. package/dist/server/controllers/index.js +16 -0
  216. package/dist/server/controllers/index.js.map +1 -0
  217. package/dist/server/controllers/index.mjs +14 -0
  218. package/dist/server/controllers/index.mjs.map +1 -0
  219. package/dist/server/controllers/release-action.js +150 -0
  220. package/dist/server/controllers/release-action.js.map +1 -0
  221. package/dist/server/controllers/release-action.mjs +148 -0
  222. package/dist/server/controllers/release-action.mjs.map +1 -0
  223. package/dist/server/controllers/release.js +302 -0
  224. package/dist/server/controllers/release.js.map +1 -0
  225. package/dist/server/controllers/release.mjs +300 -0
  226. package/dist/server/controllers/release.mjs.map +1 -0
  227. package/dist/server/controllers/settings.js +37 -0
  228. package/dist/server/controllers/settings.js.map +1 -0
  229. package/dist/server/controllers/settings.mjs +35 -0
  230. package/dist/server/controllers/settings.mjs.map +1 -0
  231. package/dist/server/controllers/validation/release-action.js +34 -0
  232. package/dist/server/controllers/validation/release-action.js.map +1 -0
  233. package/dist/server/controllers/validation/release-action.mjs +30 -0
  234. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  235. package/dist/server/controllers/validation/release.js +26 -0
  236. package/dist/server/controllers/validation/release.js.map +1 -0
  237. package/dist/server/controllers/validation/release.mjs +22 -0
  238. package/dist/server/controllers/validation/release.mjs.map +1 -0
  239. package/dist/server/controllers/validation/settings.js +33 -0
  240. package/dist/server/controllers/validation/settings.js.map +1 -0
  241. package/dist/server/controllers/validation/settings.mjs +10 -0
  242. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  243. package/dist/server/destroy.js +15 -0
  244. package/dist/server/destroy.js.map +1 -0
  245. package/dist/server/destroy.mjs +13 -0
  246. package/dist/server/destroy.mjs.map +1 -0
  247. package/dist/server/index.js +33 -0
  248. package/dist/server/index.js.map +1 -0
  249. package/dist/server/index.mjs +31 -0
  250. package/dist/server/index.mjs.map +1 -0
  251. package/dist/server/middlewares/documents.js +104 -0
  252. package/dist/server/middlewares/documents.js.map +1 -0
  253. package/dist/server/middlewares/documents.mjs +101 -0
  254. package/dist/server/middlewares/documents.mjs.map +1 -0
  255. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  256. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  257. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  258. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  259. package/dist/server/migrations/index.js +209 -0
  260. package/dist/server/migrations/index.js.map +1 -0
  261. package/dist/server/migrations/index.mjs +198 -0
  262. package/dist/server/migrations/index.mjs.map +1 -0
  263. package/dist/server/register.js +23 -0
  264. package/dist/server/register.js.map +1 -0
  265. package/dist/server/register.mjs +21 -0
  266. package/dist/server/register.mjs.map +1 -0
  267. package/dist/server/routes/homepage.js +25 -0
  268. package/dist/server/routes/homepage.js.map +1 -0
  269. package/dist/server/routes/homepage.mjs +23 -0
  270. package/dist/server/routes/homepage.mjs.map +1 -0
  271. package/dist/server/routes/index.js +16 -0
  272. package/dist/server/routes/index.js.map +1 -0
  273. package/dist/server/routes/index.mjs +14 -0
  274. package/dist/server/routes/index.mjs.map +1 -0
  275. package/dist/server/routes/release-action.js +100 -0
  276. package/dist/server/routes/release-action.js.map +1 -0
  277. package/dist/server/routes/release-action.mjs +98 -0
  278. package/dist/server/routes/release-action.mjs.map +1 -0
  279. package/dist/server/routes/release.js +154 -0
  280. package/dist/server/routes/release.js.map +1 -0
  281. package/dist/server/routes/release.mjs +152 -0
  282. package/dist/server/routes/release.mjs.map +1 -0
  283. package/dist/server/routes/settings.js +46 -0
  284. package/dist/server/routes/settings.js.map +1 -0
  285. package/dist/server/routes/settings.mjs +44 -0
  286. package/dist/server/routes/settings.mjs.map +1 -0
  287. package/dist/server/services/homepage.js +31 -0
  288. package/dist/server/services/homepage.js.map +1 -0
  289. package/dist/server/services/homepage.mjs +29 -0
  290. package/dist/server/services/homepage.mjs.map +1 -0
  291. package/dist/server/services/index.js +20 -0
  292. package/dist/server/services/index.js.map +1 -0
  293. package/dist/server/services/index.mjs +18 -0
  294. package/dist/server/services/index.mjs.map +1 -0
  295. package/dist/server/services/release-action.js +328 -0
  296. package/dist/server/services/release-action.js.map +1 -0
  297. package/dist/server/services/release-action.mjs +322 -0
  298. package/dist/server/services/release-action.mjs.map +1 -0
  299. package/dist/server/services/release.js +337 -0
  300. package/dist/server/services/release.js.map +1 -0
  301. package/dist/server/services/release.mjs +335 -0
  302. package/dist/server/services/release.mjs.map +1 -0
  303. package/dist/server/services/scheduling.js +71 -0
  304. package/dist/server/services/scheduling.js.map +1 -0
  305. package/dist/server/services/scheduling.mjs +69 -0
  306. package/dist/server/services/scheduling.mjs.map +1 -0
  307. package/dist/server/services/settings.js +34 -0
  308. package/dist/server/services/settings.js.map +1 -0
  309. package/dist/server/services/settings.mjs +32 -0
  310. package/dist/server/services/settings.mjs.map +1 -0
  311. package/dist/server/services/validation.js +91 -0
  312. package/dist/server/services/validation.js.map +1 -0
  313. package/dist/server/services/validation.mjs +86 -0
  314. package/dist/server/services/validation.mjs.map +1 -0
  315. package/dist/server/src/bootstrap.d.ts +5 -0
  316. package/dist/server/src/bootstrap.d.ts.map +1 -0
  317. package/dist/server/src/constants.d.ts +21 -0
  318. package/dist/server/src/constants.d.ts.map +1 -0
  319. package/dist/server/src/content-types/index.d.ts +97 -0
  320. package/dist/server/src/content-types/index.d.ts.map +1 -0
  321. package/dist/server/src/content-types/release/index.d.ts +48 -0
  322. package/dist/server/src/content-types/release/index.d.ts.map +1 -0
  323. package/dist/server/src/content-types/release/schema.d.ts +47 -0
  324. package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
  325. package/dist/server/src/content-types/release-action/index.d.ts +48 -0
  326. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
  327. package/dist/server/src/content-types/release-action/schema.d.ts +47 -0
  328. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
  329. package/dist/server/src/controllers/homepage.d.ts +6 -0
  330. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  331. package/dist/server/src/controllers/index.d.ts +27 -0
  332. package/dist/server/src/controllers/index.d.ts.map +1 -0
  333. package/dist/server/src/controllers/release-action.d.ts +10 -0
  334. package/dist/server/src/controllers/release-action.d.ts.map +1 -0
  335. package/dist/server/src/controllers/release.d.ts +18 -0
  336. package/dist/server/src/controllers/release.d.ts.map +1 -0
  337. package/dist/server/src/controllers/settings.d.ts +11 -0
  338. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  339. package/dist/server/src/controllers/validation/release-action.d.ts +14 -0
  340. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
  341. package/dist/server/src/controllers/validation/release.d.ts +4 -0
  342. package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
  343. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  344. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  345. package/dist/server/src/destroy.d.ts +5 -0
  346. package/dist/server/src/destroy.d.ts.map +1 -0
  347. package/dist/server/src/index.d.ts +372 -0
  348. package/dist/server/src/index.d.ts.map +1 -0
  349. package/dist/server/src/middlewares/documents.d.ts +6 -0
  350. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  351. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  352. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  353. package/dist/server/src/migrations/index.d.ts +13 -0
  354. package/dist/server/src/migrations/index.d.ts.map +1 -0
  355. package/dist/server/src/register.d.ts +5 -0
  356. package/dist/server/src/register.d.ts.map +1 -0
  357. package/dist/server/src/routes/homepage.d.ts +4 -0
  358. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  359. package/dist/server/src/routes/index.d.ts +54 -0
  360. package/dist/server/src/routes/index.d.ts.map +1 -0
  361. package/dist/server/src/routes/release-action.d.ts +18 -0
  362. package/dist/server/src/routes/release-action.d.ts.map +1 -0
  363. package/dist/server/src/routes/release.d.ts +18 -0
  364. package/dist/server/src/routes/release.d.ts.map +1 -0
  365. package/dist/server/src/routes/settings.d.ts +18 -0
  366. package/dist/server/src/routes/settings.d.ts.map +1 -0
  367. package/dist/server/src/services/homepage.d.ts +9 -0
  368. package/dist/server/src/services/homepage.d.ts.map +1 -0
  369. package/dist/server/src/services/index.d.ts +80 -0
  370. package/dist/server/src/services/index.d.ts.map +1 -0
  371. package/dist/server/src/services/release-action.d.ts +33 -0
  372. package/dist/server/src/services/release-action.d.ts.map +1 -0
  373. package/dist/server/src/services/release.d.ts +31 -0
  374. package/dist/server/src/services/release.d.ts.map +1 -0
  375. package/dist/server/src/services/scheduling.d.ts +17 -0
  376. package/dist/server/src/services/scheduling.d.ts.map +1 -0
  377. package/dist/server/src/services/settings.d.ts +13 -0
  378. package/dist/server/src/services/settings.d.ts.map +1 -0
  379. package/dist/server/src/services/validation.d.ts +18 -0
  380. package/dist/server/src/services/validation.d.ts.map +1 -0
  381. package/dist/server/src/utils/index.d.ts +51 -0
  382. package/dist/server/src/utils/index.d.ts.map +1 -0
  383. package/dist/server/utils/index.js +195 -0
  384. package/dist/server/utils/index.js.map +1 -0
  385. package/dist/server/utils/index.mjs +188 -0
  386. package/dist/server/utils/index.mjs.map +1 -0
  387. package/dist/shared/contracts/homepage.d.ts +11 -0
  388. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  389. package/dist/shared/contracts/release-actions.d.ts +137 -0
  390. package/dist/shared/contracts/release-actions.d.ts.map +1 -0
  391. package/dist/shared/contracts/releases.d.ts +182 -0
  392. package/dist/shared/contracts/releases.d.ts.map +1 -0
  393. package/dist/shared/contracts/settings.d.ts +38 -0
  394. package/dist/shared/contracts/settings.d.ts.map +1 -0
  395. package/dist/shared/types.d.ts +24 -0
  396. package/dist/shared/types.d.ts.map +1 -0
  397. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReleaseActionMenu.mjs","sources":["../../../admin/src/components/ReleaseActionMenu.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n useAPIErrorHandler,\r\n useNotification,\r\n useAuth,\r\n useRBAC,\r\n isFetchError,\r\n} from '@strapi/admin/strapi-admin';\r\nimport { Menu, AccessibleIcon, IconButton } from '@strapi/design-system';\r\nimport { Cross, More, Pencil } from '@strapi/icons';\r\nimport { useIntl } from 'react-intl';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { styled } from 'styled-components';\r\n\r\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\r\nimport { Release } from '../../../shared/contracts/releases';\r\nimport { PERMISSIONS } from '../constants';\r\nimport { useDeleteReleaseActionMutation } from '../services/release';\r\n\r\n// TODO: has to be fixed in the DS - https://github.com/strapi/design-system/issues/1934\r\nconst StyledMenuLink = styled(Menu.Item)`\r\n span,\r\n &:hover span {\r\n color: ${({ theme }) => theme.colors['neutral800']};\r\n }\r\n\r\n svg path,\r\n &:hover svg path {\r\n fill: ${({ theme }) => theme.colors['neutral500']};\r\n }\r\n`;\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * DeleteReleaseActionItemProps\r\n * -----------------------------------------------------------------------------------------------*/\r\ninterface DeleteReleaseActionItemProps {\r\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\r\n actionId: DeleteReleaseAction.Request['params']['actionId'];\r\n}\r\n\r\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\r\n const { formatMessage } = useIntl();\r\n const { toggleNotification } = useNotification();\r\n const { formatAPIError } = useAPIErrorHandler();\r\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\r\n const {\r\n allowedActions: { canDeleteAction },\r\n } = useRBAC(PERMISSIONS);\r\n\r\n const handleDeleteAction = async () => {\r\n const response = await deleteReleaseAction({\r\n params: { releaseId, actionId },\r\n });\r\n\r\n if ('data' in response) {\r\n // Handle success\r\n toggleNotification({\r\n type: 'success',\r\n message: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\r\n defaultMessage: 'Entry removed from release',\r\n }),\r\n });\r\n\r\n return;\r\n }\r\n\r\n if ('error' in response) {\r\n if (isFetchError(response.error)) {\r\n // Handle fetch error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatAPIError(response.error),\r\n });\r\n } else {\r\n // Handle generic error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\r\n });\r\n }\r\n }\r\n };\r\n\r\n if (!canDeleteAction) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Menu.Item variant=\"danger\" startIcon={<Cross />} onSelect={handleDeleteAction}>\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.remove-from-release',\r\n defaultMessage: 'Remove from release',\r\n })}\r\n </Menu.Item>\r\n );\r\n};\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ReleaseActionEntryLinkItem\r\n * -----------------------------------------------------------------------------------------------*/\r\ninterface ReleaseActionEntryLinkItemProps {\r\n contentTypeUid: ReleaseAction['contentType'];\r\n documentId: ReleaseAction['entry']['documentId'];\r\n locale: ReleaseAction['locale'];\r\n}\r\n\r\nconst ReleaseActionEntryLinkItem = ({\r\n contentTypeUid,\r\n documentId,\r\n locale,\r\n}: ReleaseActionEntryLinkItemProps) => {\r\n const { formatMessage } = useIntl();\r\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\r\n\r\n // Confirm user has permissions to access the entry for the given locale\r\n const canUpdateEntryForLocale = React.useMemo(() => {\r\n const updatePermissions = userPermissions.find(\r\n (permission) =>\r\n permission.subject === contentTypeUid &&\r\n permission.action === 'plugin::content-manager.explorer.update'\r\n );\r\n\r\n if (!updatePermissions) {\r\n return false;\r\n }\r\n\r\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\r\n }, [contentTypeUid, locale, userPermissions]);\r\n\r\n const {\r\n allowedActions: { canUpdate: canUpdateContentType },\r\n } = useRBAC({\r\n updateContentType: [\r\n {\r\n action: 'plugin::content-manager.explorer.update',\r\n subject: contentTypeUid,\r\n },\r\n ],\r\n });\r\n\r\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledMenuLink\r\n /* @ts-expect-error inference isn't working in DS */\r\n tag={NavLink}\r\n isLink\r\n to={{\r\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\r\n search: locale && `?plugins[i18n][locale]=${locale}`,\r\n }}\r\n startIcon={<Pencil />}\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.edit-entry',\r\n defaultMessage: 'Edit entry',\r\n })}\r\n </StyledMenuLink>\r\n );\r\n};\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * EditReleaseItem\r\n * -----------------------------------------------------------------------------------------------*/\r\ninterface EditReleaseItemProps {\r\n releaseId: Release['id'];\r\n}\r\n\r\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\r\n const { formatMessage } = useIntl();\r\n\r\n return (\r\n <StyledMenuLink\r\n /* @ts-expect-error inference isn't working in DS */\r\n tag={NavLink}\r\n isLink\r\n to={`/plugins/content-releases/${releaseId}`}\r\n startIcon={<Pencil />}\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.edit-release',\r\n defaultMessage: 'Edit release',\r\n })}\r\n </StyledMenuLink>\r\n );\r\n};\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Root\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface RootProps {\r\n children: React.ReactNode;\r\n hasTriggerBorder?: boolean;\r\n}\r\n\r\nconst Root = ({ children }: RootProps) => {\r\n const { formatMessage } = useIntl();\r\n\r\n const { allowedActions } = useRBAC(PERMISSIONS);\r\n\r\n return (\r\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\r\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\r\n <Menu.Root>\r\n <StyledMoreButton\r\n variant=\"tertiary\"\r\n endIcon={null}\r\n tag={IconButton}\r\n icon={\r\n <AccessibleIcon\r\n label={formatMessage({\r\n id: 'content-releases.content-manager-edit-view.release-action-menu',\r\n defaultMessage: 'Release action options',\r\n })}\r\n >\r\n <More />\r\n </AccessibleIcon>\r\n }\r\n />\r\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\r\n {children}\r\n </Menu.Content>\r\n </Menu.Root>\r\n ) : null\r\n );\r\n};\r\n\r\nconst StyledMoreButton = styled(Menu.Trigger)`\r\n & > span {\r\n display: flex;\r\n }\r\n`;\r\n\r\nexport const ReleaseActionMenu = {\r\n Root,\r\n EditReleaseItem,\r\n DeleteReleaseActionItem,\r\n ReleaseActionEntryLinkItem,\r\n};\r\n"],"names":["StyledMenuLink","styled","Menu","Item","theme","colors","DeleteReleaseActionItem","releaseId","actionId","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","deleteReleaseAction","useDeleteReleaseActionMutation","allowedActions","canDeleteAction","useRBAC","PERMISSIONS","handleDeleteAction","response","params","type","message","id","defaultMessage","isFetchError","error","_jsx","variant","startIcon","Cross","onSelect","ReleaseActionEntryLinkItem","contentTypeUid","documentId","locale","userPermissions","useAuth","state","permissions","canUpdateEntryForLocale","React","useMemo","updatePermissions","find","permission","subject","action","Boolean","properties","locales","includes","canUpdate","canUpdateContentType","updateContentType","tag","NavLink","isLink","to","pathname","search","Pencil","EditReleaseItem","Root","children","_jsxs","StyledMoreButton","endIcon","IconButton","icon","AccessibleIcon","label","More","Content","top","popoverPlacement","Trigger","ReleaseActionMenu"],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ require('react');
5
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
+ var strapiAdmin$1 = require('@strapi/content-manager/strapi-admin');
7
+ var designSystem = require('@strapi/design-system');
8
+ var icons = require('@strapi/icons');
9
+ var symbols = require('@strapi/icons/symbols');
10
+ var formik = require('formik');
11
+ var reactIntl = require('react-intl');
12
+ var reactRouterDom = require('react-router-dom');
13
+ var yup = require('yup');
14
+ var constants = require('../constants.js');
15
+ var release = require('../services/release.js');
16
+ var ReleaseActionOptions = require('./ReleaseActionOptions.js');
17
+
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
20
+ var n = Object.create(null);
21
+ if (e) {
22
+ Object.keys(e).forEach(function (k) {
23
+ if (k !== 'default') {
24
+ var d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: function () { return e[k]; }
28
+ });
29
+ }
30
+ });
31
+ }
32
+ n.default = e;
33
+ return Object.freeze(n);
34
+ }
35
+
36
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
37
+
38
+ /* -------------------------------------------------------------------------------------------------
39
+ * AddActionToReleaseModal
40
+ * -----------------------------------------------------------------------------------------------*/ const RELEASE_ACTION_FORM_SCHEMA = yup__namespace.object().shape({
41
+ type: yup__namespace.string().oneOf([
42
+ 'publish',
43
+ 'unpublish'
44
+ ]).required(),
45
+ releaseId: yup__namespace.string().required()
46
+ });
47
+ const INITIAL_VALUES = {
48
+ type: 'publish',
49
+ releaseId: ''
50
+ };
51
+ const NoReleases = ()=>{
52
+ const { formatMessage } = reactIntl.useIntl();
53
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
54
+ icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
55
+ width: "16rem"
56
+ }),
57
+ content: formatMessage({
58
+ id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',
59
+ defaultMessage: 'No available releases. Open the list of releases and create a new one from there.'
60
+ }),
61
+ action: /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
62
+ to: {
63
+ pathname: '/plugins/content-releases'
64
+ },
65
+ tag: reactRouterDom.Link,
66
+ variant: "secondary",
67
+ children: formatMessage({
68
+ id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',
69
+ defaultMessage: 'Open the list of releases'
70
+ })
71
+ }),
72
+ shadow: "none"
73
+ });
74
+ };
75
+ const AddActionToReleaseModal = ({ contentType, documentId, onInputChange, values })=>{
76
+ const { formatMessage } = reactIntl.useIntl();
77
+ const [{ query }] = strapiAdmin.useQueryParams();
78
+ const locale = query.plugins?.i18n?.locale;
79
+ // Get all 'pending' releases that do not have the entry attached
80
+ const response = release.useGetReleasesForEntryQuery({
81
+ contentType,
82
+ entryDocumentId: documentId,
83
+ hasEntryAttached: false,
84
+ locale
85
+ });
86
+ const releases = response.data?.data;
87
+ if (releases?.length === 0) {
88
+ return /*#__PURE__*/ jsxRuntime.jsx(NoReleases, {});
89
+ }
90
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
91
+ direction: "column",
92
+ alignItems: "stretch",
93
+ gap: 2,
94
+ children: [
95
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
96
+ paddingBottom: 6,
97
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
98
+ required: true,
99
+ children: [
100
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
101
+ children: formatMessage({
102
+ id: 'content-releases.content-manager-edit-view.add-to-release.select-label',
103
+ defaultMessage: 'Select a release'
104
+ })
105
+ }),
106
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
107
+ required: true,
108
+ placeholder: formatMessage({
109
+ id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',
110
+ defaultMessage: 'Select'
111
+ }),
112
+ name: "releaseId",
113
+ onChange: (value)=>onInputChange('releaseId', value),
114
+ value: values.releaseId,
115
+ children: releases?.map((release)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
116
+ value: release.id,
117
+ children: release.name
118
+ }, release.id))
119
+ })
120
+ ]
121
+ })
122
+ }),
123
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
124
+ children: formatMessage({
125
+ id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',
126
+ defaultMessage: 'What do you want to do with this entry?'
127
+ })
128
+ }),
129
+ /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionOptions.ReleaseActionOptions, {
130
+ selected: values.type,
131
+ handleChange: (e)=>onInputChange('type', e.target.value),
132
+ name: "type"
133
+ })
134
+ ]
135
+ });
136
+ };
137
+ /* -------------------------------------------------------------------------------------------------
138
+ * ReleaseActionModalForm
139
+ * -----------------------------------------------------------------------------------------------*/ const ReleaseActionModalForm = ({ documentId, document, model, collectionType })=>{
140
+ const { formatMessage } = reactIntl.useIntl();
141
+ const { allowedActions } = strapiAdmin.useRBAC(constants.PERMISSIONS);
142
+ const { canCreateAction } = allowedActions;
143
+ const [createReleaseAction, { isLoading }] = release.useCreateReleaseActionMutation();
144
+ const { toggleNotification } = strapiAdmin.useNotification();
145
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
146
+ const [{ query }] = strapiAdmin.useQueryParams();
147
+ const locale = query.plugins?.i18n?.locale;
148
+ const handleSubmit = async (e, onClose)=>{
149
+ try {
150
+ await formik$1.handleSubmit(e);
151
+ onClose();
152
+ } catch (error) {
153
+ if (strapiAdmin.isFetchError(error)) {
154
+ // Handle axios error
155
+ toggleNotification({
156
+ type: 'danger',
157
+ message: formatAPIError(error)
158
+ });
159
+ } else {
160
+ // Handle generic error
161
+ toggleNotification({
162
+ type: 'danger',
163
+ message: formatMessage({
164
+ id: 'notification.error',
165
+ defaultMessage: 'An error occurred'
166
+ })
167
+ });
168
+ }
169
+ }
170
+ };
171
+ const formik$1 = formik.useFormik({
172
+ initialValues: INITIAL_VALUES,
173
+ validationSchema: RELEASE_ACTION_FORM_SCHEMA,
174
+ onSubmit: async (values)=>{
175
+ if (collectionType === 'collection-types' && !documentId) {
176
+ throw new Error('Document id is required');
177
+ }
178
+ const response = await createReleaseAction({
179
+ body: {
180
+ type: values.type,
181
+ contentType: model,
182
+ entryDocumentId: documentId,
183
+ locale
184
+ },
185
+ params: {
186
+ releaseId: values.releaseId
187
+ }
188
+ });
189
+ if ('data' in response) {
190
+ // Handle success
191
+ toggleNotification({
192
+ type: 'success',
193
+ message: formatMessage({
194
+ id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',
195
+ defaultMessage: 'Entry added to release'
196
+ })
197
+ });
198
+ return;
199
+ }
200
+ if ('error' in response) {
201
+ throw response.error;
202
+ }
203
+ }
204
+ });
205
+ const { edit: { options } } = strapiAdmin$1.unstable_useDocumentLayout(model);
206
+ // Project is not EE or contentType does not have draftAndPublish enabled
207
+ if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {
208
+ return null;
209
+ }
210
+ if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {
211
+ return null;
212
+ }
213
+ return {
214
+ label: formatMessage({
215
+ id: 'content-releases.content-manager-edit-view.add-to-release',
216
+ defaultMessage: 'Add to release'
217
+ }),
218
+ icon: /*#__PURE__*/ jsxRuntime.jsx(icons.PaperPlane, {}),
219
+ // Entry is creating so we don't want to allow adding it to a release
220
+ disabled: !document,
221
+ position: [
222
+ 'panel',
223
+ 'table-row'
224
+ ],
225
+ dialog: {
226
+ type: 'modal',
227
+ title: formatMessage({
228
+ id: 'content-releases.content-manager-edit-view.add-to-release',
229
+ defaultMessage: 'Add to release'
230
+ }),
231
+ content: /*#__PURE__*/ jsxRuntime.jsx(AddActionToReleaseModal, {
232
+ contentType: model,
233
+ documentId: documentId,
234
+ onInputChange: formik$1.setFieldValue,
235
+ values: formik$1.values
236
+ }),
237
+ footer: ({ onClose })=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Footer, {
238
+ children: [
239
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
240
+ onClick: onClose,
241
+ variant: "tertiary",
242
+ name: "cancel",
243
+ children: formatMessage({
244
+ id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',
245
+ defaultMessage: 'Cancel'
246
+ })
247
+ }),
248
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
249
+ type: "submit",
250
+ // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent
251
+ onClick: (e)=>handleSubmit(e, onClose),
252
+ disabled: !formik$1.values.releaseId,
253
+ loading: isLoading,
254
+ children: formatMessage({
255
+ id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',
256
+ defaultMessage: 'Continue'
257
+ })
258
+ })
259
+ ]
260
+ })
261
+ }
262
+ };
263
+ };
264
+
265
+ exports.INITIAL_VALUES = INITIAL_VALUES;
266
+ exports.NoReleases = NoReleases;
267
+ exports.RELEASE_ACTION_FORM_SCHEMA = RELEASE_ACTION_FORM_SCHEMA;
268
+ exports.ReleaseActionModalForm = ReleaseActionModalForm;
269
+ //# sourceMappingURL=ReleaseActionModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReleaseActionModal.js","sources":["../../../admin/src/components/ReleaseActionModal.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n useAPIErrorHandler,\r\n useNotification,\r\n useQueryParams,\r\n useRBAC,\r\n isFetchError,\r\n} from '@strapi/admin/strapi-admin';\r\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\r\nimport {\r\n Box,\r\n Button,\r\n Flex,\r\n SingleSelect,\r\n SingleSelectOption,\r\n EmptyStateLayout,\r\n LinkButton,\r\n Field,\r\n Modal,\r\n} from '@strapi/design-system';\r\nimport { PaperPlane } from '@strapi/icons';\r\nimport { EmptyDocuments } from '@strapi/icons/symbols';\r\nimport { useFormik } from 'formik';\r\nimport { useIntl } from 'react-intl';\r\nimport { Link as ReactRouterLink } from 'react-router-dom';\r\nimport * as yup from 'yup';\r\n\r\nimport { CreateReleaseAction } from '../../../shared/contracts/release-actions';\r\nimport { PERMISSIONS } from '../constants';\r\nimport { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release';\r\n\r\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\r\n\r\nimport type {\r\n DocumentActionComponent,\r\n DocumentActionProps,\r\n} from '@strapi/content-manager/strapi-admin';\r\nimport type { UID } from '@strapi/types';\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AddActionToReleaseModal\r\n * -----------------------------------------------------------------------------------------------*/\r\nexport const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({\r\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\r\n releaseId: yup.string().required(),\r\n});\r\n\r\nexport interface FormValues {\r\n type: CreateReleaseAction.Request['body']['type'];\r\n releaseId: CreateReleaseAction.Request['params']['releaseId'];\r\n}\r\n\r\nexport const INITIAL_VALUES = {\r\n type: 'publish',\r\n releaseId: '',\r\n} satisfies FormValues;\r\n\r\ninterface AddActionToReleaseModalProps {\r\n contentType: string;\r\n documentId?: string;\r\n onInputChange: (field: keyof FormValues, value: string | number) => void;\r\n values: FormValues;\r\n}\r\n\r\nexport const NoReleases = () => {\r\n const { formatMessage } = useIntl();\r\n return (\r\n <EmptyStateLayout\r\n icon={<EmptyDocuments width=\"16rem\" />}\r\n content={formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',\r\n defaultMessage:\r\n 'No available releases. Open the list of releases and create a new one from there.',\r\n })}\r\n action={\r\n <LinkButton\r\n to={{\r\n pathname: '/plugins/content-releases',\r\n }}\r\n tag={ReactRouterLink}\r\n variant=\"secondary\"\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',\r\n defaultMessage: 'Open the list of releases',\r\n })}\r\n </LinkButton>\r\n }\r\n shadow=\"none\"\r\n />\r\n );\r\n};\r\n\r\nconst AddActionToReleaseModal = ({\r\n contentType,\r\n documentId,\r\n onInputChange,\r\n values,\r\n}: AddActionToReleaseModalProps) => {\r\n const { formatMessage } = useIntl();\r\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\r\n const locale = query.plugins?.i18n?.locale;\r\n\r\n // Get all 'pending' releases that do not have the entry attached\r\n const response = useGetReleasesForEntryQuery({\r\n contentType,\r\n entryDocumentId: documentId,\r\n hasEntryAttached: false,\r\n locale,\r\n });\r\n\r\n const releases = response.data?.data;\r\n\r\n if (releases?.length === 0) {\r\n return <NoReleases />;\r\n }\r\n\r\n return (\r\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\r\n <Box paddingBottom={6}>\r\n <Field.Root required>\r\n <Field.Label>\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.select-label',\r\n defaultMessage: 'Select a release',\r\n })}\r\n </Field.Label>\r\n <SingleSelect\r\n required\r\n placeholder={formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',\r\n defaultMessage: 'Select',\r\n })}\r\n name=\"releaseId\"\r\n onChange={(value) => onInputChange('releaseId', value)}\r\n value={values.releaseId}\r\n >\r\n {releases?.map((release) => (\r\n <SingleSelectOption key={release.id} value={release.id}>\r\n {release.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n </Field.Root>\r\n </Box>\r\n <Field.Label>\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',\r\n defaultMessage: 'What do you want to do with this entry?',\r\n })}\r\n </Field.Label>\r\n <ReleaseActionOptions\r\n selected={values.type}\r\n handleChange={(e) => onInputChange('type', e.target.value)}\r\n name=\"type\"\r\n />\r\n </Flex>\r\n );\r\n};\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ReleaseActionModalForm\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nconst ReleaseActionModalForm: DocumentActionComponent = ({\r\n documentId,\r\n document,\r\n model,\r\n collectionType,\r\n}: DocumentActionProps) => {\r\n const { formatMessage } = useIntl();\r\n const { allowedActions } = useRBAC(PERMISSIONS);\r\n const { canCreateAction } = allowedActions;\r\n const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();\r\n const { toggleNotification } = useNotification();\r\n const { formatAPIError } = useAPIErrorHandler();\r\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\r\n const locale = query.plugins?.i18n?.locale;\r\n\r\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>, onClose: () => void) => {\r\n try {\r\n await formik.handleSubmit(e);\r\n onClose();\r\n } catch (error) {\r\n if (isFetchError(error)) {\r\n // Handle axios error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatAPIError(error),\r\n });\r\n } else {\r\n // Handle generic error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatMessage({\r\n id: 'notification.error',\r\n defaultMessage: 'An error occurred',\r\n }),\r\n });\r\n }\r\n }\r\n };\r\n\r\n const formik = useFormik({\r\n initialValues: INITIAL_VALUES,\r\n validationSchema: RELEASE_ACTION_FORM_SCHEMA,\r\n onSubmit: async (values: FormValues) => {\r\n if (collectionType === 'collection-types' && !documentId) {\r\n throw new Error('Document id is required');\r\n }\r\n\r\n const response = await createReleaseAction({\r\n body: {\r\n type: values.type,\r\n contentType: model as UID.ContentType,\r\n entryDocumentId: documentId,\r\n locale,\r\n },\r\n params: { releaseId: values.releaseId },\r\n });\r\n\r\n if ('data' in response) {\r\n // Handle success\r\n toggleNotification({\r\n type: 'success',\r\n message: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',\r\n defaultMessage: 'Entry added to release',\r\n }),\r\n });\r\n\r\n return;\r\n }\r\n\r\n if ('error' in response) {\r\n throw response.error;\r\n }\r\n },\r\n });\r\n\r\n const {\r\n edit: { options },\r\n } = useDocumentLayout(model);\r\n\r\n // Project is not EE or contentType does not have draftAndPublish enabled\r\n if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {\r\n return null;\r\n }\r\n\r\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\r\n return null;\r\n }\r\n\r\n return {\r\n label: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release',\r\n defaultMessage: 'Add to release',\r\n }),\r\n icon: <PaperPlane />,\r\n // Entry is creating so we don't want to allow adding it to a release\r\n disabled: !document,\r\n position: ['panel', 'table-row'],\r\n dialog: {\r\n type: 'modal',\r\n title: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release',\r\n defaultMessage: 'Add to release',\r\n }),\r\n content: (\r\n <AddActionToReleaseModal\r\n contentType={model}\r\n documentId={documentId}\r\n onInputChange={formik.setFieldValue}\r\n values={formik.values}\r\n />\r\n ),\r\n footer: ({ onClose }) => (\r\n <Modal.Footer>\r\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',\r\n defaultMessage: 'Cancel',\r\n })}\r\n </Button>\r\n <Button\r\n type=\"submit\"\r\n // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent\r\n onClick={(e) => handleSubmit(e, onClose)}\r\n disabled={!formik.values.releaseId}\r\n loading={isLoading}\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',\r\n defaultMessage: 'Continue',\r\n })}\r\n </Button>\r\n </Modal.Footer>\r\n ),\r\n },\r\n };\r\n};\r\n\r\nexport { ReleaseActionModalForm };\r\n"],"names":["RELEASE_ACTION_FORM_SCHEMA","yup","object","shape","type","string","oneOf","required","releaseId","INITIAL_VALUES","NoReleases","formatMessage","useIntl","_jsx","EmptyStateLayout","icon","EmptyDocuments","width","content","id","defaultMessage","action","LinkButton","to","pathname","tag","ReactRouterLink","variant","shadow","AddActionToReleaseModal","contentType","documentId","onInputChange","values","query","useQueryParams","locale","plugins","i18n","response","useGetReleasesForEntryQuery","entryDocumentId","hasEntryAttached","releases","data","length","_jsxs","Flex","direction","alignItems","gap","Box","paddingBottom","Field","Root","Label","SingleSelect","placeholder","name","onChange","value","map","release","SingleSelectOption","ReleaseActionOptions","selected","handleChange","e","target","ReleaseActionModalForm","document","model","collectionType","allowedActions","useRBAC","PERMISSIONS","canCreateAction","createReleaseAction","isLoading","useCreateReleaseActionMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","handleSubmit","onClose","formik","error","isFetchError","message","useFormik","initialValues","validationSchema","onSubmit","Error","body","params","edit","options","useDocumentLayout","window","strapi","isEE","draftAndPublish","label","PaperPlane","disabled","position","dialog","title","setFieldValue","footer","Modal","Footer","Button","onClick","loading"],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import 'react';
3
+ import { useRBAC, useNotification, useAPIErrorHandler, useQueryParams, isFetchError } from '@strapi/admin/strapi-admin';
4
+ import { unstable_useDocumentLayout } from '@strapi/content-manager/strapi-admin';
5
+ import { Modal, Button, Flex, Box, Field, SingleSelect, SingleSelectOption, EmptyStateLayout, LinkButton } from '@strapi/design-system';
6
+ import { PaperPlane } from '@strapi/icons';
7
+ import { EmptyDocuments } from '@strapi/icons/symbols';
8
+ import { useFormik } from 'formik';
9
+ import { useIntl } from 'react-intl';
10
+ import { Link } from 'react-router-dom';
11
+ import * as yup from 'yup';
12
+ import { PERMISSIONS } from '../constants.mjs';
13
+ import { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release.mjs';
14
+ import { ReleaseActionOptions } from './ReleaseActionOptions.mjs';
15
+
16
+ /* -------------------------------------------------------------------------------------------------
17
+ * AddActionToReleaseModal
18
+ * -----------------------------------------------------------------------------------------------*/ const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({
19
+ type: yup.string().oneOf([
20
+ 'publish',
21
+ 'unpublish'
22
+ ]).required(),
23
+ releaseId: yup.string().required()
24
+ });
25
+ const INITIAL_VALUES = {
26
+ type: 'publish',
27
+ releaseId: ''
28
+ };
29
+ const NoReleases = ()=>{
30
+ const { formatMessage } = useIntl();
31
+ return /*#__PURE__*/ jsx(EmptyStateLayout, {
32
+ icon: /*#__PURE__*/ jsx(EmptyDocuments, {
33
+ width: "16rem"
34
+ }),
35
+ content: formatMessage({
36
+ id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',
37
+ defaultMessage: 'No available releases. Open the list of releases and create a new one from there.'
38
+ }),
39
+ action: /*#__PURE__*/ jsx(LinkButton, {
40
+ to: {
41
+ pathname: '/plugins/content-releases'
42
+ },
43
+ tag: Link,
44
+ variant: "secondary",
45
+ children: formatMessage({
46
+ id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',
47
+ defaultMessage: 'Open the list of releases'
48
+ })
49
+ }),
50
+ shadow: "none"
51
+ });
52
+ };
53
+ const AddActionToReleaseModal = ({ contentType, documentId, onInputChange, values })=>{
54
+ const { formatMessage } = useIntl();
55
+ const [{ query }] = useQueryParams();
56
+ const locale = query.plugins?.i18n?.locale;
57
+ // Get all 'pending' releases that do not have the entry attached
58
+ const response = useGetReleasesForEntryQuery({
59
+ contentType,
60
+ entryDocumentId: documentId,
61
+ hasEntryAttached: false,
62
+ locale
63
+ });
64
+ const releases = response.data?.data;
65
+ if (releases?.length === 0) {
66
+ return /*#__PURE__*/ jsx(NoReleases, {});
67
+ }
68
+ return /*#__PURE__*/ jsxs(Flex, {
69
+ direction: "column",
70
+ alignItems: "stretch",
71
+ gap: 2,
72
+ children: [
73
+ /*#__PURE__*/ jsx(Box, {
74
+ paddingBottom: 6,
75
+ children: /*#__PURE__*/ jsxs(Field.Root, {
76
+ required: true,
77
+ children: [
78
+ /*#__PURE__*/ jsx(Field.Label, {
79
+ children: formatMessage({
80
+ id: 'content-releases.content-manager-edit-view.add-to-release.select-label',
81
+ defaultMessage: 'Select a release'
82
+ })
83
+ }),
84
+ /*#__PURE__*/ jsx(SingleSelect, {
85
+ required: true,
86
+ placeholder: formatMessage({
87
+ id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',
88
+ defaultMessage: 'Select'
89
+ }),
90
+ name: "releaseId",
91
+ onChange: (value)=>onInputChange('releaseId', value),
92
+ value: values.releaseId,
93
+ children: releases?.map((release)=>/*#__PURE__*/ jsx(SingleSelectOption, {
94
+ value: release.id,
95
+ children: release.name
96
+ }, release.id))
97
+ })
98
+ ]
99
+ })
100
+ }),
101
+ /*#__PURE__*/ jsx(Field.Label, {
102
+ children: formatMessage({
103
+ id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',
104
+ defaultMessage: 'What do you want to do with this entry?'
105
+ })
106
+ }),
107
+ /*#__PURE__*/ jsx(ReleaseActionOptions, {
108
+ selected: values.type,
109
+ handleChange: (e)=>onInputChange('type', e.target.value),
110
+ name: "type"
111
+ })
112
+ ]
113
+ });
114
+ };
115
+ /* -------------------------------------------------------------------------------------------------
116
+ * ReleaseActionModalForm
117
+ * -----------------------------------------------------------------------------------------------*/ const ReleaseActionModalForm = ({ documentId, document, model, collectionType })=>{
118
+ const { formatMessage } = useIntl();
119
+ const { allowedActions } = useRBAC(PERMISSIONS);
120
+ const { canCreateAction } = allowedActions;
121
+ const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
122
+ const { toggleNotification } = useNotification();
123
+ const { formatAPIError } = useAPIErrorHandler();
124
+ const [{ query }] = useQueryParams();
125
+ const locale = query.plugins?.i18n?.locale;
126
+ const handleSubmit = async (e, onClose)=>{
127
+ try {
128
+ await formik.handleSubmit(e);
129
+ onClose();
130
+ } catch (error) {
131
+ if (isFetchError(error)) {
132
+ // Handle axios error
133
+ toggleNotification({
134
+ type: 'danger',
135
+ message: formatAPIError(error)
136
+ });
137
+ } else {
138
+ // Handle generic error
139
+ toggleNotification({
140
+ type: 'danger',
141
+ message: formatMessage({
142
+ id: 'notification.error',
143
+ defaultMessage: 'An error occurred'
144
+ })
145
+ });
146
+ }
147
+ }
148
+ };
149
+ const formik = useFormik({
150
+ initialValues: INITIAL_VALUES,
151
+ validationSchema: RELEASE_ACTION_FORM_SCHEMA,
152
+ onSubmit: async (values)=>{
153
+ if (collectionType === 'collection-types' && !documentId) {
154
+ throw new Error('Document id is required');
155
+ }
156
+ const response = await createReleaseAction({
157
+ body: {
158
+ type: values.type,
159
+ contentType: model,
160
+ entryDocumentId: documentId,
161
+ locale
162
+ },
163
+ params: {
164
+ releaseId: values.releaseId
165
+ }
166
+ });
167
+ if ('data' in response) {
168
+ // Handle success
169
+ toggleNotification({
170
+ type: 'success',
171
+ message: formatMessage({
172
+ id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',
173
+ defaultMessage: 'Entry added to release'
174
+ })
175
+ });
176
+ return;
177
+ }
178
+ if ('error' in response) {
179
+ throw response.error;
180
+ }
181
+ }
182
+ });
183
+ const { edit: { options } } = unstable_useDocumentLayout(model);
184
+ // Project is not EE or contentType does not have draftAndPublish enabled
185
+ if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {
186
+ return null;
187
+ }
188
+ if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {
189
+ return null;
190
+ }
191
+ return {
192
+ label: formatMessage({
193
+ id: 'content-releases.content-manager-edit-view.add-to-release',
194
+ defaultMessage: 'Add to release'
195
+ }),
196
+ icon: /*#__PURE__*/ jsx(PaperPlane, {}),
197
+ // Entry is creating so we don't want to allow adding it to a release
198
+ disabled: !document,
199
+ position: [
200
+ 'panel',
201
+ 'table-row'
202
+ ],
203
+ dialog: {
204
+ type: 'modal',
205
+ title: formatMessage({
206
+ id: 'content-releases.content-manager-edit-view.add-to-release',
207
+ defaultMessage: 'Add to release'
208
+ }),
209
+ content: /*#__PURE__*/ jsx(AddActionToReleaseModal, {
210
+ contentType: model,
211
+ documentId: documentId,
212
+ onInputChange: formik.setFieldValue,
213
+ values: formik.values
214
+ }),
215
+ footer: ({ onClose })=>/*#__PURE__*/ jsxs(Modal.Footer, {
216
+ children: [
217
+ /*#__PURE__*/ jsx(Button, {
218
+ onClick: onClose,
219
+ variant: "tertiary",
220
+ name: "cancel",
221
+ children: formatMessage({
222
+ id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',
223
+ defaultMessage: 'Cancel'
224
+ })
225
+ }),
226
+ /*#__PURE__*/ jsx(Button, {
227
+ type: "submit",
228
+ // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent
229
+ onClick: (e)=>handleSubmit(e, onClose),
230
+ disabled: !formik.values.releaseId,
231
+ loading: isLoading,
232
+ children: formatMessage({
233
+ id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',
234
+ defaultMessage: 'Continue'
235
+ })
236
+ })
237
+ ]
238
+ })
239
+ }
240
+ };
241
+ };
242
+
243
+ export { INITIAL_VALUES, NoReleases, RELEASE_ACTION_FORM_SCHEMA, ReleaseActionModalForm };
244
+ //# sourceMappingURL=ReleaseActionModal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReleaseActionModal.mjs","sources":["../../../admin/src/components/ReleaseActionModal.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n useAPIErrorHandler,\r\n useNotification,\r\n useQueryParams,\r\n useRBAC,\r\n isFetchError,\r\n} from '@strapi/admin/strapi-admin';\r\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\r\nimport {\r\n Box,\r\n Button,\r\n Flex,\r\n SingleSelect,\r\n SingleSelectOption,\r\n EmptyStateLayout,\r\n LinkButton,\r\n Field,\r\n Modal,\r\n} from '@strapi/design-system';\r\nimport { PaperPlane } from '@strapi/icons';\r\nimport { EmptyDocuments } from '@strapi/icons/symbols';\r\nimport { useFormik } from 'formik';\r\nimport { useIntl } from 'react-intl';\r\nimport { Link as ReactRouterLink } from 'react-router-dom';\r\nimport * as yup from 'yup';\r\n\r\nimport { CreateReleaseAction } from '../../../shared/contracts/release-actions';\r\nimport { PERMISSIONS } from '../constants';\r\nimport { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release';\r\n\r\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\r\n\r\nimport type {\r\n DocumentActionComponent,\r\n DocumentActionProps,\r\n} from '@strapi/content-manager/strapi-admin';\r\nimport type { UID } from '@strapi/types';\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AddActionToReleaseModal\r\n * -----------------------------------------------------------------------------------------------*/\r\nexport const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({\r\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\r\n releaseId: yup.string().required(),\r\n});\r\n\r\nexport interface FormValues {\r\n type: CreateReleaseAction.Request['body']['type'];\r\n releaseId: CreateReleaseAction.Request['params']['releaseId'];\r\n}\r\n\r\nexport const INITIAL_VALUES = {\r\n type: 'publish',\r\n releaseId: '',\r\n} satisfies FormValues;\r\n\r\ninterface AddActionToReleaseModalProps {\r\n contentType: string;\r\n documentId?: string;\r\n onInputChange: (field: keyof FormValues, value: string | number) => void;\r\n values: FormValues;\r\n}\r\n\r\nexport const NoReleases = () => {\r\n const { formatMessage } = useIntl();\r\n return (\r\n <EmptyStateLayout\r\n icon={<EmptyDocuments width=\"16rem\" />}\r\n content={formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',\r\n defaultMessage:\r\n 'No available releases. Open the list of releases and create a new one from there.',\r\n })}\r\n action={\r\n <LinkButton\r\n to={{\r\n pathname: '/plugins/content-releases',\r\n }}\r\n tag={ReactRouterLink}\r\n variant=\"secondary\"\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',\r\n defaultMessage: 'Open the list of releases',\r\n })}\r\n </LinkButton>\r\n }\r\n shadow=\"none\"\r\n />\r\n );\r\n};\r\n\r\nconst AddActionToReleaseModal = ({\r\n contentType,\r\n documentId,\r\n onInputChange,\r\n values,\r\n}: AddActionToReleaseModalProps) => {\r\n const { formatMessage } = useIntl();\r\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\r\n const locale = query.plugins?.i18n?.locale;\r\n\r\n // Get all 'pending' releases that do not have the entry attached\r\n const response = useGetReleasesForEntryQuery({\r\n contentType,\r\n entryDocumentId: documentId,\r\n hasEntryAttached: false,\r\n locale,\r\n });\r\n\r\n const releases = response.data?.data;\r\n\r\n if (releases?.length === 0) {\r\n return <NoReleases />;\r\n }\r\n\r\n return (\r\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\r\n <Box paddingBottom={6}>\r\n <Field.Root required>\r\n <Field.Label>\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.select-label',\r\n defaultMessage: 'Select a release',\r\n })}\r\n </Field.Label>\r\n <SingleSelect\r\n required\r\n placeholder={formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',\r\n defaultMessage: 'Select',\r\n })}\r\n name=\"releaseId\"\r\n onChange={(value) => onInputChange('releaseId', value)}\r\n value={values.releaseId}\r\n >\r\n {releases?.map((release) => (\r\n <SingleSelectOption key={release.id} value={release.id}>\r\n {release.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n </Field.Root>\r\n </Box>\r\n <Field.Label>\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',\r\n defaultMessage: 'What do you want to do with this entry?',\r\n })}\r\n </Field.Label>\r\n <ReleaseActionOptions\r\n selected={values.type}\r\n handleChange={(e) => onInputChange('type', e.target.value)}\r\n name=\"type\"\r\n />\r\n </Flex>\r\n );\r\n};\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ReleaseActionModalForm\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nconst ReleaseActionModalForm: DocumentActionComponent = ({\r\n documentId,\r\n document,\r\n model,\r\n collectionType,\r\n}: DocumentActionProps) => {\r\n const { formatMessage } = useIntl();\r\n const { allowedActions } = useRBAC(PERMISSIONS);\r\n const { canCreateAction } = allowedActions;\r\n const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();\r\n const { toggleNotification } = useNotification();\r\n const { formatAPIError } = useAPIErrorHandler();\r\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\r\n const locale = query.plugins?.i18n?.locale;\r\n\r\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>, onClose: () => void) => {\r\n try {\r\n await formik.handleSubmit(e);\r\n onClose();\r\n } catch (error) {\r\n if (isFetchError(error)) {\r\n // Handle axios error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatAPIError(error),\r\n });\r\n } else {\r\n // Handle generic error\r\n toggleNotification({\r\n type: 'danger',\r\n message: formatMessage({\r\n id: 'notification.error',\r\n defaultMessage: 'An error occurred',\r\n }),\r\n });\r\n }\r\n }\r\n };\r\n\r\n const formik = useFormik({\r\n initialValues: INITIAL_VALUES,\r\n validationSchema: RELEASE_ACTION_FORM_SCHEMA,\r\n onSubmit: async (values: FormValues) => {\r\n if (collectionType === 'collection-types' && !documentId) {\r\n throw new Error('Document id is required');\r\n }\r\n\r\n const response = await createReleaseAction({\r\n body: {\r\n type: values.type,\r\n contentType: model as UID.ContentType,\r\n entryDocumentId: documentId,\r\n locale,\r\n },\r\n params: { releaseId: values.releaseId },\r\n });\r\n\r\n if ('data' in response) {\r\n // Handle success\r\n toggleNotification({\r\n type: 'success',\r\n message: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',\r\n defaultMessage: 'Entry added to release',\r\n }),\r\n });\r\n\r\n return;\r\n }\r\n\r\n if ('error' in response) {\r\n throw response.error;\r\n }\r\n },\r\n });\r\n\r\n const {\r\n edit: { options },\r\n } = useDocumentLayout(model);\r\n\r\n // Project is not EE or contentType does not have draftAndPublish enabled\r\n if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {\r\n return null;\r\n }\r\n\r\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\r\n return null;\r\n }\r\n\r\n return {\r\n label: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release',\r\n defaultMessage: 'Add to release',\r\n }),\r\n icon: <PaperPlane />,\r\n // Entry is creating so we don't want to allow adding it to a release\r\n disabled: !document,\r\n position: ['panel', 'table-row'],\r\n dialog: {\r\n type: 'modal',\r\n title: formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release',\r\n defaultMessage: 'Add to release',\r\n }),\r\n content: (\r\n <AddActionToReleaseModal\r\n contentType={model}\r\n documentId={documentId}\r\n onInputChange={formik.setFieldValue}\r\n values={formik.values}\r\n />\r\n ),\r\n footer: ({ onClose }) => (\r\n <Modal.Footer>\r\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',\r\n defaultMessage: 'Cancel',\r\n })}\r\n </Button>\r\n <Button\r\n type=\"submit\"\r\n // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent\r\n onClick={(e) => handleSubmit(e, onClose)}\r\n disabled={!formik.values.releaseId}\r\n loading={isLoading}\r\n >\r\n {formatMessage({\r\n id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',\r\n defaultMessage: 'Continue',\r\n })}\r\n </Button>\r\n </Modal.Footer>\r\n ),\r\n },\r\n };\r\n};\r\n\r\nexport { ReleaseActionModalForm };\r\n"],"names":["RELEASE_ACTION_FORM_SCHEMA","yup","object","shape","type","string","oneOf","required","releaseId","INITIAL_VALUES","NoReleases","formatMessage","useIntl","_jsx","EmptyStateLayout","icon","EmptyDocuments","width","content","id","defaultMessage","action","LinkButton","to","pathname","tag","ReactRouterLink","variant","shadow","AddActionToReleaseModal","contentType","documentId","onInputChange","values","query","useQueryParams","locale","plugins","i18n","response","useGetReleasesForEntryQuery","entryDocumentId","hasEntryAttached","releases","data","length","_jsxs","Flex","direction","alignItems","gap","Box","paddingBottom","Field","Root","Label","SingleSelect","placeholder","name","onChange","value","map","release","SingleSelectOption","ReleaseActionOptions","selected","handleChange","e","target","ReleaseActionModalForm","document","model","collectionType","allowedActions","useRBAC","PERMISSIONS","canCreateAction","createReleaseAction","isLoading","useCreateReleaseActionMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","handleSubmit","onClose","formik","error","isFetchError","message","useFormik","initialValues","validationSchema","onSubmit","Error","body","params","edit","options","useDocumentLayout","window","strapi","isEE","draftAndPublish","label","PaperPlane","disabled","position","dialog","title","setFieldValue","footer","Modal","Footer","Button","onClick","loading"],"mappings":"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"}