Generate component, model, action & reducer for breadcrumbs

This commit is contained in:
Eraldo Hasanaj
2019-01-21 17:11:31 +01:00
parent 596c98d83c
commit 4aeae5c1d4
13 changed files with 81 additions and 11 deletions

View File

@@ -6,9 +6,11 @@ import { AppComponent } from './app.component';
import { ComponentsModule } from './modules/components.module';
import { processReducer } from './core/reducers/process.reducer';
import { StoreModule } from '@ngrx/store';
import { breadcrumbReducer } from './core/reducers/breadcrumb.reducer';
const rootReducer = {
processes: processReducer
processes: processReducer,
breadcrumbs: breadcrumbReducer
};
@NgModule({

View File

@@ -1,5 +1,7 @@
import { Process } from './core/models/process.model';
import { Breadcrumb } from './core/models/breadcrumb.model';
export class AppState {
readonly processes: Process[];
readonly breadcrumbs: Breadcrumb[];
}

View File

@@ -0,0 +1,3 @@
<p>
breadcrumbs works!
</p>

View File

View File

@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BreadcrumbsComponent } from './breadcrumbs.component';
describe('BreadcrumbsComponent', () => {
let component: BreadcrumbsComponent;
let fixture: ComponentFixture<BreadcrumbsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BreadcrumbsComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BreadcrumbsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-breadcrumbs',
templateUrl: './breadcrumbs.component.html',
styleUrls: ['./breadcrumbs.component.scss']
})
export class BreadcrumbsComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@@ -1,3 +1,4 @@
<div class="content-body">
<app-breadcrumbs *ngIf="router.url !== '/dashboard'"></app-breadcrumbs>
<router-outlet></router-outlet>
</div>

View File

@@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-content',
@@ -7,7 +8,7 @@ import { Component, OnInit } from '@angular/core';
})
export class ContentComponent implements OnInit {
constructor() { }
constructor(private router: Router) { }
ngOnInit() {
}

View File

@@ -0,0 +1,10 @@
import { Action } from '@ngrx/store';
import { Breadcrumb } from '../models/breadcrumb.model';
export const ADD_BREADCRUMB = 'ADD_BERADCRUMB';
export class AddBreadcrumb implements Action {
type: string;
constructor(public payload: Breadcrumb) {}
}

View File

@@ -0,0 +1,4 @@
export interface Breadcrumb {
name: string;
path: string;
}

View File

@@ -1,7 +0,0 @@
import { Process } from './process.model';
describe('Process', () => {
it('should create an instance', () => {
expect(new Process()).toBeTruthy();
});
});

View File

@@ -0,0 +1,11 @@
import { Breadcrumb } from '../models/breadcrumb.model';
import { ADD_BREADCRUMB } from '../actions/breadcrumb.actions';
export function breadcrumbReducer(breadcrumbs: Breadcrumb[] = [], action: any) {
switch (action.type) {
case ADD_BREADCRUMB:
return [...breadcrumbs, action.payload];
default:
return breadcrumbs;
}
}

View File

@@ -8,6 +8,7 @@ import { ArticleSearchComponent } from 'src/app/components/article-search/articl
import { DashboardComponent } from 'src/app/components/dashboard/dashboard.component';
import { AppRoutingModule } from 'src/app/app-routing.module';
import { MenuComponent } from '../components/menu/menu.component';
import { BreadcrumbsComponent } from '../components/breadcrumbs/breadcrumbs.component';
@NgModule({
declarations: [
@@ -17,7 +18,8 @@ import { MenuComponent } from '../components/menu/menu.component';
ContentComponent,
ArticleSearchComponent,
DashboardComponent,
MenuComponent
MenuComponent,
BreadcrumbsComponent
],
imports: [
CommonModule,
@@ -30,7 +32,8 @@ import { MenuComponent } from '../components/menu/menu.component';
ContentComponent,
ArticleSearchComponent,
DashboardComponent,
MenuComponent
MenuComponent,
BreadcrumbsComponent
]
})
export class ComponentsModule { }