@lucca-front/ng 8.2.2-rc.1 → 8.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,19 +12,23 @@ export class LuTitleService {
12
12
  this.router = router;
13
13
  this.title = title;
14
14
  this.translateService = translateService;
15
- this.titleSubject = new BehaviorSubject('Lucca');
16
- this.title$ = this.titleSubject.asObservable();
15
+ this.titlePartsSubject = new BehaviorSubject(['Lucca']);
16
+ this.titleParts$ = this.titlePartsSubject.asObservable();
17
+ this.title$ = this.titleParts$.pipe(map((titleParts) => titleParts.join(TitleSeparator)));
17
18
  }
18
19
  init(applicationNameTranslationKey) {
19
20
  this.router.events
20
21
  .pipe(filter((event) => {
21
22
  return event instanceof ActivationEnd && event.snapshot.children.length === 0;
22
- }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titles) => [...titles, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x).join(TitleSeparator)), distinctUntilChanged(), tap((title) => this.titleSubject.next(title)))
23
+ }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titleParts) => [...titleParts, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x)), distinctUntilChanged(), tap((titleParts) => this.titlePartsSubject.next(titleParts)))
23
24
  .subscribe();
24
25
  this.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();
25
26
  }
26
27
  prependTitle(title) {
27
- this.titleSubject.next(`${title}${TitleSeparator}${this.titleSubject.value}`);
28
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value]);
29
+ }
30
+ overrideFirstTitlePart(title) {
31
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value.slice(1)]);
28
32
  }
29
33
  }
30
34
  LuTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: LuTitleService, deps: [{ token: i1.Router }, { token: i2.Title }, { token: LU_TITLE_TRANSLATE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -45,4 +49,4 @@ function getPageTitleParts(snapshot) {
45
49
  function uniqTitle(titleParts) {
46
50
  return titleParts.filter(({ title }, index) => titleParts.findIndex((pageTitle) => pageTitle.title === title) === index);
47
51
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nL3RpdGxlL3NyYy9saWIvdGl0bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQTBCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUE0QiwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBR2pHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFHcEMsTUFBTSxPQUFPLGNBQWM7SUFJMUIsWUFBb0IsTUFBYyxFQUFVLEtBQVksRUFBOEMsZ0JBQTBDO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQThDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMEI7UUFIeEksaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUM1RCxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV5RyxDQUFDO0lBRXBKLElBQUksQ0FBQyw2QkFBcUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2FBQ2hCLElBQUksQ0FDSixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQixPQUFPLEtBQUssWUFBWSxhQUFhLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDaEUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDMUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQzlJLEdBQUcsQ0FBQyxDQUFDLE1BQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFDaEssb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM3QzthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7MkdBMUJXLGNBQWMsNkRBSXdDLDBCQUEwQjsrR0FKaEYsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFLaUQsTUFBTTsyQkFBQywwQkFBMEI7O0FBeUI3RixTQUFTLGlCQUFpQixDQUFDLFFBQWdDO0lBQzFELE1BQU0sU0FBUyxHQUFjO1FBQzVCLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQVc7UUFDakQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0tBQ3ZCLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFVBQTRCO0lBQzlDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzFILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQWN0aXZhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJTHVUaXRsZVRyYW5zbGF0ZVNlcnZpY2UsIExVX1RJVExFX1RSQU5TTEFURV9TRVJWSUNFIH0gZnJvbSAnLi90aXRsZS10cmFuc2xhdGUuc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBQYWdlVGl0bGUgPSB7IHRpdGxlOiBzdHJpbmc7IHBhcmFtczogeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB9IH07XHJcbmV4cG9ydCBjb25zdCBUaXRsZVNlcGFyYXRvciA9ICcg4oCTICc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMdVRpdGxlU2VydmljZSB7XHJcblx0cHJpdmF0ZSB0aXRsZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ0x1Y2NhJyk7XHJcblx0dGl0bGUkID0gdGhpcy50aXRsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdGl0bGU6IFRpdGxlLCBASW5qZWN0KExVX1RJVExFX1RSQU5TTEFURV9TRVJWSUNFKSBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IElMdVRpdGxlVHJhbnNsYXRlU2VydmljZSkge31cclxuXHJcblx0aW5pdChhcHBsaWNhdGlvbk5hbWVUcmFuc2xhdGlvbktleTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHNcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZmlsdGVyKChldmVudCkgPT4ge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCAmJiBldmVudC5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0bWFwKChldmVudDogQWN0aXZhdGlvbkVuZCkgPT4gZ2V0UGFnZVRpdGxlUGFydHMoZXZlbnQuc25hcHNob3QpKSxcclxuXHRcdFx0XHRtYXAoKHRpdGxlUGFydHMpID0+IHVuaXFUaXRsZSh0aXRsZVBhcnRzKSksXHJcblx0XHRcdFx0bWFwKCh0aXRsZVBhcnRzKSA9PiB0aXRsZVBhcnRzLmZpbHRlcigoeyB0aXRsZSB9KSA9PiB0aXRsZSAhPT0gJycpLm1hcCgoeyB0aXRsZSwgcGFyYW1zIH0pID0+IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUodGl0bGUsIHBhcmFtcykpKSxcclxuXHRcdFx0XHRtYXAoKHRpdGxlczogQXJyYXk8c3RyaW5nPikgPT4gWy4uLnRpdGxlcywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZShhcHBsaWNhdGlvbk5hbWVUcmFuc2xhdGlvbktleSwge30pLCAnTHVjY2EnXS5maWx0ZXIoKHgpID0+ICEheCkuam9pbihUaXRsZVNlcGFyYXRvcikpLFxyXG5cdFx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcblx0XHRcdFx0dGFwKCh0aXRsZSkgPT4gdGhpcy50aXRsZVN1YmplY3QubmV4dCh0aXRsZSkpLFxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHR0aGlzLnRpdGxlJC5waXBlKHRhcCgodGl0bGUpID0+IHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpKSkuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRwcmVwZW5kVGl0bGUodGl0bGU6IHN0cmluZykge1xyXG5cdFx0dGhpcy50aXRsZVN1YmplY3QubmV4dChgJHt0aXRsZX0ke1RpdGxlU2VwYXJhdG9yfSR7dGhpcy50aXRsZVN1YmplY3QudmFsdWV9YCk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQYWdlVGl0bGVQYXJ0cyhzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IEFycmF5PFBhZ2VUaXRsZT4ge1xyXG5cdGNvbnN0IHBhZ2VUaXRsZTogUGFnZVRpdGxlID0ge1xyXG5cdFx0dGl0bGU6IChzbmFwc2hvdC5kYXRhPy5bJ3RpdGxlJ10gfHwgJycpIGFzIHN0cmluZyxcclxuXHRcdHBhcmFtczogc25hcHNob3QucGFyYW1zLFxyXG5cdH07XHJcblx0cmV0dXJuIHNuYXBzaG90LnBhcmVudCA/IFtwYWdlVGl0bGUsIC4uLmdldFBhZ2VUaXRsZVBhcnRzKHNuYXBzaG90LnBhcmVudCldIDogW3BhZ2VUaXRsZV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVuaXFUaXRsZSh0aXRsZVBhcnRzOiBBcnJheTxQYWdlVGl0bGU+KTogQXJyYXk8UGFnZVRpdGxlPiB7XHJcblx0cmV0dXJuIHRpdGxlUGFydHMuZmlsdGVyKCh7IHRpdGxlIH0sIGluZGV4KSA9PiB0aXRsZVBhcnRzLmZpbmRJbmRleCgocGFnZVRpdGxlKSA9PiBwYWdlVGl0bGUudGl0bGUgPT09IHRpdGxlKSA9PT0gaW5kZXgpO1xyXG59XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nL3RpdGxlL3NyYy9saWIvdGl0bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQTBCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUE0QiwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBR2pHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFHcEMsTUFBTSxPQUFPLGNBQWM7SUFLMUIsWUFBb0IsTUFBYyxFQUFVLEtBQVksRUFBOEMsZ0JBQTBDO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQThDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMEI7UUFKeEksc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELFdBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUF5QixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUrQyxDQUFDO0lBRXBKLElBQUksQ0FBQyw2QkFBcUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2FB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QUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDMUgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBBY3RpdmF0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElMdVRpdGxlVHJhbnNsYXRlU2VydmljZSwgTFVfVElUTEVfVFJBTlNMQVRFX1NFUlZJQ0UgfSBmcm9tICcuL3RpdGxlLXRyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB0eXBlIFBhZ2VUaXRsZSA9IHsgdGl0bGU6IHN0cmluZzsgcGFyYW1zOiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIH0gfTtcclxuZXhwb3J0IGNvbnN0IFRpdGxlU2VwYXJhdG9yID0gJyDigJMgJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEx1VGl0bGVTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHRpdGxlUGFydHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oWydMdWNjYSddKTtcclxuXHR0aXRsZVBhcnRzJCA9IHRoaXMudGl0bGVQYXJ0c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0dGl0bGUkID0gdGhpcy50aXRsZVBhcnRzJC5waXBlKG1hcCgodGl0bGVQYXJ0czogQXJyYXk8c3RyaW5nPikgPT4gdGl0bGVQYXJ0cy5qb2luKFRpdGxlU2VwYXJhdG9yKSkpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHRpdGxlOiBUaXRsZSwgQEluamVjdChMVV9USVRMRV9UUkFOU0xBVEVfU0VSVklDRSkgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBJTHVUaXRsZVRyYW5zbGF0ZVNlcnZpY2UpIHt9XHJcblxyXG5cdGluaXQoYXBwbGljYXRpb25OYW1lVHJhbnNsYXRpb25LZXk6IHN0cmluZykge1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGZpbHRlcigoZXZlbnQpID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBldmVudCBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQgJiYgZXZlbnQuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdG1hcCgoZXZlbnQ6IEFjdGl2YXRpb25FbmQpID0+IGdldFBhZ2VUaXRsZVBhcnRzKGV2ZW50LnNuYXBzaG90KSksXHJcblx0XHRcdFx0bWFwKCh0aXRsZVBhcnRzKSA9PiB1bmlxVGl0bGUodGl0bGVQYXJ0cykpLFxyXG5cdFx0XHRcdG1hcCgodGl0bGVQYXJ0cykgPT4gdGl0bGVQYXJ0cy5maWx0ZXIoKHsgdGl0bGUgfSkgPT4gdGl0bGUgIT09ICcnKS5tYXAoKHsgdGl0bGUsIHBhcmFtcyB9KSA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKHRpdGxlLCBwYXJhbXMpKSksXHJcblx0XHRcdFx0bWFwKCh0aXRsZVBhcnRzOiBBcnJheTxzdHJpbmc+KSA9PiBbLi4udGl0bGVQYXJ0cywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZShhcHBsaWNhdGlvbk5hbWVUcmFuc2xhdGlvbktleSwge30pLCAnTHVjY2EnXS5maWx0ZXIoKHgpID0+ICEheCkpLFxyXG5cdFx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcblx0XHRcdFx0dGFwKCh0aXRsZVBhcnRzKSA9PiB0aGlzLnRpdGxlUGFydHNTdWJqZWN0Lm5leHQodGl0bGVQYXJ0cykpLFxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHR0aGlzLnRpdGxlJC5waXBlKHRhcCgodGl0bGUpID0+IHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpKSkuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRwcmVwZW5kVGl0bGUodGl0bGU6IHN0cmluZykge1xyXG5cdFx0dGhpcy50aXRsZVBhcnRzU3ViamVjdC5uZXh0KFt0aXRsZSwgLi4udGhpcy50aXRsZVBhcnRzU3ViamVjdC52YWx1ZV0pO1xyXG5cdH1cclxuXHJcblx0b3ZlcnJpZGVGaXJzdFRpdGxlUGFydCh0aXRsZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnRpdGxlUGFydHNTdWJqZWN0Lm5leHQoW3RpdGxlLCAuLi50aGlzLnRpdGxlUGFydHNTdWJqZWN0LnZhbHVlLnNsaWNlKDEpXSk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQYWdlVGl0bGVQYXJ0cyhzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IEFycmF5PFBhZ2VUaXRsZT4ge1xyXG5cdGNvbnN0IHBhZ2VUaXRsZTogUGFnZVRpdGxlID0ge1xyXG5cdFx0dGl0bGU6IChzbmFwc2hvdC5kYXRhPy5bJ3RpdGxlJ10gfHwgJycpIGFzIHN0cmluZyxcclxuXHRcdHBhcmFtczogc25hcHNob3QucGFyYW1zLFxyXG5cdH07XHJcblx0cmV0dXJuIHNuYXBzaG90LnBhcmVudCA/IFtwYWdlVGl0bGUsIC4uLmdldFBhZ2VUaXRsZVBhcnRzKHNuYXBzaG90LnBhcmVudCldIDogW3BhZ2VUaXRsZV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVuaXFUaXRsZSh0aXRsZVBhcnRzOiBBcnJheTxQYWdlVGl0bGU+KTogQXJyYXk8UGFnZVRpdGxlPiB7XHJcblx0cmV0dXJuIHRpdGxlUGFydHMuZmlsdGVyKCh7IHRpdGxlIH0sIGluZGV4KSA9PiB0aXRsZVBhcnRzLmZpbmRJbmRleCgocGFnZVRpdGxlKSA9PiBwYWdlVGl0bGUudGl0bGUgPT09IHRpdGxlKSA9PT0gaW5kZXgpO1xyXG59XHJcbiJdfQ==
@@ -3,7 +3,7 @@ import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { ActivationEnd, RouterModule } from '@angular/router';
5
5
  import { BehaviorSubject } from 'rxjs';
6
- import { filter, map, distinctUntilChanged, tap } from 'rxjs/operators';
6
+ import { map, filter, distinctUntilChanged, tap } from 'rxjs/operators';
7
7
  import * as i2 from '@angular/platform-browser';
8
8
 
9
9
  const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken('LU_TITLE_TRANSLATE_SERVICE');
@@ -14,19 +14,23 @@ class LuTitleService {
14
14
  this.router = router;
15
15
  this.title = title;
16
16
  this.translateService = translateService;
17
- this.titleSubject = new BehaviorSubject('Lucca');
18
- this.title$ = this.titleSubject.asObservable();
17
+ this.titlePartsSubject = new BehaviorSubject(['Lucca']);
18
+ this.titleParts$ = this.titlePartsSubject.asObservable();
19
+ this.title$ = this.titleParts$.pipe(map((titleParts) => titleParts.join(TitleSeparator)));
19
20
  }
20
21
  init(applicationNameTranslationKey) {
21
22
  this.router.events
22
23
  .pipe(filter((event) => {
23
24
  return event instanceof ActivationEnd && event.snapshot.children.length === 0;
24
- }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titles) => [...titles, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x).join(TitleSeparator)), distinctUntilChanged(), tap((title) => this.titleSubject.next(title)))
25
+ }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titleParts) => [...titleParts, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x)), distinctUntilChanged(), tap((titleParts) => this.titlePartsSubject.next(titleParts)))
25
26
  .subscribe();
26
27
  this.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();
27
28
  }
28
29
  prependTitle(title) {
29
- this.titleSubject.next(`${title}${TitleSeparator}${this.titleSubject.value}`);
30
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value]);
31
+ }
32
+ overrideFirstTitlePart(title) {
33
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value.slice(1)]);
30
34
  }
31
35
  }
32
36
  LuTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: LuTitleService, deps: [{ token: i1.Router }, { token: i2.Title }, { token: LU_TITLE_TRANSLATE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-title.mjs","sources":["../../../packages/ng/title/src/lib/title-translate.service.ts","../../../packages/ng/title/src/lib/title.service.ts","../../../packages/ng/title/src/lib/title.module.ts","../../../packages/ng/title/src/lucca-front-ng-title.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken<ILuTitleTranslateService>('LU_TITLE_TRANSLATE_SERVICE');\r\n\r\nexport interface ILuTitleTranslateService {\r\n\ttranslate(key: string, args?: Record<string, unknown>): string;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, tap } from 'rxjs/operators';\r\nimport { ILuTitleTranslateService, LU_TITLE_TRANSLATE_SERVICE } from './title-translate.service';\r\n\r\nexport type PageTitle = { title: string; params: { [param: string]: string } };\r\nexport const TitleSeparator = ' – ';\r\n\r\n@Injectable()\r\nexport class LuTitleService {\r\n\tprivate titleSubject = new BehaviorSubject<string>('Lucca');\r\n\ttitle$ = this.titleSubject.asObservable();\r\n\r\n\tconstructor(private router: Router, private title: Title, @Inject(LU_TITLE_TRANSLATE_SERVICE) private translateService: ILuTitleTranslateService) {}\r\n\r\n\tinit(applicationNameTranslationKey: string) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter((event) => {\r\n\t\t\t\t\treturn event instanceof ActivationEnd && event.snapshot.children.length === 0;\r\n\t\t\t\t}),\r\n\t\t\t\tmap((event: ActivationEnd) => getPageTitleParts(event.snapshot)),\r\n\t\t\t\tmap((titleParts) => uniqTitle(titleParts)),\r\n\t\t\t\tmap((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))),\r\n\t\t\t\tmap((titles: Array<string>) => [...titles, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x).join(TitleSeparator)),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap((title) => this.titleSubject.next(title)),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\r\n\t\tthis.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();\r\n\t}\r\n\r\n\tprependTitle(title: string) {\r\n\t\tthis.titleSubject.next(`${title}${TitleSeparator}${this.titleSubject.value}`);\r\n\t}\r\n}\r\n\r\nfunction getPageTitleParts(snapshot: ActivatedRouteSnapshot): Array<PageTitle> {\r\n\tconst pageTitle: PageTitle = {\r\n\t\ttitle: (snapshot.data?.['title'] || '') as string,\r\n\t\tparams: snapshot.params,\r\n\t};\r\n\treturn snapshot.parent ? [pageTitle, ...getPageTitleParts(snapshot.parent)] : [pageTitle];\r\n}\r\n\r\nfunction uniqTitle(titleParts: Array<PageTitle>): Array<PageTitle> {\r\n\treturn titleParts.filter(({ title }, index) => titleParts.findIndex((pageTitle) => pageTitle.title === title) === index);\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LuTitleService } from './title.service';\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [LuTitleService],\r\n})\r\nexport class LuTitleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-title.mjs","sources":["../../../packages/ng/title/src/lib/title-translate.service.ts","../../../packages/ng/title/src/lib/title.service.ts","../../../packages/ng/title/src/lib/title.module.ts","../../../packages/ng/title/src/lucca-front-ng-title.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken<ILuTitleTranslateService>('LU_TITLE_TRANSLATE_SERVICE');\r\n\r\nexport interface ILuTitleTranslateService {\r\n\ttranslate(key: string, args?: Record<string, unknown>): string;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, tap } from 'rxjs/operators';\r\nimport { ILuTitleTranslateService, LU_TITLE_TRANSLATE_SERVICE } from './title-translate.service';\r\n\r\nexport type PageTitle = { title: string; params: { [param: string]: string } };\r\nexport const TitleSeparator = ' – ';\r\n\r\n@Injectable()\r\nexport class LuTitleService {\r\n\tprivate titlePartsSubject = new BehaviorSubject<string[]>(['Lucca']);\r\n\ttitleParts$ = this.titlePartsSubject.asObservable();\r\n\ttitle$ = this.titleParts$.pipe(map((titleParts: Array<string>) => titleParts.join(TitleSeparator)));\r\n\r\n\tconstructor(private router: Router, private title: Title, @Inject(LU_TITLE_TRANSLATE_SERVICE) private translateService: ILuTitleTranslateService) {}\r\n\r\n\tinit(applicationNameTranslationKey: string) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter((event) => {\r\n\t\t\t\t\treturn event instanceof ActivationEnd && event.snapshot.children.length === 0;\r\n\t\t\t\t}),\r\n\t\t\t\tmap((event: ActivationEnd) => getPageTitleParts(event.snapshot)),\r\n\t\t\t\tmap((titleParts) => uniqTitle(titleParts)),\r\n\t\t\t\tmap((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))),\r\n\t\t\t\tmap((titleParts: Array<string>) => [...titleParts, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x)),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap((titleParts) => this.titlePartsSubject.next(titleParts)),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\r\n\t\tthis.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();\r\n\t}\r\n\r\n\tprependTitle(title: string) {\r\n\t\tthis.titlePartsSubject.next([title, ...this.titlePartsSubject.value]);\r\n\t}\r\n\r\n\toverrideFirstTitlePart(title: string) {\r\n\t\tthis.titlePartsSubject.next([title, ...this.titlePartsSubject.value.slice(1)]);\r\n\t}\r\n}\r\n\r\nfunction getPageTitleParts(snapshot: ActivatedRouteSnapshot): Array<PageTitle> {\r\n\tconst pageTitle: PageTitle = {\r\n\t\ttitle: (snapshot.data?.['title'] || '') as string,\r\n\t\tparams: snapshot.params,\r\n\t};\r\n\treturn snapshot.parent ? [pageTitle, ...getPageTitleParts(snapshot.parent)] : [pageTitle];\r\n}\r\n\r\nfunction uniqTitle(titleParts: Array<PageTitle>): Array<PageTitle> {\r\n\treturn titleParts.filter(({ title }, index) => titleParts.findIndex((pageTitle) => pageTitle.title === title) === index);\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LuTitleService } from './title.service';\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [LuTitleService],\r\n})\r\nexport class LuTitleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { ActivationEnd, RouterModule } from '@angular/router';
5
5
  import { BehaviorSubject } from 'rxjs';
6
- import { filter, map, distinctUntilChanged, tap } from 'rxjs/operators';
6
+ import { map, filter, distinctUntilChanged, tap } from 'rxjs/operators';
7
7
  import * as i2 from '@angular/platform-browser';
8
8
 
9
9
  const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken('LU_TITLE_TRANSLATE_SERVICE');
@@ -14,19 +14,23 @@ class LuTitleService {
14
14
  this.router = router;
15
15
  this.title = title;
16
16
  this.translateService = translateService;
17
- this.titleSubject = new BehaviorSubject('Lucca');
18
- this.title$ = this.titleSubject.asObservable();
17
+ this.titlePartsSubject = new BehaviorSubject(['Lucca']);
18
+ this.titleParts$ = this.titlePartsSubject.asObservable();
19
+ this.title$ = this.titleParts$.pipe(map((titleParts) => titleParts.join(TitleSeparator)));
19
20
  }
20
21
  init(applicationNameTranslationKey) {
21
22
  this.router.events
22
23
  .pipe(filter((event) => {
23
24
  return event instanceof ActivationEnd && event.snapshot.children.length === 0;
24
- }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titles) => [...titles, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x).join(TitleSeparator)), distinctUntilChanged(), tap((title) => this.titleSubject.next(title)))
25
+ }), map((event) => getPageTitleParts(event.snapshot)), map((titleParts) => uniqTitle(titleParts)), map((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))), map((titleParts) => [...titleParts, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x)), distinctUntilChanged(), tap((titleParts) => this.titlePartsSubject.next(titleParts)))
25
26
  .subscribe();
26
27
  this.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();
27
28
  }
28
29
  prependTitle(title) {
29
- this.titleSubject.next(`${title}${TitleSeparator}${this.titleSubject.value}`);
30
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value]);
31
+ }
32
+ overrideFirstTitlePart(title) {
33
+ this.titlePartsSubject.next([title, ...this.titlePartsSubject.value.slice(1)]);
30
34
  }
31
35
  }
32
36
  LuTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: LuTitleService, deps: [{ token: i1.Router }, { token: i2.Title }, { token: LU_TITLE_TRANSLATE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-title.mjs","sources":["../../../packages/ng/title/src/lib/title-translate.service.ts","../../../packages/ng/title/src/lib/title.service.ts","../../../packages/ng/title/src/lib/title.module.ts","../../../packages/ng/title/src/lucca-front-ng-title.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken<ILuTitleTranslateService>('LU_TITLE_TRANSLATE_SERVICE');\r\n\r\nexport interface ILuTitleTranslateService {\r\n\ttranslate(key: string, args?: Record<string, unknown>): string;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, tap } from 'rxjs/operators';\r\nimport { ILuTitleTranslateService, LU_TITLE_TRANSLATE_SERVICE } from './title-translate.service';\r\n\r\nexport type PageTitle = { title: string; params: { [param: string]: string } };\r\nexport const TitleSeparator = ' – ';\r\n\r\n@Injectable()\r\nexport class LuTitleService {\r\n\tprivate titleSubject = new BehaviorSubject<string>('Lucca');\r\n\ttitle$ = this.titleSubject.asObservable();\r\n\r\n\tconstructor(private router: Router, private title: Title, @Inject(LU_TITLE_TRANSLATE_SERVICE) private translateService: ILuTitleTranslateService) {}\r\n\r\n\tinit(applicationNameTranslationKey: string) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter((event) => {\r\n\t\t\t\t\treturn event instanceof ActivationEnd && event.snapshot.children.length === 0;\r\n\t\t\t\t}),\r\n\t\t\t\tmap((event: ActivationEnd) => getPageTitleParts(event.snapshot)),\r\n\t\t\t\tmap((titleParts) => uniqTitle(titleParts)),\r\n\t\t\t\tmap((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))),\r\n\t\t\t\tmap((titles: Array<string>) => [...titles, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x).join(TitleSeparator)),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap((title) => this.titleSubject.next(title)),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\r\n\t\tthis.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();\r\n\t}\r\n\r\n\tprependTitle(title: string) {\r\n\t\tthis.titleSubject.next(`${title}${TitleSeparator}${this.titleSubject.value}`);\r\n\t}\r\n}\r\n\r\nfunction getPageTitleParts(snapshot: ActivatedRouteSnapshot): Array<PageTitle> {\r\n\tconst pageTitle: PageTitle = {\r\n\t\ttitle: (snapshot.data?.['title'] || '') as string,\r\n\t\tparams: snapshot.params,\r\n\t};\r\n\treturn snapshot.parent ? [pageTitle, ...getPageTitleParts(snapshot.parent)] : [pageTitle];\r\n}\r\n\r\nfunction uniqTitle(titleParts: Array<PageTitle>): Array<PageTitle> {\r\n\treturn titleParts.filter(({ title }, index) => titleParts.findIndex((pageTitle) => pageTitle.title === title) === index);\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LuTitleService } from './title.service';\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [LuTitleService],\r\n})\r\nexport class LuTitleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-title.mjs","sources":["../../../packages/ng/title/src/lib/title-translate.service.ts","../../../packages/ng/title/src/lib/title.service.ts","../../../packages/ng/title/src/lib/title.module.ts","../../../packages/ng/title/src/lucca-front-ng-title.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const LU_TITLE_TRANSLATE_SERVICE = new InjectionToken<ILuTitleTranslateService>('LU_TITLE_TRANSLATE_SERVICE');\r\n\r\nexport interface ILuTitleTranslateService {\r\n\ttranslate(key: string, args?: Record<string, unknown>): string;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRouteSnapshot, ActivationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, tap } from 'rxjs/operators';\r\nimport { ILuTitleTranslateService, LU_TITLE_TRANSLATE_SERVICE } from './title-translate.service';\r\n\r\nexport type PageTitle = { title: string; params: { [param: string]: string } };\r\nexport const TitleSeparator = ' – ';\r\n\r\n@Injectable()\r\nexport class LuTitleService {\r\n\tprivate titlePartsSubject = new BehaviorSubject<string[]>(['Lucca']);\r\n\ttitleParts$ = this.titlePartsSubject.asObservable();\r\n\ttitle$ = this.titleParts$.pipe(map((titleParts: Array<string>) => titleParts.join(TitleSeparator)));\r\n\r\n\tconstructor(private router: Router, private title: Title, @Inject(LU_TITLE_TRANSLATE_SERVICE) private translateService: ILuTitleTranslateService) {}\r\n\r\n\tinit(applicationNameTranslationKey: string) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter((event) => {\r\n\t\t\t\t\treturn event instanceof ActivationEnd && event.snapshot.children.length === 0;\r\n\t\t\t\t}),\r\n\t\t\t\tmap((event: ActivationEnd) => getPageTitleParts(event.snapshot)),\r\n\t\t\t\tmap((titleParts) => uniqTitle(titleParts)),\r\n\t\t\t\tmap((titleParts) => titleParts.filter(({ title }) => title !== '').map(({ title, params }) => this.translateService.translate(title, params))),\r\n\t\t\t\tmap((titleParts: Array<string>) => [...titleParts, this.translateService.translate(applicationNameTranslationKey, {}), 'Lucca'].filter((x) => !!x)),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap((titleParts) => this.titlePartsSubject.next(titleParts)),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\r\n\t\tthis.title$.pipe(tap((title) => this.title.setTitle(title))).subscribe();\r\n\t}\r\n\r\n\tprependTitle(title: string) {\r\n\t\tthis.titlePartsSubject.next([title, ...this.titlePartsSubject.value]);\r\n\t}\r\n\r\n\toverrideFirstTitlePart(title: string) {\r\n\t\tthis.titlePartsSubject.next([title, ...this.titlePartsSubject.value.slice(1)]);\r\n\t}\r\n}\r\n\r\nfunction getPageTitleParts(snapshot: ActivatedRouteSnapshot): Array<PageTitle> {\r\n\tconst pageTitle: PageTitle = {\r\n\t\ttitle: (snapshot.data?.['title'] || '') as string,\r\n\t\tparams: snapshot.params,\r\n\t};\r\n\treturn snapshot.parent ? [pageTitle, ...getPageTitleParts(snapshot.parent)] : [pageTitle];\r\n}\r\n\r\nfunction uniqTitle(titleParts: Array<PageTitle>): Array<PageTitle> {\r\n\treturn titleParts.filter(({ title }, index) => titleParts.findIndex((pageTitle) => pageTitle.title === title) === index);\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LuTitleService } from './title.service';\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [LuTitleService],\r\n})\r\nexport class LuTitleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucca-front/ng",
3
- "version": "8.2.2-rc.1",
3
+ "version": "8.2.3",
4
4
  "description": "A library of icons made by the team @Lucca",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,11 +13,13 @@ export declare class LuTitleService {
13
13
  private router;
14
14
  private title;
15
15
  private translateService;
16
- private titleSubject;
16
+ private titlePartsSubject;
17
+ titleParts$: import("rxjs").Observable<string[]>;
17
18
  title$: import("rxjs").Observable<string>;
18
19
  constructor(router: Router, title: Title, translateService: ILuTitleTranslateService);
19
20
  init(applicationNameTranslationKey: string): void;
20
21
  prependTitle(title: string): void;
22
+ overrideFirstTitlePart(title: string): void;
21
23
  static ɵfac: i0.ɵɵFactoryDeclaration<LuTitleService, never>;
22
24
  static ɵprov: i0.ɵɵInjectableDeclaration<LuTitleService>;
23
25
  }