ngx-obelisco-example
Version:
Componentes funcionales y reutilizables para Angular.
62 lines • 11.8 kB
JavaScript
import { Component, Input } from '@angular/core';
import { NavigationEnd } from '@angular/router';
import { filter, startWith, Subject, takeUntil } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "ngx-obelisco-example/core/services";
import * as i3 from "@angular/common";
export class OBreadcrumbComponent {
constructor(router, breadcrumbService) {
this.router = router;
this.breadcrumbService = breadcrumbService;
this.customClasses = '';
this.routes = [];
this.onDestroy$ = new Subject();
}
ngOnInit() {
this.breadcrumbService.breadcrumb$.pipe(takeUntil(this.onDestroy$)).subscribe((breadcrumb) => {
if (Object.entries(breadcrumb).length !== 0) {
this.routes = breadcrumb.routes || [];
this.defaultRoute = breadcrumb.defaultRoute || '';
}
});
if (this.routes.length === 0) {
this.getPaths();
return;
}
}
getPaths() {
this.routes.length != 0 &&
this.router.events
.pipe(takeUntil(this.onDestroy$), filter((event) => event instanceof NavigationEnd), startWith(this.router))
.subscribe({
next: (event) => {
event = event;
this.routes = [];
event.route
.split('/')
.forEach((item, index) => (item !== '' || isNaN(+item) || item.length > 2) &&
this.routes.push({ name: this.formatedName(item), route: this.formatedRoute(item, event.route) }));
}
});
}
formatedName(path) {
return (path && path[0].toUpperCase() + path.split('-').join(' ').slice(1)) || '';
}
formatedRoute(url, route) {
return route.split(url)[0] + url;
}
ngOnDestroy() {
this.onDestroy$.next();
this.onDestroy$.complete();
}
}
OBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OBreadcrumbComponent, deps: [{ token: i1.Router }, { token: i2.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
OBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OBreadcrumbComponent, selector: "o-breadcrumb", inputs: { customClasses: "customClasses" }, ngImport: i0, template: "<nav aria-label=\"Navegaci\u00F3n secundaria\" [ngClass]=\"customClasses\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"routes.length == 0\">\r\n <a href=\"https://buenosaires.gob.ar/inicio/\">Inicio</a>\r\n </li>\r\n <li class=\"breadcrumb-item\" *ngFor=\"let route of routes; index as i\">\r\n <a [routerLink]=\"[route.route]\">\r\n {{ route.name }}\r\n </a>\r\n <ng-template #nameDefault>{{ route?.name }} </ng-template>\r\n </li>\r\n </ol>\r\n</nav>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OBreadcrumbComponent, decorators: [{
type: Component,
args: [{ selector: 'o-breadcrumb', template: "<nav aria-label=\"Navegaci\u00F3n secundaria\" [ngClass]=\"customClasses\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"routes.length == 0\">\r\n <a href=\"https://buenosaires.gob.ar/inicio/\">Inicio</a>\r\n </li>\r\n <li class=\"breadcrumb-item\" *ngFor=\"let route of routes; index as i\">\r\n <a [routerLink]=\"[route.route]\">\r\n {{ route.name }}\r\n </a>\r\n <ng-template #nameDefault>{{ route?.name }} </ng-template>\r\n </li>\r\n </ol>\r\n</nav>\r\n" }]
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.BreadcrumbService }]; }, propDecorators: { customClasses: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1icmVhZGNydW1iLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vYmVsaXNjby9icmVhZGNydW1iL28tYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2JlbGlzY28vYnJlYWRjcnVtYi9vLWJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTN0QsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUE2QixNQUFjLEVBQW1CLGlCQUFvQztRQUFyRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQW1CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFQbEYsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFcEMsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFHOUIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFNEQsQ0FBQztJQUV0RyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzNGLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO2FBQ25EO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTztTQUNSO0lBQ0gsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtpQkFDZixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDMUIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLEVBQ2pELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3ZCO2lCQUNBLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDbkIsS0FBSyxHQUFHLEtBQW9CLENBQUM7b0JBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNqQixLQUFLLENBQUMsS0FBSzt5QkFDUixLQUFLLENBQUMsR0FBRyxDQUFDO3lCQUNWLE9BQU8sQ0FDTixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUM5QixDQUFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQ3BHLENBQUM7Z0JBQ04sQ0FBQzthQUNGLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUM5QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7O2lIQXpEVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixnR0NYakMsZ2hCQWFBOzJGREZhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOzZIQUtSLGFBQWE7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJ25neC1vYmVsaXNjby1leGFtcGxlL2NvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iUm91dGUgfSBmcm9tICduZ3gtb2JlbGlzY28tZXhhbXBsZS9jb3JlL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ28tYnJlYWRjcnVtYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL28tYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vby1icmVhZGNydW1iLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE9CcmVhZGNydW1iQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHVibGljIHJvdXRlczogQnJlYWRjcnVtYlJvdXRlW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0Um91dGUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5icmVhZGNydW1iJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGJyZWFkY3J1bWIpID0+IHtcclxuICAgICAgaWYgKE9iamVjdC5lbnRyaWVzKGJyZWFkY3J1bWIpLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMucm91dGVzID0gYnJlYWRjcnVtYi5yb3V0ZXMgfHwgW107XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Um91dGUgPSBicmVhZGNydW1iLmRlZmF1bHRSb3V0ZSB8fCAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5yb3V0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZ2V0UGF0aHMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRocygpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVzLmxlbmd0aCAhPSAwICYmXHJcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICAgICAgc3RhcnRXaXRoKHRoaXMucm91dGVyKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGV2ZW50ID0gZXZlbnQgYXMgUm91dGVyRXZlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVzID0gW107XHJcbiAgICAgICAgICAgIGV2ZW50LnJvdXRlXHJcbiAgICAgICAgICAgICAgLnNwbGl0KCcvJylcclxuICAgICAgICAgICAgICAuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgIChpdGVtICE9PSAnJyB8fCBpc05hTigraXRlbSkgfHwgaXRlbS5sZW5ndGggPiAyKSAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlcy5wdXNoKHsgbmFtZTogdGhpcy5mb3JtYXRlZE5hbWUoaXRlbSksIHJvdXRlOiB0aGlzLmZvcm1hdGVkUm91dGUoaXRlbSwgZXZlbnQucm91dGUpIH0pXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0ZWROYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHBhdGggJiYgcGF0aFswXS50b1VwcGVyQ2FzZSgpICsgcGF0aC5zcGxpdCgnLScpLmpvaW4oJyAnKS5zbGljZSgxKSkgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdGVkUm91dGUodXJsOiBzdHJpbmcsIHJvdXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJvdXRlLnNwbGl0KHVybClbMF0gKyB1cmw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5hdiBhcmlhLWxhYmVsPVwiTmF2ZWdhY2nDs24gc2VjdW5kYXJpYVwiIFtuZ0NsYXNzXT1cImN1c3RvbUNsYXNzZXNcIj5cclxuICA8b2wgY2xhc3M9XCJicmVhZGNydW1iXCI+XHJcbiAgICA8bGkgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIiAqbmdJZj1cInJvdXRlcy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9idWVub3NhaXJlcy5nb2IuYXIvaW5pY2lvL1wiPkluaWNpbzwvYT5cclxuICAgIDwvbGk+XHJcbiAgICA8bGkgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcm91dGUgb2Ygcm91dGVzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZS5yb3V0ZV1cIj5cclxuICAgICAgICB7eyByb3V0ZS5uYW1lIH19XHJcbiAgICAgIDwvYT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNuYW1lRGVmYXVsdD57eyByb3V0ZT8ubmFtZSB9fSA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9saT5cclxuICA8L29sPlxyXG48L25hdj5cclxuIl19