initial codebase
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<!-- <header>
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="https://github.com/ngx-rocket" translate>APP_NAME</a>
|
||||
<button class="navbar-toggler" type="button" aria-controls="navbar-menu"
|
||||
aria-label="Toggle navigation" (click)="toggleMenu()" [attr.aria-expanded]="!menuHidden">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div id="navbar-menu" class="collapse navbar-collapse float-xs-none" [ngbCollapse]="menuHidden">
|
||||
<div class="navbar-nav">
|
||||
<a class="nav-item nav-link text-uppercase" routerLink="/home" routerLinkActive="active">
|
||||
<i class="fas fa-home"></i>
|
||||
<span translate>Home</span>
|
||||
</a>
|
||||
<a class="nav-item nav-link text-uppercase" routerLink="/about" routerLinkActive="active">
|
||||
<i class="fas fa-question-circle"></i>
|
||||
<span translate>About</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-nav ml-auto">
|
||||
<div class="nav-item" ngbDropdown placement="bottom-right">
|
||||
<a id="language-dropdown" class="nav-link" ngbDropdownToggle>{{currentLanguage}}</a>
|
||||
<div ngbDropdownMenu aria-labelledby="language-dropdown">
|
||||
<button class="dropdown-item" *ngFor="let language of languages" (click)="setLanguage(language)">
|
||||
{{language}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item" ngbDropdown placement="bottom-right">
|
||||
<a id="user-dropdown" class="nav-link" ngbDropdownToggle>
|
||||
<i class="fas fa-user-circle"></i>
|
||||
</a>
|
||||
<div ngbDropdownMenu aria-labelledby="user-dropdown">
|
||||
<h6 class="dropdown-header">
|
||||
<span translate>Logged in as</span> <b>{{username}}</b></h6>
|
||||
<div class="dropdown-divider"></div>
|
||||
<button class="dropdown-item" (click)="logout()" translate>Logout</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header> -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="#">MifosX</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarColor02">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" routerLink="/clients" routerLinkActive="active">Clients</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Groups</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Loans</a>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="form-inline my-2 my-lg-0">
|
||||
<input class="form-control mr-sm-2" placeholder="Search" type="text">
|
||||
<button class="btn btn-secondary my-2 mr-sm-2 my-sm-0" type="submit">Search</button>
|
||||
</form>
|
||||
<button class="btn btn-secondary my-2 mr-sm-2 my-sm-0" (click)="logout()" type="submit">Logout</button>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
@@ -0,0 +1,10 @@
|
||||
/* @import "src/theme/theme-variables";
|
||||
|
||||
.navbar {
|
||||
margin-bottom: $spacer;
|
||||
}
|
||||
|
||||
.nav-link.dropdown-toggle {
|
||||
cursor: pointer;
|
||||
}
|
||||
*/
|
||||
@@ -0,0 +1,40 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
|
||||
import { AuthenticationService } from '../../authentication/authentication.service';
|
||||
import { MockAuthenticationService } from '../../authentication/authentication.service.mock';
|
||||
import { I18nService } from '../../i18n.service';
|
||||
import { HeaderComponent } from './header.component';
|
||||
|
||||
describe('HeaderComponent', () => {
|
||||
let component: HeaderComponent;
|
||||
let fixture: ComponentFixture<HeaderComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
RouterTestingModule,
|
||||
NgbModule.forRoot(),
|
||||
TranslateModule.forRoot()
|
||||
],
|
||||
declarations: [HeaderComponent],
|
||||
providers: [
|
||||
{ provide: AuthenticationService, useClass: MockAuthenticationService },
|
||||
I18nService
|
||||
]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(HeaderComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
import { AuthenticationService } from '../../authentication/authentication.service';
|
||||
import { I18nService } from '../../i18n.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-header',
|
||||
templateUrl: './header.component.html',
|
||||
styleUrls: ['./header.component.scss']
|
||||
})
|
||||
export class HeaderComponent implements OnInit {
|
||||
|
||||
menuHidden = true;
|
||||
|
||||
constructor(private router: Router,
|
||||
private authenticationService: AuthenticationService,
|
||||
private i18nService: I18nService) { }
|
||||
|
||||
ngOnInit() { }
|
||||
|
||||
toggleMenu() {
|
||||
this.menuHidden = !this.menuHidden;
|
||||
}
|
||||
|
||||
setLanguage(language: string) {
|
||||
this.i18nService.language = language;
|
||||
}
|
||||
|
||||
logout() {
|
||||
this.authenticationService.logout()
|
||||
.subscribe(() => this.router.navigate(['/login'], { replaceUrl: true }));
|
||||
}
|
||||
|
||||
get currentLanguage(): string {
|
||||
return this.i18nService.language;
|
||||
}
|
||||
|
||||
get languages(): string[] {
|
||||
return this.i18nService.supportedLanguages;
|
||||
}
|
||||
|
||||
get username(): string | null {
|
||||
const credentials = this.authenticationService.credentials;
|
||||
return credentials ? credentials.username : null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<app-header></app-header>
|
||||
<router-outlet></router-outlet>
|
||||
@@ -0,0 +1,39 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
|
||||
import { AuthenticationService } from '../authentication/authentication.service';
|
||||
import { MockAuthenticationService } from '../authentication/authentication.service.mock';
|
||||
import { CoreModule } from '../core.module';
|
||||
import { ShellComponent } from './shell.component';
|
||||
|
||||
describe('ShellComponent', () => {
|
||||
let component: ShellComponent;
|
||||
let fixture: ComponentFixture<ShellComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
RouterTestingModule,
|
||||
TranslateModule.forRoot(),
|
||||
NgbModule.forRoot(),
|
||||
CoreModule
|
||||
],
|
||||
providers: [
|
||||
{ provide: AuthenticationService, useClass: MockAuthenticationService }
|
||||
]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(ShellComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-shell',
|
||||
templateUrl: './shell.component.html',
|
||||
styleUrls: ['./shell.component.scss']
|
||||
})
|
||||
export class ShellComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() { }
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user