1 | /*
|
2 | Copyright 2013-2020 the original author or authors from the JHipster project.
|
3 |
|
4 | This file is part of the JHipster project, see https://www.jhipster.tech/
|
5 | for more information.
|
6 |
|
7 | Licensed under the Apache License, Version 2.0 (the "License");
|
8 | you may not use this file except in compliance with the License.
|
9 | You may obtain a copy of the License at
|
10 |
|
11 | http://www.apache.org/licenses/LICENSE-2.0
|
12 |
|
13 | Unless required by applicable law or agreed to in writing, software
|
14 | distributed under the License is distributed on an "AS IS" BASIS,
|
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | See the License for the specific language governing permissions and
|
17 | limitations under the License.
|
18 | */
|
19 | import { Input, Directive, ElementRef, Optional } from '@angular/core';
|
20 | import { TranslateService } from '@ngx-translate/core';
|
21 | import { Subject } from 'rxjs';
|
22 | import { takeUntil } from 'rxjs/operators';
|
23 | import { JhiConfigService } from '../config.service';
|
24 | /**
|
25 | * A wrapper directive on top of the translate pipe as the inbuilt translate directive from ngx-translate is too verbose and buggy
|
26 | */
|
27 | export class JhiTranslateDirective {
|
28 | constructor(configService, el, translateService) {
|
29 | this.configService = configService;
|
30 | this.el = el;
|
31 | this.translateService = translateService;
|
32 | this.directiveDestroyed = new Subject();
|
33 | }
|
34 | ngOnInit() {
|
35 | const enabled = this.configService.getConfig().i18nEnabled;
|
36 | if (enabled) {
|
37 | this.translateService.onLangChange.pipe(takeUntil(this.directiveDestroyed)).subscribe(() => {
|
38 | this.getTranslation();
|
39 | });
|
40 | }
|
41 | }
|
42 | ngOnChanges() {
|
43 | const enabled = this.configService.getConfig().i18nEnabled;
|
44 | if (enabled) {
|
45 | this.getTranslation();
|
46 | }
|
47 | }
|
48 | ngOnDestroy() {
|
49 | this.directiveDestroyed.next();
|
50 | this.directiveDestroyed.complete();
|
51 | }
|
52 | getTranslation() {
|
53 | this.translateService
|
54 | .get(this.jhiTranslate, this.translateValues)
|
55 | .pipe(takeUntil(this.directiveDestroyed))
|
56 | .subscribe(value => {
|
57 | this.el.nativeElement.innerHTML = value;
|
58 | }, () => {
|
59 | return `${this.configService.getConfig().noi18nMessage}[${this.jhiTranslate}]`;
|
60 | });
|
61 | }
|
62 | }
|
63 | JhiTranslateDirective.decorators = [
|
64 | { type: Directive, args: [{
|
65 | selector: '[jhiTranslate]'
|
66 | },] }
|
67 | ];
|
68 | JhiTranslateDirective.ctorParameters = () => [
|
69 | { type: JhiConfigService },
|
70 | { type: ElementRef },
|
71 | { type: TranslateService, decorators: [{ type: Optional }] }
|
72 | ];
|
73 | JhiTranslateDirective.propDecorators = {
|
74 | jhiTranslate: [{ type: Input }],
|
75 | translateValues: [{ type: Input }]
|
76 | };
|
77 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamhpLXRyYW5zbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFuZ3VhZ2UvamhpLXRyYW5zbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBTTlCLFlBQW9CLGFBQStCLEVBQVUsRUFBYyxFQUFzQixnQkFBa0M7UUFBL0csa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRmxILHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7SUFFMkUsQ0FBQztJQUV2SSxRQUFRO1FBQ0osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDM0QsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN2RixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFFM0QsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFdkMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQjthQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDeEMsU0FBUyxDQUNOLEtBQUssQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM1QyxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQztRQUNuRixDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7OztZQTlDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjthQUM3Qjs7O1lBUFEsZ0JBQWdCO1lBTEUsVUFBVTtZQUM1QixnQkFBZ0IsdUJBa0J5RCxRQUFROzs7MkJBTHJGLEtBQUs7OEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gQ29weXJpZ2h0IDIwMTMtMjAyMCB0aGUgb3JpZ2luYWwgYXV0aG9yIG9yIGF1dGhvcnMgZnJvbSB0aGUgSkhpcHN0ZXIgcHJvamVjdC5cblxuIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBKSGlwc3RlciBwcm9qZWN0LCBzZWUgaHR0cHM6Ly93d3cuamhpcHN0ZXIudGVjaC9cbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgSW5wdXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBPbkluaXQsIE9wdGlvbmFsLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSmhpQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIHdyYXBwZXIgZGlyZWN0aXZlIG9uIHRvcCBvZiB0aGUgdHJhbnNsYXRlIHBpcGUgYXMgdGhlIGluYnVpbHQgdHJhbnNsYXRlIGRpcmVjdGl2ZSBmcm9tIG5neC10cmFuc2xhdGUgaXMgdG9vIHZlcmJvc2UgYW5kIGJ1Z2d5XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2poaVRyYW5zbGF0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEpoaVRyYW5zbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGpoaVRyYW5zbGF0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRyYW5zbGF0ZVZhbHVlczogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3RpdmVEZXN0cm95ZWQgPSBuZXcgU3ViamVjdDxuZXZlcj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogSmhpQ29uZmlnU2VydmljZSwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuaTE4bkVuYWJsZWQ7XG4gICAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGlyZWN0aXZlRGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFRyYW5zbGF0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCBlbmFibGVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmkxOG5FbmFibGVkO1xuXG4gICAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmdldFRyYW5zbGF0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVEZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZURlc3Ryb3llZC5jb21wbGV0ZSgpO1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0KHRoaXMuamhpVHJhbnNsYXRlLCB0aGlzLnRyYW5zbGF0ZVZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRpcmVjdGl2ZURlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygpLm5vaTE4bk1lc3NhZ2V9WyR7dGhpcy5qaGlUcmFuc2xhdGV9XWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0= |
\ | No newline at end of file |