@webiny/app-headless-cms-workflows 0.0.0-unstable.0156a4c312
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.
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.d.ts +2 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js +43 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.d.ts +1 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js +118 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.d.ts +2 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js +22 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.d.ts +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js +98 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.js +32 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.js +128 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js +46 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js +222 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.js +32 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js +94 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js +56 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js +186 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js +26 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js +78 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js.map +1 -0
- package/Components/ContentEntryForm/getModelFieldLabels.d.ts +3 -0
- package/Components/ContentEntryForm/getModelFieldLabels.js +8 -0
- package/Components/ContentEntryForm/getModelFieldLabels.js.map +1 -0
- package/Components/ContentEntryForm/index.d.ts +5 -0
- package/Components/ContentEntryForm/index.js +5 -0
- package/Components/ContentReviews/CmsContentReviews.d.ts +2 -0
- package/Components/ContentReviews/CmsContentReviews.js +11 -0
- package/Components/ContentReviews/CmsContentReviews.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviews.test.d.ts +1 -0
- package/Components/ContentReviews/CmsContentReviews.test.js +214 -0
- package/Components/ContentReviews/CmsContentReviews.test.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsMount.d.ts +4 -0
- package/Components/ContentReviews/CmsContentReviewsMount.js +44 -0
- package/Components/ContentReviews/CmsContentReviewsMount.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.d.ts +2 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.js +20 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.d.ts +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js +83 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js.map +1 -0
- package/Components/ModelDelete/ModelBoundToWorkflowErrorData.d.ts +8 -0
- package/Components/ModelDelete/ModelBoundToWorkflowErrorData.js +0 -0
- package/Components/ModelDelete/ModelDeleteWorkflowCopy.d.ts +10 -0
- package/Components/ModelDelete/ModelDeleteWorkflowCopy.js +0 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.d.ts +2 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.js +34 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.js.map +1 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.d.ts +1 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.js +73 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.js.map +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.d.ts +3 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.js +17 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.js.map +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.d.ts +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js +28 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js.map +1 -0
- package/Components/ignoreAction.d.ts +1 -0
- package/Components/ignoreAction.js +4 -0
- package/Components/ignoreAction.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/Routes/CmsWorkflowEditor.d.ts +2 -0
- package/Routes/CmsWorkflowEditor.js +23 -0
- package/Routes/CmsWorkflowEditor.js.map +1 -0
- package/Routes/CmsWorkflowEditor.test.d.ts +1 -0
- package/Routes/CmsWorkflowEditor.test.js +141 -0
- package/Routes/CmsWorkflowEditor.test.js.map +1 -0
- package/Routes/index.d.ts +1 -0
- package/Routes/index.js +1 -0
- package/features/cache/CmsReviewCacheSyncHandler.d.ts +8 -0
- package/features/cache/CmsReviewCacheSyncHandler.js +14 -0
- package/features/cache/CmsReviewCacheSyncHandler.js.map +1 -0
- package/features/cache/CmsReviewCacheWriter.d.ts +14 -0
- package/features/cache/CmsReviewCacheWriter.js +39 -0
- package/features/cache/CmsReviewCacheWriter.js.map +1 -0
- package/features/cache/CmsReviewCacheWriter.test.d.ts +1 -0
- package/features/cache/CmsReviewCacheWriter.test.js +207 -0
- package/features/cache/CmsReviewCacheWriter.test.js.map +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.d.ts +12 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.js +17 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.js.map +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.d.ts +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js +129 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js.map +1 -0
- package/features/cache/ReviewPreservingEntriesCache.d.ts +18 -0
- package/features/cache/ReviewPreservingEntriesCache.js +54 -0
- package/features/cache/ReviewPreservingEntriesCache.js.map +1 -0
- package/features/cache/abstractions.d.ts +5 -0
- package/features/cache/abstractions.js +5 -0
- package/features/cache/abstractions.js.map +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.d.ts +26 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js +104 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js.map +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.d.ts +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js +589 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js.map +1 -0
- package/features/editorGateway/feature.d.ts +1 -0
- package/features/editorGateway/feature.js +11 -0
- package/features/editorGateway/feature.js.map +1 -0
- package/features/editorGateway/feature.test.d.ts +1 -0
- package/features/editorGateway/feature.test.js +272 -0
- package/features/editorGateway/feature.test.js.map +1 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.d.ts +1 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.js +16 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.js.map +1 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.d.ts +1 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.js +19 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.js.map +1 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.d.ts +1 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js +29 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js.map +1 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.js.map +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.d.ts +25 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.js +51 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.js.map +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.d.ts +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js +185 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js.map +1 -0
- package/features/editorMounting/abstractions.d.ts +5 -0
- package/features/editorMounting/abstractions.js +5 -0
- package/features/editorMounting/abstractions.js.map +1 -0
- package/features/editorMounting/feature.d.ts +3 -0
- package/features/editorMounting/feature.js +19 -0
- package/features/editorMounting/feature.js.map +1 -0
- package/features/editorMounting/feature.test.d.ts +1 -0
- package/features/editorMounting/feature.test.js +100 -0
- package/features/editorMounting/feature.test.js.map +1 -0
- package/features/editorReview/CmsEntryReview.d.ts +8 -0
- package/features/editorReview/CmsEntryReview.js +14 -0
- package/features/editorReview/CmsEntryReview.js.map +1 -0
- package/features/editorReview/abstractions.d.ts +5 -0
- package/features/editorReview/abstractions.js +5 -0
- package/features/editorReview/abstractions.js.map +1 -0
- package/features/editorReview/feature.d.ts +3 -0
- package/features/editorReview/feature.js +17 -0
- package/features/editorReview/feature.js.map +1 -0
- package/features/editorReview/feature.test.d.ts +1 -0
- package/features/editorReview/feature.test.js +46 -0
- package/features/editorReview/feature.test.js.map +1 -0
- package/features/editorReview/useCmsEntryReview.d.ts +2 -0
- package/features/editorReview/useCmsEntryReview.js +8 -0
- package/features/editorReview/useCmsEntryReview.js.map +1 -0
- package/features/feature.d.ts +1 -0
- package/features/feature.js +15 -0
- package/features/feature.js.map +1 -0
- package/features/gateway/CmsReviewChangeMessageHandler.d.ts +8 -0
- package/features/gateway/CmsReviewChangeMessageHandler.js +16 -0
- package/features/gateway/CmsReviewChangeMessageHandler.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.d.ts +16 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js +39 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.d.ts +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js +83 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.d.ts +5 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.js +5 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.js.map +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.d.ts +52 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.js +221 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.js.map +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.d.ts +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js +689 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js.map +1 -0
- package/features/gateway/CmsReviewNotificationHandler.d.ts +8 -0
- package/features/gateway/CmsReviewNotificationHandler.js +16 -0
- package/features/gateway/CmsReviewNotificationHandler.js.map +1 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.d.ts +8 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js +14 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js.map +1 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.d.ts +5 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.js +5 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.js.map +1 -0
- package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
- package/features/gateway/contentReviewsBindings.test.js +125 -0
- package/features/gateway/contentReviewsBindings.test.js.map +1 -0
- package/features/gateway/feature.d.ts +4 -0
- package/features/gateway/feature.js +27 -0
- package/features/gateway/feature.js.map +1 -0
- package/features/gateway/feature.test.d.ts +1 -0
- package/features/gateway/feature.test.js +79 -0
- package/features/gateway/feature.test.js.map +1 -0
- package/features/gateway/graphql/CmsOperationResponse.d.ts +3 -0
- package/features/gateway/graphql/CmsOperationResponse.js +0 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/cancelCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/cancelCmsEntryReview.js +18 -0
- package/features/gateway/graphql/cancelCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.d.ts +1 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js +28 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryReview.js +18 -0
- package/features/gateway/graphql/getCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.js +18 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.js +18 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.js +18 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js +18 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryReviews.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryReviews.js +34 -0
- package/features/gateway/graphql/listCmsEntryReviews.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.js +28 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.js +18 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.js.map +1 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/requestCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/requestCmsEntryReview.js +28 -0
- package/features/gateway/graphql/requestCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.js +22 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +20 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js +81 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js +693 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js +123 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js +139 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js +23 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js +122 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/feature.d.ts +1 -0
- package/features/trash/feature.js +17 -0
- package/features/trash/feature.js.map +1 -0
- package/features/trash/feature.test.d.ts +1 -0
- package/features/trash/feature.test.js +213 -0
- package/features/trash/feature.test.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.editor.test.d.ts +1 -0
- package/index.editor.test.js +149 -0
- package/index.editor.test.js.map +1 -0
- package/index.js +41 -0
- package/index.js.map +1 -0
- package/index.lists.test.d.ts +1 -0
- package/index.lists.test.js +172 -0
- package/index.lists.test.js.map +1 -0
- package/index.mount.test.d.ts +1 -0
- package/index.mount.test.js +49 -0
- package/index.mount.test.js.map +1 -0
- package/index.test.d.ts +1 -0
- package/index.test.js +414 -0
- package/index.test.js.map +1 -0
- package/package.json +54 -0
- package/presentation/CmsEntryContentReloader.d.ts +8 -0
- package/presentation/CmsEntryContentReloader.js +20 -0
- package/presentation/CmsEntryContentReloader.js.map +1 -0
- package/presentation/CmsEntryContentReloader.test.d.ts +1 -0
- package/presentation/CmsEntryContentReloader.test.js +118 -0
- package/presentation/CmsEntryContentReloader.test.js.map +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.d.ts +27 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.js +167 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.js.map +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.d.ts +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.js +601 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.js.map +1 -0
- package/presentation/CmsEntryUnsavedChanges.d.ts +7 -0
- package/presentation/CmsEntryUnsavedChanges.js +12 -0
- package/presentation/CmsEntryUnsavedChanges.js.map +1 -0
- package/presentation/CmsEntryUnsavedChanges.test.d.ts +1 -0
- package/presentation/CmsEntryUnsavedChanges.test.js +23 -0
- package/presentation/CmsEntryUnsavedChanges.test.js.map +1 -0
- package/presentation/CmsReviewFieldSelections.test.d.ts +1 -0
- package/presentation/CmsReviewFieldSelections.test.js +27 -0
- package/presentation/CmsReviewFieldSelections.test.js.map +1 -0
- package/presentation/CmsReviewGetEntryFieldSelection.d.ts +8 -0
- package/presentation/CmsReviewGetEntryFieldSelection.js +16 -0
- package/presentation/CmsReviewGetEntryFieldSelection.js.map +1 -0
- package/presentation/CmsReviewListEntriesFieldSelection.d.ts +8 -0
- package/presentation/CmsReviewListEntriesFieldSelection.js +16 -0
- package/presentation/CmsReviewListEntriesFieldSelection.js.map +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.d.ts +11 -0
- package/presentation/CmsReviewTableRowMapperDecorator.js +24 -0
- package/presentation/CmsReviewTableRowMapperDecorator.js.map +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.d.ts +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.js +120 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.js.map +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.d.ts +24 -0
- package/presentation/CmsRevisionsListPresenterDecorator.js +66 -0
- package/presentation/CmsRevisionsListPresenterDecorator.js.map +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.d.ts +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.js +174 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.js.map +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.d.ts +28 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.js +103 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.js.map +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.d.ts +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.js +238 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.js.map +1 -0
- package/presentation/contentReviews/abstractions.d.ts +31 -0
- package/presentation/contentReviews/abstractions.js +5 -0
- package/presentation/contentReviews/abstractions.js.map +1 -0
- package/presentation/contentReviews/feature.d.ts +3 -0
- package/presentation/contentReviews/feature.js +17 -0
- package/presentation/contentReviews/feature.js.map +1 -0
- package/presentation/contentReviews/toContentTypes.d.ts +3 -0
- package/presentation/contentReviews/toContentTypes.js +14 -0
- package/presentation/contentReviews/toContentTypes.js.map +1 -0
- package/presentation/contentReviews/toContentTypes.test.d.ts +1 -0
- package/presentation/contentReviews/toContentTypes.test.js +20 -0
- package/presentation/contentReviews/toContentTypes.test.js.map +1 -0
- package/presentation/feature.d.ts +1 -0
- package/presentation/feature.js +19 -0
- package/presentation/feature.js.map +1 -0
- package/presentation/getCmsEntryReviewContext.d.ts +4 -0
- package/presentation/getCmsEntryReviewContext.js +12 -0
- package/presentation/getCmsEntryReviewContext.js.map +1 -0
- package/presentation/getCmsEntryReviewInitParams.d.ts +13 -0
- package/presentation/getCmsEntryReviewInitParams.js +18 -0
- package/presentation/getCmsEntryReviewInitParams.js.map +1 -0
- package/presentation/getCmsEntryReviewInitParams.test.d.ts +1 -0
- package/presentation/getCmsEntryReviewInitParams.test.js +69 -0
- package/presentation/getCmsEntryReviewInitParams.test.js.map +1 -0
- package/routes.d.ts +11 -0
- package/routes.js +21 -0
- package/routes.js.map +1 -0
- package/testing/createEntry.d.ts +3 -0
- package/testing/createEntry.js +22 -0
- package/testing/createEntry.js.map +1 -0
- package/testing/createEntrySession.d.ts +9 -0
- package/testing/createEntrySession.js +29 -0
- package/testing/createEntrySession.js.map +1 -0
- package/testing/createFolder.d.ts +2 -0
- package/testing/createFolder.js +13 -0
- package/testing/createFolder.js.map +1 -0
- package/testing/createFormVm.d.ts +2 -0
- package/testing/createFormVm.js +22 -0
- package/testing/createFormVm.js.map +1 -0
- package/testing/models.d.ts +4 -0
- package/testing/models.js +23 -0
- package/testing/models.js.map +1 -0
- package/testing/renderEditorTree.d.ts +17 -0
- package/testing/renderEditorTree.js +93 -0
- package/testing/renderEditorTree.js.map +1 -0
- package/testing/reviewStates.d.ts +17 -0
- package/testing/reviewStates.js +65 -0
- package/testing/reviewStates.js.map +1 -0
- package/types.d.ts +10 -0
- package/types.js +0 -0
- package/utils/appName.d.ts +4 -0
- package/utils/appName.js +13 -0
- package/utils/appName.js.map +1 -0
- package/utils/isReviewableModel.d.ts +2 -0
- package/utils/isReviewableModel.js +7 -0
- package/utils/isReviewableModel.js.map +1 -0
- package/utils/renderModelIcon.d.ts +3 -0
- package/utils/renderModelIcon.js +19 -0
- package/utils/renderModelIcon.js.map +1 -0
- package/utils/renderModelIconOrFallback.d.ts +3 -0
- package/utils/renderModelIconOrFallback.js +17 -0
- package/utils/renderModelIconOrFallback.js.map +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { CmsContentReviewsPresenter } from "./abstractions.js";
|
|
3
|
+
import { CmsContentReviewsPresenter as external_CmsContentReviewsPresenter_js_CmsContentReviewsPresenter } from "./CmsContentReviewsPresenter.js";
|
|
4
|
+
const CmsContentReviewsPresenterFeature = createFeature({
|
|
5
|
+
name: "Cms/Workflows/ContentReviewsPresenter",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(external_CmsContentReviewsPresenter_js_CmsContentReviewsPresenter);
|
|
8
|
+
},
|
|
9
|
+
resolve (container) {
|
|
10
|
+
return {
|
|
11
|
+
presenter: container.resolve(CmsContentReviewsPresenter)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { CmsContentReviewsPresenterFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/contentReviews/feature.js","sources":["../../../src/presentation/contentReviews/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CmsContentReviewsPresenter as Abstraction } from \"./abstractions.js\";\nimport { CmsContentReviewsPresenter } from \"./CmsContentReviewsPresenter.js\";\n\nexport const CmsContentReviewsPresenterFeature = createFeature({\n name: \"Cms/Workflows/ContentReviewsPresenter\",\n register(container) {\n // Transient (R212): `useFeature` memoizes the one instance the root component holds.\n container.register(CmsContentReviewsPresenter);\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["CmsContentReviewsPresenterFeature","createFeature","container","CmsContentReviewsPresenter","Abstraction"],"mappings":";;;AAIO,MAAMA,oCAAoCC,cAAc;IAC3D,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;IACvB;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const UNPUBLISHABLE_MODEL_TAG = "$publishing:false";
|
|
2
|
+
const toContentTypes = (models)=>{
|
|
3
|
+
const bindable = models.filter((model)=>{
|
|
4
|
+
if (model.isBeingDeleted) return false;
|
|
5
|
+
return !(model.tags ?? []).includes(UNPUBLISHABLE_MODEL_TAG);
|
|
6
|
+
});
|
|
7
|
+
return bindable.map((model)=>({
|
|
8
|
+
modelId: model.modelId,
|
|
9
|
+
name: model.name
|
|
10
|
+
})).sort((a, b)=>a.name.localeCompare(b.name));
|
|
11
|
+
};
|
|
12
|
+
export { toContentTypes };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=toContentTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/contentReviews/toContentTypes.js","sources":["../../../src/presentation/contentReviews/toContentTypes.ts"],"sourcesContent":["import type { ContentType } from \"./abstractions.js\";\nimport type { ListedModel } from \"./abstractions.js\";\n\n// Models that cannot be published cannot be bound to a workflow (mirror of `isBindableModel`).\nconst UNPUBLISHABLE_MODEL_TAG = \"$publishing:false\";\n\n/*\n * The content types a Content Reviews list can show: bindable models that are not being deleted,\n * sorted by name. Private models are not in the admin list (`listContentModels` excludes them).\n */\nexport const toContentTypes = (models: ListedModel[]): ContentType[] => {\n const bindable = models.filter(model => {\n if (model.isBeingDeleted) {\n return false;\n }\n return !(model.tags ?? []).includes(UNPUBLISHABLE_MODEL_TAG);\n });\n\n return bindable\n .map(model => {\n return { modelId: model.modelId, name: model.name };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n};\n"],"names":["UNPUBLISHABLE_MODEL_TAG","toContentTypes","models","bindable","model","a","b"],"mappings":"AAIA,MAAMA,0BAA0B;AAMzB,MAAMC,iBAAiB,CAACC;IAC3B,MAAMC,WAAWD,OAAO,MAAM,CAACE,CAAAA;QAC3B,IAAIA,MAAM,cAAc,EACpB,OAAO;QAEX,OAAO,CAAEA,AAAAA,CAAAA,MAAM,IAAI,IAAI,EAAC,EAAG,QAAQ,CAACJ;IACxC;IAEA,OAAOG,SACF,GAAG,CAACC,CAAAA,QACM;YAAE,SAASA,MAAM,OAAO;YAAE,MAAMA,MAAM,IAAI;QAAC,IAErD,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAE,IAAI,CAAC,aAAa,CAACC,EAAE,IAAI;AACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { toContentTypes } from "./toContentTypes.js";
|
|
3
|
+
describe("toContentTypes", ()=>{
|
|
4
|
+
it("keeps a model with no tags", ()=>{
|
|
5
|
+
const result = toContentTypes([
|
|
6
|
+
{
|
|
7
|
+
modelId: "article",
|
|
8
|
+
name: "Article"
|
|
9
|
+
}
|
|
10
|
+
]);
|
|
11
|
+
expect(result).toEqual([
|
|
12
|
+
{
|
|
13
|
+
modelId: "article",
|
|
14
|
+
name: "Article"
|
|
15
|
+
}
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=toContentTypes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/contentReviews/toContentTypes.test.js","sources":["../../../src/presentation/contentReviews/toContentTypes.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { toContentTypes } from \"./toContentTypes.js\";\n\ndescribe(\"toContentTypes\", () => {\n it(\"keeps a model with no tags\", () => {\n const result = toContentTypes([{ modelId: \"article\", name: \"Article\" }]);\n\n expect(result).toEqual([{ modelId: \"article\", name: \"Article\" }]);\n });\n});\n"],"names":["describe","it","result","toContentTypes","expect"],"mappings":";;AAKAA,SAAS,kBAAkB;IACvBC,GAAG,8BAA8B;QAC7B,MAAMC,SAASC,eAAe;YAAC;gBAAE,SAAS;gBAAW,MAAM;YAAU;SAAE;QAEvEC,OAAOF,QAAQ,OAAO,CAAC;YAAC;gBAAE,SAAS;gBAAW,MAAM;YAAU;SAAE;IACpE;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CmsWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { CmsEntryFormPresenterReviewDecorator } from "./CmsEntryFormPresenterReviewDecorator.js";
|
|
3
|
+
import { CmsReviewGetEntryFieldSelection } from "./CmsReviewGetEntryFieldSelection.js";
|
|
4
|
+
import { CmsReviewListEntriesFieldSelection } from "./CmsReviewListEntriesFieldSelection.js";
|
|
5
|
+
import { CmsReviewTableRowMapperDecorator } from "./CmsReviewTableRowMapperDecorator.js";
|
|
6
|
+
import { CmsRevisionsListPresenterDecorator } from "./CmsRevisionsListPresenterDecorator.js";
|
|
7
|
+
const CmsWorkflowsFeature = createFeature({
|
|
8
|
+
name: "CmsWorkflows",
|
|
9
|
+
register (container) {
|
|
10
|
+
container.registerDecorator(CmsEntryFormPresenterReviewDecorator);
|
|
11
|
+
container.registerDecorator(CmsReviewTableRowMapperDecorator);
|
|
12
|
+
container.registerDecorator(CmsRevisionsListPresenterDecorator);
|
|
13
|
+
container.register(CmsReviewListEntriesFieldSelection);
|
|
14
|
+
container.register(CmsReviewGetEntryFieldSelection);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
export { CmsWorkflowsFeature };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/feature.js","sources":["../../src/presentation/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CmsEntryFormPresenterReviewDecorator } from \"./CmsEntryFormPresenterReviewDecorator.js\";\nimport { CmsReviewGetEntryFieldSelection } from \"./CmsReviewGetEntryFieldSelection.js\";\nimport { CmsReviewListEntriesFieldSelection } from \"./CmsReviewListEntriesFieldSelection.js\";\nimport { CmsReviewTableRowMapperDecorator } from \"./CmsReviewTableRowMapperDecorator.js\";\nimport { CmsRevisionsListPresenterDecorator } from \"./CmsRevisionsListPresenterDecorator.js\";\n\nexport const CmsWorkflowsFeature = createFeature({\n name: \"CmsWorkflows\",\n register(container) {\n // The review services are registered by WorkflowsAdminApp.\n container.registerDecorator(CmsEntryFormPresenterReviewDecorator);\n container.registerDecorator(CmsReviewTableRowMapperDecorator);\n container.registerDecorator(CmsRevisionsListPresenterDecorator);\n container.register(CmsReviewListEntriesFieldSelection);\n container.register(CmsReviewGetEntryFieldSelection);\n }\n});\n"],"names":["CmsWorkflowsFeature","createFeature","container","CmsEntryFormPresenterReviewDecorator","CmsReviewTableRowMapperDecorator","CmsRevisionsListPresenterDecorator","CmsReviewListEntriesFieldSelection","CmsReviewGetEntryFieldSelection"],"mappings":";;;;;;AAOO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,iBAAiB,CAACC;QAC5BD,UAAU,iBAAiB,CAACE;QAC5BF,UAAU,iBAAiB,CAACG;QAC5BH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;IACvB;AACJ"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
|
|
2
|
+
import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
|
|
3
|
+
import type { TargetReviewContext } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
|
|
4
|
+
export declare function getCmsEntryReviewContext(model: CmsModel, entry: CmsContentEntry, canRequest: boolean): TargetReviewContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function getCmsEntryReviewContext(model, entry, canRequest) {
|
|
2
|
+
const entryTitle = entry.meta?.title || "unknown";
|
|
3
|
+
return {
|
|
4
|
+
targetTitle: entryTitle,
|
|
5
|
+
canRequest,
|
|
6
|
+
isPublished: entry.meta?.status === "published",
|
|
7
|
+
isUnpublished: entry.meta?.status === "unpublished"
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export { getCmsEntryReviewContext };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=getCmsEntryReviewContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/getCmsEntryReviewContext.js","sources":["../../src/presentation/getCmsEntryReviewContext.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { TargetReviewContext } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\n\nexport function getCmsEntryReviewContext(\n model: CmsModel,\n entry: CmsContentEntry,\n canRequest: boolean\n): TargetReviewContext {\n const entryTitle = entry.meta?.title || \"unknown\";\n\n return {\n targetTitle: entryTitle,\n canRequest,\n isPublished: entry.meta?.status === \"published\",\n // A revision published before and not published now (R226): it was reviewed before.\n isUnpublished: entry.meta?.status === \"unpublished\"\n };\n}\n"],"names":["getCmsEntryReviewContext","model","entry","canRequest","entryTitle"],"mappings":"AAIO,SAASA,yBACZC,KAAe,EACfC,KAAsB,EACtBC,UAAmB;IAEnB,MAAMC,aAAaF,MAAM,IAAI,EAAE,SAAS;IAExC,OAAO;QACH,aAAaE;QACbD;QACA,aAAaD,MAAM,IAAI,EAAE,WAAW;QAEpC,eAAeA,MAAM,IAAI,EAAE,WAAW;IAC1C;AACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
|
|
2
|
+
import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
|
|
3
|
+
import type { IReviewContentReloader } from "@webiny/app-workflows/review/content/IReviewContentReloader.js";
|
|
4
|
+
import type { IReviewUnsavedChanges } from "@webiny/app-workflows/review/content/IReviewUnsavedChanges.js";
|
|
5
|
+
import type { TargetReviewInitParams } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
|
|
6
|
+
export interface CmsEntryReviewInitInput {
|
|
7
|
+
model: CmsModel;
|
|
8
|
+
entry: CmsContentEntry;
|
|
9
|
+
canRequest: boolean;
|
|
10
|
+
contentReloader: IReviewContentReloader;
|
|
11
|
+
unsavedChanges: IReviewUnsavedChanges;
|
|
12
|
+
}
|
|
13
|
+
export declare function getCmsEntryReviewInitParams(input: CmsEntryReviewInitInput): TargetReviewInitParams;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createAppName } from "../utils/appName.js";
|
|
2
|
+
import { getCmsEntryReviewContext } from "./getCmsEntryReviewContext.js";
|
|
3
|
+
function getCmsEntryReviewInitParams(input) {
|
|
4
|
+
const { model, entry, canRequest, contentReloader, unsavedChanges } = input;
|
|
5
|
+
const context = getCmsEntryReviewContext(model, entry, canRequest);
|
|
6
|
+
return {
|
|
7
|
+
...context,
|
|
8
|
+
target: {
|
|
9
|
+
namespace: createAppName(model),
|
|
10
|
+
targetRevisionId: entry.id
|
|
11
|
+
},
|
|
12
|
+
contentReloader,
|
|
13
|
+
unsavedChanges
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export { getCmsEntryReviewInitParams };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=getCmsEntryReviewInitParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/getCmsEntryReviewInitParams.js","sources":["../../src/presentation/getCmsEntryReviewInitParams.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { IReviewContentReloader } from \"@webiny/app-workflows/review/content/IReviewContentReloader.js\";\nimport type { IReviewUnsavedChanges } from \"@webiny/app-workflows/review/content/IReviewUnsavedChanges.js\";\nimport type { TargetReviewInitParams } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { getCmsEntryReviewContext } from \"./getCmsEntryReviewContext.js\";\n\nexport interface CmsEntryReviewInitInput {\n model: CmsModel;\n entry: CmsContentEntry;\n canRequest: boolean;\n contentReloader: IReviewContentReloader;\n unsavedChanges: IReviewUnsavedChanges;\n}\n\nexport function getCmsEntryReviewInitParams(\n input: CmsEntryReviewInitInput\n): TargetReviewInitParams {\n const { model, entry, canRequest, contentReloader, unsavedChanges } = input;\n const context = getCmsEntryReviewContext(model, entry, canRequest);\n\n return {\n ...context,\n target: { namespace: createAppName(model), targetRevisionId: entry.id },\n contentReloader,\n unsavedChanges\n };\n}\n"],"names":["getCmsEntryReviewInitParams","input","model","entry","canRequest","contentReloader","unsavedChanges","context","getCmsEntryReviewContext","createAppName"],"mappings":";;AAgBO,SAASA,4BACZC,KAA8B;IAE9B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,UAAU,EAAEC,eAAe,EAAEC,cAAc,EAAE,GAAGL;IACtE,MAAMM,UAAUC,yBAAyBN,OAAOC,OAAOC;IAEvD,OAAO;QACH,GAAGG,OAAO;QACV,QAAQ;YAAE,WAAWE,cAAcP;YAAQ,kBAAkBC,MAAM,EAAE;QAAC;QACtEE;QACAC;IACJ;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { createEntry } from "../testing/createEntry.js";
|
|
3
|
+
import { MODEL } from "../testing/models.js";
|
|
4
|
+
import { getCmsEntryReviewInitParams } from "./getCmsEntryReviewInitParams.js";
|
|
5
|
+
describe("getCmsEntryReviewInitParams", ()=>{
|
|
6
|
+
it("builds the target and the context and carries the reloader, no use cases (R353)", ()=>{
|
|
7
|
+
const contentReloader = {
|
|
8
|
+
reload: vi.fn()
|
|
9
|
+
};
|
|
10
|
+
const unsavedChanges = {
|
|
11
|
+
getRequestBlockReason: ()=>null
|
|
12
|
+
};
|
|
13
|
+
const entry = createEntry({
|
|
14
|
+
status: "published"
|
|
15
|
+
});
|
|
16
|
+
const params = getCmsEntryReviewInitParams({
|
|
17
|
+
model: MODEL,
|
|
18
|
+
entry,
|
|
19
|
+
canRequest: true,
|
|
20
|
+
contentReloader,
|
|
21
|
+
unsavedChanges
|
|
22
|
+
});
|
|
23
|
+
expect(params).not.toHaveProperty("useCases");
|
|
24
|
+
expect(params.contentReloader).toBe(contentReloader);
|
|
25
|
+
expect(params.unsavedChanges).toBe(unsavedChanges);
|
|
26
|
+
expect(params.target).toEqual({
|
|
27
|
+
namespace: "cms.article",
|
|
28
|
+
targetRevisionId: "entry-1#0001"
|
|
29
|
+
});
|
|
30
|
+
expect(params.targetTitle).toBe("Hello");
|
|
31
|
+
expect(params.canRequest).toBe(true);
|
|
32
|
+
expect(params.isPublished).toBe(true);
|
|
33
|
+
expect(params.isUnpublished).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
it("prefills the target title with the entry title only, no model name", ()=>{
|
|
36
|
+
const params = getCmsEntryReviewInitParams({
|
|
37
|
+
model: MODEL,
|
|
38
|
+
entry: createEntry({
|
|
39
|
+
title: "Summer launch"
|
|
40
|
+
}),
|
|
41
|
+
canRequest: true,
|
|
42
|
+
contentReloader: {
|
|
43
|
+
reload: vi.fn()
|
|
44
|
+
},
|
|
45
|
+
unsavedChanges: {
|
|
46
|
+
getRequestBlockReason: ()=>null
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
expect(params.targetTitle).toBe("Summer launch");
|
|
50
|
+
});
|
|
51
|
+
it("falls back to “unknown” when the entry has no title", ()=>{
|
|
52
|
+
const params = getCmsEntryReviewInitParams({
|
|
53
|
+
model: MODEL,
|
|
54
|
+
entry: createEntry({
|
|
55
|
+
title: void 0
|
|
56
|
+
}),
|
|
57
|
+
canRequest: true,
|
|
58
|
+
contentReloader: {
|
|
59
|
+
reload: vi.fn()
|
|
60
|
+
},
|
|
61
|
+
unsavedChanges: {
|
|
62
|
+
getRequestBlockReason: ()=>null
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
expect(params.targetTitle).toBe("unknown");
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=getCmsEntryReviewInitParams.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/getCmsEntryReviewInitParams.test.js","sources":["../../src/presentation/getCmsEntryReviewInitParams.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport type { IReviewContentReloader } from \"@webiny/app-workflows/review/content/IReviewContentReloader.js\";\nimport type { IReviewUnsavedChanges } from \"@webiny/app-workflows/review/content/IReviewUnsavedChanges.js\";\nimport { createEntry } from \"~/testing/createEntry.js\";\nimport { MODEL } from \"~/testing/models.js\";\nimport { getCmsEntryReviewInitParams } from \"./getCmsEntryReviewInitParams.js\";\n\ndescribe(\"getCmsEntryReviewInitParams\", () => {\n it(\"builds the target and the context and carries the reloader, no use cases (R353)\", () => {\n const contentReloader: IReviewContentReloader = { reload: vi.fn() };\n const unsavedChanges: IReviewUnsavedChanges = { getRequestBlockReason: () => null };\n const entry = createEntry({ status: \"published\" });\n\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry,\n canRequest: true,\n contentReloader,\n unsavedChanges\n });\n\n expect(params).not.toHaveProperty(\"useCases\");\n expect(params.contentReloader).toBe(contentReloader);\n expect(params.unsavedChanges).toBe(unsavedChanges);\n expect(params.target).toEqual({\n namespace: \"cms.article\",\n targetRevisionId: \"entry-1#0001\"\n });\n expect(params.targetTitle).toBe(\"Hello\");\n expect(params.canRequest).toBe(true);\n expect(params.isPublished).toBe(true);\n expect(params.isUnpublished).toBe(false);\n });\n\n it(\"prefills the target title with the entry title only, no model name\", () => {\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry: createEntry({ title: \"Summer launch\" }),\n canRequest: true,\n contentReloader: { reload: vi.fn() },\n unsavedChanges: { getRequestBlockReason: () => null }\n });\n\n expect(params.targetTitle).toBe(\"Summer launch\");\n });\n\n it(\"falls back to “unknown” when the entry has no title\", () => {\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry: createEntry({ title: undefined }),\n canRequest: true,\n contentReloader: { reload: vi.fn() },\n unsavedChanges: { getRequestBlockReason: () => null }\n });\n\n expect(params.targetTitle).toBe(\"unknown\");\n });\n});\n"],"names":["describe","it","contentReloader","vi","unsavedChanges","entry","createEntry","params","getCmsEntryReviewInitParams","MODEL","expect","undefined"],"mappings":";;;;AAUAA,SAAS,+BAA+B;IACpCC,GAAG,mFAAmF;QAClF,MAAMC,kBAA0C;YAAE,QAAQC,GAAG,EAAE;QAAG;QAClE,MAAMC,iBAAwC;YAAE,uBAAuB,IAAM;QAAK;QAClF,MAAMC,QAAQC,YAAY;YAAE,QAAQ;QAAY;QAEhD,MAAMC,SAASC,4BAA4B;YACvC,OAAOC;YACPJ;YACA,YAAY;YACZH;YACAE;QACJ;QAEAM,OAAOH,QAAQ,GAAG,CAAC,cAAc,CAAC;QAClCG,OAAOH,OAAO,eAAe,EAAE,IAAI,CAACL;QACpCQ,OAAOH,OAAO,cAAc,EAAE,IAAI,CAACH;QACnCM,OAAOH,OAAO,MAAM,EAAE,OAAO,CAAC;YAC1B,WAAW;YACX,kBAAkB;QACtB;QACAG,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;QAChCG,OAAOH,OAAO,UAAU,EAAE,IAAI,CAAC;QAC/BG,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;QAChCG,OAAOH,OAAO,aAAa,EAAE,IAAI,CAAC;IACtC;IAEAN,GAAG,sEAAsE;QACrE,MAAMM,SAASC,4BAA4B;YACvC,OAAOC;YACP,OAAOH,YAAY;gBAAE,OAAO;YAAgB;YAC5C,YAAY;YACZ,iBAAiB;gBAAE,QAAQH,GAAG,EAAE;YAAG;YACnC,gBAAgB;gBAAE,uBAAuB,IAAM;YAAK;QACxD;QAEAO,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;IACpC;IAEAN,GAAG,uDAAuD;QACtD,MAAMM,SAASC,4BAA4B;YACvC,OAAOC;YACP,OAAOH,YAAY;gBAAE,OAAOK;YAAU;YACtC,YAAY;YACZ,iBAAiB;gBAAE,QAAQR,GAAG,EAAE;YAAG;YACnC,gBAAgB;gBAAE,uBAAuB,IAAM;YAAK;QACxD;QAEAO,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;IACpC;AACJ"}
|
package/routes.d.ts
ADDED
package/routes.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Route } from "@webiny/app-admin";
|
|
2
|
+
const Routes = {
|
|
3
|
+
ContentModels: {
|
|
4
|
+
Workflows: new Route({
|
|
5
|
+
name: "Cms/ContentModels/Workflows",
|
|
6
|
+
path: "/cms/workflows"
|
|
7
|
+
})
|
|
8
|
+
},
|
|
9
|
+
ContentEntries: {
|
|
10
|
+
ContentReviews: new Route({
|
|
11
|
+
name: "Cms/ContentEntries/WorkflowStateList",
|
|
12
|
+
path: "/cms/content-reviews",
|
|
13
|
+
params: (zod)=>({
|
|
14
|
+
tab: zod.string().optional()
|
|
15
|
+
})
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export { Routes };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=routes.js.map
|
package/routes.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sources":["../src/routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n ContentModels: {\n Workflows: new Route({\n name: \"Cms/ContentModels/Workflows\",\n path: \"/cms/workflows\"\n })\n },\n ContentEntries: {\n ContentReviews: new Route({\n name: \"Cms/ContentEntries/WorkflowStateList\",\n path: \"/cms/content-reviews\",\n params: zod => {\n return {\n tab: zod.string().optional()\n };\n }\n })\n }\n};\n"],"names":["Routes","Route","zod"],"mappings":";AAEO,MAAMA,SAAS;IAClB,eAAe;QACX,WAAW,IAAIC,MAAM;YACjB,MAAM;YACN,MAAM;QACV;IACJ;IACA,gBAAgB;QACZ,gBAAgB,IAAIA,MAAM;YACtB,MAAM;YACN,MAAM;YACN,QAAQC,CAAAA,MACG;oBACH,KAAKA,IAAI,MAAM,GAAG,QAAQ;gBAC9B;QAER;IACJ;AACJ"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
|
|
2
|
+
export declare const REVISION_SAVED_ON = "2026-10-17T10:00:00.000Z";
|
|
3
|
+
export declare function createEntry(overrides?: Partial<CmsContentEntry["meta"]>, fields?: Partial<CmsContentEntry>): CmsContentEntry;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const REVISION_SAVED_ON = "2026-10-17T10:00:00.000Z";
|
|
2
|
+
function createEntry(overrides = {}, fields = {}) {
|
|
3
|
+
return {
|
|
4
|
+
id: "entry-1#0001",
|
|
5
|
+
entryId: "entry-1",
|
|
6
|
+
modelId: "article",
|
|
7
|
+
revisionSavedOn: REVISION_SAVED_ON,
|
|
8
|
+
revisionModifiedOn: null,
|
|
9
|
+
meta: {
|
|
10
|
+
title: "Hello",
|
|
11
|
+
status: "draft",
|
|
12
|
+
version: 1,
|
|
13
|
+
locked: false,
|
|
14
|
+
...overrides
|
|
15
|
+
},
|
|
16
|
+
values: {},
|
|
17
|
+
...fields
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export { REVISION_SAVED_ON, createEntry };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=createEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/createEntry.js","sources":["../../src/testing/createEntry.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const REVISION_SAVED_ON = \"2026-10-17T10:00:00.000Z\";\n\nexport function createEntry(\n overrides: Partial<CmsContentEntry[\"meta\"]> = {},\n fields: Partial<CmsContentEntry> = {}\n): CmsContentEntry {\n return {\n id: \"entry-1#0001\",\n entryId: \"entry-1\",\n modelId: \"article\",\n revisionSavedOn: REVISION_SAVED_ON,\n revisionModifiedOn: null,\n meta: {\n title: \"Hello\",\n status: \"draft\",\n version: 1,\n locked: false,\n ...overrides\n },\n values: {},\n ...fields\n } as unknown as CmsContentEntry;\n}\n"],"names":["REVISION_SAVED_ON","createEntry","overrides","fields"],"mappings":"AAEO,MAAMA,oBAAoB;AAE1B,SAASC,YACZC,YAA8C,CAAC,CAAC,EAChDC,SAAmC,CAAC,CAAC;IAErC,OAAO;QACH,IAAI;QACJ,SAAS;QACT,SAAS;QACT,iBAAiBH;QACjB,oBAAoB;QACpB,MAAM;YACF,OAAO;YACP,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,GAAGE,SAAS;QAChB;QACA,QAAQ,CAAC;QACT,GAAGC,MAAM;IACb;AACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IEditorReviewSession } from "@webiny/app-workflows/review/editor/abstractions.js";
|
|
2
|
+
import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
|
|
3
|
+
import type { FakeTargetReviewPresenter } from "@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js";
|
|
4
|
+
export interface EntrySession {
|
|
5
|
+
session: IEditorReviewSession;
|
|
6
|
+
presenter: FakeTargetReviewPresenter;
|
|
7
|
+
setVm(overrides: Partial<TargetReviewPresenter.ViewModel>): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createEntrySession(initial?: Partial<TargetReviewPresenter.ViewModel>): EntrySession;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { action, observable } from "mobx";
|
|
2
|
+
import { createFakePresenter } from "@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js";
|
|
3
|
+
import { createTargetReviewViewModel } from "@webiny/app-workflows/review/testing/createTargetReviewViewModel.js";
|
|
4
|
+
function createEntrySession(initial = {}) {
|
|
5
|
+
const state = observable.box(createTargetReviewViewModel(initial), {
|
|
6
|
+
deep: false
|
|
7
|
+
});
|
|
8
|
+
const base = createFakePresenter();
|
|
9
|
+
const presenter = {
|
|
10
|
+
...base,
|
|
11
|
+
get vm () {
|
|
12
|
+
return state.get();
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const session = {
|
|
16
|
+
presenter
|
|
17
|
+
};
|
|
18
|
+
const setVm = action((overrides)=>{
|
|
19
|
+
state.set(createTargetReviewViewModel(overrides));
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
session,
|
|
23
|
+
presenter,
|
|
24
|
+
setVm
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export { createEntrySession };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=createEntrySession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/createEntrySession.js","sources":["../../src/testing/createEntrySession.ts"],"sourcesContent":["import { action } from \"mobx\";\nimport { observable } from \"mobx\";\nimport type { IEditorReviewSession } from \"@webiny/app-workflows/review/editor/abstractions.js\";\nimport type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { createFakePresenter } from \"@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js\";\nimport { createTargetReviewViewModel } from \"@webiny/app-workflows/review/testing/createTargetReviewViewModel.js\";\nimport type { FakeTargetReviewPresenter } from \"@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js\";\n\nexport interface EntrySession {\n session: IEditorReviewSession;\n presenter: FakeTargetReviewPresenter;\n setVm(overrides: Partial<TargetReviewPresenter.ViewModel>): void;\n}\n\n// A session over a fake presenter whose view model a test sets (R355: no use cases travel in it).\nexport function createEntrySession(\n initial: Partial<TargetReviewPresenter.ViewModel> = {}\n): EntrySession {\n const state = observable.box(createTargetReviewViewModel(initial), { deep: false });\n const base = createFakePresenter();\n const presenter: FakeTargetReviewPresenter = {\n ...base,\n get vm() {\n return state.get();\n }\n };\n const session: IEditorReviewSession = { presenter };\n const setVm = action((overrides: Partial<TargetReviewPresenter.ViewModel>) => {\n state.set(createTargetReviewViewModel(overrides));\n });\n\n return { session, presenter, setVm };\n}\n"],"names":["createEntrySession","initial","state","observable","createTargetReviewViewModel","base","createFakePresenter","presenter","session","setVm","action","overrides"],"mappings":";;;AAeO,SAASA,mBACZC,UAAoD,CAAC,CAAC;IAEtD,MAAMC,QAAQC,WAAW,GAAG,CAACC,4BAA4BH,UAAU;QAAE,MAAM;IAAM;IACjF,MAAMI,OAAOC;IACb,MAAMC,YAAuC;QACzC,GAAGF,IAAI;QACP,IAAI;YACA,OAAOH,MAAM,GAAG;QACpB;IACJ;IACA,MAAMM,UAAgC;QAAED;IAAU;IAClD,MAAME,QAAQC,OAAO,CAACC;QAClBT,MAAM,GAAG,CAACE,4BAA4BO;IAC1C;IAEA,OAAO;QAAEH;QAASD;QAAWE;IAAM;AACvC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RootFolder } from "@webiny/app-aco/domain/folder/RootFolder.js";
|
|
2
|
+
const createFolder = (id, title, parentId)=>({
|
|
3
|
+
...RootFolder.create(),
|
|
4
|
+
id,
|
|
5
|
+
title,
|
|
6
|
+
slug: title.toLowerCase(),
|
|
7
|
+
type: "cms:article",
|
|
8
|
+
parentId,
|
|
9
|
+
path: `/${title.toLowerCase()}`
|
|
10
|
+
});
|
|
11
|
+
export { createFolder };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=createFolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/createFolder.js","sources":["../../src/testing/createFolder.ts"],"sourcesContent":["import type { FolderDto } from \"@webiny/app-aco/domain/folder/FolderDto.js\";\nimport { RootFolder } from \"@webiny/app-aco/domain/folder/RootFolder.js\";\n\n/*\n * An ACO folder as `ListFoldersGateway` returns it: the root folder's shape with this folder's\n * id, title and parent.\n */\nexport const createFolder = (id: string, title: string, parentId: string | null): FolderDto => {\n return {\n ...RootFolder.create(),\n id,\n title,\n slug: title.toLowerCase(),\n type: \"cms:article\",\n parentId,\n path: `/${title.toLowerCase()}`\n };\n};\n"],"names":["createFolder","id","title","parentId","RootFolder"],"mappings":";AAOO,MAAMA,eAAe,CAACC,IAAYC,OAAeC,WAC7C;QACH,GAAGC,WAAW,MAAM,EAAE;QACtBH;QACAC;QACA,MAAMA,MAAM,WAAW;QACvB,MAAM;QACNC;QACA,MAAM,CAAC,CAAC,EAAED,MAAM,WAAW,IAAI;IACnC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createEntry } from "./createEntry.js";
|
|
2
|
+
import { MODEL } from "./models.js";
|
|
3
|
+
function createFormVm(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
loading: null,
|
|
6
|
+
entry: createEntry(),
|
|
7
|
+
canCreateNewRevision: false,
|
|
8
|
+
model: MODEL,
|
|
9
|
+
form: null,
|
|
10
|
+
status: "draft",
|
|
11
|
+
canSave: true,
|
|
12
|
+
canPublish: true,
|
|
13
|
+
canUnpublish: false,
|
|
14
|
+
canDelete: true,
|
|
15
|
+
isNewEntry: false,
|
|
16
|
+
isDirty: false,
|
|
17
|
+
...overrides
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export { createFormVm };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=createFormVm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/createFormVm.js","sources":["../../src/testing/createFormVm.ts"],"sourcesContent":["import type { ContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { createEntry } from \"./createEntry.js\";\nimport { MODEL } from \"./models.js\";\n\nexport function createFormVm(\n overrides: Partial<ContentEntryFormPresenter.ViewModel> = {}\n): ContentEntryFormPresenter.ViewModel {\n return {\n loading: null,\n entry: createEntry(),\n canCreateNewRevision: false,\n model: MODEL,\n form: null,\n status: \"draft\",\n canSave: true,\n canPublish: true,\n canUnpublish: false,\n canDelete: true,\n isNewEntry: false,\n isDirty: false,\n ...overrides\n };\n}\n"],"names":["createFormVm","overrides","createEntry","MODEL"],"mappings":";;AAIO,SAASA,aACZC,YAA0D,CAAC,CAAC;IAE5D,OAAO;QACH,SAAS;QACT,OAAOC;QACP,sBAAsB;QACtB,OAAOC;QACP,MAAM;QACN,QAAQ;QACR,SAAS;QACT,YAAY;QACZ,cAAc;QACd,WAAW;QACX,YAAY;QACZ,SAAS;QACT,GAAGF,SAAS;IAChB;AACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
|
|
2
|
+
const MODEL = {
|
|
3
|
+
modelId: "article",
|
|
4
|
+
name: "Article",
|
|
5
|
+
tags: []
|
|
6
|
+
};
|
|
7
|
+
const SINGLETON_MODEL = {
|
|
8
|
+
modelId: "settings",
|
|
9
|
+
name: "Settings",
|
|
10
|
+
tags: [
|
|
11
|
+
CMS_MODEL_SINGLETON_TAG
|
|
12
|
+
]
|
|
13
|
+
};
|
|
14
|
+
const NO_PUBLISHING_MODEL = {
|
|
15
|
+
modelId: "snippet",
|
|
16
|
+
name: "Snippet",
|
|
17
|
+
tags: [
|
|
18
|
+
"$publishing:false"
|
|
19
|
+
]
|
|
20
|
+
};
|
|
21
|
+
export { MODEL, NO_PUBLISHING_MODEL, SINGLETON_MODEL };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing/models.js","sources":["../../src/testing/models.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\nexport const MODEL = {\n modelId: \"article\",\n name: \"Article\",\n tags: []\n} as unknown as CmsModel;\n\nexport const SINGLETON_MODEL = {\n modelId: \"settings\",\n name: \"Settings\",\n tags: [CMS_MODEL_SINGLETON_TAG]\n} as unknown as CmsModel;\n\nexport const NO_PUBLISHING_MODEL = {\n modelId: \"snippet\",\n name: \"Snippet\",\n tags: [\"$publishing:false\"]\n} as unknown as CmsModel;\n"],"names":["MODEL","SINGLETON_MODEL","CMS_MODEL_SINGLETON_TAG","NO_PUBLISHING_MODEL"],"mappings":";AAGO,MAAMA,QAAQ;IACjB,SAAS;IACT,MAAM;IACN,MAAM,EAAE;AACZ;AAEO,MAAMC,kBAAkB;IAC3B,SAAS;IACT,MAAM;IACN,MAAM;QAACC;KAAwB;AACnC;AAEO,MAAMC,sBAAsB;IAC/B,SAAS;IACT,MAAM;IACN,MAAM;QAAC;KAAoB;AAC/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { ContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js";
|
|
4
|
+
import { RevisionsListPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js";
|
|
5
|
+
import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
|
|
6
|
+
import type { EntrySession } from "./createEntrySession.js";
|
|
7
|
+
export interface RenderEditorTreeParams {
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
formVm?: Partial<ContentEntryFormPresenter.ViewModel>;
|
|
10
|
+
reviewVm?: Partial<TargetReviewPresenter.ViewModel>;
|
|
11
|
+
}
|
|
12
|
+
export interface RenderedEditorTree extends EntrySession {
|
|
13
|
+
container: Container;
|
|
14
|
+
formPresenter: ContentEntryFormPresenter.Interface;
|
|
15
|
+
revisions: RevisionsListPresenter.Interface;
|
|
16
|
+
}
|
|
17
|
+
export declare function renderEditorTree(params: RenderEditorTreeParams): RenderedEditorTree;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { vi } from "vitest";
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import { Container } from "@webiny/di";
|
|
5
|
+
import { CompositionProvider } from "@webiny/react-composition";
|
|
6
|
+
import { DiContainerProvider } from "@webiny/app";
|
|
7
|
+
import { Buttons } from "@webiny/app-admin";
|
|
8
|
+
import { AdminUiProvider } from "@webiny/admin-ui";
|
|
9
|
+
import { ModelContext } from "@webiny/app-headless-cms/admin/components/ModelProvider/index.js";
|
|
10
|
+
import { ContentEntryEditorConfig, ContentEntryEditorWithConfig, useContentEntryEditorConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
|
|
11
|
+
import { ContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js";
|
|
12
|
+
import { RevisionsListPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js";
|
|
13
|
+
import { CmsEntryReview } from "../features/editorReview/abstractions.js";
|
|
14
|
+
import { createEntrySession } from "./createEntrySession.js";
|
|
15
|
+
import { createFormVm } from "./createFormVm.js";
|
|
16
|
+
function createFakeFormPresenter(vm) {
|
|
17
|
+
return {
|
|
18
|
+
vm,
|
|
19
|
+
loadRevision: vi.fn(),
|
|
20
|
+
saveRevision: vi.fn(),
|
|
21
|
+
publishRevision: vi.fn(),
|
|
22
|
+
unpublishRevision: vi.fn(),
|
|
23
|
+
deleteEntry: vi.fn(),
|
|
24
|
+
setFolderId: vi.fn(),
|
|
25
|
+
newEntry: vi.fn(),
|
|
26
|
+
patchEntryMeta: vi.fn(),
|
|
27
|
+
reset: vi.fn()
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function createFakeRevisionsPresenter() {
|
|
31
|
+
return {
|
|
32
|
+
vm: {
|
|
33
|
+
loading: false,
|
|
34
|
+
revisions: [],
|
|
35
|
+
items: [],
|
|
36
|
+
visible: false
|
|
37
|
+
},
|
|
38
|
+
init: vi.fn(),
|
|
39
|
+
show: vi.fn(),
|
|
40
|
+
hide: vi.fn(),
|
|
41
|
+
createRevision: vi.fn(),
|
|
42
|
+
publishRevision: vi.fn(),
|
|
43
|
+
unpublishRevision: vi.fn(),
|
|
44
|
+
updateRevisionNote: vi.fn(),
|
|
45
|
+
deleteRevision: vi.fn(),
|
|
46
|
+
dispose: vi.fn()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const ActionsProbe = ()=>{
|
|
50
|
+
const { buttonActions, menuItemActions } = useContentEntryEditorConfig();
|
|
51
|
+
const buttonNames = buttonActions.map((action)=>action.name).join(",");
|
|
52
|
+
const menuNames = menuItemActions.map((action)=>action.name).join(",");
|
|
53
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
|
|
54
|
+
"data-testid": "button-action-names"
|
|
55
|
+
}, buttonNames), /*#__PURE__*/ react.createElement("div", {
|
|
56
|
+
"data-testid": "menu-action-names"
|
|
57
|
+
}, menuNames), /*#__PURE__*/ react.createElement("div", {
|
|
58
|
+
"data-testid": "button-actions"
|
|
59
|
+
}, /*#__PURE__*/ react.createElement(Buttons, {
|
|
60
|
+
actions: buttonActions
|
|
61
|
+
})), /*#__PURE__*/ react.createElement("div", {
|
|
62
|
+
"data-testid": "menu-actions"
|
|
63
|
+
}, menuItemActions.map((action)=>/*#__PURE__*/ react.createElement("span", {
|
|
64
|
+
key: action.name,
|
|
65
|
+
"data-action": action.name
|
|
66
|
+
}, action.element))));
|
|
67
|
+
};
|
|
68
|
+
function renderEditorTree(params) {
|
|
69
|
+
const container = new Container();
|
|
70
|
+
const entrySession = createEntrySession(params.reviewVm);
|
|
71
|
+
const formVm = createFormVm(params.formVm);
|
|
72
|
+
const formPresenter = createFakeFormPresenter(formVm);
|
|
73
|
+
const revisions = createFakeRevisionsPresenter();
|
|
74
|
+
container.registerInstance(CmsEntryReview, entrySession.session);
|
|
75
|
+
container.registerInstance(ContentEntryFormPresenter, formPresenter);
|
|
76
|
+
container.registerInstance(RevisionsListPresenter, revisions);
|
|
77
|
+
render(/*#__PURE__*/ react.createElement(AdminUiProvider, null, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
78
|
+
container: container
|
|
79
|
+
}, /*#__PURE__*/ react.createElement(ModelContext.Provider, {
|
|
80
|
+
value: formVm.model
|
|
81
|
+
}, params.children, /*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(ContentEntryEditorConfig.Width, {
|
|
82
|
+
value: "1020px"
|
|
83
|
+
})), /*#__PURE__*/ react.createElement(ContentEntryEditorWithConfig, null, /*#__PURE__*/ react.createElement(ActionsProbe, null)))))));
|
|
84
|
+
return {
|
|
85
|
+
...entrySession,
|
|
86
|
+
container,
|
|
87
|
+
formPresenter,
|
|
88
|
+
revisions
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export { renderEditorTree };
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=renderEditorTree.js.map
|
|
@@ -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"}
|