@odx/angular 5.7.3 → 6.0.0
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.
- package/CHANGELOG.md +16 -0
- package/cdk/connected-overlay/lib/connected-overlay.component.d.ts +2 -4
- package/components/calendar/lib/calendar.config.d.ts +24 -93
- package/components/calendar/lib/directives/calendar-cell.directive.d.ts +0 -9
- package/components/calendar/lib/directives/calendar-view.directive.d.ts +0 -9
- package/components/calendar/lib/pipes/date-label.pipe.d.ts +7 -21
- package/components/calendar/lib/utils/get-A11y-label.d.ts +1 -2
- package/esm2022/cdk/connected-overlay/lib/connected-overlay.component.mjs +2 -10
- package/esm2022/components/calendar/lib/calendar.config.mjs +1 -12
- package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +3 -3
- package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +3 -3
- package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +3 -3
- package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +2 -2
- package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +22 -9
- package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +10 -8
- package/esm2022/internal/lib/helpers/fast-equals.mjs +3 -0
- package/esm2022/internal/lib/helpers/index.mjs +2 -1
- package/esm2022/localization/lib/localization.config.mjs +3 -5
- package/esm2022/localization/lib/localization.logger.mjs +3 -0
- package/esm2022/localization/lib/localization.service.mjs +20 -29
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -9
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
- package/fesm2022/odx-angular-components-calendar.mjs +39 -34
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs +4 -1
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs +24 -32
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/internal/lib/helpers/fast-equals.d.ts +1 -0
- package/internal/lib/helpers/index.d.ts +1 -0
- package/localization/lib/localization.config.d.ts +0 -2
- package/localization/lib/localization.logger.d.ts +3 -0
- package/localization/lib/localization.service.d.ts +3 -7
- package/package.json +8 -7
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { provideHttpClient, withInterceptors } from '@angular/common/http';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { makeEnvironmentProviders, APP_INITIALIZER, inject, Injector, runInInjectionContext, Injectable } from '@angular/core';
|
|
4
|
-
import {
|
|
5
|
-
import { BehaviorSubject, filter, distinctUntilChanged, shareReplay, firstValueFrom, isObservable, from, of, take, switchMap } from 'rxjs';
|
|
4
|
+
import { createConfigTokens, matchUrl } from '@odx/angular/utils';
|
|
5
|
+
import { BehaviorSubject, filter, map, distinctUntilChanged, shareReplay, firstValueFrom, isObservable, from, of, take, switchMap } from 'rxjs';
|
|
6
|
+
import { Logger } from '@odx/angular/internal';
|
|
6
7
|
import { WindowRef } from '@odx/angular';
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
-
const DEFAULT_AVAILABLE_LANGUAGES = Array.from(new Set(DEFAULT_AVAILABLE_LOCALES.map(getLanguageCode)));
|
|
9
|
+
const DEFAULT_AVAILABLE_LANGUAGES = ['en-US', 'en-GB', 'en', 'de-DE', 'de', 'es-ES', 'es', 'fr-FR', 'fr-CA', 'fr'];
|
|
10
10
|
const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens('Localization', '@odx/angular/internal/translate', {
|
|
11
11
|
availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,
|
|
12
|
-
availableLocales: DEFAULT_AVAILABLE_LOCALES,
|
|
13
12
|
});
|
|
14
13
|
function provideLocalization(config, ...features) {
|
|
15
14
|
return makeEnvironmentProviders([
|
|
@@ -24,49 +23,42 @@ function provideLocalization(config, ...features) {
|
|
|
24
23
|
]);
|
|
25
24
|
}
|
|
26
25
|
|
|
26
|
+
var logger = new Logger('@odx/angular/localization');
|
|
27
|
+
|
|
27
28
|
class LocalizationService {
|
|
28
29
|
constructor() {
|
|
29
|
-
this.injector = inject(Injector);
|
|
30
30
|
this.localizationConfig = injectLocalizationConfig();
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
33
|
-
this.activeLanguage$ = this.
|
|
31
|
+
this.injector = inject(Injector);
|
|
32
|
+
this.localeState$ = new BehaviorSubject(new Intl.Locale(this.localizationConfig.availableLanguages[0]));
|
|
33
|
+
this.activeLanguage$ = this.localeState$.pipe(filter(Boolean), map((x) => x.baseName), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
34
34
|
this.availableLanguages = this.localizationConfig.availableLanguages;
|
|
35
35
|
this.defaultLanguage = this.availableLanguages[0];
|
|
36
|
-
this.availableLocales = this.localizationConfig.availableLocales;
|
|
37
|
-
this.defaultLocale = this.availableLocales[0];
|
|
38
36
|
}
|
|
39
37
|
getActiveLanguage() {
|
|
40
|
-
return this.
|
|
38
|
+
return this.localeState$.getValue()?.baseName ?? new Intl.Locale(this.defaultLanguage).baseName; // returns full locale name e.g. 'en-US' or just 'en' if no region info is attached
|
|
39
|
+
}
|
|
40
|
+
getActiveLanguageSubtag() {
|
|
41
|
+
return this.localeState$.getValue()?.language ?? new Intl.Locale(this.defaultLanguage).language; // returns two digits language subtag, e.g. 'en', 'fr'
|
|
41
42
|
}
|
|
42
43
|
setActiveLanguage(language) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
try {
|
|
45
|
+
const locale = new Intl.Locale(language);
|
|
46
|
+
if (this.availableLanguages.includes(locale.baseName) || this.availableLanguages.includes(locale.language)) {
|
|
47
|
+
this.localeState$.next(locale);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw new Error(`Unrecognizable language '${language}'. Make sure it's a part of availableLanguages inside LocalizationService config.`);
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.activeLanguage$$.next(languageCode);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
this.activeLanguage$$.next(this.defaultLanguage);
|
|
53
|
-
}
|
|
54
|
-
getActiveLocale() {
|
|
55
|
-
return this.activeLocale$$.getValue() ?? this.defaultLocale;
|
|
56
|
-
}
|
|
57
|
-
setActiveLocale(locale) {
|
|
58
|
-
if (this.availableLocales.includes(locale)) {
|
|
59
|
-
this.activeLocale$$.next(locale);
|
|
60
|
-
return;
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.error(error);
|
|
61
55
|
}
|
|
62
|
-
this.activeLocale$$.next(this.defaultLocale);
|
|
63
56
|
}
|
|
64
57
|
async loadActiveLanguage() {
|
|
65
58
|
return runInInjectionContext(this.injector, async () => {
|
|
66
59
|
const activeLanguageLoader$ = this.createActiveLanguageLoader$();
|
|
67
60
|
const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
|
|
68
61
|
this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
|
|
69
|
-
this.setActiveLocale(activeLanguage ?? this.defaultLocale);
|
|
70
62
|
});
|
|
71
63
|
}
|
|
72
64
|
createActiveLanguageLoader$() {
|
|
@@ -133,5 +125,5 @@ const browserLanguageLoader = async () => {
|
|
|
133
125
|
* Generated bundle index. Do not edit.
|
|
134
126
|
*/
|
|
135
127
|
|
|
136
|
-
export { DEFAULT_AVAILABLE_LANGUAGES,
|
|
128
|
+
export { DEFAULT_AVAILABLE_LANGUAGES, HTTP_LANGUAGE_HEADER, HTTP_LANGUAGE_QUERY, LocalizationConfig, LocalizationDefaultConfig, LocalizationService, browserLanguageLoader, httpLanguageHeaderInterceptor, injectLocalizationConfig, makeLocalizationFeature, provideLocalization, provideLocalizationConfig, withHttpLanguageHeader, withHttpLanguageQueryParam, withHttpLanguageQueryParamInterceptor };
|
|
137
129
|
//# sourceMappingURL=odx-angular-localization.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-localization.mjs","sources":["../../../../libs/angular/localization/src/lib/localization.config.ts","../../../../libs/angular/localization/src/lib/localization.service.ts","../../../../libs/angular/localization/src/lib/models/localization-feature.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-header.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-query-param.ts","../../../../libs/angular/localization/src/lib/loaders/browser-language-loader.ts","../../../../libs/angular/localization/src/odx-angular-localization.ts"],"sourcesContent":["import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { createConfigTokens, getLanguageCode } from '@odx/angular/utils';\nimport { LocalizationService } from './localization.service';\nimport { LanguageLoaderFn, LocalizationFeature } from './models';\n\nexport const DEFAULT_AVAILABLE_LOCALES = ['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'fr-CA'];\nexport const DEFAULT_AVAILABLE_LANGUAGES = Array.from(new Set(DEFAULT_AVAILABLE_LOCALES.map(getLanguageCode)));\n\nexport interface LocalizationConfig {\n activeLanguageLoader?: LanguageLoaderFn;\n availableLanguages: string[];\n availableLocales: string[];\n}\n\nexport const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens(\n 'Localization',\n '@odx/angular/internal/translate',\n {\n availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,\n availableLocales: DEFAULT_AVAILABLE_LOCALES,\n } as LocalizationConfig,\n);\n\nexport function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideLocalizationConfig(config),\n {\n provide: APP_INITIALIZER,\n useFactory: (localizationService: LocalizationService) => () => localizationService.loadActiveLanguage(),\n deps: [LocalizationService],\n multi: true,\n },\n features,\n ]);\n}\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { getLanguageCode } from '@odx/angular/utils';\nimport { BehaviorSubject, Observable, distinctUntilChanged, filter, firstValueFrom, from, isObservable, of, shareReplay } from 'rxjs';\nimport { injectLocalizationConfig } from './localization.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n private readonly injector = inject(Injector);\n private readonly localizationConfig = injectLocalizationConfig();\n private readonly activeLanguage$$ = new BehaviorSubject<string | undefined>(undefined);\n private readonly activeLocale$$ = new BehaviorSubject<string | undefined>(undefined);\n\n public readonly activeLanguage$ = this.activeLanguage$$.pipe(filter(Boolean), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n public readonly availableLanguages = this.localizationConfig.availableLanguages;\n public readonly defaultLanguage = this.availableLanguages[0];\n public readonly availableLocales = this.localizationConfig.availableLocales;\n public readonly defaultLocale = this.availableLocales[0];\n\n public getActiveLanguage(): string {\n return this.activeLanguage$$.getValue() ?? this.defaultLanguage;\n }\n\n public setActiveLanguage(language: string): void {\n if (this.availableLanguages.includes(language)) {\n this.activeLanguage$$.next(language);\n return;\n }\n const languageCode = getLanguageCode(language);\n if (this.availableLanguages.includes(languageCode)) {\n this.activeLanguage$$.next(languageCode);\n return;\n }\n this.activeLanguage$$.next(this.defaultLanguage);\n }\n\n public getActiveLocale(): string {\n return this.activeLocale$$.getValue() ?? this.defaultLocale;\n }\n\n public setActiveLocale(locale: string): void {\n if (this.availableLocales.includes(locale)) {\n this.activeLocale$$.next(locale);\n return;\n }\n this.activeLocale$$.next(this.defaultLocale);\n }\n\n public async loadActiveLanguage(): Promise<void> {\n return runInInjectionContext(this.injector, async () => {\n const activeLanguageLoader$ = this.createActiveLanguageLoader$();\n const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);\n this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);\n this.setActiveLocale(activeLanguage ?? this.defaultLocale);\n });\n }\n\n private createActiveLanguageLoader$(): Observable<string | undefined> {\n const language = this.localizationConfig.activeLanguageLoader?.();\n if (isObservable(language)) {\n return language;\n }\n if (language instanceof Promise) {\n return from(language);\n }\n return of(language);\n }\n}\n","import { EnvironmentProviders, Provider } from '@angular/core';\n\nexport type LocalizationFeature = EnvironmentProviders & { ɵodxBrand: '@odx/angular/localization::LocalizationFeature' };\n\nexport function makeLocalizationFeature(provider: Provider[] | EnvironmentProviders): LocalizationFeature {\n return provider as never as LocalizationFeature;\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_HEADER = 'Accept-Language';\n\nexport interface HttpLanguageHeaderInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n headerName?: string;\n}\n\nexport function httpLanguageHeaderInterceptor({ allowedUrls, headerName }: HttpLanguageHeaderInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setHeaders: { [headerName ?? HTTP_LANGUAGE_HEADER]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageHeader(config: HttpLanguageHeaderInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([httpLanguageHeaderInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_QUERY = 'language';\n\nexport interface HttpLanguageQueryParamInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n queryParamName?: string;\n}\n\nexport function withHttpLanguageQueryParamInterceptor({ allowedUrls, queryParamName }: HttpLanguageQueryParamInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setParams: { [queryParamName ?? HTTP_LANGUAGE_QUERY]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageQueryParam(config: HttpLanguageQueryParamInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([withHttpLanguageQueryParamInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { LanguageLoaderFn } from '../models';\n\nexport const browserLanguageLoader: LanguageLoaderFn = async () => {\n return inject(WindowRef).getLanguage();\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-localization.mjs","sources":["../../../../libs/angular/localization/src/lib/localization.config.ts","../../../../libs/angular/localization/src/lib/localization.logger.ts","../../../../libs/angular/localization/src/lib/localization.service.ts","../../../../libs/angular/localization/src/lib/models/localization-feature.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-header.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-query-param.ts","../../../../libs/angular/localization/src/lib/loaders/browser-language-loader.ts","../../../../libs/angular/localization/src/odx-angular-localization.ts"],"sourcesContent":["import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { createConfigTokens } from '@odx/angular/utils';\nimport { LocalizationService } from './localization.service';\nimport { LanguageLoaderFn, LocalizationFeature } from './models';\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en-US', 'en-GB', 'en', 'de-DE', 'de', 'es-ES', 'es', 'fr-FR', 'fr-CA', 'fr'];\nexport interface LocalizationConfig {\n activeLanguageLoader?: LanguageLoaderFn;\n availableLanguages: string[];\n}\n\nexport const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens(\n 'Localization',\n '@odx/angular/internal/translate',\n {\n availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,\n } as LocalizationConfig,\n);\n\nexport function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideLocalizationConfig(config),\n {\n provide: APP_INITIALIZER,\n useFactory: (localizationService: LocalizationService) => () => localizationService.loadActiveLanguage(),\n deps: [LocalizationService],\n multi: true,\n },\n features,\n ]);\n}\n","import { Logger } from '@odx/angular/internal';\n\nexport default new Logger('@odx/angular/localization');\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { BehaviorSubject, Observable, distinctUntilChanged, filter, firstValueFrom, from, isObservable, map, of, shareReplay } from 'rxjs';\nimport { injectLocalizationConfig } from './localization.config';\nimport logger from './localization.logger';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n private readonly localizationConfig = injectLocalizationConfig();\n private readonly injector = inject(Injector);\n private readonly localeState$ = new BehaviorSubject<Intl.Locale | undefined>(new Intl.Locale(this.localizationConfig.availableLanguages[0]));\n\n public readonly activeLanguage$ = this.localeState$.pipe(\n filter(Boolean),\n map((x) => x.baseName),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n public readonly availableLanguages = this.localizationConfig.availableLanguages;\n public readonly defaultLanguage = this.availableLanguages[0];\n\n public getActiveLanguage(): string {\n return this.localeState$.getValue()?.baseName ?? new Intl.Locale(this.defaultLanguage).baseName; // returns full locale name e.g. 'en-US' or just 'en' if no region info is attached\n }\n\n public getActiveLanguageSubtag(): string {\n return this.localeState$.getValue()?.language ?? new Intl.Locale(this.defaultLanguage).language; // returns two digits language subtag, e.g. 'en', 'fr'\n }\n\n public setActiveLanguage(language: string): void {\n try {\n const locale = new Intl.Locale(language);\n if (this.availableLanguages.includes(locale.baseName) || this.availableLanguages.includes(locale.language)) {\n this.localeState$.next(locale);\n } else {\n throw new Error(`Unrecognizable language '${language}'. Make sure it's a part of availableLanguages inside LocalizationService config.`);\n }\n } catch (error) {\n logger.error(error);\n }\n }\n\n public async loadActiveLanguage(): Promise<void> {\n return runInInjectionContext(this.injector, async () => {\n const activeLanguageLoader$ = this.createActiveLanguageLoader$();\n const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);\n this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);\n });\n }\n\n private createActiveLanguageLoader$(): Observable<string | undefined> {\n const language = this.localizationConfig.activeLanguageLoader?.();\n if (isObservable(language)) {\n return language;\n }\n if (language instanceof Promise) {\n return from(language);\n }\n return of(language);\n }\n}\n","import { EnvironmentProviders, Provider } from '@angular/core';\n\nexport type LocalizationFeature = EnvironmentProviders & { ɵodxBrand: '@odx/angular/localization::LocalizationFeature' };\n\nexport function makeLocalizationFeature(provider: Provider[] | EnvironmentProviders): LocalizationFeature {\n return provider as never as LocalizationFeature;\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_HEADER = 'Accept-Language';\n\nexport interface HttpLanguageHeaderInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n headerName?: string;\n}\n\nexport function httpLanguageHeaderInterceptor({ allowedUrls, headerName }: HttpLanguageHeaderInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setHeaders: { [headerName ?? HTTP_LANGUAGE_HEADER]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageHeader(config: HttpLanguageHeaderInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([httpLanguageHeaderInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_QUERY = 'language';\n\nexport interface HttpLanguageQueryParamInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n queryParamName?: string;\n}\n\nexport function withHttpLanguageQueryParamInterceptor({ allowedUrls, queryParamName }: HttpLanguageQueryParamInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setParams: { [queryParamName ?? HTTP_LANGUAGE_QUERY]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageQueryParam(config: HttpLanguageQueryParamInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([withHttpLanguageQueryParamInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { LanguageLoaderFn } from '../models';\n\nexport const browserLanguageLoader: LanguageLoaderFn = async () => {\n return inject(WindowRef).getLanguage();\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fastDeepEqual: (obj1: unknown, obj2: unknown) => boolean;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { EnvironmentProviders } from '@angular/core';
|
|
2
2
|
import { LanguageLoaderFn, LocalizationFeature } from './models';
|
|
3
|
-
export declare const DEFAULT_AVAILABLE_LOCALES: string[];
|
|
4
3
|
export declare const DEFAULT_AVAILABLE_LANGUAGES: string[];
|
|
5
4
|
export interface LocalizationConfig {
|
|
6
5
|
activeLanguageLoader?: LanguageLoaderFn;
|
|
7
6
|
availableLanguages: string[];
|
|
8
|
-
availableLocales: string[];
|
|
9
7
|
}
|
|
10
8
|
export declare const LocalizationConfig: import("@angular/core").InjectionToken<Partial<LocalizationConfig>>, LocalizationDefaultConfig: LocalizationConfig, injectLocalizationConfig: () => LocalizationConfig, provideLocalizationConfig: <D extends import("@odx/angular/utils").ConfigDependencies<unknown> = import("@odx/angular/utils").ConfigDependencies<Partial<LocalizationConfig>>>(config: import("@odx/angular/utils").ConfigProvider<Partial<LocalizationConfig>, D>) => import("@angular/core").ValueProvider | import("@angular/core").FactoryProvider;
|
|
11
9
|
export declare function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders;
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class LocalizationService {
|
|
4
|
-
private readonly injector;
|
|
5
4
|
private readonly localizationConfig;
|
|
6
|
-
private readonly
|
|
7
|
-
private readonly
|
|
5
|
+
private readonly injector;
|
|
6
|
+
private readonly localeState$;
|
|
8
7
|
readonly activeLanguage$: Observable<string>;
|
|
9
8
|
readonly availableLanguages: string[];
|
|
10
9
|
readonly defaultLanguage: string;
|
|
11
|
-
readonly availableLocales: string[];
|
|
12
|
-
readonly defaultLocale: string;
|
|
13
10
|
getActiveLanguage(): string;
|
|
11
|
+
getActiveLanguageSubtag(): string;
|
|
14
12
|
setActiveLanguage(language: string): void;
|
|
15
|
-
getActiveLocale(): string;
|
|
16
|
-
setActiveLocale(locale: string): void;
|
|
17
13
|
loadActiveLanguage(): Promise<void>;
|
|
18
14
|
private createActiveLanguageLoader$;
|
|
19
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizationService, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odx/angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"author": "Drägerwerk AG & Co.KGaA",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -9,21 +9,22 @@
|
|
|
9
9
|
"@angular/common": ">=16.2.0",
|
|
10
10
|
"@angular/core": ">=16.2.0",
|
|
11
11
|
"@angular/forms": ">=16.2.0",
|
|
12
|
-
"@angular/router": ">=16.2.0",
|
|
13
12
|
"@angular/platform-browser": ">=16.2.0",
|
|
13
|
+
"@angular/router": ">=16.2.0",
|
|
14
14
|
"@odx/icons": "*",
|
|
15
15
|
"@odx/ui": ">=2.0.0",
|
|
16
|
-
"rxjs": ">=7.5.0",
|
|
17
16
|
"chart.js": "^4.4.0",
|
|
18
|
-
"ng2-charts": "^5.0.0"
|
|
17
|
+
"ng2-charts": "^5.0.0",
|
|
18
|
+
"rxjs": ">=7.5.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@floating-ui/dom": "^1.5.0",
|
|
22
22
|
"@ngrx/component": "^16.3.0",
|
|
23
|
-
"deepmerge-ts": "^5.1.0",
|
|
24
23
|
"date-fns": "^3.3.0",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
24
|
+
"deepmerge-ts": "^5.1.0",
|
|
25
|
+
"fast-equals": "5.0.1",
|
|
26
|
+
"ngx-mask": "^16.2.6",
|
|
27
|
+
"tslib": "^2.5.0"
|
|
27
28
|
},
|
|
28
29
|
"peerDependenciesMeta": {
|
|
29
30
|
"chart.js": {
|