UNPKG

@kushki/ng-suka

Version:

<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>

108 lines 9.36 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Optional } from '@angular/core'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { distinctUntilChanged, filter, map } from 'rxjs/operators'; export class Breadcrumb { // Build your breadcrumb starting with the root route of your current activated route /** * @param {?} activatedRoute * @param {?} router */ constructor(activatedRoute, router) { this.activatedRoute = activatedRoute; this.router = router; } /** * @return {?} */ ngOnInit() { if (this.router) { this.breadcrumbs$ = this.router.events.pipe(filter((/** * @param {?} event * @return {?} */ event => event instanceof NavigationEnd)), distinctUntilChanged(), map((/** * @param {?} event * @return {?} */ event => this.buildBreadcrumb(this.activatedRoute.root)))); } } /** * @param {?} route * @param {?=} url * @param {?=} breadcrumbs * @return {?} */ buildBreadcrumb(route, url = '', breadcrumbs = []) { // If no routeConfig is avalailable we are on the root path /** @type {?} */ const label = route.routeConfig ? route.routeConfig.data['breadcrumb'] : 'Inicio'; /** @type {?} */ const path = route.routeConfig ? route.routeConfig.path : ''; // In the routeConfig the complete path is not available, // so we rebuild it each time /** @type {?} */ const nextUrl = `${url}${path}/`; /** @type {?} */ const breadcrumb = { label, url: nextUrl, }; /** @type {?} */ const newBreadcrumbs = [...breadcrumbs, breadcrumb]; if (route.firstChild) { // If we are not on our current path yet, // there will be more children to look after, to build our breadcumb return this.buildBreadcrumb(route.firstChild, nextUrl, newBreadcrumbs); } return newBreadcrumbs; } } Breadcrumb.decorators = [ { type: Component, args: [{ selector: 'suka-breadcrumb', template: ` <ol class="breadcrumb" *ngIf="router"> <li *ngFor="let breadcrumb of breadcrumbs$ | async; last as isLast;" class="breadcrumb-item" [ngClass]="{'active': isLast}" aria-current="page" > <a *ngIf="!isLast; else lastRoute" [routerLink]="[breadcrumb.url]" routerLinkActive="active" > <suka-icon icon="home" *ngIf="breadcrumb.label === 'Inicio'"></suka-icon> {{ breadcrumb.label }} <suka-icon icon="chevron-right"></suka-icon> </a> <ng-template #lastRoute> <suka-icon icon="home" *ngIf="breadcrumb.label === 'Inicio'"></suka-icon> {{ breadcrumb.label }} </ng-template> </li> </ol> `, encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ Breadcrumb.ctorParameters = () => [ { type: ActivatedRoute, decorators: [{ type: Optional }] }, { type: Router, decorators: [{ type: Optional }] } ]; if (false) { /** @type {?} */ Breadcrumb.prototype.breadcrumbs$; /** * @type {?} * @private */ Breadcrumb.prototype.activatedRoute; /** @type {?} */ Breadcrumb.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3VzaGtpL25nLXN1a2EvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQTRCbkUsTUFBTSxPQUFPLFVBQVU7Ozs7OztJQUtyQixZQUNzQixjQUE4QixFQUMvQixNQUFjO1FBRGIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDL0IsQ0FBQzs7OztJQUVMLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDekMsTUFBTTs7OztZQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsRUFBQyxFQUMvQyxvQkFBb0IsRUFBRSxFQUN0QixHQUFHOzs7O1lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FDN0QsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Ozs7OztJQUVELGVBQWUsQ0FDYixLQUFxQixFQUNyQixNQUFjLEVBQUUsRUFDaEIsY0FBa0MsRUFBRTs7O2NBRzlCLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTs7Y0FDM0UsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7O2NBR3RELE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUc7O2NBQzFCLFVBQVUsR0FBRztZQUNqQixLQUFLO1lBQ0wsR0FBRyxFQUFFLE9BQU87U0FDYjs7Y0FDSyxjQUFjLEdBQUcsQ0FBQyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDbkQsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3BCLHlDQUF5QztZQUN6QyxvRUFBb0U7WUFDcEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs7O1lBbkVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O1lBN0JRLGNBQWMsdUJBb0NsQixRQUFRO1lBcEMyQixNQUFNLHVCQXFDekMsUUFBUTs7OztJQU5YLGtDQUF3Qzs7Ozs7SUFLdEMsb0NBQWtEOztJQUNsRCw0QkFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1iLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N1a2EtYnJlYWRjcnVtYicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG9sIGNsYXNzPVwiYnJlYWRjcnVtYlwiICpuZ0lmPVwicm91dGVyXCI+XG4gICAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzJCB8IGFzeW5jOyBsYXN0IGFzIGlzTGFzdDtcIlxuICAgICAgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0xhc3R9XCIgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXNMYXN0OyBlbHNlIGxhc3RSb3V0ZVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiW2JyZWFkY3J1bWIudXJsXVwiXG4gICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3VrYS1pY29uIGljb249XCJob21lXCIgKm5nSWY9XCJicmVhZGNydW1iLmxhYmVsID09PSAnSW5pY2lvJ1wiPjwvc3VrYS1pY29uPiB7eyBicmVhZGNydW1iLmxhYmVsIH19XG4gICAgICAgICAgPHN1a2EtaWNvbiBpY29uPVwiY2hldnJvbi1yaWdodFwiPjwvc3VrYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFJvdXRlPlxuICAgICAgICAgIDxzdWthLWljb24gaWNvbj1cImhvbWVcIiAqbmdJZj1cImJyZWFkY3J1bWIubGFiZWwgPT09ICdJbmljaW8nXCI+PC9zdWthLWljb24+IHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iIGltcGxlbWVudHMgT25Jbml0IHtcbiAgYnJlYWRjcnVtYnMkOiBPYnNlcnZhYmxlPElCcmVhZGNydW1iW10+O1xuXG4gIC8vIEJ1aWxkIHlvdXIgYnJlYWRjcnVtYiBzdGFydGluZyB3aXRoIHRoZSByb290IHJvdXRlIG9mIHlvdXIgY3VycmVudCBhY3RpdmF0ZWQgcm91dGVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucm91dGVyKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgbWFwKGV2ZW50ID0+IHRoaXMuYnVpbGRCcmVhZGNydW1iKHRoaXMuYWN0aXZhdGVkUm91dGUucm9vdCkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkQnJlYWRjcnVtYihcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgdXJsOiBzdHJpbmcgPSAnJyxcbiAgICBicmVhZGNydW1iczogQXJyYXk8SUJyZWFkY3J1bWI+ID0gW11cbiAgKTogQXJyYXk8SUJyZWFkY3J1bWI+IHtcbiAgICAvLyBJZiBubyByb3V0ZUNvbmZpZyBpcyBhdmFsYWlsYWJsZSB3ZSBhcmUgb24gdGhlIHJvb3QgcGF0aFxuICAgIGNvbnN0IGxhYmVsID0gcm91dGUucm91dGVDb25maWcgPyByb3V0ZS5yb3V0ZUNvbmZpZy5kYXRhWydicmVhZGNydW1iJ10gOiAnSW5pY2lvJztcbiAgICBjb25zdCBwYXRoID0gcm91dGUucm91dGVDb25maWcgPyByb3V0ZS5yb3V0ZUNvbmZpZy5wYXRoIDogJyc7XG4gICAgLy8gSW4gdGhlIHJvdXRlQ29uZmlnIHRoZSBjb21wbGV0ZSBwYXRoIGlzIG5vdCBhdmFpbGFibGUsXG4gICAgLy8gc28gd2UgcmVidWlsZCBpdCBlYWNoIHRpbWVcbiAgICBjb25zdCBuZXh0VXJsID0gYCR7dXJsfSR7cGF0aH0vYDtcbiAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgbGFiZWwsXG4gICAgICB1cmw6IG5leHRVcmwsXG4gICAgfTtcbiAgICBjb25zdCBuZXdCcmVhZGNydW1icyA9IFsuLi5icmVhZGNydW1icywgYnJlYWRjcnVtYl07XG4gICAgaWYgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIC8vIElmIHdlIGFyZSBub3Qgb24gb3VyIGN1cnJlbnQgcGF0aCB5ZXQsXG4gICAgICAvLyB0aGVyZSB3aWxsIGJlIG1vcmUgY2hpbGRyZW4gdG8gbG9vayBhZnRlciwgdG8gYnVpbGQgb3VyIGJyZWFkY3VtYlxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQsIG5leHRVcmwsIG5ld0JyZWFkY3J1bWJzKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0JyZWFkY3J1bWJzO1xuICB9XG59XG4iXX0=