@webiny/app-website-builder-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/ContentReviews/WbContentReviews.d.ts +2 -0
- package/Components/ContentReviews/WbContentReviews.js +41 -0
- package/Components/ContentReviews/WbContentReviews.js.map +1 -0
- package/Components/ContentReviews/WbContentReviews.smoke.test.d.ts +1 -0
- package/Components/ContentReviews/WbContentReviews.smoke.test.js +59 -0
- package/Components/ContentReviews/WbContentReviews.smoke.test.js.map +1 -0
- package/Components/ContentReviews/WbContentReviews.test.d.ts +1 -0
- package/Components/ContentReviews/WbContentReviews.test.js +80 -0
- package/Components/ContentReviews/WbContentReviews.test.js.map +1 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.d.ts +2 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.js +18 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.js.map +1 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.test.d.ts +1 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js +67 -0
- package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js.map +1 -0
- package/Components/PageEditor/DisabledPublishButton.d.ts +6 -0
- package/Components/PageEditor/DisabledPublishButton.js +17 -0
- package/Components/PageEditor/DisabledPublishButton.js.map +1 -0
- package/Components/PageEditor/DisabledPublishButton.test.d.ts +1 -0
- package/Components/PageEditor/DisabledPublishButton.test.js +67 -0
- package/Components/PageEditor/DisabledPublishButton.test.js.map +1 -0
- package/Components/PageEditor/PageBasePublishDecorator.d.ts +2 -0
- package/Components/PageEditor/PageBasePublishDecorator.js +23 -0
- package/Components/PageEditor/PageBasePublishDecorator.js.map +1 -0
- package/Components/PageEditor/PageEditorAutoSave.d.ts +2 -0
- package/Components/PageEditor/PageEditorAutoSave.js +23 -0
- package/Components/PageEditor/PageEditorAutoSave.js.map +1 -0
- package/Components/PageEditor/PageEditorAutoSave.test.d.ts +1 -0
- package/Components/PageEditor/PageEditorAutoSave.test.js +111 -0
- package/Components/PageEditor/PageEditorAutoSave.test.js.map +1 -0
- package/Components/PageEditor/PageEditorConfig.d.ts +2 -0
- package/Components/PageEditor/PageEditorConfig.js +13 -0
- package/Components/PageEditor/PageEditorConfig.js.map +1 -0
- package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
- package/Components/PageEditor/PageEditorLayout.js +10 -0
- package/Components/PageEditor/PageEditorLayout.js.map +1 -0
- package/Components/PageEditor/PageEditorLayout.test.d.ts +1 -0
- package/Components/PageEditor/PageEditorLayout.test.js +121 -0
- package/Components/PageEditor/PageEditorLayout.test.js.map +1 -0
- package/Components/PageEditor/PageEditorTopBar.d.ts +2 -0
- package/Components/PageEditor/PageEditorTopBar.js +10 -0
- package/Components/PageEditor/PageEditorTopBar.js.map +1 -0
- package/Components/PageEditor/PageEditorTopBar.test.d.ts +1 -0
- package/Components/PageEditor/PageEditorTopBar.test.js +175 -0
- package/Components/PageEditor/PageEditorTopBar.test.js.map +1 -0
- package/Components/PageEditor/PageNewRevisionDecorator.d.ts +2 -0
- package/Components/PageEditor/PageNewRevisionDecorator.js +24 -0
- package/Components/PageEditor/PageNewRevisionDecorator.js.map +1 -0
- package/Components/PageEditor/PageNewRevisionDecorator.test.d.ts +1 -0
- package/Components/PageEditor/PageNewRevisionDecorator.test.js +107 -0
- package/Components/PageEditor/PageNewRevisionDecorator.test.js.map +1 -0
- package/Components/PageEditor/PageReadOnlySync.d.ts +3 -0
- package/Components/PageEditor/PageReadOnlySync.js +23 -0
- package/Components/PageEditor/PageReadOnlySync.js.map +1 -0
- package/Components/PageEditor/PageReviewBar.d.ts +4 -0
- package/Components/PageEditor/PageReviewBar.js +93 -0
- package/Components/PageEditor/PageReviewBar.js.map +1 -0
- package/Components/PageEditor/PageReviewBar.test.d.ts +1 -0
- package/Components/PageEditor/PageReviewBar.test.js +135 -0
- package/Components/PageEditor/PageReviewBar.test.js.map +1 -0
- package/Components/PageEditor/PageReviewPublishAction.d.ts +2 -0
- package/Components/PageEditor/PageReviewPublishAction.js +15 -0
- package/Components/PageEditor/PageReviewPublishAction.js.map +1 -0
- package/Components/PageEditor/PageReviewPublishButton.d.ts +4 -0
- package/Components/PageEditor/PageReviewPublishButton.js +23 -0
- package/Components/PageEditor/PageReviewPublishButton.js.map +1 -0
- package/Components/PageEditor/PageScheduleDecorator.d.ts +2 -0
- package/Components/PageEditor/PageScheduleDecorator.js +23 -0
- package/Components/PageEditor/PageScheduleDecorator.js.map +1 -0
- package/Components/PageEditor/PageScheduleDecorator.test.d.ts +1 -0
- package/Components/PageEditor/PageScheduleDecorator.test.js +75 -0
- package/Components/PageEditor/PageScheduleDecorator.test.js.map +1 -0
- package/Components/PageEditor/getPageReadOnlyReason.d.ts +4 -0
- package/Components/PageEditor/getPageReadOnlyReason.js +20 -0
- package/Components/PageEditor/getPageReadOnlyReason.js.map +1 -0
- package/Components/PageEditor/getPageReadOnlyReason.test.d.ts +1 -0
- package/Components/PageEditor/getPageReadOnlyReason.test.js +122 -0
- package/Components/PageEditor/getPageReadOnlyReason.test.js.map +1 -0
- package/Components/PageEditor/getPageReviewContext.d.ts +9 -0
- package/Components/PageEditor/getPageReviewContext.js +13 -0
- package/Components/PageEditor/getPageReviewContext.js.map +1 -0
- package/Components/PageEditor/getPageReviewContext.test.d.ts +1 -0
- package/Components/PageEditor/getPageReviewContext.test.js +42 -0
- package/Components/PageEditor/getPageReviewContext.test.js.map +1 -0
- package/Components/PageEditor/pageEditorDocument.d.ts +17 -0
- package/Components/PageEditor/pageEditorDocument.js +0 -0
- package/Components/PageEditor/pageReviewMatrix.test.d.ts +1 -0
- package/Components/PageEditor/pageReviewMatrix.test.js +223 -0
- package/Components/PageEditor/pageReviewMatrix.test.js.map +1 -0
- package/Components/PageEditor/publishMatrix.test.d.ts +1 -0
- package/Components/PageEditor/publishMatrix.test.js +313 -0
- package/Components/PageEditor/publishMatrix.test.js.map +1 -0
- package/Components/PagesList/PageListReviewGatedActions.d.ts +2 -0
- package/Components/PagesList/PageListReviewGatedActions.js +27 -0
- package/Components/PagesList/PageListReviewGatedActions.js.map +1 -0
- package/Components/PagesList/PageListReviewGatedActions.test.d.ts +1 -0
- package/Components/PagesList/PageListReviewGatedActions.test.js +94 -0
- package/Components/PagesList/PageListReviewGatedActions.test.js.map +1 -0
- package/Components/PagesList/PagesList.d.ts +2 -0
- package/Components/PagesList/PagesList.js +8 -0
- package/Components/PagesList/PagesList.js.map +1 -0
- package/Components/PagesList/PagesList.test.d.ts +1 -0
- package/Components/PagesList/PagesList.test.js +47 -0
- package/Components/PagesList/PagesList.test.js.map +1 -0
- package/Components/PagesList/index.d.ts +1 -0
- package/Components/PagesList/index.js +1 -0
- package/Components/index.d.ts +2 -0
- package/Components/index.js +2 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.d.ts +2 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.js +23 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.test.d.ts +1 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.test.js +141 -0
- package/Routes/WebsiteBuilderWorkflowsMenu.test.js.map +1 -0
- package/Routes/index.d.ts +1 -0
- package/Routes/index.js +1 -0
- package/constants.d.ts +1 -0
- package/constants.js +4 -0
- package/constants.js.map +1 -0
- package/editorGlue.wiring.test.d.ts +1 -0
- package/editorGlue.wiring.test.js +128 -0
- package/editorGlue.wiring.test.js.map +1 -0
- package/features/cache/WbReviewCacheSyncHandler.d.ts +8 -0
- package/features/cache/WbReviewCacheSyncHandler.js +14 -0
- package/features/cache/WbReviewCacheSyncHandler.js.map +1 -0
- package/features/cache/WbReviewPageCacheWriter.d.ts +17 -0
- package/features/cache/WbReviewPageCacheWriter.js +39 -0
- package/features/cache/WbReviewPageCacheWriter.js.map +1 -0
- package/features/cache/WbReviewPageCacheWriter.test.d.ts +1 -0
- package/features/cache/WbReviewPageCacheWriter.test.js +115 -0
- package/features/cache/WbReviewPageCacheWriter.test.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/cache/feature.d.ts +1 -0
- package/features/cache/feature.js +13 -0
- package/features/cache/feature.js.map +1 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.d.ts +25 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js +112 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js.map +1 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.d.ts +1 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js +632 -0
- package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.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 +244 -0
- package/features/editorGateway/feature.test.js.map +1 -0
- package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js +19 -0
- package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js +19 -0
- package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.d.ts +1 -0
- package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js +19 -0
- package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js.map +1 -0
- package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.d.ts +1 -0
- package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js +23 -0
- package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js.map +1 -0
- package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js +19 -0
- package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/websiteBuilderPageFolderExists.d.ts +1 -0
- package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js +16 -0
- package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js.map +1 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.d.ts +21 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.js +45 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.js.map +1 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.test.d.ts +1 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js +115 -0
- package/features/editorMounting/WbWorkflowEditorAppAdapter.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 +93 -0
- package/features/editorMounting/feature.test.js.map +1 -0
- package/features/editorReview/WbPageContentReloader.d.ts +12 -0
- package/features/editorReview/WbPageContentReloader.js +40 -0
- package/features/editorReview/WbPageContentReloader.js.map +1 -0
- package/features/editorReview/WbPageContentReloader.test.d.ts +1 -0
- package/features/editorReview/WbPageContentReloader.test.js +222 -0
- package/features/editorReview/WbPageContentReloader.test.js.map +1 -0
- package/features/editorReview/WbPageReview.d.ts +8 -0
- package/features/editorReview/WbPageReview.js +14 -0
- package/features/editorReview/WbPageReview.js.map +1 -0
- package/features/editorReview/WbPageUnsavedChanges.d.ts +8 -0
- package/features/editorReview/WbPageUnsavedChanges.js +12 -0
- package/features/editorReview/WbPageUnsavedChanges.js.map +1 -0
- package/features/editorReview/WbPageUnsavedChanges.test.d.ts +1 -0
- package/features/editorReview/WbPageUnsavedChanges.test.js +33 -0
- package/features/editorReview/WbPageUnsavedChanges.test.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/gateway/WbReviewChangeMessageHandler.d.ts +8 -0
- package/features/gateway/WbReviewChangeMessageHandler.js +16 -0
- package/features/gateway/WbReviewChangeMessageHandler.js.map +1 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.d.ts +13 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js +35 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js.map +1 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.d.ts +1 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js +47 -0
- package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js.map +1 -0
- package/features/gateway/WbReviewContentAdapter/abstractions.d.ts +5 -0
- package/features/gateway/WbReviewContentAdapter/abstractions.js +5 -0
- package/features/gateway/WbReviewContentAdapter/abstractions.js.map +1 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.d.ts +51 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.js +216 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.js.map +1 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.test.d.ts +1 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.test.js +647 -0
- package/features/gateway/WbReviewGateway/WbReviewGateway.test.js.map +1 -0
- package/features/gateway/WbReviewNotificationHandler.d.ts +8 -0
- package/features/gateway/WbReviewNotificationHandler.js +16 -0
- package/features/gateway/WbReviewNotificationHandler.js.map +1 -0
- package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.d.ts +8 -0
- package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js +14 -0
- package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js.map +1 -0
- package/features/gateway/WbReviewRowProvider/abstractions.d.ts +5 -0
- package/features/gateway/WbReviewRowProvider/abstractions.js +5 -0
- package/features/gateway/WbReviewRowProvider/abstractions.js.map +1 -0
- package/features/gateway/assertWbPageNamespace.d.ts +1 -0
- package/features/gateway/assertWbPageNamespace.js +7 -0
- package/features/gateway/assertWbPageNamespace.js.map +1 -0
- package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
- package/features/gateway/contentReviewsBindings.test.js +159 -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 +85 -0
- package/features/gateway/feature.test.js.map +1 -0
- package/features/gateway/graphql/WbOperationResponse.d.ts +3 -0
- package/features/gateway/graphql/WbOperationResponse.js +0 -0
- package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js +22 -0
- package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReview.d.ts +1 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js +18 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js.map +1 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.d.ts +1 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js +26 -0
- package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js.map +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReview.d.ts +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReview.js +18 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReview.js.map +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.d.ts +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js +18 -0
- package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js.map +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.d.ts +1 -0
- package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js +18 -0
- package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js.map +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js +18 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviews.d.ts +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviews.js +34 -0
- package/features/gateway/graphql/listWebsiteBuilderPageReviews.js.map +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js +22 -0
- package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.d.ts +1 -0
- package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js +18 -0
- package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js.map +1 -0
- package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js +22 -0
- package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js +22 -0
- package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/gateway/graphql/requestWebsiteBuilderPageReview.d.ts +1 -0
- package/features/gateway/graphql/requestWebsiteBuilderPageReview.js +26 -0
- package/features/gateway/graphql/requestWebsiteBuilderPageReview.js.map +1 -0
- package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js +18 -0
- package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js +18 -0
- package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.d.ts +1 -0
- package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js +26 -0
- package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +14 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js +27 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js +234 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js +114 -0
- package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.test.js +134 -0
- package/features/trash/DeletePageUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/feature.d.ts +1 -0
- package/features/trash/feature.js +15 -0
- package/features/trash/feature.js.map +1 -0
- package/features/trash/feature.test.d.ts +1 -0
- package/features/trash/feature.test.js +183 -0
- package/features/trash/feature.test.js.map +1 -0
- package/hooks/usePage.d.ts +5 -0
- package/hooks/usePage.js +15 -0
- package/hooks/usePage.js.map +1 -0
- package/hooks/usePage.test.d.ts +1 -0
- package/hooks/usePage.test.js +49 -0
- package/hooks/usePage.test.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +40 -0
- package/index.js.map +1 -0
- package/index.mount.test.d.ts +1 -0
- package/index.mount.test.js +50 -0
- package/index.mount.test.js.map +1 -0
- package/index.test.d.ts +1 -0
- package/index.test.js +523 -0
- package/index.test.js.map +1 -0
- package/package.json +54 -0
- package/pageListChangeStatus.wiring.test.d.ts +1 -0
- package/pageListChangeStatus.wiring.test.js +175 -0
- package/pageListChangeStatus.wiring.test.js.map +1 -0
- package/pageListGlue.wiring.test.d.ts +1 -0
- package/pageListGlue.wiring.test.js +220 -0
- package/pageListGlue.wiring.test.js.map +1 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.d.ts +8 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js +16 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js.map +1 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.d.ts +1 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js +19 -0
- package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js.map +1 -0
- package/presentation/page/PageGet/feature.d.ts +1 -0
- package/presentation/page/PageGet/feature.js +11 -0
- package/presentation/page/PageGet/feature.js.map +1 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.d.ts +8 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.js +16 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.js.map +1 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.d.ts +1 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js +19 -0
- package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js.map +1 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.d.ts +12 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js +24 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js.map +1 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.d.ts +1 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js +70 -0
- package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js.map +1 -0
- package/presentation/page/PageList/feature.d.ts +1 -0
- package/presentation/page/PageList/feature.js +13 -0
- package/presentation/page/PageList/feature.js.map +1 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.d.ts +15 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.js +36 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.js.map +1 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.d.ts +1 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js +119 -0
- package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js.map +1 -0
- package/presentation/page/RevisionList/feature.d.ts +1 -0
- package/presentation/page/RevisionList/feature.js +11 -0
- package/presentation/page/RevisionList/feature.js.map +1 -0
- package/presentation/page/wbReviewPageSelection.d.ts +1 -0
- package/presentation/page/wbReviewPageSelection.js +9 -0
- package/presentation/page/wbReviewPageSelection.js.map +1 -0
- package/publishAutosave.wiring.test.d.ts +1 -0
- package/publishAutosave.wiring.test.js +162 -0
- package/publishAutosave.wiring.test.js.map +1 -0
- package/routes.d.ts +9 -0
- package/routes.js +19 -0
- package/routes.js.map +1 -0
- package/testing/WbEditorHarness.d.ts +11 -0
- package/testing/WbEditorHarness.js +22 -0
- package/testing/WbEditorHarness.js.map +1 -0
- package/testing/createFakeSession.d.ts +9 -0
- package/testing/createFakeSession.js +29 -0
- package/testing/createFakeSession.js.map +1 -0
- package/testing/createFakeVm.d.ts +3 -0
- package/testing/createFakeVm.js +51 -0
- package/testing/createFakeVm.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/createPageEditor.d.ts +4 -0
- package/testing/createPageEditor.js +26 -0
- package/testing/createPageEditor.js.map +1 -0
- package/testing/registerPageContent.d.ts +20 -0
- package/testing/registerPageContent.js +28 -0
- package/testing/registerPageContent.js.map +1 -0
- package/types.d.ts +9 -0
- package/types.js +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
|
|
2
|
+
import { WB_REVIEW_PAGE_SELECTION } from "../wbReviewPageSelection.js";
|
|
3
|
+
class WbReviewListPagesFieldSelectionImpl {
|
|
4
|
+
getSelection() {
|
|
5
|
+
return [
|
|
6
|
+
WB_REVIEW_PAGE_SELECTION
|
|
7
|
+
];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const WbReviewListPagesFieldSelection = ListPagesGraphQLFieldSelection.createImplementation({
|
|
11
|
+
dependencies: [],
|
|
12
|
+
implementation: WbReviewListPagesFieldSelectionImpl
|
|
13
|
+
});
|
|
14
|
+
export { WbReviewListPagesFieldSelection };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=WbReviewListPagesFieldSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/PageList/WbReviewListPagesFieldSelection.js","sources":["../../../../src/presentation/page/PageList/WbReviewListPagesFieldSelection.ts"],"sourcesContent":["import { ListPagesGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/listPages/abstractions.js\";\nimport { WB_REVIEW_PAGE_SELECTION } from \"../wbReviewPageSelection.js\";\n\nclass WbReviewListPagesFieldSelectionImpl implements ListPagesGraphQLFieldSelection.Interface {\n getSelection(): string[] {\n return [WB_REVIEW_PAGE_SELECTION];\n }\n}\n\nexport const WbReviewListPagesFieldSelection = ListPagesGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WbReviewListPagesFieldSelectionImpl\n});\n"],"names":["WbReviewListPagesFieldSelectionImpl","WB_REVIEW_PAGE_SELECTION","WbReviewListPagesFieldSelection","ListPagesGraphQLFieldSelection"],"mappings":";;AAGA,MAAMA;IACF,eAAyB;QACrB,OAAO;YAACC;SAAyB;IACrC;AACJ;AAEO,MAAMC,kCAAkCC,+BAA+B,oBAAoB,CAAC;IAC/F,cAAc,EAAE;IAChB,gBAAgBH;AACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
|
|
4
|
+
import { REVIEW_SYSTEM_WORKFLOW_SELECTION } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
5
|
+
import { WbReviewListPagesFieldSelection } from "./WbReviewListPagesFieldSelection.js";
|
|
6
|
+
describe("WbReviewListPagesFieldSelection", ()=>{
|
|
7
|
+
it("selects system.workflow with the shared selection constant", ()=>{
|
|
8
|
+
const container = new Container();
|
|
9
|
+
container.register(WbReviewListPagesFieldSelection);
|
|
10
|
+
const selections = container.resolveAll(ListPagesGraphQLFieldSelection);
|
|
11
|
+
expect(selections).toHaveLength(1);
|
|
12
|
+
const fields = selections[0].getSelection();
|
|
13
|
+
expect(fields).toHaveLength(1);
|
|
14
|
+
const normalized = fields[0].replace(/\s+/g, " ").trim();
|
|
15
|
+
expect(normalized).toBe(`system { workflow { ${REVIEW_SYSTEM_WORKFLOW_SELECTION} } }`);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=WbReviewListPagesFieldSelection.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/PageList/WbReviewListPagesFieldSelection.test.js","sources":["../../../../src/presentation/page/PageList/WbReviewListPagesFieldSelection.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { ListPagesGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/listPages/abstractions.js\";\nimport { REVIEW_SYSTEM_WORKFLOW_SELECTION } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\nimport { WbReviewListPagesFieldSelection } from \"./WbReviewListPagesFieldSelection.js\";\n\ndescribe(\"WbReviewListPagesFieldSelection\", () => {\n it(\"selects system.workflow with the shared selection constant\", () => {\n const container = new Container();\n container.register(WbReviewListPagesFieldSelection);\n\n const selections = container.resolveAll(ListPagesGraphQLFieldSelection);\n\n expect(selections).toHaveLength(1);\n const fields = selections[0].getSelection();\n expect(fields).toHaveLength(1);\n const normalized = fields[0].replace(/\\s+/g, \" \").trim();\n expect(normalized).toBe(`system { workflow { ${REVIEW_SYSTEM_WORKFLOW_SELECTION} } }`);\n });\n});\n"],"names":["describe","it","container","Container","WbReviewListPagesFieldSelection","selections","ListPagesGraphQLFieldSelection","expect","fields","normalized","REVIEW_SYSTEM_WORKFLOW_SELECTION"],"mappings":";;;;;AAQAA,SAAS,mCAAmC;IACxCC,GAAG,8DAA8D;QAC7D,MAAMC,YAAY,IAAIC;QACtBD,UAAU,QAAQ,CAACE;QAEnB,MAAMC,aAAaH,UAAU,UAAU,CAACI;QAExCC,OAAOF,YAAY,YAAY,CAAC;QAChC,MAAMG,SAASH,UAAU,CAAC,EAAE,CAAC,YAAY;QACzCE,OAAOC,QAAQ,YAAY,CAAC;QAC5B,MAAMC,aAAaD,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;QACtDD,OAAOE,YAAY,IAAI,CAAC,CAAC,oBAAoB,EAAEC,iCAAiC,IAAI,CAAC;IACzF;AACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Page } from "@webiny/app-website-builder/domain/Page/Page.js";
|
|
2
|
+
import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js";
|
|
3
|
+
import "~/types.js";
|
|
4
|
+
declare class WbReviewTableRowMapperDecoratorImpl implements TableRowMapper.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
constructor(decoratee: TableRowMapper.Interface);
|
|
7
|
+
fromPage(page: Page): TableRowMapper.TableRow;
|
|
8
|
+
}
|
|
9
|
+
export declare const WbReviewTableRowMapperDecorator: typeof WbReviewTableRowMapperDecoratorImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js").ITableRowMapper>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js";
|
|
2
|
+
import { isReviewSelectable } from "@webiny/app-workflows/review/domain/isReviewSelectable.js";
|
|
3
|
+
import "../../../types.js";
|
|
4
|
+
class WbReviewTableRowMapperDecoratorImpl {
|
|
5
|
+
constructor(decoratee){
|
|
6
|
+
this.decoratee = decoratee;
|
|
7
|
+
}
|
|
8
|
+
fromPage(page) {
|
|
9
|
+
const row = this.decoratee.fromPage(page);
|
|
10
|
+
const reviewState = page.system?.workflow?.reviewState ?? null;
|
|
11
|
+
if (isReviewSelectable(reviewState)) return row;
|
|
12
|
+
return {
|
|
13
|
+
...row,
|
|
14
|
+
$selectable: false
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const WbReviewTableRowMapperDecorator = TableRowMapper.createDecorator({
|
|
19
|
+
decorator: WbReviewTableRowMapperDecoratorImpl,
|
|
20
|
+
dependencies: []
|
|
21
|
+
});
|
|
22
|
+
export { WbReviewTableRowMapperDecorator };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=WbReviewTableRowMapperDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/PageList/WbReviewTableRowMapperDecorator.js","sources":["../../../../src/presentation/page/PageList/WbReviewTableRowMapperDecorator.ts"],"sourcesContent":["import type { Page } from \"@webiny/app-website-builder/domain/Page/Page.js\";\nimport { TableRowMapper } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js\";\nimport { isReviewSelectable } from \"@webiny/app-workflows/review/domain/isReviewSelectable.js\";\nimport \"~/types.js\";\n\nclass WbReviewTableRowMapperDecoratorImpl implements TableRowMapper.Interface {\n constructor(private decoratee: TableRowMapper.Interface) {}\n\n fromPage(page: Page): TableRowMapper.TableRow {\n const row = this.decoratee.fromPage(page);\n\n const reviewState = page.system?.workflow?.reviewState ?? null;\n if (isReviewSelectable(reviewState)) {\n return row;\n }\n\n return { ...row, $selectable: false };\n }\n}\n\nexport const WbReviewTableRowMapperDecorator = TableRowMapper.createDecorator({\n decorator: WbReviewTableRowMapperDecoratorImpl,\n dependencies: []\n});\n"],"names":["WbReviewTableRowMapperDecoratorImpl","decoratee","page","row","reviewState","isReviewSelectable","WbReviewTableRowMapperDecorator","TableRowMapper"],"mappings":";;;AAKA,MAAMA;IACF,YAAoBC,SAAmC,CAAE;aAArCA,SAAS,GAATA;IAAsC;IAE1D,SAASC,IAAU,EAA2B;QAC1C,MAAMC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACD;QAEpC,MAAME,cAAcF,KAAK,MAAM,EAAE,UAAU,eAAe;QAC1D,IAAIG,mBAAmBD,cACnB,OAAOD;QAGX,OAAO;YAAE,GAAGA,GAAG;YAAE,aAAa;QAAM;IACxC;AACJ;AAEO,MAAMG,kCAAkCC,eAAe,eAAe,CAAC;IAC1E,WAAWP;IACX,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "~/types.js";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { Page } from "@webiny/app-website-builder/domain/Page/index.js";
|
|
4
|
+
import { WbPageStatus } from "@webiny/app-website-builder/constants.js";
|
|
5
|
+
import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js";
|
|
6
|
+
import { TableRowMapper as TableRowMapper_js_TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js";
|
|
7
|
+
import { ReviewState } from "@webiny/app-workflows/review/domain/ReviewState.js";
|
|
8
|
+
import { StepState } from "@webiny/app-workflows/review/domain/StepState.js";
|
|
9
|
+
import "../../../types.js";
|
|
10
|
+
import { WbReviewTableRowMapperDecorator } from "./WbReviewTableRowMapperDecorator.js";
|
|
11
|
+
const createMapper = ()=>{
|
|
12
|
+
const container = new Container();
|
|
13
|
+
container.register(TableRowMapper_js_TableRowMapper);
|
|
14
|
+
container.registerDecorator(WbReviewTableRowMapperDecorator);
|
|
15
|
+
return container.resolve(TableRowMapper);
|
|
16
|
+
};
|
|
17
|
+
const createPage = (reviewState)=>{
|
|
18
|
+
const system = null === reviewState ? null : {
|
|
19
|
+
workflow: {
|
|
20
|
+
workflowId: "workflow-1",
|
|
21
|
+
reviewState,
|
|
22
|
+
stepId: "step-1",
|
|
23
|
+
stepName: "Legal",
|
|
24
|
+
stepState: StepState.InReview
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return Page.create({
|
|
28
|
+
id: "page-1#0001",
|
|
29
|
+
entryId: "page-1",
|
|
30
|
+
status: WbPageStatus.Draft,
|
|
31
|
+
system
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const CASES = [
|
|
35
|
+
{
|
|
36
|
+
reviewState: null,
|
|
37
|
+
selectable: true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
reviewState: ReviewState.Approved,
|
|
41
|
+
selectable: true
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
reviewState: ReviewState.InProgress,
|
|
45
|
+
selectable: false
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
reviewState: ReviewState.Rejected,
|
|
49
|
+
selectable: false
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
reviewState: ReviewState.Cancelled,
|
|
53
|
+
selectable: false
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
describe("WbReviewTableRowMapperDecorator", ()=>{
|
|
57
|
+
it.each(CASES)("review state $reviewState: selectable is $selectable", ({ reviewState, selectable })=>{
|
|
58
|
+
const mapper = createMapper();
|
|
59
|
+
const row = mapper.fromPage(createPage(reviewState));
|
|
60
|
+
expect(row.$selectable).toBe(selectable);
|
|
61
|
+
});
|
|
62
|
+
it("keeps everything else of the base row", ()=>{
|
|
63
|
+
const mapper = createMapper();
|
|
64
|
+
const row = mapper.fromPage(createPage(ReviewState.InProgress));
|
|
65
|
+
expect(row.id).toBe("page-1");
|
|
66
|
+
expect(row.$type).toBe("RECORD");
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=WbReviewTableRowMapperDecorator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js","sources":["../../../../src/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { Page } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { WbPageStatus } from \"@webiny/app-website-builder/constants.js\";\nimport { TableRowMapper as TableRowMapperAbstraction } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js\";\nimport { TableRowMapper as BaseTableRowMapper } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js\";\nimport { ReviewState } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport type { ReviewStateValue } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport { StepState } from \"@webiny/app-workflows/review/domain/StepState.js\";\nimport \"~/types.js\";\nimport { WbReviewTableRowMapperDecorator } from \"./WbReviewTableRowMapperDecorator.js\";\n\nconst createMapper = (): TableRowMapperAbstraction.Interface => {\n const container = new Container();\n container.register(BaseTableRowMapper);\n container.registerDecorator(WbReviewTableRowMapperDecorator);\n return container.resolve(TableRowMapperAbstraction);\n};\n\nconst createPage = (reviewState: ReviewStateValue | null): Page => {\n const system =\n reviewState === null\n ? null\n : {\n workflow: {\n workflowId: \"workflow-1\",\n reviewState,\n stepId: \"step-1\",\n stepName: \"Legal\",\n stepState: StepState.InReview\n }\n };\n\n return Page.create({\n id: \"page-1#0001\",\n entryId: \"page-1\",\n status: WbPageStatus.Draft,\n system\n });\n};\n\ninterface SelectableCase {\n reviewState: ReviewStateValue | null;\n selectable: boolean;\n}\n\nconst CASES: SelectableCase[] = [\n { reviewState: null, selectable: true },\n { reviewState: ReviewState.Approved, selectable: true },\n { reviewState: ReviewState.InProgress, selectable: false },\n { reviewState: ReviewState.Rejected, selectable: false },\n { reviewState: ReviewState.Cancelled, selectable: false }\n];\n\ndescribe(\"WbReviewTableRowMapperDecorator\", () => {\n it.each(CASES)(\n \"review state $reviewState: selectable is $selectable\",\n ({ reviewState, selectable }) => {\n const mapper = createMapper();\n\n const row = mapper.fromPage(createPage(reviewState));\n\n expect(row.$selectable).toBe(selectable);\n }\n );\n\n it(\"keeps everything else of the base row\", () => {\n const mapper = createMapper();\n\n const row = mapper.fromPage(createPage(ReviewState.InProgress));\n\n expect(row.id).toBe(\"page-1\");\n expect(row.$type).toBe(\"RECORD\");\n });\n});\n"],"names":["createMapper","container","Container","BaseTableRowMapper","WbReviewTableRowMapperDecorator","TableRowMapperAbstraction","createPage","reviewState","system","StepState","Page","WbPageStatus","CASES","ReviewState","describe","it","selectable","mapper","row","expect"],"mappings":";;;;;;;;;;AAcA,MAAMA,eAAe;IACjB,MAAMC,YAAY,IAAIC;IACtBD,UAAU,QAAQ,CAACE;IACnBF,UAAU,iBAAiB,CAACG;IAC5B,OAAOH,UAAU,OAAO,CAACI;AAC7B;AAEA,MAAMC,aAAa,CAACC;IAChB,MAAMC,SACFD,AAAgB,SAAhBA,cACM,OACA;QACI,UAAU;YACN,YAAY;YACZA;YACA,QAAQ;YACR,UAAU;YACV,WAAWE,UAAU,QAAQ;QACjC;IACJ;IAEV,OAAOC,KAAK,MAAM,CAAC;QACf,IAAI;QACJ,SAAS;QACT,QAAQC,aAAa,KAAK;QAC1BH;IACJ;AACJ;AAOA,MAAMI,QAA0B;IAC5B;QAAE,aAAa;QAAM,YAAY;IAAK;IACtC;QAAE,aAAaC,YAAY,QAAQ;QAAE,YAAY;IAAK;IACtD;QAAE,aAAaA,YAAY,UAAU;QAAE,YAAY;IAAM;IACzD;QAAE,aAAaA,YAAY,QAAQ;QAAE,YAAY;IAAM;IACvD;QAAE,aAAaA,YAAY,SAAS;QAAE,YAAY;IAAM;CAC3D;AAEDC,SAAS,mCAAmC;IACxCC,GAAG,IAAI,CAACH,OACJ,wDACA,CAAC,EAAEL,WAAW,EAAES,UAAU,EAAE;QACxB,MAAMC,SAASjB;QAEf,MAAMkB,MAAMD,OAAO,QAAQ,CAACX,WAAWC;QAEvCY,OAAOD,IAAI,WAAW,EAAE,IAAI,CAACF;IACjC;IAGJD,GAAG,yCAAyC;QACxC,MAAME,SAASjB;QAEf,MAAMkB,MAAMD,OAAO,QAAQ,CAACX,WAAWO,YAAY,UAAU;QAE7DM,OAAOD,IAAI,EAAE,EAAE,IAAI,CAAC;QACpBC,OAAOD,IAAI,KAAK,EAAE,IAAI,CAAC;IAC3B;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PageListWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { WbReviewListPagesFieldSelection } from "./WbReviewListPagesFieldSelection.js";
|
|
3
|
+
import { WbReviewTableRowMapperDecorator } from "./WbReviewTableRowMapperDecorator.js";
|
|
4
|
+
const PageListWorkflowsFeature = createFeature({
|
|
5
|
+
name: "PageListWorkflows",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(WbReviewListPagesFieldSelection);
|
|
8
|
+
container.registerDecorator(WbReviewTableRowMapperDecorator);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export { PageListWorkflowsFeature };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/PageList/feature.js","sources":["../../../../src/presentation/page/PageList/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WbReviewListPagesFieldSelection } from \"./WbReviewListPagesFieldSelection.js\";\nimport { WbReviewTableRowMapperDecorator } from \"./WbReviewTableRowMapperDecorator.js\";\n\nexport const PageListWorkflowsFeature = createFeature({\n name: \"PageListWorkflows\",\n register(container) {\n container.register(WbReviewListPagesFieldSelection);\n container.registerDecorator(WbReviewTableRowMapperDecorator);\n }\n});\n"],"names":["PageListWorkflowsFeature","createFeature","container","WbReviewListPagesFieldSelection","WbReviewTableRowMapperDecorator"],"mappings":";;;AAIO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,iBAAiB,CAACE;IAChC;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RevisionListPresenter } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
|
|
2
|
+
import type { IRevisionListPresenterInit } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
|
|
3
|
+
import type { IRevisionListVm } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
|
|
4
|
+
import { WbPageReview } from "../../../features/editorReview/abstractions.js";
|
|
5
|
+
declare class RevisionListPresenterWithWorkflows implements RevisionListPresenter.Interface {
|
|
6
|
+
private session;
|
|
7
|
+
private decoratee;
|
|
8
|
+
constructor(session: WbPageReview.Interface, decoratee: RevisionListPresenter.Interface);
|
|
9
|
+
get vm(): IRevisionListVm;
|
|
10
|
+
init(params: IRevisionListPresenterInit): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const RevisionListPresenterDecorator: typeof RevisionListPresenterWithWorkflows & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js").IRevisionListPresenter>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { makeAutoObservable } from "mobx";
|
|
2
|
+
import { RevisionListPresenter } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
|
|
3
|
+
import { WbPageReview } from "../../../features/editorReview/abstractions.js";
|
|
4
|
+
class RevisionListPresenterWithWorkflows {
|
|
5
|
+
constructor(session, decoratee){
|
|
6
|
+
this.session = session;
|
|
7
|
+
this.decoratee = decoratee;
|
|
8
|
+
makeAutoObservable(this, {
|
|
9
|
+
session: false,
|
|
10
|
+
decoratee: false
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
get vm() {
|
|
14
|
+
const vm = this.decoratee.vm;
|
|
15
|
+
const noWorkflow = "noWorkflow" === this.session.presenter.vm.status;
|
|
16
|
+
return {
|
|
17
|
+
...vm,
|
|
18
|
+
revisions: vm.revisions.map((item)=>({
|
|
19
|
+
...item,
|
|
20
|
+
canPublish: item.canPublish && noWorkflow
|
|
21
|
+
}))
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
init(params) {
|
|
25
|
+
this.decoratee.init(params);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const RevisionListPresenterDecorator = RevisionListPresenter.createDecorator({
|
|
29
|
+
decorator: RevisionListPresenterWithWorkflows,
|
|
30
|
+
dependencies: [
|
|
31
|
+
WbPageReview
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
export { RevisionListPresenterDecorator };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=RevisionListPresenterDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/RevisionList/RevisionListPresenterDecorator.js","sources":["../../../../src/presentation/page/RevisionList/RevisionListPresenterDecorator.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { RevisionListPresenter } from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\nimport type { IRevisionListPresenterInit } from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\nimport type { IRevisionListVm } from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\nimport { WbPageReview } from \"~/features/editorReview/abstractions.js\";\n\n/*\n * Publishing a revision straight from the editor's revisions drawer would bypass the review: the\n * drawer only offers Publish when the page's namespace has no workflow. While the review state\n * loads, fails or a workflow exists, the workflows Publish of the top bar is the only one, as with\n * `PageBasePublishDecorator`.\n */\nclass RevisionListPresenterWithWorkflows implements RevisionListPresenter.Interface {\n public constructor(\n private session: WbPageReview.Interface,\n private decoratee: RevisionListPresenter.Interface\n ) {\n makeAutoObservable<this, \"session\" | \"decoratee\">(this, {\n session: false,\n decoratee: false\n });\n }\n\n public get vm(): IRevisionListVm {\n const vm = this.decoratee.vm;\n const noWorkflow = this.session.presenter.vm.status === \"noWorkflow\";\n\n return {\n ...vm,\n revisions: vm.revisions.map(item => {\n return {\n ...item,\n canPublish: item.canPublish && noWorkflow\n };\n })\n };\n }\n\n public init(params: IRevisionListPresenterInit): void {\n this.decoratee.init(params);\n }\n}\n\nexport const RevisionListPresenterDecorator = RevisionListPresenter.createDecorator({\n decorator: RevisionListPresenterWithWorkflows,\n dependencies: [WbPageReview]\n});\n"],"names":["RevisionListPresenterWithWorkflows","session","decoratee","makeAutoObservable","vm","noWorkflow","item","params","RevisionListPresenterDecorator","RevisionListPresenter","WbPageReview"],"mappings":";;;AAYA,MAAMA;IACF,YACYC,OAA+B,EAC/BC,SAA0C,CACpD;aAFUD,OAAO,GAAPA;aACAC,SAAS,GAATA;QAERC,mBAAkD,IAAI,EAAE;YACpD,SAAS;YACT,WAAW;QACf;IACJ;IAEA,IAAW,KAAsB;QAC7B,MAAMC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE;QAC5B,MAAMC,aAAa,AAAqC,iBAArC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM;QAEnD,OAAO;YACH,GAAGD,EAAE;YACL,WAAWA,GAAG,SAAS,CAAC,GAAG,CAACE,CAAAA,OACjB;oBACH,GAAGA,IAAI;oBACP,YAAYA,KAAK,UAAU,IAAID;gBACnC;QAER;IACJ;IAEO,KAAKE,MAAkC,EAAQ;QAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA;IACxB;AACJ;AAEO,MAAMC,iCAAiCC,sBAAsB,eAAe,CAAC;IAChF,WAAWT;IACX,cAAc;QAACU;KAAa;AAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { RevisionListPresenter } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
|
|
4
|
+
import { WbPageReview } from "../../../features/editorReview/abstractions.js";
|
|
5
|
+
import { createFakeSession } from "../../../testing/createFakeSession.js";
|
|
6
|
+
import { RevisionListPresenterDecorator } from "./RevisionListPresenterDecorator.js";
|
|
7
|
+
import { RevisionListWorkflowsFeature } from "./feature.js";
|
|
8
|
+
const initCalls = [];
|
|
9
|
+
class FakeRevisionListPresenter {
|
|
10
|
+
get vm() {
|
|
11
|
+
return {
|
|
12
|
+
revisions: [
|
|
13
|
+
{
|
|
14
|
+
revision: {
|
|
15
|
+
id: "page-1#0001"
|
|
16
|
+
},
|
|
17
|
+
canCreateFrom: true,
|
|
18
|
+
canEdit: true,
|
|
19
|
+
canPublish: true,
|
|
20
|
+
canUnpublish: false,
|
|
21
|
+
canDelete: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
revision: {
|
|
25
|
+
id: "page-1#0002"
|
|
26
|
+
},
|
|
27
|
+
canCreateFrom: true,
|
|
28
|
+
canEdit: true,
|
|
29
|
+
canPublish: false,
|
|
30
|
+
canUnpublish: true,
|
|
31
|
+
canDelete: true
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
isLoading: false,
|
|
35
|
+
isMutating: false,
|
|
36
|
+
isEmpty: false
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
init(params) {
|
|
40
|
+
initCalls.push(params);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const FakePresenter = RevisionListPresenter.createImplementation({
|
|
44
|
+
implementation: FakeRevisionListPresenter,
|
|
45
|
+
dependencies: []
|
|
46
|
+
});
|
|
47
|
+
const registerDecorator = (container)=>{
|
|
48
|
+
container.registerDecorator(RevisionListPresenterDecorator);
|
|
49
|
+
};
|
|
50
|
+
const createPresenter = (kind, register = registerDecorator)=>{
|
|
51
|
+
const handle = createFakeSession(kind);
|
|
52
|
+
const container = new Container();
|
|
53
|
+
container.registerInstance(WbPageReview, handle.session);
|
|
54
|
+
container.register(FakePresenter).inSingletonScope();
|
|
55
|
+
register(container);
|
|
56
|
+
return {
|
|
57
|
+
...handle,
|
|
58
|
+
presenter: container.resolve(RevisionListPresenter)
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
describe("RevisionListPresenterDecorator", ()=>{
|
|
62
|
+
beforeEach(()=>{
|
|
63
|
+
initCalls.length = 0;
|
|
64
|
+
});
|
|
65
|
+
it("keeps the base Publish when the page's namespace has no workflow", ()=>{
|
|
66
|
+
const { presenter } = createPresenter("noWorkflow");
|
|
67
|
+
expect(presenter.vm.revisions.map((item)=>item.canPublish)).toEqual([
|
|
68
|
+
true,
|
|
69
|
+
false
|
|
70
|
+
]);
|
|
71
|
+
});
|
|
72
|
+
const hidden = [
|
|
73
|
+
"loading",
|
|
74
|
+
"failed",
|
|
75
|
+
"none",
|
|
76
|
+
"inProgress",
|
|
77
|
+
"approved",
|
|
78
|
+
"rejected"
|
|
79
|
+
];
|
|
80
|
+
it.each(hidden)("hides Publish while the review state is %s", (kind)=>{
|
|
81
|
+
const { presenter } = createPresenter(kind);
|
|
82
|
+
expect(presenter.vm.revisions.map((item)=>item.canPublish)).toEqual([
|
|
83
|
+
false,
|
|
84
|
+
false
|
|
85
|
+
]);
|
|
86
|
+
expect(presenter.vm.revisions.map((item)=>item.canUnpublish)).toEqual([
|
|
87
|
+
false,
|
|
88
|
+
true
|
|
89
|
+
]);
|
|
90
|
+
});
|
|
91
|
+
it("is registered by the revision list workflows feature", ()=>{
|
|
92
|
+
const { presenter } = createPresenter("none", (container)=>{
|
|
93
|
+
RevisionListWorkflowsFeature.register(container);
|
|
94
|
+
});
|
|
95
|
+
expect(presenter.vm.revisions.map((item)=>item.canPublish)).toEqual([
|
|
96
|
+
false,
|
|
97
|
+
false
|
|
98
|
+
]);
|
|
99
|
+
});
|
|
100
|
+
it("follows the review state as it changes", ()=>{
|
|
101
|
+
const { presenter, setKind } = createPresenter("loading");
|
|
102
|
+
expect(presenter.vm.revisions[0].canPublish).toBe(false);
|
|
103
|
+
setKind("noWorkflow");
|
|
104
|
+
expect(presenter.vm.revisions[0].canPublish).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
it("passes init to the base presenter", ()=>{
|
|
107
|
+
const { presenter } = createPresenter("noWorkflow");
|
|
108
|
+
presenter.init({
|
|
109
|
+
entryId: "page-1"
|
|
110
|
+
});
|
|
111
|
+
expect(initCalls).toEqual([
|
|
112
|
+
{
|
|
113
|
+
entryId: "page-1"
|
|
114
|
+
}
|
|
115
|
+
]);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=RevisionListPresenterDecorator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/RevisionList/RevisionListPresenterDecorator.test.js","sources":["../../../../src/presentation/page/RevisionList/RevisionListPresenterDecorator.test.ts"],"sourcesContent":["import { beforeEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { RevisionListPresenter } from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\nimport type { IRevisionListVm } from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\nimport type { PageRevision } from \"@webiny/app-website-builder/domain/PageRevision/index.js\";\nimport { WbPageReview } from \"~/features/editorReview/abstractions.js\";\nimport { createFakeSession } from \"~/testing/createFakeSession.js\";\nimport type { FakeReviewKind } from \"~/testing/createFakeVm.js\";\nimport { RevisionListPresenterDecorator } from \"./RevisionListPresenterDecorator.js\";\nimport { RevisionListWorkflowsFeature } from \"./feature.js\";\n\nconst initCalls: RevisionListPresenter.Init[] = [];\n\nclass FakeRevisionListPresenter implements RevisionListPresenter.Interface {\n public get vm(): IRevisionListVm {\n return {\n revisions: [\n {\n revision: { id: \"page-1#0001\" } as PageRevision,\n canCreateFrom: true,\n canEdit: true,\n canPublish: true,\n canUnpublish: false,\n canDelete: true\n },\n {\n revision: { id: \"page-1#0002\" } as PageRevision,\n canCreateFrom: true,\n canEdit: true,\n canPublish: false,\n canUnpublish: true,\n canDelete: true\n }\n ],\n isLoading: false,\n isMutating: false,\n isEmpty: false\n };\n }\n\n public init(params: RevisionListPresenter.Init): void {\n initCalls.push(params);\n }\n}\n\nconst FakePresenter = RevisionListPresenter.createImplementation({\n implementation: FakeRevisionListPresenter,\n dependencies: []\n});\n\nconst registerDecorator = (container: Container): void => {\n container.registerDecorator(RevisionListPresenterDecorator);\n};\n\nconst createPresenter = (\n kind: FakeReviewKind,\n register: (container: Container) => void = registerDecorator\n) => {\n const handle = createFakeSession(kind);\n const container = new Container();\n container.registerInstance(WbPageReview, handle.session);\n container.register(FakePresenter).inSingletonScope();\n register(container);\n return { ...handle, presenter: container.resolve(RevisionListPresenter) };\n};\n\ndescribe(\"RevisionListPresenterDecorator\", () => {\n beforeEach(() => {\n initCalls.length = 0;\n });\n\n it(\"keeps the base Publish when the page's namespace has no workflow\", () => {\n const { presenter } = createPresenter(\"noWorkflow\");\n\n expect(presenter.vm.revisions.map(item => item.canPublish)).toEqual([true, false]);\n });\n\n const hidden: FakeReviewKind[] = [\n \"loading\",\n \"failed\",\n \"none\",\n \"inProgress\",\n \"approved\",\n \"rejected\"\n ];\n it.each(hidden)(\"hides Publish while the review state is %s\", kind => {\n const { presenter } = createPresenter(kind);\n\n expect(presenter.vm.revisions.map(item => item.canPublish)).toEqual([false, false]);\n expect(presenter.vm.revisions.map(item => item.canUnpublish)).toEqual([false, true]);\n });\n\n it(\"is registered by the revision list workflows feature\", () => {\n const { presenter } = createPresenter(\"none\", container => {\n RevisionListWorkflowsFeature.register(container);\n });\n\n expect(presenter.vm.revisions.map(item => item.canPublish)).toEqual([false, false]);\n });\n\n it(\"follows the review state as it changes\", () => {\n const { presenter, setKind } = createPresenter(\"loading\");\n expect(presenter.vm.revisions[0].canPublish).toBe(false);\n\n setKind(\"noWorkflow\");\n\n expect(presenter.vm.revisions[0].canPublish).toBe(true);\n });\n\n it(\"passes init to the base presenter\", () => {\n const { presenter } = createPresenter(\"noWorkflow\");\n\n presenter.init({ entryId: \"page-1\" });\n\n expect(initCalls).toEqual([{ entryId: \"page-1\" }]);\n });\n});\n"],"names":["initCalls","FakeRevisionListPresenter","params","FakePresenter","RevisionListPresenter","registerDecorator","container","RevisionListPresenterDecorator","createPresenter","kind","register","handle","createFakeSession","Container","WbPageReview","describe","beforeEach","it","presenter","expect","item","hidden","RevisionListWorkflowsFeature","setKind"],"mappings":";;;;;;;AAcA,MAAMA,YAA0C,EAAE;AAElD,MAAMC;IACF,IAAW,KAAsB;QAC7B,OAAO;YACH,WAAW;gBACP;oBACI,UAAU;wBAAE,IAAI;oBAAc;oBAC9B,eAAe;oBACf,SAAS;oBACT,YAAY;oBACZ,cAAc;oBACd,WAAW;gBACf;gBACA;oBACI,UAAU;wBAAE,IAAI;oBAAc;oBAC9B,eAAe;oBACf,SAAS;oBACT,YAAY;oBACZ,cAAc;oBACd,WAAW;gBACf;aACH;YACD,WAAW;YACX,YAAY;YACZ,SAAS;QACb;IACJ;IAEO,KAAKC,MAAkC,EAAQ;QAClDF,UAAU,IAAI,CAACE;IACnB;AACJ;AAEA,MAAMC,gBAAgBC,sBAAsB,oBAAoB,CAAC;IAC7D,gBAAgBH;IAChB,cAAc,EAAE;AACpB;AAEA,MAAMI,oBAAoB,CAACC;IACvBA,UAAU,iBAAiB,CAACC;AAChC;AAEA,MAAMC,kBAAkB,CACpBC,MACAC,WAA2CL,iBAAiB;IAE5D,MAAMM,SAASC,kBAAkBH;IACjC,MAAMH,YAAY,IAAIO;IACtBP,UAAU,gBAAgB,CAACQ,cAAcH,OAAO,OAAO;IACvDL,UAAU,QAAQ,CAACH,eAAe,gBAAgB;IAClDO,SAASJ;IACT,OAAO;QAAE,GAAGK,MAAM;QAAE,WAAWL,UAAU,OAAO,CAACF;IAAuB;AAC5E;AAEAW,SAAS,kCAAkC;IACvCC,WAAW;QACPhB,UAAU,MAAM,GAAG;IACvB;IAEAiB,GAAG,oEAAoE;QACnE,MAAM,EAAEC,SAAS,EAAE,GAAGV,gBAAgB;QAEtCW,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAACE,CAAAA,OAAQA,KAAK,UAAU,GAAG,OAAO,CAAC;YAAC;YAAM;SAAM;IACrF;IAEA,MAAMC,SAA2B;QAC7B;QACA;QACA;QACA;QACA;QACA;KACH;IACDJ,GAAG,IAAI,CAACI,QAAQ,8CAA8CZ,CAAAA;QAC1D,MAAM,EAAES,SAAS,EAAE,GAAGV,gBAAgBC;QAEtCU,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAACE,CAAAA,OAAQA,KAAK,UAAU,GAAG,OAAO,CAAC;YAAC;YAAO;SAAM;QAClFD,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAACE,CAAAA,OAAQA,KAAK,YAAY,GAAG,OAAO,CAAC;YAAC;YAAO;SAAK;IACvF;IAEAH,GAAG,wDAAwD;QACvD,MAAM,EAAEC,SAAS,EAAE,GAAGV,gBAAgB,QAAQF,CAAAA;YAC1CgB,6BAA6B,QAAQ,CAAChB;QAC1C;QAEAa,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAACE,CAAAA,OAAQA,KAAK,UAAU,GAAG,OAAO,CAAC;YAAC;YAAO;SAAM;IACtF;IAEAH,GAAG,0CAA0C;QACzC,MAAM,EAAEC,SAAS,EAAEK,OAAO,EAAE,GAAGf,gBAAgB;QAC/CW,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;QAElDK,QAAQ;QAERJ,OAAOD,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;IACtD;IAEAD,GAAG,qCAAqC;QACpC,MAAM,EAAEC,SAAS,EAAE,GAAGV,gBAAgB;QAEtCU,UAAU,IAAI,CAAC;YAAE,SAAS;QAAS;QAEnCC,OAAOnB,WAAW,OAAO,CAAC;YAAC;gBAAE,SAAS;YAAS;SAAE;IACrD;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RevisionListWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { RevisionListPresenterDecorator } from "./RevisionListPresenterDecorator.js";
|
|
3
|
+
const RevisionListWorkflowsFeature = createFeature({
|
|
4
|
+
name: "RevisionListWorkflows",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.registerDecorator(RevisionListPresenterDecorator);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { RevisionListWorkflowsFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/RevisionList/feature.js","sources":["../../../../src/presentation/page/RevisionList/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { RevisionListPresenterDecorator } from \"./RevisionListPresenterDecorator.js\";\n\nexport const RevisionListWorkflowsFeature = createFeature({\n name: \"RevisionListWorkflows\",\n register(container) {\n container.registerDecorator(RevisionListPresenterDecorator);\n }\n});\n"],"names":["RevisionListWorkflowsFeature","createFeature","container","RevisionListPresenterDecorator"],"mappings":";;AAGO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,iBAAiB,CAACC;IAChC;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WB_REVIEW_PAGE_SELECTION = "system {\n workflow {\n workflowId reviewState stepId stepName stepState\n }\n}";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { REVIEW_SYSTEM_WORKFLOW_SELECTION } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
2
|
+
const WB_REVIEW_PAGE_SELECTION = `system {
|
|
3
|
+
workflow {
|
|
4
|
+
${REVIEW_SYSTEM_WORKFLOW_SELECTION}
|
|
5
|
+
}
|
|
6
|
+
}`;
|
|
7
|
+
export { WB_REVIEW_PAGE_SELECTION };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=wbReviewPageSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/page/wbReviewPageSelection.js","sources":["../../../src/presentation/page/wbReviewPageSelection.ts"],"sourcesContent":["import { REVIEW_SYSTEM_WORKFLOW_SELECTION } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const WB_REVIEW_PAGE_SELECTION = `system {\n workflow {\n ${REVIEW_SYSTEM_WORKFLOW_SELECTION}\n }\n}`;\n"],"names":["WB_REVIEW_PAGE_SELECTION","REVIEW_SYSTEM_WORKFLOW_SELECTION"],"mappings":";AAEO,MAAMA,2BAA2B,CAAC;;QAEjC,EAAEC,iCAAiC;;CAE1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { cleanup, render, screen, waitFor } from "@testing-library/react";
|
|
3
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { Container } from "@webiny/di";
|
|
5
|
+
import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/abstractions.js";
|
|
6
|
+
import { InternalPageEditorConfig, PageEditorConfig } from "@webiny/app-website-builder/presentation/pages/PageEditor/PageEditorConfig.js";
|
|
7
|
+
import { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
|
|
8
|
+
import { WbEditorHarness } from "./testing/WbEditorHarness.js";
|
|
9
|
+
import { createFakeSession } from "./testing/createFakeSession.js";
|
|
10
|
+
import { createPageEditor } from "./testing/createPageEditor.js";
|
|
11
|
+
import { registerPageContent } from "./testing/registerPageContent.js";
|
|
12
|
+
import { WebsiteBuilderWorkflows } from "./index.js";
|
|
13
|
+
const flags = vi.hoisted(()=>({
|
|
14
|
+
enabled: true
|
|
15
|
+
}));
|
|
16
|
+
vi.mock("@webiny/app-admin", async (importOriginal)=>{
|
|
17
|
+
const actual = await importOriginal();
|
|
18
|
+
return {
|
|
19
|
+
...actual,
|
|
20
|
+
useFeatureFlags: ()=>({
|
|
21
|
+
isEnabled: ()=>flags.enabled
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
vi.mock("~/Routes/index.js", ()=>({
|
|
26
|
+
WebsiteBuilderWorkflowsMenu: ()=>null
|
|
27
|
+
}));
|
|
28
|
+
vi.mock("~/Components/PagesList/index.js", ()=>({
|
|
29
|
+
PagesList: ()=>null
|
|
30
|
+
}));
|
|
31
|
+
vi.mock("~/Components/ContentReviews/WbContentReviews.js", ()=>({
|
|
32
|
+
WbContentReviews: ()=>null
|
|
33
|
+
}));
|
|
34
|
+
vi.mock("@webiny/icons/publish.svg", ()=>({
|
|
35
|
+
ReactComponent: ()=>null
|
|
36
|
+
}));
|
|
37
|
+
vi.mock("@webiny/app-website-builder/presentation/pages/PageEditor/TopBar/PublishButton.js", async ()=>{
|
|
38
|
+
const React = await import("react");
|
|
39
|
+
const PublishButton = ()=>React.createElement("button", {
|
|
40
|
+
"data-testid": "enabled-publish"
|
|
41
|
+
}, "Publish");
|
|
42
|
+
return {
|
|
43
|
+
PublishButton
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
vi.mock("@webiny/app-workflows/review/presentation/targetReview/components/ReviewTooltip.js", async ()=>{
|
|
47
|
+
const React = await import("react");
|
|
48
|
+
const ReviewTooltip = (props)=>{
|
|
49
|
+
const reason = props.presenter.vm.publishDisabledReason ?? "";
|
|
50
|
+
return React.createElement("span", {
|
|
51
|
+
"data-testid": "review-tooltip",
|
|
52
|
+
"data-reason": reason
|
|
53
|
+
}, props.children("tooltip-description"));
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
ReviewTooltip
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
vi.mock("@webiny/app-website-builder/presentation/security/HasPermission.js", async ()=>{
|
|
60
|
+
const React = await import("react");
|
|
61
|
+
const HasPermission = (props)=>React.createElement(React.Fragment, null, props.children);
|
|
62
|
+
return {
|
|
63
|
+
HasPermission
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
vi.mock("@webiny/app-website-builder/BaseEditor/config/Layout.js", async ()=>{
|
|
67
|
+
const React = await import("react");
|
|
68
|
+
const { makeDecoratable } = await import("@webiny/react-composition");
|
|
69
|
+
const Layout = makeDecoratable("EditorLayout", ()=>React.createElement("div", {
|
|
70
|
+
"data-testid": "base-layout"
|
|
71
|
+
}));
|
|
72
|
+
return {
|
|
73
|
+
Layout
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
77
|
+
const mountRoot = (enabled, kind = "inProgress")=>{
|
|
78
|
+
flags.enabled = enabled;
|
|
79
|
+
const handle = createFakeSession(kind);
|
|
80
|
+
const container = new Container();
|
|
81
|
+
container.registerInstance(TargetReviewPresenter, handle.presenter);
|
|
82
|
+
container.registerInstance(MainGraphQLClient, {
|
|
83
|
+
execute: vi.fn()
|
|
84
|
+
});
|
|
85
|
+
registerPageContent(container);
|
|
86
|
+
const editor = createPageEditor("draft");
|
|
87
|
+
render(/*#__PURE__*/ react.createElement(WbEditorHarness, {
|
|
88
|
+
container: container,
|
|
89
|
+
editor: editor,
|
|
90
|
+
groups: [
|
|
91
|
+
"left",
|
|
92
|
+
"actions"
|
|
93
|
+
]
|
|
94
|
+
}, /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflows, null), /*#__PURE__*/ react.createElement(Ui.Layout, null), /*#__PURE__*/ react.createElement(InternalPageEditorConfig, null, /*#__PURE__*/ react.createElement(Ui.TopBar.Action, {
|
|
95
|
+
name: "sentinel",
|
|
96
|
+
element: /*#__PURE__*/ react.createElement("span", {
|
|
97
|
+
"data-testid": "sentinel"
|
|
98
|
+
})
|
|
99
|
+
}), /*#__PURE__*/ react.createElement(Ui.IsNotReadOnly, null, /*#__PURE__*/ react.createElement(Ui.TopBar.Action, {
|
|
100
|
+
name: "buttonPublish",
|
|
101
|
+
element: /*#__PURE__*/ react.createElement("span", {
|
|
102
|
+
"data-testid": "base-publish"
|
|
103
|
+
})
|
|
104
|
+
})), /*#__PURE__*/ react.createElement(Ui.TopBar.Action, {
|
|
105
|
+
name: "buttonNewRevision",
|
|
106
|
+
element: /*#__PURE__*/ react.createElement("span", {
|
|
107
|
+
"data-testid": "new-revision"
|
|
108
|
+
})
|
|
109
|
+
}), /*#__PURE__*/ react.createElement(Ui.TopBar.Element, {
|
|
110
|
+
group: "left",
|
|
111
|
+
name: "autoSave",
|
|
112
|
+
element: /*#__PURE__*/ react.createElement("span", {
|
|
113
|
+
"data-testid": "autosave"
|
|
114
|
+
})
|
|
115
|
+
}))));
|
|
116
|
+
return handle;
|
|
117
|
+
};
|
|
118
|
+
describe("Website Builder publish and autosave rules from the composition root", ()=>{
|
|
119
|
+
afterEach(()=>{
|
|
120
|
+
cleanup();
|
|
121
|
+
});
|
|
122
|
+
it("flag on: a review in progress hides the base Publish, shows a disabled one and stops autosave", async ()=>{
|
|
123
|
+
mountRoot(true);
|
|
124
|
+
await screen.findByTestId("sentinel");
|
|
125
|
+
await waitFor(()=>{
|
|
126
|
+
expect(screen.queryAllByTestId("base-publish")).toHaveLength(0);
|
|
127
|
+
expect(screen.queryAllByTestId("autosave")).toHaveLength(0);
|
|
128
|
+
const disabled = document.querySelectorAll("button[aria-disabled='true']");
|
|
129
|
+
expect(disabled).toHaveLength(1);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
it("flag off: the base Publish and autosave are untouched and no workflows Publish exists", async ()=>{
|
|
133
|
+
mountRoot(false);
|
|
134
|
+
await screen.findByTestId("sentinel");
|
|
135
|
+
expect(screen.queryAllByTestId("base-publish")).toHaveLength(1);
|
|
136
|
+
expect(screen.queryAllByTestId("autosave")).toHaveLength(1);
|
|
137
|
+
expect(document.querySelectorAll("button[aria-disabled='true']")).toHaveLength(0);
|
|
138
|
+
expect(screen.queryAllByTestId("enabled-publish")).toHaveLength(0);
|
|
139
|
+
});
|
|
140
|
+
it("flag on: New Revision is hidden while a review is in progress", async ()=>{
|
|
141
|
+
mountRoot(true, "inProgress");
|
|
142
|
+
await screen.findByTestId("sentinel");
|
|
143
|
+
await waitFor(()=>{
|
|
144
|
+
expect(screen.queryAllByTestId("autosave")).toHaveLength(0);
|
|
145
|
+
});
|
|
146
|
+
expect(screen.queryAllByTestId("new-revision")).toHaveLength(0);
|
|
147
|
+
});
|
|
148
|
+
it("flag on: New Revision is shown for a rejected review", async ()=>{
|
|
149
|
+
mountRoot(true, "rejected");
|
|
150
|
+
await screen.findByTestId("sentinel");
|
|
151
|
+
await waitFor(()=>{
|
|
152
|
+
expect(screen.queryAllByTestId("new-revision")).toHaveLength(1);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
it("flag off: New Revision is untouched", async ()=>{
|
|
156
|
+
mountRoot(false, "inProgress");
|
|
157
|
+
await screen.findByTestId("sentinel");
|
|
158
|
+
expect(screen.queryAllByTestId("new-revision")).toHaveLength(1);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
//# sourceMappingURL=publishAutosave.wiring.test.js.map
|