@ngsm/title
Version:
<p align="center"> <a href="https://github.com/ng-sm"> <img src="https://avatars2.githubusercontent.com/u/64587411?s=150"> </a> </p> <p align="center"> Title module based on the @ngx-translate/core package. </p>
250 lines (241 loc) • 6.41 kB
JavaScript
import { CommonModule } from '@angular/common';
import { Injectable, Optional, Inject, NgModule } from '@angular/core';
import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { filter, map, mergeMap } from 'rxjs/operators';
import { Title } from '@angular/platform-browser';
import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
/**
* @fileoverview added by tsickle
* Generated from: lib/shared/title.factory.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const DEFAULT_TITLE = 'title.default';
/**
* @param {?} route
* @return {?}
*/
function getLastActivatedRoute(route) {
while (route.firstChild) {
route = route.firstChild;
}
return route;
}
/**
* @param {?} routeData
* @return {?}
*/
function getTitleKey(routeData) {
return routeData.title
? routeData.title
: DEFAULT_TITLE;
}
/**
* @param {?} routeData
* @return {?}
*/
function isPrimary(routeData) {
const { outlet } = routeData;
return outlet === 'primary';
}
/**
* @param {?} suffix
* @return {?}
*/
function getTitleSuffix(suffix) {
return suffix
? ` | ${suffix}`
: '';
}
/**
* @fileoverview added by tsickle
* Generated from: lib/shared/title.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class TitleService {
/**
* @param {?} titleConfig
* @param {?} title
* @param {?} router
* @param {?} activatedRoute
* @param {?} translateService
*/
constructor(titleConfig, title, router, activatedRoute, translateService) {
this.titleConfig = titleConfig;
this.title = title;
this.router = router;
this.activatedRoute = activatedRoute;
this.translateService = translateService;
this.setConfigInitialValue();
this.init();
}
/**
* @return {?}
*/
setConfigInitialValue() {
this.config = this.titleConfig || {
suffix: '',
};
}
/**
* @return {?}
*/
init() {
this.router.events
.pipe(filter((/**
* @param {?} event
* @return {?}
*/
event => event instanceof NavigationEnd)), map((/**
* @return {?}
*/
() => getLastActivatedRoute(this.activatedRoute))), filter(isPrimary), mergeMap((/**
* @param {?} __0
* @return {?}
*/
({ data }) => data)))
.subscribe((/**
* @param {?} data
* @return {?}
*/
data => this.setTitle(data)));
}
/**
* @param {?} data
* @return {?}
*/
setTitle(data) {
const { suffix } = this.config;
/** @type {?} */
const titleKey = getTitleKey(data);
this.translateService
.get([
titleKey,
...(!!suffix ? [suffix] : []),
])
.subscribe((/**
* @param {?} data
* @return {?}
*/
(data) => {
this.title.setTitle(`${data[titleKey]} ${getTitleSuffix(data[suffix])}`);
}));
}
}
TitleService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
TitleService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['titleConfig',] }] },
{ type: Title },
{ type: Router },
{ type: ActivatedRoute },
{ type: TranslateService }
];
if (false) {
/** @type {?} */
TitleService.prototype.config;
/**
* @type {?}
* @private
*/
TitleService.prototype.titleConfig;
/**
* @type {?}
* @private
*/
TitleService.prototype.title;
/**
* @type {?}
* @private
*/
TitleService.prototype.router;
/**
* @type {?}
* @private
*/
TitleService.prototype.activatedRoute;
/**
* @type {?}
* @private
*/
TitleService.prototype.translateService;
}
/**
* @fileoverview added by tsickle
* Generated from: lib/title.module.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class TitleModule {
/**
* @param {?} titleService
*/
constructor(titleService) {
this.titleService = titleService;
}
/**
* @param {?} titleConfig
* @return {?}
*/
static forRoot(titleConfig) {
return {
ngModule: TitleModule,
providers: [
{
provide: 'titleConfig',
useValue: titleConfig,
}
]
};
}
}
TitleModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule,
TranslateModule
],
providers: [
TitleService,
],
},] }
];
/** @nocollapse */
TitleModule.ctorParameters = () => [
{ type: TitleService }
];
if (false) {
/** @type {?} */
TitleModule.prototype.titleService;
}
/**
* @fileoverview added by tsickle
* Generated from: lib/shared/title.model.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function TitleConfig() { }
if (false) {
/** @type {?|undefined} */
TitleConfig.prototype.suffix;
}
/**
* @fileoverview added by tsickle
* Generated from: lib/shared/index.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: index.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: ngsm-title.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { DEFAULT_TITLE, TitleModule, TitleService, getLastActivatedRoute, getTitleKey, getTitleSuffix, isPrimary, TitleService as ɵa };
//# sourceMappingURL=ngsm-title.js.map