UNPKG

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