UNPKG

@junte/ui

Version:

Quality Angular UI components kit

131 lines 16.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'; var Breadcrumb = /** @class */ (function () { function Breadcrumb(defs) { if (defs === void 0) { defs = null; } this.title = null; this.disabled = false; this.url = '.'; Object.assign(this, defs); } return Breadcrumb; }()); var BreadcrumbsComponent = /** @class */ (function () { function BreadcrumbsComponent(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'; } Object.defineProperty(BreadcrumbsComponent.prototype, "withAside", { get: function () { return !!this.aside; }, enumerable: true, configurable: true }); BreadcrumbsComponent.prototype.ngOnInit = function () { var _this = this; this.subscriptions.push(this.router.events .pipe(filter(function (event) { return event instanceof NavigationEnd; })) .subscribe(function () { return _this.routerState$.next(_this.router.routerState); })); this.routerState$.pipe(filter(function (r) { return !!r; })) .subscribe(function (router) { return _this.build(router.root); }); }; BreadcrumbsComponent.prototype.ngOnDestroy = function () { this.subscriptions.forEach(function (s) { return s.unsubscribe(); }); }; BreadcrumbsComponent.prototype.build = function (router) { var route = router; var breadcrumbs = []; while (route) { if (route.routeConfig && route.routeConfig.data) { if (route.routeConfig.data.breadcrumb) { var breadcrumb = route.routeConfig.data.breadcrumb; (Array.isArray(breadcrumb) ? breadcrumb : [breadcrumb]) .filter(function (crumb) { return !!crumb; }) .forEach(function (crumb) { switch (typeof crumb) { case 'string': { breadcrumbs.push(new Breadcrumb({ route: route, title: crumb })); break; } case 'object': { var title = typeof crumb.label === 'string' ? crumb.label : crumb.label(route.snapshot.data); if (!!title) { breadcrumbs.push(new Breadcrumb({ route: route, title: title, url: crumb.url, disabled: crumb.disabled })); } break; } case 'function': { var title = crumb(route.snapshot.data); if (!!title) { breadcrumbs.push(new Breadcrumb({ route: route, title: title })); } break; } default: throw new Error('wrong breadcrump type'); } }); } } route = route.firstChild; } this.breadcrumbs = breadcrumbs; var metaTitle = this.breadcrumbs.map(function (crumb) { return crumb.title; }).join(' · '); this.titleService.setTitle(metaTitle); this.metaService.updateTag({ name: 'description', content: metaTitle }); }; BreadcrumbsComponent.ctorParameters = function () { return [ { 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); return BreadcrumbsComponent; }()); export { BreadcrumbsComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL25hdmlnYXRpb24vYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FO0lBT0Usb0JBQVksSUFBVztRQUFYLHFCQUFBLEVBQUEsV0FBVztRQUp2QixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQUcsR0FBRyxDQUFDO1FBR1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQVZELElBVUM7QUFPRDtJQXdCRSw4QkFBbUIsTUFBYyxFQUNiLFlBQW1CLEVBQ25CLFdBQWlCO1FBRmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixnQkFBVyxHQUFYLFdB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V0FBVyxDQUFDLHNCQUFzQixDQUFDOzs7eURBR25DO0lBT0Q7UUFMQyxXQUFXLENBQUM7WUFDWCxXQUFXLEVBQUUsMENBQTBDO1lBQ3ZELElBQUksRUFBRSxtQkFBbUI7U0FDMUIsQ0FBQztRQUNELEtBQUssRUFBRTtrQ0FDRCxpQkFBaUI7dURBQUM7SUF0QmQsb0JBQW9CO1FBTGhDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsbXNCQUE4QztTQUMvQyxDQUFDO3lDQTBCMkIsTUFBTTtZQUNDLEtBQUs7WUFDTixJQUFJO09BMUIxQixvQkFBb0IsQ0E0RmhDO0lBQUQsMkJBQUM7Q0FBQSxBQTVGRCxJQTRGQztTQTVGWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvcGVydHlBcGkgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvYXBpJztcbmltcG9ydCB7IFVJIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy91aSc7XG5pbXBvcnQgeyBBcHBBc2lkZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2xheW91dC9hcHAvYXNpZGUvYXBwLWFzaWRlLmNvbXBvbmVudCc7XG5cbmNsYXNzIEJyZWFkY3J1bWIge1xuXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgdGl0bGUgPSBudWxsO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICB1cmwgPSAnLic7XG5cbiAgY29uc3RydWN0b3IoZGVmcyA9IG51bGwpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRlZnMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2pudC1icmVhZGNydW1iJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmVuY2Fwc3VsYXRlZC5odG1sJ1xufSlcblxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHVpID0gVUk7XG5cbiAgcHJpdmF0ZSByb3V0ZXJTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvdXRlclN0YXRlPih0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhvc3QnKVxuICByZWFkb25seSBob3N0ID0gJ2pudC1icmVhZGNydW1icy1ob3N0JztcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS13aXRoLWFzaWRlJylcbiAgZ2V0IHdpdGhBc2lkZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmFzaWRlO1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgYnVyZ2VyIGJ1dHRvbiBmb3IgbW9iaWxlIGRldmljZXMnLFxuICAgIHR5cGU6ICdBcHBBc2lkZUNvbXBvbmVudCdcbiAgfSlcbiAgQElucHV0KClcbiAgYXNpZGU6IEFwcEFzaWRlQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICAgICAgICBwcml2YXRlIG1ldGFTZXJ2aWNlOiBNZXRhKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJvdXRlclN0YXRlJC5uZXh0KHRoaXMucm91dGVyLnJvdXRlclN0YXRlKSkpO1xuXG4gICAgdGhpcy5yb3V0ZXJTdGF0ZSQucGlwZShmaWx0ZXIociA9PiAhIXIpKVxuICAgICAgLnN1YnNjcmliZSgocm91dGVyKSA9PiB0aGlzLmJ1aWxkKHJvdXRlci5yb290KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBidWlsZChyb3V0ZXI6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgbGV0IHJvdXRlID0gcm91dGVyO1xuICAgIGNvbnN0IGJyZWFkY3J1bWJzID0gW107XG4gICAgd2hpbGUgKHJvdXRlKSB7XG4gICAgICBpZiAocm91dGUucm91dGVDb25maWcgJiYgcm91dGUucm91dGVDb25maWcuZGF0YSkge1xuICAgICAgICBpZiAocm91dGUucm91dGVDb25maWcuZGF0YS5icmVhZGNydW1iKSB7XG4gICAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHJvdXRlLnJvdXRlQ29uZmlnLmRhdGEuYnJlYWRjcnVtYjtcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShicmVhZGNydW1iKSA/IGJyZWFkY3J1bWIgOiBbYnJlYWRjcnVtYl0pXG4gICAgICAgICAgICAuZmlsdGVyKGNydW1iID0+ICEhY3J1bWIpXG4gICAgICAgICAgICAuZm9yRWFjaChjcnVtYiA9PiB7XG4gICAgICAgICAgICAgIHN3aXRjaCh0eXBlb2YgY3J1bWIpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKG5ldyBCcmVhZGNydW1iKHtyb3V0ZSwgdGl0bGU6IGNydW1ifSkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdHlwZW9mIGNydW1iLmxhYmVsID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IGNydW1iLmxhYmVsIDogY3J1bWIubGFiZWwocm91dGUuc25hcHNob3QuZGF0YSk7XG4gICAgICAgICAgICAgICAgICBpZiAoISF0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKG5ldyBCcmVhZGNydW1iKHtcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNydW1iLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY3J1bWIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBjcnVtYihyb3V0ZS5zbmFwc2hvdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIGlmICghIXRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2gobmV3IEJyZWFkY3J1bWIoe3JvdXRlLCB0aXRsZX0pKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBicmVhZGNydW1wIHR5cGUnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG5cbiAgICBjb25zdCBtZXRhVGl0bGUgPSB0aGlzLmJyZWFkY3J1bWJzLm1hcChjcnVtYiA9PiBjcnVtYi50aXRsZSkuam9pbignIMK3ICcpO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKG1ldGFUaXRsZSk7XG4gICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IG1ldGFUaXRsZX0pO1xuICB9XG59XG4iXX0=