@exalif/ngx-breadcrumbs
Version:
Angular 4+ breadcrumbs on top of native Angular router
69 lines (68 loc) • 5.48 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { of } from 'rxjs';
import { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';
var BreadcrumbsResolver = /** @class */ (function () {
function BreadcrumbsResolver() {
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
BreadcrumbsResolver.prototype.resolve = /**
* @param {?} route
* @param {?} state
* @return {?}
*/
function (route, state) {
var /** @type {?} */ data = route.routeConfig.data;
var /** @type {?} */ path = this.getFullPath(route);
var /** @type {?} */ text = typeof (data["breadcrumbs"]) === 'string' ? data["breadcrumbs"] : data["breadcrumbs"].text || data["text"] || path;
text = BreadcrumbsUtils.stringFormat(text, route.data);
var /** @type {?} */ crumbs = [{
text: text,
path: path
}];
return of(crumbs);
};
/**
* @param {?} route
* @return {?}
*/
BreadcrumbsResolver.prototype.getFullPath = /**
* @param {?} route
* @return {?}
*/
function (route) {
return this.fetchFullPath(route.pathFromRoot);
};
/**
* @param {?} routes
* @return {?}
*/
BreadcrumbsResolver.prototype.fetchFullPath = /**
* @param {?} routes
* @return {?}
*/
function (routes) {
var _this = this;
return routes.reduce(function (path, route) { return path += _this.fetchRelativePath(route.url); }, '');
};
/**
* @param {?} urlSegments
* @return {?}
*/
BreadcrumbsResolver.prototype.fetchRelativePath = /**
* @param {?} urlSegments
* @return {?}
*/
function (urlSegments) {
return urlSegments.reduce(function (path, urlSegment) { return path += '/' + urlSegment.path; }, '');
};
return BreadcrumbsResolver;
}());
export { BreadcrumbsResolver };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZXhhbGlmL25neC1icmVhZGNydW1icy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9icmVhZGNydW1icy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxJQUFBOzs7Ozs7OztJQUNTLHFDQUFPOzs7OztjQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFHdEUscUJBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3BDLHFCQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLHFCQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxnQkFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBYSxDQUFDLENBQUMsSUFBSSxnQkFBYSxJQUFJLElBQUksSUFBSSxRQUFLLElBQUksSUFBSSxDQUFDO1FBQ2xILElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxxQkFBTSxNQUFNLEdBQWlCLENBQUM7Z0JBQzVCLElBQUksTUFBQTtnQkFDSixJQUFJLE1BQUE7YUFDTCxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7SUFHYix5Q0FBVzs7OztjQUFDLEtBQTZCO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQzs7Ozs7O0lBR3hDLDJDQUFhOzs7O2NBQUMsTUFBZ0M7O1FBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsSUFBSSxFQUFFLEtBQUssSUFBSyxPQUFBLElBQUksSUFBSSxLQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUF6QyxDQUF5QyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7SUFHL0UsK0NBQWlCOzs7O2NBQUMsV0FBeUI7UUFDakQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJLEVBQUUsVUFBVSxJQUFLLE9BQUEsSUFBSSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUE3QixDQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDOzs4QkFuQ3ZGO0lBcUNDLENBQUE7QUE3QkQsK0JBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuLi9tb2RlbHMvYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCcmVhZGNydW1ic1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMvYnJlYWRjcnVtYnMudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNSZXNvbHZlciBpbXBsZW1lbnRzIFJlc29sdmU8QnJlYWRjcnVtYltdPiB7XG4gIHB1YmxpYyByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdClcbiAgICA6IE9ic2VydmFibGU8QnJlYWRjcnVtYltdPiB8IFByb21pc2U8QnJlYWRjcnVtYltdPiB8IEJyZWFkY3J1bWJbXSB7XG5cbiAgICBjb25zdCBkYXRhID0gcm91dGUucm91dGVDb25maWcuZGF0YTtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRGdWxsUGF0aChyb3V0ZSk7XG5cbiAgICBsZXQgdGV4dCA9IHR5cGVvZiAoZGF0YS5icmVhZGNydW1icykgPT09ICdzdHJpbmcnID8gZGF0YS5icmVhZGNydW1icyA6IGRhdGEuYnJlYWRjcnVtYnMudGV4dCB8fCBkYXRhLnRleHQgfHwgcGF0aDtcbiAgICB0ZXh0ID0gQnJlYWRjcnVtYnNVdGlscy5zdHJpbmdGb3JtYXQodGV4dCwgcm91dGUuZGF0YSk7XG5cbiAgICBjb25zdCBjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFt7XG4gICAgICB0ZXh0LFxuICAgICAgcGF0aFxuICAgIH1dO1xuXG4gICAgcmV0dXJuIG9mKGNydW1icyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbFBhdGgocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZldGNoRnVsbFBhdGgocm91dGUucGF0aEZyb21Sb290KTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hGdWxsUGF0aChyb3V0ZXM6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlcy5yZWR1Y2UoKHBhdGgsIHJvdXRlKSA9PiBwYXRoICs9IHRoaXMuZmV0Y2hSZWxhdGl2ZVBhdGgocm91dGUudXJsKSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJlbGF0aXZlUGF0aCh1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsU2VnbWVudHMucmVkdWNlKChwYXRoLCB1cmxTZWdtZW50KSA9PiBwYXRoICs9ICcvJyArIHVybFNlZ21lbnQucGF0aCwgJycpO1xuICB9XG59XG4iXX0=