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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/dist/_chunks/App-dLXY5ei3.js +1353 -0
  2. package/dist/_chunks/App-dLXY5ei3.js.map +1 -0
  3. package/dist/_chunks/App-jrh58sXY.mjs +1330 -0
  4. package/dist/_chunks/App-jrh58sXY.mjs.map +1 -0
  5. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs +51 -0
  6. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
  7. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js +51 -0
  8. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
  9. package/dist/_chunks/en-HrREghh3.js +86 -0
  10. package/dist/_chunks/en-HrREghh3.js.map +1 -0
  11. package/dist/_chunks/en-ltT1TlKQ.mjs +86 -0
  12. package/dist/_chunks/en-ltT1TlKQ.mjs.map +1 -0
  13. package/dist/_chunks/index-CVO0Rqdm.js +1336 -0
  14. package/dist/_chunks/index-CVO0Rqdm.js.map +1 -0
  15. package/dist/_chunks/index-PiOGBETy.mjs +1315 -0
  16. package/dist/_chunks/index-PiOGBETy.mjs.map +1 -0
  17. package/dist/admin/index.js +18 -148
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +18 -143
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/server/index.js +1784 -25
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/server/index.mjs +1763 -24
  24. package/dist/server/index.mjs.map +1 -1
  25. package/package.json +43 -39
  26. package/strapi-server.js +3 -0
  27. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +0 -6
  28. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +0 -1
  29. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +0 -4
  30. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +0 -1
  31. package/dist/admin/assets/purchase-page-illustration-light.svg.js +0 -6
  32. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +0 -1
  33. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +0 -4
  34. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +0 -1
  35. package/dist/admin/components/EntryValidationPopover.js +0 -310
  36. package/dist/admin/components/EntryValidationPopover.js.map +0 -1
  37. package/dist/admin/components/EntryValidationPopover.mjs +0 -308
  38. package/dist/admin/components/EntryValidationPopover.mjs.map +0 -1
  39. package/dist/admin/components/RelativeTime.js +0 -76
  40. package/dist/admin/components/RelativeTime.js.map +0 -1
  41. package/dist/admin/components/RelativeTime.mjs +0 -55
  42. package/dist/admin/components/RelativeTime.mjs.map +0 -1
  43. package/dist/admin/components/ReleaseAction.js +0 -203
  44. package/dist/admin/components/ReleaseAction.js.map +0 -1
  45. package/dist/admin/components/ReleaseAction.mjs +0 -201
  46. package/dist/admin/components/ReleaseAction.mjs.map +0 -1
  47. package/dist/admin/components/ReleaseActionMenu.js +0 -194
  48. package/dist/admin/components/ReleaseActionMenu.js.map +0 -1
  49. package/dist/admin/components/ReleaseActionMenu.mjs +0 -173
  50. package/dist/admin/components/ReleaseActionMenu.mjs.map +0 -1
  51. package/dist/admin/components/ReleaseActionModal.js +0 -268
  52. package/dist/admin/components/ReleaseActionModal.js.map +0 -1
  53. package/dist/admin/components/ReleaseActionModal.mjs +0 -244
  54. package/dist/admin/components/ReleaseActionModal.mjs.map +0 -1
  55. package/dist/admin/components/ReleaseActionOptions.js +0 -104
  56. package/dist/admin/components/ReleaseActionOptions.js.map +0 -1
  57. package/dist/admin/components/ReleaseActionOptions.mjs +0 -102
  58. package/dist/admin/components/ReleaseActionOptions.mjs.map +0 -1
  59. package/dist/admin/components/ReleaseListCell.js +0 -103
  60. package/dist/admin/components/ReleaseListCell.js.map +0 -1
  61. package/dist/admin/components/ReleaseListCell.mjs +0 -100
  62. package/dist/admin/components/ReleaseListCell.mjs.map +0 -1
  63. package/dist/admin/components/ReleaseModal.js +0 -323
  64. package/dist/admin/components/ReleaseModal.js.map +0 -1
  65. package/dist/admin/components/ReleaseModal.mjs +0 -302
  66. package/dist/admin/components/ReleaseModal.mjs.map +0 -1
  67. package/dist/admin/components/ReleasesPanel.js +0 -138
  68. package/dist/admin/components/ReleasesPanel.js.map +0 -1
  69. package/dist/admin/components/ReleasesPanel.mjs +0 -136
  70. package/dist/admin/components/ReleasesPanel.mjs.map +0 -1
  71. package/dist/admin/components/Widgets.js +0 -122
  72. package/dist/admin/components/Widgets.js.map +0 -1
  73. package/dist/admin/components/Widgets.mjs +0 -120
  74. package/dist/admin/components/Widgets.mjs.map +0 -1
  75. package/dist/admin/constants.js +0 -79
  76. package/dist/admin/constants.js.map +0 -1
  77. package/dist/admin/constants.mjs +0 -76
  78. package/dist/admin/constants.mjs.map +0 -1
  79. package/dist/admin/modules/hooks.js +0 -8
  80. package/dist/admin/modules/hooks.js.map +0 -1
  81. package/dist/admin/modules/hooks.mjs +0 -6
  82. package/dist/admin/modules/hooks.mjs.map +0 -1
  83. package/dist/admin/pages/App.js +0 -29
  84. package/dist/admin/pages/App.js.map +0 -1
  85. package/dist/admin/pages/App.mjs +0 -27
  86. package/dist/admin/pages/App.mjs.map +0 -1
  87. package/dist/admin/pages/PurchaseContentReleases.js +0 -192
  88. package/dist/admin/pages/PurchaseContentReleases.js.map +0 -1
  89. package/dist/admin/pages/PurchaseContentReleases.mjs +0 -190
  90. package/dist/admin/pages/PurchaseContentReleases.mjs.map +0 -1
  91. package/dist/admin/pages/ReleaseDetailsPage.js +0 -772
  92. package/dist/admin/pages/ReleaseDetailsPage.js.map +0 -1
  93. package/dist/admin/pages/ReleaseDetailsPage.mjs +0 -751
  94. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +0 -1
  95. package/dist/admin/pages/ReleasesPage.js +0 -403
  96. package/dist/admin/pages/ReleasesPage.js.map +0 -1
  97. package/dist/admin/pages/ReleasesPage.mjs +0 -381
  98. package/dist/admin/pages/ReleasesPage.mjs.map +0 -1
  99. package/dist/admin/pages/ReleasesSettingsPage.js +0 -225
  100. package/dist/admin/pages/ReleasesSettingsPage.js.map +0 -1
  101. package/dist/admin/pages/ReleasesSettingsPage.mjs +0 -223
  102. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +0 -1
  103. package/dist/admin/pluginId.js +0 -6
  104. package/dist/admin/pluginId.js.map +0 -1
  105. package/dist/admin/pluginId.mjs +0 -4
  106. package/dist/admin/pluginId.mjs.map +0 -1
  107. package/dist/admin/services/homepage.js +0 -24
  108. package/dist/admin/services/homepage.js.map +0 -1
  109. package/dist/admin/services/homepage.mjs +0 -22
  110. package/dist/admin/services/homepage.mjs.map +0 -1
  111. package/dist/admin/services/release.js +0 -474
  112. package/dist/admin/services/release.js.map +0 -1
  113. package/dist/admin/services/release.mjs +0 -457
  114. package/dist/admin/services/release.mjs.map +0 -1
  115. package/dist/admin/src/components/EntryValidationPopover.d.ts +0 -13
  116. package/dist/admin/src/components/RelativeTime.d.ts +0 -28
  117. package/dist/admin/src/components/ReleaseAction.d.ts +0 -3
  118. package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
  119. package/dist/admin/src/components/ReleaseActionModal.d.ts +0 -24
  120. package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
  121. package/dist/admin/src/components/ReleaseListCell.d.ts +0 -28
  122. package/dist/admin/src/components/ReleaseModal.d.ts +0 -17
  123. package/dist/admin/src/components/ReleasesPanel.d.ts +0 -3
  124. package/dist/admin/src/components/Widgets.d.ts +0 -2
  125. package/dist/admin/src/constants.d.ts +0 -77
  126. package/dist/admin/src/index.d.ts +0 -3
  127. package/dist/admin/src/modules/hooks.d.ts +0 -7
  128. package/dist/admin/src/pages/App.d.ts +0 -1
  129. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
  130. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
  131. package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
  132. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +0 -1
  133. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
  134. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
  135. package/dist/admin/src/pluginId.d.ts +0 -1
  136. package/dist/admin/src/services/homepage.d.ts +0 -9
  137. package/dist/admin/src/services/release.d.ts +0 -112
  138. package/dist/admin/src/store/hooks.d.ts +0 -7
  139. package/dist/admin/src/utils/api.d.ts +0 -6
  140. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  141. package/dist/admin/src/utils/time.d.ts +0 -10
  142. package/dist/admin/src/validation/schemas.d.ts +0 -6
  143. package/dist/admin/store/hooks.js +0 -8
  144. package/dist/admin/store/hooks.js.map +0 -1
  145. package/dist/admin/store/hooks.mjs +0 -6
  146. package/dist/admin/store/hooks.mjs.map +0 -1
  147. package/dist/admin/translations/en.json.js +0 -111
  148. package/dist/admin/translations/en.json.js.map +0 -1
  149. package/dist/admin/translations/en.json.mjs +0 -109
  150. package/dist/admin/translations/en.json.mjs.map +0 -1
  151. package/dist/admin/translations/uk.json.js +0 -103
  152. package/dist/admin/translations/uk.json.js.map +0 -1
  153. package/dist/admin/translations/uk.json.mjs +0 -101
  154. package/dist/admin/translations/uk.json.mjs.map +0 -1
  155. package/dist/admin/utils/api.js +0 -8
  156. package/dist/admin/utils/api.js.map +0 -1
  157. package/dist/admin/utils/api.mjs +0 -6
  158. package/dist/admin/utils/api.mjs.map +0 -1
  159. package/dist/admin/utils/prefixPluginTranslations.js +0 -11
  160. package/dist/admin/utils/prefixPluginTranslations.js.map +0 -1
  161. package/dist/admin/utils/prefixPluginTranslations.mjs +0 -9
  162. package/dist/admin/utils/prefixPluginTranslations.mjs.map +0 -1
  163. package/dist/admin/utils/time.js +0 -42
  164. package/dist/admin/utils/time.js.map +0 -1
  165. package/dist/admin/utils/time.mjs +0 -39
  166. package/dist/admin/utils/time.mjs.map +0 -1
  167. package/dist/admin/validation/schemas.js +0 -65
  168. package/dist/admin/validation/schemas.js.map +0 -1
  169. package/dist/admin/validation/schemas.mjs +0 -43
  170. package/dist/admin/validation/schemas.mjs.map +0 -1
  171. package/dist/server/bootstrap.js +0 -68
  172. package/dist/server/bootstrap.js.map +0 -1
  173. package/dist/server/bootstrap.mjs +0 -66
  174. package/dist/server/bootstrap.mjs.map +0 -1
  175. package/dist/server/constants.js +0 -74
  176. package/dist/server/constants.js.map +0 -1
  177. package/dist/server/constants.mjs +0 -69
  178. package/dist/server/constants.mjs.map +0 -1
  179. package/dist/server/content-types/index.js +0 -12
  180. package/dist/server/content-types/index.js.map +0 -1
  181. package/dist/server/content-types/index.mjs +0 -10
  182. package/dist/server/content-types/index.mjs.map +0 -1
  183. package/dist/server/content-types/release/index.js +0 -10
  184. package/dist/server/content-types/release/index.js.map +0 -1
  185. package/dist/server/content-types/release/index.mjs +0 -8
  186. package/dist/server/content-types/release/index.mjs.map +0 -1
  187. package/dist/server/content-types/release/schema.js +0 -58
  188. package/dist/server/content-types/release/schema.js.map +0 -1
  189. package/dist/server/content-types/release/schema.mjs +0 -56
  190. package/dist/server/content-types/release/schema.mjs.map +0 -1
  191. package/dist/server/content-types/release-action/index.js +0 -10
  192. package/dist/server/content-types/release-action/index.js.map +0 -1
  193. package/dist/server/content-types/release-action/index.mjs +0 -8
  194. package/dist/server/content-types/release-action/index.mjs.map +0 -1
  195. package/dist/server/content-types/release-action/schema.js +0 -55
  196. package/dist/server/content-types/release-action/schema.js.map +0 -1
  197. package/dist/server/content-types/release-action/schema.mjs +0 -53
  198. package/dist/server/content-types/release-action/schema.mjs.map +0 -1
  199. package/dist/server/controllers/homepage.js +0 -15
  200. package/dist/server/controllers/homepage.js.map +0 -1
  201. package/dist/server/controllers/homepage.mjs +0 -13
  202. package/dist/server/controllers/homepage.mjs.map +0 -1
  203. package/dist/server/controllers/index.js +0 -16
  204. package/dist/server/controllers/index.js.map +0 -1
  205. package/dist/server/controllers/index.mjs +0 -14
  206. package/dist/server/controllers/index.mjs.map +0 -1
  207. package/dist/server/controllers/release-action.js +0 -150
  208. package/dist/server/controllers/release-action.js.map +0 -1
  209. package/dist/server/controllers/release-action.mjs +0 -148
  210. package/dist/server/controllers/release-action.mjs.map +0 -1
  211. package/dist/server/controllers/release.js +0 -302
  212. package/dist/server/controllers/release.js.map +0 -1
  213. package/dist/server/controllers/release.mjs +0 -300
  214. package/dist/server/controllers/release.mjs.map +0 -1
  215. package/dist/server/controllers/settings.js +0 -37
  216. package/dist/server/controllers/settings.js.map +0 -1
  217. package/dist/server/controllers/settings.mjs +0 -35
  218. package/dist/server/controllers/settings.mjs.map +0 -1
  219. package/dist/server/controllers/validation/release-action.js +0 -34
  220. package/dist/server/controllers/validation/release-action.js.map +0 -1
  221. package/dist/server/controllers/validation/release-action.mjs +0 -30
  222. package/dist/server/controllers/validation/release-action.mjs.map +0 -1
  223. package/dist/server/controllers/validation/release.js +0 -26
  224. package/dist/server/controllers/validation/release.js.map +0 -1
  225. package/dist/server/controllers/validation/release.mjs +0 -22
  226. package/dist/server/controllers/validation/release.mjs.map +0 -1
  227. package/dist/server/controllers/validation/settings.js +0 -32
  228. package/dist/server/controllers/validation/settings.js.map +0 -1
  229. package/dist/server/controllers/validation/settings.mjs +0 -10
  230. package/dist/server/controllers/validation/settings.mjs.map +0 -1
  231. package/dist/server/destroy.js +0 -15
  232. package/dist/server/destroy.js.map +0 -1
  233. package/dist/server/destroy.mjs +0 -13
  234. package/dist/server/destroy.mjs.map +0 -1
  235. package/dist/server/middlewares/documents.js +0 -104
  236. package/dist/server/middlewares/documents.js.map +0 -1
  237. package/dist/server/middlewares/documents.mjs +0 -101
  238. package/dist/server/middlewares/documents.mjs.map +0 -1
  239. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +0 -51
  240. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +0 -1
  241. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +0 -49
  242. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +0 -1
  243. package/dist/server/migrations/index.js +0 -205
  244. package/dist/server/migrations/index.js.map +0 -1
  245. package/dist/server/migrations/index.mjs +0 -198
  246. package/dist/server/migrations/index.mjs.map +0 -1
  247. package/dist/server/register.js +0 -23
  248. package/dist/server/register.js.map +0 -1
  249. package/dist/server/register.mjs +0 -21
  250. package/dist/server/register.mjs.map +0 -1
  251. package/dist/server/routes/homepage.js +0 -25
  252. package/dist/server/routes/homepage.js.map +0 -1
  253. package/dist/server/routes/homepage.mjs +0 -23
  254. package/dist/server/routes/homepage.mjs.map +0 -1
  255. package/dist/server/routes/index.js +0 -16
  256. package/dist/server/routes/index.js.map +0 -1
  257. package/dist/server/routes/index.mjs +0 -14
  258. package/dist/server/routes/index.mjs.map +0 -1
  259. package/dist/server/routes/release-action.js +0 -100
  260. package/dist/server/routes/release-action.js.map +0 -1
  261. package/dist/server/routes/release-action.mjs +0 -98
  262. package/dist/server/routes/release-action.mjs.map +0 -1
  263. package/dist/server/routes/release.js +0 -154
  264. package/dist/server/routes/release.js.map +0 -1
  265. package/dist/server/routes/release.mjs +0 -152
  266. package/dist/server/routes/release.mjs.map +0 -1
  267. package/dist/server/routes/settings.js +0 -46
  268. package/dist/server/routes/settings.js.map +0 -1
  269. package/dist/server/routes/settings.mjs +0 -44
  270. package/dist/server/routes/settings.mjs.map +0 -1
  271. package/dist/server/services/homepage.js +0 -26
  272. package/dist/server/services/homepage.js.map +0 -1
  273. package/dist/server/services/homepage.mjs +0 -24
  274. package/dist/server/services/homepage.mjs.map +0 -1
  275. package/dist/server/services/index.js +0 -20
  276. package/dist/server/services/index.js.map +0 -1
  277. package/dist/server/services/index.mjs +0 -18
  278. package/dist/server/services/index.mjs.map +0 -1
  279. package/dist/server/services/release-action.js +0 -324
  280. package/dist/server/services/release-action.js.map +0 -1
  281. package/dist/server/services/release-action.mjs +0 -322
  282. package/dist/server/services/release-action.mjs.map +0 -1
  283. package/dist/server/services/release.js +0 -324
  284. package/dist/server/services/release.js.map +0 -1
  285. package/dist/server/services/release.mjs +0 -322
  286. package/dist/server/services/release.mjs.map +0 -1
  287. package/dist/server/services/scheduling.js +0 -74
  288. package/dist/server/services/scheduling.js.map +0 -1
  289. package/dist/server/services/scheduling.mjs +0 -72
  290. package/dist/server/services/scheduling.mjs.map +0 -1
  291. package/dist/server/services/settings.js +0 -34
  292. package/dist/server/services/settings.js.map +0 -1
  293. package/dist/server/services/settings.mjs +0 -32
  294. package/dist/server/services/settings.mjs.map +0 -1
  295. package/dist/server/services/validation.js +0 -91
  296. package/dist/server/services/validation.js.map +0 -1
  297. package/dist/server/services/validation.mjs +0 -86
  298. package/dist/server/services/validation.mjs.map +0 -1
  299. package/dist/server/src/bootstrap.d.ts +0 -5
  300. package/dist/server/src/bootstrap.d.ts.map +0 -1
  301. package/dist/server/src/constants.d.ts +0 -21
  302. package/dist/server/src/constants.d.ts.map +0 -1
  303. package/dist/server/src/content-types/index.d.ts +0 -97
  304. package/dist/server/src/content-types/index.d.ts.map +0 -1
  305. package/dist/server/src/content-types/release/index.d.ts +0 -48
  306. package/dist/server/src/content-types/release/index.d.ts.map +0 -1
  307. package/dist/server/src/content-types/release/schema.d.ts +0 -47
  308. package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
  309. package/dist/server/src/content-types/release-action/index.d.ts +0 -48
  310. package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
  311. package/dist/server/src/content-types/release-action/schema.d.ts +0 -47
  312. package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
  313. package/dist/server/src/controllers/homepage.d.ts +0 -6
  314. package/dist/server/src/controllers/homepage.d.ts.map +0 -1
  315. package/dist/server/src/controllers/index.d.ts +0 -28
  316. package/dist/server/src/controllers/index.d.ts.map +0 -1
  317. package/dist/server/src/controllers/release-action.d.ts +0 -10
  318. package/dist/server/src/controllers/release-action.d.ts.map +0 -1
  319. package/dist/server/src/controllers/release.d.ts +0 -18
  320. package/dist/server/src/controllers/release.d.ts.map +0 -1
  321. package/dist/server/src/controllers/settings.d.ts +0 -11
  322. package/dist/server/src/controllers/settings.d.ts.map +0 -1
  323. package/dist/server/src/controllers/validation/release-action.d.ts +0 -14
  324. package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
  325. package/dist/server/src/controllers/validation/release.d.ts +0 -4
  326. package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
  327. package/dist/server/src/controllers/validation/settings.d.ts +0 -3
  328. package/dist/server/src/controllers/validation/settings.d.ts.map +0 -1
  329. package/dist/server/src/destroy.d.ts +0 -5
  330. package/dist/server/src/destroy.d.ts.map +0 -1
  331. package/dist/server/src/index.d.ts +0 -2120
  332. package/dist/server/src/index.d.ts.map +0 -1
  333. package/dist/server/src/middlewares/documents.d.ts +0 -6
  334. package/dist/server/src/middlewares/documents.d.ts.map +0 -1
  335. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +0 -9
  336. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +0 -1
  337. package/dist/server/src/migrations/index.d.ts +0 -13
  338. package/dist/server/src/migrations/index.d.ts.map +0 -1
  339. package/dist/server/src/register.d.ts +0 -5
  340. package/dist/server/src/register.d.ts.map +0 -1
  341. package/dist/server/src/routes/homepage.d.ts +0 -4
  342. package/dist/server/src/routes/homepage.d.ts.map +0 -1
  343. package/dist/server/src/routes/index.d.ts +0 -52
  344. package/dist/server/src/routes/index.d.ts.map +0 -1
  345. package/dist/server/src/routes/release-action.d.ts +0 -18
  346. package/dist/server/src/routes/release-action.d.ts.map +0 -1
  347. package/dist/server/src/routes/release.d.ts +0 -18
  348. package/dist/server/src/routes/release.d.ts.map +0 -1
  349. package/dist/server/src/routes/settings.d.ts +0 -18
  350. package/dist/server/src/routes/settings.d.ts.map +0 -1
  351. package/dist/server/src/services/homepage.d.ts +0 -9
  352. package/dist/server/src/services/homepage.d.ts.map +0 -1
  353. package/dist/server/src/services/index.d.ts +0 -1829
  354. package/dist/server/src/services/index.d.ts.map +0 -1
  355. package/dist/server/src/services/release-action.d.ts +0 -34
  356. package/dist/server/src/services/release-action.d.ts.map +0 -1
  357. package/dist/server/src/services/release.d.ts +0 -31
  358. package/dist/server/src/services/release.d.ts.map +0 -1
  359. package/dist/server/src/services/scheduling.d.ts +0 -17
  360. package/dist/server/src/services/scheduling.d.ts.map +0 -1
  361. package/dist/server/src/services/settings.d.ts +0 -13
  362. package/dist/server/src/services/settings.d.ts.map +0 -1
  363. package/dist/server/src/services/validation.d.ts +0 -18
  364. package/dist/server/src/services/validation.d.ts.map +0 -1
  365. package/dist/server/src/utils/index.d.ts +0 -35
  366. package/dist/server/src/utils/index.d.ts.map +0 -1
  367. package/dist/server/utils/index.js +0 -94
  368. package/dist/server/utils/index.js.map +0 -1
  369. package/dist/server/utils/index.mjs +0 -88
  370. package/dist/server/utils/index.mjs.map +0 -1
  371. package/dist/shared/contracts/homepage.d.ts +0 -11
  372. package/dist/shared/contracts/homepage.d.ts.map +0 -1
  373. package/dist/shared/contracts/release-actions.d.ts +0 -136
  374. package/dist/shared/contracts/release-actions.d.ts.map +0 -1
  375. package/dist/shared/contracts/releases.d.ts +0 -183
  376. package/dist/shared/contracts/releases.d.ts.map +0 -1
  377. package/dist/shared/contracts/settings.d.ts +0 -38
  378. package/dist/shared/contracts/settings.d.ts.map +0 -1
  379. package/dist/shared/types.d.ts +0 -24
  380. package/dist/shared/types.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntryValidationPopover.mjs","sources":["../../../admin/src/components/EntryValidationPopover.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, FormValues } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport { Button, LinkButton, Flex, Typography, Popover } from '@strapi/design-system';\nimport { CheckCircle, CrossCircle, ArrowsCounterClockwise, CaretDown } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl, MessageDescriptor } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport type {\n ReleaseAction,\n ReleaseActionEntry,\n Stage,\n} from '../../../shared/contracts/release-actions';\nimport type { Struct } from '@strapi/types';\n\nconst StyledPopoverFlex = styled(Flex)`\n width: 100%;\n max-width: 256px;\n\n & > * {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n\n & > *:last-child {\n border-bottom: none;\n }\n`;\n\nconst ButtonContent = styled(Flex)`\n svg {\n fill: currentColor;\n }\n`;\n\nconst CustomStatusButton = ({\n children,\n icon,\n color,\n}: {\n icon: React.ReactElement;\n color: string;\n} & React.PropsWithChildren) => {\n return (\n <Popover.Trigger>\n <Button variant=\"ghost\" endIcon={<CaretDown />}>\n <ButtonContent color={color} gap={2}>\n {icon}\n <Typography textColor={color} variant=\"omega\" fontWeight=\"bold\">\n {children}\n </Typography>\n </ButtonContent>\n </Button>\n </Popover.Trigger>\n );\n};\n\ninterface EntryValidationPopoverProps {\n action: ReleaseAction['type'];\n schema?: Struct.ContentTypeSchema & {\n hasReviewWorkflow: boolean;\n stageRequiredToPublish?: Stage;\n };\n entry: ReleaseActionEntry;\n status: ReleaseAction['status'];\n}\n\ninterface ValidationStatusProps {\n action: ReleaseAction['type'];\n status: ReleaseAction['status'];\n hasErrors: boolean | null;\n requiredStage?: Stage;\n entryStage?: Stage;\n}\n\nconst EntryStatusTrigger = ({\n action,\n status,\n hasErrors,\n requiredStage,\n entryStage,\n}: ValidationStatusProps) => {\n const { formatMessage } = useIntl();\n\n if (action === 'publish') {\n if (hasErrors || (requiredStage && requiredStage.id !== entryStage?.id)) {\n return (\n <CustomStatusButton icon={<CrossCircle />} color=\"danger600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.not-ready',\n defaultMessage: 'Not ready to publish',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'draft') {\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'modified') {\n return (\n <CustomStatusButton icon={<ArrowsCounterClockwise />} color=\"alternative600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </CustomStatusButton>\n );\n }\n\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.already-published',\n defaultMessage: 'Already published',\n })}\n </CustomStatusButton>\n );\n }\n\n if (status === 'published') {\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish',\n defaultMessage: 'Ready to unpublish',\n })}\n </CustomStatusButton>\n );\n }\n\n return (\n <CustomStatusButton icon={<CheckCircle />} color=\"success600\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.already-unpublished',\n defaultMessage: 'Already unpublished',\n })}\n </CustomStatusButton>\n );\n};\n\ninterface FieldsValidationProps {\n hasErrors: boolean;\n errors: FormErrors<FormValues> | null;\n kind?: string;\n contentTypeUid?: string;\n documentId?: string;\n locale?: string;\n}\n\nconst FieldsValidation = ({\n hasErrors,\n errors,\n kind,\n contentTypeUid,\n documentId,\n locale,\n}: FieldsValidationProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={1} width=\"100%\" padding={5}>\n <Flex gap={2} width=\"100%\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields',\n defaultMessage: 'Fields',\n })}\n </Typography>\n {hasErrors ? <CrossCircle fill=\"danger600\" /> : <CheckCircle fill=\"success600\" />}\n </Flex>\n <Typography width=\"100%\" textColor=\"neutral600\">\n {hasErrors\n ? formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.error',\n defaultMessage: '{errors} errors on fields.',\n },\n { errors: errors ? Object.keys(errors).length : 0 }\n )\n : formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.success',\n defaultMessage: 'All fields are filled correctly.',\n })}\n </Typography>\n {hasErrors && (\n <LinkButton\n tag={Link}\n to={{\n pathname: `/content-manager/${kind === 'collectionType' ? 'collection-types' : 'single-types'}/${contentTypeUid}/${documentId}`,\n search: locale\n ? stringify({\n plugins: {\n i18n: {\n locale,\n },\n },\n })\n : '',\n }}\n variant=\"secondary\"\n fullWidth\n state={{ forceValidation: true }}\n >\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.fields.see-errors',\n defaultMessage: 'See errors',\n })}\n </LinkButton>\n )}\n </Flex>\n );\n};\n\nconst getReviewStageIcon = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n}) => {\n if (!contentTypeHasReviewWorkflow) {\n return <CheckCircle fill=\"neutral200\" />;\n }\n if (requiredStage && requiredStage.id !== entryStage?.id) {\n return <CrossCircle fill=\"danger600\" />;\n }\n return <CheckCircle fill=\"success600\" />;\n};\n\nconst getReviewStageMessage = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n formatMessage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n formatMessage: (messageDescriptor: MessageDescriptor, values?: Record<string, string>) => string;\n}) => {\n if (!contentTypeHasReviewWorkflow) {\n return formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-enabled',\n defaultMessage: 'This entry is not associated to any workflow.',\n });\n }\n\n if (requiredStage && requiredStage.id !== entryStage?.id) {\n return formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-ready',\n defaultMessage: 'This entry is not at the required stage for publishing. ({stageName})',\n },\n {\n stageName: requiredStage?.name ?? '',\n }\n );\n }\n\n if (requiredStage && requiredStage.id === entryStage?.id) {\n return formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.ready',\n defaultMessage: 'This entry is at the required stage for publishing. ({stageName})',\n },\n {\n stageName: requiredStage?.name ?? '',\n }\n );\n }\n\n return formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage.stage-not-required',\n defaultMessage: 'No required stage for publication',\n });\n};\n\nconst ReviewStageValidation = ({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n}: {\n contentTypeHasReviewWorkflow: boolean;\n requiredStage?: Stage;\n entryStage?: Stage;\n}) => {\n const { formatMessage } = useIntl();\n\n const Icon = getReviewStageIcon({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n });\n\n return (\n <Flex direction=\"column\" gap={1} width=\"100%\" padding={5}>\n <Flex gap={2} width=\"100%\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.pages.ReleaseDetails.entry-validation.review-stage',\n defaultMessage: 'Review stage',\n })}\n </Typography>\n {Icon}\n </Flex>\n <Typography textColor=\"neutral600\">\n {getReviewStageMessage({\n contentTypeHasReviewWorkflow,\n requiredStage,\n entryStage,\n formatMessage,\n })}\n </Typography>\n </Flex>\n );\n};\n\nexport const EntryValidationPopover = ({\n schema,\n entry,\n status,\n action,\n}: EntryValidationPopoverProps) => {\n const { validate, isLoading } = unstable_useDocument(\n {\n collectionType: schema?.kind ?? '',\n model: schema?.uid ?? '',\n },\n {\n // useDocument makes a request to get more data about the entry, but we only want to have the validation function so we skip the request\n skip: true,\n }\n );\n\n // Validation errors\n const errors = isLoading ? null : validate(entry);\n const hasErrors = errors ? Object.keys(errors).length > 0 : false;\n\n // Entry stage\n const contentTypeHasReviewWorkflow = schema?.hasReviewWorkflow ?? false;\n const requiredStage = schema?.stageRequiredToPublish;\n const entryStage = entry.strapi_stage;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <Popover.Root>\n <EntryStatusTrigger\n action={action}\n status={status}\n hasErrors={hasErrors}\n requiredStage={requiredStage}\n entryStage={entryStage}\n />\n <Popover.Content>\n <StyledPopoverFlex direction=\"column\">\n <FieldsValidation\n hasErrors={hasErrors}\n errors={errors}\n contentTypeUid={schema?.uid}\n kind={schema?.kind}\n documentId={entry.documentId}\n locale={entry.locale}\n />\n <ReviewStageValidation\n contentTypeHasReviewWorkflow={contentTypeHasReviewWorkflow}\n requiredStage={requiredStage}\n entryStage={entryStage}\n />\n </StyledPopoverFlex>\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["StyledPopoverFlex","styled","Flex","theme","colors","neutral150","ButtonContent","CustomStatusButton","children","icon","color","_jsx","Popover","Trigger","Button","variant","endIcon","CaretDown","_jsxs","gap","Typography","textColor","fontWeight","EntryStatusTrigger","action","status","hasErrors","requiredStage","entryStage","formatMessage","useIntl","id","CrossCircle","defaultMessage","CheckCircle","ArrowsCounterClockwise","FieldsValidation","errors","kind","contentTypeUid","documentId","locale","direction","width","padding","fill","Object","keys","length","LinkButton","tag","Link","to","pathname","search","stringify","plugins","i18n","fullWidth","state","forceValidation","getReviewStageIcon","contentTypeHasReviewWorkflow","getReviewStageMessage","stageName","name","ReviewStageValidation","Icon","EntryValidationPopover","schema","entry","validate","isLoading","unstable_useDocument","collectionType","model","uid","skip","hasReviewWorkflow","stageRequiredToPublish","strapi_stage","Root","Content"],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var dateFns = require('date-fns');
6
- var reactIntl = require('react-intl');
7
-
8
- function _interopNamespaceDefault(e) {
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
26
-
27
- const intervals = [
28
- 'years',
29
- 'months',
30
- 'days',
31
- 'hours',
32
- 'minutes',
33
- 'seconds'
34
- ];
35
- /**
36
- * Displays the relative time between a given timestamp and the current time.
37
- * You can display a custom message for given time intervals by passing an array of custom intervals.
38
- *
39
- * @example
40
- * ```jsx
41
- * <caption>Display "last hour" if the timestamp is less than an hour ago</caption>
42
- * <RelativeTime
43
- * timestamp={new Date('2021-01-01')}
44
- * customIntervals={[
45
- * { unit: 'hours', threshold: 1, text: 'last hour' },
46
- * ]}
47
- * ```
48
- */ const RelativeTime = /*#__PURE__*/ React__namespace.forwardRef(({ timestamp, customIntervals = [], ...restProps }, forwardedRef)=>{
49
- const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
50
- /**
51
- * TODO: make this auto-update, like a clock.
52
- */ const interval = dateFns.intervalToDuration({
53
- start: timestamp,
54
- end: Date.now()
55
- });
56
- const unit = intervals.find((intervalUnit)=>{
57
- return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
58
- });
59
- const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
60
- // Display custom text if interval is less than the threshold
61
- const customInterval = customIntervals.find((custom)=>interval[custom.unit] < custom.threshold);
62
- const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, {
63
- numeric: 'auto'
64
- });
65
- return /*#__PURE__*/ jsxRuntime.jsx("time", {
66
- ref: forwardedRef,
67
- dateTime: timestamp.toISOString(),
68
- role: "time",
69
- title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
70
- ...restProps,
71
- children: displayText
72
- });
73
- });
74
-
75
- exports.RelativeTime = RelativeTime;
76
- //# sourceMappingURL=RelativeTime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RelativeTime.js","sources":["../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,SAAmC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACKC,MAAAA,YAAAA,iBAAeC,gBAAMC,CAAAA,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAkB,GAAA,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,0BAAmB,CAAA;QAClCC,KAAOV,EAAAA,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAOlB,GAAAA,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAUW,CAAAA,CAAAA,QAAQ,CAACH,YAAAA,CAAAA;AACtE,KAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,cAAOrB,CAAAA,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAK,CAAA,GAAGN,QAAQ,CAACM,IAAK,CAAA;;AAGzE,IAAA,MAAMQ,cAAiBrB,GAAAA,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAOT,CAAAA,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAChBA,GAAAA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAM,EAAA;QAAEa,OAAS,EAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,cAACC,CAAAA,MAAAA,EAAAA;QACCC,GAAK3B,EAAAA,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAK,EAAA,MAAA;QACLC,KAAO,EAAA,CAAC,EAAE7B,UAAWL,CAAAA,SAAAA,CAAAA,CAAW,CAAC,EAAEM,UAAAA,CAAWN,WAAW,CAAC;AACzD,QAAA,GAAGE,SAAS;AAEZuB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
@@ -1,55 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { intervalToDuration, isPast } from 'date-fns';
4
- import { useIntl } from 'react-intl';
5
-
6
- const intervals = [
7
- 'years',
8
- 'months',
9
- 'days',
10
- 'hours',
11
- 'minutes',
12
- 'seconds'
13
- ];
14
- /**
15
- * Displays the relative time between a given timestamp and the current time.
16
- * You can display a custom message for given time intervals by passing an array of custom intervals.
17
- *
18
- * @example
19
- * ```jsx
20
- * <caption>Display "last hour" if the timestamp is less than an hour ago</caption>
21
- * <RelativeTime
22
- * timestamp={new Date('2021-01-01')}
23
- * customIntervals={[
24
- * { unit: 'hours', threshold: 1, text: 'last hour' },
25
- * ]}
26
- * ```
27
- */ const RelativeTime = /*#__PURE__*/ React.forwardRef(({ timestamp, customIntervals = [], ...restProps }, forwardedRef)=>{
28
- const { formatRelativeTime, formatDate, formatTime } = useIntl();
29
- /**
30
- * TODO: make this auto-update, like a clock.
31
- */ const interval = intervalToDuration({
32
- start: timestamp,
33
- end: Date.now()
34
- });
35
- const unit = intervals.find((intervalUnit)=>{
36
- return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
37
- });
38
- const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
39
- // Display custom text if interval is less than the threshold
40
- const customInterval = customIntervals.find((custom)=>interval[custom.unit] < custom.threshold);
41
- const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, {
42
- numeric: 'auto'
43
- });
44
- return /*#__PURE__*/ jsx("time", {
45
- ref: forwardedRef,
46
- dateTime: timestamp.toISOString(),
47
- role: "time",
48
- title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
49
- ...restProps,
50
- children: displayText
51
- });
52
- });
53
-
54
- export { RelativeTime };
55
- //# sourceMappingURL=RelativeTime.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RelativeTime.mjs","sources":["../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;AAKA,MAAMA,SAAmC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACKC,MAAAA,YAAAA,iBAAeC,KAAMC,CAAAA,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAkB,GAAA,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,kBAAmB,CAAA;QAClCC,KAAOV,EAAAA,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAOlB,GAAAA,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAUW,CAAAA,CAAAA,QAAQ,CAACH,YAAAA,CAAAA;AACtE,KAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,MAAOrB,CAAAA,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAK,CAAA,GAAGN,QAAQ,CAACM,IAAK,CAAA;;AAGzE,IAAA,MAAMQ,cAAiBrB,GAAAA,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAOT,CAAAA,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAChBA,GAAAA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAM,EAAA;QAAEa,OAAS,EAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,GAACC,CAAAA,MAAAA,EAAAA;QACCC,GAAK3B,EAAAA,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAK,EAAA,MAAA;QACLC,KAAO,EAAA,CAAC,EAAE7B,UAAWL,CAAAA,SAAAA,CAAAA,CAAW,CAAC,EAAEM,UAAAA,CAAWN,WAAW,CAAC;AACzD,QAAA,GAAGE,SAAS;AAEZuB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
@@ -1,203 +0,0 @@
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 formik = require('formik');
9
- var reactIntl = require('react-intl');
10
- var constants = require('../constants.js');
11
- var release = require('../services/release.js');
12
- var ReleaseActionModal = require('./ReleaseActionModal.js');
13
- var ReleaseActionOptions = require('./ReleaseActionOptions.js');
14
-
15
- const getContentPermissions = (subject)=>{
16
- const permissions = {
17
- publish: [
18
- {
19
- action: 'plugin::content-manager.explorer.publish',
20
- subject,
21
- id: '',
22
- actionParameters: {},
23
- properties: {},
24
- conditions: []
25
- }
26
- ]
27
- };
28
- return permissions;
29
- };
30
- const ReleaseAction = ({ documents, model })=>{
31
- const { formatMessage } = reactIntl.useIntl();
32
- const { toggleNotification } = strapiAdmin.useNotification();
33
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
34
- const [{ query }] = strapiAdmin.useQueryParams();
35
- const contentPermissions = getContentPermissions(model);
36
- const { allowedActions: { canPublish } } = strapiAdmin.useRBAC(contentPermissions);
37
- const { allowedActions: { canCreate } } = strapiAdmin.useRBAC(constants.PERMISSIONS);
38
- const { hasDraftAndPublish } = strapiAdmin$1.unstable_useContentManagerContext();
39
- // Get all the releases not published
40
- const response = release.useGetReleasesQuery();
41
- const releases = response.data?.data;
42
- const [createManyReleaseActions, { isLoading }] = release.useCreateManyReleaseActionsMutation();
43
- const documentIds = documents.map((doc)=>doc.documentId);
44
- const handleSubmit = async (values)=>{
45
- const locale = query.plugins?.i18n?.locale;
46
- const releaseActionEntries = documentIds.map((entryDocumentId)=>({
47
- type: values.type,
48
- contentType: model,
49
- entryDocumentId,
50
- locale
51
- }));
52
- const response = await createManyReleaseActions({
53
- body: releaseActionEntries,
54
- params: {
55
- releaseId: values.releaseId
56
- }
57
- });
58
- if ('data' in response) {
59
- // Handle success
60
- const notificationMessage = formatMessage({
61
- id: 'content-releases.content-manager-list-view.add-to-release.notification.success.message',
62
- defaultMessage: '{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.'
63
- }, {
64
- entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,
65
- totalEntries: response.data.meta.totalEntries
66
- });
67
- const notification = {
68
- type: 'success',
69
- title: formatMessage({
70
- id: 'content-releases.content-manager-list-view.add-to-release.notification.success.title',
71
- defaultMessage: 'Successfully added to release.'
72
- }, {
73
- entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,
74
- totalEntries: response.data.meta.totalEntries
75
- }),
76
- message: response.data.meta.entriesAlreadyInRelease ? notificationMessage : ''
77
- };
78
- toggleNotification(notification);
79
- return true;
80
- }
81
- if ('error' in response) {
82
- if (strapiAdmin.isFetchError(response.error)) {
83
- // Handle fetch error
84
- toggleNotification({
85
- type: 'warning',
86
- message: formatAPIError(response.error)
87
- });
88
- } else {
89
- // Handle generic error
90
- toggleNotification({
91
- type: 'warning',
92
- message: formatMessage({
93
- id: 'notification.error',
94
- defaultMessage: 'An error occurred'
95
- })
96
- });
97
- }
98
- }
99
- };
100
- if (!hasDraftAndPublish || !canCreate || !canPublish) return null;
101
- return {
102
- actionType: 'release',
103
- variant: 'tertiary',
104
- label: formatMessage({
105
- id: 'content-manager-list-view.add-to-release',
106
- defaultMessage: 'Add to Release'
107
- }),
108
- dialog: {
109
- type: 'modal',
110
- title: formatMessage({
111
- id: 'content-manager-list-view.add-to-release',
112
- defaultMessage: 'Add to Release'
113
- }),
114
- content: ({ onClose })=>{
115
- return /*#__PURE__*/ jsxRuntime.jsx(formik.Formik, {
116
- onSubmit: async (values)=>{
117
- const data = await handleSubmit(values);
118
- if (data) {
119
- return onClose();
120
- }
121
- },
122
- validationSchema: ReleaseActionModal.RELEASE_ACTION_FORM_SCHEMA,
123
- initialValues: ReleaseActionModal.INITIAL_VALUES,
124
- children: ({ values, setFieldValue })=>/*#__PURE__*/ jsxRuntime.jsxs(formik.Form, {
125
- children: [
126
- releases?.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionModal.NoReleases, {}) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Body, {
127
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
128
- direction: "column",
129
- alignItems: "stretch",
130
- gap: 2,
131
- children: [
132
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
133
- paddingBottom: 6,
134
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
135
- required: true,
136
- children: [
137
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
138
- children: formatMessage({
139
- id: 'content-releases.content-manager-list-view.add-to-release.select-label',
140
- defaultMessage: 'Select a release'
141
- })
142
- }),
143
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
144
- placeholder: formatMessage({
145
- id: 'content-releases.content-manager-list-view.add-to-release.select-placeholder',
146
- defaultMessage: 'Select'
147
- }),
148
- onChange: (value)=>setFieldValue('releaseId', value),
149
- value: values.releaseId,
150
- children: releases?.map((release)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
151
- value: release.id,
152
- children: release.name
153
- }, release.id))
154
- })
155
- ]
156
- })
157
- }),
158
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
159
- children: formatMessage({
160
- id: 'content-releases.content-manager-list-view.add-to-release.action-type-label',
161
- defaultMessage: 'What do you want to do with these entries?'
162
- })
163
- }),
164
- /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionOptions.ReleaseActionOptions, {
165
- selected: values.type,
166
- handleChange: (e)=>setFieldValue('type', e.target.value),
167
- name: "type"
168
- })
169
- ]
170
- })
171
- }),
172
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Footer, {
173
- children: [
174
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
175
- onClick: onClose,
176
- variant: "tertiary",
177
- name: "cancel",
178
- children: formatMessage({
179
- id: 'content-releases.content-manager-list-view.add-to-release.cancel-button',
180
- defaultMessage: 'Cancel'
181
- })
182
- }),
183
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
184
- type: "submit",
185
- disabled: !values.releaseId,
186
- loading: isLoading,
187
- children: formatMessage({
188
- id: 'content-releases.content-manager-list-view.add-to-release.continue-button',
189
- defaultMessage: 'Continue'
190
- })
191
- })
192
- ]
193
- })
194
- ]
195
- })
196
- });
197
- }
198
- }
199
- };
200
- };
201
-
202
- exports.ReleaseAction = ReleaseAction;
203
- //# sourceMappingURL=ReleaseAction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseAction.js","sources":["../../../admin/src/components/ReleaseAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/content-manager/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Modal,\n Field,\n} from '@strapi/design-system';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { CreateManyReleaseActions } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS as releasePermissions } from '../constants';\nimport { useCreateManyReleaseActionsMutation, useGetReleasesQuery } from '../services/release';\n\nimport {\n type FormValues,\n INITIAL_VALUES,\n RELEASE_ACTION_FORM_SCHEMA,\n NoReleases,\n} from './ReleaseActionModal';\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type { BulkActionComponent } from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\nconst getContentPermissions = (subject: string) => {\n const permissions = {\n publish: [\n {\n action: 'plugin::content-manager.explorer.publish',\n subject,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n };\n\n return permissions;\n};\n\nconst ReleaseAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const contentPermissions = getContentPermissions(model);\n const {\n allowedActions: { canPublish },\n } = useRBAC(contentPermissions);\n const {\n allowedActions: { canCreate },\n } = useRBAC(releasePermissions);\n const { hasDraftAndPublish } = useContentManagerContext();\n\n // Get all the releases not published\n const response = useGetReleasesQuery();\n const releases = response.data?.data;\n const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();\n const documentIds = documents.map((doc) => doc.documentId);\n\n const handleSubmit = async (values: FormValues) => {\n const locale = query.plugins?.i18n?.locale;\n\n const releaseActionEntries: CreateManyReleaseActions.Request['body'] = documentIds.map(\n (entryDocumentId) => ({\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId,\n locale,\n })\n );\n\n const response = await createManyReleaseActions({\n body: releaseActionEntries,\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n\n const notificationMessage = formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.message',\n defaultMessage:\n '{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n );\n\n const notification = {\n type: 'success' as const,\n title: formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.title',\n defaultMessage: 'Successfully added to release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n ),\n message: response.data.meta.entriesAlreadyInRelease ? notificationMessage : '',\n };\n\n toggleNotification(notification);\n\n return true;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'warning',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!hasDraftAndPublish || !canCreate || !canPublish) return null;\n\n return {\n actionType: 'release',\n variant: 'tertiary',\n label: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n content: ({ onClose }) => {\n return (\n <Formik\n onSubmit={async (values) => {\n const data = await handleSubmit(values);\n if (data) {\n return onClose();\n }\n }}\n validationSchema={RELEASE_ACTION_FORM_SCHEMA}\n initialValues={INITIAL_VALUES}\n >\n {({ values, setFieldValue }) => (\n <Form>\n {releases?.length === 0 ? (\n <NoReleases />\n ) : (\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n placeholder={formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n onChange={(value) => setFieldValue('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with these entries?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => setFieldValue('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n </Modal.Body>\n )}\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {/** * TODO: Ideally we would use isValid from Formik to disable the button,\n however currently it always returns true * for yup.string().required(), even when\n the value is falsy (including empty string) */}\n <Button type=\"submit\" disabled={!values.releaseId} loading={isLoading}>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n },\n },\n };\n};\n\nexport { ReleaseAction };\n"],"names":["getContentPermissions","subject","permissions","publish","action","id","actionParameters","properties","conditions","ReleaseAction","documents","model","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","query","useQueryParams","contentPermissions","allowedActions","canPublish","useRBAC","canCreate","releasePermissions","hasDraftAndPublish","useContentManagerContext","response","useGetReleasesQuery","releases","data","createManyReleaseActions","isLoading","useCreateManyReleaseActionsMutation","documentIds","map","doc","documentId","handleSubmit","values","locale","plugins","i18n","releaseActionEntries","entryDocumentId","type","contentType","body","params","releaseId","notificationMessage","defaultMessage","entriesAlreadyInRelease","meta","totalEntries","notification","title","message","isFetchError","error","actionType","variant","label","dialog","content","onClose","_jsx","Formik","onSubmit","validationSchema","RELEASE_ACTION_FORM_SCHEMA","initialValues","INITIAL_VALUES","setFieldValue","_jsxs","Form","length","NoReleases","Modal","Body","Flex","direction","alignItems","gap","Box","paddingBottom","Field","Root","required","Label","SingleSelect","placeholder","onChange","value","release","SingleSelectOption","name","ReleaseActionOptions","selected","handleChange","e","target","Footer","Button","onClick","disabled","loading"],"mappings":"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"}