@webiny/app-headless-cms-workflows 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2

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 (455) hide show
  1. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.d.ts +2 -0
  2. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js +43 -0
  3. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js.map +1 -0
  4. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.d.ts +1 -0
  5. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js +118 -0
  6. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js.map +1 -0
  7. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.d.ts +2 -0
  8. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js +22 -0
  9. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js.map +1 -0
  10. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.d.ts +1 -0
  11. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js +98 -0
  12. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js.map +1 -0
  13. package/Components/ContentEntryForm/CmsEntryReviewBar.d.ts +2 -0
  14. package/Components/ContentEntryForm/CmsEntryReviewBar.js +32 -0
  15. package/Components/ContentEntryForm/CmsEntryReviewBar.js.map +1 -0
  16. package/Components/ContentEntryForm/CmsEntryReviewBar.test.d.ts +1 -0
  17. package/Components/ContentEntryForm/CmsEntryReviewBar.test.js +128 -0
  18. package/Components/ContentEntryForm/CmsEntryReviewBar.test.js.map +1 -0
  19. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.d.ts +2 -0
  20. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js +46 -0
  21. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js.map +1 -0
  22. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.d.ts +1 -0
  23. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js +222 -0
  24. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js.map +1 -0
  25. package/Components/ContentEntryForm/CmsEntryReviewFormLock.d.ts +2 -0
  26. package/Components/ContentEntryForm/CmsEntryReviewFormLock.js +32 -0
  27. package/Components/ContentEntryForm/CmsEntryReviewFormLock.js.map +1 -0
  28. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.d.ts +1 -0
  29. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js +94 -0
  30. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js.map +1 -0
  31. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.d.ts +2 -0
  32. package/Components/ContentEntryForm/{CmsEntryFormCreateNewRevisionButton.js → CmsEntryReviewNewRevision.js} +20 -11
  33. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js.map +1 -0
  34. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.d.ts +1 -0
  35. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js +186 -0
  36. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js.map +1 -0
  37. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.d.ts +2 -0
  38. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js +26 -0
  39. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js.map +1 -0
  40. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.d.ts +1 -0
  41. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js +78 -0
  42. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js.map +1 -0
  43. package/Components/ContentEntryForm/getModelFieldLabels.d.ts +3 -0
  44. package/Components/ContentEntryForm/getModelFieldLabels.js +8 -0
  45. package/Components/ContentEntryForm/getModelFieldLabels.js.map +1 -0
  46. package/Components/ContentEntryForm/index.d.ts +5 -4
  47. package/Components/ContentEntryForm/index.js +5 -4
  48. package/Components/ContentReviews/CmsContentReviews.d.ts +2 -0
  49. package/Components/ContentReviews/CmsContentReviews.js +11 -0
  50. package/Components/ContentReviews/CmsContentReviews.js.map +1 -0
  51. package/Components/ContentReviews/CmsContentReviews.test.d.ts +1 -0
  52. package/Components/ContentReviews/CmsContentReviews.test.js +214 -0
  53. package/Components/ContentReviews/CmsContentReviews.test.js.map +1 -0
  54. package/Components/ContentReviews/CmsContentReviewsMount.d.ts +4 -0
  55. package/Components/ContentReviews/CmsContentReviewsMount.js +44 -0
  56. package/Components/ContentReviews/CmsContentReviewsMount.js.map +1 -0
  57. package/Components/ContentReviews/CmsContentReviewsSidebarItem.d.ts +2 -0
  58. package/Components/ContentReviews/CmsContentReviewsSidebarItem.js +20 -0
  59. package/Components/ContentReviews/CmsContentReviewsSidebarItem.js.map +1 -0
  60. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.d.ts +1 -0
  61. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js +83 -0
  62. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js.map +1 -0
  63. package/Components/ModelDelete/ModelBoundToWorkflowErrorData.d.ts +8 -0
  64. package/Components/ModelDelete/ModelBoundToWorkflowErrorData.js +0 -0
  65. package/Components/ModelDelete/ModelDeleteWorkflowCopy.d.ts +10 -0
  66. package/Components/ModelDelete/ModelDeleteWorkflowCopy.js +0 -0
  67. package/Components/ModelDelete/ModelDeleteWorkflowError.d.ts +2 -0
  68. package/Components/ModelDelete/ModelDeleteWorkflowError.js +34 -0
  69. package/Components/ModelDelete/ModelDeleteWorkflowError.js.map +1 -0
  70. package/Components/ModelDelete/ModelDeleteWorkflowError.test.d.ts +1 -0
  71. package/Components/ModelDelete/ModelDeleteWorkflowError.test.js +73 -0
  72. package/Components/ModelDelete/ModelDeleteWorkflowError.test.js.map +1 -0
  73. package/Components/ModelDelete/getModelDeleteWorkflowCopy.d.ts +3 -0
  74. package/Components/ModelDelete/getModelDeleteWorkflowCopy.js +17 -0
  75. package/Components/ModelDelete/getModelDeleteWorkflowCopy.js.map +1 -0
  76. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.d.ts +1 -0
  77. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js +28 -0
  78. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js.map +1 -0
  79. package/Components/ignoreAction.d.ts +1 -0
  80. package/Components/ignoreAction.js +4 -0
  81. package/Components/ignoreAction.js.map +1 -0
  82. package/Routes/CmsWorkflowEditor.d.ts +2 -0
  83. package/Routes/CmsWorkflowEditor.js +23 -0
  84. package/Routes/CmsWorkflowEditor.js.map +1 -0
  85. package/Routes/CmsWorkflowEditor.test.d.ts +1 -0
  86. package/Routes/CmsWorkflowEditor.test.js +141 -0
  87. package/Routes/CmsWorkflowEditor.test.js.map +1 -0
  88. package/Routes/index.d.ts +1 -1
  89. package/Routes/index.js +1 -1
  90. package/features/cache/CmsReviewCacheSyncHandler.d.ts +8 -0
  91. package/features/cache/CmsReviewCacheSyncHandler.js +14 -0
  92. package/features/cache/CmsReviewCacheSyncHandler.js.map +1 -0
  93. package/features/cache/CmsReviewCacheWriter.d.ts +14 -0
  94. package/features/cache/CmsReviewCacheWriter.js +39 -0
  95. package/features/cache/CmsReviewCacheWriter.js.map +1 -0
  96. package/features/cache/CmsReviewCacheWriter.test.d.ts +1 -0
  97. package/features/cache/CmsReviewCacheWriter.test.js +207 -0
  98. package/features/cache/CmsReviewCacheWriter.test.js.map +1 -0
  99. package/features/cache/CmsReviewEntriesCacheProviderDecorator.d.ts +12 -0
  100. package/features/cache/CmsReviewEntriesCacheProviderDecorator.js +17 -0
  101. package/features/cache/CmsReviewEntriesCacheProviderDecorator.js.map +1 -0
  102. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.d.ts +1 -0
  103. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js +129 -0
  104. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js.map +1 -0
  105. package/features/cache/ReviewPreservingEntriesCache.d.ts +18 -0
  106. package/features/cache/ReviewPreservingEntriesCache.js +54 -0
  107. package/features/cache/ReviewPreservingEntriesCache.js.map +1 -0
  108. package/features/cache/abstractions.d.ts +5 -0
  109. package/features/cache/abstractions.js +5 -0
  110. package/features/cache/abstractions.js.map +1 -0
  111. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.d.ts +26 -0
  112. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js +104 -0
  113. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js.map +1 -0
  114. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.d.ts +1 -0
  115. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js +589 -0
  116. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js.map +1 -0
  117. package/features/editorGateway/feature.d.ts +1 -0
  118. package/features/editorGateway/feature.js +11 -0
  119. package/features/editorGateway/feature.js.map +1 -0
  120. package/features/editorGateway/feature.test.d.ts +1 -0
  121. package/features/editorGateway/feature.test.js +272 -0
  122. package/features/editorGateway/feature.test.js.map +1 -0
  123. package/features/editorGateway/graphql/cmsEntryFolderExists.d.ts +1 -0
  124. package/features/editorGateway/graphql/cmsEntryFolderExists.js +16 -0
  125. package/features/editorGateway/graphql/cmsEntryFolderExists.js.map +1 -0
  126. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.d.ts +1 -0
  127. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js +19 -0
  128. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js.map +1 -0
  129. package/features/editorGateway/graphql/getCmsEntryWorkflow.d.ts +1 -0
  130. package/features/editorGateway/graphql/getCmsEntryWorkflow.js +19 -0
  131. package/features/editorGateway/graphql/getCmsEntryWorkflow.js.map +1 -0
  132. package/features/editorGateway/graphql/inspectCmsEntryRouting.d.ts +1 -0
  133. package/features/editorGateway/graphql/inspectCmsEntryRouting.js +19 -0
  134. package/features/editorGateway/graphql/inspectCmsEntryRouting.js.map +1 -0
  135. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.d.ts +1 -0
  136. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js +29 -0
  137. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js.map +1 -0
  138. package/features/editorGateway/graphql/storeCmsEntryWorkflow.d.ts +1 -0
  139. package/features/editorGateway/graphql/storeCmsEntryWorkflow.js +19 -0
  140. package/features/editorGateway/graphql/storeCmsEntryWorkflow.js.map +1 -0
  141. package/features/editorMounting/CmsWorkflowEditorAppAdapter.d.ts +25 -0
  142. package/features/editorMounting/CmsWorkflowEditorAppAdapter.js +51 -0
  143. package/features/editorMounting/CmsWorkflowEditorAppAdapter.js.map +1 -0
  144. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.d.ts +1 -0
  145. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js +185 -0
  146. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js.map +1 -0
  147. package/features/editorMounting/abstractions.d.ts +5 -0
  148. package/features/editorMounting/abstractions.js +5 -0
  149. package/features/editorMounting/abstractions.js.map +1 -0
  150. package/features/editorMounting/feature.d.ts +3 -0
  151. package/features/editorMounting/feature.js +19 -0
  152. package/features/editorMounting/feature.js.map +1 -0
  153. package/features/editorMounting/feature.test.d.ts +1 -0
  154. package/features/editorMounting/feature.test.js +100 -0
  155. package/features/editorMounting/feature.test.js.map +1 -0
  156. package/features/editorReview/CmsEntryReview.d.ts +8 -0
  157. package/features/editorReview/CmsEntryReview.js +14 -0
  158. package/features/editorReview/CmsEntryReview.js.map +1 -0
  159. package/features/editorReview/abstractions.d.ts +5 -0
  160. package/features/editorReview/abstractions.js +5 -0
  161. package/features/editorReview/abstractions.js.map +1 -0
  162. package/features/editorReview/feature.d.ts +3 -0
  163. package/features/editorReview/feature.js +17 -0
  164. package/features/editorReview/feature.js.map +1 -0
  165. package/features/editorReview/feature.test.d.ts +1 -0
  166. package/features/editorReview/feature.test.js +46 -0
  167. package/features/editorReview/feature.test.js.map +1 -0
  168. package/features/editorReview/useCmsEntryReview.d.ts +2 -0
  169. package/features/editorReview/useCmsEntryReview.js +8 -0
  170. package/features/editorReview/useCmsEntryReview.js.map +1 -0
  171. package/features/feature.js +6 -2
  172. package/features/feature.js.map +1 -1
  173. package/features/gateway/CmsReviewChangeMessageHandler.d.ts +8 -0
  174. package/features/gateway/CmsReviewChangeMessageHandler.js +16 -0
  175. package/features/gateway/CmsReviewChangeMessageHandler.js.map +1 -0
  176. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.d.ts +16 -0
  177. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js +39 -0
  178. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js.map +1 -0
  179. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.d.ts +1 -0
  180. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js +83 -0
  181. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js.map +1 -0
  182. package/features/gateway/CmsReviewContentAdapter/abstractions.d.ts +5 -0
  183. package/features/gateway/CmsReviewContentAdapter/abstractions.js +5 -0
  184. package/features/gateway/CmsReviewContentAdapter/abstractions.js.map +1 -0
  185. package/features/gateway/CmsReviewGateway/CmsReviewGateway.d.ts +52 -0
  186. package/features/gateway/CmsReviewGateway/CmsReviewGateway.js +221 -0
  187. package/features/gateway/CmsReviewGateway/CmsReviewGateway.js.map +1 -0
  188. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.d.ts +1 -0
  189. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js +689 -0
  190. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js.map +1 -0
  191. package/features/gateway/CmsReviewNotificationHandler.d.ts +8 -0
  192. package/features/gateway/CmsReviewNotificationHandler.js +16 -0
  193. package/features/gateway/CmsReviewNotificationHandler.js.map +1 -0
  194. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.d.ts +8 -0
  195. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js +14 -0
  196. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js.map +1 -0
  197. package/features/gateway/CmsReviewRowProvider/abstractions.d.ts +5 -0
  198. package/features/gateway/CmsReviewRowProvider/abstractions.js +5 -0
  199. package/features/gateway/CmsReviewRowProvider/abstractions.js.map +1 -0
  200. package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
  201. package/features/gateway/contentReviewsBindings.test.js +125 -0
  202. package/features/gateway/contentReviewsBindings.test.js.map +1 -0
  203. package/features/gateway/feature.d.ts +4 -0
  204. package/features/gateway/feature.js +27 -0
  205. package/features/gateway/feature.js.map +1 -0
  206. package/features/gateway/feature.test.d.ts +1 -0
  207. package/features/gateway/feature.test.js +79 -0
  208. package/features/gateway/feature.test.js.map +1 -0
  209. package/features/gateway/graphql/CmsOperationResponse.d.ts +3 -0
  210. package/features/gateway/graphql/CmsOperationResponse.js +0 -0
  211. package/features/gateway/graphql/approveCmsEntryReviewStep.d.ts +1 -0
  212. package/features/gateway/graphql/approveCmsEntryReviewStep.js +18 -0
  213. package/features/gateway/graphql/approveCmsEntryReviewStep.js.map +1 -0
  214. package/features/gateway/graphql/cancelCmsEntryReview.d.ts +1 -0
  215. package/features/gateway/graphql/cancelCmsEntryReview.js +18 -0
  216. package/features/gateway/graphql/cancelCmsEntryReview.js.map +1 -0
  217. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.d.ts +1 -0
  218. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js +28 -0
  219. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js.map +1 -0
  220. package/features/gateway/graphql/getCmsEntryReview.d.ts +1 -0
  221. package/features/gateway/graphql/getCmsEntryReview.js +18 -0
  222. package/features/gateway/graphql/getCmsEntryReview.js.map +1 -0
  223. package/features/gateway/graphql/getCmsEntryReviewStepRun.d.ts +1 -0
  224. package/features/gateway/graphql/getCmsEntryReviewStepRun.js +18 -0
  225. package/features/gateway/graphql/getCmsEntryReviewStepRun.js.map +1 -0
  226. package/features/gateway/graphql/getCmsEntryTargetReview.d.ts +1 -0
  227. package/features/gateway/graphql/getCmsEntryTargetReview.js +18 -0
  228. package/features/gateway/graphql/getCmsEntryTargetReview.js.map +1 -0
  229. package/features/gateway/graphql/listCmsEntryBlockingReviews.d.ts +1 -0
  230. package/features/gateway/graphql/listCmsEntryBlockingReviews.js +18 -0
  231. package/features/gateway/graphql/listCmsEntryBlockingReviews.js.map +1 -0
  232. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.d.ts +1 -0
  233. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js +18 -0
  234. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js.map +1 -0
  235. package/features/gateway/graphql/listCmsEntryReviews.d.ts +1 -0
  236. package/features/gateway/graphql/listCmsEntryReviews.js +34 -0
  237. package/features/gateway/graphql/listCmsEntryReviews.js.map +1 -0
  238. package/features/gateway/graphql/listCmsEntryStepCandidates.d.ts +1 -0
  239. package/features/gateway/graphql/listCmsEntryStepCandidates.js +28 -0
  240. package/features/gateway/graphql/listCmsEntryStepCandidates.js.map +1 -0
  241. package/features/gateway/graphql/listCmsEntryWorkflows.d.ts +1 -0
  242. package/features/gateway/graphql/listCmsEntryWorkflows.js +18 -0
  243. package/features/gateway/graphql/listCmsEntryWorkflows.js.map +1 -0
  244. package/features/gateway/graphql/reassignCmsEntryReviewStep.d.ts +1 -0
  245. package/features/gateway/graphql/reassignCmsEntryReviewStep.js +18 -0
  246. package/features/gateway/graphql/reassignCmsEntryReviewStep.js.map +1 -0
  247. package/features/gateway/graphql/rejectCmsEntryReviewStep.d.ts +1 -0
  248. package/features/gateway/graphql/rejectCmsEntryReviewStep.js +18 -0
  249. package/features/gateway/graphql/rejectCmsEntryReviewStep.js.map +1 -0
  250. package/features/gateway/graphql/requestCmsEntryReview.d.ts +1 -0
  251. package/features/gateway/graphql/requestCmsEntryReview.js +28 -0
  252. package/features/gateway/graphql/requestCmsEntryReview.js.map +1 -0
  253. package/features/gateway/graphql/restartCmsEntryReviewStep.d.ts +1 -0
  254. package/features/gateway/graphql/restartCmsEntryReviewStep.js +18 -0
  255. package/features/gateway/graphql/restartCmsEntryReviewStep.js.map +1 -0
  256. package/features/gateway/graphql/startCmsEntryReviewStep.d.ts +1 -0
  257. package/features/gateway/graphql/startCmsEntryReviewStep.js +18 -0
  258. package/features/gateway/graphql/startCmsEntryReviewStep.js.map +1 -0
  259. package/features/gateway/graphql/takeOverCmsEntryReviewStep.d.ts +1 -0
  260. package/features/gateway/graphql/takeOverCmsEntryReviewStep.js +22 -0
  261. package/features/gateway/graphql/takeOverCmsEntryReviewStep.js.map +1 -0
  262. package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +20 -0
  263. package/features/trash/BulkDeletePresenterReviewDecorator.js +81 -0
  264. package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
  265. package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
  266. package/features/trash/BulkDeletePresenterReviewDecorator.test.js +693 -0
  267. package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
  268. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.d.ts +13 -0
  269. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js +23 -0
  270. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js.map +1 -0
  271. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.d.ts +1 -0
  272. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js +123 -0
  273. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js.map +1 -0
  274. package/features/trash/DeleteEntryUseCaseReviewDecorator.d.ts +13 -0
  275. package/features/trash/DeleteEntryUseCaseReviewDecorator.js +23 -0
  276. package/features/trash/DeleteEntryUseCaseReviewDecorator.js.map +1 -0
  277. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
  278. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js +139 -0
  279. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
  280. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.d.ts +13 -0
  281. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js +23 -0
  282. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js.map +1 -0
  283. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
  284. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js +122 -0
  285. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
  286. package/features/trash/feature.d.ts +1 -0
  287. package/features/trash/feature.js +17 -0
  288. package/features/trash/feature.js.map +1 -0
  289. package/features/trash/feature.test.d.ts +1 -0
  290. package/features/trash/feature.test.js +213 -0
  291. package/features/trash/feature.test.js.map +1 -0
  292. package/index.d.ts +1 -1
  293. package/index.editor.test.d.ts +1 -0
  294. package/index.editor.test.js +149 -0
  295. package/index.editor.test.js.map +1 -0
  296. package/index.js +31 -10
  297. package/index.js.map +1 -1
  298. package/index.lists.test.d.ts +1 -0
  299. package/index.lists.test.js +172 -0
  300. package/index.lists.test.js.map +1 -0
  301. package/index.mount.test.d.ts +1 -0
  302. package/index.mount.test.js +49 -0
  303. package/index.mount.test.js.map +1 -0
  304. package/index.test.d.ts +1 -0
  305. package/index.test.js +414 -0
  306. package/index.test.js.map +1 -0
  307. package/package.json +20 -16
  308. package/presentation/CmsEntryContentReloader.d.ts +8 -0
  309. package/presentation/CmsEntryContentReloader.js +20 -0
  310. package/presentation/CmsEntryContentReloader.js.map +1 -0
  311. package/presentation/CmsEntryContentReloader.test.d.ts +1 -0
  312. package/presentation/CmsEntryContentReloader.test.js +118 -0
  313. package/presentation/CmsEntryContentReloader.test.js.map +1 -0
  314. package/presentation/CmsEntryFormPresenterReviewDecorator.d.ts +27 -0
  315. package/presentation/CmsEntryFormPresenterReviewDecorator.js +167 -0
  316. package/presentation/CmsEntryFormPresenterReviewDecorator.js.map +1 -0
  317. package/presentation/CmsEntryFormPresenterReviewDecorator.test.d.ts +1 -0
  318. package/presentation/CmsEntryFormPresenterReviewDecorator.test.js +601 -0
  319. package/presentation/CmsEntryFormPresenterReviewDecorator.test.js.map +1 -0
  320. package/presentation/CmsEntryUnsavedChanges.d.ts +7 -0
  321. package/presentation/CmsEntryUnsavedChanges.js +12 -0
  322. package/presentation/CmsEntryUnsavedChanges.js.map +1 -0
  323. package/presentation/CmsEntryUnsavedChanges.test.d.ts +1 -0
  324. package/presentation/CmsEntryUnsavedChanges.test.js +23 -0
  325. package/presentation/CmsEntryUnsavedChanges.test.js.map +1 -0
  326. package/presentation/CmsReviewFieldSelections.test.d.ts +1 -0
  327. package/presentation/CmsReviewFieldSelections.test.js +27 -0
  328. package/presentation/CmsReviewFieldSelections.test.js.map +1 -0
  329. package/presentation/{WorkflowStateGetEntryFieldSelection.d.ts → CmsReviewGetEntryFieldSelection.d.ts} +2 -2
  330. package/presentation/CmsReviewGetEntryFieldSelection.js +16 -0
  331. package/presentation/CmsReviewGetEntryFieldSelection.js.map +1 -0
  332. package/presentation/{WorkflowStateListEntriesFieldSelection.d.ts → CmsReviewListEntriesFieldSelection.d.ts} +2 -2
  333. package/presentation/CmsReviewListEntriesFieldSelection.js +16 -0
  334. package/presentation/CmsReviewListEntriesFieldSelection.js.map +1 -0
  335. package/presentation/{TableRowMapperWorkflowDecorator.d.ts → CmsReviewTableRowMapperDecorator.d.ts} +3 -3
  336. package/presentation/CmsReviewTableRowMapperDecorator.js +24 -0
  337. package/presentation/CmsReviewTableRowMapperDecorator.js.map +1 -0
  338. package/presentation/CmsReviewTableRowMapperDecorator.test.d.ts +1 -0
  339. package/presentation/CmsReviewTableRowMapperDecorator.test.js +120 -0
  340. package/presentation/CmsReviewTableRowMapperDecorator.test.js.map +1 -0
  341. package/presentation/CmsRevisionsListPresenterDecorator.d.ts +24 -0
  342. package/presentation/CmsRevisionsListPresenterDecorator.js +66 -0
  343. package/presentation/CmsRevisionsListPresenterDecorator.js.map +1 -0
  344. package/presentation/CmsRevisionsListPresenterDecorator.test.d.ts +1 -0
  345. package/presentation/CmsRevisionsListPresenterDecorator.test.js +174 -0
  346. package/presentation/CmsRevisionsListPresenterDecorator.test.js.map +1 -0
  347. package/presentation/contentReviews/CmsContentReviewsPresenter.d.ts +28 -0
  348. package/presentation/contentReviews/CmsContentReviewsPresenter.js +103 -0
  349. package/presentation/contentReviews/CmsContentReviewsPresenter.js.map +1 -0
  350. package/presentation/contentReviews/CmsContentReviewsPresenter.test.d.ts +1 -0
  351. package/presentation/contentReviews/CmsContentReviewsPresenter.test.js +238 -0
  352. package/presentation/contentReviews/CmsContentReviewsPresenter.test.js.map +1 -0
  353. package/presentation/contentReviews/abstractions.d.ts +31 -0
  354. package/presentation/contentReviews/abstractions.js +5 -0
  355. package/presentation/contentReviews/abstractions.js.map +1 -0
  356. package/presentation/contentReviews/feature.d.ts +3 -0
  357. package/presentation/contentReviews/feature.js +17 -0
  358. package/presentation/contentReviews/feature.js.map +1 -0
  359. package/presentation/contentReviews/toContentTypes.d.ts +3 -0
  360. package/presentation/contentReviews/toContentTypes.js +14 -0
  361. package/presentation/contentReviews/toContentTypes.js.map +1 -0
  362. package/presentation/contentReviews/toContentTypes.test.d.ts +1 -0
  363. package/presentation/contentReviews/toContentTypes.test.js +20 -0
  364. package/presentation/contentReviews/toContentTypes.test.js.map +1 -0
  365. package/presentation/feature.js +10 -12
  366. package/presentation/feature.js.map +1 -1
  367. package/presentation/getCmsEntryReviewContext.d.ts +4 -0
  368. package/presentation/getCmsEntryReviewContext.js +12 -0
  369. package/presentation/getCmsEntryReviewContext.js.map +1 -0
  370. package/presentation/getCmsEntryReviewInitParams.d.ts +13 -0
  371. package/presentation/getCmsEntryReviewInitParams.js +18 -0
  372. package/presentation/getCmsEntryReviewInitParams.js.map +1 -0
  373. package/presentation/getCmsEntryReviewInitParams.test.d.ts +1 -0
  374. package/presentation/getCmsEntryReviewInitParams.test.js +69 -0
  375. package/presentation/getCmsEntryReviewInitParams.test.js.map +1 -0
  376. package/routes.d.ts +4 -4
  377. package/routes.js +5 -5
  378. package/routes.js.map +1 -1
  379. package/testing/createEntry.d.ts +3 -0
  380. package/testing/createEntry.js +22 -0
  381. package/testing/createEntry.js.map +1 -0
  382. package/testing/createEntrySession.d.ts +9 -0
  383. package/testing/createEntrySession.js +29 -0
  384. package/testing/createEntrySession.js.map +1 -0
  385. package/testing/createFolder.d.ts +2 -0
  386. package/testing/createFolder.js +13 -0
  387. package/testing/createFolder.js.map +1 -0
  388. package/testing/createFormVm.d.ts +2 -0
  389. package/testing/createFormVm.js +22 -0
  390. package/testing/createFormVm.js.map +1 -0
  391. package/testing/models.d.ts +4 -0
  392. package/testing/models.js +23 -0
  393. package/testing/models.js.map +1 -0
  394. package/testing/renderEditorTree.d.ts +17 -0
  395. package/testing/renderEditorTree.js +93 -0
  396. package/testing/renderEditorTree.js.map +1 -0
  397. package/testing/reviewStates.d.ts +17 -0
  398. package/testing/reviewStates.js +65 -0
  399. package/testing/reviewStates.js.map +1 -0
  400. package/types.d.ts +8 -8
  401. package/utils/isReviewableModel.d.ts +2 -0
  402. package/utils/isReviewableModel.js +7 -0
  403. package/utils/isReviewableModel.js.map +1 -0
  404. package/utils/renderModelIcon.d.ts +3 -0
  405. package/utils/renderModelIcon.js +19 -0
  406. package/utils/renderModelIcon.js.map +1 -0
  407. package/utils/renderModelIconOrFallback.d.ts +3 -0
  408. package/utils/renderModelIconOrFallback.js +17 -0
  409. package/utils/renderModelIconOrFallback.js.map +1 -0
  410. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.d.ts +0 -2
  411. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +0 -34
  412. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +0 -1
  413. package/Components/CmsEntriesWorkflowStateList/index.d.ts +0 -1
  414. package/Components/CmsEntriesWorkflowStateList/index.js +0 -1
  415. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.d.ts +0 -2
  416. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +0 -1
  417. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.d.ts +0 -5
  418. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +0 -22
  419. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +0 -1
  420. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.d.ts +0 -2
  421. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +0 -13
  422. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +0 -1
  423. package/Components/ContentEntryForm/ContentEntryFormWorkflow.d.ts +0 -2
  424. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +0 -24
  425. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +0 -1
  426. package/Components/OptionItem/OpenInNewWindow.d.ts +0 -2
  427. package/Components/OptionItem/OpenInNewWindow.js +0 -36
  428. package/Components/OptionItem/OpenInNewWindow.js.map +0 -1
  429. package/Routes/CmsWorkflowsEditor.d.ts +0 -2
  430. package/Routes/CmsWorkflowsEditor.js +0 -26
  431. package/Routes/CmsWorkflowsEditor.js.map +0 -1
  432. package/features/WorkflowStateCacheHandler.d.ts +0 -11
  433. package/features/WorkflowStateCacheHandler.js +0 -50
  434. package/features/WorkflowStateCacheHandler.js.map +0 -1
  435. package/presentation/CmsWorkflowsEditorView.d.ts +0 -5
  436. package/presentation/CmsWorkflowsEditorView.js +0 -90
  437. package/presentation/CmsWorkflowsEditorView.js.map +0 -1
  438. package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +0 -25
  439. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +0 -70
  440. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +0 -1
  441. package/presentation/TableRowMapperWorkflowDecorator.js +0 -25
  442. package/presentation/TableRowMapperWorkflowDecorator.js.map +0 -1
  443. package/presentation/WorkflowStateGetEntryFieldSelection.js +0 -24
  444. package/presentation/WorkflowStateGetEntryFieldSelection.js.map +0 -1
  445. package/presentation/WorkflowStateListEntriesFieldSelection.js +0 -24
  446. package/presentation/WorkflowStateListEntriesFieldSelection.js.map +0 -1
  447. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +0 -15
  448. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +0 -50
  449. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +0 -1
  450. package/presentation/cmsWorkflowsEditor/abstractions.d.ts +0 -19
  451. package/presentation/cmsWorkflowsEditor/abstractions.js +0 -5
  452. package/presentation/cmsWorkflowsEditor/abstractions.js.map +0 -1
  453. package/presentation/cmsWorkflowsEditor/feature.d.ts +0 -3
  454. package/presentation/cmsWorkflowsEditor/feature.js +0 -17
  455. package/presentation/cmsWorkflowsEditor/feature.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/renderEditorTree.js","sources":["../../src/testing/renderEditorTree.tsx"],"sourcesContent":["import React from \"react\";\nimport { vi } from \"vitest\";\nimport { render } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport { Buttons } from \"@webiny/app-admin\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { ModelContext } from \"@webiny/app-headless-cms/admin/components/ModelProvider/index.js\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { ContentEntryEditorWithConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { useContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { ContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { RevisionsListPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js\";\nimport type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { CmsEntryReview } from \"~/features/editorReview/abstractions.js\";\nimport { createEntrySession } from \"./createEntrySession.js\";\nimport type { EntrySession } from \"./createEntrySession.js\";\nimport { createFormVm } from \"./createFormVm.js\";\n\nfunction createFakeFormPresenter(\n vm: ContentEntryFormPresenter.ViewModel\n): ContentEntryFormPresenter.Interface {\n return {\n vm,\n loadRevision: vi.fn(),\n saveRevision: vi.fn(),\n publishRevision: vi.fn(),\n unpublishRevision: vi.fn(),\n deleteEntry: vi.fn(),\n setFolderId: vi.fn(),\n newEntry: vi.fn(),\n patchEntryMeta: vi.fn(),\n reset: vi.fn()\n };\n}\n\nfunction createFakeRevisionsPresenter(): RevisionsListPresenter.Interface {\n return {\n vm: { loading: false, revisions: [], items: [], visible: false },\n init: vi.fn(),\n show: vi.fn(),\n hide: vi.fn(),\n createRevision: vi.fn(),\n publishRevision: vi.fn(),\n unpublishRevision: vi.fn(),\n updateRevisionNote: vi.fn(),\n deleteRevision: vi.fn(),\n dispose: vi.fn()\n };\n}\n\n/*\n * The config components (and the form decorators) are rendered next to the editor config, as the\n * app does it: `ContentEntryEditorWithConfig` renders its children only once the registered\n * properties are collected, so config components cannot live inside it. One width property is\n * always registered, so the gate opens even when a component under test registers nothing.\n *\n * Renders what the editor renders: the header buttons through `Buttons` (so `useButtons()` works),\n * and every registered action's element for the options menu. The names list shows what is\n * registered, whatever it renders.\n */\nconst ActionsProbe = () => {\n const { buttonActions, menuItemActions } = useContentEntryEditorConfig();\n const buttonNames = buttonActions.map(action => action.name).join(\",\");\n const menuNames = menuItemActions.map(action => action.name).join(\",\");\n\n return (\n <>\n <div data-testid=\"button-action-names\">{buttonNames}</div>\n <div data-testid=\"menu-action-names\">{menuNames}</div>\n <div data-testid=\"button-actions\">\n <Buttons actions={buttonActions} />\n </div>\n <div data-testid=\"menu-actions\">\n {menuItemActions.map(action => (\n <span key={action.name} data-action={action.name}>\n {action.element}\n </span>\n ))}\n </div>\n </>\n );\n};\n\nexport interface RenderEditorTreeParams {\n children?: React.ReactNode;\n formVm?: Partial<ContentEntryFormPresenter.ViewModel>;\n reviewVm?: Partial<TargetReviewPresenter.ViewModel>;\n}\n\nexport interface RenderedEditorTree extends EntrySession {\n container: Container;\n formPresenter: ContentEntryFormPresenter.Interface;\n revisions: RevisionsListPresenter.Interface;\n}\n\nexport function renderEditorTree(params: RenderEditorTreeParams): RenderedEditorTree {\n const container = new Container();\n const entrySession = createEntrySession(params.reviewVm);\n const formVm = createFormVm(params.formVm);\n const formPresenter = createFakeFormPresenter(formVm);\n const revisions = createFakeRevisionsPresenter();\n\n container.registerInstance(CmsEntryReview, entrySession.session);\n container.registerInstance(ContentEntryFormPresenter, formPresenter);\n container.registerInstance(RevisionsListPresenter, revisions);\n\n render(\n <AdminUiProvider>\n <CompositionProvider>\n <DiContainerProvider container={container}>\n <ModelContext.Provider value={formVm.model}>\n {params.children}\n <ContentEntryEditorConfig>\n <ContentEntryEditorConfig.Width value={\"1020px\"} />\n </ContentEntryEditorConfig>\n <ContentEntryEditorWithConfig>\n <ActionsProbe />\n </ContentEntryEditorWithConfig>\n </ModelContext.Provider>\n </DiContainerProvider>\n </CompositionProvider>\n </AdminUiProvider>\n );\n\n return { ...entrySession, container, formPresenter, revisions };\n}\n"],"names":["createFakeFormPresenter","vm","vi","createFakeRevisionsPresenter","ActionsProbe","buttonActions","menuItemActions","useContentEntryEditorConfig","buttonNames","action","menuNames","Buttons","renderEditorTree","params","container","Container","entrySession","createEntrySession","formVm","createFormVm","formPresenter","revisions","CmsEntryReview","ContentEntryFormPresenter","RevisionsListPresenter","render","AdminUiProvider","CompositionProvider","DiContainerProvider","ModelContext","ContentEntryEditorConfig","ContentEntryEditorWithConfig"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAASA,wBACLC,EAAuC;IAEvC,OAAO;QACHA;QACA,cAAcC,GAAG,EAAE;QACnB,cAAcA,GAAG,EAAE;QACnB,iBAAiBA,GAAG,EAAE;QACtB,mBAAmBA,GAAG,EAAE;QACxB,aAAaA,GAAG,EAAE;QAClB,aAAaA,GAAG,EAAE;QAClB,UAAUA,GAAG,EAAE;QACf,gBAAgBA,GAAG,EAAE;QACrB,OAAOA,GAAG,EAAE;IAChB;AACJ;AAEA,SAASC;IACL,OAAO;QACH,IAAI;YAAE,SAAS;YAAO,WAAW,EAAE;YAAE,OAAO,EAAE;YAAE,SAAS;QAAM;QAC/D,MAAMD,GAAG,EAAE;QACX,MAAMA,GAAG,EAAE;QACX,MAAMA,GAAG,EAAE;QACX,gBAAgBA,GAAG,EAAE;QACrB,iBAAiBA,GAAG,EAAE;QACtB,mBAAmBA,GAAG,EAAE;QACxB,oBAAoBA,GAAG,EAAE;QACzB,gBAAgBA,GAAG,EAAE;QACrB,SAASA,GAAG,EAAE;IAClB;AACJ;AAYA,MAAME,eAAe;IACjB,MAAM,EAAEC,aAAa,EAAEC,eAAe,EAAE,GAAGC;IAC3C,MAAMC,cAAcH,cAAc,GAAG,CAACI,CAAAA,SAAUA,OAAO,IAAI,EAAE,IAAI,CAAC;IAClE,MAAMC,YAAYJ,gBAAgB,GAAG,CAACG,CAAAA,SAAUA,OAAO,IAAI,EAAE,IAAI,CAAC;IAElE,OAAO,WAAP,GACI,wDACI,oBAAC;QAAI,eAAY;OAAuBD,cAAAA,WAAAA,GACxC,oBAAC;QAAI,eAAY;OAAqBE,YAAAA,WAAAA,GACtC,oBAAC;QAAI,eAAY;qBACb,oBAACC,SAAOA;QAAC,SAASN;uBAEtB,oBAAC;QAAI,eAAY;OACZC,gBAAgB,GAAG,CAACG,CAAAA,SAAAA,WAAAA,GACjB,oBAAC;YAAK,KAAKA,OAAO,IAAI;YAAE,eAAaA,OAAO,IAAI;WAC3CA,OAAO,OAAO;AAMvC;AAcO,SAASG,iBAAiBC,MAA8B;IAC3D,MAAMC,YAAY,IAAIC;IACtB,MAAMC,eAAeC,mBAAmBJ,OAAO,QAAQ;IACvD,MAAMK,SAASC,aAAaN,OAAO,MAAM;IACzC,MAAMO,gBAAgBpB,wBAAwBkB;IAC9C,MAAMG,YAAYlB;IAElBW,UAAU,gBAAgB,CAACQ,gBAAgBN,aAAa,OAAO;IAC/DF,UAAU,gBAAgB,CAACS,2BAA2BH;IACtDN,UAAU,gBAAgB,CAACU,wBAAwBH;IAEnDI,OAAO,WAADA,GACF,oBAACC,iBAAeA,MAAAA,WAAAA,GACZ,oBAACC,qBAAmBA,MAAAA,WAAAA,GAChB,oBAACC,qBAAmBA;QAAC,WAAWd;qBAC5B,oBAACe,aAAa,QAAQ;QAAC,OAAOX,OAAO,KAAK;OACrCL,OAAO,QAAQ,gBAChB,oBAACiB,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACA,yBAAyB,KAAK;QAAC,OAAO;uBAE3C,oBAACC,8BAA4BA,MAAAA,WAAAA,GACzB,oBAAC3B,cAAYA;IAQrC,OAAO;QAAE,GAAGY,YAAY;QAAEF;QAAWM;QAAeC;IAAU;AAClE"}
@@ -0,0 +1,17 @@
1
+ import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
2
+ export declare const CHECKING = "Checking review status\u2026";
3
+ export declare const FAILED_REASON = "The review status could not be loaded. Try again from the review bar.";
4
+ export declare const NEEDS_REVIEW = "Publishing needs an approved review. Request a review first.";
5
+ export declare const REJECTED_REASON = "This revision was rejected. Create a new revision, then request a new review.";
6
+ export declare const IN_REVIEW_REASON = "This revision is in review. Publishing is allowed once every step approves.";
7
+ export declare const NO_MOVE = "Can\u2019t move while this revision is in review.";
8
+ type Rules = Partial<TargetReviewPresenter.ViewModel>;
9
+ export declare const NO_WORKFLOW: Rules;
10
+ export declare const BOUND_NO_REVIEW: Rules;
11
+ export declare const BOUND_UNPUBLISHED: Rules;
12
+ export declare const LOADING: Rules;
13
+ export declare const FAILED: Rules;
14
+ export declare const IN_REVIEW: Rules;
15
+ export declare const REJECTED: Rules;
16
+ export declare const APPROVED: Rules;
17
+ export {};
@@ -0,0 +1,65 @@
1
+ const CHECKING = "Checking review status…";
2
+ const FAILED_REASON = "The review status could not be loaded. Try again from the review bar.";
3
+ const NEEDS_REVIEW = "Publishing needs an approved review. Request a review first.";
4
+ const REJECTED_REASON = "This revision was rejected. Create a new revision, then request a new review.";
5
+ const IN_REVIEW_REASON = "This revision is in review. Publishing is allowed once every step approves.";
6
+ const NO_MOVE = "Can’t move while this revision is in review.";
7
+ const NO_WORKFLOW = {
8
+ status: "noWorkflow",
9
+ allowsEditing: true,
10
+ allowsPublishing: true,
11
+ publishDisabledReason: null,
12
+ moveDisabledReason: null
13
+ };
14
+ const BOUND_NO_REVIEW = {
15
+ status: "none",
16
+ allowsEditing: true,
17
+ allowsPublishing: false,
18
+ publishDisabledReason: NEEDS_REVIEW,
19
+ moveDisabledReason: null
20
+ };
21
+ const BOUND_UNPUBLISHED = {
22
+ status: "none",
23
+ allowsEditing: true,
24
+ allowsPublishing: true,
25
+ publishDisabledReason: null,
26
+ moveDisabledReason: null
27
+ };
28
+ const LOADING = {
29
+ status: "loading",
30
+ allowsEditing: false,
31
+ allowsPublishing: false,
32
+ publishDisabledReason: CHECKING,
33
+ moveDisabledReason: CHECKING
34
+ };
35
+ const FAILED = {
36
+ status: "failed",
37
+ allowsEditing: false,
38
+ allowsPublishing: false,
39
+ publishDisabledReason: FAILED_REASON,
40
+ moveDisabledReason: FAILED_REASON
41
+ };
42
+ const IN_REVIEW = {
43
+ status: "active",
44
+ allowsEditing: false,
45
+ allowsPublishing: false,
46
+ publishDisabledReason: IN_REVIEW_REASON,
47
+ moveDisabledReason: NO_MOVE
48
+ };
49
+ const REJECTED = {
50
+ status: "active",
51
+ allowsEditing: false,
52
+ allowsPublishing: false,
53
+ publishDisabledReason: REJECTED_REASON,
54
+ moveDisabledReason: null
55
+ };
56
+ const APPROVED = {
57
+ status: "active",
58
+ allowsEditing: false,
59
+ allowsPublishing: true,
60
+ publishDisabledReason: null,
61
+ moveDisabledReason: null
62
+ };
63
+ export { APPROVED, BOUND_NO_REVIEW, BOUND_UNPUBLISHED, CHECKING, FAILED, FAILED_REASON, IN_REVIEW, IN_REVIEW_REASON, LOADING, NEEDS_REVIEW, NO_MOVE, NO_WORKFLOW, REJECTED, REJECTED_REASON };
64
+
65
+ //# sourceMappingURL=reviewStates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/reviewStates.js","sources":["../../src/testing/reviewStates.ts"],"sourcesContent":["import type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\n\nexport const CHECKING = \"Checking review status…\";\nexport const FAILED_REASON =\n \"The review status could not be loaded. Try again from the review bar.\";\nexport const NEEDS_REVIEW = \"Publishing needs an approved review. Request a review first.\";\nexport const REJECTED_REASON =\n \"This revision was rejected. Create a new revision, then request a new review.\";\nexport const IN_REVIEW_REASON =\n \"This revision is in review. Publishing is allowed once every step approves.\";\nexport const NO_MOVE = \"Can’t move while this revision is in review.\";\n\ntype Rules = Partial<TargetReviewPresenter.ViewModel>;\n\n// A model without a workflow: nothing is shown and nothing is gated.\nexport const NO_WORKFLOW: Rules = {\n status: \"noWorkflow\",\n allowsEditing: true,\n allowsPublishing: true,\n publishDisabledReason: null,\n moveDisabledReason: null\n};\n\n// A workflow is bound but there is no active review: editing is free, publishing needs a review.\nexport const BOUND_NO_REVIEW: Rules = {\n status: \"none\",\n allowsEditing: true,\n allowsPublishing: false,\n publishDisabledReason: NEEDS_REVIEW,\n moveDisabledReason: null\n};\n\n/*\n * An unpublished revision with no review: it was reviewed before it was published, so it can be\n * published again (R226, Q19).\n */\nexport const BOUND_UNPUBLISHED: Rules = {\n status: \"none\",\n allowsEditing: true,\n allowsPublishing: true,\n publishDisabledReason: null,\n moveDisabledReason: null\n};\n\nexport const LOADING: Rules = {\n status: \"loading\",\n allowsEditing: false,\n allowsPublishing: false,\n publishDisabledReason: CHECKING,\n moveDisabledReason: CHECKING\n};\n\nexport const FAILED: Rules = {\n status: \"failed\",\n allowsEditing: false,\n allowsPublishing: false,\n publishDisabledReason: FAILED_REASON,\n moveDisabledReason: FAILED_REASON\n};\n\nexport const IN_REVIEW: Rules = {\n status: \"active\",\n allowsEditing: false,\n allowsPublishing: false,\n publishDisabledReason: IN_REVIEW_REASON,\n moveDisabledReason: NO_MOVE\n};\n\nexport const REJECTED: Rules = {\n status: \"active\",\n allowsEditing: false,\n allowsPublishing: false,\n publishDisabledReason: REJECTED_REASON,\n moveDisabledReason: null\n};\n\nexport const APPROVED: Rules = {\n status: \"active\",\n allowsEditing: false,\n allowsPublishing: true,\n publishDisabledReason: null,\n moveDisabledReason: null\n};\n"],"names":["CHECKING","FAILED_REASON","NEEDS_REVIEW","REJECTED_REASON","IN_REVIEW_REASON","NO_MOVE","NO_WORKFLOW","BOUND_NO_REVIEW","BOUND_UNPUBLISHED","LOADING","FAILED","IN_REVIEW","REJECTED","APPROVED"],"mappings":"AAEO,MAAMA,WAAW;AACjB,MAAMC,gBACT;AACG,MAAMC,eAAe;AACrB,MAAMC,kBACT;AACG,MAAMC,mBACT;AACG,MAAMC,UAAU;AAKhB,MAAMC,cAAqB;IAC9B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,oBAAoB;AACxB;AAGO,MAAMC,kBAAyB;IAClC,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuBL;IACvB,oBAAoB;AACxB;AAMO,MAAMM,oBAA2B;IACpC,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,oBAAoB;AACxB;AAEO,MAAMC,UAAiB;IAC1B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuBT;IACvB,oBAAoBA;AACxB;AAEO,MAAMU,SAAgB;IACzB,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuBT;IACvB,oBAAoBA;AACxB;AAEO,MAAMU,YAAmB;IAC5B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuBP;IACvB,oBAAoBC;AACxB;AAEO,MAAMO,WAAkB;IAC3B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuBT;IACvB,oBAAoB;AACxB;AAEO,MAAMU,WAAkB;IAC3B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,oBAAoB;AACxB"}
package/types.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import type { WorkflowStateValue } from "@webiny/app-workflows/types.js";
2
- export interface ICmsEntryWorkflowState {
3
- workflowId: string;
4
- stepId: string;
5
- stepName: string;
6
- state: WorkflowStateValue;
1
+ import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
2
+ import type { SystemWorkflowValue } from "@webiny/app-workflows/review/domain/types.js";
3
+ export interface ICmsEntrySystemWithReview {
4
+ workflow?: SystemWorkflowValue | null;
7
5
  }
8
- export interface ICmsEntrySystemWithWorkflow {
9
- workflow?: ICmsEntryWorkflowState | null;
6
+ type CmsEntryMeta = CmsContentEntry["meta"];
7
+ export interface ICmsEntryMetaWithReview extends CmsEntryMeta {
8
+ system?: ICmsEntrySystemWithReview | null;
10
9
  }
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
2
+ export declare function isReviewableModel(model: Pick<CmsModel, "tags">): boolean;
@@ -0,0 +1,7 @@
1
+ import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
2
+ function isReviewableModel(model) {
3
+ return !model.tags.includes(CMS_MODEL_SINGLETON_TAG);
4
+ }
5
+ export { isReviewableModel };
6
+
7
+ //# sourceMappingURL=isReviewableModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils/isReviewableModel.js","sources":["../../src/utils/isReviewableModel.ts"],"sourcesContent":["import { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\n/*\n * Singleton models have one entry that is edited in place and are never bound to a workflow (the\n * old editor skipped them the same way).\n */\nexport function isReviewableModel(model: Pick<CmsModel, \"tags\">): boolean {\n return !model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n}\n"],"names":["isReviewableModel","model","CMS_MODEL_SINGLETON_TAG"],"mappings":";AAOO,SAASA,kBAAkBC,KAA6B;IAC3D,OAAO,CAACA,MAAM,IAAI,CAAC,QAAQ,CAACC;AAChC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { CmsModel } from "@webiny/app-headless-cms/types.js";
3
+ export declare const renderModelIcon: (model: Pick<CmsModel, "name" | "icon">) => React.ReactNode;
@@ -0,0 +1,19 @@
1
+ import react from "react";
2
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3
+ import { Icon } from "@webiny/admin-ui";
4
+ import { normalizeIcon } from "@webiny/app-headless-cms/utils/normalizeIcon.js";
5
+ const renderModelIcon = (model)=>{
6
+ const icon = normalizeIcon(model.icon);
7
+ if (!icon) return null;
8
+ return /*#__PURE__*/ react.createElement(Icon, {
9
+ icon: /*#__PURE__*/ react.createElement(FontAwesomeIcon, {
10
+ icon: icon
11
+ }),
12
+ label: model.name,
13
+ size: "sm",
14
+ color: "neutral-light"
15
+ });
16
+ };
17
+ export { renderModelIcon };
18
+
19
+ //# sourceMappingURL=renderModelIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils/renderModelIcon.js","sources":["../../src/utils/renderModelIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport type { CmsModel } from \"@webiny/app-headless-cms/types.js\";\nimport { normalizeIcon } from \"@webiny/app-headless-cms/utils/normalizeIcon.js\";\n\n/*\n * The icon of a content model, drawn from `CmsModel.icon`. A model without a usable icon gets\n * `null`, so each caller picks its own fallback.\n */\nexport const renderModelIcon = (model: Pick<CmsModel, \"name\" | \"icon\">): React.ReactNode => {\n const icon = normalizeIcon(model.icon);\n if (!icon) {\n return null;\n }\n\n return (\n <Icon\n icon={<FontAwesomeIcon icon={icon} />}\n label={model.name}\n size=\"sm\"\n color=\"neutral-light\"\n />\n );\n};\n"],"names":["renderModelIcon","model","icon","normalizeIcon","Icon","FontAwesomeIcon"],"mappings":";;;;AAUO,MAAMA,kBAAkB,CAACC;IAC5B,MAAMC,OAAOC,cAAcF,MAAM,IAAI;IACrC,IAAI,CAACC,MACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAACE,MAAIA;QACD,oBAAM,oBAACC,iBAAeA;YAAC,MAAMH;;QAC7B,OAAOD,MAAM,IAAI;QACjB,MAAK;QACL,OAAM;;AAGlB"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { CmsModel } from "@webiny/app-headless-cms/types.js";
3
+ export declare const renderModelIconOrFallback: (model: Pick<CmsModel, "name" | "icon"> | undefined, fallbackLabel: string) => React.ReactNode;
@@ -0,0 +1,17 @@
1
+ import react from "react";
2
+ import { Icon } from "@webiny/admin-ui";
3
+ import { ReactComponent } from "@webiny/icons/devices_other.svg";
4
+ import { renderModelIcon } from "./renderModelIcon.js";
5
+ const renderModelIconOrFallback = (model, fallbackLabel)=>{
6
+ const icon = model ? renderModelIcon(model) : null;
7
+ if (icon) return icon;
8
+ return /*#__PURE__*/ react.createElement(Icon, {
9
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
10
+ label: model?.name ?? fallbackLabel,
11
+ size: "sm",
12
+ color: "neutral-light"
13
+ });
14
+ };
15
+ export { renderModelIconOrFallback };
16
+
17
+ //# sourceMappingURL=renderModelIconOrFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils/renderModelIconOrFallback.js","sources":["../../src/utils/renderModelIconOrFallback.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport type { CmsModel } from \"@webiny/app-headless-cms/types.js\";\nimport { ReactComponent as DevicesOtherIcon } from \"@webiny/icons/devices_other.svg\";\nimport { renderModelIcon } from \"./renderModelIcon.js\";\n\n/*\n * The icon of a content model, or the generic `devices_other` icon for a model without a usable\n * icon (or no model at all, labelled with `fallbackLabel`).\n */\nexport const renderModelIconOrFallback = (\n model: Pick<CmsModel, \"name\" | \"icon\"> | undefined,\n fallbackLabel: string\n): React.ReactNode => {\n const icon = model ? renderModelIcon(model) : null;\n if (icon) {\n return icon;\n }\n\n return (\n <Icon\n icon={<DevicesOtherIcon />}\n label={model?.name ?? fallbackLabel}\n size=\"sm\"\n color=\"neutral-light\"\n />\n );\n};\n"],"names":["renderModelIconOrFallback","model","fallbackLabel","icon","renderModelIcon","Icon","DevicesOtherIcon"],"mappings":";;;;AAUO,MAAMA,4BAA4B,CACrCC,OACAC;IAEA,MAAMC,OAAOF,QAAQG,gBAAgBH,SAAS;IAC9C,IAAIE,MACA,OAAOA;IAGX,OAAO,WAAP,GACI,oBAACE,MAAIA;QACD,oBAAM,oBAACC,gBAAgBA;QACvB,OAAOL,OAAO,QAAQC;QACtB,MAAK;QACL,OAAM;;AAGlB"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntriesWorkflowStateListFooterMenu: () => React.JSX.Element;
@@ -1,34 +0,0 @@
1
- import react from "react";
2
- import { Sidebar } from "@webiny/admin-ui";
3
- import { ReactComponent } from "@webiny/icons/flowchart.svg";
4
- import { Components } from "@webiny/app-workflows";
5
- import { ContentEntryListConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
6
- import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
7
- import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
8
- import { createAppName } from "../../utils/appName.js";
9
- const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
10
- const { Browser: Browser } = ContentEntryListConfig;
11
- const ContentReviewsMenuItem = ()=>{
12
- const presenter = useContentEntriesPresenter();
13
- const model = presenter.vm.model;
14
- const app = createAppName(model);
15
- return /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
16
- app: app
17
- }, ({ showOverlay })=>/*#__PURE__*/ react.createElement("div", {
18
- className: "list-none"
19
- }, /*#__PURE__*/ react.createElement(Sidebar.Item, {
20
- onClick: showOverlay,
21
- text: "Content Reviews",
22
- icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
23
- element: /*#__PURE__*/ react.createElement(ReactComponent, null),
24
- label: "Content Reviews"
25
- })
26
- }))));
27
- };
28
- const CmsEntriesWorkflowStateListFooterMenu = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
29
- name: "content-reviews",
30
- element: /*#__PURE__*/ react.createElement(ContentReviewsMenuItem, null)
31
- }));
32
- export { CmsEntriesWorkflowStateListFooterMenu };
33
-
34
- //# sourceMappingURL=CmsEntriesWorkflowStateListFooterMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js","sources":["../../../src/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/flowchart.svg\";\nimport { Components as WorkflowsComponents } from \"@webiny/app-workflows\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = WorkflowsComponents;\n\nconst { Browser } = ContentEntryListConfig;\n\nconst ContentReviewsMenuItem = () => {\n const presenter = useContentEntriesPresenter();\n\n const model = presenter.vm.model;\n const app = createAppName(model);\n\n return (\n <IsModelPublishable>\n <WorkflowStateListAppOverlay app={app}>\n {({ showOverlay }) => {\n return (\n <div className={\"list-none\"}>\n <Sidebar.Item\n onClick={showOverlay}\n text={\"Content Reviews\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Content Reviews\"}\n />\n }\n />\n </div>\n );\n }}\n </WorkflowStateListAppOverlay>\n </IsModelPublishable>\n );\n};\n\nexport const CmsEntriesWorkflowStateListFooterMenu = () => {\n return (\n <ContentEntryListConfig>\n <Browser.Sidebar.Footer name={\"content-reviews\"} element={<ContentReviewsMenuItem />} />\n </ContentEntryListConfig>\n );\n};\n"],"names":["WorkflowStateListAppOverlay","WorkflowsComponents","Browser","ContentEntryListConfig","ContentReviewsMenuItem","presenter","useContentEntriesPresenter","model","app","createAppName","IsModelPublishable","showOverlay","Sidebar","WorkflowStateListIcon","CmsEntriesWorkflowStateListFooterMenu"],"mappings":";;;;;;;;AASA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,yBAAyB;IAC3B,MAAMC,YAAYC;IAElB,MAAMC,QAAQF,UAAU,EAAE,CAAC,KAAK;IAChC,MAAMG,MAAMC,cAAcF;IAE1B,OAAO,WAAP,GACI,oBAACG,oBAAkBA,MAAAA,WAAAA,GACf,oBAACV,6BAA2BA;QAAC,KAAKQ;OAC7B,CAAC,EAAEG,WAAW,EAAE,GACN,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAACC,QAAQ,IAAI;YACT,SAASD;YACT,MAAM;YACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;gBACd,uBAAS,oBAACC,gBAAqBA;gBAC/B,OAAO;;;AAU/C;AAEO,MAAMC,wCAAwC,IAC1C,WAAP,GACI,oBAACX,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,OAAO,CAAC,MAAM;QAAC,MAAM;QAAmB,uBAAS,oBAACE,wBAAsBA"}
@@ -1 +0,0 @@
1
- export { CmsEntriesWorkflowStateListFooterMenu } from "./CmsEntriesWorkflowStateListFooterMenu.js";
@@ -1 +0,0 @@
1
- export { CmsEntriesWorkflowStateListFooterMenu } from "./CmsEntriesWorkflowStateListFooterMenu.js";
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormCreateNewRevisionButton: () => React.JSX.Element;
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { useRoute } from \"@webiny/app\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { InternalContentEntryEditorConfig, usePermission } from \"@webiny/app-headless-cms\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { RevisionsListFeature } from \"@webiny/app-headless-cms/presentation/contentEntries/revisionsList/feature.js\";\nimport { ReactComponent as NewReleaseIcon } from \"@webiny/icons/new_releases.svg\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { OptionsMenuItem } from \"@webiny/app-admin\";\n\nconst { Actions } = InternalContentEntryEditorConfig;\n\nconst CreateNewRevisionMenuItem = () => {\n const toast = useToast();\n const { setRouteParams } = useRoute();\n const { canEdit } = usePermission();\n const formPresenter = useContentEntryFormPresenter();\n const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);\n\n const entry = formPresenter.vm.entry;\n\n const onClick = useCallback(async () => {\n if (!entry) {\n return;\n }\n\n const newEntry = await revisionsPresenter.createRevision(entry.id);\n\n if (!newEntry) {\n toast.showWarningToast({\n title: \"Could not create a new revision.\"\n });\n return;\n }\n\n setRouteParams(params => {\n return { ...params, id: newEntry.id };\n });\n }, [entry, revisionsPresenter]);\n\n if (!entry || !canEdit(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<NewReleaseIcon />}\n disabled={!entry.id}\n label={`Create New Revision`}\n onAction={onClick}\n data-testid={\"cms.content-form.header.createNewRevision\"}\n />\n );\n};\n\nexport const CmsEntryFormCreateNewRevisionButton = () => {\n return (\n <InternalContentEntryEditorConfig>\n <IsModelPublishable>\n <Actions.MenuItemAction\n name={\"createNewRevision\"}\n element={<CreateNewRevisionMenuItem />}\n />\n </IsModelPublishable>\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["Actions","InternalContentEntryEditorConfig","CreateNewRevisionMenuItem","toast","useToast","setRouteParams","useRoute","canEdit","usePermission","formPresenter","useContentEntryFormPresenter","revisionsPresenter","useFeature","RevisionsListFeature","entry","onClick","useCallback","newEntry","params","OptionsMenuItem","NewReleaseIcon","CmsEntryFormCreateNewRevisionButton","IsModelPublishable"],"mappings":";;;;;;;;;AAWA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,4BAA4B;IAC9B,MAAMC,QAAQC;IACd,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAMC,gBAAgBC;IACtB,MAAM,EAAE,WAAWC,kBAAkB,EAAE,GAAGC,WAAWC;IAErD,MAAMC,QAAQL,cAAc,EAAE,CAAC,KAAK;IAEpC,MAAMM,UAAUC,YAAY;QACxB,IAAI,CAACF,OACD;QAGJ,MAAMG,WAAW,MAAMN,mBAAmB,cAAc,CAACG,MAAM,EAAE;QAEjE,IAAI,CAACG,UAAU,YACXd,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;QAIJE,eAAea,CAAAA,SACJ;gBAAE,GAAGA,MAAM;gBAAE,IAAID,SAAS,EAAE;YAAC;IAE5C,GAAG;QAACH;QAAOH;KAAmB;IAE9B,IAAI,CAACG,SAAS,CAACP,QAAQO,OAAO,qBAC1B,OAAO;IAGX,OAAO,WAAP,GACI,oBAACK,iBAAeA;QACZ,oBAAM,oBAACC,gBAAcA;QACrB,UAAU,CAACN,MAAM,EAAE;QACnB,OAAO;QACP,UAAUC;QACV,eAAa;;AAGzB;AAEO,MAAMM,sCAAsC,IACxC,WAAP,GACI,oBAACpB,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACqB,oBAAkBA,MAAAA,WAAAA,GACf,oBAACtB,QAAQ,cAAc;QACnB,MAAM;QACN,uBAAS,oBAACE,2BAAyBA"}
@@ -1,5 +0,0 @@
1
- import React from "react";
2
- /**
3
- * There is a possibility that this decorator will not do anything, because scheduler is not turned on.
4
- */
5
- export declare const CmsEntryFormScheduleMenuItemAction: (props: unknown) => React.JSX.Element;
@@ -1,22 +0,0 @@
1
- import react from "react";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState } from "@webiny/app-workflows";
4
- const { Actions: Actions } = ContentEntryEditorConfig;
5
- const { MenuItemAction: MenuItemAction } = Actions;
6
- const OverrideScheduleMenuItemAction = (props)=>{
7
- const { presenter } = useWorkflowState();
8
- if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) ;
9
- else if ("schedule" === props.name) return null;
10
- return props.children;
11
- };
12
- const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator((Original)=>function(props) {
13
- return /*#__PURE__*/ react.createElement(Original, {
14
- ...props,
15
- element: /*#__PURE__*/ react.createElement(OverrideScheduleMenuItemAction, {
16
- name: props.name
17
- }, props.element)
18
- });
19
- });
20
- export { CmsEntryFormScheduleMenuItemAction };
21
-
22
- //# sourceMappingURL=CmsEntryFormScheduleMenuItemAction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { MenuItemAction } = Actions;\n\ninterface IOverrideScheduleMenuItemActionProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideScheduleMenuItemAction = (props: IOverrideScheduleMenuItemActionProps) => {\n const { presenter } = useWorkflowState();\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) {\n return props.children;\n } else if (props.name === \"schedule\") {\n return null;\n }\n return props.children;\n};\n/**\n * There is a possibility that this decorator will not do anything, because scheduler is not turned on.\n */\nexport const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {\n return function WorkflowCmsEntryScheduleMenuItemAction(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideScheduleMenuItemAction name={props.name}>\n {props.element}\n </OverrideScheduleMenuItemAction>\n }\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","MenuItemAction","OverrideScheduleMenuItemAction","props","presenter","useWorkflowState","CmsEntryFormScheduleMenuItemAction","Original"],"mappings":";;;AAIA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,gBAAAA,cAAc,EAAE,GAAGF;AAO3B,MAAMG,iCAAiC,CAACC;IACpC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAKtB,IAAI,CAACD,UAAU,EAAE,CAAC,WAAW,IAAIA,UAAU,EAAE,CAAC,UAAU;SAEjD,IAAID,AAAe,eAAfA,MAAM,IAAI,EACjB,OAAO;IAEX,OAAOA,MAAM,QAAQ;AACzB;AAIO,MAAMG,qCAAqCL,eAAe,eAAe,CAACM,CAAAA,WACtE,SAAgDJ,KAAK;QACxD,OAAO,WAAP,GACI,oBAACI,UAAAA;YACI,GAAGJ,KAAK;YACT,uBACI,oBAACD,gCAA8BA;gBAAC,MAAMC,MAAM,IAAI;eAC3CA,MAAM,OAAO;;IAKlC"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormTooltipButton: () => React.JSX.Element;
@@ -1,13 +0,0 @@
1
- import react from "react";
2
- import { Components } from "@webiny/app-workflows";
3
- import { InternalContentEntryEditorConfig } from "@webiny/app-headless-cms";
4
- const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
5
- const { Actions: Actions } = InternalContentEntryEditorConfig;
6
- const CmsEntryFormTooltipButton = ()=>/*#__PURE__*/ react.createElement(InternalContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(Actions.ButtonAction, {
7
- before: "save",
8
- name: "workflowStateTooltip",
9
- element: /*#__PURE__*/ react.createElement(WorkflowStateTooltip, null)
10
- }));
11
- export { CmsEntryFormTooltipButton };
12
-
13
- //# sourceMappingURL=CmsEntryFormTooltipButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormTooltipButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormTooltipButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { InternalContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = InternalContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <InternalContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Actions","InternalContentEntryEditorConfig","CmsEntryFormTooltipButton"],"mappings":";;;AAIA,MAAM,EACF,eAAe,EAAEA,sBAAAA,oBAAoB,EAAE,EAC1C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,4BAA4B,IAC9B,WAAP,GACI,oBAACD,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACD,QAAQ,YAAY;QACjB,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACF,sBAAoBA"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const ContentEntryFormWorkflow: (props: unknown) => React.JSX.Element;
@@ -1,24 +0,0 @@
1
- import react from "react";
2
- import { observer } from "mobx-react-lite";
3
- import { Alert } from "@webiny/admin-ui";
4
- import { ContentEntryFormContent } from "@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js";
5
- import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js";
6
- import { Components, useWorkflowState } from "@webiny/app-workflows";
7
- import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
8
- const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
9
- const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator((Original)=>observer(function(props) {
10
- const formPresenter = useContentEntryFormPresenter();
11
- const { presenter } = useWorkflowState();
12
- const model = formPresenter.vm.model;
13
- const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);
14
- if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) return /*#__PURE__*/ react.createElement(Original, props);
15
- return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
16
- className: "max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed"
17
- }, /*#__PURE__*/ react.createElement(WorkflowStateBar, null), presenter.vm.hasState ? /*#__PURE__*/ react.createElement(Alert, {
18
- type: "danger",
19
- className: "mt-sm"
20
- }, "Any changes you do on the entry will not be stored!") : null), /*#__PURE__*/ react.createElement(Original, props));
21
- }));
22
- export { ContentEntryFormWorkflow };
23
-
24
- //# sourceMappingURL=ContentEntryFormWorkflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/ContentEntryFormWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Alert } from \"@webiny/admin-ui\";\nimport { ContentEntryFormContent } from \"@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator(Original => {\n return observer(function ContentEntryFormWorkflowDecorator(props) {\n const formPresenter = useContentEntryFormPresenter();\n const { presenter } = useWorkflowState();\n const model = formPresenter.vm.model;\n\n const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n\n if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) {\n return <Original {...props} />;\n }\n\n return (\n <>\n <div\n className={\n \"max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed\"\n }\n >\n <WorkflowStateBar />\n {presenter.vm.hasState ? (\n <Alert type=\"danger\" className={\"mt-sm\"}>\n Any changes you do on the entry will not be stored!\n </Alert>\n ) : null}\n </div>\n <Original {...props} />\n </>\n );\n });\n});\n"],"names":["WorkflowStateBar","Components","ContentEntryFormWorkflow","ContentEntryFormContent","Original","observer","props","formPresenter","useContentEntryFormPresenter","presenter","useWorkflowState","model","isSingleton","CMS_MODEL_SINGLETON_TAG","Alert"],"mappings":";;;;;;;AASA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,2BAA2BC,wBAAwB,eAAe,CAACC,CAAAA,WACrEC,SAAS,SAA2CC,KAAK;QAC5D,MAAMC,gBAAgBC;QACtB,MAAM,EAAEC,SAAS,EAAE,GAAGC;QACtB,MAAMC,QAAQJ,cAAc,EAAE,CAAC,KAAK;QAEpC,MAAMK,cAAcD,MAAM,IAAI,CAAC,QAAQ,CAACE;QAExC,IAAID,eAAeL,cAAc,EAAE,CAAC,UAAU,IAAI,CAACE,UAAU,EAAE,CAAC,WAAW,EACvE,OAAO,WAAP,GAAO,oBAACL,UAAaE;QAGzB,OAAO,WAAP,GACI,wDACI,oBAAC;YACG,WACI;yBAGJ,oBAACN,kBAAgBA,OAChBS,UAAU,EAAE,CAAC,QAAQ,GAAG,WAAH,GAClB,oBAACK,OAAKA;YAAC,MAAK;YAAS,WAAW;WAAS,yDAGzC,qBAER,oBAACV,UAAaE;IAG1B"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const ListOpenInNewWindow: (props: unknown) => React.JSX.Element;
@@ -1,36 +0,0 @@
1
- import react, { useCallback } from "react";
2
- import { DropdownMenu, Icon } from "@webiny/admin-ui";
3
- import { Components } from "@webiny/app-workflows";
4
- import { ReactComponent } from "@webiny/icons/open_in_new.svg";
5
- import { useRouter } from "@webiny/app";
6
- import { Routes } from "@webiny/app-headless-cms/routes.js";
7
- import { isCmsAppName, parseAppName } from "../../utils/appName.js";
8
- const { OpenInNewWindow: OpenInNewWindow } = Components.List.Options;
9
- const OpenInNewWindow_ListOpenInNewWindow = OpenInNewWindow.createDecorator((Original)=>function(props) {
10
- const { state } = props;
11
- const { getLink } = useRouter();
12
- const onClick = useCallback(()=>{
13
- const modelId = parseAppName(state.app);
14
- const url = getLink(Routes.ContentEntries.List, {
15
- modelId,
16
- id: state.targetRevisionId,
17
- folderId: "root"
18
- });
19
- const goTo = `${window.location.origin}${url}`;
20
- window.open(goTo, "_blank");
21
- }, [
22
- state.id
23
- ]);
24
- if (false === isCmsAppName(state.app)) return /*#__PURE__*/ react.createElement(Original, props);
25
- return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
26
- icon: /*#__PURE__*/ react.createElement(Icon, {
27
- icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
28
- label: "Open In New Window"
29
- }),
30
- text: "Open in New Window",
31
- onClick: onClick
32
- });
33
- });
34
- export { OpenInNewWindow_ListOpenInNewWindow as ListOpenInNewWindow };
35
-
36
- //# sourceMappingURL=OpenInNewWindow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/OptionItem/OpenInNewWindow.js","sources":["../../../src/Components/OptionItem/OpenInNewWindow.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { DropdownMenu, Icon } from \"@webiny/admin-ui\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ReactComponent as OpenInNewIcon } from \"@webiny/icons/open_in_new.svg\";\nimport { useRouter } from \"@webiny/app\";\nimport { Routes } from \"@webiny/app-headless-cms/routes.js\";\nimport { isCmsAppName, parseAppName } from \"~/utils/appName.js\";\n\nconst { OpenInNewWindow } = Components.List.Options;\n\nexport const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {\n return function ListOpenInNewWindow(props) {\n const { state } = props;\n\n const { getLink } = useRouter();\n const onClick = useCallback(() => {\n const modelId = parseAppName(state.app);\n const url = getLink(Routes.ContentEntries.List, {\n modelId,\n id: state.targetRevisionId,\n // TODO figure out how to load folderId\n folderId: \"root\"\n });\n\n const goTo = `${window.location.origin}${url}`;\n\n window.open(goTo, \"_blank\");\n }, [state.id]);\n\n if (isCmsAppName(state.app) === false) {\n return <Original {...props} />;\n }\n\n return (\n <DropdownMenu.Item\n icon={<Icon icon={<OpenInNewIcon />} label={\"Open In New Window\"} />}\n text={\"Open in New Window\"}\n onClick={onClick}\n />\n );\n };\n});\n"],"names":["OpenInNewWindow","Components","ListOpenInNewWindow","Original","props","state","getLink","useRouter","onClick","useCallback","modelId","parseAppName","url","Routes","goTo","window","isCmsAppName","DropdownMenu","Icon","OpenInNewIcon"],"mappings":";;;;;;;AAQA,MAAM,EAAEA,iBAAAA,eAAe,EAAE,GAAGC,WAAW,IAAI,CAAC,OAAO;AAE5C,MAAMC,sCAAsBF,gBAAgB,eAAe,CAACG,CAAAA,WACxD,SAA6BC,KAAK;QACrC,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAElB,MAAM,EAAEE,OAAO,EAAE,GAAGC;QACpB,MAAMC,UAAUC,YAAY;YACxB,MAAMC,UAAUC,aAAaN,MAAM,GAAG;YACtC,MAAMO,MAAMN,QAAQO,OAAO,cAAc,CAAC,IAAI,EAAE;gBAC5CH;gBACA,IAAIL,MAAM,gBAAgB;gBAE1B,UAAU;YACd;YAEA,MAAMS,OAAO,GAAGC,OAAO,QAAQ,CAAC,MAAM,GAAGH,KAAK;YAE9CG,OAAO,IAAI,CAACD,MAAM;QACtB,GAAG;YAACT,MAAM,EAAE;SAAC;QAEb,IAAIW,AAA4B,UAA5BA,aAAaX,MAAM,GAAG,GACtB,OAAO,WAAP,GAAO,oBAACF,UAAaC;QAGzB,OAAO,WAAP,GACI,oBAACa,aAAa,IAAI;YACd,oBAAM,oBAACC,MAAIA;gBAAC,oBAAM,oBAACC,gBAAaA;gBAAK,OAAO;;YAC5C,MAAM;YACN,SAASX;;IAGrB"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsWorkflowsEditor: () => React.JSX.Element | null;
@@ -1,26 +0,0 @@
1
- import react, { Suspense } from "react";
2
- import { Routes } from "../routes.js";
3
- import react_helmet from "react-helmet";
4
- import { i18n } from "@webiny/app/i18n/index.js";
5
- import { AdminConfig, AdminLayout, SecureRoute } from "@webiny/app-admin";
6
- import { OverlayLoader } from "@webiny/admin-ui";
7
- import { useCanUseWorkflows } from "@webiny/app-workflows";
8
- import { CmsWorkflowsEditorMenu, CmsWorkflowsEditorView } from "../presentation/CmsWorkflowsEditorView.js";
9
- const t = i18n.namespace("HeadlessCms.Workflows.Editor");
10
- const Loader = ({ children, ...props })=>/*#__PURE__*/ react.createElement(Suspense, {
11
- fallback: /*#__PURE__*/ react.createElement(OverlayLoader, null)
12
- }, /*#__PURE__*/ react.cloneElement(children, props));
13
- const { Route: Route } = AdminConfig;
14
- const CmsWorkflowsEditor = ()=>{
15
- const { canUseWorkflows } = useCanUseWorkflows();
16
- if (!canUseWorkflows) return null;
17
- return /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(Route, {
18
- route: Routes.ContentModels.Workflows,
19
- element: /*#__PURE__*/ react.createElement(SecureRoute, {
20
- permission: "cms.contentModel"
21
- }, /*#__PURE__*/ react.createElement(AdminLayout, null, /*#__PURE__*/ react.createElement(react_helmet, null, /*#__PURE__*/ react.createElement("title", null, t`Workflows`)), /*#__PURE__*/ react.createElement(Loader, null, /*#__PURE__*/ react.createElement(CmsWorkflowsEditorView, null))))
22
- }), /*#__PURE__*/ react.createElement(CmsWorkflowsEditorMenu, null));
23
- };
24
- export { CmsWorkflowsEditor };
25
-
26
- //# sourceMappingURL=CmsWorkflowsEditor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Routes/CmsWorkflowsEditor.js","sources":["../../src/Routes/CmsWorkflowsEditor.tsx"],"sourcesContent":["import React, { Suspense } from \"react\";\nimport { Routes } from \"~/routes.js\";\nimport Helmet from \"react-helmet\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { SecureRoute } from \"@webiny/app-admin\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { useCanUseWorkflows } from \"@webiny/app-workflows\";\nimport { CmsWorkflowsEditorView } from \"~/presentation/CmsWorkflowsEditorView.js\";\nimport { CmsWorkflowsEditorMenu } from \"~/presentation/CmsWorkflowsEditorView.js\";\n\nconst t = i18n.namespace(\"HeadlessCms.Workflows.Editor\");\n\ninterface LoaderProps {\n children: React.ReactNode;\n}\n\nconst Loader = ({ children, ...props }: LoaderProps) => (\n <Suspense fallback={<OverlayLoader />}>\n {React.cloneElement(children as unknown as React.ReactElement, props)}\n </Suspense>\n);\n\nconst { Route } = AdminConfig;\n\nexport const CmsWorkflowsEditor = () => {\n const { canUseWorkflows } = useCanUseWorkflows();\n if (!canUseWorkflows) {\n return null;\n }\n return (\n <AdminConfig>\n <Route\n route={Routes.ContentModels.Workflows}\n element={\n <SecureRoute permission={\"cms.contentModel\"}>\n <AdminLayout>\n <Helmet>\n <title>{t`Workflows`}</title>\n </Helmet>\n <Loader>\n <CmsWorkflowsEditorView />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n }\n />\n <CmsWorkflowsEditorMenu />\n </AdminConfig>\n );\n};\n"],"names":["t","i18n","Loader","children","props","Suspense","OverlayLoader","React","Route","AdminConfig","CmsWorkflowsEditor","canUseWorkflows","useCanUseWorkflows","Routes","SecureRoute","AdminLayout","Helmet","CmsWorkflowsEditorView","CmsWorkflowsEditorMenu"],"mappings":";;;;;;;;AAWA,MAAMA,IAAIC,KAAK,SAAS,CAAC;AAMzB,MAAMC,SAAS,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAoB,iBAC/C,oBAACC,UAAQA;QAAC,wBAAU,oBAACC,eAAaA;qBAC7BC,MAAAA,YAAkB,CAACJ,UAA2CC;AAIvE,MAAM,EAAEI,OAAAA,KAAK,EAAE,GAAGC;AAEX,MAAMC,qBAAqB;IAC9B,MAAM,EAAEC,eAAe,EAAE,GAAGC;IAC5B,IAAI,CAACD,iBACD,OAAO;IAEX,OAAO,WAAP,GACI,oBAACF,aAAWA,MAAAA,WAAAA,GACR,oBAACD,OAAKA;QACF,OAAOK,OAAO,aAAa,CAAC,SAAS;QACrC,uBACI,oBAACC,aAAWA;YAAC,YAAY;yBACrB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,cAAMA,MAAAA,WAAAA,GACH,oBAAC,eAAOhB,CAAC,CAAC,SAAS,CAAC,kBAExB,oBAACE,QAAMA,MAAAA,WAAAA,GACH,oBAACe,wBAAsBA;sBAM3C,oBAACC,wBAAsBA;AAGnC"}
@@ -1,11 +0,0 @@
1
- import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
2
- import { WorkflowStateChangedHandler, type WorkflowStateChangedEvent } from "@webiny/app-workflows/domain/events.js";
3
- declare class WorkflowStateCacheHandlerImpl implements WorkflowStateChangedHandler.Interface {
4
- private cacheProvider;
5
- constructor(cacheProvider: ContentEntriesCacheProvider.Interface);
6
- handle(event: WorkflowStateChangedEvent): Promise<void>;
7
- }
8
- export declare const WorkflowStateCacheHandler: typeof WorkflowStateCacheHandlerImpl & {
9
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/app/features/eventPublisher").IEventHandler<WorkflowStateChangedEvent>>;
10
- };
11
- export {};
@@ -1,50 +0,0 @@
1
- import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
2
- import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
3
- import { WorkflowStateChangedHandler } from "@webiny/app-workflows/domain/events.js";
4
- function getModelIdFromAppName(app) {
5
- const matched = app.match(/^cms\.([a-zA-Z0-9_-]+)$/);
6
- return matched ? matched[1] : null;
7
- }
8
- function toWorkflowStateValues(state) {
9
- if (!state) return null;
10
- return {
11
- workflowId: state.id,
12
- stepId: state.currentStep.id,
13
- stepName: state.currentStep.title,
14
- state: state.state
15
- };
16
- }
17
- class WorkflowStateCacheHandlerImpl {
18
- constructor(cacheProvider){
19
- this.cacheProvider = cacheProvider;
20
- }
21
- async handle(event) {
22
- const { app, targetRevisionId, state } = event.payload;
23
- const modelId = getModelIdFromAppName(app);
24
- if (!modelId) return;
25
- const { id: entryId } = parseIdentifier(targetRevisionId);
26
- const cache = this.cacheProvider.get(modelId);
27
- const workflowValues = toWorkflowStateValues(state);
28
- cache.updateItems((entry)=>{
29
- if (entry.entryId !== entryId) return entry;
30
- return {
31
- ...entry,
32
- meta: {
33
- ...entry.meta,
34
- system: {
35
- workflow: workflowValues
36
- }
37
- }
38
- };
39
- });
40
- }
41
- }
42
- const WorkflowStateCacheHandler = WorkflowStateChangedHandler.createImplementation({
43
- implementation: WorkflowStateCacheHandlerImpl,
44
- dependencies: [
45
- ContentEntriesCacheProvider
46
- ]
47
- });
48
- export { WorkflowStateCacheHandler };
49
-
50
- //# sourceMappingURL=WorkflowStateCacheHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"features/WorkflowStateCacheHandler.js","sources":["../../src/features/WorkflowStateCacheHandler.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport {\n WorkflowStateChangedHandler,\n type WorkflowStateChangedEvent\n} from \"@webiny/app-workflows/domain/events.js\";\nimport type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { ICmsEntryWorkflowState } from \"~/types.js\";\n\nfunction getModelIdFromAppName(app: string): string | null {\n const matched = app.match(/^cms\\.([a-zA-Z0-9_-]+)$/);\n return matched ? matched[1] : null;\n}\n\nfunction toWorkflowStateValues(\n state: WorkflowStateChangedEvent[\"payload\"][\"state\"]\n): ICmsEntryWorkflowState | null {\n if (!state) {\n return null;\n }\n\n return {\n workflowId: state.id,\n stepId: state.currentStep.id,\n stepName: state.currentStep.title,\n state: state.state\n };\n}\n\nclass WorkflowStateCacheHandlerImpl implements WorkflowStateChangedHandler.Interface {\n constructor(private cacheProvider: ContentEntriesCacheProvider.Interface) {}\n\n async handle(event: WorkflowStateChangedEvent): Promise<void> {\n const { app, targetRevisionId, state } = event.payload;\n\n const modelId = getModelIdFromAppName(app);\n if (!modelId) {\n return;\n }\n\n const { id: entryId } = parseIdentifier(targetRevisionId);\n const cache = this.cacheProvider.get(modelId);\n const workflowValues = toWorkflowStateValues(state);\n\n cache.updateItems((entry: CmsContentEntry) => {\n if (entry.entryId !== entryId) {\n return entry;\n }\n\n return {\n ...entry,\n meta: {\n ...entry.meta,\n system: {\n workflow: workflowValues\n }\n }\n };\n });\n }\n}\n\nexport const WorkflowStateCacheHandler = WorkflowStateChangedHandler.createImplementation({\n implementation: WorkflowStateCacheHandlerImpl,\n dependencies: [ContentEntriesCacheProvider]\n});\n"],"names":["getModelIdFromAppName","app","matched","toWorkflowStateValues","state","WorkflowStateCacheHandlerImpl","cacheProvider","event","targetRevisionId","modelId","entryId","parseIdentifier","cache","workflowValues","entry","WorkflowStateCacheHandler","WorkflowStateChangedHandler","ContentEntriesCacheProvider"],"mappings":";;;AASA,SAASA,sBAAsBC,GAAW;IACtC,MAAMC,UAAUD,IAAI,KAAK,CAAC;IAC1B,OAAOC,UAAUA,OAAO,CAAC,EAAE,GAAG;AAClC;AAEA,SAASC,sBACLC,KAAoD;IAEpD,IAAI,CAACA,OACD,OAAO;IAGX,OAAO;QACH,YAAYA,MAAM,EAAE;QACpB,QAAQA,MAAM,WAAW,CAAC,EAAE;QAC5B,UAAUA,MAAM,WAAW,CAAC,KAAK;QACjC,OAAOA,MAAM,KAAK;IACtB;AACJ;AAEA,MAAMC;IACF,YAAoBC,aAAoD,CAAE;aAAtDA,aAAa,GAAbA;IAAuD;IAE3E,MAAM,OAAOC,KAAgC,EAAiB;QAC1D,MAAM,EAAEN,GAAG,EAAEO,gBAAgB,EAAEJ,KAAK,EAAE,GAAGG,MAAM,OAAO;QAEtD,MAAME,UAAUT,sBAAsBC;QACtC,IAAI,CAACQ,SACD;QAGJ,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBH;QACxC,MAAMI,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAACH;QACrC,MAAMI,iBAAiBV,sBAAsBC;QAE7CQ,MAAM,WAAW,CAAC,CAACE;YACf,IAAIA,MAAM,OAAO,KAAKJ,SAClB,OAAOI;YAGX,OAAO;gBACH,GAAGA,KAAK;gBACR,MAAM;oBACF,GAAGA,MAAM,IAAI;oBACb,QAAQ;wBACJ,UAAUD;oBACd;gBACJ;YACJ;QACJ;IACJ;AACJ;AAEO,MAAME,4BAA4BC,4BAA4B,oBAAoB,CAAC;IACtF,gBAAgBX;IAChB,cAAc;QAACY;KAA4B;AAC/C"}
@@ -1,5 +0,0 @@
1
- import React from "react";
2
- export declare const CmsWorkflowsEditorMenu: () => React.JSX.Element | null;
3
- export declare const CmsWorkflowsEditorView: (() => React.JSX.Element | null) & {
4
- displayName: string;
5
- };