From 82d6a560612ec406d94315274d9114417b6caae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Balet?= Date: Mon, 4 Aug 2025 17:56:33 +0200 Subject: [PATCH] feat(service): hideBeforeDisplay --- .../ngx-translate/src/lib/translate.pipe.ts | 4 ++ .../src/lib/translate.providers.ts | 2 + .../src/lib/translate.service.ts | 6 +++ .../src/tests/translate.providers.spec.ts | 42 ++++++++++--------- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/projects/ngx-translate/src/lib/translate.pipe.ts b/projects/ngx-translate/src/lib/translate.pipe.ts index 5e960bf7..82e27253 100644 --- a/projects/ngx-translate/src/lib/translate.pipe.ts +++ b/projects/ngx-translate/src/lib/translate.pipe.ts @@ -134,6 +134,10 @@ export class TranslatePipe implements PipeTransform, OnDestroy { }); } + if (this.translate.hideBeforeDisplay && this.value === query) { + return ""; + } + return this.value; } diff --git a/projects/ngx-translate/src/lib/translate.providers.ts b/projects/ngx-translate/src/lib/translate.providers.ts index ba2b9e47..1715110e 100644 --- a/projects/ngx-translate/src/lib/translate.providers.ts +++ b/projects/ngx-translate/src/lib/translate.providers.ts @@ -28,6 +28,7 @@ export interface ChildTranslateServiceConfig extends Partial export interface RootTranslateServiceConfig extends ChildTranslateServiceConfig { fallbackLang?: Language; lang?: Language; + hideBeforeDisplay?: boolean; /* @deprecated use `fallbackLang` */ useDefaultLang?: boolean; @@ -109,6 +110,7 @@ export function defaultProviders( fallbackLang: config.fallbackLang ?? null, lang: config.lang, extend: config.extend ?? false, + hideBeforeDisplay: config.hideBeforeDisplay ?? false, }; providers.push({ diff --git a/projects/ngx-translate/src/lib/translate.service.ts b/projects/ngx-translate/src/lib/translate.service.ts index 0931544a..a46077d4 100644 --- a/projects/ngx-translate/src/lib/translate.service.ts +++ b/projects/ngx-translate/src/lib/translate.service.ts @@ -18,6 +18,7 @@ export interface TranslateServiceConfig { lang?: Language; fallbackLang?: Language | null; extend: boolean; + hideBeforeDisplay?: boolean; } export const TRANSLATE_SERVICE_CONFIG = new InjectionToken( @@ -186,6 +187,7 @@ export class TranslateService implements ITranslateService { private store: TranslateStore = inject(TranslateStore); private readonly extend: boolean = false; + public readonly hideBeforeDisplay: boolean = false; /** * An Observable to listen to translation change events @@ -245,6 +247,10 @@ export class TranslateService implements ITranslateService { if (config.extend) { this.extend = true; } + + if (config.hideBeforeDisplay) { + this.hideBeforeDisplay = true; + } } /** diff --git a/projects/ngx-translate/src/tests/translate.providers.spec.ts b/projects/ngx-translate/src/tests/translate.providers.spec.ts index 3e9673e1..b5d358e5 100644 --- a/projects/ngx-translate/src/tests/translate.providers.spec.ts +++ b/projects/ngx-translate/src/tests/translate.providers.spec.ts @@ -1,36 +1,36 @@ import { TestBed } from "@angular/core/testing"; +import { Observable, of } from "rxjs"; import { - provideTranslateService, + ChildTranslateServiceConfig, + defaultProviders, provideChildTranslateService, - provideTranslateLoader, + provideMissingTranslationHandler, provideTranslateCompiler, + provideTranslateLoader, provideTranslateParser, - provideMissingTranslationHandler, - defaultProviders, + provideTranslateService, RootTranslateServiceConfig, - ChildTranslateServiceConfig, } from "../lib/translate.providers"; -import { Observable, of } from "rxjs"; import { - TranslateService, - TRANSLATE_SERVICE_CONFIG, - TranslationObject, - InterpolationParameters, - InterpolatableTranslationObject, -} from "../lib/translate.service"; -import { TranslateLoader, TranslateNoOpLoader } from "../lib/translate.loader"; + DefaultMissingTranslationHandler, + MissingTranslationHandler, + MissingTranslationHandlerParams, +} from "../lib/missing-translation-handler"; import { TranslateCompiler, TranslateNoOpCompiler } from "../lib/translate.compiler"; +import { TranslateLoader, TranslateNoOpLoader } from "../lib/translate.loader"; import { - TranslateParser, - TranslateDefaultParser, InterpolateFunction, + TranslateDefaultParser, + TranslateParser, } from "../lib/translate.parser"; import { - MissingTranslationHandler, - DefaultMissingTranslationHandler, - MissingTranslationHandlerParams, -} from "../lib/missing-translation-handler"; + InterpolatableTranslationObject, + InterpolationParameters, + TRANSLATE_SERVICE_CONFIG, + TranslateService, + TranslationObject, +} from "../lib/translate.service"; import { TranslateStore } from "../lib/translate.store"; class TestTranslateLoader extends TranslateLoader { @@ -107,6 +107,7 @@ describe("Translate Providers", () => { fallbackLang: null, lang: undefined, extend: true, + hideBeforeDisplay: false, }, }, { @@ -138,6 +139,7 @@ describe("Translate Providers", () => { fallbackLang: null, lang: undefined, extend: false, + hideBeforeDisplay: false, }, }, { @@ -172,6 +174,7 @@ describe("Translate Providers", () => { fallbackLang: null, lang: undefined, extend: false, + hideBeforeDisplay: false, }, }, { @@ -211,6 +214,7 @@ describe("Translate Providers", () => { fallbackLang: null, lang: undefined, extend: true, + hideBeforeDisplay: false, }, }, {