ad-custom-lib
Version:
This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte
230 lines • 18.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { BehaviorSubject } from 'rxjs';
import { Injectable } from '@angular/core';
import { NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
/**
* @record
*/
export function Path() { }
if (false) {
/** @type {?} */
Path.prototype.data;
/** @type {?} */
Path.prototype.params;
/** @type {?} */
Path.prototype.url;
}
/**
* @record
*/
export function Paths() { }
/*
*
*/
var RoutingService = /** @class */ (function () {
/**
* @method constructor
* @param router [description]
*/
function RoutingService(router) {
this.router = router;
this.onChange = new BehaviorSubject(undefined);
this.events = new BehaviorSubject(undefined);
this.init();
}
/**
* [createUrl description]
* @method createUrl
* @param route [description]
* @return [description]
*/
/**
* [createUrl description]
* \@method createUrl
* @private
* @param {?} route [description]
* @return {?} [description]
*/
RoutingService.createUrl = /**
* [createUrl description]
* \@method createUrl
* @private
* @param {?} route [description]
* @return {?} [description]
*/
function (route) {
/** @type {?} */
var url = route.url.map((/**
* @param {?} urlSegment
* @return {?}
*/
function (urlSegment) { return urlSegment.toString(); })).join('/');
return url;
};
/**
* [isChildrenSelfRoute description]
* @method isChildrenSelfRoute
* @param route [description]
* @return [description]
*/
/**
* [isChildrenSelfRoute description]
* \@method isChildrenSelfRoute
* @private
* @param {?} route [description]
* @return {?} [description]
*/
RoutingService.isChildrenSelfRoute = /**
* [isChildrenSelfRoute description]
* \@method isChildrenSelfRoute
* @private
* @param {?} route [description]
* @return {?} [description]
*/
function (route) {
route.routeConfig.children.forEach((/**
* @param {?} child
* @return {?}
*/
function (child) {
if (child.path === '' && (child.component || child.loadChildren)) {
return true;
}
}));
return false;
};
/**
* [createBreadcrumb description]
* @method createBreadcrumb
* @param route [description]
* @param url [description]
* @return [description]
*/
/**
* [createBreadcrumb description]
* \@method createBreadcrumb
* @private
* @param {?} route [description]
* @param {?} url [description]
* @return {?} [description]
*/
RoutingService.createBreadcrumb = /**
* [createBreadcrumb description]
* \@method createBreadcrumb
* @private
* @param {?} route [description]
* @param {?} url [description]
* @return {?} [description]
*/
function (route, url) {
/** @type {?} */
var isUrl = true;
if (route.children.length !== 0 && route.firstChild.routeConfig.path) {
if (url !== '/' && !route.routeConfig.loadChildren && !route.routeConfig.component && !RoutingService.isChildrenSelfRoute(route)) {
isUrl = false;
}
}
return {
data: route.data,
params: route.params,
url: isUrl ? url : null
};
};
/**
* [init description]
* @method init
*/
/**
* [init description]
* \@method init
* @private
* @return {?}
*/
RoutingService.prototype.init = /**
* [init description]
* \@method init
* @private
* @return {?}
*/
function () {
var _this = this;
this.router.events.subscribe((/**
* @param {?} routeEvent
* @return {?}
*/
function (routeEvent) {
// console.log(routeEvent)
// https://github.com/angular/angular/issues/17473: event not fired anymore on load for routed component.
if (routeEvent instanceof NavigationEnd) {
_this.events.next(routeEvent);
/** @type {?} */
var route = _this.router.routerState.root.snapshot;
/** @type {?} */
var tmpUrl = '';
/** @type {?} */
var url = '';
/** @type {?} */
var rootRoot = true;
/** @type {?} */
var paths = [];
while (route.children.length) {
route = route.firstChild;
tmpUrl = "/" + RoutingService.createUrl(route);
if (route.outlet !== PRIMARY_OUTLET || (!route.routeConfig.path && !rootRoot)) {
continue;
}
rootRoot = false;
if (route.params || route.data) {
for (var key in route.params) {
if (!key) {
continue;
}
if (route.data['title']) {
route.data['title'] = route.data['title'].replace(":" + key, route.params[key]);
route.data['title'] = route.data['title'].replace(":" + key, route.params[key]);
}
if (route.data['breadcrumbs']) {
route.data['breadcrumbs'] = route.data['breadcrumbs'].replace(":" + key, route.params[key]);
}
if (route.data['description']) {
route.data['description'] = route.data['description'].replace(":" + key, route.params[key]);
}
}
}
if (tmpUrl === '/') {
paths.push(RoutingService.createBreadcrumb(route, tmpUrl));
}
else {
url += tmpUrl;
paths.push(RoutingService.createBreadcrumb(route, url));
}
}
_this.onChange.next(paths);
}
}));
};
RoutingService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
RoutingService.ctorParameters = function () { return [
{ type: Router }
]; };
return RoutingService;
}());
export { RoutingService };
if (false) {
/** @type {?} */
RoutingService.prototype.onChange;
/** @type {?} */
RoutingService.prototype.events;
/**
* @type {?}
* @private
*/
RoutingService.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWQtY3VzdG9tLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQzJDLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUN0RixNQUFNLGlCQUFpQixDQUFDOzs7O0FBS3pCLDBCQUlDOzs7SUFIRyxvQkFBYTs7SUFDYixzQkFBZTs7SUFDZixtQkFBWTs7Ozs7QUFNaEIsMkJBQThDOzs7O0FBTTlDO0lBS0k7OztPQUdHO0lBQ0gsd0JBQ1ksTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSbkIsYUFBUSxHQUEyQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxXQUFNLEdBQWlDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBU3pFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7O0lBQ1ksd0JBQVM7Ozs7Ozs7SUFBeEIsVUFBeUIsS0FBNkI7O1lBQzVDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBckIsQ0FBcUIsRUFBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDeEUsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7O0lBQ1ksa0NBQW1COzs7Ozs7O0lBQWxDLFVBQW1DLEtBQTZCO1FBQzVELEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLEtBQUs7WUFD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U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRXZlbnQgYXMgUm91dGVyRXZlbnQsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLypcclxuICpcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aCB7XHJcbiAgICBkYXRhOiBPYmplY3Q7XHJcbiAgICBwYXJhbXM6IE9iamVjdDtcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQYXRocyBleHRlbmRzIEFycmF5PFBhdGg+IHsgfVxyXG5cclxuXHJcbi8qXHJcbiAqXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSb3V0aW5nU2VydmljZSB7XHJcbiAgICBwdWJsaWMgb25DaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxQYXRocz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcbiAgICBwdWJsaWMgZXZlbnRzOiBCZWhhdmlvclN1YmplY3Q8Um91dGVyRXZlbnQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQG1ldGhvZCBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIHJvdXRlciBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NyZWF0ZVVybCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgY3JlYXRlVXJsXHJcbiAgICAgKiBAcGFyYW0gcm91dGUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZVVybChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gcm91dGUudXJsLm1hcCh1cmxTZWdtZW50ID0+IHVybFNlZ21lbnQudG9TdHJpbmcoKSkuam9pbignLycpO1xyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNDaGlsZHJlblNlbGZSb3V0ZSBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNDaGlsZHJlblNlbGZSb3V0ZVxyXG4gICAgICogQHBhcmFtIHJvdXRlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBpc0NoaWxkcmVuU2VsZlJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcm91dGUucm91dGVDb25maWcuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5wYXRoID09PSAnJyAmJiAoY2hpbGQuY29tcG9uZW50IHx8IGNoaWxkLmxvYWRDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtjcmVhdGVCcmVhZGNydW1iIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBjcmVhdGVCcmVhZGNydW1iXHJcbiAgICAgKiBAcGFyYW0gcm91dGUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICogQHBhcmFtIHVybCAgIFtkZXNjcmlwdGlvbl1cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZyk6IFBhdGgge1xyXG4gICAgICAgIGxldCBpc1VybCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChyb3V0ZS5jaGlsZHJlbi5sZW5ndGggIT09IDAgJiYgcm91dGUuZmlyc3RDaGlsZC5yb3V0ZUNvbmZpZy5wYXRoKSB7XHJcbiAgICAgICAgICAgIGlmICh1cmwgIT09ICcvJyAmJiAhcm91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuICYmICFyb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQgJiYgIVJvdXRpbmdTZXJ2aWNlLmlzQ2hpbGRyZW5TZWxmUm91dGUocm91dGUpKSB7XHJcbiAgICAgICAgICAgICAgICBpc1VybCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkYXRhOiByb3V0ZS5kYXRhLFxyXG4gICAgICAgICAgICBwYXJhbXM6IHJvdXRlLnBhcmFtcyxcclxuICAgICAgICAgICAgdXJsOiBpc1VybCA/IHVybCA6IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtpbml0IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBpbml0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHJvdXRlRXZlbnQgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyb3V0ZUV2ZW50KVxyXG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNzQ3MzogZXZlbnQgbm90IGZpcmVkIGFueW1vcmUgb24gbG9hZCBmb3Igcm91dGVkIGNvbXBvbmVudC5cclxuICAgICAgICAgICAgaWYgKHJvdXRlRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50cy5uZXh0KHJvdXRlRXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdC5zbmFwc2hvdCxcclxuICAgICAgICAgICAgICAgICAgICB0bXBVcmwgPSAnJyxcclxuICAgICAgICAgICAgICAgICAgICB1cmwgPSAnJyxcclxuICAgICAgICAgICAgICAgICAgICByb290Um9vdCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aHM6IFBhdGhzID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB0bXBVcmwgPSBgLyR7Um91dGluZ1NlcnZpY2UuY3JlYXRlVXJsKHJvdXRlKX1gO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUub3V0bGV0ICE9PSBQUklNQVJZX09VVExFVCB8fCAoIXJvdXRlLnJvdXRlQ29uZmlnLnBhdGggJiYgIXJvb3RSb290KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RSb290ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZS5wYXJhbXMgfHwgcm91dGUuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByb3V0ZS5wYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha2V5KSB7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUuZGF0YVsndGl0bGUnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLmRhdGFbJ3RpdGxlJ10gPSByb3V0ZS5kYXRhWyd0aXRsZSddLnJlcGxhY2UoYDoke2tleX1gLCByb3V0ZS5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUuZGF0YVsndGl0bGUnXSA9IHJvdXRlLmRhdGFbJ3RpdGxlJ10ucmVwbGFjZShgOiR7a2V5fWAsIHJvdXRlLnBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZS5kYXRhWydicmVhZGNydW1icyddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUuZGF0YVsnYnJlYWRjcnVtYnMnXSA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWJzJ10ucmVwbGFjZShgOiR7a2V5fWAsIHJvdXRlLnBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZS5kYXRhWydkZXNjcmlwdGlvbiddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUuZGF0YVsnZGVzY3JpcHRpb24nXSA9IHJvdXRlLmRhdGFbJ2Rlc2NyaXB0aW9uJ10ucmVwbGFjZShgOiR7a2V5fWAsIHJvdXRlLnBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcFVybCA9PT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2goUm91dGluZ1NlcnZpY2UuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgdG1wVXJsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IHRtcFVybDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaChSb3V0aW5nU2VydmljZS5jcmVhdGVCcmVhZGNydW1iKHJvdXRlLCB1cmwpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5uZXh0KHBhdGhzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==