UNPKG

@miesil/pp-breadcrumbs

Version:

PP-Breadcrumbs is an Angular 7 module generating breadcrumbs based on the routing state.

2 lines 4.4 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("lodash"),require("rxjs/operators"),require("@angular/core"),require("@angular/router"),require("@angular/common")):"function"==typeof define&&define.amd?define("@miesil/pp-breadcrumbs",["exports","rxjs","lodash","rxjs/operators","@angular/core","@angular/router","@angular/common"],t):t((e.miesil=e.miesil||{},e.miesil["pp-breadcrumbs"]={}),e.rxjs,e.lodash,e.rxjs.operators,e.ng.core,e.ng.router,e.ng.common)}(this,function(e,s,r,n,t,i,o){"use strict";r.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var u=function(){function e(){}return e.prototype.resolve=function(e,t){var r=e.routeConfig.data,o=this.getFullPath(e),n="string"==typeof r.breadcrumbs?r.breadcrumbs:r.breadcrumbs.text||r.text||o;return s.of([{path:o,text:this.stringFormat(n,e.data)}])},e.prototype.getFullPath=function(e){return e.pathFromRoot.reduce(function(e,t){return e+t.url.reduce(function(e,t){return e+"/"+t.path},"")},"")},e.prototype.stringFormat=function(e,t){return r.template(e)(t)},e.decorators=[{type:t.Injectable}],e}(),a=function(){function e(t,e,r){var o=this;this.router=t,this.injector=r,this.breadcrumbs=new s.BehaviorSubject([]),this.defaultResolver=new u,this.breadcrumbsSource=[],this.router.events.pipe(n.filter(function(e){return e instanceof i.NavigationEnd})).subscribe(function(e){o.resolveCrumbs(t.routerState.snapshot.root).pipe(n.mergeMap(function(e){return e}),n.distinct(function(e){return e.text}),n.toArray(),n.tap(function(e){return o.breadcrumbsSource=e}),n.mergeMap(function(e){return o.postProcess?o.wrapIntoObservable(o.postProcess(e)).pipe(n.first()):s.of(e)})).subscribe(function(e){o.breadcrumbs.next(e)})})}return Object.defineProperty(e.prototype,"crumbs$",{get:function(){return this.breadcrumbs},enumerable:!0,configurable:!0}),e.prototype.refreshBreadcrumbs=function(){var t=this;(this.postProcess?this.wrapIntoObservable(this.postProcess(this.breadcrumbsSource)).pipe(n.first()):s.of(this.breadcrumbsSource)).subscribe(function(e){t.breadcrumbs.next(e)})},e.prototype.resolveCrumbs=function(e){var t=s.of([]),r=e.routeConfig&&e.routeConfig.data;if(r&&r.breadcrumbs){var o=(r.breadcrumbs.prototype instanceof u?this.injector.get(r.breadcrumbs):this.defaultResolver).resolve(e,this.router.routerState.snapshot);t=this.wrapIntoObservable(o).pipe(n.first())}return e.firstChild?s.concat(t,this.resolveCrumbs(e.firstChild)):t},e.prototype.wrapIntoObservable=function(e){return e instanceof s.Observable?e:this.isPromise(e)?s.from(Promise.resolve(e)):s.of(e)},e.prototype.isPromise=function(e){return e&&"function"==typeof e.then},e.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:i.Router},{type:i.ActivatedRoute},{type:t.Injector}]},e.ngInjectableDef=t.defineInjectable({factory:function(){return new e(t.inject(i.Router),t.inject(i.ActivatedRoute),t.inject(t.INJECTOR))},token:e,providedIn:"root"}),e}(),c=function(){function e(e){this.service=e,this.subscriptions=[],this.onNavigate=new t.EventEmitter}return e.prototype.ngOnInit=function(){var t=this;this.subscriptions.push(this.service.crumbs$.subscribe(function(e){t.crumbs=e}))},e.prototype.ngOnDestroy=function(){this.subscriptions.forEach(function(e){return e.unsubscribe()}),this.onNavigate.complete(),this.onNavigate=undefined},e.prototype.click=function(){this.onNavigate.emit({})},e.decorators=[{type:t.Component,args:[{selector:"pp-breadcrumbs",template:'<ol *ngIf="crumbs.length" class="breadcrumb">\r\n <li *ngFor="let crumb of crumbs; let first = first; let last = last" [ngClass]="{ \'active\': last }" class="breadcrumb-item">\r\n <a *ngIf="!last; else lastBreadcrumb" [routerLink]="crumb.path" [innerHTML]="crumb.text" (click)="click()"></a>\r\n <ng-template #lastBreadcrumb>\r\n <span [innerHTML]="crumb.text"></span>\r\n </ng-template>\r\n </li>\r\n</ol>\r\n',styles:[""]}]}],e.ctorParameters=function(){return[{type:a}]},e.propDecorators={onNavigate:[{type:t.Output}]},e}(),p=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:[c],imports:[o.CommonModule,i.RouterModule],exports:[c]}]}],e}();e.PpBreadcrumbsService=a,e.PpBreadcrumbsComponent=c,e.PpBreadcrumbsResolver=u,e.PpBreadcrumbsModule=p,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=miesil-pp-breadcrumbs.umd.min.js.map