@exalif/ngx-breadcrumbs
Version:
Angular 4+ breadcrumbs on top of native Angular router
25 lines • 4.26 kB
JavaScript
import { of } from 'rxjs';
import { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';
export class BreadcrumbsResolver {
resolve(route, state) {
const data = route.routeConfig.data;
const path = this.getFullPath(route);
let text = typeof (data.breadcrumbs) === 'string' ? data.breadcrumbs : data.breadcrumbs.text || data.text || path;
text = BreadcrumbsUtils.stringFormat(text, route.data);
const crumbs = [{
text,
path
}];
return of(crumbs);
}
getFullPath(route) {
return this.fetchFullPath(route.pathFromRoot);
}
fetchFullPath(routes) {
return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), '');
}
fetchRelativePath(urlSegments) {
return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, '');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25neC1icmVhZGNydW1icy9zcmMvbGliL3NlcnZpY2VzL2JyZWFkY3J1bWJzLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUN2QixPQUFPLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUV0RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNsSCxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsTUFBTSxNQUFNLEdBQWlCLENBQUM7Z0JBQzVCLElBQUk7Z0JBQ0osSUFBSTthQUNMLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBNkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQWdDO1FBQ3BELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxXQUF5QjtRQUNqRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuLi9tb2RlbHMvYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCcmVhZGNydW1ic1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMvYnJlYWRjcnVtYnMudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNSZXNvbHZlciAge1xuICBwdWJsaWMgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJbXT4gfCBQcm9taXNlPEJyZWFkY3J1bWJbXT4gfCBCcmVhZGNydW1iW10ge1xuXG4gICAgY29uc3QgZGF0YSA9IHJvdXRlLnJvdXRlQ29uZmlnLmRhdGE7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZ2V0RnVsbFBhdGgocm91dGUpO1xuXG4gICAgbGV0IHRleHQgPSB0eXBlb2YgKGRhdGEuYnJlYWRjcnVtYnMpID09PSAnc3RyaW5nJyA/IGRhdGEuYnJlYWRjcnVtYnMgOiBkYXRhLmJyZWFkY3J1bWJzLnRleHQgfHwgZGF0YS50ZXh0IHx8IHBhdGg7XG4gICAgdGV4dCA9IEJyZWFkY3J1bWJzVXRpbHMuc3RyaW5nRm9ybWF0KHRleHQsIHJvdXRlLmRhdGEpO1xuXG4gICAgY29uc3QgY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbe1xuICAgICAgdGV4dCxcbiAgICAgIHBhdGhcbiAgICB9XTtcblxuICAgIHJldHVybiBvZihjcnVtYnMpO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bGxQYXRoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaEZ1bGxQYXRoKHJvdXRlLnBhdGhGcm9tUm9vdCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoRnVsbFBhdGgocm91dGVzOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90W10pOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZXMucmVkdWNlKChwYXRoLCByb3V0ZSkgPT4gcGF0aCArPSB0aGlzLmZldGNoUmVsYXRpdmVQYXRoKHJvdXRlLnVybCksICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSZWxhdGl2ZVBhdGgodXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFNlZ21lbnRzLnJlZHVjZSgocGF0aCwgdXJsU2VnbWVudCkgPT4gcGF0aCArPSAnLycgKyB1cmxTZWdtZW50LnBhdGgsICcnKTtcbiAgfVxufVxuIl19