From 47b7345f09239dfee8e78b65499686602342a736 Mon Sep 17 00:00:00 2001 From: griest024 Date: Mon, 3 Jun 2024 18:57:01 -0400 Subject: [PATCH] feat(daffio,dgeni): docsgen guides and move under `docs` namespace (#2824) - runs docsgen on the `/docs` folder as guides - move api and packages under the docs namespace in daffio - add guides route in daffio --- apps/daffio/src/app/api/api-routing.module.ts | 39 ----------- .../src/app/api/models/api-reference.ts | 9 --- apps/daffio/src/app/app-routing.module.ts | 42 +++-------- apps/daffio/src/app/app.module.ts | 2 - .../core/footer/footer/footer.component.ts | 2 +- .../simple-footer/simple-footer.component.ts | 2 +- .../docs-header/docs-header.component.ts | 5 +- .../marketing-header.component.ts | 2 +- .../docs-sidebar-content.component.ts | 5 +- .../marketing-sidebar-content.component.ts | 2 +- .../docs-sidebar/docs-sidebar.component.html | 8 ++- .../docs-sidebar.component.spec.ts | 43 +++++++++--- .../docs-sidebar/docs-sidebar.component.ts | 11 +++ .../docs-sidebar/docs-sidebar.module.ts | 26 ------- .../src/app/core/sidebar/sidebar.module.ts | 2 - .../src/app/docs/api/api-routing.module.ts | 53 ++++++++++++++ .../src/app/{ => docs}/api/api.module.ts | 2 +- .../components/api-list/api-list-theme.scss | 0 .../api-list/api-list.component.html | 0 .../api-list/api-list.component.scss | 6 +- .../api-list/api-list.component.spec.ts | 2 + .../components/api-list/api-list.component.ts | 0 .../components/api-list/api-list.module.ts | 0 .../src/app/{ => docs}/api/models/api-doc.ts | 2 +- .../src/app/docs/api/models/api-reference.ts | 9 +++ .../api-list-page.component.html | 0 .../api-list-page.component.scss | 0 .../api-list-page.component.spec.ts | 2 + .../api-list-page/api-list-page.component.ts | 0 .../pages/api-page/api-page.component.html | 0 .../pages/api-page/api-page.component.spec.ts | 4 +- .../api/pages/api-page/api-page.component.ts | 0 .../api-list-resolver.service.spec.ts | 0 .../resolvers/api-list-resolver.service.ts | 0 .../api/services/api-service.interface.ts | 0 .../api/services/api.service.spec.ts | 2 +- .../{ => docs}/api/services/api.service.ts | 6 +- .../doc-viewer/doc-viewer.component.html | 2 +- .../docs-list/docs-list.component.html | 11 +++ .../docs-list/docs-list.component.spec.ts} | 16 ++--- .../docs-list/docs-list.component.ts | 70 +++++++++++++++++++ .../src/app/docs/docs-routing.module.ts | 52 ++++++++++++++ apps/daffio/src/app/docs/docs.module.ts | 24 +++++++ .../guides-list/guides-list.component.html | 1 + .../guides-list/guides-list.component.spec.ts | 37 ++++++++++ .../guides-list/guides-list.component.ts | 35 ++++++++++ .../app/docs/guides/guides-routing.module.ts | 50 +++++++++++++ .../src/app/docs/guides/guides.module.ts | 10 +++ apps/daffio/src/app/docs/models/doc-list.ts | 8 +-- .../src/app/docs/models/packages-list.ts | 8 --- .../package-cards.component.html | 0 .../package-cards.component.scss | 0 .../package-cards.component.spec.ts | 0 .../package-cards/package-cards.component.ts | 0 .../package-cards/package-cards.module.ts | 0 .../package-cards.component.html | 0 .../package-cards.component.spec.ts | 0 .../package-cards/package-cards.component.ts | 17 +++-- .../package-cards/package-cards.module.ts | 0 .../packages-list.component.html | 1 + .../packages-list.component.spec.ts | 4 +- .../packages-list/packages-list.component.ts | 35 ++++++++++ .../docs/packages/packages-routing.module.ts | 51 ++++++++++++++ .../{ => docs}/packages/packages.module.ts | 5 -- .../packages-overview.component.html | 0 .../packages-overview.component.scss | 2 +- .../packages-overview.component.spec.ts | 0 .../packages-overview.component.ts | 0 .../pages/docs-page/docs-page.component.html | 1 + .../docs-page/docs-page.component.spec.ts} | 16 +++-- .../pages/docs-page/docs-page.component.ts | 36 ++++++++++ .../resolvers/docs-resolver.service.spec.ts | 10 +-- .../docs/resolvers/docs-resolver.service.ts | 4 +- .../src/app/docs/services/docs-path.token.ts | 2 +- .../docs/services/docs-service.interface.ts | 6 +- .../app/docs/services/docs.service.spec.ts | 8 +-- .../src/app/docs/services/docs.service.ts | 12 ++-- .../factories/packages-list.factory.ts | 4 +- .../named-views/models/named-views.enum.ts | 3 +- .../packages-list.component.html | 9 --- .../packages-list/packages-list.component.ts | 50 ------------- .../packages-list/packages-list.module.ts | 22 ------ .../packages-list.component.html | 1 - .../packages-list/packages-list.component.ts | 28 -------- .../packages-list/packages-list.module.ts | 21 ------ .../app/packages/packages-routing.module.ts | 37 ---------- .../package-page/package-page.component.html | 1 - .../package-page/package-page.component.ts | 26 ------- .../src/environments/environment.prod.ts | 2 +- apps/daffio/src/environments/environment.ts | 2 +- apps/daffio/src/scss/component-themes.scss | 2 +- tools/dgeni/build.ts | 10 ++- tools/dgeni/src/processors/generateApiList.ts | 2 +- tools/dgeni/src/transforms/config.ts | 1 + .../transforms/daffodil-base-package/index.ts | 5 +- .../daffodil-guides-package/index.ts | 70 +++++++++++++------ .../processors/generateGuideList.ts | 2 +- 97 files changed, 686 insertions(+), 434 deletions(-) delete mode 100644 apps/daffio/src/app/api/api-routing.module.ts delete mode 100644 apps/daffio/src/app/api/models/api-reference.ts delete mode 100644 apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.module.ts create mode 100644 apps/daffio/src/app/docs/api/api-routing.module.ts rename apps/daffio/src/app/{ => docs}/api/api.module.ts (91%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list-theme.scss (100%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list.component.html (100%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list.component.scss (94%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list.component.spec.ts (98%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list.component.ts (100%) rename apps/daffio/src/app/{ => docs}/api/components/api-list/api-list.module.ts (100%) rename apps/daffio/src/app/{ => docs}/api/models/api-doc.ts (73%) create mode 100644 apps/daffio/src/app/docs/api/models/api-reference.ts rename apps/daffio/src/app/{ => docs}/api/pages/api-list-page/api-list-page.component.html (100%) rename apps/daffio/src/app/{ => docs}/api/pages/api-list-page/api-list-page.component.scss (100%) rename apps/daffio/src/app/{ => docs}/api/pages/api-list-page/api-list-page.component.spec.ts (98%) rename apps/daffio/src/app/{ => docs}/api/pages/api-list-page/api-list-page.component.ts (100%) rename apps/daffio/src/app/{ => docs}/api/pages/api-page/api-page.component.html (100%) rename apps/daffio/src/app/{ => docs}/api/pages/api-page/api-page.component.spec.ts (93%) rename apps/daffio/src/app/{ => docs}/api/pages/api-page/api-page.component.ts (100%) rename apps/daffio/src/app/{ => docs}/api/resolvers/api-list-resolver.service.spec.ts (100%) rename apps/daffio/src/app/{ => docs}/api/resolvers/api-list-resolver.service.ts (100%) rename apps/daffio/src/app/{ => docs}/api/services/api-service.interface.ts (100%) rename apps/daffio/src/app/{ => docs}/api/services/api.service.spec.ts (95%) rename apps/daffio/src/app/{ => docs}/api/services/api.service.ts (81%) create mode 100644 apps/daffio/src/app/docs/components/docs-list/docs-list.component.html rename apps/daffio/src/app/{packages/components/packages-list/packages-list.component.spec.ts => docs/components/docs-list/docs-list.component.spec.ts} (78%) create mode 100644 apps/daffio/src/app/docs/components/docs-list/docs-list.component.ts create mode 100644 apps/daffio/src/app/docs/docs-routing.module.ts create mode 100644 apps/daffio/src/app/docs/docs.module.ts create mode 100644 apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.html create mode 100644 apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.spec.ts create mode 100644 apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.ts create mode 100644 apps/daffio/src/app/docs/guides/guides-routing.module.ts create mode 100644 apps/daffio/src/app/docs/guides/guides.module.ts delete mode 100644 apps/daffio/src/app/docs/models/packages-list.ts rename apps/daffio/src/app/{ => docs}/packages/components/package-cards/package-cards.component.html (100%) rename apps/daffio/src/app/{ => docs}/packages/components/package-cards/package-cards.component.scss (100%) rename apps/daffio/src/app/{ => docs}/packages/components/package-cards/package-cards.component.spec.ts (100%) rename apps/daffio/src/app/{ => docs}/packages/components/package-cards/package-cards.component.ts (100%) rename apps/daffio/src/app/{ => docs}/packages/components/package-cards/package-cards.module.ts (100%) rename apps/daffio/src/app/{ => docs}/packages/containers/package-cards/package-cards.component.html (100%) rename apps/daffio/src/app/{ => docs}/packages/containers/package-cards/package-cards.component.spec.ts (100%) rename apps/daffio/src/app/{ => docs}/packages/containers/package-cards/package-cards.component.ts (60%) rename apps/daffio/src/app/{ => docs}/packages/containers/package-cards/package-cards.module.ts (100%) create mode 100644 apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.html rename apps/daffio/src/app/{ => docs}/packages/containers/packages-list/packages-list.component.spec.ts (97%) create mode 100644 apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.ts create mode 100644 apps/daffio/src/app/docs/packages/packages-routing.module.ts rename apps/daffio/src/app/{ => docs}/packages/packages.module.ts (76%) rename apps/daffio/src/app/{ => docs}/packages/pages/packages-overview/packages-overview.component.html (100%) rename apps/daffio/src/app/{ => docs}/packages/pages/packages-overview/packages-overview.component.scss (99%) rename apps/daffio/src/app/{ => docs}/packages/pages/packages-overview/packages-overview.component.spec.ts (100%) rename apps/daffio/src/app/{ => docs}/packages/pages/packages-overview/packages-overview.component.ts (100%) create mode 100644 apps/daffio/src/app/docs/pages/docs-page/docs-page.component.html rename apps/daffio/src/app/{packages/pages/package-page/package-page.component.spec.ts => docs/pages/docs-page/docs-page.component.spec.ts} (79%) create mode 100644 apps/daffio/src/app/docs/pages/docs-page/docs-page.component.ts delete mode 100644 apps/daffio/src/app/packages/components/packages-list/packages-list.component.html delete mode 100644 apps/daffio/src/app/packages/components/packages-list/packages-list.component.ts delete mode 100644 apps/daffio/src/app/packages/components/packages-list/packages-list.module.ts delete mode 100644 apps/daffio/src/app/packages/containers/packages-list/packages-list.component.html delete mode 100644 apps/daffio/src/app/packages/containers/packages-list/packages-list.component.ts delete mode 100644 apps/daffio/src/app/packages/containers/packages-list/packages-list.module.ts delete mode 100644 apps/daffio/src/app/packages/packages-routing.module.ts delete mode 100644 apps/daffio/src/app/packages/pages/package-page/package-page.component.html delete mode 100644 apps/daffio/src/app/packages/pages/package-page/package-page.component.ts diff --git a/apps/daffio/src/app/api/api-routing.module.ts b/apps/daffio/src/app/api/api-routing.module.ts deleted file mode 100644 index ef16409f97..0000000000 --- a/apps/daffio/src/app/api/api-routing.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule } from '@angular/core'; -import { - Routes, - RouterModule, -} from '@angular/router'; - -import { DaffRouteWithNamedViews } from '@daffodil/router'; - -import { DaffioApiListPageComponent } from './pages/api-list-page/api-list-page.component'; -import { DaffioApiPageComponent } from './pages/api-page/api-page.component'; -import { DaffioApiListResolver } from './resolvers/api-list-resolver.service'; -import { DocsResolver } from '../docs/resolvers/docs-resolver.service'; - -export const apiRoutes: Routes = [ - { - path: '', - component: DaffioApiListPageComponent, - resolve: { - reference: DaffioApiListResolver, - }, - }, - { - path: '**', - component: DaffioApiPageComponent, - resolve: { - doc: DocsResolver, - }, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(apiRoutes), - ], - exports: [ - RouterModule, - ], -}) -export class DaffioDocsApiRoutingModule {} diff --git a/apps/daffio/src/app/api/models/api-reference.ts b/apps/daffio/src/app/api/models/api-reference.ts deleted file mode 100644 index eb9855c7de..0000000000 --- a/apps/daffio/src/app/api/models/api-reference.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DaffioDocList } from '../../docs/models/doc-list'; - -/** - * An object for a reference to an API document. - */ -export interface DaffioApiReference extends DaffioDocList { - docType: string; - docTypeShorthand: string; -} diff --git a/apps/daffio/src/app/app-routing.module.ts b/apps/daffio/src/app/app-routing.module.ts index 3598f98446..dc1f703083 100644 --- a/apps/daffio/src/app/app-routing.module.ts +++ b/apps/daffio/src/app/app-routing.module.ts @@ -7,20 +7,23 @@ import { import { DaffRouteWithNamedViews } from '@daffodil/router'; import { DaffioMarketingFooterComponent } from './core/footer/marketing-footer/marketing-footer.component'; -import { DaffioSimpleFooterComponent } from './core/footer/simple-footer/simple-footer.component'; -import { DaffioDocsHeaderContainer } from './core/header/containers/docs-header/docs-header.component'; import { DaffioMarketingHeaderContainer } from './core/header/containers/marketing-header/marketing-header.component'; -import { DaffioDocsSidebarContentComponent } from './core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component'; import { DaffioMarketingSidebarContentComponent } from './core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.component'; import { DaffioSidebarFooterComponent } from './core/sidebar/components/sidebar-footer/sidebar-footer.component'; import { DaffioSidebarHeaderComponent } from './core/sidebar/components/sidebar-header/sidebar-header.component'; -import { DaffioDocsSidebarContainer } from './core/sidebar/containers/docs-sidebar/docs-sidebar.component'; import { TemplateComponent } from './core/template/template.component'; import { DaffioRouterNamedViewsEnum } from './named-views/models/named-views.enum'; export const appRoutes: Routes = [ { - path: '', component: TemplateComponent, + path: '', + component: TemplateComponent, + data: { + daffNamedViews: { + [DaffioRouterNamedViewsEnum.SIDEBARHEADER]: DaffioSidebarHeaderComponent, + [DaffioRouterNamedViewsEnum.SIDEBARFOOTER]: DaffioSidebarFooterComponent, + }, + }, children: [ { path: '', @@ -33,41 +36,16 @@ export const appRoutes: Routes = [ data: { daffNamedViews: { [DaffioRouterNamedViewsEnum.NAV]: DaffioMarketingHeaderContainer, - [DaffioRouterNamedViewsEnum.SIDEBARHEADER]: DaffioSidebarHeaderComponent, [DaffioRouterNamedViewsEnum.SIDEBARCONTENT]: DaffioMarketingSidebarContentComponent, - [DaffioRouterNamedViewsEnum.SIDEBARFOOTER]: DaffioSidebarFooterComponent, [DaffioRouterNamedViewsEnum.FOOTER]: DaffioMarketingFooterComponent, }, }, }, - { + { path: '', children: [ - { path: 'api', loadChildren: () => import('./api/api.module').then(m => m.DaffioApiModule) }, + { path: 'docs', loadChildren: () => import('./docs/docs.module').then(m => m.DaffioDocssModule) }, ], - data: { - daffNamedViews: { - [DaffioRouterNamedViewsEnum.NAV]: DaffioDocsHeaderContainer, - [DaffioRouterNamedViewsEnum.SIDEBARHEADER]: DaffioSidebarHeaderComponent, - [DaffioRouterNamedViewsEnum.SIDEBARCONTENT]: DaffioDocsSidebarContentComponent, - [DaffioRouterNamedViewsEnum.SIDEBARFOOTER]: DaffioSidebarFooterComponent, - [DaffioRouterNamedViewsEnum.FOOTER]: DaffioSimpleFooterComponent, - }, - }, - }, - { - path: '', - children: [ - { path: 'packages', loadChildren: () => import('./packages/packages.module').then(m => m.DaffioPackagesModule) }, - ], - data: { - daffNamedViews: { - [DaffioRouterNamedViewsEnum.NAV]: DaffioDocsHeaderContainer, - [DaffioRouterNamedViewsEnum.SIDEBARHEADER]: DaffioSidebarHeaderComponent, - [DaffioRouterNamedViewsEnum.SIDEBARCONTENT]: DaffioDocsSidebarContainer, - [DaffioRouterNamedViewsEnum.SIDEBARFOOTER]: DaffioSidebarFooterComponent, - }, - }, }, ], }, diff --git a/apps/daffio/src/app/app.module.ts b/apps/daffio/src/app/app.module.ts index 223ad59519..dddd8314be 100644 --- a/apps/daffio/src/app/app.module.ts +++ b/apps/daffio/src/app/app.module.ts @@ -26,7 +26,6 @@ import { DaffioDocsSidebarContentComponentModule } from './core/sidebar/componen import { DaffioMarketingSidebarContentComponentModule } from './core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.module'; import { DaffioSidebarFooterComponentModule } from './core/sidebar/components/sidebar-footer/sidebar-footer.module'; import { DaffioSidebarHeaderComponentModule } from './core/sidebar/components/sidebar-header/sidebar-header.module'; -import { DaffioDocsSidebarContainerModule } from './core/sidebar/containers/docs-sidebar/docs-sidebar.module'; import { TemplateModule } from './core/template/template.module'; import { environment } from '../environments/environment'; @@ -48,7 +47,6 @@ import { environment } from '../environments/environment'; DaffioSidebarFooterComponentModule, DaffioSimpleFooterComponentModule, DaffioMarketingFooterComponentModule, - DaffioDocsSidebarContainerModule, //Make sure this loads after Router and Store StoreRouterConnectingModule.forRoot({ serializer: FullRouterStateSerializer, diff --git a/apps/daffio/src/app/core/footer/footer/footer.component.ts b/apps/daffio/src/app/core/footer/footer/footer.component.ts index a2d3b66194..7a96ade277 100644 --- a/apps/daffio/src/app/core/footer/footer/footer.component.ts +++ b/apps/daffio/src/app/core/footer/footer/footer.component.ts @@ -22,7 +22,7 @@ export class DaffioFooterComponent { links: any[] = [ { path: '/why-pwa', title: 'Why PWA' }, - { path: '/packages', title: 'Docs' }, + { path: '/docs', title: 'Docs' }, { path: '/support', title: 'Support' }, ]; diff --git a/apps/daffio/src/app/core/footer/simple-footer/simple-footer.component.ts b/apps/daffio/src/app/core/footer/simple-footer/simple-footer.component.ts index 0af310dd9c..34274b5e0f 100644 --- a/apps/daffio/src/app/core/footer/simple-footer/simple-footer.component.ts +++ b/apps/daffio/src/app/core/footer/simple-footer/simple-footer.component.ts @@ -22,7 +22,7 @@ export class DaffioSimpleFooterComponent { links: any[] = [ { path: '/why-pwa', title: 'Why PWA' }, - { path: '/packages', title: 'Docs' }, + { path: '/docs', title: 'Docs' }, { path: '/support', title: 'Support' }, ]; diff --git a/apps/daffio/src/app/core/header/containers/docs-header/docs-header.component.ts b/apps/daffio/src/app/core/header/containers/docs-header/docs-header.component.ts index c73f7bd8cb..de88acb367 100644 --- a/apps/daffio/src/app/core/header/containers/docs-header/docs-header.component.ts +++ b/apps/daffio/src/app/core/header/containers/docs-header/docs-header.component.ts @@ -17,8 +17,9 @@ export class DaffioDocsHeaderContainer { faBars = faBars; links: any[] = [ - { path: '/packages', title: 'Packages' }, - { path: '/api', title: 'API Index' }, + { path: '/docs/guides', title: 'Guides' }, + { path: '/docs/packages', title: 'Packages' }, + { path: '/docs/api', title: 'API Index' }, ]; constructor(private store: Store) { } diff --git a/apps/daffio/src/app/core/header/containers/marketing-header/marketing-header.component.ts b/apps/daffio/src/app/core/header/containers/marketing-header/marketing-header.component.ts index add749f97d..4096835ac9 100644 --- a/apps/daffio/src/app/core/header/containers/marketing-header/marketing-header.component.ts +++ b/apps/daffio/src/app/core/header/containers/marketing-header/marketing-header.component.ts @@ -18,7 +18,7 @@ export class DaffioMarketingHeaderContainer { links: any[] = [ { path: '/why-pwa', title: 'Why PWA' }, - { path: '/packages', title: 'Docs' }, + { path: '/docs', title: 'Docs' }, ]; constructor(private store: Store) { } diff --git a/apps/daffio/src/app/core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component.ts b/apps/daffio/src/app/core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component.ts index 5dfe724a8b..bef543db75 100644 --- a/apps/daffio/src/app/core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component.ts +++ b/apps/daffio/src/app/core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component.ts @@ -11,7 +11,8 @@ import { }) export class DaffioDocsSidebarContentComponent { links: any[] = [ - { path: '/packages', title: 'Packages' }, - { path: '/api', title: 'API Index' }, + { path: '/docs/guides', title: 'Guides' }, + { path: '/docs/packages', title: 'Packages' }, + { path: '/docs/api', title: 'API Index' }, ]; } diff --git a/apps/daffio/src/app/core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.component.ts b/apps/daffio/src/app/core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.component.ts index 16f4ce5248..32d891f37d 100644 --- a/apps/daffio/src/app/core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.component.ts +++ b/apps/daffio/src/app/core/sidebar/components/marketing-sidebar-content/marketing-sidebar-content.component.ts @@ -12,6 +12,6 @@ import { export class DaffioMarketingSidebarContentComponent { links: any[] = [ { path: '/why-pwa', title: 'Why PWA' }, - { path: '/packages', title: 'Docs' }, + { path: '/docs', title: 'Docs' }, ]; } diff --git a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.html b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.html index bd64d62e6f..684af28a6c 100644 --- a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.html +++ b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.html @@ -1,6 +1,10 @@ - - + @if (isBigTablet || sidebarKind === contentSidebarKind) { + + } + @if (!isBigTablet && !sidebarKind) { + + } diff --git a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.spec.ts b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.spec.ts index 9ec5ace770..f3c19ae3c4 100644 --- a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.spec.ts +++ b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.spec.ts @@ -3,6 +3,7 @@ import { BreakpointState, } from '@angular/cdk/layout'; import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { Component } from '@angular/core'; import { ComponentFixture, TestBed, @@ -18,15 +19,22 @@ import { import { BehaviorSubject } from 'rxjs'; import { DaffBreakpoints } from '@daffodil/design'; +import { + DaffRouterNamedViewService, + DaffRouterNamedViews, +} from '@daffodil/router'; import { DAFFIO_DOCS_CONTENT_SIDEBAR_KIND, DaffioDocsSidebarContainer, } from './docs-sidebar.component'; -import { DaffioDocsPackagesListContainerModule } from '../../../../packages/containers/packages-list/packages-list.module'; +import { DaffioRouterNamedViewsEnum } from '../../../../named-views/models/named-views.enum'; import { DaffioDocsSidebarContentComponentModule } from '../../components/docs-sidebar-content/docs-sidebar-content.module'; import { selectSidebarKind } from '../../reducers'; +@Component({ template: '', standalone: true }) +class TestComponent {} + describe('DaffioDocsSidebarContainer', () => { let component: DaffioDocsSidebarContainer; let fixture: ComponentFixture; @@ -34,7 +42,12 @@ describe('DaffioDocsSidebarContainer', () => { let breakpointSpy: jasmine.SpyObj; let breakpointState: BehaviorSubject; + let namedViewServiceSpy: jasmine.SpyObj; + let namedViews: BehaviorSubject; + beforeEach(waitForAsync(() => { + namedViews = new BehaviorSubject({}); + namedViewServiceSpy = jasmine.createSpyObj('DaffRouterNamedViewService', {}, { namedViews$: namedViews }); breakpointSpy = jasmine.createSpyObj('BreakpointObserver', ['observe']); TestBed.configureTestingModule({ @@ -42,10 +55,7 @@ describe('DaffioDocsSidebarContainer', () => { LetDirective, RouterTestingModule, HttpClientTestingModule, - DaffioDocsPackagesListContainerModule, DaffioDocsSidebarContentComponentModule, - ], - declarations: [ DaffioDocsSidebarContainer, ], providers: [ @@ -54,6 +64,10 @@ describe('DaffioDocsSidebarContainer', () => { provide: BreakpointObserver, useValue: breakpointSpy, }, + { + provide: DaffRouterNamedViewService, + useValue: namedViewServiceSpy, + }, ], }) .compileComponents(); @@ -92,11 +106,14 @@ describe('DaffioDocsSidebarContainer', () => { beforeEach(() => { store.overrideSelector(selectSidebarKind, undefined); store.setState({}); + namedViews.next({ + [DaffioRouterNamedViewsEnum.DOCS_SIDEBAR]: TestComponent, + }); fixture.detectChanges(); }); - it('should render ', () => { - expect(fixture.debugElement.query(By.css('daffio-docs-packages-list-container'))).toBeTruthy(); + it('should render the docs sidebar content', () => { + expect(fixture.debugElement.query(By.directive(TestComponent))).toBeTruthy(); }); }); @@ -104,11 +121,14 @@ describe('DaffioDocsSidebarContainer', () => { beforeEach(() => { store.overrideSelector(selectSidebarKind, DAFFIO_DOCS_CONTENT_SIDEBAR_KIND); store.setState({}); + namedViews.next({ + [DaffioRouterNamedViewsEnum.DOCS_SIDEBAR]: TestComponent, + }); fixture.detectChanges(); }); - it('should render ', () => { - expect(fixture.debugElement.query(By.css('daffio-docs-packages-list-container'))).toBeTruthy(); + it('should render the docs sidebar content', () => { + expect(fixture.debugElement.query(By.directive(TestComponent))).toBeTruthy(); }); }); }); @@ -138,11 +158,14 @@ describe('DaffioDocsSidebarContainer', () => { beforeEach(() => { store.overrideSelector(selectSidebarKind, DAFFIO_DOCS_CONTENT_SIDEBAR_KIND); store.setState({}); + namedViews.next({ + [DaffioRouterNamedViewsEnum.DOCS_SIDEBAR]: TestComponent, + }); fixture.detectChanges(); }); - it('should render ', () => { - expect(fixture.debugElement.query(By.css('daffio-docs-packages-list-container'))).toBeTruthy(); + it('should render the docs sidebar content', () => { + expect(fixture.debugElement.query(By.directive(TestComponent))).toBeTruthy(); }); }); }); diff --git a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.ts b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.ts index 1d1893092a..f7d29c6d63 100644 --- a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.ts +++ b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.component.ts @@ -4,6 +4,7 @@ import { Component, OnInit, } from '@angular/core'; +import { LetDirective } from '@ngrx/component'; import { select, Store, @@ -14,7 +15,10 @@ import { } from 'rxjs'; import { DaffBreakpoints } from '@daffodil/design'; +import { DaffRouterNamedViewOutletModule } from '@daffodil/router'; +import { DaffioRouterNamedViewsEnum } from '../../../../named-views/models/named-views.enum'; +import { DaffioDocsSidebarContentComponentModule } from '../../components/docs-sidebar-content/docs-sidebar-content.module'; import { selectSidebarKind } from '../../reducers'; export const DAFFIO_DOCS_CONTENT_SIDEBAR_KIND = 'content'; @@ -27,9 +31,16 @@ export const DAFFIO_DOCS_CONTENT_SIDEBAR_KIND = 'content'; selector: 'daffio-docs-sidebar-container', templateUrl: './docs-sidebar.component.html', changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + LetDirective, + DaffRouterNamedViewOutletModule, + DaffioDocsSidebarContentComponentModule, + ], }) export class DaffioDocsSidebarContainer implements OnInit { contentSidebarKind = DAFFIO_DOCS_CONTENT_SIDEBAR_KIND; + readonly docsSidebarNamedView = DaffioRouterNamedViewsEnum.DOCS_SIDEBAR; constructor( private store: Store, diff --git a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.module.ts b/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.module.ts deleted file mode 100644 index 5c94ba9551..0000000000 --- a/apps/daffio/src/app/core/sidebar/containers/docs-sidebar/docs-sidebar.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { LetDirective } from '@ngrx/component'; - -import { DaffioDocsSidebarContainer } from './docs-sidebar.component'; -import { DaffioDocsPackagesListContainerModule } from '../../../../packages/containers/packages-list/packages-list.module'; -import { DaffioDocsSidebarContentComponentModule } from '../../components/docs-sidebar-content/docs-sidebar-content.module'; - -@NgModule({ - imports: [ - CommonModule, - RouterModule, - LetDirective, - - DaffioDocsPackagesListContainerModule, - DaffioDocsSidebarContentComponentModule, - ], - declarations: [ - DaffioDocsSidebarContainer, - ], - exports: [ - DaffioDocsSidebarContainer, - ], -}) -export class DaffioDocsSidebarContainerModule {} diff --git a/apps/daffio/src/app/core/sidebar/sidebar.module.ts b/apps/daffio/src/app/core/sidebar/sidebar.module.ts index d251fef8c0..b49b5ee7a1 100644 --- a/apps/daffio/src/app/core/sidebar/sidebar.module.ts +++ b/apps/daffio/src/app/core/sidebar/sidebar.module.ts @@ -9,7 +9,6 @@ import { DaffRouterNamedViewOutletModule } from '@daffodil/router'; import { DaffioSidebarViewportContainer } from './containers/sidebar-viewport/sidebar-viewport.component'; import { DaffioSidebarStateModule } from './sidebar.state.module'; -import { DaffioDocsPackagesListContainerModule } from '../../packages/containers/packages-list/packages-list.module'; @NgModule({ imports: [ @@ -21,7 +20,6 @@ import { DaffioDocsPackagesListContainerModule } from '../../packages/containers DaffButtonModule, DaffioSidebarStateModule, - DaffioDocsPackagesListContainerModule, DaffRouterNamedViewOutletModule, ], declarations: [ diff --git a/apps/daffio/src/app/docs/api/api-routing.module.ts b/apps/daffio/src/app/docs/api/api-routing.module.ts new file mode 100644 index 0000000000..434c4de783 --- /dev/null +++ b/apps/daffio/src/app/docs/api/api-routing.module.ts @@ -0,0 +1,53 @@ +import { NgModule } from '@angular/core'; +import { + Routes, + RouterModule, +} from '@angular/router'; + +import { DaffRouteWithNamedViews } from '@daffodil/router'; + +import { DaffioApiListPageComponent } from './pages/api-list-page/api-list-page.component'; +import { DaffioApiPageComponent } from './pages/api-page/api-page.component'; +import { DaffioApiListResolver } from './resolvers/api-list-resolver.service'; +import { DaffioSimpleFooterComponent } from '../../core/footer/simple-footer/simple-footer.component'; +import { DaffioDocsSidebarContentComponent } from '../../core/sidebar/components/docs-sidebar-content/docs-sidebar-content.component'; +import { DaffioRouterNamedViewsEnum } from '../../named-views/models/named-views.enum'; +import { DocsResolver } from '../resolvers/docs-resolver.service'; + +export const apiRoutes: Routes = [ + { + path: '', + data: { + daffNamedViews: { + [DaffioRouterNamedViewsEnum.SIDEBARCONTENT]: DaffioDocsSidebarContentComponent, + [DaffioRouterNamedViewsEnum.FOOTER]: DaffioSimpleFooterComponent, + }, + }, + children: [ + { + path: '', + component: DaffioApiListPageComponent, + resolve: { + reference: DaffioApiListResolver, + }, + }, + { + path: '**', + component: DaffioApiPageComponent, + resolve: { + doc: DocsResolver, + }, + }, + ], + }, +]; + +@NgModule({ + imports: [ + RouterModule.forChild(apiRoutes), + ], + exports: [ + RouterModule, + ], +}) +export class DaffioDocsApiRoutingModule {} diff --git a/apps/daffio/src/app/api/api.module.ts b/apps/daffio/src/app/docs/api/api.module.ts similarity index 91% rename from apps/daffio/src/app/api/api.module.ts rename to apps/daffio/src/app/docs/api/api.module.ts index 8f126ce51e..d553114d7a 100644 --- a/apps/daffio/src/app/api/api.module.ts +++ b/apps/daffio/src/app/docs/api/api.module.ts @@ -8,7 +8,7 @@ import { DaffioDocsApiRoutingModule } from './api-routing.module'; import { DaffioApiListModule } from './components/api-list/api-list.module'; import { DaffioApiListPageComponent } from './pages/api-list-page/api-list-page.component'; import { DaffioApiPageComponent } from './pages/api-page/api-page.component'; -import { DaffioDocViewerModule } from '../docs/components/doc-viewer/doc-viewer.module'; +import { DaffioDocViewerModule } from '../components/doc-viewer/doc-viewer.module'; @NgModule({ imports: [ diff --git a/apps/daffio/src/app/api/components/api-list/api-list-theme.scss b/apps/daffio/src/app/docs/api/components/api-list/api-list-theme.scss similarity index 100% rename from apps/daffio/src/app/api/components/api-list/api-list-theme.scss rename to apps/daffio/src/app/docs/api/components/api-list/api-list-theme.scss diff --git a/apps/daffio/src/app/api/components/api-list/api-list.component.html b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.html similarity index 100% rename from apps/daffio/src/app/api/components/api-list/api-list.component.html rename to apps/daffio/src/app/docs/api/components/api-list/api-list.component.html diff --git a/apps/daffio/src/app/api/components/api-list/api-list.component.scss b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.scss similarity index 94% rename from apps/daffio/src/app/api/components/api-list/api-list.component.scss rename to apps/daffio/src/app/docs/api/components/api-list/api-list.component.scss index 8925af61e7..e8b47f0ef0 100644 --- a/apps/daffio/src/app/api/components/api-list/api-list.component.scss +++ b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.scss @@ -1,4 +1,4 @@ -@use '../../../../scss/type-descriptors/mixins' as type-mixin; +@use '../../../../../scss/type-descriptors/mixins' as type-mixin; @use 'utilities' as daff; $api-list-item-border-radius: 4px; @@ -66,7 +66,7 @@ $api-list-item-border-radius: 4px; padding: 8px; position: relative; - &:after { + &::after { content: ''; border-radius: $api-list-item-border-radius; position: absolute; @@ -80,7 +80,7 @@ $api-list-item-border-radius: 4px; } &:hover { - &:after { + &::after { opacity: 1; } } diff --git a/apps/daffio/src/app/api/components/api-list/api-list.component.spec.ts b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.spec.ts similarity index 98% rename from apps/daffio/src/app/api/components/api-list/api-list.component.spec.ts rename to apps/daffio/src/app/docs/api/components/api-list/api-list.component.spec.ts index 2f11e9f79d..e123fd09d7 100644 --- a/apps/daffio/src/app/api/components/api-list/api-list.component.spec.ts +++ b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.spec.ts @@ -21,6 +21,7 @@ class WrapperComponent { path: 'path1', docType: 'docType1', docTypeShorthand: 'doc', + children: [], }, { id: 'name2', @@ -28,6 +29,7 @@ class WrapperComponent { path: 'path2', docType: 'docType2', docTypeShorthand: 'doc', + children: [], }, ]; } diff --git a/apps/daffio/src/app/api/components/api-list/api-list.component.ts b/apps/daffio/src/app/docs/api/components/api-list/api-list.component.ts similarity index 100% rename from apps/daffio/src/app/api/components/api-list/api-list.component.ts rename to apps/daffio/src/app/docs/api/components/api-list/api-list.component.ts diff --git a/apps/daffio/src/app/api/components/api-list/api-list.module.ts b/apps/daffio/src/app/docs/api/components/api-list/api-list.module.ts similarity index 100% rename from apps/daffio/src/app/api/components/api-list/api-list.module.ts rename to apps/daffio/src/app/docs/api/components/api-list/api-list.module.ts diff --git a/apps/daffio/src/app/api/models/api-doc.ts b/apps/daffio/src/app/docs/api/models/api-doc.ts similarity index 73% rename from apps/daffio/src/app/api/models/api-doc.ts rename to apps/daffio/src/app/docs/api/models/api-doc.ts index c84ecb9579..613b598341 100644 --- a/apps/daffio/src/app/api/models/api-doc.ts +++ b/apps/daffio/src/app/docs/api/models/api-doc.ts @@ -1,4 +1,4 @@ -import { DaffioDoc } from '../../docs/models/doc'; +import { DaffioDoc } from '../../models/doc'; /** * An object for an API document. diff --git a/apps/daffio/src/app/docs/api/models/api-reference.ts b/apps/daffio/src/app/docs/api/models/api-reference.ts new file mode 100644 index 0000000000..dc3ab0c50f --- /dev/null +++ b/apps/daffio/src/app/docs/api/models/api-reference.ts @@ -0,0 +1,9 @@ +import { DaffioGenericDocList } from '../../models/doc-list'; + +/** + * An object for a reference to an API document. + */ +export interface DaffioApiReference extends DaffioGenericDocList { + docType: string; + docTypeShorthand: string; +} diff --git a/apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.html b/apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.html similarity index 100% rename from apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.html rename to apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.html diff --git a/apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.scss b/apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.scss similarity index 100% rename from apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.scss rename to apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.scss diff --git a/apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.spec.ts b/apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.spec.ts similarity index 98% rename from apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.spec.ts rename to apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.spec.ts index c18cb3ec8b..2dff5b62ba 100644 --- a/apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.spec.ts +++ b/apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.spec.ts @@ -43,6 +43,7 @@ describe('DaffioApiListPageComponent', () => { path: 'path1', docType: 'docType1', docTypeShorthand: 'dt', + children: [], }, { id: 'name2Module', @@ -50,6 +51,7 @@ describe('DaffioApiListPageComponent', () => { path: 'path2', docType: 'docType2', docTypeShorthand: 'dt', + children: [], }, ]; diff --git a/apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.ts b/apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.ts similarity index 100% rename from apps/daffio/src/app/api/pages/api-list-page/api-list-page.component.ts rename to apps/daffio/src/app/docs/api/pages/api-list-page/api-list-page.component.ts diff --git a/apps/daffio/src/app/api/pages/api-page/api-page.component.html b/apps/daffio/src/app/docs/api/pages/api-page/api-page.component.html similarity index 100% rename from apps/daffio/src/app/api/pages/api-page/api-page.component.html rename to apps/daffio/src/app/docs/api/pages/api-page/api-page.component.html diff --git a/apps/daffio/src/app/api/pages/api-page/api-page.component.spec.ts b/apps/daffio/src/app/docs/api/pages/api-page/api-page.component.spec.ts similarity index 93% rename from apps/daffio/src/app/api/pages/api-page/api-page.component.spec.ts rename to apps/daffio/src/app/docs/api/pages/api-page/api-page.component.spec.ts index d9637c38a7..f1e8afc7c9 100644 --- a/apps/daffio/src/app/api/pages/api-page/api-page.component.spec.ts +++ b/apps/daffio/src/app/docs/api/pages/api-page/api-page.component.spec.ts @@ -14,8 +14,8 @@ import { cold } from 'jasmine-marbles'; import { BehaviorSubject } from 'rxjs'; import { DaffioApiPageComponent } from './api-page.component'; -import { DaffioDoc } from '../../../docs/models/doc'; -import { DaffioDocsFactory } from '../../../docs/testing/factories/docs.factory'; +import { DaffioDoc } from '../../../models/doc'; +import { DaffioDocsFactory } from '../../../testing/factories/docs.factory'; @Component({ selector: 'daffio-doc-viewer', template: '' }) class MockDaffioDocViewerComponent { diff --git a/apps/daffio/src/app/api/pages/api-page/api-page.component.ts b/apps/daffio/src/app/docs/api/pages/api-page/api-page.component.ts similarity index 100% rename from apps/daffio/src/app/api/pages/api-page/api-page.component.ts rename to apps/daffio/src/app/docs/api/pages/api-page/api-page.component.ts diff --git a/apps/daffio/src/app/api/resolvers/api-list-resolver.service.spec.ts b/apps/daffio/src/app/docs/api/resolvers/api-list-resolver.service.spec.ts similarity index 100% rename from apps/daffio/src/app/api/resolvers/api-list-resolver.service.spec.ts rename to apps/daffio/src/app/docs/api/resolvers/api-list-resolver.service.spec.ts diff --git a/apps/daffio/src/app/api/resolvers/api-list-resolver.service.ts b/apps/daffio/src/app/docs/api/resolvers/api-list-resolver.service.ts similarity index 100% rename from apps/daffio/src/app/api/resolvers/api-list-resolver.service.ts rename to apps/daffio/src/app/docs/api/resolvers/api-list-resolver.service.ts diff --git a/apps/daffio/src/app/api/services/api-service.interface.ts b/apps/daffio/src/app/docs/api/services/api-service.interface.ts similarity index 100% rename from apps/daffio/src/app/api/services/api-service.interface.ts rename to apps/daffio/src/app/docs/api/services/api-service.interface.ts diff --git a/apps/daffio/src/app/api/services/api.service.spec.ts b/apps/daffio/src/app/docs/api/services/api.service.spec.ts similarity index 95% rename from apps/daffio/src/app/api/services/api.service.spec.ts rename to apps/daffio/src/app/docs/api/services/api.service.spec.ts index 81be6695cb..76540d77b7 100644 --- a/apps/daffio/src/app/api/services/api.service.spec.ts +++ b/apps/daffio/src/app/docs/api/services/api.service.spec.ts @@ -5,7 +5,7 @@ import { DaffioApiService } from './api.service'; import { DaffioAssetFetchServiceInterface, DaffioAssetFetchService, -} from '../../core/assets/fetch/service.interface'; +} from '../../../core/assets/fetch/service.interface'; describe('DaffioApiService', () => { let fetchAssetServiceSpy: jasmine.SpyObj; diff --git a/apps/daffio/src/app/api/services/api.service.ts b/apps/daffio/src/app/docs/api/services/api.service.ts similarity index 81% rename from apps/daffio/src/app/api/services/api.service.ts rename to apps/daffio/src/app/docs/api/services/api.service.ts index 36e2607054..59c73622d8 100644 --- a/apps/daffio/src/app/api/services/api.service.ts +++ b/apps/daffio/src/app/docs/api/services/api.service.ts @@ -8,8 +8,8 @@ import { DaffioApiServiceInterface } from './api-service.interface'; import { DaffioAssetFetchService, DaffioAssetFetchServiceInterface, -} from '../../core/assets/fetch/service.interface'; -import { DAFFIO_DOCS_PATH_TOKEN } from '../../docs/services/docs-path.token'; +} from '../../../core/assets/fetch/service.interface'; +import { DAFFIO_DOCS_PATH_TOKEN } from '../../services/docs-path.token'; import { DaffioApiReference } from '../models/api-reference'; @Injectable({ providedIn: 'root' }) @@ -21,6 +21,6 @@ export class DaffioApiService implements DaffioApiServiceInterface { ) {} list(): Observable { - return this.fetchAsset.fetch(`${this.docsPath}api/api-list.json`); + return this.fetchAsset.fetch(`${this.docsPath}docs/api/api-list.json`); } } diff --git a/apps/daffio/src/app/docs/components/doc-viewer/doc-viewer.component.html b/apps/daffio/src/app/docs/components/doc-viewer/doc-viewer.component.html index 259670b657..70e4bc4370 100644 --- a/apps/daffio/src/app/docs/components/doc-viewer/doc-viewer.component.html +++ b/apps/daffio/src/app/docs/components/doc-viewer/doc-viewer.component.html @@ -1,6 +1,6 @@
+ + + + + + {{ node.title }} + + +} \ No newline at end of file diff --git a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.spec.ts b/apps/daffio/src/app/docs/components/docs-list/docs-list.component.spec.ts similarity index 78% rename from apps/daffio/src/app/packages/components/packages-list/packages-list.component.spec.ts rename to apps/daffio/src/app/docs/components/docs-list/docs-list.component.spec.ts index 1ecb0d6c6f..43dc9dc99a 100644 --- a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.spec.ts +++ b/apps/daffio/src/app/docs/components/docs-list/docs-list.component.spec.ts @@ -9,18 +9,16 @@ import { RouterTestingModule } from '@angular/router/testing'; import { DaffTreeModule } from '@daffodil/design/tree'; -import { DaffioDocsPackagesListComponent } from './packages-list.component'; +import { DaffioDocsListComponent } from './docs-list.component'; -describe('DaffioDocsPackagesListComponent', () => { - let component: DaffioDocsPackagesListComponent; - let fixture: ComponentFixture; +describe('DaffioDocsListComponent', () => { + let component: DaffioDocsListComponent; + let fixture: ComponentFixture; beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ - DaffioDocsPackagesListComponent, - ], imports: [ + DaffioDocsListComponent, RouterTestingModule, NoopAnimationsModule, DaffTreeModule, @@ -30,7 +28,7 @@ describe('DaffioDocsPackagesListComponent', () => { })); beforeEach(() => { - fixture = TestBed.createComponent(DaffioDocsPackagesListComponent); + fixture = TestBed.createComponent(DaffioDocsListComponent); component = fixture.componentInstance; const guideWithoutChildren = { id: 'id2', @@ -49,7 +47,7 @@ describe('DaffioDocsPackagesListComponent', () => { ], }; - component.packagesList = { + component.list = { id: 'root', title: 'root', children: [ diff --git a/apps/daffio/src/app/docs/components/docs-list/docs-list.component.ts b/apps/daffio/src/app/docs/components/docs-list/docs-list.component.ts new file mode 100644 index 0000000000..38ea3f1538 --- /dev/null +++ b/apps/daffio/src/app/docs/components/docs-list/docs-list.component.ts @@ -0,0 +1,70 @@ +import { AsyncPipe } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + Input, + OnInit, +} from '@angular/core'; +import { + RouterLink, + RouterLinkActive, +} from '@angular/router'; +import { + BehaviorSubject, + Observable, + distinctUntilChanged, + filter, + map, +} from 'rxjs'; + +import { + DaffTreeData, + DaffTreeModule, + daffTransformTree, +} from '@daffodil/design/tree'; + +import { DaffioDocList } from '../../models/doc-list'; + +const visit = (guide: DaffioDocList): DaffTreeData => ({ + id: guide.id, + title: guide.title, + url: guide.path || '', + items: [], + data: {}, +}); + +@Component({ + selector: 'daffio-docs-list', + templateUrl: './docs-list.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + AsyncPipe, + RouterLink, + DaffTreeModule, + ], +}) +export class DaffioDocsListComponent implements OnInit { + private _list$ = new BehaviorSubject(null); + + /** + * The guide list to render + */ + @Input() + set list(val: DaffioDocList) { + this._list$.next(val); + } + + tree$: Observable>; + activeRouterLinkConfiguration: RouterLinkActive['routerLinkActiveOptions'] = { + exact: true, + }; + + ngOnInit(): void { + this.tree$ = this._list$.pipe( + filter((list) => !!list), + distinctUntilChanged(), + map((list) => daffTransformTree(list, visit, 'children')), + ); + } +} diff --git a/apps/daffio/src/app/docs/docs-routing.module.ts b/apps/daffio/src/app/docs/docs-routing.module.ts new file mode 100644 index 0000000000..d9441b30fb --- /dev/null +++ b/apps/daffio/src/app/docs/docs-routing.module.ts @@ -0,0 +1,52 @@ +import { NgModule } from '@angular/core'; +import { + Routes, + RouterModule, +} from '@angular/router'; + +import { DaffRouteWithNamedViews } from '@daffodil/router'; + +import { DaffioDocsHeaderContainer } from '../core/header/containers/docs-header/docs-header.component'; +import { DaffioDocsSidebarContainer } from '../core/sidebar/containers/docs-sidebar/docs-sidebar.component'; +import { DaffioRouterNamedViewsEnum } from '../named-views/models/named-views.enum'; + +export const docsRoutes: Routes = [ + { + path: '', + data: { + daffNamedViews: { + [DaffioRouterNamedViewsEnum.NAV]: DaffioDocsHeaderContainer, + [DaffioRouterNamedViewsEnum.SIDEBARCONTENT]: DaffioDocsSidebarContainer, + }, + }, + children: [ + { + path: 'packages', + loadChildren: () => import('./packages/packages.module').then(m => m.DaffioPackagesModule), + }, + { + path: 'guides', + loadChildren: () => import('./guides/guides.module').then(m => m.DaffioGuidesModule), + }, + { + path: 'api', + loadChildren: () => import('./api/api.module').then(m => m.DaffioApiModule), + }, + { + path: '', + pathMatch: 'full', + redirectTo: 'guides/getting-started/introduction', + }, + ], + }, +]; + +@NgModule({ + imports: [ + RouterModule.forChild(docsRoutes), + ], + exports: [ + RouterModule, + ], +}) +export class DaffioDocsRoutingModule { } diff --git a/apps/daffio/src/app/docs/docs.module.ts b/apps/daffio/src/app/docs/docs.module.ts new file mode 100644 index 0000000000..05f3ca1642 --- /dev/null +++ b/apps/daffio/src/app/docs/docs.module.ts @@ -0,0 +1,24 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { DaffContainerModule } from '@daffodil/design/container'; +import { DaffHeroModule } from '@daffodil/design/hero'; + +import { DaffioDocViewerModule } from './components/doc-viewer/doc-viewer.module'; +import { DaffioDocsRoutingModule } from './docs-routing.module'; +import { DaffioDocsPageComponent } from './pages/docs-page/docs-page.component'; + +@NgModule({ + imports: [ + CommonModule, + RouterModule, + + DaffioDocViewerModule, + DaffioDocsRoutingModule, + DaffContainerModule, + DaffHeroModule, + DaffioDocsPageComponent, + ], +}) +export class DaffioDocssModule {} diff --git a/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.html b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.html new file mode 100644 index 0000000000..70f4e30fca --- /dev/null +++ b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.spec.ts b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.spec.ts new file mode 100644 index 0000000000..63a8ff86fb --- /dev/null +++ b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.spec.ts @@ -0,0 +1,37 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { + waitForAsync, + ComponentFixture, + TestBed, +} from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { DaffioDocsGuidesListContainer } from './guides-list.component'; + +describe('DaffioDocsGuidesListContainer', () => { + let component: DaffioDocsGuidesListContainer; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + DaffioDocsGuidesListContainer, + RouterTestingModule, + NoopAnimationsModule, + HttpClientTestingModule, + ], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DaffioDocsGuidesListContainer); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.ts b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.ts new file mode 100644 index 0000000000..9071d11800 --- /dev/null +++ b/apps/daffio/src/app/docs/guides/containers/guides-list/guides-list.component.ts @@ -0,0 +1,35 @@ +import { AsyncPipe } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + OnInit, +} from '@angular/core'; +import { Observable } from 'rxjs'; + +import { DaffioDocsListComponent } from '../../../components/docs-list/docs-list.component'; +import { DaffioDoc } from '../../../models/doc'; +import { DaffioDocList } from '../../../models/doc-list'; +import { DaffioDocsService } from '../../../services/docs.service'; + + +@Component({ + selector: 'daffio-docs-guides-list-container', + templateUrl: './guides-list.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + AsyncPipe, + DaffioDocsListComponent, + ], +}) +export class DaffioDocsGuidesListContainer implements OnInit { + guidesList$: Observable; + + constructor( + private docService: DaffioDocsService, + ) {} + + ngOnInit() { + this.guidesList$ = this.docService.getGuidesList(); + } +} diff --git a/apps/daffio/src/app/docs/guides/guides-routing.module.ts b/apps/daffio/src/app/docs/guides/guides-routing.module.ts new file mode 100644 index 0000000000..84b8eae67c --- /dev/null +++ b/apps/daffio/src/app/docs/guides/guides-routing.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from '@angular/core'; +import { + Routes, + RouterModule, +} from '@angular/router'; + +import { DaffRouteWithNamedViews } from '@daffodil/router'; + +import { DaffioDocsGuidesListContainer } from './containers/guides-list/guides-list.component'; +import { DaffioRouterNamedViewsEnum } from '../../named-views/models/named-views.enum'; +import { DaffioDocsPageComponent } from '../pages/docs-page/docs-page.component'; +import { DocsResolver } from '../resolvers/docs-resolver.service'; + +export const docsRoutes: Routes = [ + { + path: '', + data: { + daffNamedViews: { + [DaffioRouterNamedViewsEnum.DOCS_SIDEBAR]: DaffioDocsGuidesListContainer, + }, + }, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'getting-started/introduction', + }, + { + path: '**', + component: DaffioDocsPageComponent, + resolve: { + doc: DocsResolver, + }, + data: { + sidebarMode: 'side-fixed', + }, + }, + ], + }, +]; + +@NgModule({ + imports: [ + RouterModule.forChild(docsRoutes), + ], + exports: [ + RouterModule, + ], +}) +export class DaffioGuidesRoutingModule { } diff --git a/apps/daffio/src/app/docs/guides/guides.module.ts b/apps/daffio/src/app/docs/guides/guides.module.ts new file mode 100644 index 0000000000..708adae50d --- /dev/null +++ b/apps/daffio/src/app/docs/guides/guides.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; + +import { DaffioGuidesRoutingModule } from './guides-routing.module'; + +@NgModule({ + imports: [ + DaffioGuidesRoutingModule, + ], +}) +export class DaffioGuidesModule {} diff --git a/apps/daffio/src/app/docs/models/doc-list.ts b/apps/daffio/src/app/docs/models/doc-list.ts index e08ae6eceb..37149444de 100644 --- a/apps/daffio/src/app/docs/models/doc-list.ts +++ b/apps/daffio/src/app/docs/models/doc-list.ts @@ -1,11 +1,11 @@ /** * A list of references for API documents. */ -export interface DaffioDocList> { +export interface DaffioGenericDocList> { id: string; title: string; - path: string; - items?: T[]; + path?: string; + children: T[]; } - +export type DaffioDocList = DaffioGenericDocList; diff --git a/apps/daffio/src/app/docs/models/packages-list.ts b/apps/daffio/src/app/docs/models/packages-list.ts deleted file mode 100644 index 0bcc4d3f6e..0000000000 --- a/apps/daffio/src/app/docs/models/packages-list.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface DaffioPackagesList { - id: string; - title: string; - path?: string; - children?: DaffioPackagesList[]; -} - - diff --git a/apps/daffio/src/app/packages/components/package-cards/package-cards.component.html b/apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.html similarity index 100% rename from apps/daffio/src/app/packages/components/package-cards/package-cards.component.html rename to apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.html diff --git a/apps/daffio/src/app/packages/components/package-cards/package-cards.component.scss b/apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.scss similarity index 100% rename from apps/daffio/src/app/packages/components/package-cards/package-cards.component.scss rename to apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.scss diff --git a/apps/daffio/src/app/packages/components/package-cards/package-cards.component.spec.ts b/apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.spec.ts similarity index 100% rename from apps/daffio/src/app/packages/components/package-cards/package-cards.component.spec.ts rename to apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.spec.ts diff --git a/apps/daffio/src/app/packages/components/package-cards/package-cards.component.ts b/apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.ts similarity index 100% rename from apps/daffio/src/app/packages/components/package-cards/package-cards.component.ts rename to apps/daffio/src/app/docs/packages/components/package-cards/package-cards.component.ts diff --git a/apps/daffio/src/app/packages/components/package-cards/package-cards.module.ts b/apps/daffio/src/app/docs/packages/components/package-cards/package-cards.module.ts similarity index 100% rename from apps/daffio/src/app/packages/components/package-cards/package-cards.module.ts rename to apps/daffio/src/app/docs/packages/components/package-cards/package-cards.module.ts diff --git a/apps/daffio/src/app/packages/containers/package-cards/package-cards.component.html b/apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.html similarity index 100% rename from apps/daffio/src/app/packages/containers/package-cards/package-cards.component.html rename to apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.html diff --git a/apps/daffio/src/app/packages/containers/package-cards/package-cards.component.spec.ts b/apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.spec.ts similarity index 100% rename from apps/daffio/src/app/packages/containers/package-cards/package-cards.component.spec.ts rename to apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.spec.ts diff --git a/apps/daffio/src/app/packages/containers/package-cards/package-cards.component.ts b/apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.ts similarity index 60% rename from apps/daffio/src/app/packages/containers/package-cards/package-cards.component.ts rename to apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.ts index 27dfa1a595..b9efbcbf3d 100644 --- a/apps/daffio/src/app/packages/containers/package-cards/package-cards.component.ts +++ b/apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.component.ts @@ -6,14 +6,17 @@ import { import { map, Observable, - tap, } from 'rxjs'; -import { DaffioDoc } from '../../../docs/models/doc'; -import { DaffioPackagesList } from '../../../docs/models/packages-list'; -import { DaffioDocsService } from '../../../docs/services/docs.service'; +import { DaffioDoc } from '../../../models/doc'; +import { DaffioDocList } from '../../../models/doc-list'; +import { DaffioDocsService } from '../../../services/docs.service'; import { DaffioPackage } from '../../components/package-cards/package-cards.component'; +function getPath(doc: DaffioDocList): string { + return doc.path || doc.children?.[0].path || ''; +} + @Component({ selector: 'daffio-docs-package-cards-container', templateUrl: './package-cards.component.html', @@ -24,14 +27,14 @@ export class DaffioDocsPackageCardsContainer implements OnInit { packagesList$: Observable; constructor( - private docService: DaffioDocsService, + private docService: DaffioDocsService, ) {} ngOnInit() { - this.packagesList$ = this.docService.getGuideList().pipe( + this.packagesList$ = this.docService.getPackageList().pipe( map((guidesTree) => guidesTree.children.map((p) => ({ title: p.title, - path: `/${p.path || p.children?.[0].path}`, + path: `/${getPath(p)}`, description: '', }))), ); diff --git a/apps/daffio/src/app/packages/containers/package-cards/package-cards.module.ts b/apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.module.ts similarity index 100% rename from apps/daffio/src/app/packages/containers/package-cards/package-cards.module.ts rename to apps/daffio/src/app/docs/packages/containers/package-cards/package-cards.module.ts diff --git a/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.html b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.html new file mode 100644 index 0000000000..1fed940229 --- /dev/null +++ b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.spec.ts b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.spec.ts similarity index 97% rename from apps/daffio/src/app/packages/containers/packages-list/packages-list.component.spec.ts rename to apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.spec.ts index e7c64a81ab..c5fd84bf5e 100644 --- a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.spec.ts +++ b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.spec.ts @@ -15,10 +15,8 @@ describe('DaffioDocsPackagesListContainer', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ - DaffioDocsPackagesListContainer, - ], imports: [ + DaffioDocsPackagesListContainer, RouterTestingModule, NoopAnimationsModule, HttpClientTestingModule, diff --git a/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.ts b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.ts new file mode 100644 index 0000000000..e40caab047 --- /dev/null +++ b/apps/daffio/src/app/docs/packages/containers/packages-list/packages-list.component.ts @@ -0,0 +1,35 @@ +import { AsyncPipe } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + OnInit, +} from '@angular/core'; +import { Observable } from 'rxjs'; + +import { DaffioDocsListComponent } from '../../../components/docs-list/docs-list.component'; +import { DaffioDoc } from '../../../models/doc'; +import { DaffioDocList } from '../../../models/doc-list'; +import { DaffioDocsService } from '../../../services/docs.service'; + + +@Component({ + selector: 'daffio-docs-packages-list-container', + templateUrl: './packages-list.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + AsyncPipe, + DaffioDocsListComponent, + ], +}) +export class DaffioDocsPackagesListContainer implements OnInit { + packagesList$: Observable; + + constructor( + private docService: DaffioDocsService, + ) {} + + ngOnInit() { + this.packagesList$ = this.docService.getPackageList(); + } +} diff --git a/apps/daffio/src/app/docs/packages/packages-routing.module.ts b/apps/daffio/src/app/docs/packages/packages-routing.module.ts new file mode 100644 index 0000000000..77c8aa8b22 --- /dev/null +++ b/apps/daffio/src/app/docs/packages/packages-routing.module.ts @@ -0,0 +1,51 @@ +import { NgModule } from '@angular/core'; +import { + Routes, + RouterModule, +} from '@angular/router'; + +import { DaffRouteWithNamedViews } from '@daffodil/router'; + +import { DaffioDocsPackagesListContainer } from './containers/packages-list/packages-list.component'; +import { DaffioPackagesOverviewPageComponent } from './pages/packages-overview/packages-overview.component'; +import { DaffioRouterNamedViewsEnum } from '../../named-views/models/named-views.enum'; +import { DaffioDocsPageComponent } from '../pages/docs-page/docs-page.component'; +import { DocsResolver } from '../resolvers/docs-resolver.service'; + +export const docsRoutes: Routes = [ + { + path: '', + data: { + daffNamedViews: { + [DaffioRouterNamedViewsEnum.DOCS_SIDEBAR]: DaffioDocsPackagesListContainer, + }, + }, + children: [ + { + path: '', + pathMatch: 'full', + component: DaffioPackagesOverviewPageComponent, + }, + { + path: '**', + component: DaffioDocsPageComponent, + resolve: { + doc: DocsResolver, + }, + data: { + sidebarMode: 'side-fixed', + }, + }, + ], + }, +]; + +@NgModule({ + imports: [ + RouterModule.forChild(docsRoutes), + ], + exports: [ + RouterModule, + ], +}) +export class DaffioPackagesRoutingModule { } diff --git a/apps/daffio/src/app/packages/packages.module.ts b/apps/daffio/src/app/docs/packages/packages.module.ts similarity index 76% rename from apps/daffio/src/app/packages/packages.module.ts rename to apps/daffio/src/app/docs/packages/packages.module.ts index ef5cdaf8b6..dea9cdc95a 100644 --- a/apps/daffio/src/app/packages/packages.module.ts +++ b/apps/daffio/src/app/docs/packages/packages.module.ts @@ -7,27 +7,22 @@ import { DaffHeroModule } from '@daffodil/design/hero'; import { DaffioDocsPackageCardsContainerModule } from './containers/package-cards/package-cards.module'; import { DaffioPackagesRoutingModule } from './packages-routing.module'; -import { DaffioPackagePageComponent } from './pages/package-page/package-page.component'; import { DaffioPackagesOverviewPageComponent } from './pages/packages-overview/packages-overview.component'; -import { DaffioDocViewerModule } from '../docs/components/doc-viewer/doc-viewer.module'; @NgModule({ imports: [ CommonModule, RouterModule, - DaffioDocViewerModule, DaffioPackagesRoutingModule, DaffContainerModule, DaffHeroModule, DaffioDocsPackageCardsContainerModule, ], declarations: [ - DaffioPackagePageComponent, DaffioPackagesOverviewPageComponent, ], exports: [ - DaffioPackagePageComponent, DaffioPackagesOverviewPageComponent, ], }) diff --git a/apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.html b/apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.html similarity index 100% rename from apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.html rename to apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.html diff --git a/apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.scss b/apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.scss similarity index 99% rename from apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.scss rename to apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.scss index 64e601395b..234b3c29ab 100644 --- a/apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.scss +++ b/apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.scss @@ -13,4 +13,4 @@ padding: 48px 0; } } -} \ No newline at end of file +} diff --git a/apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.spec.ts b/apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.spec.ts similarity index 100% rename from apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.spec.ts rename to apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.spec.ts diff --git a/apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.ts b/apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.ts similarity index 100% rename from apps/daffio/src/app/packages/pages/packages-overview/packages-overview.component.ts rename to apps/daffio/src/app/docs/packages/pages/packages-overview/packages-overview.component.ts diff --git a/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.html b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.html new file mode 100644 index 0000000000..b98d70acd5 --- /dev/null +++ b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.html @@ -0,0 +1 @@ + diff --git a/apps/daffio/src/app/packages/pages/package-page/package-page.component.spec.ts b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.spec.ts similarity index 79% rename from apps/daffio/src/app/packages/pages/package-page/package-page.component.spec.ts rename to apps/daffio/src/app/docs/pages/docs-page/docs-page.component.spec.ts index c8fdaaa2b7..631a4fdb08 100644 --- a/apps/daffio/src/app/packages/pages/package-page/package-page.component.spec.ts +++ b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.spec.ts @@ -10,10 +10,11 @@ import { import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { provideMockStore } from '@ngrx/store/testing'; import { cold } from 'jasmine-marbles'; import { BehaviorSubject } from 'rxjs'; -import { DaffioPackagePageComponent } from './package-page.component'; +import { DaffioDocsPageComponent } from './docs-page.component'; import { DaffioDoc } from '../../../docs/models/doc'; import { DaffioDocsFactory } from '../../../docs/testing/factories/docs.factory'; @@ -22,9 +23,9 @@ class MockDaffioDocViewerComponent { @Input() doc: DaffioDoc; } -describe('DaffioPackagePageComponent', () => { - let component: DaffioPackagePageComponent; - let fixture: ComponentFixture; +describe('DaffioDocsPageComponent', () => { + let component: DaffioDocsPageComponent; + let fixture: ComponentFixture; const doc: DaffioDoc = new DaffioDocsFactory().create(); const stubActivatedRoute = { data: new BehaviorSubject({}), @@ -33,21 +34,22 @@ describe('DaffioPackagePageComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ - DaffioPackagePageComponent, MockDaffioDocViewerComponent, ], imports: [ + DaffioDocsPageComponent, RouterTestingModule, ], providers: [ { provide: ActivatedRoute, useValue: stubActivatedRoute }, + provideMockStore(), ], }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(DaffioPackagePageComponent); + fixture = TestBed.createComponent(DaffioDocsPageComponent); component = fixture.componentInstance; stubActivatedRoute.data.next({ doc }); fixture.detectChanges(); @@ -59,7 +61,7 @@ describe('DaffioPackagePageComponent', () => { it('should initialize `doc$` to the resolved doc from the activated route', () => { const expected = cold('a', { a: doc }); - expect(component.packageDoc$).toBeObservable(expected); + expect(component.doc$).toBeObservable(expected); }); it('should pass the down the observed doc to the `daffio-doc-viewer`', () => { diff --git a/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.ts b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.ts new file mode 100644 index 0000000000..6541f25960 --- /dev/null +++ b/apps/daffio/src/app/docs/pages/docs-page/docs-page.component.ts @@ -0,0 +1,36 @@ +import { AsyncPipe } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + OnInit, +} from '@angular/core'; +import { + ActivatedRoute, + RouterModule, +} from '@angular/router'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { DaffioDoc } from '../../../docs/models/doc'; +import { DaffioDocViewerModule } from '../../components/doc-viewer/doc-viewer.module'; + +@Component({ + selector: 'daffio-docs-page', + templateUrl: './docs-page.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + AsyncPipe, + RouterModule, + DaffioDocViewerModule, + ], +}) +export class DaffioDocsPageComponent implements OnInit { + doc$: Observable; + + constructor(private route: ActivatedRoute) { } + + ngOnInit() { + this.doc$ = this.route.data.pipe(map((data: { doc: DaffioDoc }) => data.doc)); + } +} diff --git a/apps/daffio/src/app/docs/resolvers/docs-resolver.service.spec.ts b/apps/daffio/src/app/docs/resolvers/docs-resolver.service.spec.ts index f355abffa7..c1f4b2c8da 100644 --- a/apps/daffio/src/app/docs/resolvers/docs-resolver.service.spec.ts +++ b/apps/daffio/src/app/docs/resolvers/docs-resolver.service.spec.ts @@ -13,20 +13,20 @@ import { import { DocsResolver } from './docs-resolver.service'; import { DaffioDoc } from '../models/doc'; -import { DaffioPackagesList } from '../models/packages-list'; +import { DaffioDocList } from '../models/doc-list'; import { DaffioDocsServiceInterface } from '../services/docs-service.interface'; import { DaffioDocsService } from '../services/docs.service'; import { DaffioDocsFactory } from '../testing/factories/docs.factory'; describe('DocsResolver', () => { - let resolver: DocsResolver; - let docsService: DaffioDocsService; + let resolver: DocsResolver; + let docsService: DaffioDocsService; let router: Router; const doc = new DaffioDocsFactory().create(); - const stubDocService: DaffioDocsServiceInterface = { + const stubDocService: DaffioDocsServiceInterface = { get: (path: string): Observable => of(doc), - getGuideList: () => of(), + getPackageList: () => of(), }; beforeEach(() => { diff --git a/apps/daffio/src/app/docs/resolvers/docs-resolver.service.ts b/apps/daffio/src/app/docs/resolvers/docs-resolver.service.ts index 8eb83b275a..4d8cd7f41a 100644 --- a/apps/daffio/src/app/docs/resolvers/docs-resolver.service.ts +++ b/apps/daffio/src/app/docs/resolvers/docs-resolver.service.ts @@ -19,13 +19,13 @@ import { } from '@daffodil/core/routing'; import { DaffioDoc } from '../models/doc'; -import { DaffioPackagesList } from '../models/packages-list'; +import { DaffioDocList } from '../models/doc-list'; import { DaffioDocsService } from '../services/docs.service'; @Injectable({ providedIn: 'root', }) -export class DocsResolver { +export class DocsResolver { constructor(private docService: DaffioDocsService, private router: Router) { } diff --git a/apps/daffio/src/app/docs/services/docs-path.token.ts b/apps/daffio/src/app/docs/services/docs-path.token.ts index 7f1ad67e97..30984dee7a 100644 --- a/apps/daffio/src/app/docs/services/docs-path.token.ts +++ b/apps/daffio/src/app/docs/services/docs-path.token.ts @@ -1,5 +1,5 @@ import { InjectionToken } from '@angular/core'; export const DAFFIO_DOCS_PATH_TOKEN = new InjectionToken('DAFFIO_DOCS_PATH_TOKEN', { - factory: () => '/assets/daffio/docs/', + factory: () => '/assets/daffio/', }); diff --git a/apps/daffio/src/app/docs/services/docs-service.interface.ts b/apps/daffio/src/app/docs/services/docs-service.interface.ts index 47ac81888f..d7c3329b39 100644 --- a/apps/daffio/src/app/docs/services/docs-service.interface.ts +++ b/apps/daffio/src/app/docs/services/docs-service.interface.ts @@ -1,9 +1,9 @@ import { Observable } from 'rxjs'; import { DaffioDoc } from '../models/doc'; -import { DaffioPackagesList } from '../models/packages-list'; +import { DaffioDocList } from '../models/doc-list'; -export interface DaffioDocsServiceInterface { +export interface DaffioDocsServiceInterface { get(path: string): Observable; - getGuideList(): Observable; + getPackageList(): Observable; } diff --git a/apps/daffio/src/app/docs/services/docs.service.spec.ts b/apps/daffio/src/app/docs/services/docs.service.spec.ts index f8aee755c4..03bd68df85 100644 --- a/apps/daffio/src/app/docs/services/docs.service.spec.ts +++ b/apps/daffio/src/app/docs/services/docs.service.spec.ts @@ -7,12 +7,12 @@ import { DaffioAssetFetchServiceInterface, } from '../../core/assets/fetch/service.interface'; import { DaffioDoc } from '../models/doc'; -import { DaffioPackagesList } from '../models/packages-list'; +import { DaffioDocList } from '../models/doc-list'; import { DaffioDocsFactory } from '../testing/factories/docs.factory'; import { mockPackages } from '../testing/factories/packages-list.factory'; describe('DaffioDocsService', () => { - let service: DaffioDocsService; + let service: DaffioDocsService; let fetchAssetServiceSpy: jasmine.SpyObj; let doc: DaffioDoc; const mockGuideList = mockPackages; @@ -41,7 +41,7 @@ describe('DaffioDocsService', () => { it('should be able to retrieve a doc', (done) => { fetchAssetServiceSpy.fetch.and.returnValue(of(doc)); - service.get('my/path').subscribe((apiDoc) => { + service.get('docs/my/path').subscribe((apiDoc) => { expect(apiDoc).toEqual(doc); expect(fetchAssetServiceSpy.fetch).toHaveBeenCalledWith('/assets/daffio/docs/my/path.json'); done(); @@ -51,7 +51,7 @@ describe('DaffioDocsService', () => { it('should be able to retrieve a guide list', (done) => { fetchAssetServiceSpy.fetch.and.returnValue(of(mockGuideList)); - service.getGuideList().subscribe((guides) => { + service.getPackageList().subscribe((guides) => { expect(guides).toEqual(mockGuideList); expect(fetchAssetServiceSpy.fetch).toHaveBeenCalledWith('/assets/daffio/docs/packages/guide-list.json'); done(); diff --git a/apps/daffio/src/app/docs/services/docs.service.ts b/apps/daffio/src/app/docs/services/docs.service.ts index 2dc9594cea..3cc53995c8 100644 --- a/apps/daffio/src/app/docs/services/docs.service.ts +++ b/apps/daffio/src/app/docs/services/docs.service.ts @@ -13,12 +13,12 @@ import { DaffioAssetFetchServiceInterface, } from '../../core/assets/fetch/service.interface'; import { DaffioDoc } from '../models/doc'; -import { DaffioPackagesList } from '../models/packages-list'; +import { DaffioDocList } from '../models/doc-list'; @Injectable({ providedIn: 'root', }) -export class DaffioDocsService implements DaffioDocsServiceInterface { +export class DaffioDocsService implements DaffioDocsServiceInterface { constructor( @Inject(DaffioAssetFetchService) private fetchAsset: DaffioAssetFetchServiceInterface, @@ -29,7 +29,11 @@ export class DaffioDocsService(`${this.docsPath}${crossOsFilename(path)}.json`); } - getGuideList(): Observable { - return this.fetchAsset.fetch(`${this.docsPath}packages/guide-list.json`); + getPackageList(): Observable { + return this.fetchAsset.fetch(`${this.docsPath}docs/packages/guide-list.json`); + } + + getGuidesList(): Observable { + return this.fetchAsset.fetch(`${this.docsPath}docs/guides/guide-list.json`); } } diff --git a/apps/daffio/src/app/docs/testing/factories/packages-list.factory.ts b/apps/daffio/src/app/docs/testing/factories/packages-list.factory.ts index 0cc39f8f51..a37db5f797 100644 --- a/apps/daffio/src/app/docs/testing/factories/packages-list.factory.ts +++ b/apps/daffio/src/app/docs/testing/factories/packages-list.factory.ts @@ -1,6 +1,6 @@ -import { DaffioPackagesList } from '../../models/packages-list'; +import { DaffioDocList } from '../../models/doc-list'; -export const mockPackages: DaffioPackagesList = { +export const mockPackages: DaffioDocList = { id: '', title: '', children: [ diff --git a/apps/daffio/src/app/named-views/models/named-views.enum.ts b/apps/daffio/src/app/named-views/models/named-views.enum.ts index 9be49b517f..2dcc51de38 100644 --- a/apps/daffio/src/app/named-views/models/named-views.enum.ts +++ b/apps/daffio/src/app/named-views/models/named-views.enum.ts @@ -3,5 +3,6 @@ export enum DaffioRouterNamedViewsEnum { SIDEBARCONTENT = 'sidebar-content', SIDEBARFOOTER = 'sidebar-footer', NAV = 'nav', - FOOTER = 'footer' + FOOTER = 'footer', + DOCS_SIDEBAR = 'docs-sidebar' } diff --git a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.html b/apps/daffio/src/app/packages/components/packages-list/packages-list.component.html deleted file mode 100644 index 0749856acf..0000000000 --- a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.html +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.ts b/apps/daffio/src/app/packages/components/packages-list/packages-list.component.ts deleted file mode 100644 index 42f9cffa01..0000000000 --- a/apps/daffio/src/app/packages/components/packages-list/packages-list.component.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { - ChangeDetectionStrategy, - Component, - Input, -} from '@angular/core'; -import { RouterLinkActive } from '@angular/router'; - -import { - DaffTreeData, - daffTransformTreeInPlace, -} from '@daffodil/design/tree'; - -import { DaffioPackagesList } from '../../../docs/models/packages-list'; - -const visit = (guide: DaffioPackagesList): DaffTreeData => ({ - id: guide.id, - title: guide.title, - url: guide.path, - items: [], - data: {}, -}); - -@Component({ - selector: 'daffio-docs-packages-list', - templateUrl: './packages-list.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class DaffioDocsPackagesListComponent { - - _packagesList: DaffioPackagesList; - /** - * The guide list to render - */ - @Input() - get packagesList(): DaffioPackagesList { - return this._packagesList; - }; - set packagesList(val: DaffioPackagesList) { - if(this._packagesList !== val) { - this._tree = daffTransformTreeInPlace(val, visit, 'children'); - } - this._packagesList = val; - } - - _tree: DaffTreeData; - - activeRouterLinkConfiguration: RouterLinkActive['routerLinkActiveOptions'] = { - exact: true, - }; -} diff --git a/apps/daffio/src/app/packages/components/packages-list/packages-list.module.ts b/apps/daffio/src/app/packages/components/packages-list/packages-list.module.ts deleted file mode 100644 index e04c5d2504..0000000000 --- a/apps/daffio/src/app/packages/components/packages-list/packages-list.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { DaffTreeModule } from '@daffodil/design/tree'; - -import { DaffioDocsPackagesListComponent } from './packages-list.component'; - -@NgModule({ - declarations: [ - DaffioDocsPackagesListComponent, - ], - exports: [ - DaffioDocsPackagesListComponent, - ], - imports: [ - CommonModule, - RouterModule, - DaffTreeModule, - ], -}) -export class DaffioDocsPackagesListComponentModule { } diff --git a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.html b/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.html deleted file mode 100644 index db15123a5f..0000000000 --- a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.ts b/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.ts deleted file mode 100644 index 998e5684c9..0000000000 --- a/apps/daffio/src/app/packages/containers/packages-list/packages-list.component.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - ChangeDetectionStrategy, - Component, - OnInit, -} from '@angular/core'; -import { Observable } from 'rxjs'; - -import { DaffioDoc } from '../../../docs/models/doc'; -import { DaffioPackagesList } from '../../../docs/models/packages-list'; -import { DaffioDocsService } from '../../../docs/services/docs.service'; - -@Component({ - selector: 'daffio-docs-packages-list-container', - templateUrl: './packages-list.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class DaffioDocsPackagesListContainer implements OnInit { - - packagesList$: Observable; - - constructor( - private docService: DaffioDocsService, - ) {} - - ngOnInit() { - this.packagesList$ = this.docService.getGuideList(); - } -} diff --git a/apps/daffio/src/app/packages/containers/packages-list/packages-list.module.ts b/apps/daffio/src/app/packages/containers/packages-list/packages-list.module.ts deleted file mode 100644 index 4aaefa63ac..0000000000 --- a/apps/daffio/src/app/packages/containers/packages-list/packages-list.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { DaffioDocsPackagesListContainer } from './packages-list.component'; -import { DaffioDocsPackagesListComponentModule } from '../../components/packages-list/packages-list.module'; - -@NgModule({ - declarations: [ - DaffioDocsPackagesListContainer, - ], - exports: [ - DaffioDocsPackagesListContainer, - ], - imports: [ - CommonModule, - RouterModule, - DaffioDocsPackagesListComponentModule, - ], -}) -export class DaffioDocsPackagesListContainerModule { } diff --git a/apps/daffio/src/app/packages/packages-routing.module.ts b/apps/daffio/src/app/packages/packages-routing.module.ts deleted file mode 100644 index 5269e71ab7..0000000000 --- a/apps/daffio/src/app/packages/packages-routing.module.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { NgModule } from '@angular/core'; -import { - Routes, - RouterModule, -} from '@angular/router'; - -import { DaffioPackagePageComponent } from './pages/package-page/package-page.component'; -import { DaffioPackagesOverviewPageComponent } from './pages/packages-overview/packages-overview.component'; -import { DocsResolver } from '../docs/resolvers/docs-resolver.service'; - -export const docsRoutes: Routes = [ - { - path: '', - pathMatch: 'full', - component: DaffioPackagesOverviewPageComponent, - }, - { - path: '**', - component: DaffioPackagePageComponent, - resolve: { - doc: DocsResolver, - }, - data: { - sidebarMode: 'side-fixed', - }, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(docsRoutes), - ], - exports: [ - RouterModule, - ], -}) -export class DaffioPackagesRoutingModule { } diff --git a/apps/daffio/src/app/packages/pages/package-page/package-page.component.html b/apps/daffio/src/app/packages/pages/package-page/package-page.component.html deleted file mode 100644 index 0f48d7f159..0000000000 --- a/apps/daffio/src/app/packages/pages/package-page/package-page.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/daffio/src/app/packages/pages/package-page/package-page.component.ts b/apps/daffio/src/app/packages/pages/package-page/package-page.component.ts deleted file mode 100644 index 929696a659..0000000000 --- a/apps/daffio/src/app/packages/pages/package-page/package-page.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { - ChangeDetectionStrategy, - Component, - OnInit, -} from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; - -import { DaffioDoc } from '../../../docs/models/doc'; - -@Component({ - selector: 'daffio-package-page', - templateUrl: './package-page.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class DaffioPackagePageComponent implements OnInit { - - packageDoc$: Observable; - - constructor(private route: ActivatedRoute) { } - - ngOnInit() { - this.packageDoc$ = this.route.data.pipe(map((data: { doc: DaffioDoc }) => data.doc)); - } -} diff --git a/apps/daffio/src/environments/environment.prod.ts b/apps/daffio/src/environments/environment.prod.ts index 9b2bb3251a..830f2c3e2e 100644 --- a/apps/daffio/src/environments/environment.prod.ts +++ b/apps/daffio/src/environments/environment.prod.ts @@ -2,5 +2,5 @@ import { DaffioEnvironment } from './type'; export const environment: DaffioEnvironment = { production: true, - docsPath: 'browser/assets/daffio/docs/', + docsPath: 'browser/assets/daffio/', }; diff --git a/apps/daffio/src/environments/environment.ts b/apps/daffio/src/environments/environment.ts index eba69aec5d..fa19d2d3ec 100644 --- a/apps/daffio/src/environments/environment.ts +++ b/apps/daffio/src/environments/environment.ts @@ -6,7 +6,7 @@ import { DaffioEnvironment } from './type'; export const environment: DaffioEnvironment = { production: false, - docsPath: '../../dist/apps/daffio/browser/assets/daffio/docs/', + docsPath: '../../dist/apps/daffio/browser/assets/daffio/', }; /* diff --git a/apps/daffio/src/scss/component-themes.scss b/apps/daffio/src/scss/component-themes.scss index 1aa65210f6..42b03b22c7 100644 --- a/apps/daffio/src/scss/component-themes.scss +++ b/apps/daffio/src/scss/component-themes.scss @@ -3,7 +3,7 @@ @use '../app/core/footer/footer/footer-theme' as footer; @use '../app/core/footer/sub-footer/sub-footer-theme' as sub-footer; @use '../app/docs/components/table-of-contents/table-of-contents-theme' as toc; -@use '../app/api/components/api-list/api-list-theme' as api-list; +@use '../app/docs/api/components/api-list/api-list-theme' as api-list; @use '../app/newsletter/newsletter-theme' as newsletter; @use '../app/core/sidebar/components/sidebar-footer/sidebar-footer-theme' as sidebar-footer; diff --git a/tools/dgeni/build.ts b/tools/dgeni/build.ts index 6b6249676b..8d7c23903a 100644 --- a/tools/dgeni/build.ts +++ b/tools/dgeni/build.ts @@ -3,11 +3,15 @@ import { rimraf } from 'rimraf'; import { apiDocs } from './src/transforms/daffodil-api-package'; import { designExamplePackage } from './src/transforms/daffodil-design-examples-package'; -import { guideDocPackage } from './src/transforms/daffodil-guides-package'; +import { + packageDocsPackage, + guideDocsPackage, +} from './src/transforms/daffodil-guides-package'; -rimraf('../../dist/docs/**/*').then(() => { - new Dgeni([guideDocPackage]).generate().catch(() => process.exit(1)); +rimraf('../../dist/docs/*', { glob: true }).then(() => { + new Dgeni([packageDocsPackage]).generate().catch(() => process.exit(1)); + new Dgeni([guideDocsPackage]).generate().catch(() => process.exit(1)); new Dgeni([apiDocs]).generate().catch(() => process.exit(1)); new Dgeni([designExamplePackage]).generate().catch(() => process.exit(1)); }); diff --git a/tools/dgeni/src/processors/generateApiList.ts b/tools/dgeni/src/processors/generateApiList.ts index 290a4da4ca..9b0adb485f 100644 --- a/tools/dgeni/src/processors/generateApiList.ts +++ b/tools/dgeni/src/processors/generateApiList.ts @@ -52,7 +52,7 @@ function getExportInfo(exportDoc) { return { id: exportDoc.id, title: exportDoc.name, - path: '/' + exportDoc.path, + path: `/docs/${exportDoc.path}`, docType: getDocType(exportDoc), docTypeShorthand: exportDoc.docType.charAt(0), }; diff --git a/tools/dgeni/src/transforms/config.ts b/tools/dgeni/src/transforms/config.ts index 7eebdc3b28..577321f1fb 100644 --- a/tools/dgeni/src/transforms/config.ts +++ b/tools/dgeni/src/transforms/config.ts @@ -13,6 +13,7 @@ export const DIST_PATH = resolve(PROJECT_ROOT, 'dist'); export const OUTPUT_PATH = resolve(DIST_PATH, ''); export const DOCS_OUTPUT_PATH = resolve(OUTPUT_PATH, 'docs'); export const API_SOURCE_PATH = resolve(PROJECT_ROOT, 'libs'); +export const DOCS_SOURCE_PATH = resolve(PROJECT_ROOT, 'docs'); export const GUIDES_TEMPLATES_PATH = resolve(TEMPLATES_PATH, 'guides'); export const requireFolder = (dirname, folderPath) => { diff --git a/tools/dgeni/src/transforms/daffodil-base-package/index.ts b/tools/dgeni/src/transforms/daffodil-base-package/index.ts index 21476c8dac..1bed905000 100644 --- a/tools/dgeni/src/transforms/daffodil-base-package/index.ts +++ b/tools/dgeni/src/transforms/daffodil-base-package/index.ts @@ -6,6 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ import { Package } from 'dgeni'; +import * as basePackage from 'dgeni-packages/base'; +import * as nunjucksPackage from 'dgeni-packages/nunjucks'; import * as path from 'path'; import { ConvertToJsonProcessor } from '../../processors/convertToJson'; @@ -15,9 +17,6 @@ import { TEMPLATES_PATH, } from '../config'; -const basePackage = require('dgeni-packages/base'); -const nunjucksPackage = require('dgeni-packages/nunjucks'); - export const daffodilBasePackage = new Package('daffodil-base', [ basePackage, nunjucksPackage, diff --git a/tools/dgeni/src/transforms/daffodil-guides-package/index.ts b/tools/dgeni/src/transforms/daffodil-guides-package/index.ts index 35582548bb..8b3035da23 100644 --- a/tools/dgeni/src/transforms/daffodil-guides-package/index.ts +++ b/tools/dgeni/src/transforms/daffodil-guides-package/index.ts @@ -5,43 +5,30 @@ import { guideFileReaderFactory } from './reader/guide-file.reader'; import { MarkdownCodeProcessor } from '../../processors/markdown'; import { API_SOURCE_PATH, + DOCS_SOURCE_PATH, GUIDES_TEMPLATES_PATH, } from '../config'; import { daffodilBasePackage } from '../daffodil-base-package'; //List of packages to be left out of Guide generation -const excludedPackages = ['branding', 'docs-utils']; -const excludedPackagesRegex: string = '!(' + excludedPackages.join('|') + ')'; +const excludedPackages = ['branding', 'docs-utils']; +const excludedPackagesRegex = '!(' + excludedPackages.join('|') + ')'; +const excludedDocs = ['internal']; +const excludedDocsRegex = '!(' + excludedDocs.join('|') + ')'; -export const guideDocPackage = new Package('daffodil-guides', [daffodilBasePackage]) +const base = new Package('daffodil-guides-base', [daffodilBasePackage]) .factory('guideFileReader', guideFileReaderFactory) - .processor(new GenerateGuideListProcessor()) .processor(new MarkdownCodeProcessor()) .config((markdown: MarkdownCodeProcessor) => markdown.docTypes = ['guide']) .config((readFilesProcessor, guideFileReader) => { readFilesProcessor.$enabled = true; readFilesProcessor.fileReaders.push(guideFileReader); - readFilesProcessor.basePath = API_SOURCE_PATH; - readFilesProcessor.sourceFiles = [ - { include: [excludedPackagesRegex + '/README.md', excludedPackagesRegex + '/guides/**/*.md']}, - ]; }) .config((convertToJson) => { convertToJson.docTypes = convertToJson.docTypes.concat(['guide']); }) - .config((computePathsProcessor) => { - const DOCS_SEGMENT = 'packages'; - computePathsProcessor.pathTemplates.push({ - docTypes: ['guide'], - getPath: (doc) =>{ - doc.moduleFolder = `${DOCS_SEGMENT}/${doc.id.replace(/\/docs/, '')}`; - return doc.moduleFolder; - }, - outputPathTemplate: '${moduleFolder}.json', - }); - }) .config((templateFinder) => { - // Where to find the templates for the API doc rendering + // Where to find the templates for the API doc rendering templateFinder.templateFolders.unshift(GUIDES_TEMPLATES_PATH); }) .config((computeIdsProcessor) => { @@ -58,3 +45,46 @@ export const guideDocPackage = new Package('daffodil-guides', [daffodilBasePacka getAliases: (doc) => [doc.id], }); }); + +export const packageDocsPackage = new Package('daffodil-package-docs', [base]) + .processor(new GenerateGuideListProcessor()) + .config((readFilesProcessor) => { + readFilesProcessor.basePath = API_SOURCE_PATH; + readFilesProcessor.sourceFiles = [ + { include: [excludedPackagesRegex + '/README.md', excludedPackagesRegex + '/guides/**/*.md']}, + ]; + }) + .config((computePathsProcessor) => { + const DOCS_SEGMENT = 'packages'; + computePathsProcessor.pathTemplates.push({ + docTypes: ['guide'], + getPath: (doc) =>{ + doc.moduleFolder = `${DOCS_SEGMENT}/${doc.id.replace(/\/docs/, '')}`; + return doc.moduleFolder; + }, + outputPathTemplate: '${moduleFolder}.json', + }); + }); + +export const guideDocsPackage = new Package('daffodil-guide-docs', [base]) + .processor(new GenerateGuideListProcessor({ outputFolder: 'guides' })) + .config((readFilesProcessor) => { + readFilesProcessor.basePath = DOCS_SOURCE_PATH; + readFilesProcessor.sourceFiles = [ + { include: [ + // `${excludedDocsRegex}/**/*.md`, + `${excludedDocsRegex}/*.md`, + ]}, + ]; + }) + .config((computePathsProcessor) => { + const DOCS_SEGMENT = 'guides'; + computePathsProcessor.pathTemplates.push({ + docTypes: ['guide'], + getPath: (doc) =>{ + doc.moduleFolder = `${DOCS_SEGMENT}/${doc.id.replace(/\/docs/, '')}`; + return doc.moduleFolder; + }, + outputPathTemplate: '${moduleFolder}.json', + }); + }); diff --git a/tools/dgeni/src/transforms/daffodil-guides-package/processors/generateGuideList.ts b/tools/dgeni/src/transforms/daffodil-guides-package/processors/generateGuideList.ts index d465967d19..dbfe46cb70 100644 --- a/tools/dgeni/src/transforms/daffodil-guides-package/processors/generateGuideList.ts +++ b/tools/dgeni/src/transforms/daffodil-guides-package/processors/generateGuideList.ts @@ -17,7 +17,7 @@ export const DefaultGenerateGuideListConfiguration: GenerateGuideListConfigurati export const transformGuideDoc = (doc: Document): TransformedDocument => ({ id: doc.id, title: doc.title, - path: doc.path, + path: `docs/${doc.path}`, tableOfContents: doc.tableOfContents, });