tango-app-ui-shared 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/guards/auth.guard.mjs +26 -0
- package/esm2022/lib/i18n/index.mjs +3 -0
- package/esm2022/lib/i18n/translation.module.mjs +17 -0
- package/esm2022/lib/i18n/translation.service.mjs +53 -0
- package/esm2022/lib/i18n/vocabs/ch.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/de.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/en.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/es.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/fr.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/jp.mjs +106 -0
- package/esm2022/lib/interceptors/http-auth-interceptor.mjs +19 -0
- package/esm2022/lib/interfaces/global-state.mjs +2 -0
- package/esm2022/lib/modules/errors/error404/error404.component.mjs +45 -0
- package/esm2022/lib/modules/errors/error500/error500.component.mjs +45 -0
- package/esm2022/lib/modules/errors/errors-routing.module.mjs +38 -0
- package/esm2022/lib/modules/errors/errors.component.mjs +39 -0
- package/esm2022/lib/modules/errors/errors.module.mjs +31 -0
- package/esm2022/lib/modules/layout/content/content.component.mjs +43 -0
- package/esm2022/lib/modules/layout/footer/footer.component.mjs +17 -0
- package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +41 -0
- package/esm2022/lib/modules/layout/header/header.component.mjs +100 -0
- package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +24 -0
- package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +50 -0
- package/esm2022/lib/modules/layout/keenicon/icons.json +1 -0
- package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +37 -0
- package/esm2022/lib/modules/layout/layout/layout.component.mjs +285 -0
- package/esm2022/lib/modules/layout/layout.module.mjs +139 -0
- package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +74 -0
- package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +74 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +14 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +46 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +15 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +132 -0
- package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +15 -0
- package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +67 -0
- package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +14 -0
- package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +17 -0
- package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +17 -0
- package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +89 -0
- package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/routing.mjs +25 -0
- package/esm2022/lib/services/auth.service.mjs +23 -0
- package/esm2022/lib/services/global-state.service.mjs +16 -0
- package/esm2022/public-api.mjs +48 -0
- package/esm2022/tango-app-ui-shared.mjs +5 -0
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-B6GJQNQZ.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-B6GJQNQZ.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-CTJBnU9I.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-CTJBnU9I.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-UYYC9an_.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-UYYC9an_.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared.mjs +3420 -0
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/guards/auth.guard.d.ts +10 -0
- package/{src/lib/i18n/index.ts → lib/i18n/index.d.ts} +2 -2
- package/lib/i18n/translation.module.d.ts +8 -0
- package/lib/i18n/translation.service.d.ts +19 -0
- package/lib/i18n/vocabs/ch.d.ts +104 -0
- package/lib/i18n/vocabs/de.d.ts +104 -0
- package/lib/i18n/vocabs/en.d.ts +104 -0
- package/lib/i18n/vocabs/es.d.ts +104 -0
- package/lib/i18n/vocabs/fr.d.ts +104 -0
- package/lib/i18n/vocabs/jp.d.ts +104 -0
- package/lib/interceptors/http-auth-interceptor.d.ts +9 -0
- package/lib/interfaces/global-state.d.ts +5 -0
- package/lib/modules/errors/error404/error404.component.d.ts +15 -0
- package/lib/modules/errors/error500/error500.component.d.ts +15 -0
- package/lib/modules/errors/errors-routing.module.d.ts +7 -0
- package/lib/modules/errors/errors.component.d.ts +13 -0
- package/lib/modules/errors/errors.module.d.ts +11 -0
- package/lib/modules/layout/content/content.component.d.ts +16 -0
- package/lib/modules/layout/footer/footer.component.d.ts +8 -0
- package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +18 -0
- package/lib/modules/layout/header/header.component.d.ts +30 -0
- package/lib/modules/layout/header/navbar/navbar.component.d.ts +14 -0
- package/lib/modules/layout/header/page-title/page-title.component.d.ts +20 -0
- package/lib/modules/layout/keenicon/keenicon.component.d.ts +13 -0
- package/lib/modules/layout/layout/layout.component.d.ts +74 -0
- package/lib/modules/layout/layout.module.d.ts +32 -0
- package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +19 -0
- package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +19 -0
- package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +8 -0
- package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +19 -0
- package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +8 -0
- package/lib/modules/layout/sidebar/sidebar.component.d.ts +35 -0
- package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +8 -0
- package/lib/modules/layout/toolbar/classic/classic.component.d.ts +27 -0
- package/lib/modules/layout/toolbar/extended/extended.component.d.ts +8 -0
- package/lib/modules/layout/toolbar/reports/reports.component.d.ts +9 -0
- package/lib/modules/layout/toolbar/saas/saas.component.d.ts +9 -0
- package/lib/modules/layout/toolbar/toolbar.component.d.ts +27 -0
- package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +7 -0
- package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +7 -0
- package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +7 -0
- package/lib/routes/routing.d.ts +3 -0
- package/lib/services/auth.service.d.ts +9 -0
- package/lib/services/global-state.service.d.ts +9 -0
- package/package.json +25 -12
- package/{src/public-api.ts → public-api.d.ts} +37 -64
- package/.eslintrc.json +0 -37
- package/ng-package.json +0 -7
- package/src/lib/guards/auth.guard.ts +0 -20
- package/src/lib/i18n/translation.module.ts +0 -9
- package/src/lib/i18n/translation.service.ts +0 -61
- package/src/lib/i18n/vocabs/ch.ts +0 -105
- package/src/lib/i18n/vocabs/de.ts +0 -105
- package/src/lib/i18n/vocabs/en.ts +0 -105
- package/src/lib/i18n/vocabs/es.ts +0 -105
- package/src/lib/i18n/vocabs/fr.ts +0 -105
- package/src/lib/i18n/vocabs/jp.ts +0 -105
- package/src/lib/interceptors/http-auth-interceptor.ts +0 -21
- package/src/lib/interfaces/global-state.ts +0 -6
- package/src/lib/modules/errors/error404/error404.component.html +0 -24
- package/src/lib/modules/errors/error404/error404.component.scss +0 -0
- package/src/lib/modules/errors/error404/error404.component.spec.ts +0 -25
- package/src/lib/modules/errors/error404/error404.component.ts +0 -50
- package/src/lib/modules/errors/error500/error500.component.html +0 -24
- package/src/lib/modules/errors/error500/error500.component.scss +0 -0
- package/src/lib/modules/errors/error500/error500.component.spec.ts +0 -25
- package/src/lib/modules/errors/error500/error500.component.ts +0 -50
- package/src/lib/modules/errors/errors-routing.module.ts +0 -30
- package/src/lib/modules/errors/errors.component.html +0 -15
- package/src/lib/modules/errors/errors.component.scss +0 -4
- package/src/lib/modules/errors/errors.component.spec.ts +0 -25
- package/src/lib/modules/errors/errors.component.ts +0 -42
- package/src/lib/modules/errors/errors.module.ts +0 -21
- package/src/lib/modules/layout/content/content.component.html +0 -12
- package/src/lib/modules/layout/content/content.component.scss +0 -0
- package/src/lib/modules/layout/content/content.component.ts +0 -35
- package/src/lib/modules/layout/footer/footer.component.html +0 -32
- package/src/lib/modules/layout/footer/footer.component.scss +0 -0
- package/src/lib/modules/layout/footer/footer.component.spec.ts +0 -25
- package/src/lib/modules/layout/footer/footer.component.ts +0 -13
- package/src/lib/modules/layout/header/header-menu/header-menu.component.html +0 -27
- package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +0 -4
- package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +0 -25
- package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +0 -38
- package/src/lib/modules/layout/header/header.component.html +0 -90
- package/src/lib/modules/layout/header/header.component.scss +0 -0
- package/src/lib/modules/layout/header/header.component.spec.ts +0 -25
- package/src/lib/modules/layout/header/header.component.ts +0 -139
- package/src/lib/modules/layout/header/navbar/navbar.component.html +0 -92
- package/src/lib/modules/layout/header/navbar/navbar.component.scss +0 -0
- package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +0 -23
- package/src/lib/modules/layout/header/navbar/navbar.component.ts +0 -20
- package/src/lib/modules/layout/header/page-title/page-title.component.html +0 -32
- package/src/lib/modules/layout/header/page-title/page-title.component.ts +0 -40
- package/src/lib/modules/layout/keenicon/icons.json +0 -1
- package/src/lib/modules/layout/keenicon/keenicon.component.html +0 -4
- package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
- package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +0 -23
- package/src/lib/modules/layout/keenicon/keenicon.component.ts +0 -30
- package/src/lib/modules/layout/layout/layout.component.html +0 -70
- package/src/lib/modules/layout/layout/layout.component.scss +0 -15
- package/src/lib/modules/layout/layout/layout.component.ts +0 -399
- package/src/lib/modules/layout/layout.module.ts +0 -93
- package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
- package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +0 -81
- package/src/lib/modules/layout/scroll-top/scroll-top.component.html +0 -1
- package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +0 -75
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +0 -9
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +0 -13
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +0 -26
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +0 -36
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +0 -276
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +0 -15
- package/src/lib/modules/layout/sidebar/sidebar.component.html +0 -16
- package/src/lib/modules/layout/sidebar/sidebar.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar.component.ts +0 -203
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +0 -84
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/classic/classic.component.html +0 -37
- package/src/lib/modules/layout/toolbar/classic/classic.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/classic/classic.component.ts +0 -88
- package/src/lib/modules/layout/toolbar/extended/extended.component.html +0 -100
- package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/extended/extended.component.ts +0 -12
- package/src/lib/modules/layout/toolbar/reports/reports.component.html +0 -62
- package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/reports/reports.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/saas/saas.component.html +0 -77
- package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/saas/saas.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/toolbar.component.html +0 -27
- package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +0 -25
- package/src/lib/modules/layout/toolbar/toolbar.component.ts +0 -125
- package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +0 -12
- package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +0 -12
- package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +0 -12
- package/src/lib/routes/routing.ts +0 -72
- package/src/lib/services/auth.service.ts +0 -16
- package/src/lib/services/global-state.service.ts +0 -11
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
File without changes
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { FooterComponent } from './footer.component';
|
|
4
|
-
|
|
5
|
-
describe('FooterComponent', () => {
|
|
6
|
-
let component: FooterComponent;
|
|
7
|
-
let fixture: ComponentFixture<FooterComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ FooterComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(FooterComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: 'lib-footer',
|
|
5
|
-
templateUrl: './footer.component.html',
|
|
6
|
-
styleUrls: ['./footer.component.scss'],
|
|
7
|
-
})
|
|
8
|
-
export class FooterComponent {
|
|
9
|
-
@Input() appFooterContainerCSSClass: string = '';
|
|
10
|
-
|
|
11
|
-
currentDateStr: string = new Date().getFullYear().toString();
|
|
12
|
-
constructor() {}
|
|
13
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<ng-container *ngIf="title$ | async as title">
|
|
2
|
-
<!-- begin::Title -->
|
|
3
|
-
<h1 class="page-heading d-flex text-gray-900 fw-bold fs-3 my-0 flex-column justify-content-center">
|
|
4
|
-
{{ title }}
|
|
5
|
-
<ng-container *ngIf="appPageTitleDescription">
|
|
6
|
-
<ng-container *ngIf="description$ | async as description">
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<!--begin::Description-->
|
|
10
|
-
<span class="page-desc text-muted fs-7 fw-semibold" [ngClass]="{'pt-2': appPageTitleDirection === 'column'}">
|
|
11
|
-
<ng-container *ngIf="appPageTitleDirection === 'row'">
|
|
12
|
-
<!--begin::Separator-->
|
|
13
|
-
<span class="h-20px border-1 border-gray-300 border-start ms-3 mx-2"></span>
|
|
14
|
-
<!--end::Separator-->
|
|
15
|
-
</ng-container>
|
|
16
|
-
|
|
17
|
-
{{description}}
|
|
18
|
-
</span>
|
|
19
|
-
<!--end::Description-->
|
|
20
|
-
</ng-container>
|
|
21
|
-
|
|
22
|
-
</ng-container>
|
|
23
|
-
|
|
24
|
-
</h1>
|
|
25
|
-
<!-- end::Title -->
|
|
26
|
-
|
|
27
|
-
</ng-container>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { HeaderMenuComponent } from './header-menu.component';
|
|
4
|
-
|
|
5
|
-
describe('HeaderMenuComponent', () => {
|
|
6
|
-
let component: HeaderMenuComponent;
|
|
7
|
-
let fixture: ComponentFixture<HeaderMenuComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ HeaderMenuComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(HeaderMenuComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { Observable, Subscription } from 'rxjs';
|
|
3
|
-
import { PageInfoService, PageLink } from 'tango-app-metronics';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'lib-header-menu',
|
|
8
|
-
templateUrl: './header-menu.component.html',
|
|
9
|
-
styleUrls: ['./header-menu.component.scss'],
|
|
10
|
-
})
|
|
11
|
-
export class HeaderMenuComponent implements OnInit, OnDestroy {
|
|
12
|
-
private unsubscribe: Subscription[] = [];
|
|
13
|
-
|
|
14
|
-
@Input() appPageTitleDirection: string = '';
|
|
15
|
-
@Input() appPageTitleDescription: boolean = true;
|
|
16
|
-
|
|
17
|
-
title$: Observable<string>;
|
|
18
|
-
description$: Observable<string>;
|
|
19
|
-
|
|
20
|
-
constructor(private pageInfo: PageInfoService, private cd:ChangeDetectorRef) {}
|
|
21
|
-
|
|
22
|
-
ngOnInit(): void {
|
|
23
|
-
this.title$ = this.pageInfo.title.asObservable();
|
|
24
|
-
this.description$ = this.pageInfo.description.asObservable();
|
|
25
|
-
|
|
26
|
-
this.title$.subscribe((e)=>{
|
|
27
|
-
this.cd.detectChanges()
|
|
28
|
-
})
|
|
29
|
-
this.description$.subscribe((e)=>{
|
|
30
|
-
this.cd.detectChanges()
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
ngOnDestroy() {
|
|
35
|
-
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
<!--begin::Header container-->
|
|
2
|
-
<div class="app-container" id="kt_app_header_container" [ngClass]="headerContainerCssClass">
|
|
3
|
-
<ng-container *ngIf="appSidebarDefaultCollapseDesktopEnabled">
|
|
4
|
-
<div class="app-sidebar-collapse-d-flex align-items-center me-3">
|
|
5
|
-
<!--begin::sidebar toggle-->
|
|
6
|
-
<div class="btn btn-icon w-auto px-0 btn-color-muted btn-active-icon-primary" data-kt-toggle="true"
|
|
7
|
-
data-kt-toggle-target="body" data-kt-toggle-mode="on" data-kt-toggle-name="app-sidebar-collapse">
|
|
8
|
-
<lib-keenicon name="double-right" class="fs-1"></lib-keenicon>
|
|
9
|
-
</div>
|
|
10
|
-
<!--end::sidebar toggle-->
|
|
11
|
-
</div>
|
|
12
|
-
</ng-container>
|
|
13
|
-
|
|
14
|
-
<ng-container *ngIf="appSidebarDisplay">
|
|
15
|
-
<!--begin::sidebar mobile toggle-->
|
|
16
|
-
<div class="d-flex align-items-center d-lg-none ms-n2 me-2" title="Show sidebar menu">
|
|
17
|
-
<div class="btn btn-icon btn-active-color-primary w-35px h-35px" id="kt_app_sidebar_mobile_toggle">
|
|
18
|
-
<lib-keenicon name="abstract-14" class="fs-1"></lib-keenicon>
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<!--end::sidebar mobile toggle-->
|
|
22
|
-
<!--begin::Mobile logo-->
|
|
23
|
-
<div class="d-flex align-items-center flex-grow-1 flex-lg-grow-0">
|
|
24
|
-
<a routerLink="/dashboard" class="d-lg-none">
|
|
25
|
-
<img alt="Logo" src="./assets/media/logos/default-small.svg" class="h-30px" />
|
|
26
|
-
</a>
|
|
27
|
-
</div>
|
|
28
|
-
<!--end::Mobile logo-->
|
|
29
|
-
</ng-container>
|
|
30
|
-
|
|
31
|
-
<ng-container *ngIf="!appSidebarDisplay">
|
|
32
|
-
<!--begin::Logo-->
|
|
33
|
-
<div class="d-flex align-items-center flex-grow-1 flex-lg-grow-0 me-lg-15">
|
|
34
|
-
<a routerLink="/dashboard">
|
|
35
|
-
<ng-container *ngIf="currentLayoutType === 'dark-header'">
|
|
36
|
-
<img alt="Logo" src="./assets/media/logos/default-dark.svg"
|
|
37
|
-
class="h-20px h-lg-30px app-sidebar-logo-default" />
|
|
38
|
-
</ng-container>
|
|
39
|
-
<ng-container *ngIf="currentLayoutType !== 'dark-header'">
|
|
40
|
-
<img alt="Logo" src="./assets/media/logos/default.svg"
|
|
41
|
-
class="h-20px h-lg-30px app-sidebar-logo-default theme-light-show" />
|
|
42
|
-
<img alt="Logo" src="./assets/media/logos/default-dark.svg"
|
|
43
|
-
class="h-20px h-lg-30px app-sidebar-logo-default theme-dark-show" />
|
|
44
|
-
</ng-container>
|
|
45
|
-
</a>
|
|
46
|
-
</div>
|
|
47
|
-
<!--end::Logo-->
|
|
48
|
-
</ng-container>
|
|
49
|
-
|
|
50
|
-
<!--begin::Header wrapper-->
|
|
51
|
-
<div class="d-flex align-items-stretch justify-content-between flex-lg-grow-1" id="kt_app_header_wrapper">
|
|
52
|
-
<ng-container *ngIf="appHeaderDefaultContent === 'menu' && appHeaderDefaulMenuDisplay">
|
|
53
|
-
<!--begin::Menu wrapper-->
|
|
54
|
-
<div class="
|
|
55
|
-
app-header-menu
|
|
56
|
-
app-header-mobile-drawer
|
|
57
|
-
align-items-stretch
|
|
58
|
-
" data-kt-drawer="true" data-kt-drawer-name="app-header-menu" data-kt-drawer-activate="{default: true, lg: false}"
|
|
59
|
-
data-kt-drawer-overlay="true" data-kt-drawer-width="225px" data-kt-drawer-direction="end"
|
|
60
|
-
data-kt-drawer-toggle="#kt_app_header_menu_toggle" data-kt-swapper="true"
|
|
61
|
-
data-kt-swapper-mode="{default: 'append', lg: 'prepend'}"
|
|
62
|
-
data-kt-swapper-parent="{default: '#kt_app_body', lg: '#kt_app_header_wrapper'}">
|
|
63
|
-
<!--begin::Menu-->
|
|
64
|
-
<lib-header-menu
|
|
65
|
-
appPageTitleDirection = ''
|
|
66
|
-
[appPageTitleDescription] = true
|
|
67
|
-
class="
|
|
68
|
-
menu
|
|
69
|
-
menu-rounded
|
|
70
|
-
menu-column
|
|
71
|
-
menu-lg-row
|
|
72
|
-
my-5
|
|
73
|
-
my-lg-0
|
|
74
|
-
align-items-stretch
|
|
75
|
-
fw-semibold
|
|
76
|
-
px-2 px-lg-0
|
|
77
|
-
" id="kt_app_header_menu" data-kt-menu="true"></lib-header-menu>
|
|
78
|
-
<!--end::Menu-->
|
|
79
|
-
</div>
|
|
80
|
-
<!--end::Menu wrapper-->
|
|
81
|
-
</ng-container>
|
|
82
|
-
<!-- <ng-container *ngIf="appHeaderDefaultContent === 'page-title' && appPageTitleDisplay">
|
|
83
|
-
<app-page-title #ktPageTitle class="page-title d-flex"></app-page-title>
|
|
84
|
-
</ng-container> -->
|
|
85
|
-
<lib-navbar class="app-navbar flex-shrink-0" [appHeaderDefaulMenuDisplay]="appHeaderDefaulMenuDisplay"
|
|
86
|
-
[isRtl]="false"></lib-navbar>
|
|
87
|
-
</div>
|
|
88
|
-
<!--end::Header wrapper-->
|
|
89
|
-
</div>
|
|
90
|
-
<!--end::Header container-->
|
|
File without changes
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { HeaderComponent } from './header.component';
|
|
4
|
-
|
|
5
|
-
describe('HeaderComponent', () => {
|
|
6
|
-
let component: HeaderComponent;
|
|
7
|
-
let fixture: ComponentFixture<HeaderComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ HeaderComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(HeaderComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Component, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { NavigationCancel, NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import { ILayout, LayoutType } from 'tango-app-metronics';
|
|
5
|
-
import { LayoutService } from 'tango-app-metronics';
|
|
6
|
-
import { MenuComponent } from 'tango-app-metronics';
|
|
7
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'lib-header',
|
|
10
|
-
templateUrl: './header.component.html',
|
|
11
|
-
styleUrls: ['./header.component.scss'],
|
|
12
|
-
})
|
|
13
|
-
export class HeaderComponent implements OnInit, OnDestroy {
|
|
14
|
-
private unsubscribe: Subscription[] = [];
|
|
15
|
-
// Public props
|
|
16
|
-
currentLayoutType: LayoutType | null;
|
|
17
|
-
|
|
18
|
-
appHeaderDisplay: boolean;
|
|
19
|
-
appHeaderDefaultFixedDesktop: boolean;
|
|
20
|
-
appHeaderDefaultFixedMobile: boolean;
|
|
21
|
-
|
|
22
|
-
appHeaderDefaultContainer: 'fixed' | 'fluid';
|
|
23
|
-
headerContainerCssClass: string = '';
|
|
24
|
-
appHeaderDefaultContainerClass: string = '';
|
|
25
|
-
|
|
26
|
-
appHeaderDefaultStacked: boolean;
|
|
27
|
-
|
|
28
|
-
// view
|
|
29
|
-
appSidebarDefaultCollapseDesktopEnabled: boolean;
|
|
30
|
-
appSidebarDisplay: boolean;
|
|
31
|
-
appHeaderDefaultContent: string = '';
|
|
32
|
-
appHeaderDefaulMenuDisplay: boolean;
|
|
33
|
-
appPageTitleDisplay: boolean;
|
|
34
|
-
|
|
35
|
-
constructor(private layout: LayoutService, private router: Router) {
|
|
36
|
-
this.routingChanges();
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
updateProps(config: ILayout) {
|
|
40
|
-
this.appHeaderDisplay = this.layout.getProp(
|
|
41
|
-
'app.header.display',
|
|
42
|
-
config
|
|
43
|
-
) as boolean;
|
|
44
|
-
// view
|
|
45
|
-
this.appSidebarDefaultCollapseDesktopEnabled = this.layout.getProp(
|
|
46
|
-
'app.sidebar.default.collapse.desktop.enabled',
|
|
47
|
-
config
|
|
48
|
-
) as boolean;
|
|
49
|
-
this.appSidebarDisplay = this.layout.getProp(
|
|
50
|
-
'app.sidebar.display',
|
|
51
|
-
config
|
|
52
|
-
) as boolean;
|
|
53
|
-
this.appHeaderDefaultContent = this.layout.getProp(
|
|
54
|
-
'app.header.default.content',
|
|
55
|
-
config
|
|
56
|
-
) as string;
|
|
57
|
-
this.appHeaderDefaulMenuDisplay = this.layout.getProp(
|
|
58
|
-
'app.header.default.menu.display',
|
|
59
|
-
config
|
|
60
|
-
) as boolean;
|
|
61
|
-
this.appPageTitleDisplay = this.layout.getProp(
|
|
62
|
-
'app.pageTitle.display',
|
|
63
|
-
config
|
|
64
|
-
) as boolean;
|
|
65
|
-
|
|
66
|
-
// body attrs and container css classes
|
|
67
|
-
this.appHeaderDefaultFixedDesktop = this.layout.getProp(
|
|
68
|
-
'app.header.default.fixed.desktop',
|
|
69
|
-
config
|
|
70
|
-
) as boolean;
|
|
71
|
-
if (this.appHeaderDefaultFixedDesktop) {
|
|
72
|
-
document.body.setAttribute('data-kt-app-header-fixed', 'true');
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
this.appHeaderDefaultFixedMobile = this.layout.getProp(
|
|
76
|
-
'app.header.default.fixed.mobile',
|
|
77
|
-
config
|
|
78
|
-
) as boolean;
|
|
79
|
-
if (this.appHeaderDefaultFixedMobile) {
|
|
80
|
-
document.body.setAttribute('data-kt-app-header-fixed-mobile', 'true');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
this.appHeaderDefaultContainer = this.layout.getProp(
|
|
84
|
-
'appHeaderDefaultContainer',
|
|
85
|
-
config
|
|
86
|
-
) as 'fixed' | 'fluid';
|
|
87
|
-
this.headerContainerCssClass =
|
|
88
|
-
this.appHeaderDefaultContainer === 'fixed'
|
|
89
|
-
? 'container-xxl'
|
|
90
|
-
: 'container-fluid';
|
|
91
|
-
|
|
92
|
-
this.appHeaderDefaultContainerClass = this.layout.getProp(
|
|
93
|
-
'app.header.default.containerClass',
|
|
94
|
-
config
|
|
95
|
-
) as string;
|
|
96
|
-
if (this.appHeaderDefaultContainerClass) {
|
|
97
|
-
this.headerContainerCssClass += ` ${this.appHeaderDefaultContainerClass}`;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.appHeaderDefaultStacked = this.layout.getProp(
|
|
101
|
-
'app.header.default.stacked',
|
|
102
|
-
config
|
|
103
|
-
) as boolean;
|
|
104
|
-
if (this.appHeaderDefaultStacked) {
|
|
105
|
-
document.body.setAttribute('data-kt-app-header-stacked', 'true');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Primary header
|
|
109
|
-
// Secondary header
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
ngOnInit(): void {
|
|
113
|
-
const subscr = this.layout.layoutConfigSubject
|
|
114
|
-
.asObservable()
|
|
115
|
-
.subscribe((config: ILayout) => {
|
|
116
|
-
this.updateProps(config);
|
|
117
|
-
});
|
|
118
|
-
this.unsubscribe.push(subscr);
|
|
119
|
-
const layoutSubscr = this.layout.currentLayoutTypeSubject
|
|
120
|
-
.asObservable()
|
|
121
|
-
.subscribe((layout) => {
|
|
122
|
-
this.currentLayoutType = layout;
|
|
123
|
-
});
|
|
124
|
-
this.unsubscribe.push(layoutSubscr);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
routingChanges() {
|
|
128
|
-
const routerSubscription = this.router.events.subscribe((event) => {
|
|
129
|
-
if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
|
|
130
|
-
MenuComponent.reinitialization();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
this.unsubscribe.push(routerSubscription);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
ngOnDestroy() {
|
|
137
|
-
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
138
|
-
}
|
|
139
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
<!--begin::Search-->
|
|
2
|
-
<div class="app-navbar-item align-items-stretch" [ngClass]="itemClass">
|
|
3
|
-
<!--begin::Search-->
|
|
4
|
-
<div id="kt_header_search" class="header-search d-flex align-items-stretch" data-kt-search-keypress="true"
|
|
5
|
-
data-kt-search-min-length="2" data-kt-search-enter="enter" data-kt-search-layout="menu"
|
|
6
|
-
data-kt-menu-trigger="{default: 'hover'}" data-kt-menu-overflow="false" data-kt-menu-permanent="true"
|
|
7
|
-
data-kt-menu-placement="bottom-end" data-kt-search="true">
|
|
8
|
-
<!--begin::Search toggle-->
|
|
9
|
-
<div class="d-flex align-items-center" data-kt-search-element="toggle" id="kt_header_search_toggle">
|
|
10
|
-
<div [ngClass]="btnClass">
|
|
11
|
-
<lib-keenicon name="magnifier" [class]="btnIconClass"></lib-keenicon>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
<!--end::Search toggle-->
|
|
15
|
-
<!-- <lib-search-result-inner data-kt-search-element="content" data-kt-menu="true"
|
|
16
|
-
class="menu menu-sub menu-sub-dropdown p-7 w-325px w-md-375px"></lib-search-result-inner> -->
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
</div>
|
|
20
|
-
<!--end::Search-->
|
|
21
|
-
|
|
22
|
-
<!--begin::Activities-->
|
|
23
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
24
|
-
<!--begin::Drawer toggle-->
|
|
25
|
-
<div [ngClass]="btnClass" id="kt_activities_toggle">
|
|
26
|
-
<lib-keenicon name="messages" class="fs-2"></lib-keenicon>
|
|
27
|
-
</div>
|
|
28
|
-
<!--end::Drawer toggle-->
|
|
29
|
-
</div>
|
|
30
|
-
<!--end::Activities-->
|
|
31
|
-
|
|
32
|
-
<!--begin::Notifications-->
|
|
33
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
34
|
-
<!--begin::Menu- wrapper-->
|
|
35
|
-
<div [ngClass]="btnClass" data-kt-menu-trigger="{default: 'click', lg: 'hover'}" data-kt-menu-attach="parent"
|
|
36
|
-
data-kt-menu-placement="bottom-end">
|
|
37
|
-
<lib-keenicon name="notification-status" class="fs-2"></lib-keenicon>
|
|
38
|
-
</div>
|
|
39
|
-
<!-- <lib-notifications-inner></lib-notifications-inner> -->
|
|
40
|
-
<!--end::Menu wrapper-->
|
|
41
|
-
</div>
|
|
42
|
-
<!--end::Notifications-->
|
|
43
|
-
|
|
44
|
-
<!--begin::Chat-->
|
|
45
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
46
|
-
<div [ngClass]="btnClass" class="position-relative" id="kt_drawer_chat_toggle">
|
|
47
|
-
<lib-keenicon name="message-text-2" class="fs-2"></lib-keenicon>
|
|
48
|
-
<span
|
|
49
|
-
class="bullet bullet-dot bg-success h-6px w-6px position-absolute translate-middle top-0 start-50 animation-blink">
|
|
50
|
-
</span>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
<!--end::Chat-->
|
|
54
|
-
|
|
55
|
-
<!--begin::Quick links-->
|
|
56
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
57
|
-
<!--begin::Menu wrapper-->
|
|
58
|
-
<div [ngClass]="btnClass" data-kt-menu-trigger="click" data-kt-menu-attach="parent"
|
|
59
|
-
data-kt-menu-placement="bottom-end">
|
|
60
|
-
<lib-keenicon name="element-11" class="fs-2"></lib-keenicon>
|
|
61
|
-
</div>
|
|
62
|
-
<!--end::Menu wrapper-->
|
|
63
|
-
<!-- <lib-quick-links-inner></lib-quick-links-inner> -->
|
|
64
|
-
</div>
|
|
65
|
-
<!--end::Quick links-->
|
|
66
|
-
|
|
67
|
-
<!--begin::Theme mode-->
|
|
68
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
69
|
-
<!-- <lib-theme-mode-switcher [toggleBtnClass]="btnClass" toggleBtnClass="{`btn-active-light-primary btn-custom ${toolbarButtonHeightClass}`}"></lib-theme-mode-switcher> -->
|
|
70
|
-
</div>
|
|
71
|
-
<!--end::Theme mode-->
|
|
72
|
-
|
|
73
|
-
<!--begin::User menu-->
|
|
74
|
-
<div class="app-navbar-item" [ngClass]="itemClass">
|
|
75
|
-
<!--begin::Menu wrapper-->
|
|
76
|
-
<div class="cursor-pointer symbol" [ngClass]="userAvatarClass" data-kt-menu-trigger="{default: 'click'}" data-kt-menu-attach="parent" data-kt-menu-placement="bottom-end">
|
|
77
|
-
<img src="./assets/media/avatars/300-3.jpg" />
|
|
78
|
-
</div>
|
|
79
|
-
<!-- <lib-user-inner data-kt-menu='true'></lib-user-inner> -->
|
|
80
|
-
<!--end::Menu wrapper-->
|
|
81
|
-
</div>
|
|
82
|
-
<!--end::User menu-->
|
|
83
|
-
|
|
84
|
-
<!--begin::Header menu toggle-->
|
|
85
|
-
<ng-container *ngIf="appHeaderDefaulMenuDisplay">
|
|
86
|
-
<div class="app-navbar-item d-lg-none ms-2 me-n3" title="Show header menu">
|
|
87
|
-
<div class="btn btn-icon btn-active-color-primary w-35px h-35px" id="kt_app_header_menu_toggle">
|
|
88
|
-
<lib-keenicon name="element-4" class="fs-1" [ngClass]="btnIconClass"></lib-keenicon>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
</ng-container>
|
|
92
|
-
<!--end::Header menu toggle-->
|
|
File without changes
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { NavbarComponent } from './navbar.component';
|
|
4
|
-
|
|
5
|
-
describe('NavbarComponent', () => {
|
|
6
|
-
let component: NavbarComponent;
|
|
7
|
-
let fixture: ComponentFixture<NavbarComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ NavbarComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
|
|
15
|
-
fixture = TestBed.createComponent(NavbarComponent);
|
|
16
|
-
component = fixture.componentInstance;
|
|
17
|
-
fixture.detectChanges();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('should create', () => {
|
|
21
|
-
expect(component).toBeTruthy();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Component, Input, OnInit } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: 'lib-navbar',
|
|
5
|
-
templateUrl: './navbar.component.html',
|
|
6
|
-
styleUrls: ['./navbar.component.scss'],
|
|
7
|
-
})
|
|
8
|
-
export class NavbarComponent implements OnInit {
|
|
9
|
-
@Input() appHeaderDefaulMenuDisplay: boolean;
|
|
10
|
-
@Input() isRtl: boolean;
|
|
11
|
-
|
|
12
|
-
itemClass: string = 'ms-1 ms-lg-3';
|
|
13
|
-
btnClass: string = 'btn btn-icon btn-custom btn-icon-muted btn-active-light btn-active-color-primary w-35px h-35px w-md-40px h-md-40px';
|
|
14
|
-
userAvatarClass: string = 'symbol-35px symbol-md-40px';
|
|
15
|
-
btnIconClass: string = 'fs-2 fs-md-1';
|
|
16
|
-
|
|
17
|
-
constructor() {}
|
|
18
|
-
|
|
19
|
-
ngOnInit(): void {}
|
|
20
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<ng-container *ngIf="title$ | async as title">
|
|
2
|
-
|
|
3
|
-
<ng-container *ngIf="appPageTitleBreadcrumb">
|
|
4
|
-
<ng-container *ngIf="bc$ | async as _bc">
|
|
5
|
-
<!-- <ng-container *ngIf="_bc.length > 0"> -->
|
|
6
|
-
<ng-container *ngIf="appPageTitleDirection === 'row'">
|
|
7
|
-
<span class="h-20px border-gray-300 border-start mx-4"></span>
|
|
8
|
-
</ng-container>
|
|
9
|
-
<!--begin::Breadcrumb-->
|
|
10
|
-
|
|
11
|
-
<ul class="breadcrumb breadcrumb-separatorless fw-semibold fs-7 my-0"
|
|
12
|
-
[ngClass]="{'pt-1': appPageTitleDirection === 'column'}">
|
|
13
|
-
<li *ngFor="let bc of _bc" class="breadcrumb-item"
|
|
14
|
-
[ngClass]="!bc.isSeparator && bc.isActive ? 'text-gray-900' : ''"
|
|
15
|
-
[ngClass]="!bc.isSeparator && !bc.isActive ? 'text-muted' : ''">
|
|
16
|
-
<ng-container *ngIf="!bc.isSeparator">
|
|
17
|
-
<a class="text-muted text-hover-primary" [routerLink]="bc.path">
|
|
18
|
-
{{ bc.title }}
|
|
19
|
-
</a>
|
|
20
|
-
</ng-container>
|
|
21
|
-
<ng-container *ngIf="bc.isSeparator">
|
|
22
|
-
<span class="bullet bg-gray-200 w-5px h-2px"></span>
|
|
23
|
-
</ng-container>
|
|
24
|
-
</li>
|
|
25
|
-
<li class="breadcrumb-item text-gray-900">{{ title }}</li>
|
|
26
|
-
</ul>
|
|
27
|
-
<!--end::Breadcrumb-->
|
|
28
|
-
|
|
29
|
-
<!-- </ng-container> -->
|
|
30
|
-
</ng-container>
|
|
31
|
-
</ng-container>
|
|
32
|
-
</ng-container>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { Observable, Subscription } from 'rxjs';
|
|
3
|
-
import { PageInfoService, PageLink } from 'tango-app-metronics';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: 'lib-page-title',
|
|
7
|
-
templateUrl: './page-title.component.html',
|
|
8
|
-
})
|
|
9
|
-
export class PageTitleComponent implements OnInit, OnDestroy {
|
|
10
|
-
private unsubscribe: Subscription[] = [];
|
|
11
|
-
|
|
12
|
-
@Input() appPageTitleDirection: string = '';
|
|
13
|
-
@Input() appPageTitleBreadcrumb: boolean;
|
|
14
|
-
@Input() appPageTitleDescription: boolean;
|
|
15
|
-
|
|
16
|
-
title$: Observable<string>;
|
|
17
|
-
description$: Observable<string>;
|
|
18
|
-
bc$: Observable<Array<PageLink>>;
|
|
19
|
-
|
|
20
|
-
constructor(private pageInfo: PageInfoService, private cd:ChangeDetectorRef) {}
|
|
21
|
-
|
|
22
|
-
ngOnInit(): void {
|
|
23
|
-
this.title$ = this.pageInfo.title.asObservable();
|
|
24
|
-
this.description$ = this.pageInfo.description.asObservable();
|
|
25
|
-
this.bc$ = this.pageInfo.breadcrumbs.asObservable();
|
|
26
|
-
this.title$.subscribe((e)=>{
|
|
27
|
-
this.cd.detectChanges()
|
|
28
|
-
})
|
|
29
|
-
this.description$.subscribe((e)=>{
|
|
30
|
-
this.cd.detectChanges()
|
|
31
|
-
})
|
|
32
|
-
this.bc$.subscribe((e)=>{
|
|
33
|
-
this.cd.detectChanges()
|
|
34
|
-
})
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
ngOnDestroy() {
|
|
38
|
-
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
39
|
-
}
|
|
40
|
-
}
|