UNPKG

@junte/ui

Version:

Quality Angular UI components kit

123 lines 15.5 kB
import { __decorate, __metadata } from "tslib"; import { Component, HostBinding, Input } from '@angular/core'; import { Meta, Title } from '@angular/platform-browser'; import { ActivatedRoute, NavigationEnd, Router, RouterState } from '@angular/router'; import { BehaviorSubject } from 'rxjs'; import { filter } from 'rxjs/operators'; import { PropertyApi } from '../../core/decorators/api'; import { UI } from '../../core/enums/ui'; import { AppAsideComponent } from '../../layout/app/aside/app-aside.component'; class Breadcrumb { constructor(defs = null) { this.title = null; this.disabled = false; this.url = '.'; Object.assign(this, defs); } } let BreadcrumbsComponent = class BreadcrumbsComponent { constructor(router, titleService, metaService) { this.router = router; this.titleService = titleService; this.metaService = metaService; this.ui = UI; this.routerState$ = new BehaviorSubject(this.router.routerState); this.subscriptions = []; this.breadcrumbs = []; this.host = 'jnt-breadcrumbs-host'; } get withAside() { return !!this.aside; } ngOnInit() { this.subscriptions.push(this.router.events .pipe(filter(event => event instanceof NavigationEnd)) .subscribe(() => this.routerState$.next(this.router.routerState))); this.routerState$.pipe(filter(r => !!r)) .subscribe((router) => this.build(router.root)); } ngOnDestroy() { this.subscriptions.forEach(s => s.unsubscribe()); } build(router) { let route = router; const breadcrumbs = []; while (route) { if (route.routeConfig && route.routeConfig.data) { if (route.routeConfig.data.breadcrumb) { const breadcrumb = route.routeConfig.data.breadcrumb; (Array.isArray(breadcrumb) ? breadcrumb : [breadcrumb]) .filter(crumb => !!crumb) .forEach(crumb => { switch (typeof crumb) { case 'string': { breadcrumbs.push(new Breadcrumb({ route, title: crumb })); break; } case 'object': { const title = typeof crumb.label === 'string' ? crumb.label : crumb.label(route.snapshot.data); if (!!title) { breadcrumbs.push(new Breadcrumb({ route, title, url: crumb.url, disabled: crumb.disabled })); } break; } case 'function': { const title = crumb(route.snapshot.data); if (!!title) { breadcrumbs.push(new Breadcrumb({ route, title })); } break; } default: throw new Error('wrong breadcrump type'); } }); } } route = route.firstChild; } this.breadcrumbs = breadcrumbs; const metaTitle = this.breadcrumbs.map(crumb => crumb.title).join(' · '); this.titleService.setTitle(metaTitle); this.metaService.updateTag({ name: 'description', content: metaTitle }); } }; BreadcrumbsComponent.ctorParameters = () => [ { type: Router }, { type: Title }, { type: Meta } ]; __decorate([ HostBinding('attr.host'), __metadata("design:type", Object) ], BreadcrumbsComponent.prototype, "host", void 0); __decorate([ HostBinding('attr.data-with-aside'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], BreadcrumbsComponent.prototype, "withAside", null); __decorate([ PropertyApi({ description: 'Support burger button for mobile devices', type: 'AppAsideComponent' }), Input(), __metadata("design:type", AppAsideComponent) ], BreadcrumbsComponent.prototype, "aside", void 0); BreadcrumbsComponent = __decorate([ Component({ selector: 'jnt-breadcrumb', template: "<jnt-stack child-of=\"jnt-breadcrumbs-host\" *ngIf=\"breadcrumbs.length > 1\"\n [orientation]=\"ui.orientation.horizontal\"\n [gutter]=\"ui.gutter.small\"\n [spacing]=\"ui.gutter.tiny\"\n [wrap]=\"ui.wrap.wrap\"\n [align]=\"ui.align.center\">\n <ng-container *ngFor=\"let crumb of breadcrumbs\">\n <a child-of=\"jnt-breadcrumbs-host\" (click)=\"router.navigate([crumb.url], {relativeTo: crumb.route})\"\n href=\"javascript:;\"\n [attr.data-disabled]=\"crumb.disabled\">\n {{crumb.title}}\n </a>\n <jnt-icon child-of=\"jnt-breadcrumbs-host\" [icon]=\"ui.icons.chevronRight\"></jnt-icon>\n </ng-container>\n</jnt-stack>" }), __metadata("design:paramtypes", [Router, Title, Meta]) ], BreadcrumbsComponent); export { BreadcrumbsComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL25hdmlnYXRpb24vYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE1BQU0sVUFBVTtJQU9kLFlBQVksSUFBSSxHQUFHLElBQUk7UUFKdkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsUUFBRyxHQUFHLEdBQUcsQ0FBQztRQUdSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQU9ELElBQWEsb0JBQW9CLEdBQWpDLE1BQWEsb0JBQW9CO0lBd0IvQixZQUFtQixNQUFjLEVBQ2IsWUFBbUIsRUFDbkIsV0FBaUI7UUFGbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQ25CLGdCQUFXLEdBQVgs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RTs4QkFDRCxpQkFBaUI7bURBQUM7QUF0QmQsb0JBQW9CO0lBTGhDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsbXNCQUE4QztLQUMvQyxDQUFDO3FDQTBCMkIsTUFBTTtRQUNDLEtBQUs7UUFDTixJQUFJO0dBMUIxQixvQkFBb0IsQ0E0RmhDO1NBNUZZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlclN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9wZXJ0eUFwaSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy9hcGknO1xuaW1wb3J0IHsgVUkgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3VpJztcbmltcG9ydCB7IEFwcEFzaWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGF5b3V0L2FwcC9hc2lkZS9hcHAtYXNpZGUuY29tcG9uZW50JztcblxuY2xhc3MgQnJlYWRjcnVtYiB7XG5cbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICB0aXRsZSA9IG51bGw7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHVybCA9ICcuJztcblxuICBjb25zdHJ1Y3RvcihkZWZzID0gbnVsbCkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGVmcyk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnam50LWJyZWFkY3J1bWInLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYnMuZW5jYXBzdWxhdGVkLmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgdWkgPSBVSTtcblxuICBwcml2YXRlIHJvdXRlclN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um91dGVyU3RhdGU+KHRoaXMucm91dGVyLnJvdXRlclN0YXRlKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaG9zdCcpXG4gIHJlYWRvbmx5IGhvc3QgPSAnam50LWJyZWFkY3J1bWJzLWhvc3QnO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXdpdGgtYXNpZGUnKVxuICBnZXQgd2l0aEFzaWRlKCkge1xuICAgIHJldHVybiAhIXRoaXMuYXNpZGU7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnU3VwcG9ydCBidXJnZXIgYnV0dG9uIGZvciBtb2JpbGUgZGV2aWNlcycsXG4gICAgdHlwZTogJ0FwcEFzaWRlQ29tcG9uZW50J1xuICB9KVxuICBASW5wdXQoKVxuICBhc2lkZTogQXBwQXNpZGVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgbWV0YVNlcnZpY2U6IE1ldGEpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucm91dGVyU3RhdGUkLm5leHQodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUpKSk7XG5cbiAgICB0aGlzLnJvdXRlclN0YXRlJC5waXBlKGZpbHRlcihyID0+ICEhcikpXG4gICAgICAuc3Vic2NyaWJlKChyb3V0ZXIpID0+IHRoaXMuYnVpbGQocm91dGVyLnJvb3QpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGJ1aWxkKHJvdXRlcjogQWN0aXZhdGVkUm91dGUpIHtcbiAgICBsZXQgcm91dGUgPSByb3V0ZXI7XG4gICAgY29uc3QgYnJlYWRjcnVtYnMgPSBbXTtcbiAgICB3aGlsZSAocm91dGUpIHtcbiAgICAgIGlmIChyb3V0ZS5yb3V0ZUNvbmZpZyAmJiByb3V0ZS5yb3V0ZUNvbmZpZy5kYXRhKSB7XG4gICAgICAgIGlmIChyb3V0ZS5yb3V0ZUNvbmZpZy5kYXRhLmJyZWFkY3J1bWIpIHtcbiAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gcm91dGUucm91dGVDb25maWcuZGF0YS5icmVhZGNydW1iO1xuICAgICAgICAgIChBcnJheS5pc0FycmF5KGJyZWFkY3J1bWIpID8gYnJlYWRjcnVtYiA6IFticmVhZGNydW1iXSlcbiAgICAgICAgICAgIC5maWx0ZXIoY3J1bWIgPT4gISFjcnVtYilcbiAgICAgICAgICAgIC5mb3JFYWNoKGNydW1iID0+IHtcbiAgICAgICAgICAgICAgc3dpdGNoKHR5cGVvZiBjcnVtYikge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2gobmV3IEJyZWFkY3J1bWIoe3JvdXRlLCB0aXRsZTogY3J1bWJ9KSk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0eXBlb2YgY3J1bWIubGFiZWwgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gY3J1bWIubGFiZWwgOiBjcnVtYi5sYWJlbChyb3V0ZS5zbmFwc2hvdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIGlmICghIXRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2gobmV3IEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHVybDogY3J1bWIudXJsLFxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBjcnVtYi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGNydW1iKHJvdXRlLnNuYXBzaG90LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgaWYgKCEhdGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChuZXcgQnJlYWRjcnVtYih7cm91dGUsIHRpdGxlfSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIGJyZWFkY3J1bXAgdHlwZScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByb3V0ZSA9IHJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcblxuICAgIGNvbnN0IG1ldGFUaXRsZSA9IHRoaXMuYnJlYWRjcnVtYnMubWFwKGNydW1iID0+IGNydW1iLnRpdGxlKS5qb2luKCcgwrcgJyk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUobWV0YVRpdGxlKTtcbiAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7bmFtZTogJ2Rlc2NyaXB0aW9uJywgY29udGVudDogbWV0YVRpdGxlfSk7XG4gIH1cbn1cbiJdfQ==