@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
JavaScript
/**
* @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