UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

52 lines 7.85 kB
import { Injectable } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { NavigationEnd } from '@angular/router'; import { BehaviorSubject } from 'rxjs'; import { filter } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export class BreadcrumbRouterService { #breadcrumbsBehaviorSubject; constructor(router, route) { this.router = router; this.route = route; this.outlet = 'primary'; this.#breadcrumbsBehaviorSubject = new BehaviorSubject(new Array()); this.breadcrumbs$ = this.#breadcrumbsBehaviorSubject.asObservable(); this.router.events .pipe(takeUntilDestroyed(), filter((event) => event instanceof NavigationEnd)) .subscribe((event) => { const breadcrumbs = []; let currentRoute = this.route.root; let url = ''; do { const childrenRoutes = currentRoute.children; currentRoute = null; childrenRoutes.forEach((childRoute) => { // console.log('breadcrumb event', event, 'route', route); if (childRoute.outlet === this.outlet) { const routeSnapshot = childRoute.snapshot; url += '/' + routeSnapshot.url.map((segment) => segment.path).join('/'); breadcrumbs.push({ label: routeSnapshot.data['title'] ?? routeSnapshot.title ?? '', url, queryParams: routeSnapshot.queryParams }); currentRoute = childRoute; } }); } while (currentRoute); this.#breadcrumbsBehaviorSubject.next(Object.assign([], breadcrumbs)); return breadcrumbs; }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BreadcrumbRouterService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BreadcrumbRouterService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BreadcrumbRouterService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLXJvdXRlci9icmVhZGNydW1iLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFrQixhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTXhDLE1BQU0sT0FBTyx1QkFBdUI7SUFHekIsMkJBQTJCLENBQTRHO0lBR2hKLFlBQW9CLE1BQWMsRUFBVSxLQUFxQjtRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFMMUQsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUVqQixnQ0FBMkIsR0FBdUMsSUFBSSxlQUFlLENBQW9CLElBQUksS0FBSyxFQUFtQixDQUFDLENBQUM7UUFDdkksaUJBQVksR0FBa0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBSXJHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNmLElBQUksQ0FDSCxrQkFBa0IsRUFBRSxFQUNwQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FDbEQ7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxZQUFZLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzFELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQztnQkFDRixNQUFNLGNBQWMsR0FBcUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDL0QsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUNwQywwREFBMEQ7b0JBQzFELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3RDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQzFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3hFLFdBQVcsQ0FBQyxJQUFJLENBQUM7NEJBQ2YsS0FBSyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUMvRCxHQUFHOzRCQUNILFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVzt5QkFDdkMsQ0FBQyxDQUFDO3dCQUNILFlBQVksR0FBRyxVQUFVLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLFFBQVEsWUFBWSxFQUFFO1lBRXZCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUV0RSxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBdkNVLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi1pdGVtL2JyZWFkY3J1bWItaXRlbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJSb3V0ZXJTZXJ2aWNlIHtcbiAgcHVibGljIG91dGxldCA9ICdwcmltYXJ5JztcblxuICByZWFkb25seSAjYnJlYWRjcnVtYnNCZWhhdmlvclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxJQnJlYWRjcnVtYkl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElCcmVhZGNydW1iSXRlbVtdPihuZXcgQXJyYXk8SUJyZWFkY3J1bWJJdGVtPigpKTtcbiAgcmVhZG9ubHkgYnJlYWRjcnVtYnMkOiBPYnNlcnZhYmxlPElCcmVhZGNydW1iSXRlbVtdPiA9IHRoaXMuI2JyZWFkY3J1bWJzQmVoYXZpb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG5cbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IGFueVtdID0gW107XG4gICAgICAgIGxldCBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCA9IHRoaXMucm91dGUucm9vdDtcbiAgICAgICAgbGV0IHVybCA9ICcnO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgY2hpbGRyZW5Sb3V0ZXM6IEFjdGl2YXRlZFJvdXRlW10gPSBjdXJyZW50Um91dGUuY2hpbGRyZW47XG4gICAgICAgICAgY3VycmVudFJvdXRlID0gbnVsbDtcbiAgICAgICAgICBjaGlsZHJlblJvdXRlcy5mb3JFYWNoKChjaGlsZFJvdXRlKSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnYnJlYWRjcnVtYiBldmVudCcsIGV2ZW50LCAncm91dGUnLCByb3V0ZSk7XG4gICAgICAgICAgICBpZiAoY2hpbGRSb3V0ZS5vdXRsZXQgPT09IHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSBjaGlsZFJvdXRlLnNuYXBzaG90O1xuICAgICAgICAgICAgICB1cmwgKz0gJy8nICsgcm91dGVTbmFwc2hvdC51cmwubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHJvdXRlU25hcHNob3QuZGF0YVsndGl0bGUnXSA/PyByb3V0ZVNuYXBzaG90LnRpdGxlID8/ICcnLFxuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY3VycmVudFJvdXRlID0gY2hpbGRSb3V0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSB3aGlsZSAoY3VycmVudFJvdXRlKTtcblxuICAgICAgICB0aGlzLiNicmVhZGNydW1ic0JlaGF2aW9yU3ViamVjdC5uZXh0KE9iamVjdC5hc3NpZ24oW10sIGJyZWFkY3J1bWJzKSk7XG5cbiAgICAgICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==