@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
package/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { RegisterFeature, useFeatureFlags } from "@webiny/app-admin";
|
|
3
|
+
import { CmsWorkflowEditor } from "./Routes/index.js";
|
|
4
|
+
import { CmsEntryReviewBar, CmsEntryReviewBlockedActions, CmsEntryReviewFormLock, CmsEntryReviewNewRevision, CmsEntryReviewScheduleMenuItem } from "./Components/ContentEntryForm/index.js";
|
|
5
|
+
import { CmsContentReviews } from "./Components/ContentReviews/CmsContentReviews.js";
|
|
6
|
+
import { CmsContentReviewsSidebarItem } from "./Components/ContentReviews/CmsContentReviewsSidebarItem.js";
|
|
7
|
+
import { CmsEntryReviewFeature } from "./features/editorReview/feature.js";
|
|
8
|
+
import { CmsReviewMoveEntryAction } from "./Components/CmsEntriesList/CmsReviewMoveEntryAction.js";
|
|
9
|
+
import { CmsReviewScheduleEntryAction } from "./Components/CmsEntriesList/CmsReviewScheduleEntryAction.js";
|
|
10
|
+
import { CmsWorkflowsFeature } from "./presentation/feature.js";
|
|
11
|
+
import { CmsWorkflowsCacheFeature } from "./features/feature.js";
|
|
12
|
+
import { CmsWorkflowEditorMountingFeature } from "./features/editorMounting/feature.js";
|
|
13
|
+
import { CmsReviewFeature } from "./features/gateway/feature.js";
|
|
14
|
+
import { CmsWorkflowEditorFeature } from "./features/editorGateway/feature.js";
|
|
15
|
+
import { CmsContentReviewsPresenterFeature } from "./presentation/contentReviews/feature.js";
|
|
16
|
+
import { CmsReviewTrashFeature } from "./features/trash/feature.js";
|
|
17
|
+
import { ModelDeleteWorkflowError } from "./Components/ModelDelete/ModelDeleteWorkflowError.js";
|
|
18
|
+
const CmsWorkflows = ()=>{
|
|
19
|
+
const featureFlags = useFeatureFlags();
|
|
20
|
+
if (!featureFlags.isEnabled("advancedPublishingWorkflow")) return null;
|
|
21
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
22
|
+
feature: CmsReviewFeature
|
|
23
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
24
|
+
feature: CmsWorkflowEditorFeature
|
|
25
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
26
|
+
feature: CmsContentReviewsPresenterFeature
|
|
27
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
28
|
+
feature: CmsWorkflowsFeature
|
|
29
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
30
|
+
feature: CmsWorkflowsCacheFeature
|
|
31
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
32
|
+
feature: CmsWorkflowEditorMountingFeature
|
|
33
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
34
|
+
feature: CmsEntryReviewFeature
|
|
35
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
36
|
+
feature: CmsReviewTrashFeature
|
|
37
|
+
}), /*#__PURE__*/ react.createElement(CmsContentReviews, null), /*#__PURE__*/ react.createElement(CmsContentReviewsSidebarItem, null), /*#__PURE__*/ react.createElement(CmsWorkflowEditor, null), /*#__PURE__*/ react.createElement(CmsEntryReviewBar, null), /*#__PURE__*/ react.createElement(CmsEntryReviewFormLock, null), /*#__PURE__*/ react.createElement(CmsEntryReviewBlockedActions, null), /*#__PURE__*/ react.createElement(CmsEntryReviewScheduleMenuItem, null), /*#__PURE__*/ react.createElement(CmsEntryReviewNewRevision, null), /*#__PURE__*/ react.createElement(CmsReviewMoveEntryAction, null), /*#__PURE__*/ react.createElement(CmsReviewScheduleEntryAction, null), /*#__PURE__*/ react.createElement(ModelDeleteWorkflowError, null));
|
|
38
|
+
};
|
|
39
|
+
export { CmsWorkflows };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, useFeatureFlags } from \"@webiny/app-admin\";\nimport { CmsWorkflowEditor } from \"~/Routes/index.js\";\nimport { CmsEntryReviewBar } from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntryReviewBlockedActions } from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntryReviewFormLock } from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntryReviewNewRevision } from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntryReviewScheduleMenuItem } from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsContentReviews } from \"~/Components/ContentReviews/CmsContentReviews.js\";\nimport { CmsContentReviewsSidebarItem } from \"~/Components/ContentReviews/CmsContentReviewsSidebarItem.js\";\nimport { CmsEntryReviewFeature } from \"~/features/editorReview/feature.js\";\nimport { CmsReviewMoveEntryAction } from \"~/Components/CmsEntriesList/CmsReviewMoveEntryAction.js\";\nimport { CmsReviewScheduleEntryAction } from \"~/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js\";\nimport { CmsWorkflowsFeature } from \"~/presentation/feature.js\";\nimport { CmsWorkflowsCacheFeature } from \"~/features/feature.js\";\nimport { CmsWorkflowEditorMountingFeature } from \"~/features/editorMounting/feature.js\";\nimport { CmsReviewFeature } from \"~/features/gateway/feature.js\";\nimport { CmsWorkflowEditorFeature } from \"~/features/editorGateway/feature.js\";\nimport { CmsContentReviewsPresenterFeature } from \"~/presentation/contentReviews/feature.js\";\nimport { CmsReviewTrashFeature } from \"~/features/trash/feature.js\";\nimport { ModelDeleteWorkflowError } from \"~/Components/ModelDelete/ModelDeleteWorkflowError.js\";\n\nexport const CmsWorkflows = () => {\n const featureFlags = useFeatureFlags();\n\n if (!featureFlags.isEnabled(\"advancedPublishingWorkflow\")) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={CmsReviewFeature} />\n <RegisterFeature feature={CmsWorkflowEditorFeature} />\n <RegisterFeature feature={CmsContentReviewsPresenterFeature} />\n <RegisterFeature feature={CmsWorkflowsFeature} />\n <RegisterFeature feature={CmsWorkflowsCacheFeature} />\n <RegisterFeature feature={CmsWorkflowEditorMountingFeature} />\n <RegisterFeature feature={CmsEntryReviewFeature} />\n <RegisterFeature feature={CmsReviewTrashFeature} />\n <CmsContentReviews />\n <CmsContentReviewsSidebarItem />\n <CmsWorkflowEditor />\n <CmsEntryReviewBar />\n <CmsEntryReviewFormLock />\n <CmsEntryReviewBlockedActions />\n <CmsEntryReviewScheduleMenuItem />\n <CmsEntryReviewNewRevision />\n <CmsReviewMoveEntryAction />\n <CmsReviewScheduleEntryAction />\n <ModelDeleteWorkflowError />\n </>\n );\n};\n"],"names":["CmsWorkflows","featureFlags","useFeatureFlags","RegisterFeature","CmsReviewFeature","CmsWorkflowEditorFeature","CmsContentReviewsPresenterFeature","CmsWorkflowsFeature","CmsWorkflowsCacheFeature","CmsWorkflowEditorMountingFeature","CmsEntryReviewFeature","CmsReviewTrashFeature","CmsContentReviews","CmsContentReviewsSidebarItem","CmsWorkflowEditor","CmsEntryReviewBar","CmsEntryReviewFormLock","CmsEntryReviewBlockedActions","CmsEntryReviewScheduleMenuItem","CmsEntryReviewNewRevision","CmsReviewMoveEntryAction","CmsReviewScheduleEntryAction","ModelDeleteWorkflowError"],"mappings":";;;;;;;;;;;;;;;;;AAsBO,MAAMA,eAAe;IACxB,MAAMC,eAAeC;IAErB,IAAI,CAACD,aAAa,SAAS,CAAC,+BACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACH,iBAAeA;QAAC,SAASI;sBAC1B,oBAACJ,iBAAeA;QAAC,SAASK;sBAC1B,oBAACL,iBAAeA;QAAC,SAASM;sBAC1B,oBAACN,iBAAeA;QAAC,SAASO;sBAC1B,oBAACP,iBAAeA;QAAC,SAASQ;sBAC1B,oBAACC,mBAAiBA,OAAAA,WAAAA,GAClB,oBAACC,8BAA4BA,OAAAA,WAAAA,GAC7B,oBAACC,mBAAiBA,OAAAA,WAAAA,GAClB,oBAACC,mBAAiBA,OAAAA,WAAAA,GAClB,oBAACC,wBAAsBA,OAAAA,WAAAA,GACvB,oBAACC,8BAA4BA,OAAAA,WAAAA,GAC7B,oBAACC,gCAA8BA,OAAAA,WAAAA,GAC/B,oBAACC,2BAAyBA,OAAAA,WAAAA,GAC1B,oBAACC,0BAAwBA,OAAAA,WAAAA,GACzB,oBAACC,8BAA4BA,OAAAA,WAAAA,GAC7B,oBAACC,0BAAwBA;AAGrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { render, screen } from "@testing-library/react";
|
|
4
|
+
import { Container } from "@webiny/di";
|
|
5
|
+
import { CompositionProvider } from "@webiny/react-composition";
|
|
6
|
+
import { DiContainerProvider } from "@webiny/app/shared/di/DiContainerProvider.js";
|
|
7
|
+
import { FeatureFlagsService } from "@webiny/app-admin/features/featureFlags/abstractions.js";
|
|
8
|
+
import { FeatureFlags } from "@webiny/feature-flags";
|
|
9
|
+
import { AdminUiProvider } from "@webiny/admin-ui";
|
|
10
|
+
import { ModelContext } from "@webiny/app-headless-cms/admin/components/ModelProvider/index.js";
|
|
11
|
+
import { ContentEntryEditorConfig, ContentEntryEditorWithConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
|
|
12
|
+
import { EntryProvider } from "@webiny/app-headless-cms/admin/hooks/useEntry.js";
|
|
13
|
+
import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
|
|
14
|
+
import { ContentEntriesCacheProvider as ContentEntriesCacheProvider_js_ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/ContentEntriesCacheProvider.js";
|
|
15
|
+
import { ContentEntryListConfig, GetEntryGraphQLFieldSelection, ListEntriesGraphQLFieldSelection, TableRowMapper } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
16
|
+
import { toSystemWorkflow } from "@webiny/app-workflows/review/domain/toSystemWorkflow.js";
|
|
17
|
+
import { ReviewChangedEvent } from "@webiny/app-workflows/review/events/ReviewChangedEvent.js";
|
|
18
|
+
import { ReviewChangedHandler } from "@webiny/app-workflows/review/events/ReviewChangedHandler.js";
|
|
19
|
+
import { createReview } from "@webiny/app-workflows/review/testing/reviewFixtures.js";
|
|
20
|
+
import { CmsWorkflows } from "./index.js";
|
|
21
|
+
import { MODEL } from "./testing/models.js";
|
|
22
|
+
vi.mock("@webiny/app-aco", async (importOriginal)=>{
|
|
23
|
+
const actual = await importOriginal();
|
|
24
|
+
const React = await import("react");
|
|
25
|
+
const Action = Object.assign((props)=>React.createElement("div", {
|
|
26
|
+
"data-action": props.name
|
|
27
|
+
}, props.element), {
|
|
28
|
+
OptionsMenuItem: ()=>null,
|
|
29
|
+
OptionsMenuLink: ()=>null
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
...actual,
|
|
33
|
+
AcoConfig: {
|
|
34
|
+
...actual.AcoConfig,
|
|
35
|
+
Record: {
|
|
36
|
+
...actual.AcoConfig.Record,
|
|
37
|
+
Action
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
vi.mock("@webiny/app-admin", async (importOriginal)=>{
|
|
43
|
+
const actual = await importOriginal();
|
|
44
|
+
const React = await import("react");
|
|
45
|
+
return {
|
|
46
|
+
...actual,
|
|
47
|
+
OptionsMenuItem: (props)=>React.createElement("button", {
|
|
48
|
+
"data-testid": "blocked-move"
|
|
49
|
+
}, props.label)
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
vi.mock("~/Routes/index.js", ()=>({
|
|
53
|
+
CmsWorkflowEditor: ()=>null
|
|
54
|
+
}));
|
|
55
|
+
vi.mock("~/Components/ContentReviews/CmsContentReviews.js", ()=>({
|
|
56
|
+
CmsContentReviews: ()=>null
|
|
57
|
+
}));
|
|
58
|
+
vi.mock("~/Components/ContentReviews/CmsContentReviewsSidebarItem.js", ()=>({
|
|
59
|
+
CmsContentReviewsSidebarItem: ()=>null
|
|
60
|
+
}));
|
|
61
|
+
class FakeRowMapper {
|
|
62
|
+
fromEntry(entry) {
|
|
63
|
+
return {
|
|
64
|
+
id: entry.id,
|
|
65
|
+
$selectable: true,
|
|
66
|
+
$type: "RECORD",
|
|
67
|
+
data: entry
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const BaseRowMapper = TableRowMapper.createImplementation({
|
|
72
|
+
implementation: FakeRowMapper,
|
|
73
|
+
dependencies: []
|
|
74
|
+
});
|
|
75
|
+
const EntryAction = ContentEntryListConfig.Browser.Entry.Action;
|
|
76
|
+
function createEntry(reviewState) {
|
|
77
|
+
const workflow = null === reviewState ? null : {
|
|
78
|
+
reviewState
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
id: "entry-1#0001",
|
|
82
|
+
entryId: "entry-1",
|
|
83
|
+
meta: {
|
|
84
|
+
title: "Hello",
|
|
85
|
+
status: "draft",
|
|
86
|
+
version: 1,
|
|
87
|
+
locked: false,
|
|
88
|
+
system: {
|
|
89
|
+
workflow
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function mountRoot(isEnabled) {
|
|
95
|
+
const flagsService = {
|
|
96
|
+
getFlags: ()=>new FeatureFlags({
|
|
97
|
+
advancedPublishingWorkflow: isEnabled
|
|
98
|
+
}),
|
|
99
|
+
isLoaded: ()=>true,
|
|
100
|
+
loadFlags: async ()=>void 0
|
|
101
|
+
};
|
|
102
|
+
const container = new Container();
|
|
103
|
+
container.registerInstance(FeatureFlagsService, flagsService);
|
|
104
|
+
container.register(ContentEntriesCacheProvider_js_ContentEntriesCacheProvider).inSingletonScope();
|
|
105
|
+
container.register(BaseRowMapper);
|
|
106
|
+
render(/*#__PURE__*/ react.createElement(AdminUiProvider, null, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
107
|
+
container: container
|
|
108
|
+
}, /*#__PURE__*/ react.createElement(ModelContext.Provider, {
|
|
109
|
+
value: MODEL
|
|
110
|
+
}, /*#__PURE__*/ react.createElement(CmsWorkflows, null), /*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(ContentEntryEditorConfig.Width, {
|
|
111
|
+
value: "1020px"
|
|
112
|
+
})), /*#__PURE__*/ react.createElement(ContentEntryEditorWithConfig, null, /*#__PURE__*/ react.createElement(EntryProvider, {
|
|
113
|
+
entry: createEntry("inProgress")
|
|
114
|
+
}, /*#__PURE__*/ react.createElement(EntryAction, {
|
|
115
|
+
name: "move",
|
|
116
|
+
element: /*#__PURE__*/ react.createElement("span", {
|
|
117
|
+
"data-testid": "move-item"
|
|
118
|
+
})
|
|
119
|
+
}))))))));
|
|
120
|
+
return container;
|
|
121
|
+
}
|
|
122
|
+
function getCachedSystem(container) {
|
|
123
|
+
const provider = container.resolve(ContentEntriesCacheProvider);
|
|
124
|
+
const entry = provider.get("article").getItem((item)=>"entry-1" === item.entryId);
|
|
125
|
+
return (entry?.meta).system;
|
|
126
|
+
}
|
|
127
|
+
describe("CmsWorkflows list and cache wiring", ()=>{
|
|
128
|
+
it("registers the selections, the row mapper, the Move gate and the cache sync with the flag on", async ()=>{
|
|
129
|
+
const container = mountRoot(true);
|
|
130
|
+
const listSelections = container.resolveAll(ListEntriesGraphQLFieldSelection).flatMap((selection)=>selection.getSelection());
|
|
131
|
+
const getSelections = container.resolveAll(GetEntryGraphQLFieldSelection).flatMap((selection)=>selection.getSelection());
|
|
132
|
+
expect(listSelections).toHaveLength(1);
|
|
133
|
+
expect(listSelections[0]).toContain("reviewState");
|
|
134
|
+
expect(getSelections).toHaveLength(1);
|
|
135
|
+
expect(getSelections[0]).toContain("stepState");
|
|
136
|
+
const mapper = container.resolve(TableRowMapper);
|
|
137
|
+
expect(mapper.fromEntry(createEntry("inProgress")).$selectable).toBe(false);
|
|
138
|
+
expect(mapper.fromEntry(createEntry(null)).$selectable).toBe(true);
|
|
139
|
+
expect(await screen.findByTestId("blocked-move")).toBeTruthy();
|
|
140
|
+
expect(screen.queryByTestId("move-item")).toBeNull();
|
|
141
|
+
const provider = container.resolve(ContentEntriesCacheProvider);
|
|
142
|
+
provider.get("article").setItems([
|
|
143
|
+
createEntry(null)
|
|
144
|
+
]);
|
|
145
|
+
const handlers = container.resolveAll(ReviewChangedHandler);
|
|
146
|
+
expect(handlers).toHaveLength(1);
|
|
147
|
+
const review = createReview({
|
|
148
|
+
namespace: "cms.article"
|
|
149
|
+
});
|
|
150
|
+
await handlers[0].handle(new ReviewChangedEvent({
|
|
151
|
+
namespace: "cms.article",
|
|
152
|
+
targetId: "entry-1",
|
|
153
|
+
targetRevisionId: "entry-1#0001",
|
|
154
|
+
review
|
|
155
|
+
}));
|
|
156
|
+
expect(getCachedSystem(container)).toEqual({
|
|
157
|
+
workflow: toSystemWorkflow(review)
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
it("registers none of it with the flag off", async ()=>{
|
|
161
|
+
const container = mountRoot(false);
|
|
162
|
+
expect(container.resolveAll(ListEntriesGraphQLFieldSelection)).toHaveLength(0);
|
|
163
|
+
expect(container.resolveAll(GetEntryGraphQLFieldSelection)).toHaveLength(0);
|
|
164
|
+
expect(container.resolveAll(ReviewChangedHandler)).toHaveLength(0);
|
|
165
|
+
const mapper = container.resolve(TableRowMapper);
|
|
166
|
+
expect(mapper.fromEntry(createEntry("inProgress")).$selectable).toBe(true);
|
|
167
|
+
expect(await screen.findByTestId("move-item")).toBeTruthy();
|
|
168
|
+
expect(screen.queryByTestId("blocked-move")).toBeNull();
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=index.lists.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.lists.test.js","sources":["../src/index.lists.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport { DiContainerProvider } from \"@webiny/app/shared/di/DiContainerProvider.js\";\nimport { FeatureFlagsService } from \"@webiny/app-admin/features/featureFlags/abstractions.js\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\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 { EntryProvider } from \"@webiny/app-headless-cms/admin/hooks/useEntry.js\";\nimport { ContentEntriesCacheProvider as ContentEntriesCacheProviderAbstraction } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/ContentEntriesCacheProvider.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { GetEntryGraphQLFieldSelection } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ListEntriesGraphQLFieldSelection } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { TableRowMapper } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport { toSystemWorkflow } from \"@webiny/app-workflows/review/domain/toSystemWorkflow.js\";\nimport { ReviewChangedEvent } from \"@webiny/app-workflows/review/events/ReviewChangedEvent.js\";\nimport { ReviewChangedHandler } from \"@webiny/app-workflows/review/events/ReviewChangedHandler.js\";\nimport { createReview } from \"@webiny/app-workflows/review/testing/reviewFixtures.js\";\nimport { CmsWorkflows } from \"./index.js\";\nimport { MODEL } from \"~/testing/models.js\";\n\ninterface FakeActionProps {\n name: string;\n element: React.ReactElement;\n}\n\ninterface FakeMenuItemProps {\n label: string;\n}\n\nvi.mock(\"@webiny/app-aco\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-aco\")>();\n const React = await import(\"react\");\n const Action = Object.assign(\n (props: FakeActionProps) => {\n return React.createElement(\"div\", { \"data-action\": props.name }, props.element);\n },\n { OptionsMenuItem: () => null, OptionsMenuLink: () => null }\n );\n\n return {\n ...actual,\n AcoConfig: { ...actual.AcoConfig, Record: { ...actual.AcoConfig.Record, Action } }\n };\n});\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n const React = await import(\"react\");\n\n return {\n ...actual,\n OptionsMenuItem: (props: FakeMenuItemProps) => {\n return React.createElement(\"button\", { \"data-testid\": \"blocked-move\" }, props.label);\n }\n };\n});\n\nvi.mock(\"~/Routes/index.js\", () => {\n return { CmsWorkflowEditor: () => null };\n});\n\nvi.mock(\"~/Components/ContentReviews/CmsContentReviews.js\", () => {\n return { CmsContentReviews: () => null };\n});\n\nvi.mock(\"~/Components/ContentReviews/CmsContentReviewsSidebarItem.js\", () => {\n return { CmsContentReviewsSidebarItem: () => null };\n});\n\nclass FakeRowMapper implements TableRowMapper.Interface {\n fromEntry(entry: CmsContentEntry): TableRowMapper.EntryTableRow {\n return { id: entry.id, $selectable: true, $type: \"RECORD\", data: entry };\n }\n}\n\nconst BaseRowMapper = TableRowMapper.createImplementation({\n implementation: FakeRowMapper,\n dependencies: []\n});\n\nconst EntryAction = ContentEntryListConfig.Browser.Entry.Action;\n\nfunction createEntry(reviewState: string | null): CmsContentEntry {\n const workflow = reviewState === null ? null : { reviewState };\n\n return {\n id: \"entry-1#0001\",\n entryId: \"entry-1\",\n meta: { title: \"Hello\", status: \"draft\", version: 1, locked: false, system: { workflow } }\n } as unknown as CmsContentEntry;\n}\n\nfunction mountRoot(isEnabled: boolean): Container {\n const flagsService: FeatureFlagsService.Interface = {\n getFlags: () => new FeatureFlags({ advancedPublishingWorkflow: isEnabled }),\n isLoaded: () => true,\n loadFlags: async () => undefined\n };\n const container = new Container();\n container.registerInstance(FeatureFlagsService, flagsService);\n container.register(ContentEntriesCacheProvider).inSingletonScope();\n container.register(BaseRowMapper);\n\n render(\n <AdminUiProvider>\n <CompositionProvider>\n <DiContainerProvider container={container}>\n <ModelContext.Provider value={MODEL}>\n <CmsWorkflows />\n {/* The editor config needs one property so the flag-off mount collects its config. */}\n <ContentEntryEditorConfig>\n <ContentEntryEditorConfig.Width value={\"1020px\"} />\n </ContentEntryEditorConfig>\n <ContentEntryEditorWithConfig>\n <EntryProvider entry={createEntry(\"inProgress\")}>\n <EntryAction\n name=\"move\"\n element={<span data-testid=\"move-item\" />}\n />\n </EntryProvider>\n </ContentEntryEditorWithConfig>\n </ModelContext.Provider>\n </DiContainerProvider>\n </CompositionProvider>\n </AdminUiProvider>\n );\n\n return container;\n}\n\nfunction getCachedSystem(container: Container): unknown {\n const provider = container.resolve(ContentEntriesCacheProviderAbstraction);\n const entry = provider.get(\"article\").getItem(item => item.entryId === \"entry-1\");\n return (entry?.meta as unknown as { system?: unknown }).system;\n}\n\ndescribe(\"CmsWorkflows list and cache wiring\", () => {\n it(\"registers the selections, the row mapper, the Move gate and the cache sync with the flag on\", async () => {\n const container = mountRoot(true);\n\n const listSelections = container\n .resolveAll(ListEntriesGraphQLFieldSelection)\n .flatMap(selection => selection.getSelection());\n const getSelections = container\n .resolveAll(GetEntryGraphQLFieldSelection)\n .flatMap(selection => selection.getSelection());\n expect(listSelections).toHaveLength(1);\n expect(listSelections[0]).toContain(\"reviewState\");\n expect(getSelections).toHaveLength(1);\n expect(getSelections[0]).toContain(\"stepState\");\n\n const mapper = container.resolve(TableRowMapper);\n expect(mapper.fromEntry(createEntry(\"inProgress\")).$selectable).toBe(false);\n expect(mapper.fromEntry(createEntry(null)).$selectable).toBe(true);\n\n expect(await screen.findByTestId(\"blocked-move\")).toBeTruthy();\n expect(screen.queryByTestId(\"move-item\")).toBeNull();\n\n const provider = container.resolve(ContentEntriesCacheProviderAbstraction);\n provider.get(\"article\").setItems([createEntry(null)]);\n const handlers = container.resolveAll(ReviewChangedHandler);\n expect(handlers).toHaveLength(1);\n const review = createReview({ namespace: \"cms.article\" });\n await handlers[0].handle(\n new ReviewChangedEvent({\n namespace: \"cms.article\",\n targetId: \"entry-1\",\n targetRevisionId: \"entry-1#0001\",\n review\n })\n );\n expect(getCachedSystem(container)).toEqual({ workflow: toSystemWorkflow(review) });\n });\n\n it(\"registers none of it with the flag off\", async () => {\n const container = mountRoot(false);\n\n expect(container.resolveAll(ListEntriesGraphQLFieldSelection)).toHaveLength(0);\n expect(container.resolveAll(GetEntryGraphQLFieldSelection)).toHaveLength(0);\n expect(container.resolveAll(ReviewChangedHandler)).toHaveLength(0);\n\n const mapper = container.resolve(TableRowMapper);\n expect(mapper.fromEntry(createEntry(\"inProgress\")).$selectable).toBe(true);\n\n expect(await screen.findByTestId(\"move-item\")).toBeTruthy();\n expect(screen.queryByTestId(\"blocked-move\")).toBeNull();\n });\n});\n"],"names":["vi","importOriginal","actual","React","Action","Object","props","FakeRowMapper","entry","BaseRowMapper","TableRowMapper","EntryAction","ContentEntryListConfig","createEntry","reviewState","workflow","mountRoot","isEnabled","flagsService","FeatureFlags","undefined","container","Container","FeatureFlagsService","ContentEntriesCacheProvider","render","AdminUiProvider","CompositionProvider","DiContainerProvider","ModelContext","MODEL","CmsWorkflows","ContentEntryEditorConfig","ContentEntryEditorWithConfig","EntryProvider","getCachedSystem","provider","ContentEntriesCacheProviderAbstraction","item","describe","it","listSelections","ListEntriesGraphQLFieldSelection","selection","getSelections","GetEntryGraphQLFieldSelection","expect","mapper","screen","handlers","ReviewChangedHandler","review","createReview","ReviewChangedEvent","toSystemWorkflow"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { CmsWorkflows } from "./index.js";
|
|
4
|
+
vi.mock("@webiny/app-admin", async (importOriginal)=>{
|
|
5
|
+
const original = await importOriginal();
|
|
6
|
+
const RegisterFeature = ()=>null;
|
|
7
|
+
const useFeatureFlags = ()=>({
|
|
8
|
+
isEnabled: ()=>true
|
|
9
|
+
});
|
|
10
|
+
return {
|
|
11
|
+
...original,
|
|
12
|
+
RegisterFeature,
|
|
13
|
+
useFeatureFlags
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
const getTypeName = (type)=>{
|
|
17
|
+
if ("string" == typeof type) return type;
|
|
18
|
+
if (type === react.Fragment) return "Fragment";
|
|
19
|
+
const named = type;
|
|
20
|
+
return named.displayName || named.name || "Anonymous";
|
|
21
|
+
};
|
|
22
|
+
const collectTree = (node, entries)=>{
|
|
23
|
+
react.Children.forEach(node, (child)=>{
|
|
24
|
+
if (!/*#__PURE__*/ react.isValidElement(child)) return;
|
|
25
|
+
const featureName = child.props.feature ? child.props.feature.name : null;
|
|
26
|
+
entries.push({
|
|
27
|
+
typeName: getTypeName(child.type),
|
|
28
|
+
featureName
|
|
29
|
+
});
|
|
30
|
+
collectTree(child.props.children, entries);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const renderRoot = ()=>{
|
|
34
|
+
const entries = [];
|
|
35
|
+
collectTree(CmsWorkflows(), entries);
|
|
36
|
+
return entries;
|
|
37
|
+
};
|
|
38
|
+
describe("CmsWorkflows root", ()=>{
|
|
39
|
+
it("mounts the workflow editor route and registers its mounting feature", ()=>{
|
|
40
|
+
const entries = renderRoot();
|
|
41
|
+
const typeNames = entries.map((entry)=>entry.typeName);
|
|
42
|
+
const featureNames = entries.map((entry)=>entry.featureName).filter((name)=>null !== name);
|
|
43
|
+
expect(typeNames).toContain("CmsWorkflowEditor");
|
|
44
|
+
expect(featureNames).toContain("CmsWorkflows/EditorMounting");
|
|
45
|
+
expect(featureNames).toContain("CmsWorkflows");
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=index.mount.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mount.test.js","sources":["../src/index.mount.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { CmsWorkflows } from \"~/index.js\";\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const original = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n const RegisterFeature = () => null;\n const useFeatureFlags = () => {\n return { isEnabled: () => true };\n };\n return { ...original, RegisterFeature, useFeatureFlags };\n});\n\ninterface TreeProps {\n children?: React.ReactNode;\n feature?: { name: string };\n}\n\ninterface NamedType {\n displayName?: string;\n name?: string;\n}\n\ninterface TreeEntry {\n typeName: string;\n featureName: string | null;\n}\n\nconst getTypeName = (type: React.ReactElement[\"type\"]): string => {\n if (typeof type === \"string\") {\n return type;\n }\n if (type === React.Fragment) {\n return \"Fragment\";\n }\n const named = type as NamedType;\n return named.displayName || named.name || \"Anonymous\";\n};\n\nconst collectTree = (node: React.ReactNode, entries: TreeEntry[]): void => {\n React.Children.forEach(node, child => {\n if (!React.isValidElement<TreeProps>(child)) {\n return;\n }\n const featureName = child.props.feature ? child.props.feature.name : null;\n entries.push({ typeName: getTypeName(child.type), featureName });\n collectTree(child.props.children, entries);\n });\n};\n\nconst renderRoot = (): TreeEntry[] => {\n const entries: TreeEntry[] = [];\n collectTree(CmsWorkflows(), entries);\n return entries;\n};\n\ndescribe(\"CmsWorkflows root\", () => {\n it(\"mounts the workflow editor route and registers its mounting feature\", () => {\n const entries = renderRoot();\n const typeNames = entries.map(entry => entry.typeName);\n const featureNames = entries.map(entry => entry.featureName).filter(name => name !== null);\n\n expect(typeNames).toContain(\"CmsWorkflowEditor\");\n expect(featureNames).toContain(\"CmsWorkflows/EditorMounting\");\n // The feature that gates Publish in the revisions drawer.\n expect(featureNames).toContain(\"CmsWorkflows\");\n });\n});\n"],"names":["vi","importOriginal","original","RegisterFeature","useFeatureFlags","getTypeName","type","React","named","collectTree","node","entries","child","featureName","renderRoot","CmsWorkflows","describe","it","typeNames","entry","featureNames","name","expect"],"mappings":";;;AAOAA,GAAG,IAAI,CAAC,qBAAqB,OAAMC;IAC/B,MAAMC,WAAW,MAAMD;IACvB,MAAME,kBAAkB,IAAM;IAC9B,MAAMC,kBAAkB,IACb;YAAE,WAAW,IAAM;QAAK;IAEnC,OAAO;QAAE,GAAGF,QAAQ;QAAEC;QAAiBC;IAAgB;AAC3D;AAiBA,MAAMC,cAAc,CAACC;IACjB,IAAI,AAAgB,YAAhB,OAAOA,MACP,OAAOA;IAEX,IAAIA,SAASC,MAAAA,QAAc,EACvB,OAAO;IAEX,MAAMC,QAAQF;IACd,OAAOE,MAAM,WAAW,IAAIA,MAAM,IAAI,IAAI;AAC9C;AAEA,MAAMC,cAAc,CAACC,MAAuBC;IACxCJ,MAAAA,QAAAA,CAAAA,OAAsB,CAACG,MAAME,CAAAA;QACzB,IAAI,CAAC,WAAD,GAACL,MAAAA,cAAoB,CAAYK,QACjC;QAEJ,MAAMC,cAAcD,MAAM,KAAK,CAAC,OAAO,GAAGA,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG;QACrED,QAAQ,IAAI,CAAC;YAAE,UAAUN,YAAYO,MAAM,IAAI;YAAGC;QAAY;QAC9DJ,YAAYG,MAAM,KAAK,CAAC,QAAQ,EAAED;IACtC;AACJ;AAEA,MAAMG,aAAa;IACf,MAAMH,UAAuB,EAAE;IAC/BF,YAAYM,gBAAgBJ;IAC5B,OAAOA;AACX;AAEAK,SAAS,qBAAqB;IAC1BC,GAAG,uEAAuE;QACtE,MAAMN,UAAUG;QAChB,MAAMI,YAAYP,QAAQ,GAAG,CAACQ,CAAAA,QAASA,MAAM,QAAQ;QACrD,MAAMC,eAAeT,QAAQ,GAAG,CAACQ,CAAAA,QAASA,MAAM,WAAW,EAAE,MAAM,CAACE,CAAAA,OAAQA,AAAS,SAATA;QAE5EC,OAAOJ,WAAW,SAAS,CAAC;QAC5BI,OAAOF,cAAc,SAAS,CAAC;QAE/BE,OAAOF,cAAc,SAAS,CAAC;IACnC;AACJ"}
|
package/index.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|