UNPKG

@exalif/ngx-breadcrumbs

Version:

Angular 4+ breadcrumbs on top of native Angular router

47 lines (46 loc) 4.75 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { of } from 'rxjs'; import { BreadcrumbsUtils } from '../utils/breadcrumbs.utils'; export class BreadcrumbsResolver { /** * @param {?} route * @param {?} state * @return {?} */ resolve(route, state) { const /** @type {?} */ data = route.routeConfig.data; const /** @type {?} */ path = this.getFullPath(route); let /** @type {?} */ text = typeof (data["breadcrumbs"]) === 'string' ? data["breadcrumbs"] : data["breadcrumbs"].text || data["text"] || path; text = BreadcrumbsUtils.stringFormat(text, route.data); const /** @type {?} */ crumbs = [{ text, path }]; return of(crumbs); } /** * @param {?} route * @return {?} */ getFullPath(route) { return this.fetchFullPath(route.pathFromRoot); } /** * @param {?} routes * @return {?} */ fetchFullPath(routes) { return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), ''); } /** * @param {?} urlSegments * @return {?} */ fetchRelativePath(urlSegments) { return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, ''); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZXhhbGlmL25neC1icmVhZGNydW1icy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9icmVhZGNydW1icy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxNQUFNOzs7Ozs7SUFDRyxPQUFPLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUd0RSx1QkFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsdUJBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMscUJBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLGdCQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFhLENBQUMsQ0FBQyxJQUFJLGdCQUFhLElBQUksSUFBSSxJQUFJLFFBQUssSUFBSSxJQUFJLENBQUM7UUFDbEgsSUFBSSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELHVCQUFNLE1BQU0sR0FBaUIsQ0FBQztnQkFDNUIsSUFBSTtnQkFDSixJQUFJO2FBQ0wsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7Ozs7O0lBR2IsV0FBVyxDQUFDLEtBQTZCO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQzs7Ozs7O0lBR3hDLGFBQWEsQ0FBQyxNQUFnQztRQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7SUFHL0UsaUJBQWlCLENBQUMsV0FBeUI7UUFDakQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7O0NBRXRGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuLi9tb2RlbHMvYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCcmVhZGNydW1ic1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMvYnJlYWRjcnVtYnMudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNSZXNvbHZlciBpbXBsZW1lbnRzIFJlc29sdmU8QnJlYWRjcnVtYltdPiB7XG4gIHB1YmxpYyByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdClcbiAgICA6IE9ic2VydmFibGU8QnJlYWRjcnVtYltdPiB8IFByb21pc2U8QnJlYWRjcnVtYltdPiB8IEJyZWFkY3J1bWJbXSB7XG5cbiAgICBjb25zdCBkYXRhID0gcm91dGUucm91dGVDb25maWcuZGF0YTtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRGdWxsUGF0aChyb3V0ZSk7XG5cbiAgICBsZXQgdGV4dCA9IHR5cGVvZiAoZGF0YS5icmVhZGNydW1icykgPT09ICdzdHJpbmcnID8gZGF0YS5icmVhZGNydW1icyA6IGRhdGEuYnJlYWRjcnVtYnMudGV4dCB8fCBkYXRhLnRleHQgfHwgcGF0aDtcbiAgICB0ZXh0ID0gQnJlYWRjcnVtYnNVdGlscy5zdHJpbmdGb3JtYXQodGV4dCwgcm91dGUuZGF0YSk7XG5cbiAgICBjb25zdCBjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFt7XG4gICAgICB0ZXh0LFxuICAgICAgcGF0aFxuICAgIH1dO1xuXG4gICAgcmV0dXJuIG9mKGNydW1icyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbFBhdGgocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZldGNoRnVsbFBhdGgocm91dGUucGF0aEZyb21Sb290KTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hGdWxsUGF0aChyb3V0ZXM6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlcy5yZWR1Y2UoKHBhdGgsIHJvdXRlKSA9PiBwYXRoICs9IHRoaXMuZmV0Y2hSZWxhdGl2ZVBhdGgocm91dGUudXJsKSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJlbGF0aXZlUGF0aCh1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsU2VnbWVudHMucmVkdWNlKChwYXRoLCB1cmxTZWdtZW50KSA9PiBwYXRoICs9ICcvJyArIHVybFNlZ21lbnQucGF0aCwgJycpO1xuICB9XG59XG4iXX0=