@odx/angular 5.7.0 → 5.7.2
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 +12 -0
- package/components/datepicker/lib/datepicker.component.d.ts +1 -0
- package/components/timepicker/README.md +3 -0
- package/components/timepicker/index.d.ts +7 -0
- package/components/timepicker/lib/components/timepicker-option.component.d.ts +28 -0
- package/components/timepicker/lib/directives/timepicker-input-control.directive.d.ts +44 -0
- package/components/timepicker/lib/timepicker.component.d.ts +82 -0
- package/components/timepicker/lib/timepicker.module.d.ts +10 -0
- package/components/timepicker/lib/timepicker.service.d.ts +57 -0
- package/components/timepicker/lib/timepicker.token.d.ts +9 -0
- package/components/timepicker/lib/utils/generate-time-stamps.d.ts +18 -0
- package/components/timepicker/lib/utils/index.d.ts +2 -0
- package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +22 -0
- package/esm2022/components/datepicker/lib/datepicker.component.mjs +4 -3
- package/esm2022/components/timepicker/index.mjs +8 -0
- package/esm2022/components/timepicker/lib/components/timepicker-option.component.mjs +59 -0
- package/esm2022/components/timepicker/lib/directives/timepicker-input-control.directive.mjs +94 -0
- package/esm2022/components/timepicker/lib/timepicker.component.mjs +213 -0
- package/esm2022/components/timepicker/lib/timepicker.module.mjs +20 -0
- package/esm2022/components/timepicker/lib/timepicker.service.mjs +92 -0
- package/esm2022/components/timepicker/lib/timepicker.token.mjs +9 -0
- package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +52 -0
- package/esm2022/components/timepicker/lib/utils/index.mjs +3 -0
- package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +34 -0
- package/esm2022/components/timepicker/odx-angular-components-timepicker.mjs +5 -0
- package/esm2022/localization/lib/localization.config.mjs +5 -4
- package/esm2022/localization/lib/localization.service.mjs +18 -5
- package/fesm2022/odx-angular-components-datepicker.mjs +3 -2
- package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +548 -0
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -0
- package/fesm2022/odx-angular-localization.mjs +22 -8
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/localization/lib/localization.config.d.ts +2 -0
- package/localization/lib/localization.service.d.ts +5 -1
- package/package.json +7 -1
|
@@ -1,14 +1,15 @@
|
|
|
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 {
|
|
4
|
+
import { getLanguageCode, createConfigTokens, matchUrl } from '@odx/angular/utils';
|
|
5
5
|
import { BehaviorSubject, filter, distinctUntilChanged, shareReplay, firstValueFrom, isObservable, from, of, take, switchMap } from 'rxjs';
|
|
6
6
|
import { WindowRef } from '@odx/angular';
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const DEFAULT_AVAILABLE_LOCALES = ['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'fr-CA'];
|
|
9
|
+
const DEFAULT_AVAILABLE_LANGUAGES = Array.from(new Set(DEFAULT_AVAILABLE_LOCALES.map(getLanguageCode)));
|
|
9
10
|
const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens('Localization', '@odx/angular/internal/translate', {
|
|
10
11
|
availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,
|
|
11
|
-
availableLocales:
|
|
12
|
+
availableLocales: DEFAULT_AVAILABLE_LOCALES,
|
|
12
13
|
});
|
|
13
14
|
function provideLocalization(config, ...features) {
|
|
14
15
|
return makeEnvironmentProviders([
|
|
@@ -27,32 +28,45 @@ class LocalizationService {
|
|
|
27
28
|
constructor() {
|
|
28
29
|
this.injector = inject(Injector);
|
|
29
30
|
this.localizationConfig = injectLocalizationConfig();
|
|
30
|
-
this.availableLanguageSet = new Set(this.localizationConfig.availableLanguages);
|
|
31
31
|
this.activeLanguage$$ = new BehaviorSubject(undefined);
|
|
32
|
+
this.activeLocale$$ = new BehaviorSubject(undefined);
|
|
32
33
|
this.activeLanguage$ = this.activeLanguage$$.pipe(filter(Boolean), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
33
|
-
this.availableLanguages =
|
|
34
|
+
this.availableLanguages = this.localizationConfig.availableLanguages;
|
|
34
35
|
this.defaultLanguage = this.availableLanguages[0];
|
|
36
|
+
this.availableLocales = this.localizationConfig.availableLocales;
|
|
37
|
+
this.defaultLocale = this.availableLocales[0];
|
|
35
38
|
}
|
|
36
39
|
getActiveLanguage() {
|
|
37
40
|
return this.activeLanguage$$.getValue() ?? this.defaultLanguage;
|
|
38
41
|
}
|
|
39
42
|
setActiveLanguage(language) {
|
|
40
|
-
if (this.
|
|
43
|
+
if (this.availableLanguages.includes(language)) {
|
|
41
44
|
this.activeLanguage$$.next(language);
|
|
42
45
|
return;
|
|
43
46
|
}
|
|
44
47
|
const languageCode = getLanguageCode(language);
|
|
45
|
-
if (this.
|
|
48
|
+
if (this.availableLanguages.includes(languageCode)) {
|
|
46
49
|
this.activeLanguage$$.next(languageCode);
|
|
47
50
|
return;
|
|
48
51
|
}
|
|
49
52
|
this.activeLanguage$$.next(this.defaultLanguage);
|
|
50
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;
|
|
61
|
+
}
|
|
62
|
+
this.activeLocale$$.next(this.defaultLocale);
|
|
63
|
+
}
|
|
51
64
|
async loadActiveLanguage() {
|
|
52
65
|
return runInInjectionContext(this.injector, async () => {
|
|
53
66
|
const activeLanguageLoader$ = this.createActiveLanguageLoader$();
|
|
54
67
|
const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
|
|
55
68
|
this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
|
|
69
|
+
this.setActiveLocale(activeLanguage ?? this.defaultLocale);
|
|
56
70
|
});
|
|
57
71
|
}
|
|
58
72
|
createActiveLanguageLoader$() {
|
|
@@ -119,5 +133,5 @@ const browserLanguageLoader = async () => {
|
|
|
119
133
|
* Generated bundle index. Do not edit.
|
|
120
134
|
*/
|
|
121
135
|
|
|
122
|
-
export { DEFAULT_AVAILABLE_LANGUAGES, HTTP_LANGUAGE_HEADER, HTTP_LANGUAGE_QUERY, LocalizationConfig, LocalizationDefaultConfig, LocalizationService, browserLanguageLoader, httpLanguageHeaderInterceptor, injectLocalizationConfig, makeLocalizationFeature, provideLocalization, provideLocalizationConfig, withHttpLanguageHeader, withHttpLanguageQueryParam, withHttpLanguageQueryParamInterceptor };
|
|
136
|
+
export { DEFAULT_AVAILABLE_LANGUAGES, DEFAULT_AVAILABLE_LOCALES, HTTP_LANGUAGE_HEADER, HTTP_LANGUAGE_QUERY, LocalizationConfig, LocalizationDefaultConfig, LocalizationService, browserLanguageLoader, httpLanguageHeaderInterceptor, injectLocalizationConfig, makeLocalizationFeature, provideLocalization, provideLocalizationConfig, withHttpLanguageHeader, withHttpLanguageQueryParam, withHttpLanguageQueryParamInterceptor };
|
|
123
137
|
//# 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 } from '@odx/angular/utils';\nimport { LocalizationService } from './localization.service';\nimport { LanguageLoaderFn, LocalizationFeature } from './models';\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'de', 'es', 'fr', 'ja'];\n\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 availableLocales: 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 { 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 availableLanguageSet = new Set(this.localizationConfig.availableLanguages);\n private readonly activeLanguage$$ = 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 = Array.from(this.availableLanguageSet);\n public readonly defaultLanguage = this.availableLanguages[0];\n\n public getActiveLanguage(): string {\n return this.activeLanguage$$.getValue() ?? this.defaultLanguage;\n }\n\n public setActiveLanguage(language: string): void {\n if (this.availableLanguageSet.has(language)) {\n this.activeLanguage$$.next(language);\n return;\n }\n const languageCode = getLanguageCode(language);\n if (this.availableLanguageSet.has(languageCode)) {\n this.activeLanguage$$.next(languageCode);\n return;\n }\n this.activeLanguage$$.next(this.defaultLanguage);\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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"}
|
|
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,9 +1,11 @@
|
|
|
1
1
|
import { EnvironmentProviders } from '@angular/core';
|
|
2
2
|
import { LanguageLoaderFn, LocalizationFeature } from './models';
|
|
3
|
+
export declare const DEFAULT_AVAILABLE_LOCALES: string[];
|
|
3
4
|
export declare const DEFAULT_AVAILABLE_LANGUAGES: string[];
|
|
4
5
|
export interface LocalizationConfig {
|
|
5
6
|
activeLanguageLoader?: LanguageLoaderFn;
|
|
6
7
|
availableLanguages: string[];
|
|
8
|
+
availableLocales: string[];
|
|
7
9
|
}
|
|
8
10
|
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;
|
|
9
11
|
export declare function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders;
|
|
@@ -3,13 +3,17 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class LocalizationService {
|
|
4
4
|
private readonly injector;
|
|
5
5
|
private readonly localizationConfig;
|
|
6
|
-
private readonly availableLanguageSet;
|
|
7
6
|
private readonly activeLanguage$$;
|
|
7
|
+
private readonly activeLocale$$;
|
|
8
8
|
readonly activeLanguage$: Observable<string>;
|
|
9
9
|
readonly availableLanguages: string[];
|
|
10
10
|
readonly defaultLanguage: string;
|
|
11
|
+
readonly availableLocales: string[];
|
|
12
|
+
readonly defaultLocale: string;
|
|
11
13
|
getActiveLanguage(): string;
|
|
12
14
|
setActiveLanguage(language: string): void;
|
|
15
|
+
getActiveLocale(): string;
|
|
16
|
+
setActiveLocale(locale: string): void;
|
|
13
17
|
loadActiveLanguage(): Promise<void>;
|
|
14
18
|
private createActiveLanguageLoader$;
|
|
15
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizationService, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odx/angular",
|
|
3
|
-
"version": "5.7.
|
|
3
|
+
"version": "5.7.2",
|
|
4
4
|
"author": "Drägerwerk AG & Co.KGaA",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -452,6 +452,12 @@
|
|
|
452
452
|
"esm": "./esm2022/components/table/odx-angular-components-table.mjs",
|
|
453
453
|
"default": "./fesm2022/odx-angular-components-table.mjs"
|
|
454
454
|
},
|
|
455
|
+
"./components/timepicker": {
|
|
456
|
+
"types": "./components/timepicker/index.d.ts",
|
|
457
|
+
"esm2022": "./esm2022/components/timepicker/odx-angular-components-timepicker.mjs",
|
|
458
|
+
"esm": "./esm2022/components/timepicker/odx-angular-components-timepicker.mjs",
|
|
459
|
+
"default": "./fesm2022/odx-angular-components-timepicker.mjs"
|
|
460
|
+
},
|
|
455
461
|
"./components/toast": {
|
|
456
462
|
"types": "./components/toast/index.d.ts",
|
|
457
463
|
"esm2022": "./esm2022/components/toast/odx-angular-components-toast.mjs",
|