UNPKG

@exalif/ngx-breadcrumbs

Version:

Angular 4+ breadcrumbs on top of native Angular router

1 lines 17.4 kB
{"version":3,"file":"exalif-ngx-breadcrumbs.mjs","sources":["../../../../libs/ngx-breadcrumbs/src/lib/services/breadcrumbs.config.ts","../../../../libs/ngx-breadcrumbs/src/lib/utils/breadcrumbs.utils.ts","../../../../libs/ngx-breadcrumbs/src/lib/services/breadcrumbs.resolver.ts","../../../../libs/ngx-breadcrumbs/src/lib/services/breadcrumbs.service.ts","../../../../libs/ngx-breadcrumbs/src/lib/component/breadcrumbs.component.ts","../../../../libs/ngx-breadcrumbs/src/lib/breadcrumbs.module.ts","../../../../libs/ngx-breadcrumbs/src/exalif-ngx-breadcrumbs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { Breadcrumb } from '../models/breadcrumb';\n\nexport type PostProcessFunction =\n (crumbs: Breadcrumb[]) => Promise<Breadcrumb[]> | Observable<Breadcrumb[]> | Breadcrumb[];\n\nexport type DistinctKey = keyof Breadcrumb;\n\n@Injectable()\nexport class BreadcrumbsConfig {\n public postProcess: PostProcessFunction | null = null;\n public applyDistinctOn: DistinctKey | null = 'text';\n\n constructor(options: BreadcrumbsConfig = {\n postProcess: null,\n applyDistinctOn: 'text',\n }) {\n if (!options) {\n return;\n }\n\n Object.keys(options).forEach((optionKey) => {\n this[optionKey] = options[optionKey];\n });\n }\n}\n","import { Observable, of, from } from 'rxjs';\n\nexport abstract class BreadcrumbsUtils {\n public static stringFormat(rawTemplate: string, data: any): string {\n const templateRegex = new RegExp('{{[\\\\s]*[a-zA-Z._]+?[\\\\s]*}}', 'g');\n\n return rawTemplate.replace(templateRegex, (match) => {\n const keyRegex = new RegExp('([a-zA-Z._]+)', 'g');\n const key = match.match(keyRegex);\n\n if (!key || !key.length) {\n return match;\n }\n\n const value = BreadcrumbsUtils.leaf(data, key[0]);\n\n if (!value) {\n return key[0];\n }\n\n return value;\n });\n }\n\n public static wrapIntoObservable<T>(value: T | Promise<T> | Observable<T>): Observable<T> {\n if (value instanceof Observable) {\n return value;\n }\n\n if (this.isPromise(value)) {\n return from(Promise.resolve(value));\n }\n\n return of(value as T);\n }\n\n private static isPromise(value: any): boolean {\n return value && (typeof value.then === 'function');\n }\n\n /**\n * Access object nested value by giving a path\n *\n * @param obj The object you want to access value from\n * @param path The value path. e.g: `bar.baz`\n * @example\n * const obj = { foo: { bar: 'Baz' } };\n * const path = 'foo.bar';\n * leaf(obj, path) // 'Baz'\n */\n public static leaf(obj: any, path: string) {\n const result = path.split('.').reduce((value, el) => value[el] || {}, obj);\n\n return BreadcrumbsUtils.isEmptyObject(result) ? null : result;\n }\n\n /**\n * checks whether an object is empty or not\n *\n * @param object object to extract values from\n * @returns boolean\n */\n public static isEmptyObject(obj): boolean {\n if (typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]') {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlSegment } from '@angular/router';\n\nimport { Observable, of } from 'rxjs';\n\nimport { Breadcrumb } from '../models/breadcrumb';\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\n\nexport class BreadcrumbsResolver {\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Breadcrumb[]> | Promise<Breadcrumb[]> | Breadcrumb[] {\n\n const data = route.routeConfig.data;\n const path = this.getFullPath(route);\n\n let text = typeof (data.breadcrumbs) === 'string' ? data.breadcrumbs : data.breadcrumbs.text || data.text || path;\n text = BreadcrumbsUtils.stringFormat(text, route.data);\n\n const crumbs: Breadcrumb[] = [{\n text,\n path\n }];\n\n return of(crumbs);\n }\n\n public getFullPath(route: ActivatedRouteSnapshot): string {\n return this.fetchFullPath(route.pathFromRoot);\n }\n\n private fetchFullPath(routes: ActivatedRouteSnapshot[]): string {\n return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), '');\n }\n\n private fetchRelativePath(urlSegments: UrlSegment[]): string {\n return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, '');\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\n\nimport { Observable, of, BehaviorSubject, concat } from 'rxjs';\n\nimport { filter, flatMap, distinct, toArray, first, tap } from 'rxjs/operators';\n\nimport { BreadcrumbsConfig } from './breadcrumbs.config';\nimport { BreadcrumbsResolver } from './breadcrumbs.resolver';\nimport { Breadcrumb } from '../models/breadcrumb';\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\n\n@Injectable()\nexport class BreadcrumbsService {\n\n private breadcrumbs = new BehaviorSubject<Breadcrumb[]>([]);\n private defaultResolver = new BreadcrumbsResolver();\n\n constructor(\n public route: ActivatedRoute,\n private router: Router,\n private config: BreadcrumbsConfig,\n private injector: Injector\n ) {\n\n this.router.events.pipe(filter((x) => x instanceof NavigationEnd))\n .subscribe((_: NavigationEnd) => {\n const routeRoot = router.routerState.snapshot.root;\n\n this.resolveCrumbs(routeRoot).pipe(\n flatMap((crumbs: Breadcrumb[]) => crumbs),\n this.config.applyDistinctOn\n ? distinct((crumb: Breadcrumb) => crumb[this.config.applyDistinctOn])\n : tap(),\n toArray(),\n flatMap((crumbs: Breadcrumb[]) => {\n if (this.config.postProcess) {\n const postProcessedCrumb = this.config.postProcess(crumbs);\n return BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(postProcessedCrumb).pipe(\n first()\n );\n } else {\n return of(crumbs);\n }\n })\n )\n .subscribe((crumbs: Breadcrumb[]) => {\n this.breadcrumbs.next(crumbs);\n });\n });\n }\n\n get crumbs$(): Observable<Breadcrumb[]> {\n return this.breadcrumbs;\n }\n\n public getCrumbs(): Observable<Breadcrumb[]> {\n return this.crumbs$;\n }\n\n private resolveCrumbs(route: ActivatedRouteSnapshot): Observable<Breadcrumb[]> {\n\n let crumbs$: Observable<Breadcrumb[]>;\n\n const data = route.routeConfig && route.routeConfig.data;\n\n if (data && data.breadcrumbs) {\n let resolver: BreadcrumbsResolver;\n\n if (data.breadcrumbs.prototype instanceof BreadcrumbsResolver) {\n resolver = this.injector.get(data.breadcrumbs);\n } else {\n resolver = this.defaultResolver;\n }\n\n const result = resolver.resolve(route, this.router.routerState.snapshot);\n crumbs$ = BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(result).pipe(\n first()\n );\n\n } else {\n crumbs$ = of([]);\n }\n\n if (route.firstChild) {\n crumbs$ = concat(crumbs$, this.resolveCrumbs(route.firstChild));\n }\n\n return crumbs$;\n }\n}\n","\nimport { Component } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { BreadcrumbsService } from '../services/breadcrumbs.service';\nimport { Breadcrumb } from '../models/breadcrumb';\n\n@Component({\n selector: 'lib-breadcrumbs',\n 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 `\n})\nexport class BreadcrumbsComponent {\n public crumbs$: Observable<Breadcrumb[]> = this.breadcrumbsService.getCrumbs();\n\n constructor(public breadcrumbsService: BreadcrumbsService) { }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BreadcrumbsConfig } from './services/breadcrumbs.config';\nimport { BreadcrumbsService } from './services/breadcrumbs.service';\nimport { BreadcrumbsComponent } from './component/breadcrumbs.component';\n\n// @dynamic\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n ],\n declarations: [BreadcrumbsComponent],\n exports: [BreadcrumbsComponent],\n})\nexport class BreadcrumbsModule {\n public static forRoot(config?: BreadcrumbsConfig): ModuleWithProviders<BreadcrumbsModule> {\n return {\n ngModule: BreadcrumbsModule,\n providers: [\n { provide: BreadcrumbsConfig, useFactory: () => new BreadcrumbsConfig(config) },\n BreadcrumbsService,\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BreadcrumbsConfig","i1.BreadcrumbsService","i3"],"mappings":"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"}