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>

111 lines 9.43 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) { /** * @ignore * @type {?} */ Breadcrumb.prototype.breadcrumbs$; /** * @type {?} * @private */ Breadcrumb.prototype.activatedRoute; /** @type {?} */ Breadcrumb.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3VzaGtpL25nLXN1a2EvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQTRCbkUsTUFBTSxPQUFPLFVBQVU7Ozs7OztJQVFyQixZQUNzQixjQUE4QixFQUMvQixNQUFjO1FBRGIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDL0IsQ0FBQzs7OztJQUVMLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDekMsTUFBTTs7OztZQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsRUFBQyxFQUMvQyxvQkFBb0IsRUFBRSxFQUN0QixHQUFHOzs7O1lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FDN0QsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Ozs7OztJQUVELGVBQWUsQ0FDYixLQUFxQixFQUNyQixNQUFjLEVBQUUsRUFDaEIsY0FBa0MsRUFBRTs7O2NBRzlCLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTs7Y0FDM0UsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7O2NBR3RELE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUc7O2NBQzFCLFVBQVUsR0FBRztZQUNqQixLQUFLO1lBQ0wsR0FBRyxFQUFFLE9BQU87U0FDYjs7Y0FDSyxjQUFjLEdBQUcsQ0FBQyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDbkQsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3BCLHlDQUF5QztZQUN6QyxvRUFBb0U7WUFDcEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs7O1lBdEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O1lBN0JRLGNBQWMsdUJBdUNsQixRQUFRO1lBdkMyQixNQUFNLHVCQXdDekMsUUFBUTs7Ozs7OztJQU5YLGtDQUF3Qzs7Ozs7SUFLdEMsb0NBQWtEOztJQUNsRCw0QkFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1iLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N1a2EtYnJlYWRjcnVtYicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG9sIGNsYXNzPVwiYnJlYWRjcnVtYlwiICpuZ0lmPVwicm91dGVyXCI+XG4gICAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzJCB8IGFzeW5jOyBsYXN0IGFzIGlzTGFzdDtcIlxuICAgICAgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0xhc3R9XCIgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXNMYXN0OyBlbHNlIGxhc3RSb3V0ZVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiW2JyZWFkY3J1bWIudXJsXVwiXG4gICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3VrYS1pY29uIGljb249XCJob21lXCIgKm5nSWY9XCJicmVhZGNydW1iLmxhYmVsID09PSAnSW5pY2lvJ1wiPjwvc3VrYS1pY29uPiB7eyBicmVhZGNydW1iLmxhYmVsIH19XG4gICAgICAgICAgPHN1a2EtaWNvbiBpY29uPVwiY2hldnJvbi1yaWdodFwiPjwvc3VrYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFJvdXRlPlxuICAgICAgICAgIDxzdWthLWljb24gaWNvbj1cImhvbWVcIiAqbmdJZj1cImJyZWFkY3J1bWIubGFiZWwgPT09ICdJbmljaW8nXCI+PC9zdWthLWljb24+IHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iIGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGJyZWFkY3J1bWJzJDogT2JzZXJ2YWJsZTxJQnJlYWRjcnVtYltdPjtcblxuICAvLyBCdWlsZCB5b3VyIGJyZWFkY3J1bWIgc3RhcnRpbmcgd2l0aCB0aGUgcm9vdCByb3V0ZSBvZiB5b3VyIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlcikge1xuICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG1hcChldmVudCA9PiB0aGlzLmJ1aWxkQnJlYWRjcnVtYih0aGlzLmFjdGl2YXRlZFJvdXRlLnJvb3QpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBidWlsZEJyZWFkY3J1bWIoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHVybDogc3RyaW5nID0gJycsXG4gICAgYnJlYWRjcnVtYnM6IEFycmF5PElCcmVhZGNydW1iPiA9IFtdXG4gICk6IEFycmF5PElCcmVhZGNydW1iPiB7XG4gICAgLy8gSWYgbm8gcm91dGVDb25maWcgaXMgYXZhbGFpbGFibGUgd2UgYXJlIG9uIHRoZSByb290IHBhdGhcbiAgICBjb25zdCBsYWJlbCA9IHJvdXRlLnJvdXRlQ29uZmlnID8gcm91dGUucm91dGVDb25maWcuZGF0YVsnYnJlYWRjcnVtYiddIDogJ0luaWNpbyc7XG4gICAgY29uc3QgcGF0aCA9IHJvdXRlLnJvdXRlQ29uZmlnID8gcm91dGUucm91dGVDb25maWcucGF0aCA6ICcnO1xuICAgIC8vIEluIHRoZSByb3V0ZUNvbmZpZyB0aGUgY29tcGxldGUgcGF0aCBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8vIHNvIHdlIHJlYnVpbGQgaXQgZWFjaCB0aW1lXG4gICAgY29uc3QgbmV4dFVybCA9IGAke3VybH0ke3BhdGh9L2A7XG4gICAgY29uc3QgYnJlYWRjcnVtYiA9IHtcbiAgICAgIGxhYmVsLFxuICAgICAgdXJsOiBuZXh0VXJsLFxuICAgIH07XG4gICAgY29uc3QgbmV3QnJlYWRjcnVtYnMgPSBbLi4uYnJlYWRjcnVtYnMsIGJyZWFkY3J1bWJdO1xuICAgIGlmIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAvLyBJZiB3ZSBhcmUgbm90IG9uIG91ciBjdXJyZW50IHBhdGggeWV0LFxuICAgICAgLy8gdGhlcmUgd2lsbCBiZSBtb3JlIGNoaWxkcmVuIHRvIGxvb2sgYWZ0ZXIsIHRvIGJ1aWxkIG91ciBicmVhZGN1bWJcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCBuZXh0VXJsLCBuZXdCcmVhZGNydW1icyk7XG4gICAgfVxuICAgIHJldHVybiBuZXdCcmVhZGNydW1icztcbiAgfVxufVxuIl19