@webiny/app-website-builder 6.1.0 → 6.2.0-beta.0
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/BaseEditor/config/EditorConfig.d.ts +6 -4
- package/BaseEditor/config/Elements.d.ts +2 -1
- package/BaseEditor/config/Elements.js +10 -6
- package/BaseEditor/config/Elements.js.map +1 -1
- package/BaseEditor/config/TopBar/Layout.d.ts +1 -0
- package/BaseEditor/config/TopBar/Layout.js +15 -2
- package/BaseEditor/config/TopBar/Layout.js.map +1 -1
- package/BaseEditor/config/TopBar/TopBar.d.ts +2 -1
- package/BaseEditor/config/TopBar/TopBar.js +3 -2
- package/BaseEditor/config/TopBar/TopBar.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/Border.d.ts +4 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/Border.js +22 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/Border.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +8 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.js +51 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +8 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.js +138 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +8 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.js +60 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +8 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.js +138 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/LinkedEditing.d.ts +7 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/LinkedEditing.js +28 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/LinkedEditing.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border.d.ts +6 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border.js +20 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js +3 -0
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js.map +1 -1
- package/Extension.js +51 -1
- package/Extension.js.map +1 -1
- package/ecommerce/EcommerceIntegration.d.ts +8 -3
- package/ecommerce/EcommerceIntegration.js +33 -14
- package/ecommerce/EcommerceIntegration.js.map +1 -1
- package/ecommerce/components/ResourcePage.d.ts +24 -3
- package/ecommerce/components/ResourcePage.js +66 -73
- package/ecommerce/components/ResourcePage.js.map +1 -1
- package/exports/admin/website-builder.d.ts +3 -0
- package/exports/admin/website-builder.js +3 -0
- package/exports/admin/website-builder.js.map +1 -1
- package/features/ecommerce/apis/EcommerceApiProvider.d.ts +2 -2
- package/features/ecommerce/apis/EcommerceApiProvider.js +2 -0
- package/features/ecommerce/apis/EcommerceApiProvider.js.map +1 -1
- package/features/ecommerce/apis/index.d.ts +2 -0
- package/features/ecommerce/apis/index.js +1 -0
- package/features/ecommerce/apis/index.js.map +1 -1
- package/features/index.d.ts +2 -2
- package/features/index.js +1 -2
- package/features/index.js.map +1 -1
- package/features/pages/createPage/CreatePage.test.js +11 -2
- package/features/pages/createPage/CreatePage.test.js.map +1 -1
- package/features/pages/createPage/CreatePageGateway.d.ts +13 -0
- package/features/pages/createPage/CreatePageGateway.js +45 -0
- package/features/pages/createPage/CreatePageGateway.js.map +1 -0
- package/features/pages/createPage/CreatePageRepository.d.ts +9 -5
- package/features/pages/createPage/CreatePageRepository.js +8 -2
- package/features/pages/createPage/CreatePageRepository.js.map +1 -1
- package/features/pages/createPage/CreatePageUseCase.d.ts +9 -6
- package/features/pages/createPage/CreatePageUseCase.js +7 -2
- package/features/pages/createPage/CreatePageUseCase.js.map +1 -1
- package/features/pages/createPage/CreatePageUseCaseWithLoading.d.ts +10 -6
- package/features/pages/createPage/CreatePageUseCaseWithLoading.js +10 -4
- package/features/pages/createPage/CreatePageUseCaseWithLoading.js.map +1 -1
- package/features/pages/createPage/abstractions.d.ts +34 -0
- package/features/pages/createPage/abstractions.js +6 -0
- package/features/pages/createPage/abstractions.js.map +1 -0
- package/features/pages/createPage/feature.d.ts +3 -0
- package/features/pages/createPage/feature.js +22 -0
- package/features/pages/createPage/feature.js.map +1 -0
- package/features/pages/createPage/index.d.ts +2 -1
- package/features/pages/createPage/index.js +1 -1
- package/features/pages/createPage/index.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js +17 -3
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGateway.d.ts +12 -0
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGateway.js +43 -0
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGateway.js.map +1 -0
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.d.ts +9 -5
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js +8 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +9 -6
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCase.js +7 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCaseWithLoading.d.ts +10 -7
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCaseWithLoading.js +10 -4
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromUseCaseWithLoading.js.map +1 -1
- package/features/pages/createPageRevisionFrom/abstractions.d.ts +27 -0
- package/features/pages/createPageRevisionFrom/abstractions.js +6 -0
- package/features/pages/createPageRevisionFrom/abstractions.js.map +1 -0
- package/features/pages/createPageRevisionFrom/feature.d.ts +3 -0
- package/features/pages/createPageRevisionFrom/feature.js +22 -0
- package/features/pages/createPageRevisionFrom/feature.js.map +1 -0
- package/features/pages/createPageRevisionFrom/index.d.ts +2 -1
- package/features/pages/createPageRevisionFrom/index.js +1 -1
- package/features/pages/createPageRevisionFrom/index.js.map +1 -1
- package/features/pages/deletePage/DeletePage.test.js +13 -2
- package/features/pages/deletePage/DeletePage.test.js.map +1 -1
- package/features/pages/deletePage/DeletePageGateway.d.ts +11 -0
- package/features/pages/deletePage/DeletePageGateway.js +40 -0
- package/features/pages/deletePage/DeletePageGateway.js.map +1 -0
- package/features/pages/deletePage/DeletePageRepository.d.ts +9 -7
- package/features/pages/deletePage/DeletePageRepository.js +7 -1
- package/features/pages/deletePage/DeletePageRepository.js.map +1 -1
- package/features/pages/deletePage/DeletePageUseCase.d.ts +8 -5
- package/features/pages/deletePage/DeletePageUseCase.js +7 -2
- package/features/pages/deletePage/DeletePageUseCase.js.map +1 -1
- package/features/pages/deletePage/DeletePageUseCaseWithLoading.d.ts +10 -7
- package/features/pages/deletePage/DeletePageUseCaseWithLoading.js +10 -4
- package/features/pages/deletePage/DeletePageUseCaseWithLoading.js.map +1 -1
- package/features/pages/deletePage/abstractions.d.ts +27 -0
- package/features/pages/deletePage/abstractions.js +25 -0
- package/features/pages/deletePage/abstractions.js.map +1 -0
- package/features/pages/deletePage/feature.d.ts +3 -0
- package/features/pages/deletePage/feature.js +22 -0
- package/features/pages/deletePage/feature.js.map +1 -0
- package/features/pages/deletePage/index.d.ts +2 -1
- package/features/pages/deletePage/index.js +1 -1
- package/features/pages/deletePage/index.js.map +1 -1
- package/features/pages/duplicatePage/DuplicatePage.test.js +13 -2
- package/features/pages/duplicatePage/DuplicatePage.test.js.map +1 -1
- package/features/pages/duplicatePage/DuplicatePageGateway.d.ts +12 -0
- package/features/pages/duplicatePage/DuplicatePageGateway.js +43 -0
- package/features/pages/duplicatePage/DuplicatePageGateway.js.map +1 -0
- package/features/pages/duplicatePage/DuplicatePageRepository.d.ts +9 -6
- package/features/pages/duplicatePage/DuplicatePageRepository.js +8 -2
- package/features/pages/duplicatePage/DuplicatePageRepository.js.map +1 -1
- package/features/pages/duplicatePage/DuplicatePageUseCase.d.ts +8 -5
- package/features/pages/duplicatePage/DuplicatePageUseCase.js +7 -2
- package/features/pages/duplicatePage/DuplicatePageUseCase.js.map +1 -1
- package/features/pages/duplicatePage/DuplicatePageUseCaseWithLoading.d.ts +10 -7
- package/features/pages/duplicatePage/DuplicatePageUseCaseWithLoading.js +10 -4
- package/features/pages/duplicatePage/DuplicatePageUseCaseWithLoading.js.map +1 -1
- package/features/pages/duplicatePage/abstractions.d.ts +27 -0
- package/features/pages/duplicatePage/abstractions.js +6 -0
- package/features/pages/duplicatePage/abstractions.js.map +1 -0
- package/features/pages/duplicatePage/feature.d.ts +3 -0
- package/features/pages/duplicatePage/feature.js +22 -0
- package/features/pages/duplicatePage/feature.js.map +1 -0
- package/features/pages/duplicatePage/index.d.ts +2 -1
- package/features/pages/duplicatePage/index.js +1 -1
- package/features/pages/duplicatePage/index.js.map +1 -1
- package/features/pages/getPage/GetPage.test.js +27 -8
- package/features/pages/getPage/GetPage.test.js.map +1 -1
- package/features/pages/getPage/GetPageGateway.d.ts +14 -0
- package/features/pages/getPage/GetPageGateway.js +54 -0
- package/features/pages/getPage/GetPageGateway.js.map +1 -0
- package/features/pages/getPage/GetPageRepository.d.ts +9 -5
- package/features/pages/getPage/GetPageRepository.js +8 -2
- package/features/pages/getPage/GetPageRepository.js.map +1 -1
- package/features/pages/getPage/GetPageUseCase.d.ts +8 -5
- package/features/pages/getPage/GetPageUseCase.js +6 -1
- package/features/pages/getPage/GetPageUseCase.js.map +1 -1
- package/features/pages/getPage/GetPageUseCaseWithLoading.d.ts +10 -6
- package/features/pages/getPage/GetPageUseCaseWithLoading.js +10 -4
- package/features/pages/getPage/GetPageUseCaseWithLoading.js.map +1 -1
- package/features/pages/getPage/abstractions.d.ts +27 -0
- package/features/pages/getPage/abstractions.js +17 -0
- package/features/pages/getPage/abstractions.js.map +1 -1
- package/features/pages/getPage/feature.d.ts +3 -0
- package/features/pages/getPage/feature.js +22 -0
- package/features/pages/getPage/feature.js.map +1 -0
- package/features/pages/getPage/index.d.ts +4 -1
- package/features/pages/getPage/index.js +2 -1
- package/features/pages/getPage/index.js.map +1 -1
- package/features/pages/getPageRevisions/GetPageRevisionsGateway.d.ts +12 -0
- package/features/pages/getPageRevisions/{GetPageRevisionsGqlGateway.js → GetPageRevisionsGateway.js} +15 -19
- package/features/pages/getPageRevisions/GetPageRevisionsGateway.js.map +1 -0
- package/features/pages/getPageRevisions/GetPageRevisionsRepository.d.ts +9 -5
- package/features/pages/getPageRevisions/GetPageRevisionsRepository.js +8 -2
- package/features/pages/getPageRevisions/GetPageRevisionsRepository.js.map +1 -1
- package/features/pages/getPageRevisions/GetPageRevisionsUseCase.d.ts +8 -5
- package/features/pages/getPageRevisions/GetPageRevisionsUseCase.js +6 -1
- package/features/pages/getPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
- package/features/pages/getPageRevisions/GetPageRevisionsUseCaseWithLoading.d.ts +10 -6
- package/features/pages/getPageRevisions/GetPageRevisionsUseCaseWithLoading.js +10 -4
- package/features/pages/getPageRevisions/GetPageRevisionsUseCaseWithLoading.js.map +1 -1
- package/features/pages/getPageRevisions/abstractions.d.ts +27 -0
- package/features/pages/getPageRevisions/abstractions.js +6 -0
- package/features/pages/getPageRevisions/abstractions.js.map +1 -0
- package/features/pages/getPageRevisions/feature.d.ts +4 -0
- package/features/pages/getPageRevisions/feature.js +24 -0
- package/features/pages/getPageRevisions/feature.js.map +1 -0
- package/features/pages/getPageRevisions/index.d.ts +2 -1
- package/features/pages/getPageRevisions/index.js +1 -1
- package/features/pages/getPageRevisions/index.js.map +1 -1
- package/features/pages/index.d.ts +15 -0
- package/features/pages/index.js +15 -0
- package/features/pages/index.js.map +1 -1
- package/features/pages/loadPages/FilterPagesUseCase.d.ts +8 -5
- package/features/pages/loadPages/FilterPagesUseCase.js +6 -3
- package/features/pages/loadPages/FilterPagesUseCase.js.map +1 -1
- package/features/pages/loadPages/ListPagesGateway.d.ts +18 -0
- package/features/pages/loadPages/ListPagesGateway.js +67 -0
- package/features/pages/loadPages/ListPagesGateway.js.map +1 -0
- package/features/pages/loadPages/ListPagesRepository.d.ts +9 -9
- package/features/pages/loadPages/ListPagesRepository.js +10 -4
- package/features/pages/loadPages/ListPagesRepository.js.map +1 -1
- package/features/pages/loadPages/LoadMorePagesUseCase.d.ts +7 -4
- package/features/pages/loadPages/LoadMorePagesUseCase.js +6 -1
- package/features/pages/loadPages/LoadMorePagesUseCase.js.map +1 -1
- package/features/pages/loadPages/LoadPagesUseCase.d.ts +8 -5
- package/features/pages/loadPages/LoadPagesUseCase.js +8 -4
- package/features/pages/loadPages/LoadPagesUseCase.js.map +1 -1
- package/features/pages/loadPages/SearchPagesUseCase.d.ts +8 -5
- package/features/pages/loadPages/SearchPagesUseCase.js +6 -1
- package/features/pages/loadPages/SearchPagesUseCase.js.map +1 -1
- package/features/pages/loadPages/SortPagesUseCase.d.ts +8 -5
- package/features/pages/loadPages/SortPagesUseCase.js +6 -1
- package/features/pages/loadPages/SortPagesUseCase.js.map +1 -1
- package/features/pages/loadPages/abstractions.d.ts +90 -0
- package/features/pages/loadPages/abstractions.js +31 -0
- package/features/pages/loadPages/abstractions.js.map +1 -1
- package/features/pages/loadPages/feature.d.ts +7 -0
- package/features/pages/loadPages/feature.js +32 -0
- package/features/pages/loadPages/feature.js.map +1 -0
- package/features/pages/loadPages/index.d.ts +4 -5
- package/features/pages/loadPages/index.js +2 -5
- package/features/pages/loadPages/index.js.map +1 -1
- package/features/pages/movePage/MovePage.test.js +11 -2
- package/features/pages/movePage/MovePage.test.js.map +1 -1
- package/features/pages/movePage/MovePageGateway.d.ts +11 -0
- package/features/pages/movePage/MovePageGateway.js +40 -0
- package/features/pages/movePage/MovePageGateway.js.map +1 -0
- package/features/pages/movePage/MovePageRepository.d.ts +8 -5
- package/features/pages/movePage/MovePageRepository.js +8 -2
- package/features/pages/movePage/MovePageRepository.js.map +1 -1
- package/features/pages/movePage/MovePageUseCase.d.ts +8 -5
- package/features/pages/movePage/MovePageUseCase.js +6 -1
- package/features/pages/movePage/MovePageUseCase.js.map +1 -1
- package/features/pages/movePage/MovePageUseCaseWithLoading.d.ts +10 -7
- package/features/pages/movePage/MovePageUseCaseWithLoading.js +10 -4
- package/features/pages/movePage/MovePageUseCaseWithLoading.js.map +1 -1
- package/features/pages/movePage/abstractions.d.ts +26 -0
- package/features/pages/movePage/abstractions.js +25 -0
- package/features/pages/movePage/abstractions.js.map +1 -0
- package/features/pages/movePage/feature.d.ts +3 -0
- package/features/pages/movePage/feature.js +22 -0
- package/features/pages/movePage/feature.js.map +1 -0
- package/features/pages/movePage/index.d.ts +2 -1
- package/features/pages/movePage/index.js +1 -1
- package/features/pages/movePage/index.js.map +1 -1
- package/features/pages/publishPage/PublishPage.test.js +20 -4
- package/features/pages/publishPage/PublishPage.test.js.map +1 -1
- package/features/pages/publishPage/PublishPageGateway.d.ts +12 -0
- package/features/pages/publishPage/PublishPageGateway.js +43 -0
- package/features/pages/publishPage/PublishPageGateway.js.map +1 -0
- package/features/pages/publishPage/PublishPageRepository.d.ts +9 -5
- package/features/pages/publishPage/PublishPageRepository.js +9 -3
- package/features/pages/publishPage/PublishPageRepository.js.map +1 -1
- package/features/pages/publishPage/PublishPageUseCase.d.ts +8 -5
- package/features/pages/publishPage/PublishPageUseCase.js +7 -2
- package/features/pages/publishPage/PublishPageUseCase.js.map +1 -1
- package/features/pages/publishPage/PublishPageUseCaseWithLoading.d.ts +10 -7
- package/features/pages/publishPage/PublishPageUseCaseWithLoading.js +10 -4
- package/features/pages/publishPage/PublishPageUseCaseWithLoading.js.map +1 -1
- package/features/pages/publishPage/abstractions.d.ts +27 -0
- package/features/pages/publishPage/abstractions.js +6 -0
- package/features/pages/publishPage/abstractions.js.map +1 -0
- package/features/pages/publishPage/feature.d.ts +3 -0
- package/features/pages/publishPage/feature.js +22 -0
- package/features/pages/publishPage/feature.js.map +1 -0
- package/features/pages/publishPage/index.d.ts +2 -1
- package/features/pages/publishPage/index.js +1 -1
- package/features/pages/publishPage/index.js.map +1 -1
- package/features/pages/selectPages/SelectPagesUseCase.d.ts +9 -5
- package/features/pages/selectPages/SelectPagesUseCase.js +7 -1
- package/features/pages/selectPages/SelectPagesUseCase.js.map +1 -1
- package/features/pages/selectPages/abstractions.d.ts +7 -0
- package/features/pages/selectPages/abstractions.js +9 -0
- package/features/pages/selectPages/abstractions.js.map +1 -0
- package/features/pages/selectPages/feature.d.ts +3 -0
- package/features/pages/selectPages/feature.js +16 -0
- package/features/pages/selectPages/feature.js.map +1 -0
- package/features/pages/selectPages/index.d.ts +1 -4
- package/features/pages/selectPages/index.js +1 -3
- package/features/pages/selectPages/index.js.map +1 -1
- package/features/pages/selectPages/useSelectPages.d.ts +1 -3
- package/features/pages/selectPages/useSelectPages.js +2 -11
- package/features/pages/selectPages/useSelectPages.js.map +1 -1
- package/features/pages/shared/abstractions.d.ts +53 -0
- package/features/pages/shared/abstractions.js +23 -0
- package/features/pages/shared/abstractions.js.map +1 -0
- package/features/pages/shared/feature.d.ts +1 -0
- package/features/pages/shared/feature.js +61 -0
- package/features/pages/shared/feature.js.map +1 -0
- package/features/pages/shared/index.d.ts +3 -0
- package/features/pages/shared/index.js +5 -0
- package/features/pages/shared/index.js.map +1 -0
- package/features/pages/shared/pageGraphQLFields.d.ts +2 -0
- package/features/pages/shared/pageGraphQLFields.js +22 -0
- package/features/pages/shared/pageGraphQLFields.js.map +1 -0
- package/features/pages/translatePage/TranslatePageGateway.d.ts +11 -0
- package/features/pages/translatePage/TranslatePageGateway.js +46 -0
- package/features/pages/translatePage/TranslatePageGateway.js.map +1 -0
- package/features/pages/translatePage/TranslatePageRepository.d.ts +10 -0
- package/features/pages/translatePage/TranslatePageRepository.js +19 -0
- package/features/pages/translatePage/TranslatePageRepository.js.map +1 -0
- package/features/pages/translatePage/TranslatePageUseCase.d.ts +10 -0
- package/features/pages/translatePage/TranslatePageUseCase.js +19 -0
- package/features/pages/translatePage/TranslatePageUseCase.js.map +1 -0
- package/features/pages/translatePage/abstractions.d.ts +44 -0
- package/features/pages/translatePage/abstractions.js +25 -0
- package/features/pages/translatePage/abstractions.js.map +1 -0
- package/features/pages/translatePage/feature.d.ts +3 -0
- package/features/pages/translatePage/feature.js +20 -0
- package/features/pages/translatePage/feature.js.map +1 -0
- package/features/pages/translatePage/index.d.ts +2 -0
- package/features/pages/translatePage/index.js +3 -0
- package/features/pages/translatePage/index.js.map +1 -0
- package/features/pages/unpublishPage/UnpublishPage.test.js +24 -6
- package/features/pages/unpublishPage/UnpublishPage.test.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPageGateway.d.ts +12 -0
- package/features/pages/unpublishPage/UnpublishPageGateway.js +43 -0
- package/features/pages/unpublishPage/UnpublishPageGateway.js.map +1 -0
- package/features/pages/unpublishPage/UnpublishPageRepository.d.ts +11 -7
- package/features/pages/unpublishPage/UnpublishPageRepository.js +9 -3
- package/features/pages/unpublishPage/UnpublishPageRepository.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPageUseCase.d.ts +8 -5
- package/features/pages/unpublishPage/UnpublishPageUseCase.js +7 -2
- package/features/pages/unpublishPage/UnpublishPageUseCase.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPageUseCaseWithLoading.d.ts +10 -6
- package/features/pages/unpublishPage/UnpublishPageUseCaseWithLoading.js +10 -4
- package/features/pages/unpublishPage/UnpublishPageUseCaseWithLoading.js.map +1 -1
- package/features/pages/unpublishPage/abstractions.d.ts +27 -0
- package/features/pages/unpublishPage/abstractions.js +6 -0
- package/features/pages/unpublishPage/abstractions.js.map +1 -0
- package/features/pages/unpublishPage/feature.d.ts +3 -0
- package/features/pages/unpublishPage/feature.js +22 -0
- package/features/pages/unpublishPage/feature.js.map +1 -0
- package/features/pages/unpublishPage/index.d.ts +2 -1
- package/features/pages/unpublishPage/index.js +1 -1
- package/features/pages/unpublishPage/index.js.map +1 -1
- package/features/pages/updatePage/UpdatePage.test.js +65 -5
- package/features/pages/updatePage/UpdatePage.test.js.map +1 -1
- package/features/pages/updatePage/UpdatePageGateway.d.ts +13 -0
- package/features/pages/updatePage/UpdatePageGateway.js +58 -0
- package/features/pages/updatePage/UpdatePageGateway.js.map +1 -0
- package/features/pages/updatePage/UpdatePageRepository.d.ts +10 -6
- package/features/pages/updatePage/UpdatePageRepository.js +9 -3
- package/features/pages/updatePage/UpdatePageRepository.js.map +1 -1
- package/features/pages/updatePage/UpdatePageUseCase.d.ts +8 -6
- package/features/pages/updatePage/UpdatePageUseCase.js +7 -2
- package/features/pages/updatePage/UpdatePageUseCase.js.map +1 -1
- package/features/pages/updatePage/UpdatePageUseCaseWithLoading.d.ts +10 -7
- package/features/pages/updatePage/UpdatePageUseCaseWithLoading.js +10 -4
- package/features/pages/updatePage/UpdatePageUseCaseWithLoading.js.map +1 -1
- package/features/pages/updatePage/abstractions.d.ts +33 -0
- package/features/pages/updatePage/abstractions.js +6 -0
- package/features/pages/updatePage/abstractions.js.map +1 -0
- package/features/pages/updatePage/feature.d.ts +3 -0
- package/features/pages/updatePage/feature.js +22 -0
- package/features/pages/updatePage/feature.js.map +1 -0
- package/features/pages/updatePage/index.d.ts +2 -1
- package/features/pages/updatePage/index.js +1 -1
- package/features/pages/updatePage/index.js.map +1 -1
- package/features/permissions/abstractions.d.ts +17 -0
- package/features/permissions/abstractions.js +5 -0
- package/features/permissions/abstractions.js.map +1 -0
- package/features/permissions/feature.d.ts +14 -0
- package/features/permissions/feature.js +6 -0
- package/features/permissions/feature.js.map +1 -0
- package/modules/pages/PageEditor/DefaultPageEditorConfig.js +4 -0
- package/modules/pages/PageEditor/DefaultPageEditorConfig.js.map +1 -1
- package/modules/pages/PageEditor/PageEditorConfig.d.ts +6 -4
- package/modules/pages/PageEditor/TopBar/SettingsButton.js +1 -1
- package/modules/pages/PageEditor/TopBar/SettingsButton.js.map +1 -1
- package/modules/pages/PageEditor/TopBar/Title.js +10 -4
- package/modules/pages/PageEditor/TopBar/Title.js.map +1 -1
- package/modules/pages/PagesList/components/Main/Main.js +12 -8
- package/modules/pages/PagesList/components/Main/Main.js.map +1 -1
- package/modules/pages/PagesList/components/Table/Cells/CellActions.js +3 -0
- package/modules/pages/PagesList/components/Table/Cells/CellActions.js.map +1 -1
- package/modules/pages/PagesList/components/Table/Cells/CellName.js +4 -0
- package/modules/pages/PagesList/components/Table/Cells/CellName.js.map +1 -1
- package/modules/pages/PagesListConfig.js +17 -15
- package/modules/pages/PagesListConfig.js.map +1 -1
- package/modules/pages/configs/list/PageListConfig.d.ts +0 -2
- package/modules/pages/configs/list/PageListConfig.js +2 -5
- package/modules/pages/configs/list/PageListConfig.js.map +1 -1
- package/modules/redirects/RedirectsListConfig.js +2 -1
- package/modules/redirects/RedirectsListConfig.js.map +1 -1
- package/package.json +35 -33
- package/presentation/components/LanguageCodeTag.d.ts +6 -0
- package/presentation/components/LanguageCodeTag.js +20 -0
- package/presentation/components/LanguageCodeTag.js.map +1 -0
- package/presentation/components/LanguageSelector.d.ts +8 -0
- package/presentation/components/LanguageSelector.js +27 -0
- package/presentation/components/LanguageSelector.js.map +1 -0
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.d.ts +2 -2
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js +2 -2
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js.map +1 -1
- package/presentation/pages/CreatePage/AddLanguageModifier.d.ts +24 -0
- package/presentation/pages/CreatePage/AddLanguageModifier.js +117 -0
- package/presentation/pages/CreatePage/AddLanguageModifier.js.map +1 -0
- package/presentation/pages/CreatePage/CreatePage.test.d.ts +1 -0
- package/presentation/pages/CreatePage/CreatePage.test.js +321 -0
- package/presentation/pages/CreatePage/CreatePage.test.js.map +1 -0
- package/presentation/pages/CreatePage/CreatePageConfig.d.ts +2 -0
- package/presentation/pages/CreatePage/CreatePageConfig.js +11 -0
- package/presentation/pages/CreatePage/CreatePageConfig.js.map +1 -0
- package/presentation/pages/CreatePage/CreatePageDialog.d.ts +6 -0
- package/presentation/pages/CreatePage/CreatePageDialog.js +72 -0
- package/presentation/pages/CreatePage/CreatePageDialog.js.map +1 -0
- package/presentation/pages/CreatePage/CreatePagePresenter.d.ts +23 -0
- package/presentation/pages/CreatePage/CreatePagePresenter.js +134 -0
- package/presentation/pages/CreatePage/CreatePagePresenter.js.map +1 -0
- package/presentation/pages/CreatePage/PageTypeProvider.d.ts +34 -0
- package/presentation/pages/CreatePage/PageTypeProvider.js +48 -0
- package/presentation/pages/CreatePage/PageTypeProvider.js.map +1 -0
- package/presentation/pages/CreatePage/StaticPageType.d.ts +9 -0
- package/presentation/pages/CreatePage/StaticPageType.js +11 -0
- package/presentation/pages/CreatePage/StaticPageType.js.map +1 -0
- package/presentation/pages/CreatePage/WithLanguageSelector.d.ts +7 -0
- package/presentation/pages/CreatePage/WithLanguageSelector.js +55 -0
- package/presentation/pages/CreatePage/WithLanguageSelector.js.map +1 -0
- package/presentation/pages/CreatePage/abstractions.d.ts +51 -0
- package/presentation/pages/CreatePage/abstractions.js +27 -0
- package/presentation/pages/CreatePage/abstractions.js.map +1 -0
- package/presentation/pages/CreatePage/createPageSchema.d.ts +4 -0
- package/presentation/pages/CreatePage/createPageSchema.js +6 -0
- package/presentation/pages/CreatePage/createPageSchema.js.map +1 -0
- package/presentation/pages/CreatePage/feature.d.ts +3 -0
- package/presentation/pages/CreatePage/feature.js +28 -0
- package/presentation/pages/CreatePage/feature.js.map +1 -0
- package/presentation/pages/CreatePage/index.d.ts +6 -0
- package/presentation/pages/CreatePage/index.js +7 -0
- package/presentation/pages/CreatePage/index.js.map +1 -0
- package/presentation/pages/TranslatePage/TranslatePageAction.d.ts +2 -0
- package/presentation/pages/TranslatePage/TranslatePageAction.js +29 -0
- package/presentation/pages/TranslatePage/TranslatePageAction.js.map +1 -0
- package/presentation/pages/TranslatePage/TranslatePageConfig.d.ts +2 -0
- package/presentation/pages/TranslatePage/TranslatePageConfig.js +23 -0
- package/presentation/pages/TranslatePage/TranslatePageConfig.js.map +1 -0
- package/presentation/pages/TranslatePage/TranslatePageDialog.d.ts +3 -0
- package/presentation/pages/TranslatePage/TranslatePageDialog.js +86 -0
- package/presentation/pages/TranslatePage/TranslatePageDialog.js.map +1 -0
- package/presentation/pages/TranslatePage/translatePageSchema.d.ts +6 -0
- package/presentation/pages/TranslatePage/translatePageSchema.js +8 -0
- package/presentation/pages/TranslatePage/translatePageSchema.js.map +1 -0
- package/presentation/pages/hooks/useCreatePage.d.ts +4 -0
- package/presentation/pages/hooks/useCreatePage.js +16 -0
- package/presentation/pages/hooks/useCreatePage.js.map +1 -0
- package/{features/pages/createPageRevisionFrom → presentation/pages/hooks}/useCreatePageRevisionFrom.d.ts +1 -1
- package/presentation/pages/hooks/useCreatePageRevisionFrom.js +16 -0
- package/presentation/pages/hooks/useCreatePageRevisionFrom.js.map +1 -0
- package/{features/pages/deletePage → presentation/pages/hooks}/useDeletePage.d.ts +1 -1
- package/presentation/pages/hooks/useDeletePage.js +16 -0
- package/presentation/pages/hooks/useDeletePage.js.map +1 -0
- package/{features/pages/duplicatePage → presentation/pages/hooks}/useDuplicatePage.d.ts +1 -1
- package/presentation/pages/hooks/useDuplicatePage.js +16 -0
- package/presentation/pages/hooks/useDuplicatePage.js.map +1 -0
- package/{features/pages/loadPages → presentation/pages/hooks}/useFilterPages.js +7 -6
- package/presentation/pages/hooks/useFilterPages.js.map +1 -0
- package/{features/pages/getPage → presentation/pages/hooks}/useGetPage.d.ts +1 -1
- package/presentation/pages/hooks/useGetPage.js +16 -0
- package/presentation/pages/hooks/useGetPage.js.map +1 -0
- package/presentation/pages/hooks/useGetPageRevisions.d.ts +5 -0
- package/presentation/pages/hooks/useGetPageRevisions.js +18 -0
- package/presentation/pages/hooks/useGetPageRevisions.js.map +1 -0
- package/presentation/pages/hooks/useLoadMorePages.js +16 -0
- package/presentation/pages/hooks/useLoadMorePages.js.map +1 -0
- package/{features/pages/loadPages → presentation/pages/hooks}/useLoadPages.d.ts +1 -1
- package/presentation/pages/hooks/useLoadPages.js +16 -0
- package/presentation/pages/hooks/useLoadPages.js.map +1 -0
- package/{features/pages/movePage → presentation/pages/hooks}/useMovePage.d.ts +1 -1
- package/presentation/pages/hooks/useMovePage.js +16 -0
- package/presentation/pages/hooks/useMovePage.js.map +1 -0
- package/{features/pages/publishPage → presentation/pages/hooks}/usePublishPage.d.ts +1 -1
- package/presentation/pages/hooks/usePublishPage.js +16 -0
- package/presentation/pages/hooks/usePublishPage.js.map +1 -0
- package/{features/pages/loadPages → presentation/pages/hooks}/useSearchPages.js +7 -6
- package/presentation/pages/hooks/useSearchPages.js.map +1 -0
- package/presentation/pages/hooks/useSelectPages.d.ts +3 -0
- package/presentation/pages/hooks/useSelectPages.js +16 -0
- package/presentation/pages/hooks/useSelectPages.js.map +1 -0
- package/{features/pages/loadPages → presentation/pages/hooks}/useSortPages.js +7 -7
- package/presentation/pages/hooks/useSortPages.js.map +1 -0
- package/presentation/pages/hooks/useTranslatePage.d.ts +4 -0
- package/presentation/pages/hooks/useTranslatePage.js +16 -0
- package/presentation/pages/hooks/useTranslatePage.js.map +1 -0
- package/{features/pages/unpublishPage → presentation/pages/hooks}/useUnpublishPage.d.ts +1 -1
- package/presentation/pages/hooks/useUnpublishPage.js +16 -0
- package/presentation/pages/hooks/useUnpublishPage.js.map +1 -0
- package/{features/pages/updatePage → presentation/pages/hooks}/useUpdatePage.d.ts +1 -1
- package/presentation/pages/hooks/useUpdatePage.js +16 -0
- package/presentation/pages/hooks/useUpdatePage.js.map +1 -0
- package/presentation/security/HasPermission.js +3 -3
- package/presentation/security/HasPermission.js.map +1 -1
- package/presentation/security/usePermissions.js +3 -3
- package/presentation/security/usePermissions.js.map +1 -1
- package/shared/PagePath.d.ts +32 -0
- package/shared/PagePath.js +87 -0
- package/shared/PagePath.js.map +1 -0
- package/shared/PagePath.test.d.ts +1 -0
- package/shared/PagePath.test.js +81 -0
- package/shared/PagePath.test.js.map +1 -0
- package/features/pageTypes/PageType.d.ts +0 -6
- package/features/pageTypes/PageType.js +0 -3
- package/features/pageTypes/PageType.js.map +0 -1
- package/features/pageTypes/pageTypesCache.d.ts +0 -3
- package/features/pageTypes/pageTypesCache.js +0 -4
- package/features/pageTypes/pageTypesCache.js.map +0 -1
- package/features/pageTypes/useGetPageType.d.ts +0 -3
- package/features/pageTypes/useGetPageType.js +0 -15
- package/features/pageTypes/useGetPageType.js.map +0 -1
- package/features/pageTypes/usePageTypes.d.ts +0 -6
- package/features/pageTypes/usePageTypes.js +0 -27
- package/features/pageTypes/usePageTypes.js.map +0 -1
- package/features/pages/createPage/CreatePage.d.ts +0 -5
- package/features/pages/createPage/CreatePage.js +0 -15
- package/features/pages/createPage/CreatePage.js.map +0 -1
- package/features/pages/createPage/CreatePageGqlGateway.d.ts +0 -23
- package/features/pages/createPage/CreatePageGqlGateway.js +0 -48
- package/features/pages/createPage/CreatePageGqlGateway.js.map +0 -1
- package/features/pages/createPage/ICreatePageGateway.d.ts +0 -5
- package/features/pages/createPage/ICreatePageGateway.js +0 -3
- package/features/pages/createPage/ICreatePageGateway.js.map +0 -1
- package/features/pages/createPage/ICreatePageRepository.d.ts +0 -4
- package/features/pages/createPage/ICreatePageRepository.js +0 -3
- package/features/pages/createPage/ICreatePageRepository.js.map +0 -1
- package/features/pages/createPage/ICreatePageUseCase.d.ts +0 -13
- package/features/pages/createPage/ICreatePageUseCase.js +0 -3
- package/features/pages/createPage/ICreatePageUseCase.js.map +0 -1
- package/features/pages/createPage/useCreatePage.d.ts +0 -4
- package/features/pages/createPage/useCreatePage.js +0 -19
- package/features/pages/createPage/useCreatePage.js.map +0 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.d.ts +0 -5
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.js +0 -15
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.js.map +0 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGqlGateway.d.ts +0 -22
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGqlGateway.js +0 -46
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromGqlGateway.js.map +0 -1
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromGateway.d.ts +0 -4
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromGateway.js +0 -3
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromGateway.js.map +0 -1
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromRepository.d.ts +0 -4
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromRepository.js +0 -3
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromRepository.js.map +0 -1
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromUseCase.d.ts +0 -7
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromUseCase.js +0 -3
- package/features/pages/createPageRevisionFrom/ICreatePageRevisionFromUseCase.js.map +0 -1
- package/features/pages/createPageRevisionFrom/PageGatewayDto.d.ts +0 -19
- package/features/pages/createPageRevisionFrom/PageGatewayDto.js +0 -3
- package/features/pages/createPageRevisionFrom/PageGatewayDto.js.map +0 -1
- package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js +0 -19
- package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js.map +0 -1
- package/features/pages/deletePage/DeletePage.d.ts +0 -5
- package/features/pages/deletePage/DeletePage.js +0 -16
- package/features/pages/deletePage/DeletePage.js.map +0 -1
- package/features/pages/deletePage/DeletePageGqlGateway.d.ts +0 -21
- package/features/pages/deletePage/DeletePageGqlGateway.js +0 -44
- package/features/pages/deletePage/DeletePageGqlGateway.js.map +0 -1
- package/features/pages/deletePage/IDeletePageGateway.d.ts +0 -3
- package/features/pages/deletePage/IDeletePageGateway.js +0 -3
- package/features/pages/deletePage/IDeletePageGateway.js.map +0 -1
- package/features/pages/deletePage/IDeletePageRepository.d.ts +0 -4
- package/features/pages/deletePage/IDeletePageRepository.js +0 -3
- package/features/pages/deletePage/IDeletePageRepository.js.map +0 -1
- package/features/pages/deletePage/IDeletePageUseCase.d.ts +0 -7
- package/features/pages/deletePage/IDeletePageUseCase.js +0 -3
- package/features/pages/deletePage/IDeletePageUseCase.js.map +0 -1
- package/features/pages/deletePage/useDeletePage.js +0 -17
- package/features/pages/deletePage/useDeletePage.js.map +0 -1
- package/features/pages/duplicatePage/DuplicatePage.d.ts +0 -5
- package/features/pages/duplicatePage/DuplicatePage.js +0 -16
- package/features/pages/duplicatePage/DuplicatePage.js.map +0 -1
- package/features/pages/duplicatePage/DuplicatePageGqlGateway.d.ts +0 -22
- package/features/pages/duplicatePage/DuplicatePageGqlGateway.js +0 -46
- package/features/pages/duplicatePage/DuplicatePageGqlGateway.js.map +0 -1
- package/features/pages/duplicatePage/IDuplicatePageGateway.d.ts +0 -4
- package/features/pages/duplicatePage/IDuplicatePageGateway.js +0 -3
- package/features/pages/duplicatePage/IDuplicatePageGateway.js.map +0 -1
- package/features/pages/duplicatePage/IDuplicatePageRepository.d.ts +0 -4
- package/features/pages/duplicatePage/IDuplicatePageRepository.js +0 -3
- package/features/pages/duplicatePage/IDuplicatePageRepository.js.map +0 -1
- package/features/pages/duplicatePage/IDuplicatePageUseCase.d.ts +0 -6
- package/features/pages/duplicatePage/IDuplicatePageUseCase.js +0 -3
- package/features/pages/duplicatePage/IDuplicatePageUseCase.js.map +0 -1
- package/features/pages/duplicatePage/PageGatewayDto.d.ts +0 -19
- package/features/pages/duplicatePage/PageGatewayDto.js +0 -3
- package/features/pages/duplicatePage/PageGatewayDto.js.map +0 -1
- package/features/pages/duplicatePage/useDuplicatePage.js +0 -19
- package/features/pages/duplicatePage/useDuplicatePage.js.map +0 -1
- package/features/pages/getPage/GetPage.d.ts +0 -10
- package/features/pages/getPage/GetPage.js +0 -19
- package/features/pages/getPage/GetPage.js.map +0 -1
- package/features/pages/getPage/GetPageGqlGateway.d.ts +0 -22
- package/features/pages/getPage/GetPageGqlGateway.js +0 -50
- package/features/pages/getPage/GetPageGqlGateway.js.map +0 -1
- package/features/pages/getPage/IGetPageGateway.d.ts +0 -4
- package/features/pages/getPage/IGetPageGateway.js +0 -3
- package/features/pages/getPage/IGetPageGateway.js.map +0 -1
- package/features/pages/getPage/IGetPageRepository.d.ts +0 -4
- package/features/pages/getPage/IGetPageRepository.js +0 -3
- package/features/pages/getPage/IGetPageRepository.js.map +0 -1
- package/features/pages/getPage/IGetPageUseCase.d.ts +0 -7
- package/features/pages/getPage/IGetPageUseCase.js +0 -3
- package/features/pages/getPage/IGetPageUseCase.js.map +0 -1
- package/features/pages/getPage/useGetPage.js +0 -13
- package/features/pages/getPage/useGetPage.js.map +0 -1
- package/features/pages/getPage/useGetPageGatewayInstance.d.ts +0 -2
- package/features/pages/getPage/useGetPageGatewayInstance.js +0 -23
- package/features/pages/getPage/useGetPageGatewayInstance.js.map +0 -1
- package/features/pages/getPageRevisions/GetPageRevisions.d.ts +0 -11
- package/features/pages/getPageRevisions/GetPageRevisions.js +0 -20
- package/features/pages/getPageRevisions/GetPageRevisions.js.map +0 -1
- package/features/pages/getPageRevisions/GetPageRevisionsGqlGateway.d.ts +0 -24
- package/features/pages/getPageRevisions/GetPageRevisionsGqlGateway.js.map +0 -1
- package/features/pages/getPageRevisions/IGetPageRevisionsGateway.d.ts +0 -4
- package/features/pages/getPageRevisions/IGetPageRevisionsGateway.js +0 -3
- package/features/pages/getPageRevisions/IGetPageRevisionsGateway.js.map +0 -1
- package/features/pages/getPageRevisions/IGetPageRevisionsRepository.d.ts +0 -4
- package/features/pages/getPageRevisions/IGetPageRevisionsRepository.js +0 -3
- package/features/pages/getPageRevisions/IGetPageRevisionsRepository.js.map +0 -1
- package/features/pages/getPageRevisions/IGetPageRevisionsUseCase.d.ts +0 -7
- package/features/pages/getPageRevisions/IGetPageRevisionsUseCase.js +0 -3
- package/features/pages/getPageRevisions/IGetPageRevisionsUseCase.js.map +0 -1
- package/features/pages/getPageRevisions/useGetPageRevisions.d.ts +0 -5
- package/features/pages/getPageRevisions/useGetPageRevisions.js +0 -20
- package/features/pages/getPageRevisions/useGetPageRevisions.js.map +0 -1
- package/features/pages/loadPages/FilterPages.d.ts +0 -5
- package/features/pages/loadPages/FilterPages.js +0 -10
- package/features/pages/loadPages/FilterPages.js.map +0 -1
- package/features/pages/loadPages/IFilterPagesUseCase.d.ts +0 -7
- package/features/pages/loadPages/IFilterPagesUseCase.js +0 -3
- package/features/pages/loadPages/IFilterPagesUseCase.js.map +0 -1
- package/features/pages/loadPages/IListPagesGateway.d.ts +0 -16
- package/features/pages/loadPages/IListPagesGateway.js +0 -3
- package/features/pages/loadPages/IListPagesGateway.js.map +0 -1
- package/features/pages/loadPages/IListPagesRepository.d.ts +0 -12
- package/features/pages/loadPages/IListPagesRepository.js +0 -3
- package/features/pages/loadPages/IListPagesRepository.js.map +0 -1
- package/features/pages/loadPages/ILoadMorePagesUseCase.d.ts +0 -3
- package/features/pages/loadPages/ILoadMorePagesUseCase.js +0 -3
- package/features/pages/loadPages/ILoadMorePagesUseCase.js.map +0 -1
- package/features/pages/loadPages/ILoadPagesUseCase.d.ts +0 -7
- package/features/pages/loadPages/ILoadPagesUseCase.js +0 -3
- package/features/pages/loadPages/ILoadPagesUseCase.js.map +0 -1
- package/features/pages/loadPages/ISearchPagesUseCase.d.ts +0 -7
- package/features/pages/loadPages/ISearchPagesUseCase.js +0 -3
- package/features/pages/loadPages/ISearchPagesUseCase.js.map +0 -1
- package/features/pages/loadPages/ISortPagesUseCase.d.ts +0 -7
- package/features/pages/loadPages/ISortPagesUseCase.js +0 -3
- package/features/pages/loadPages/ISortPagesUseCase.js.map +0 -1
- package/features/pages/loadPages/ListPagesGqlGateway.d.ts +0 -40
- package/features/pages/loadPages/ListPagesGqlGateway.js +0 -71
- package/features/pages/loadPages/ListPagesGqlGateway.js.map +0 -1
- package/features/pages/loadPages/ListPagesRepositoryFactory.d.ts +0 -6
- package/features/pages/loadPages/ListPagesRepositoryFactory.js +0 -25
- package/features/pages/loadPages/ListPagesRepositoryFactory.js.map +0 -1
- package/features/pages/loadPages/LoadMorePages.d.ts +0 -5
- package/features/pages/loadPages/LoadMorePages.js +0 -10
- package/features/pages/loadPages/LoadMorePages.js.map +0 -1
- package/features/pages/loadPages/LoadPages.d.ts +0 -5
- package/features/pages/loadPages/LoadPages.js +0 -10
- package/features/pages/loadPages/LoadPages.js.map +0 -1
- package/features/pages/loadPages/SearchPages.d.ts +0 -5
- package/features/pages/loadPages/SearchPages.js +0 -10
- package/features/pages/loadPages/SearchPages.js.map +0 -1
- package/features/pages/loadPages/SortPages.d.ts +0 -5
- package/features/pages/loadPages/SortPages.js +0 -10
- package/features/pages/loadPages/SortPages.js.map +0 -1
- package/features/pages/loadPages/useFilterPages.js.map +0 -1
- package/features/pages/loadPages/useListPagesGateway.d.ts +0 -2
- package/features/pages/loadPages/useListPagesGateway.js +0 -18
- package/features/pages/loadPages/useListPagesGateway.js.map +0 -1
- package/features/pages/loadPages/useLoadMorePages.js +0 -15
- package/features/pages/loadPages/useLoadMorePages.js.map +0 -1
- package/features/pages/loadPages/useLoadPages.js +0 -15
- package/features/pages/loadPages/useLoadPages.js.map +0 -1
- package/features/pages/loadPages/useSearchPages.js.map +0 -1
- package/features/pages/loadPages/useSortPages.js.map +0 -1
- package/features/pages/movePage/IMovePageGateway.d.ts +0 -3
- package/features/pages/movePage/IMovePageGateway.js +0 -3
- package/features/pages/movePage/IMovePageGateway.js.map +0 -1
- package/features/pages/movePage/IMovePageRepository.d.ts +0 -3
- package/features/pages/movePage/IMovePageRepository.js +0 -3
- package/features/pages/movePage/IMovePageRepository.js.map +0 -1
- package/features/pages/movePage/IMovePageUseCase.d.ts +0 -7
- package/features/pages/movePage/IMovePageUseCase.js +0 -3
- package/features/pages/movePage/IMovePageUseCase.js.map +0 -1
- package/features/pages/movePage/MovePage.d.ts +0 -5
- package/features/pages/movePage/MovePage.js +0 -15
- package/features/pages/movePage/MovePage.js.map +0 -1
- package/features/pages/movePage/MovePageGqlGateway.d.ts +0 -21
- package/features/pages/movePage/MovePageGqlGateway.js +0 -44
- package/features/pages/movePage/MovePageGqlGateway.js.map +0 -1
- package/features/pages/movePage/useMovePage.js +0 -17
- package/features/pages/movePage/useMovePage.js.map +0 -1
- package/features/pages/publishPage/IPublishPageGateway.d.ts +0 -4
- package/features/pages/publishPage/IPublishPageGateway.js +0 -3
- package/features/pages/publishPage/IPublishPageGateway.js.map +0 -1
- package/features/pages/publishPage/IPublishPageRepository.d.ts +0 -4
- package/features/pages/publishPage/IPublishPageRepository.js +0 -3
- package/features/pages/publishPage/IPublishPageRepository.js.map +0 -1
- package/features/pages/publishPage/IPublishPageUseCase.d.ts +0 -6
- package/features/pages/publishPage/IPublishPageUseCase.js +0 -3
- package/features/pages/publishPage/IPublishPageUseCase.js.map +0 -1
- package/features/pages/publishPage/PageGatewayDto.d.ts +0 -19
- package/features/pages/publishPage/PageGatewayDto.js +0 -3
- package/features/pages/publishPage/PageGatewayDto.js.map +0 -1
- package/features/pages/publishPage/PublishPage.d.ts +0 -5
- package/features/pages/publishPage/PublishPage.js +0 -15
- package/features/pages/publishPage/PublishPage.js.map +0 -1
- package/features/pages/publishPage/PublishPageGqlGateway.d.ts +0 -22
- package/features/pages/publishPage/PublishPageGqlGateway.js +0 -46
- package/features/pages/publishPage/PublishPageGqlGateway.js.map +0 -1
- package/features/pages/publishPage/usePublishPage.js +0 -19
- package/features/pages/publishPage/usePublishPage.js.map +0 -1
- package/features/pages/selectPages/ISelectPagesUseCases.d.ts +0 -3
- package/features/pages/selectPages/ISelectPagesUseCases.js +0 -3
- package/features/pages/selectPages/ISelectPagesUseCases.js.map +0 -1
- package/features/pages/selectPages/SelectPages.d.ts +0 -4
- package/features/pages/selectPages/SelectPages.js +0 -10
- package/features/pages/selectPages/SelectPages.js.map +0 -1
- package/features/pages/unpublishPage/IUnpublishPageGateway.d.ts +0 -4
- package/features/pages/unpublishPage/IUnpublishPageGateway.js +0 -3
- package/features/pages/unpublishPage/IUnpublishPageGateway.js.map +0 -1
- package/features/pages/unpublishPage/IUnpublishPageRepository.d.ts +0 -4
- package/features/pages/unpublishPage/IUnpublishPageRepository.js +0 -3
- package/features/pages/unpublishPage/IUnpublishPageRepository.js.map +0 -1
- package/features/pages/unpublishPage/IUnpublishPageUseCase.d.ts +0 -6
- package/features/pages/unpublishPage/IUnpublishPageUseCase.js +0 -3
- package/features/pages/unpublishPage/IUnpublishPageUseCase.js.map +0 -1
- package/features/pages/unpublishPage/PageGatewayDto.d.ts +0 -19
- package/features/pages/unpublishPage/PageGatewayDto.js +0 -3
- package/features/pages/unpublishPage/PageGatewayDto.js.map +0 -1
- package/features/pages/unpublishPage/UnpublishPage.d.ts +0 -5
- package/features/pages/unpublishPage/UnpublishPage.js +0 -15
- package/features/pages/unpublishPage/UnpublishPage.js.map +0 -1
- package/features/pages/unpublishPage/UnpublishPageGqlGateway.d.ts +0 -22
- package/features/pages/unpublishPage/UnpublishPageGqlGateway.js +0 -46
- package/features/pages/unpublishPage/UnpublishPageGqlGateway.js.map +0 -1
- package/features/pages/unpublishPage/useUnpublishPage.js +0 -19
- package/features/pages/unpublishPage/useUnpublishPage.js.map +0 -1
- package/features/pages/updatePage/IUpdatePageGateway.d.ts +0 -5
- package/features/pages/updatePage/IUpdatePageGateway.js +0 -3
- package/features/pages/updatePage/IUpdatePageGateway.js.map +0 -1
- package/features/pages/updatePage/IUpdatePageRepository.d.ts +0 -4
- package/features/pages/updatePage/IUpdatePageRepository.js +0 -3
- package/features/pages/updatePage/IUpdatePageRepository.js.map +0 -1
- package/features/pages/updatePage/IUpdatePageUseCase.d.ts +0 -11
- package/features/pages/updatePage/IUpdatePageUseCase.js +0 -3
- package/features/pages/updatePage/IUpdatePageUseCase.js.map +0 -1
- package/features/pages/updatePage/UpdatePage.d.ts +0 -5
- package/features/pages/updatePage/UpdatePage.js +0 -15
- package/features/pages/updatePage/UpdatePage.js.map +0 -1
- package/features/pages/updatePage/UpdatePageGqlGateway.d.ts +0 -24
- package/features/pages/updatePage/UpdatePageGqlGateway.js +0 -61
- package/features/pages/updatePage/UpdatePageGqlGateway.js.map +0 -1
- package/features/pages/updatePage/useUpdatePage.js +0 -19
- package/features/pages/updatePage/useUpdatePage.js.map +0 -1
- package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.d.ts +0 -3
- package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js +0 -103
- package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js.map +0 -1
- package/modules/pages/PagesList/components/Main/CreatePage/StaticPageForm.d.ts +0 -2
- package/modules/pages/PagesList/components/Main/CreatePage/StaticPageForm.js +0 -40
- package/modules/pages/PagesList/components/Main/CreatePage/StaticPageForm.js.map +0 -1
- package/modules/pages/configs/list/PageType.d.ts +0 -11
- package/modules/pages/configs/list/PageType.js +0 -22
- package/modules/pages/configs/list/PageType.js.map +0 -1
- /package/{features/pages/loadPages → presentation/pages/hooks}/useFilterPages.d.ts +0 -0
- /package/{features/pages/loadPages → presentation/pages/hooks}/useLoadMorePages.d.ts +0 -0
- /package/{features/pages/loadPages → presentation/pages/hooks}/useSearchPages.d.ts +0 -0
- /package/{features/pages/loadPages → presentation/pages/hooks}/useSortPages.d.ts +0 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { FormModel as FormModelImpl } from "@webiny/app-admin/features/formModel/FormModel.js";
|
|
3
|
+
import { AddLanguageModifier } from "./AddLanguageModifier.js";
|
|
4
|
+
import { PagePath } from "../../../shared/PagePath.js";
|
|
5
|
+
/**
|
|
6
|
+
* Creates a mock use case + repository pair for the AddLanguageModifier.
|
|
7
|
+
* Languages are pre-populated (simulating a completed fetch).
|
|
8
|
+
*/
|
|
9
|
+
function createLanguageMocks(languages) {
|
|
10
|
+
const repository = {
|
|
11
|
+
execute: async () => languages,
|
|
12
|
+
getLanguages: () => languages
|
|
13
|
+
};
|
|
14
|
+
const useCase = {
|
|
15
|
+
execute: async () => languages
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
useCase,
|
|
19
|
+
repository
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Creates the same base form that CreatePagePresenter builds,
|
|
25
|
+
* without requiring DI or the page type cache.
|
|
26
|
+
*/
|
|
27
|
+
function createBaseForm(config) {
|
|
28
|
+
return new FormModelImpl({
|
|
29
|
+
fields: fields => ({
|
|
30
|
+
title: fields.text().label("Title").required("Title is required").onBlur((value, f) => {
|
|
31
|
+
const currentPath = f.field("path").getValue();
|
|
32
|
+
if (currentPath) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
f.field("path").setValue(PagePath.fromTitle(String(value)).toString());
|
|
36
|
+
}),
|
|
37
|
+
path: fields.text().label("Path").required("Path is required").beforeChange(value => {
|
|
38
|
+
return PagePath.create(String(value)).slugify().toString();
|
|
39
|
+
}),
|
|
40
|
+
pageType: fields.text().hidden().defaultValue("staticPage")
|
|
41
|
+
}),
|
|
42
|
+
layout: layout => [layout.row("title"), layout.row("path")],
|
|
43
|
+
...config
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Helper: set title and blur to trigger path generation.
|
|
49
|
+
*/
|
|
50
|
+
function setTitleAndBlur(form, value) {
|
|
51
|
+
form.field("title").setValue(value);
|
|
52
|
+
form.field("title").blur();
|
|
53
|
+
}
|
|
54
|
+
describe("CreatePage base form", () => {
|
|
55
|
+
it("should create a form with title, path, and hidden pageType", () => {
|
|
56
|
+
const form = createBaseForm();
|
|
57
|
+
expect(form.field("title")).toBeDefined();
|
|
58
|
+
expect(form.field("path")).toBeDefined();
|
|
59
|
+
expect(form.field("pageType")).toBeDefined();
|
|
60
|
+
});
|
|
61
|
+
it("should include pageType in getData but not in layout", () => {
|
|
62
|
+
const form = createBaseForm();
|
|
63
|
+
const data = form.getData();
|
|
64
|
+
expect(data.pageType).toBe("staticPage");
|
|
65
|
+
const fieldNames = form.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
66
|
+
expect(fieldNames).not.toContain("pageType");
|
|
67
|
+
});
|
|
68
|
+
it("should auto-generate path from title on blur", () => {
|
|
69
|
+
const form = createBaseForm();
|
|
70
|
+
setTitleAndBlur(form, "Hello World");
|
|
71
|
+
expect(form.field("path").getValue()).toBe("/hello-world");
|
|
72
|
+
});
|
|
73
|
+
it("should not auto-generate path on setValue alone (before blur)", () => {
|
|
74
|
+
const form = createBaseForm();
|
|
75
|
+
form.field("title").setValue("Hello World");
|
|
76
|
+
expect(form.field("path").getValue()).toBeNull();
|
|
77
|
+
});
|
|
78
|
+
it("should not overwrite path when manually edited", () => {
|
|
79
|
+
const form = createBaseForm();
|
|
80
|
+
setTitleAndBlur(form, "Hello World");
|
|
81
|
+
form.field("path").setValue("/custom-path");
|
|
82
|
+
setTitleAndBlur(form, "New Title");
|
|
83
|
+
expect(form.field("path").getValue()).toBe("/custom-path");
|
|
84
|
+
});
|
|
85
|
+
it("should return data on valid submit", async () => {
|
|
86
|
+
const form = createBaseForm();
|
|
87
|
+
form.field("title").setValue("My Page");
|
|
88
|
+
form.field("path").setValue("/my-page");
|
|
89
|
+
const result = await form.submit();
|
|
90
|
+
expect(result).toEqual({
|
|
91
|
+
title: "My Page",
|
|
92
|
+
path: "/my-page",
|
|
93
|
+
pageType: "staticPage"
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it("should return false on invalid submit", async () => {
|
|
97
|
+
const form = createBaseForm();
|
|
98
|
+
const result = await form.submit();
|
|
99
|
+
expect(result).toBe(false);
|
|
100
|
+
expect(form.errors.length).toBeGreaterThan(0);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("PageType + Modifier 3-layer architecture", () => {
|
|
104
|
+
/**
|
|
105
|
+
* Simulates the 3-layer build order used by CreatePagePresenter:
|
|
106
|
+
* 1. Base form (title, path, pageType)
|
|
107
|
+
* 2. Page type modify
|
|
108
|
+
* 3. Cross-cutting modifiers
|
|
109
|
+
*/
|
|
110
|
+
function buildForm(pageType, modifiers = []) {
|
|
111
|
+
const form = createBaseForm();
|
|
112
|
+
pageType.modifyForm?.(form);
|
|
113
|
+
for (const modifier of modifiers) {
|
|
114
|
+
modifier.modifyForm(form);
|
|
115
|
+
}
|
|
116
|
+
return form;
|
|
117
|
+
}
|
|
118
|
+
const staticPageType = {
|
|
119
|
+
name: "static",
|
|
120
|
+
label: "Static Page",
|
|
121
|
+
modifyForm() {
|
|
122
|
+
// no-op
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const productPageType = {
|
|
126
|
+
name: "product",
|
|
127
|
+
label: "Product Page",
|
|
128
|
+
modifyForm(form) {
|
|
129
|
+
form.fields(fields => ({
|
|
130
|
+
product: fields.select().label("Product").required("Product is required").options([{
|
|
131
|
+
label: "Shoes",
|
|
132
|
+
value: "shoes"
|
|
133
|
+
}, {
|
|
134
|
+
label: "Hats",
|
|
135
|
+
value: "hats"
|
|
136
|
+
}])
|
|
137
|
+
}));
|
|
138
|
+
form.field("title").setDisabled(true);
|
|
139
|
+
form.field("path").setDisabled(true);
|
|
140
|
+
form.layout(layout => [layout.row("product").before("title")]);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
it("should leave base form unchanged for static page type", () => {
|
|
144
|
+
const form = buildForm(staticPageType);
|
|
145
|
+
const fieldNames = form.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
146
|
+
expect(fieldNames).toEqual(["title", "path"]);
|
|
147
|
+
});
|
|
148
|
+
it("should add product field and disable title/path for product page type", () => {
|
|
149
|
+
const form = buildForm(productPageType);
|
|
150
|
+
const fieldNames = form.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
151
|
+
expect(fieldNames).toEqual(["product", "title", "path"]);
|
|
152
|
+
expect(form.field("title").vm.disabled).toBe(true);
|
|
153
|
+
expect(form.field("path").vm.disabled).toBe(true);
|
|
154
|
+
});
|
|
155
|
+
it("should include product in getData", () => {
|
|
156
|
+
const form = buildForm(productPageType);
|
|
157
|
+
form.field("product").setValue("shoes");
|
|
158
|
+
const data = form.getData();
|
|
159
|
+
expect(data.product).toBe("shoes");
|
|
160
|
+
});
|
|
161
|
+
it("should apply cross-cutting modifier after page type", () => {
|
|
162
|
+
const langs = [{
|
|
163
|
+
id: "en",
|
|
164
|
+
code: "en",
|
|
165
|
+
name: "English",
|
|
166
|
+
isDefault: true
|
|
167
|
+
}, {
|
|
168
|
+
id: "de",
|
|
169
|
+
code: "de",
|
|
170
|
+
name: "German"
|
|
171
|
+
}];
|
|
172
|
+
const {
|
|
173
|
+
useCase,
|
|
174
|
+
repository
|
|
175
|
+
} = createLanguageMocks(langs);
|
|
176
|
+
const languageModifier = new AddLanguageModifier(useCase, repository);
|
|
177
|
+
const form = buildForm(productPageType, [languageModifier]);
|
|
178
|
+
const fieldNames = form.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
179
|
+
|
|
180
|
+
// language before title (from modifier), product before title (from page type)
|
|
181
|
+
expect(fieldNames).toEqual(["product", "language", "title", "path"]);
|
|
182
|
+
});
|
|
183
|
+
it("should apply cross-cutting modifier to static page type too", () => {
|
|
184
|
+
const langs = [{
|
|
185
|
+
id: "en",
|
|
186
|
+
code: "en",
|
|
187
|
+
name: "English",
|
|
188
|
+
isDefault: true
|
|
189
|
+
}, {
|
|
190
|
+
id: "de",
|
|
191
|
+
code: "de",
|
|
192
|
+
name: "German"
|
|
193
|
+
}];
|
|
194
|
+
const {
|
|
195
|
+
useCase,
|
|
196
|
+
repository
|
|
197
|
+
} = createLanguageMocks(langs);
|
|
198
|
+
const languageModifier = new AddLanguageModifier(useCase, repository);
|
|
199
|
+
const form = buildForm(staticPageType, [languageModifier]);
|
|
200
|
+
const fieldNames = form.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
201
|
+
expect(fieldNames).toEqual(["language", "title", "path"]);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
describe("Form rebuild on page type switch", () => {
|
|
205
|
+
const staticPageType = {
|
|
206
|
+
name: "static",
|
|
207
|
+
label: "Static Page",
|
|
208
|
+
modifyForm() {
|
|
209
|
+
// no-op
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
const productPageType = {
|
|
213
|
+
name: "product",
|
|
214
|
+
label: "Product Page",
|
|
215
|
+
modifyForm(form) {
|
|
216
|
+
form.fields(fields => ({
|
|
217
|
+
product: fields.select().label("Product").required("Product is required").options([{
|
|
218
|
+
label: "Shoes",
|
|
219
|
+
value: "shoes"
|
|
220
|
+
}, {
|
|
221
|
+
label: "Hats",
|
|
222
|
+
value: "hats"
|
|
223
|
+
}])
|
|
224
|
+
}));
|
|
225
|
+
form.field("title").setDisabled(true);
|
|
226
|
+
form.field("path").setDisabled(true);
|
|
227
|
+
form.layout(layout => [layout.row("product").before("title")]);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
const pageTypes = {
|
|
231
|
+
static: staticPageType,
|
|
232
|
+
product: productPageType
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Simulates the presenter's changePageType: getData → rebuild → setData.
|
|
237
|
+
* The real presenter sets `this.selectedPageType` before `buildForm()`,
|
|
238
|
+
* which sets the hidden field's defaultValue. Here we just rebuild and restore.
|
|
239
|
+
*/
|
|
240
|
+
function changePageType(currentForm, newType, modifiers = []) {
|
|
241
|
+
const previousData = currentForm.getData();
|
|
242
|
+
const form = createBaseForm();
|
|
243
|
+
pageTypes[newType].modifyForm?.(form);
|
|
244
|
+
for (const modifier of modifiers) {
|
|
245
|
+
modifier.modifyForm(form);
|
|
246
|
+
}
|
|
247
|
+
form.setData(previousData);
|
|
248
|
+
return form;
|
|
249
|
+
}
|
|
250
|
+
it("should preserve common field values when switching page types", () => {
|
|
251
|
+
// Start with static page, fill in title and path.
|
|
252
|
+
const staticForm = createBaseForm();
|
|
253
|
+
staticPageType.modifyForm?.(staticForm);
|
|
254
|
+
staticForm.field("title").setValue("My Page");
|
|
255
|
+
staticForm.field("path").setValue("/my-page");
|
|
256
|
+
|
|
257
|
+
// Switch to product page.
|
|
258
|
+
const productForm = changePageType(staticForm, "product");
|
|
259
|
+
expect(productForm.field("title").getValue()).toBe("My Page");
|
|
260
|
+
expect(productForm.field("path").getValue()).toBe("/my-page");
|
|
261
|
+
});
|
|
262
|
+
it("should drop page-type-specific fields on switch", () => {
|
|
263
|
+
// Start with product page, select a product.
|
|
264
|
+
const productForm = createBaseForm();
|
|
265
|
+
productPageType.modifyForm?.(productForm);
|
|
266
|
+
productForm.field("product").setValue("shoes");
|
|
267
|
+
|
|
268
|
+
// Switch to static page — product field should not exist.
|
|
269
|
+
const staticForm = changePageType(productForm, "static");
|
|
270
|
+
const fieldNames = staticForm.vm.layout.filter(n => n.type === "row").flatMap(row => row.fields.map(f => f.name));
|
|
271
|
+
expect(fieldNames).toEqual(["title", "path"]);
|
|
272
|
+
expect(staticForm.getData()).not.toHaveProperty("product");
|
|
273
|
+
});
|
|
274
|
+
it("should preserve cross-cutting modifier values across page type switch", () => {
|
|
275
|
+
const langs = [{
|
|
276
|
+
id: "en",
|
|
277
|
+
code: "en",
|
|
278
|
+
name: "English",
|
|
279
|
+
isDefault: true
|
|
280
|
+
}, {
|
|
281
|
+
id: "de",
|
|
282
|
+
code: "de",
|
|
283
|
+
name: "German"
|
|
284
|
+
}];
|
|
285
|
+
const {
|
|
286
|
+
useCase,
|
|
287
|
+
repository
|
|
288
|
+
} = createLanguageMocks(langs);
|
|
289
|
+
const languageModifier = new AddLanguageModifier(useCase, repository);
|
|
290
|
+
|
|
291
|
+
// Start with static page + language modifier.
|
|
292
|
+
const staticForm = createBaseForm();
|
|
293
|
+
staticPageType.modifyForm?.(staticForm);
|
|
294
|
+
languageModifier.modifyForm(staticForm);
|
|
295
|
+
staticForm.field("title").setValue("Demo");
|
|
296
|
+
// Language is auto-assigned "en" by the modifier reaction.
|
|
297
|
+
|
|
298
|
+
const langValue = staticForm.field("language").getValue();
|
|
299
|
+
expect(langValue).toBe("en");
|
|
300
|
+
|
|
301
|
+
// Switch to product page with same modifier.
|
|
302
|
+
const productForm = changePageType(staticForm, "product", [languageModifier]);
|
|
303
|
+
expect(productForm.field("language").getValue()).toBe("en");
|
|
304
|
+
expect(productForm.field("title").getValue()).toBe("Demo");
|
|
305
|
+
});
|
|
306
|
+
it("should preserve hidden field values across rebuild", () => {
|
|
307
|
+
const staticForm = createBaseForm();
|
|
308
|
+
staticPageType.modifyForm?.(staticForm);
|
|
309
|
+
expect(staticForm.getData().pageType).toBe("staticPage");
|
|
310
|
+
|
|
311
|
+
// Switch to product — setData restores pageType from previous form.
|
|
312
|
+
const productForm = changePageType(staticForm, "product");
|
|
313
|
+
|
|
314
|
+
// The hidden pageType field is preserved via setData.
|
|
315
|
+
// In the real presenter, buildForm() sets defaultValue to the new type,
|
|
316
|
+
// so the hidden field gets the correct value regardless.
|
|
317
|
+
expect(productForm.field("pageType").getValue()).toBe("staticPage");
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
//# sourceMappingURL=CreatePage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","it","expect","FormModel","FormModelImpl","AddLanguageModifier","PagePath","createLanguageMocks","languages","repository","execute","getLanguages","useCase","createBaseForm","config","fields","title","text","label","required","onBlur","value","f","currentPath","field","getValue","setValue","fromTitle","String","toString","path","beforeChange","create","slugify","pageType","hidden","defaultValue","layout","row","setTitleAndBlur","form","blur","toBeDefined","data","getData","toBe","fieldNames","vm","filter","n","type","flatMap","map","name","not","toContain","toBeNull","result","submit","toEqual","errors","length","toBeGreaterThan","buildForm","modifiers","modifyForm","modifier","staticPageType","productPageType","product","select","options","setDisabled","before","disabled","langs","id","code","isDefault","languageModifier","pageTypes","static","changePageType","currentForm","newType","previousData","setData","staticForm","productForm","toHaveProperty","langValue"],"sources":["CreatePage.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { FormModel as FormModelImpl } from \"@webiny/app-admin/features/formModel/FormModel.js\";\nimport type { IFormModel, IFormModelConfig, IRowNodeVM } from \"@webiny/app-admin\";\nimport type { LanguageDto } from \"@webiny/languages/admin/features/listLanguages/abstractions.js\";\nimport { AddLanguageModifier } from \"./AddLanguageModifier.js\";\nimport { PagePath } from \"~/shared/PagePath.js\";\nimport type { IPageType, ICreatePageFormModifier } from \"./abstractions.js\";\n\n/**\n * Creates a mock use case + repository pair for the AddLanguageModifier.\n * Languages are pre-populated (simulating a completed fetch).\n */\nfunction createLanguageMocks(languages: LanguageDto[]) {\n const repository = {\n execute: async () => languages,\n getLanguages: () => languages\n };\n const useCase = {\n execute: async () => languages\n };\n return { useCase, repository };\n}\n\n/**\n * Creates the same base form that CreatePagePresenter builds,\n * without requiring DI or the page type cache.\n */\nfunction createBaseForm(config?: Partial<IFormModelConfig>) {\n return new FormModelImpl({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .required(\"Title is required\")\n .onBlur((value, f) => {\n const currentPath = f.field(\"path\").getValue();\n if (currentPath) {\n return;\n }\n f.field(\"path\").setValue(PagePath.fromTitle(String(value)).toString());\n }),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n return PagePath.create(String(value)).slugify().toString();\n }),\n pageType: fields.text().hidden().defaultValue(\"staticPage\")\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")],\n ...config\n });\n}\n\n/**\n * Helper: set title and blur to trigger path generation.\n */\nfunction setTitleAndBlur(form: IFormModel, value: string) {\n form.field(\"title\").setValue(value);\n form.field(\"title\").blur();\n}\n\ndescribe(\"CreatePage base form\", () => {\n it(\"should create a form with title, path, and hidden pageType\", () => {\n const form = createBaseForm();\n expect(form.field(\"title\")).toBeDefined();\n expect(form.field(\"path\")).toBeDefined();\n expect(form.field(\"pageType\")).toBeDefined();\n });\n\n it(\"should include pageType in getData but not in layout\", () => {\n const form = createBaseForm();\n const data = form.getData();\n expect(data.pageType).toBe(\"staticPage\");\n\n const fieldNames = form.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n expect(fieldNames).not.toContain(\"pageType\");\n });\n\n it(\"should auto-generate path from title on blur\", () => {\n const form = createBaseForm();\n setTitleAndBlur(form, \"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n });\n\n it(\"should not auto-generate path on setValue alone (before blur)\", () => {\n const form = createBaseForm();\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBeNull();\n });\n\n it(\"should not overwrite path when manually edited\", () => {\n const form = createBaseForm();\n setTitleAndBlur(form, \"Hello World\");\n form.field(\"path\").setValue(\"/custom-path\");\n setTitleAndBlur(form, \"New Title\");\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n });\n\n it(\"should return data on valid submit\", async () => {\n const form = createBaseForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const result = await form.submit();\n expect(result).toEqual({\n title: \"My Page\",\n path: \"/my-page\",\n pageType: \"staticPage\"\n });\n });\n\n it(\"should return false on invalid submit\", async () => {\n const form = createBaseForm();\n const result = await form.submit();\n expect(result).toBe(false);\n expect(form.errors.length).toBeGreaterThan(0);\n });\n});\n\ndescribe(\"PageType + Modifier 3-layer architecture\", () => {\n /**\n * Simulates the 3-layer build order used by CreatePagePresenter:\n * 1. Base form (title, path, pageType)\n * 2. Page type modify\n * 3. Cross-cutting modifiers\n */\n function buildForm(pageType: IPageType, modifiers: ICreatePageFormModifier[] = []): IFormModel {\n const form = createBaseForm();\n pageType.modifyForm?.(form);\n for (const modifier of modifiers) {\n modifier.modifyForm(form);\n }\n return form;\n }\n\n const staticPageType: IPageType = {\n name: \"static\",\n label: \"Static Page\",\n modifyForm() {\n // no-op\n }\n };\n\n const productPageType: IPageType = {\n name: \"product\",\n label: \"Product Page\",\n modifyForm(form) {\n form.fields(fields => ({\n product: fields\n .select()\n .label(\"Product\")\n .required(\"Product is required\")\n .options([\n { label: \"Shoes\", value: \"shoes\" },\n { label: \"Hats\", value: \"hats\" }\n ])\n }));\n form.field(\"title\").setDisabled(true);\n form.field(\"path\").setDisabled(true);\n form.layout(layout => [layout.row(\"product\").before(\"title\")]);\n }\n };\n\n it(\"should leave base form unchanged for static page type\", () => {\n const form = buildForm(staticPageType);\n const fieldNames = form.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n expect(fieldNames).toEqual([\"title\", \"path\"]);\n });\n\n it(\"should add product field and disable title/path for product page type\", () => {\n const form = buildForm(productPageType);\n const fieldNames = form.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n expect(fieldNames).toEqual([\"product\", \"title\", \"path\"]);\n\n expect(form.field(\"title\").vm.disabled).toBe(true);\n expect(form.field(\"path\").vm.disabled).toBe(true);\n });\n\n it(\"should include product in getData\", () => {\n const form = buildForm(productPageType);\n form.field(\"product\").setValue(\"shoes\");\n const data = form.getData();\n expect(data.product).toBe(\"shoes\");\n });\n\n it(\"should apply cross-cutting modifier after page type\", () => {\n const langs: LanguageDto[] = [\n { id: \"en\", code: \"en\", name: \"English\", isDefault: true },\n { id: \"de\", code: \"de\", name: \"German\" }\n ];\n const { useCase, repository } = createLanguageMocks(langs);\n const languageModifier = new AddLanguageModifier(useCase, repository);\n\n const form = buildForm(productPageType, [languageModifier]);\n const fieldNames = form.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n\n // language before title (from modifier), product before title (from page type)\n expect(fieldNames).toEqual([\"product\", \"language\", \"title\", \"path\"]);\n });\n\n it(\"should apply cross-cutting modifier to static page type too\", () => {\n const langs: LanguageDto[] = [\n { id: \"en\", code: \"en\", name: \"English\", isDefault: true },\n { id: \"de\", code: \"de\", name: \"German\" }\n ];\n const { useCase, repository } = createLanguageMocks(langs);\n const languageModifier = new AddLanguageModifier(useCase, repository);\n\n const form = buildForm(staticPageType, [languageModifier]);\n const fieldNames = form.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n\n expect(fieldNames).toEqual([\"language\", \"title\", \"path\"]);\n });\n});\n\ndescribe(\"Form rebuild on page type switch\", () => {\n const staticPageType: IPageType = {\n name: \"static\",\n label: \"Static Page\",\n modifyForm() {\n // no-op\n }\n };\n\n const productPageType: IPageType = {\n name: \"product\",\n label: \"Product Page\",\n modifyForm(form) {\n form.fields(fields => ({\n product: fields\n .select()\n .label(\"Product\")\n .required(\"Product is required\")\n .options([\n { label: \"Shoes\", value: \"shoes\" },\n { label: \"Hats\", value: \"hats\" }\n ])\n }));\n form.field(\"title\").setDisabled(true);\n form.field(\"path\").setDisabled(true);\n form.layout(layout => [layout.row(\"product\").before(\"title\")]);\n }\n };\n\n const pageTypes: Record<string, IPageType> = {\n static: staticPageType,\n product: productPageType\n };\n\n /**\n * Simulates the presenter's changePageType: getData → rebuild → setData.\n * The real presenter sets `this.selectedPageType` before `buildForm()`,\n * which sets the hidden field's defaultValue. Here we just rebuild and restore.\n */\n function changePageType(\n currentForm: IFormModel,\n newType: string,\n modifiers: ICreatePageFormModifier[] = []\n ): IFormModel {\n const previousData = currentForm.getData();\n const form = createBaseForm();\n pageTypes[newType].modifyForm?.(form);\n for (const modifier of modifiers) {\n modifier.modifyForm(form);\n }\n form.setData(previousData);\n return form;\n }\n\n it(\"should preserve common field values when switching page types\", () => {\n // Start with static page, fill in title and path.\n const staticForm = createBaseForm();\n staticPageType.modifyForm?.(staticForm);\n staticForm.field(\"title\").setValue(\"My Page\");\n staticForm.field(\"path\").setValue(\"/my-page\");\n\n // Switch to product page.\n const productForm = changePageType(staticForm, \"product\");\n\n expect(productForm.field(\"title\").getValue()).toBe(\"My Page\");\n expect(productForm.field(\"path\").getValue()).toBe(\"/my-page\");\n });\n\n it(\"should drop page-type-specific fields on switch\", () => {\n // Start with product page, select a product.\n const productForm = createBaseForm();\n productPageType.modifyForm?.(productForm);\n productForm.field(\"product\").setValue(\"shoes\");\n\n // Switch to static page — product field should not exist.\n const staticForm = changePageType(productForm, \"static\");\n\n const fieldNames = staticForm.vm.layout\n .filter((n): n is IRowNodeVM => n.type === \"row\")\n .flatMap(row => row.fields.map(f => f.name));\n expect(fieldNames).toEqual([\"title\", \"path\"]);\n expect(staticForm.getData()).not.toHaveProperty(\"product\");\n });\n\n it(\"should preserve cross-cutting modifier values across page type switch\", () => {\n const langs: LanguageDto[] = [\n { id: \"en\", code: \"en\", name: \"English\", isDefault: true },\n { id: \"de\", code: \"de\", name: \"German\" }\n ];\n const { useCase, repository } = createLanguageMocks(langs);\n const languageModifier = new AddLanguageModifier(useCase, repository);\n\n // Start with static page + language modifier.\n const staticForm = createBaseForm();\n staticPageType.modifyForm?.(staticForm);\n languageModifier.modifyForm(staticForm);\n staticForm.field(\"title\").setValue(\"Demo\");\n // Language is auto-assigned \"en\" by the modifier reaction.\n\n const langValue = staticForm.field(\"language\").getValue();\n expect(langValue).toBe(\"en\");\n\n // Switch to product page with same modifier.\n const productForm = changePageType(staticForm, \"product\", [languageModifier]);\n\n expect(productForm.field(\"language\").getValue()).toBe(\"en\");\n expect(productForm.field(\"title\").getValue()).toBe(\"Demo\");\n });\n\n it(\"should preserve hidden field values across rebuild\", () => {\n const staticForm = createBaseForm();\n staticPageType.modifyForm?.(staticForm);\n expect(staticForm.getData().pageType).toBe(\"staticPage\");\n\n // Switch to product — setData restores pageType from previous form.\n const productForm = changePageType(staticForm, \"product\");\n\n // The hidden pageType field is preserved via setData.\n // In the real presenter, buildForm() sets defaultValue to the new type,\n // so the hidden field gets the correct value regardless.\n expect(productForm.field(\"pageType\").getValue()).toBe(\"staticPage\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AdminConfig } from "@webiny/app-admin";
|
|
3
|
+
import { CreatePageDialog, CREATE_PAGE_DIALOG } from "./CreatePageDialog.js";
|
|
4
|
+
export const CreatePageConfig = () => {
|
|
5
|
+
return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(AdminConfig.Dialog, {
|
|
6
|
+
name: CREATE_PAGE_DIALOG,
|
|
7
|
+
element: /*#__PURE__*/React.createElement(CreatePageDialog, null)
|
|
8
|
+
}));
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=CreatePageConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","AdminConfig","CreatePageDialog","CREATE_PAGE_DIALOG","CreatePageConfig","createElement","Dialog","name","element"],"sources":["CreatePageConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { CreatePageDialog, CREATE_PAGE_DIALOG } from \"./CreatePageDialog.js\";\n\nexport const CreatePageConfig = () => {\n return (\n <AdminConfig>\n <AdminConfig.Dialog name={CREATE_PAGE_DIALOG} element={<CreatePageDialog />} />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,gBAAgB,EAAEC,kBAAkB;AAE7C,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,oBACIJ,KAAA,CAAAK,aAAA,CAACJ,WAAW,qBACRD,KAAA,CAAAK,aAAA,CAACJ,WAAW,CAACK,MAAM;IAACC,IAAI,EAAEJ,kBAAmB;IAACK,OAAO,eAAER,KAAA,CAAAK,aAAA,CAACH,gBAAgB,MAAE;EAAE,CAAE,CACrE,CAAC;AAEtB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { useEffect } from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { useDialog, useOpenDialog, FormView } from "@webiny/app-admin";
|
|
4
|
+
import { Dialog, Select, OverlayLoader } from "@webiny/admin-ui";
|
|
5
|
+
import { useFeature } from "@webiny/app";
|
|
6
|
+
import { useEditPageUrl } from "../../../modules/pages/PagesList/hooks/useEditPageUrl.js";
|
|
7
|
+
import { CreatePageFeature } from "./feature.js";
|
|
8
|
+
import { createPageDialogParams } from "./createPageSchema.js";
|
|
9
|
+
export const CREATE_PAGE_DIALOG = "createPage";
|
|
10
|
+
export const useCreatePageDialog = () => {
|
|
11
|
+
const {
|
|
12
|
+
openDialog
|
|
13
|
+
} = useOpenDialog(createPageDialogParams);
|
|
14
|
+
return folderId => {
|
|
15
|
+
openDialog(CREATE_PAGE_DIALOG, {
|
|
16
|
+
folderId
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export const CreatePageDialog = observer(() => {
|
|
21
|
+
const {
|
|
22
|
+
params,
|
|
23
|
+
closeDialog
|
|
24
|
+
} = useDialog(createPageDialogParams);
|
|
25
|
+
const {
|
|
26
|
+
goToPageEditor
|
|
27
|
+
} = useEditPageUrl();
|
|
28
|
+
const {
|
|
29
|
+
presenter
|
|
30
|
+
} = useFeature(CreatePageFeature);
|
|
31
|
+
const vm = presenter.vm;
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
presenter.init(params.folderId);
|
|
34
|
+
}, []);
|
|
35
|
+
const handleSubmit = async () => {
|
|
36
|
+
const page = await presenter.submit();
|
|
37
|
+
if (!page) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
closeDialog();
|
|
41
|
+
goToPageEditor(page.id);
|
|
42
|
+
};
|
|
43
|
+
return /*#__PURE__*/React.createElement(Dialog, {
|
|
44
|
+
open: true,
|
|
45
|
+
onClose: closeDialog,
|
|
46
|
+
title: "Create a Page",
|
|
47
|
+
actions: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dialog.CancelAction, {
|
|
48
|
+
onClick: closeDialog,
|
|
49
|
+
text: "Cancel"
|
|
50
|
+
}), /*#__PURE__*/React.createElement(Dialog.ConfirmAction, {
|
|
51
|
+
onClick: handleSubmit,
|
|
52
|
+
text: "Create"
|
|
53
|
+
}))
|
|
54
|
+
}, vm.loading ? /*#__PURE__*/React.createElement(OverlayLoader, {
|
|
55
|
+
text: "Creating page..."
|
|
56
|
+
}) : null, /*#__PURE__*/React.createElement("div", {
|
|
57
|
+
className: "flex flex-col gap-4"
|
|
58
|
+
}, vm.pageTypes.length > 1 && /*#__PURE__*/React.createElement(Select, {
|
|
59
|
+
label: "Page Type",
|
|
60
|
+
value: vm.selectedPageType,
|
|
61
|
+
onChange: presenter.changePageType,
|
|
62
|
+
options: vm.pageTypes.map(pt => ({
|
|
63
|
+
label: pt.label,
|
|
64
|
+
value: pt.name
|
|
65
|
+
})),
|
|
66
|
+
displayResetAction: false
|
|
67
|
+
}), /*#__PURE__*/React.createElement(FormView, {
|
|
68
|
+
form: vm.form
|
|
69
|
+
})));
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=CreatePageDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","observer","useDialog","useOpenDialog","FormView","Dialog","Select","OverlayLoader","useFeature","useEditPageUrl","CreatePageFeature","createPageDialogParams","CREATE_PAGE_DIALOG","useCreatePageDialog","openDialog","folderId","CreatePageDialog","params","closeDialog","goToPageEditor","presenter","vm","init","handleSubmit","page","submit","id","createElement","open","onClose","title","actions","Fragment","CancelAction","onClick","text","ConfirmAction","loading","className","pageTypes","length","label","value","selectedPageType","onChange","changePageType","options","map","pt","name","displayResetAction","form"],"sources":["CreatePageDialog.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useDialog, useOpenDialog, FormView } from \"@webiny/app-admin\";\nimport { Dialog, Select, OverlayLoader } from \"@webiny/admin-ui\";\nimport { useFeature } from \"@webiny/app\";\nimport { useEditPageUrl } from \"~/modules/pages/PagesList/hooks/useEditPageUrl.js\";\nimport { CreatePageFeature } from \"./feature.js\";\nimport { createPageDialogParams } from \"./createPageSchema.js\";\n\nexport const CREATE_PAGE_DIALOG = \"createPage\";\n\nexport const useCreatePageDialog = () => {\n const { openDialog } = useOpenDialog(createPageDialogParams);\n\n return (folderId: string) => {\n openDialog(CREATE_PAGE_DIALOG, { folderId });\n };\n};\n\nexport const CreatePageDialog = observer(() => {\n const { params, closeDialog } = useDialog(createPageDialogParams);\n const { goToPageEditor } = useEditPageUrl();\n const { presenter } = useFeature(CreatePageFeature);\n const vm = presenter.vm;\n\n useEffect(() => {\n presenter.init(params.folderId);\n }, []);\n\n const handleSubmit = async () => {\n const page = await presenter.submit();\n if (!page) {\n return;\n }\n\n closeDialog();\n goToPageEditor(page.id);\n };\n\n return (\n <Dialog\n open={true}\n onClose={closeDialog}\n title=\"Create a Page\"\n actions={\n <>\n <Dialog.CancelAction onClick={closeDialog} text=\"Cancel\" />\n <Dialog.ConfirmAction onClick={handleSubmit} text=\"Create\" />\n </>\n }\n >\n {vm.loading ? <OverlayLoader text={\"Creating page...\"} /> : null}\n <div className=\"flex flex-col gap-4\">\n {vm.pageTypes.length > 1 && (\n <Select\n label=\"Page Type\"\n value={vm.selectedPageType}\n onChange={presenter.changePageType}\n options={vm.pageTypes.map(pt => ({\n label: pt.label,\n value: pt.name\n }))}\n displayResetAction={false}\n />\n )}\n <FormView form={vm.form} />\n </div>\n </Dialog>\n );\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IFormModelFactory } from "@webiny/app-admin";
|
|
2
|
+
import { CreatePageUseCase } from "../../../features/pages/createPage/abstractions.js";
|
|
3
|
+
import { CreatePagePresenter as PresenterAbstraction, PageTypeProvider, CreatePageFormModifier } from "./abstractions.js";
|
|
4
|
+
declare class CreatePagePresenterImpl implements PresenterAbstraction.Interface {
|
|
5
|
+
private factory;
|
|
6
|
+
private modifiers;
|
|
7
|
+
private createPage;
|
|
8
|
+
private readonly pageTypes;
|
|
9
|
+
private form;
|
|
10
|
+
private selectedPageType;
|
|
11
|
+
private folderId;
|
|
12
|
+
private loading;
|
|
13
|
+
constructor(factory: IFormModelFactory, pageTypeProvider: PageTypeProvider.Interface, modifiers: CreatePageFormModifier.Interface[], createPage: CreatePageUseCase.Interface);
|
|
14
|
+
get vm(): PresenterAbstraction.ViewModel;
|
|
15
|
+
init(folderId: string): void;
|
|
16
|
+
changePageType(pageType: string): void;
|
|
17
|
+
submit(): Promise<import("../../../domain/Page/Page.js").Page | null>;
|
|
18
|
+
private buildForm;
|
|
19
|
+
}
|
|
20
|
+
export declare const CreatePagePresenter: typeof CreatePagePresenterImpl & {
|
|
21
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreatePagePresenter>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { makeAutoObservable, computed, runInAction } from "mobx";
|
|
2
|
+
import { FormModelFactory } from "@webiny/app-admin";
|
|
3
|
+
import { CreatePageUseCase } from "../../../features/pages/createPage/abstractions.js";
|
|
4
|
+
import { CreatePagePresenter as PresenterAbstraction, PageTypeProvider, CreatePageFormModifier } from "./abstractions.js";
|
|
5
|
+
import { PagePath } from "../../../shared/PagePath.js";
|
|
6
|
+
class CreatePagePresenterImpl {
|
|
7
|
+
selectedPageType = "";
|
|
8
|
+
folderId = "";
|
|
9
|
+
loading = false;
|
|
10
|
+
constructor(factory, pageTypeProvider, modifiers, createPage) {
|
|
11
|
+
this.factory = factory;
|
|
12
|
+
this.modifiers = modifiers;
|
|
13
|
+
this.createPage = createPage;
|
|
14
|
+
this.pageTypes = pageTypeProvider.getPageTypes();
|
|
15
|
+
this.form = this.buildForm();
|
|
16
|
+
makeAutoObservable(this, {
|
|
17
|
+
vm: computed
|
|
18
|
+
}, {
|
|
19
|
+
autoBind: true
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
get vm() {
|
|
23
|
+
return {
|
|
24
|
+
form: this.form.vm,
|
|
25
|
+
pageTypes: this.pageTypes,
|
|
26
|
+
selectedPageType: this.selectedPageType,
|
|
27
|
+
loading: this.loading
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
init(folderId) {
|
|
31
|
+
this.folderId = folderId;
|
|
32
|
+
const staticPage = this.pageTypes.find(p => p.name === "static");
|
|
33
|
+
this.selectedPageType = staticPage ? "static" : this.pageTypes[0]?.name;
|
|
34
|
+
this.form = this.buildForm();
|
|
35
|
+
}
|
|
36
|
+
changePageType(pageType) {
|
|
37
|
+
const previousData = this.form.getData();
|
|
38
|
+
this.selectedPageType = pageType;
|
|
39
|
+
this.form = this.buildForm();
|
|
40
|
+
this.form.setData(previousData);
|
|
41
|
+
}
|
|
42
|
+
async submit() {
|
|
43
|
+
const data = await this.form.submit();
|
|
44
|
+
if (!data) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const input = {
|
|
48
|
+
location: {
|
|
49
|
+
folderId: String(data.folderId)
|
|
50
|
+
},
|
|
51
|
+
properties: {
|
|
52
|
+
title: data.title,
|
|
53
|
+
path: data.path
|
|
54
|
+
},
|
|
55
|
+
metadata: {
|
|
56
|
+
documentType: "page",
|
|
57
|
+
pageType: data.pageType
|
|
58
|
+
},
|
|
59
|
+
elements: {
|
|
60
|
+
root: {
|
|
61
|
+
type: "Webiny/Element",
|
|
62
|
+
id: "root",
|
|
63
|
+
component: {
|
|
64
|
+
name: "Webiny/Root"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Let the active page type map its form data.
|
|
71
|
+
const pageType = this.pageTypes.find(pt => pt.name === this.selectedPageType);
|
|
72
|
+
if (pageType?.mapFromForm) {
|
|
73
|
+
pageType.mapFromForm(data, input);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Let cross-cutting modifiers map their form data.
|
|
77
|
+
for (const modifier of this.modifiers) {
|
|
78
|
+
if (modifier.mapFromForm) {
|
|
79
|
+
modifier.mapFromForm(data, input);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
runInAction(() => {
|
|
83
|
+
this.loading = true;
|
|
84
|
+
});
|
|
85
|
+
try {
|
|
86
|
+
return await this.createPage.execute(input);
|
|
87
|
+
} finally {
|
|
88
|
+
runInAction(() => {
|
|
89
|
+
this.loading = false;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
buildForm() {
|
|
94
|
+
// Layer 1: Base form — always present regardless of page type
|
|
95
|
+
const form = this.factory.create({
|
|
96
|
+
fields: fields => ({
|
|
97
|
+
title: fields.text().label("Title").required("Title is required").onBlur((value, form) => {
|
|
98
|
+
const currentPath = form.field("path").getValue();
|
|
99
|
+
if (!PagePath.create(currentPath).isEmpty()) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const newPath = PagePath.fromTitle(String(value)).toString();
|
|
103
|
+
form.field("path").setValue(newPath);
|
|
104
|
+
}),
|
|
105
|
+
path: fields.text().label("Path").required("Path is required").beforeChange(value => {
|
|
106
|
+
return PagePath.create(String(value)).slugify().toString();
|
|
107
|
+
}),
|
|
108
|
+
pageType: fields.text().hidden().defaultValue(this.selectedPageType || "static"),
|
|
109
|
+
folderId: fields.text().hidden().defaultValue(this.folderId)
|
|
110
|
+
}),
|
|
111
|
+
layout: layout => [layout.row("title"), layout.row("path")]
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Layer 2: Apply the selected page type's modifications
|
|
115
|
+
const pageType = this.pageTypes.find(pt => pt.name === this.selectedPageType);
|
|
116
|
+
if (pageType && typeof pageType.modifyForm === "function") {
|
|
117
|
+
pageType.modifyForm(form);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Layer 3: Apply cross-cutting modifiers (Language, etc.)
|
|
121
|
+
for (const modifier of this.modifiers) {
|
|
122
|
+
modifier.modifyForm(form);
|
|
123
|
+
}
|
|
124
|
+
return form;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export const CreatePagePresenter = PresenterAbstraction.createImplementation({
|
|
128
|
+
implementation: CreatePagePresenterImpl,
|
|
129
|
+
dependencies: [FormModelFactory, PageTypeProvider, [CreatePageFormModifier, {
|
|
130
|
+
multiple: true
|
|
131
|
+
}], CreatePageUseCase]
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=CreatePagePresenter.js.map
|