UNPKG

ontimize-web-ngx

Version:
61 lines 14.2 kB
import { __decorate, __metadata } from "tslib"; import { Component, EventEmitter, Injector, ViewEncapsulation } from '@angular/core'; import { AppConfig } from '../../config/app-config'; import { BooleanInputConverter } from '../../decorators/input-converter'; import { OTranslateService } from '../../services/translate/o-translate.service'; import LocaleCode from '../../util/locale'; import * as i0 from "@angular/core"; import * as i1 from "@angular/flex-layout/flex"; import * as i2 from "@angular/material/button"; import * as i3 from "@angular/material/menu"; import * as i4 from "@angular/common"; import * as i5 from "../../pipes/o-translate.pipe"; export const DEFAULT_INPUTS_O_LANGUAGE_SELECTOR = [ 'useFlagIcons: use-flag-icons' ]; export const DEFAULT_OUTPUTS_LANGUAGE_SELECTOR = [ 'onChange' ]; export class OLanguageSelectorComponent { constructor(injector) { this.injector = injector; this.useFlagIcons = false; this.onChange = new EventEmitter(); this.translateService = this.injector.get(OTranslateService); this.appConfig = this.injector.get(AppConfig); this.availableLangs = this.appConfig.getConfiguration().applicationLocales; } getFlagClass(lang) { let flagName = LocaleCode.getCountryCode(lang); flagName = (flagName !== 'en') ? flagName : 'gb'; return 'flag-icon-' + flagName; } getAvailableLangs() { return this.availableLangs; } configureI18n(lang) { if (this.translateService && this.translateService.getCurrentLang() !== lang) { this.translateService.use(lang); this.onChange.emit(lang); } } getCurrentLang() { return this.translateService.getCurrentLang(); } getCurrentCountry() { return LocaleCode.getCountryCode(this.getCurrentLang()); } } OLanguageSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OLanguageSelectorComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); OLanguageSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OLanguageSelectorComponent, selector: "o-language-selector", inputs: { useFlagIcons: ["use-flag-icons", "useFlagIcons"] }, outputs: { onChange: "onChange" }, host: { properties: { "class.o-language-selector": "true" } }, ngImport: i0, template: "<div fxLayout fxLayoutAlign=\"center center\" fxFill>\n <button type=\"button\" *ngIf=\"useFlagIcons\" class=\"menu-button\" mat-icon-button [matMenuTriggerFor]=\"langMenu\">\n <span class=\"flag-icon {{ getFlagClass(getCurrentCountry()) }}\"></span>\n </button>\n\n <button type=\"button\" *ngIf=\"!useFlagIcons\" class=\"menu-button o-language-selector-text\" mat-button [matMenuTriggerFor]=\"langMenu\">\n <span>{{ 'LOCALE_' + getCurrentLang() | oTranslate }}</span>\n </button>\n</div>\n\n<mat-menu #langMenu=\"matMenu\" yPosition=\"below\" class=\"o-mat-menu\">\n <button type=\"button\" mat-menu-item *ngFor=\"let lang of getAvailableLangs()\" (click)=\"configureI18n(lang)\">\n <span *ngIf=\"useFlagIcons\" class=\"flag-icon {{ getFlagClass(lang) }}\"></span>\n <span>{{ 'LOCALE_' + lang | oTranslate }}</span>\n </button>\n</mat-menu>\n", styles: [".o-language-selector .menu-button{margin-left:6px}.o-language-selector .menu-button.o-language-selector-text{padding:0;min-width:40px}\n"], dependencies: [{ kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OLanguageSelectorComponent.prototype, "useFlagIcons", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OLanguageSelectorComponent, decorators: [{ type: Component, args: [{ selector: 'o-language-selector', inputs: DEFAULT_INPUTS_O_LANGUAGE_SELECTOR, outputs: DEFAULT_OUTPUTS_LANGUAGE_SELECTOR, encapsulation: ViewEncapsulation.None, host: { '[class.o-language-selector]': 'true' }, template: "<div fxLayout fxLayoutAlign=\"center center\" fxFill>\n <button type=\"button\" *ngIf=\"useFlagIcons\" class=\"menu-button\" mat-icon-button [matMenuTriggerFor]=\"langMenu\">\n <span class=\"flag-icon {{ getFlagClass(getCurrentCountry()) }}\"></span>\n </button>\n\n <button type=\"button\" *ngIf=\"!useFlagIcons\" class=\"menu-button o-language-selector-text\" mat-button [matMenuTriggerFor]=\"langMenu\">\n <span>{{ 'LOCALE_' + getCurrentLang() | oTranslate }}</span>\n </button>\n</div>\n\n<mat-menu #langMenu=\"matMenu\" yPosition=\"below\" class=\"o-mat-menu\">\n <button type=\"button\" mat-menu-item *ngFor=\"let lang of getAvailableLangs()\" (click)=\"configureI18n(lang)\">\n <span *ngIf=\"useFlagIcons\" class=\"flag-icon {{ getFlagClass(lang) }}\"></span>\n <span>{{ 'LOCALE_' + lang | oTranslate }}</span>\n </button>\n</mat-menu>\n", styles: [".o-language-selector .menu-button{margin-left:6px}.o-language-selector .menu-button.o-language-selector-text{padding:0;min-width:40px}\n"] }] }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { useFlagIcons: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9sYW5ndWFnZS1zZWxlY3Rvci9vLWxhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xhbmd1YWdlLXNlbGVjdG9yL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDakYsT0FBTyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFFM0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7SUFDaEQsOEJBQThCO0NBQy9CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRztJQUMvQyxVQUFVO0NBQ1gsQ0FBQztBQWNGLE1BQU0sT0FBTywwQkFBMEI7SUFXckMsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVJ4QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFPMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM3RSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pELE9BQU8sWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7d0hBeENVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDJOQzNCdkMsZzJCQWdCQTtBRGFFO0lBQUMscUJBQXFCLEVBQUU7O2dFQUNNOzRGQUhuQiwwQkFBMEI7a0JBWnRDLFNBQVM7K0JBQ0UscUJBQXFCLFVBQ3ZCLGtDQUFrQyxXQUNqQyxpQ0FBaUMsaUJBRzNCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osNkJBQTZCLEVBQUUsTUFBTTtxQkFDdEM7K0ZBTUQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgTG9jYWxlQ29kZSBmcm9tICcuLi8uLi91dGlsL2xvY2FsZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0xBTkdVQUdFX1NFTEVDVE9SID0gW1xuICAndXNlRmxhZ0ljb25zOiB1c2UtZmxhZy1pY29ucydcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfTEFOR1VBR0VfU0VMRUNUT1IgPSBbXG4gICdvbkNoYW5nZSdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGFuZ3VhZ2Utc2VsZWN0b3InLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fTEFOR1VBR0VfU0VMRUNUT1IsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19MQU5HVUFHRV9TRUxFQ1RPUixcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWxhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tbGFuZ3VhZ2Utc2VsZWN0b3JdJzogJ3RydWUnXG4gIH1cbn0pXG5cbmV4cG9ydCBjbGFzcyBPTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCB7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVzZUZsYWdJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIGFwcENvbmZpZzogQXBwQ29uZmlnO1xuICBwcm90ZWN0ZWQgYXZhaWxhYmxlTGFuZ3M6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5hcHBDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChBcHBDb25maWcpO1xuICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3MgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWd1cmF0aW9uKCkuYXBwbGljYXRpb25Mb2NhbGVzO1xuICB9XG5cbiAgZ2V0RmxhZ0NsYXNzKGxhbmc6IHN0cmluZykge1xuICAgIGxldCBmbGFnTmFtZSA9IExvY2FsZUNvZGUuZ2V0Q291bnRyeUNvZGUobGFuZyk7XG4gICAgZmxhZ05hbWUgPSAoZmxhZ05hbWUgIT09ICdlbicpID8gZmxhZ05hbWUgOiAnZ2InO1xuICAgIHJldHVybiAnZmxhZy1pY29uLScgKyBmbGFnTmFtZTtcbiAgfVxuXG4gIGdldEF2YWlsYWJsZUxhbmdzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVMYW5ncztcbiAgfVxuXG4gIGNvbmZpZ3VyZUkxOG4obGFuZzogYW55KSB7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZSAmJiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0Q3VycmVudExhbmcoKSAhPT0gbGFuZykge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdChsYW5nKTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJyZW50TGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0Q3VycmVudExhbmcoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRDb3VudHJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExvY2FsZUNvZGUuZ2V0Q291bnRyeUNvZGUodGhpcy5nZXRDdXJyZW50TGFuZygpKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0IGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGaWxsPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInVzZUZsYWdJY29uc1wiIGNsYXNzPVwibWVudS1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxhbmdNZW51XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmbGFnLWljb24ge3sgZ2V0RmxhZ0NsYXNzKGdldEN1cnJlbnRDb3VudHJ5KCkpIH19XCI+PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiF1c2VGbGFnSWNvbnNcIiBjbGFzcz1cIm1lbnUtYnV0dG9uIG8tbGFuZ3VhZ2Utc2VsZWN0b3ItdGV4dFwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxhbmdNZW51XCI+XG4gICAgPHNwYW4+e3sgJ0xPQ0FMRV8nICsgZ2V0Q3VycmVudExhbmcoKSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxtYXQtbWVudSAjbGFuZ01lbnU9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cIm8tbWF0LW1lbnVcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgbGFuZyBvZiBnZXRBdmFpbGFibGVMYW5ncygpXCIgKGNsaWNrKT1cImNvbmZpZ3VyZUkxOG4obGFuZylcIj5cbiAgICA8c3BhbiAqbmdJZj1cInVzZUZsYWdJY29uc1wiIGNsYXNzPVwiZmxhZy1pY29uIHt7IGdldEZsYWdDbGFzcyhsYW5nKSB9fVwiPjwvc3Bhbj5cbiAgICA8c3Bhbj57eyAnTE9DQUxFXycgKyBsYW5nIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuIl19