@exalif/ngx-breadcrumbs
Version:
Angular 4+ breadcrumbs on top of native Angular router
2 lines • 4.07 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("lodash.template"),require("lodash.templatesettings"),require("@angular/router"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("@exalif/ngx-breadcrumbs",["exports","@angular/core","rxjs","lodash.template","lodash.templatesettings","@angular/router","rxjs/operators","@angular/common"],t):t((e.exalif=e.exalif||{},e.exalif["ngx-breadcrumbs"]={}),e.ng.core,e.rxjs,null,null,e.ng.router,e.rxjs.operators,e.ng.common)}(this,function(e,t,s,r,n,u,a,o){"use strict";var i=function(){function e(){}return e.decorators=[{type:t.Injectable}],e}(),c={template:r,templateSettings:n};c.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var l=function(){function e(){}return e.stringFormat=function(e,t){return c.template(e)(t)},e.wrapIntoObservable=function(e){return e instanceof s.Observable?e:this.isPromise(e)?s.from(Promise.resolve(e)):s.of(e)},e.isPromise=function(e){return e&&"function"==typeof e.then},e}(),f=function(){function e(){}return e.prototype.resolve=function(e,t){var r=e.routeConfig.data,n=this.getFullPath(e),o="string"==typeof r.breadcrumbs?r.breadcrumbs:r.breadcrumbs.text||r.text||n,u=[{text:o=l.stringFormat(o,e.data),path:n}];return s.of(u)},e.prototype.getFullPath=function(e){return this.fetchFullPath(e.pathFromRoot)},e.prototype.fetchFullPath=function(e){var r=this;return e.reduce(function(e,t){return e+r.fetchRelativePath(t.url)},"")},e.prototype.fetchRelativePath=function(e){return e.reduce(function(e,t){return e+"/"+t.path},"")},e}(),p=function(){function e(r,e,t,n){var o=this;this._router=r,this.route=e,this._config=t,this._injector=n,this._breadcrumbs=new s.BehaviorSubject([]),this._defaultResolver=new f,this._router.events.pipe(a.filter(function(e){return e instanceof u.NavigationEnd})).subscribe(function(e){var t=r.routerState.snapshot.root;o._resolveCrumbs(t).pipe(a.flatMap(function(e){return e}),a.distinct(function(e){return e.text}),a.toArray(),a.flatMap(function(e){if(o._config.postProcess){var t=o._config.postProcess(e);return l.wrapIntoObservable(t).pipe(a.first())}return 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.getCrumbs=function(){return this.crumbs$},e.prototype._resolveCrumbs=function(e){var t,r=e.routeConfig&&e.routeConfig.data;if(r&&r.breadcrumbs){var n=(r.breadcrumbs.prototype instanceof f?this._injector.get(r.breadcrumbs):this._defaultResolver).resolve(e,this._router.routerState.snapshot);t=l.wrapIntoObservable(n).pipe(a.first())}else t=s.of([]);return e.firstChild&&(t=s.concat(t,this._resolveCrumbs(e.firstChild))),t},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:u.Router},{type:u.ActivatedRoute},{type:i},{type:t.Injector}]},e}(),b=function(){function e(e){this.breadcrumbsService=e,this.crumbs$=this.breadcrumbsService.getCrumbs()}return e.decorators=[{type:t.Component,args:[{selector:"lib-breadcrumbs",template:'\n <ol *ngIf="crumbs$ | async as crumbs" class="breadcrumbs__container">\n <li *ngFor="let crumb of crumbs; let last = last"\n [ngClass]="{ \'breadcrumbs__item--active\': last }"\n class="breadcrumbs__item"\n >\n <a *ngIf="!last" [routerLink]="crumb.path">{{ crumb.text }}</a>\n <span *ngIf="last">{{ crumb.text }}</span>\n </li>\n </ol>\n '}]}],e.ctorParameters=function(){return[{type:p}]},e}(),m=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[i,p]}},e.forChild=function(){return{ngModule:e}},e.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,u.RouterModule],declarations:[b],exports:[b]}]}],e}();e.BreadcrumbsModule=m,e.BreadcrumbsComponent=b,e.BreadcrumbsService=p,e.BreadcrumbsConfig=i,e.BreadcrumbsResolver=f,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=exalif-ngx-breadcrumbs.umd.min.js.map