UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

43 lines 5.74 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { LocalStorage } from '../utils'; import * as i0 from "@angular/core"; import * as i1 from "./logger.service"; /** * Le service est chargé de maintenir le code langue de l'application et de signaler le changement de langue aux observateurs. */ export class LangService { static { this.DEF_LANG = 'fr'; } constructor(logger) { this.logger = logger; /** Par défaut, le code de la langue est stocké dans le localStorage. */ this.hasLocalStorage = true; /** Nom par défaut du local storage. */ this.localStorageName = 'lang'; this.langChange = new BehaviorSubject(LangService.DEF_LANG); this.langChange$ = this.langChange.asObservable(); if (this.hasLocalStorage) { const lang = LocalStorage.get(this.localStorageName); if (lang) this.lang = LocalStorage.get(this.localStorageName); } } get lang() { return this.langChange.value; } set lang(code) { if (!code || code === this.lang) return; this.logger.info(`Changement de langue courante: '${code}'`); if (this.hasLocalStorage) LocalStorage.set(this.localStorageName, code); this.langChange.next(code); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LangService, deps: [{ token: i1.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LangService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LangService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.LoggerService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9sYW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUd4Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxXQUFXO2FBQ0UsYUFBUSxHQUFHLElBQUksQUFBUCxDQUFRO0lBYXhDLFlBQW9CLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFOekMseUVBQXlFO1FBQ2pFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLHVDQUF1QztRQUMvQixxQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFHaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckQsSUFBSSxJQUFJO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQWxDVSxXQUFXO21IQUFYLFdBQVcsY0FERSxNQUFNOzs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBMZSBzZXJ2aWNlIGVzdCBjaGFyZ8OpIGRlIG1haW50ZW5pciBsZSBjb2RlIGxhbmd1ZSBkZSBsJ2FwcGxpY2F0aW9uIGV0IGRlIHNpZ25hbGVyIGxlIGNoYW5nZW1lbnQgZGUgbGFuZ3VlIGF1eCBvYnNlcnZhdGV1cnMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGFuZ1NlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZfTEFORyA9ICdmcic7XG5cbiAgLyoqIE9ic2VydmFibGUgY2hhbmdlbWVudCBkZSBsYSBsYW5ndWUuICovXG4gIGxhbmdDaGFuZ2UkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBsYW5nQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPjtcblxuICAvKiogUGFyIGTDqWZhdXQsIGxlIGNvZGUgZGUgbGEgbGFuZ3VlIGVzdCBzdG9ja8OpIGRhbnMgbGUgbG9jYWxTdG9yYWdlLiAgKi9cbiAgcHJpdmF0ZSBoYXNMb2NhbFN0b3JhZ2UgPSB0cnVlO1xuXG4gIC8qKiBOb20gcGFyIGTDqWZhdXQgZHUgbG9jYWwgc3RvcmFnZS4gKi9cbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VOYW1lID0gJ2xhbmcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5sYW5nQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KExhbmdTZXJ2aWNlLkRFRl9MQU5HKTtcbiAgICB0aGlzLmxhbmdDaGFuZ2UkID0gdGhpcy5sYW5nQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgaWYgKHRoaXMuaGFzTG9jYWxTdG9yYWdlKSB7XG4gICAgICBjb25zdCBsYW5nID0gTG9jYWxTdG9yYWdlLmdldCh0aGlzLmxvY2FsU3RvcmFnZU5hbWUpO1xuICAgICAgaWYgKGxhbmcpIHRoaXMubGFuZyA9IDxzdHJpbmc+TG9jYWxTdG9yYWdlLmdldCh0aGlzLmxvY2FsU3RvcmFnZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsYW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZS52YWx1ZTtcbiAgfVxuXG4gIHNldCBsYW5nKGNvZGU6IHN0cmluZykge1xuICAgIGlmICghY29kZSB8fCBjb2RlID09PSB0aGlzLmxhbmcpIHJldHVybjtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKGBDaGFuZ2VtZW50IGRlIGxhbmd1ZSBjb3VyYW50ZTogJyR7Y29kZX0nYCk7XG5cbiAgICBpZiAodGhpcy5oYXNMb2NhbFN0b3JhZ2UpIExvY2FsU3RvcmFnZS5zZXQodGhpcy5sb2NhbFN0b3JhZ2VOYW1lLCBjb2RlKTtcbiAgICB0aGlzLmxhbmdDaGFuZ2UubmV4dChjb2RlKTtcbiAgfVxufVxuIl19