@flusys/ng-localization 4.0.0-rc
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/README.md +975 -0
- package/fesm2022/flusys-ng-localization.mjs +3303 -0
- package/fesm2022/flusys-ng-localization.mjs.map +1 -0
- package/package.json +32 -0
- package/types/flusys-ng-localization.d.ts +506 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flusys-ng-localization.mjs","sources":["../../../projects/ng-localization/interfaces/localization-config.interface.ts","../../../projects/ng-localization/constants/localization.constants.ts","../../../projects/ng-localization/constants/messages.ts","../../../projects/ng-localization/services/localization-state.service.ts","../../../projects/ng-localization/services/localization-api.service.ts","../../../projects/ng-localization/services/localization-initializer.service.ts","../../../projects/ng-localization/services/translate.service.ts","../../../projects/ng-localization/services/translation-loader.service.ts","../../../projects/ng-localization/services/language-api.service.ts","../../../projects/ng-localization/services/translation-key-api.service.ts","../../../projects/ng-localization/services/translation-api.service.ts","../../../projects/ng-localization/components/language-selector/language-selector.component.ts","../../../projects/ng-localization/components/language-selector-panel/language-selector-panel.component.ts","../../../projects/ng-localization/providers/localization.providers.ts","../../../projects/ng-localization/pages/routes.ts","../../../projects/ng-localization/pages/localization-container/localization-container.page.ts","../../../projects/ng-localization/pages/language-list/language-list.page.ts","../../../projects/ng-localization/pages/language-form/language-form.page.ts","../../../projects/ng-localization/pages/translation-key-list/translation-key-list.page.ts","../../../projects/ng-localization/pages/translation-key-form/translation-key-form.page.ts","../../../projects/ng-localization/pages/translation-list/translation-list.page.ts","../../../projects/ng-localization/public-api.ts","../../../projects/ng-localization/flusys-ng-localization.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport type LocalizationLoadStrategy = 'all' | 'modules';\n\n/** Localization system configuration */\nexport interface ILocalizationConfig {\n /** Default language code (e.g., 'en', 'ar') */\n defaultLanguageCode: string;\n /** Translation loading strategy (default: 'modules') */\n loadStrategy?: LocalizationLoadStrategy;\n /** Modules to load at app initialization (default: []) */\n initialModules?: string[];\n /** Show language selector in layout (default: false) */\n enableLayoutSelector?: boolean;\n}\n\nexport const LOCALIZATION_CONFIG = new InjectionToken<ILocalizationConfig>('LOCALIZATION_CONFIG');\n\n/** Get localization config with sensible defaults applied */\nexport function getLocalizationConfig(overrides?: Partial<ILocalizationConfig>): ILocalizationConfig {\n const defaults: ILocalizationConfig = {\n defaultLanguageCode: 'en',\n loadStrategy: 'modules',\n initialModules: [],\n enableLayoutSelector: false,\n };\n\n return {\n ...defaults,\n ...overrides,\n defaultLanguageCode: overrides?.defaultLanguageCode || defaults.defaultLanguageCode,\n };\n}\n","export const STORAGE_KEYS = {\n CURRENT_LANGUAGE: 'flusys.language',\n} as const;\n","export const LOCALIZATION_MESSAGES: Record<string, string> = {\n // Container\n 'localization.title': 'Localization',\n 'localization.subtitle': 'Manage languages and translations',\n\n // Tabs\n 'localization.tabs.languages': 'Languages',\n 'localization.tabs.keys': 'Keys',\n 'localization.tabs.translations': 'Translations',\n\n // Languages\n 'localization.language.title': 'Languages',\n 'localization.language.subtitle': 'Manage available languages for your application',\n 'localization.language.create': 'Add Language',\n 'localization.language.edit': 'Edit Language',\n 'localization.language.code': 'Language Code',\n 'localization.language.name': 'Language Name',\n 'localization.language.native.name': 'Native Name',\n 'localization.language.direction': 'Text Direction',\n 'localization.language.ltr': 'LTR',\n 'localization.language.rtl': 'RTL',\n 'localization.language.active': 'Active',\n 'localization.language.default': 'Default',\n 'localization.language.set.default': 'Set as Default',\n 'localization.language.confirm.set.default': 'Set \"{{name}}\" as the default language?',\n 'localization.language.set.default.success': '{{name}} is now the default language.',\n 'localization.language.delete.title': 'Delete Language',\n 'localization.language.empty': 'No languages configured. Add a language to get started.',\n 'localization.language.display.order': 'Display Order',\n 'localization.language.iso.code.hint': 'ISO 639-1 language code (e.g., en, ar, fr)',\n 'localization.language.native.name.hint': 'Name in the native language (e.g., العربية for Arabic)',\n 'localization.language.create.success': 'Language created successfully',\n 'localization.language.update.success': 'Language updated successfully',\n\n // Translation keys\n 'localization.key.title': 'Translation Keys',\n 'localization.key.subtitle': 'Manage translation keys for your application',\n 'localization.key.create': 'Add Key',\n 'localization.key.edit': 'Edit Key',\n 'localization.key.key': 'Key',\n 'localization.key.name': 'Key Name',\n 'localization.key.module': 'Module',\n 'localization.key.default.message': 'Default Message',\n 'localization.key.description': 'Description',\n 'localization.key.variables': 'Variables',\n 'localization.key.variables.hint': 'Enter variable names used in this translation',\n 'localization.key.variables.placeholder': 'e.g., name, count, date',\n 'localization.key.translations': 'Translations',\n 'localization.key.translations.section': 'Translations',\n 'localization.key.about': 'Key Information',\n 'localization.key.filter.module': 'Filter by module',\n 'localization.key.select.module': 'Select or enter module',\n 'localization.key.enter.translation': 'Enter translation',\n 'localization.key.no.languages': 'No active languages configured',\n 'localization.key.empty': 'No translation keys found',\n 'localization.key.delete.title': 'Delete Translation Key',\n 'localization.key.readonly': 'System Key',\n 'localization.key.readonly.hint': 'System keys cannot be deleted',\n\n // Translations\n 'localization.translation.title': 'Translations',\n 'localization.translation.manage': 'Manage Translations',\n 'localization.translation.value': 'Translation',\n 'localization.translation.verified': 'Verified',\n 'localization.translation.missing': 'Missing',\n 'localization.translation.save.changes': 'Save Changes',\n 'localization.translation.unsaved.changes': '{{count}} unsaved changes',\n 'localization.translation.no.keys': 'No translation keys found for this module',\n 'localization.translation.select.module': 'Select a module to view translations',\n 'localization.translation.select.language': 'Select a language to view translations',\n 'localization.translation.module': 'Module',\n 'localization.translation.language': 'Language',\n 'localization.translation.key': 'Key',\n 'localization.translation.default.message': 'Default Message',\n\n // Language selector\n 'localization.selector.language': 'Language',\n 'localization.selector.select.language': 'Select Language',\n\n // Translation list page\n 'localization.translation.save.success': 'Success',\n 'localization.translation.save.success.detail': 'Translations saved successfully',\n 'localization.translation.search.keys': 'Search translation keys...',\n 'localization.translation.select.module.hint': 'Please select a module to view its translations',\n 'localization.translation.select.language.hint': 'Please select a language to view translations',\n 'localization.translation.all.modules': 'All Modules',\n 'localization.translation.pagination': 'Showing {first} to {last} of {totalRecords} keys',\n\n // Language direction labels\n 'localization.language.direction.ltr': 'Left to Right (LTR)',\n 'localization.language.direction.rtl': 'Right to Left (RTL)',\n\n // Placeholders\n 'localization.placeholder.code': 'en',\n 'localization.placeholder.name': 'English',\n 'localization.placeholder.native.name': 'English',\n 'localization.placeholder.key.name': 'button.submit',\n 'localization.placeholder.default.message': 'Enter default value (English)',\n 'localization.placeholder.key.description': 'Optional description for translators',\n\n // Language CRUD (API keys)\n 'language.create.success': 'Language created successfully',\n 'language.create.many.success': '{{count}} languages created successfully',\n 'language.get.success': 'Language retrieved successfully',\n 'language.get.all.success': 'Languages retrieved successfully',\n 'language.update.success': 'Language updated successfully',\n 'language.update.many.success': '{{count}} languages updated successfully',\n 'language.delete.success': 'Language deleted successfully',\n 'language.restore.success': 'Language restored successfully',\n 'language.not.found': 'Language not found',\n 'language.active.success': 'Active languages retrieved successfully',\n 'language.set.default.success': 'Default language updated successfully',\n 'language.get.default.success': 'Default language retrieved successfully',\n\n // Translation key CRUD (API keys)\n 'translation.key.create.success': 'Translation key created successfully',\n 'translation.key.create.many.success': '{{count}} translation keys created successfully',\n 'translation.key.get.success': 'Translation key retrieved successfully',\n 'translation.key.get.all.success': 'Translation keys retrieved successfully',\n 'translation.key.update.success': 'Translation key updated successfully',\n 'translation.key.update.many.success': '{{count}} translation keys updated successfully',\n 'translation.key.delete.success': 'Translation key deleted successfully',\n 'translation.key.restore.success': 'Translation key restored successfully',\n 'translation.key.not.found': 'Translation key not found',\n 'translation.key.import.success': 'Translation keys imported successfully',\n 'translation.key.export.success': 'Translation keys exported successfully',\n 'translation.key.readonly.delete.forbidden': 'Cannot delete readonly translation keys: {{keys}}',\n 'translation.key.readonly.update.forbidden': 'Cannot modify key or module of system translation keys',\n 'translation.key.duplicate.key.in.module': 'Translation key \"{{key}}\" already exists in module \"{{module}}\"',\n 'translation.key.modules.success': 'Modules retrieved successfully',\n\n // Translation CRUD (API keys)\n 'translation.create.success': 'Translation created successfully',\n 'translation.create.many.success': '{{count}} translations created successfully',\n 'translation.get.success': 'Translation retrieved successfully',\n 'translation.get.all.success': 'Translations retrieved successfully',\n 'translation.update.success': 'Translation updated successfully',\n 'translation.update.many.success': '{{count}} translations updated successfully',\n 'translation.delete.success': 'Translation deleted successfully',\n 'translation.restore.success': 'Translation restored successfully',\n 'translation.not.found': 'Translation not found',\n 'translation.by.language.success': 'Translations retrieved successfully',\n 'translation.by.module.success': 'Translations by module retrieved successfully',\n 'translation.missing.success': 'Missing translations retrieved successfully',\n 'translation.sync.success': 'Translations synced successfully',\n 'translation.update.values.success': 'Translation values updated successfully',\n\n // Validation messages\n 'localization.validation.code.required': 'Language code is required',\n 'localization.validation.code.max.length': 'Language code must be at most 10 characters',\n 'localization.validation.name.required': 'Language name is required',\n 'localization.validation.name.max.length': 'Language name must be at most 100 characters',\n 'localization.validation.key.required': 'Translation key is required',\n 'localization.validation.module.required': 'Module is required',\n 'localization.validation.default.message.required': 'Default message is required',\n\n // Additional success messages\n 'localization.key.create.success': 'Translation key created successfully',\n 'localization.key.update.success': 'Translation key updated successfully',\n 'localization.key.delete.success': 'Translation key deleted successfully',\n 'localization.language.delete.success': 'Language deleted successfully',\n 'localization.language.load.failed': 'Failed to load languages',\n 'localization.key.load.failed': 'Failed to load translation keys',\n\n // Translation key operation keys (used by form components)\n 'localization.translation.key.create.success': 'Translation key created successfully',\n 'localization.translation.key.update.success': 'Translation key updated successfully',\n 'localization.translation.key.delete.success': 'Translation key deleted successfully',\n\n // Pagination templates\n 'localization.pagination.languages.template': 'Showing {first} to {last} of {totalRecords} languages',\n 'localization.pagination.keys.template': 'Showing {first} to {last} of {totalRecords} keys',\n};\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { ApplicationRef, computed, effect, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { PrimeNG } from 'primeng/config';\nimport { ILanguage, ITranslationsMap } from '../interfaces/language.interface';\nimport { STORAGE_KEYS } from '../constants/localization.constants';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationStateService {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly appRef = inject(ApplicationRef);\n private readonly primeNG = inject(PrimeNG);\n private readonly _loadedModules = new Set<string>();\n private readonly _moduleFallbacks = new Map<string, ITranslationsMap>();\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n private readonly _currentLanguage = signal<ILanguage | null>(null);\n private readonly _availableLanguages = signal<ILanguage[]>([]);\n private readonly _translations = signal<ITranslationsMap>({});\n private readonly _fallbackMessages = signal<ITranslationsMap>({});\n private readonly _isLoading = signal<boolean>(false);\n private readonly _isInitialized = signal<boolean>(false);\n\n readonly currentLanguage = this._currentLanguage.asReadonly();\n readonly availableLanguages = this._availableLanguages.asReadonly();\n readonly translations = this._translations.asReadonly();\n readonly fallbackMessages = this._fallbackMessages.asReadonly();\n readonly isLoading = this._isLoading.asReadonly();\n readonly isInitialized = this._isInitialized.asReadonly();\n\n readonly currentLanguageCode = computed(() => this._currentLanguage()?.code ?? 'en');\n readonly isRtl = computed(() => this._currentLanguage()?.direction === 'rtl');\n\n constructor() {\n effect(() => {\n const language = this._currentLanguage();\n if (language && this.isBrowser) {\n this.document.documentElement.dir = language.direction ?? 'ltr';\n this.document.documentElement.lang = language.code;\n localStorage.setItem(STORAGE_KEYS.CURRENT_LANGUAGE, language.code);\n }\n });\n\n // Trigger zoneless change detection when translations update\n effect(() => {\n this._translations();\n setTimeout(() => this.appRef.tick(), 0);\n });\n\n effect(() => {\n const translations = this._translations();\n const fallbacks = this._fallbackMessages();\n this.syncPrimeNGTranslations(translations, fallbacks);\n });\n }\n\n private dotToCamel(str: string): string {\n return str.replace(/\\.([a-z])/g, (_, c: string) => c.toUpperCase());\n }\n\n private syncPrimeNGTranslations(translations: ITranslationsMap, fallbacks: ITranslationsMap): void {\n const primeNGTranslations: Record<string, unknown> = {};\n const ariaTranslations: Record<string, string> = {};\n const prefix = 'primeng.';\n const ariaPrefix = 'primeng.aria.';\n\n const allMessages = { ...fallbacks, ...translations };\n\n for (const [key, value] of Object.entries(allMessages)) {\n if (key.startsWith(ariaPrefix)) {\n const ariaKey = this.dotToCamel(key.substring(ariaPrefix.length));\n ariaTranslations[ariaKey] = value;\n } else if (key.startsWith(prefix)) {\n const primeKey = this.dotToCamel(key.substring(prefix.length));\n primeNGTranslations[primeKey] = value;\n }\n }\n\n if (Object.keys(ariaTranslations).length > 0) {\n primeNGTranslations['aria'] = ariaTranslations;\n }\n\n if (Object.keys(primeNGTranslations).length > 0) {\n this.primeNG.setTranslation(primeNGTranslations);\n }\n }\n\n setCurrentLanguage(language: ILanguage): void {\n this._currentLanguage.set(language);\n }\n\n setAvailableLanguages(languages: ILanguage[]): void {\n this._availableLanguages.set(languages);\n }\n\n setTranslations(translations: ITranslationsMap): void {\n this._translations.set(translations);\n }\n\n mergeTranslations(translations: ITranslationsMap): void {\n this._translations.update((current) => ({ ...current, ...translations }));\n }\n\n setLoading(loading: boolean): void {\n this._isLoading.set(loading);\n }\n\n setInitialized(initialized: boolean): void {\n this._isInitialized.set(initialized);\n }\n\n getSavedLanguageCode(): string | null {\n if (!this.isBrowser) return null;\n return localStorage.getItem(STORAGE_KEYS.CURRENT_LANGUAGE);\n }\n\n isModuleLoaded(module: string): boolean {\n return this._loadedModules.has(module);\n }\n\n markModuleLoaded(module: string): void {\n this._loadedModules.add(module);\n }\n\n getLoadedModules(): string[] {\n return Array.from(this._loadedModules);\n }\n\n clearLoadedModules(): void {\n this._loadedModules.clear();\n }\n\n registerModuleFallbacks(module: string, messages: ITranslationsMap): void {\n this._moduleFallbacks.set(module, messages);\n this._fallbackMessages.update((current) => ({ ...current, ...messages }));\n }\n\n hasModuleFallbacks(module: string): boolean {\n return this._moduleFallbacks.has(module);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@flusys/ng-core';\nimport { IListResponse, ISingleResponse } from '@flusys/ng-shared';\nimport { Observable } from 'rxjs';\nimport { ILanguage, ITranslationsMap } from '../interfaces/language.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationApiService {\n private readonly http = inject(HttpClient);\n private readonly appConfig = inject(APP_CONFIG);\n\n private get baseUrl(): string {\n return `${this.appConfig.apiBaseUrl}/localization`;\n }\n\n getActiveLanguages(): Observable<IListResponse<ILanguage>> {\n return this.http.post<IListResponse<ILanguage>>(`${this.baseUrl}/language/get-active`, {});\n }\n\n getTranslationsByLanguage(languageCode: string, modules?: string[]): Observable<ISingleResponse<ITranslationsMap>> {\n return this.http.post<ISingleResponse<ITranslationsMap>>(\n `${this.baseUrl}/translation/get-by-language`,\n { languageCode, ...(modules?.length ? { modules } : {}) },\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { LOCALIZATION_CONFIG } from '../interfaces/localization-config.interface';\nimport { LocalizationApiService } from './localization-api.service';\nimport { LocalizationStateService } from './localization-state.service';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationInitializerService {\n private readonly config = inject(LOCALIZATION_CONFIG, { optional: true });\n private readonly apiService = inject(LocalizationApiService);\n private readonly stateService = inject(LocalizationStateService);\n\n async initialize(): Promise<void> {\n if (!this.config) {\n this.stateService.setInitialized(true);\n return;\n }\n\n try {\n this.stateService.setLoading(true);\n\n const languagesResponse = await firstValueFrom(this.apiService.getActiveLanguages());\n if (languagesResponse.success && languagesResponse.data) {\n this.stateService.setAvailableLanguages(languagesResponse.data);\n\n const savedCode = this.stateService.getSavedLanguageCode();\n let selectedLanguage = languagesResponse.data.find((l) => l.code === savedCode);\n\n if (!selectedLanguage) {\n selectedLanguage = languagesResponse.data.find((l) => l.isDefault);\n }\n\n if (!selectedLanguage && languagesResponse.data.length > 0) {\n selectedLanguage = languagesResponse.data[0];\n }\n\n if (selectedLanguage) {\n this.stateService.setCurrentLanguage(selectedLanguage);\n }\n }\n } catch (error) {\n // Silently fail - use default language\n } finally {\n this.stateService.setLoading(false);\n this.stateService.setInitialized(true);\n }\n }\n}\n","import { computed, inject, Injectable, Signal } from '@angular/core';\nimport { LOCALIZATION_CONFIG } from '../interfaces/localization-config.interface';\nimport { LocalizationStateService } from './localization-state.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslateService {\n private readonly localizationState = inject(LocalizationStateService);\n private readonly localizationConfig = inject(LOCALIZATION_CONFIG, { optional: true });\n\n readonly languageCode = this.localizationState.currentLanguageCode;\n\n translate(key: string, params?: Record<string, string | number>): string {\n if (!this.localizationConfig) {\n return this.getFromFallback(key, params);\n }\n\n const translations = this.localizationState.translations();\n const value = translations[key];\n\n if (!value) {\n return this.getFromFallback(key, params);\n }\n\n return this.interpolate(value, params);\n }\n\n translateSignal(key: string, params?: Record<string, string | number>): Signal<string> {\n return computed(() => {\n this.localizationState.currentLanguage();\n return this.translate(key, params);\n });\n }\n\n instant(key: string, params?: Record<string, string | number>): string {\n return this.translate(key, params);\n }\n\n private interpolate(template: string, params?: Record<string, string | number>): string {\n if (!params || !template) return template;\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (match, paramKey) => {\n const value = params[paramKey];\n return value !== undefined ? String(value) : match;\n });\n }\n\n private getFromFallback(key: string, params?: Record<string, string | number>): string {\n const fallbacks = this.localizationState.fallbackMessages();\n const value = fallbacks[key] ?? key;\n return this.interpolate(value, params);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, from, Observable } from 'rxjs';\nimport { LOCALIZATION_CONFIG } from '../interfaces/localization-config.interface';\nimport { LocalizationApiService } from './localization-api.service';\nimport { LocalizationStateService } from './localization-state.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationLoaderService {\n private readonly DEFAULT_INITIAL_MODULES = ['shared', 'layout'];\n private readonly config = inject(LOCALIZATION_CONFIG, { optional: true });\n private readonly apiService = inject(LocalizationApiService);\n private readonly stateService = inject(LocalizationStateService);\n\n async loadTranslations(languageCode: string, clearModules = false): Promise<void> {\n const strategy = this.config?.loadStrategy ?? 'all';\n\n // Save currently loaded modules before clearing (for language switch)\n const previouslyLoadedModules = clearModules ? this.stateService.getLoadedModules() : [];\n\n if (clearModules) {\n this.stateService.clearLoadedModules();\n }\n\n this.stateService.setLoading(true);\n\n try {\n if (strategy === 'all') {\n await this.loadAndSetTranslations(languageCode);\n } else {\n const modules = this.config?.initialModules ?? this.DEFAULT_INITIAL_MODULES;\n await this.loadAndSetTranslations(languageCode, modules);\n // Reload all previously loaded modules for the new language\n if (previouslyLoadedModules.length > 0) {\n await this.reloadModules(languageCode, previouslyLoadedModules);\n }\n }\n } finally {\n this.stateService.setLoading(false);\n }\n }\n\n private async loadAndSetTranslations(languageCode: string, modules?: string[]): Promise<void> {\n const response = await firstValueFrom(this.apiService.getTranslationsByLanguage(languageCode, modules));\n if (response.success && response.data) {\n this.stateService.setTranslations(response.data);\n if (modules) {\n modules.forEach((m) => this.stateService.markModuleLoaded(m));\n }\n }\n }\n\n async loadModulesOnDemand(languageCode: string, modules: string[]): Promise<void> {\n const modulesToLoad = modules.filter((m) => !this.stateService.isModuleLoaded(m));\n\n if (modulesToLoad.length === 0) return;\n\n const response = await firstValueFrom(this.apiService.getTranslationsByLanguage(languageCode, modulesToLoad));\n\n if (response.success && response.data) {\n this.stateService.mergeTranslations(response.data);\n modulesToLoad.forEach((m) => this.stateService.markModuleLoaded(m));\n }\n }\n\n private async reloadModules(languageCode: string, modules: string[]): Promise<void> {\n const initialModules = this.config?.initialModules ?? this.DEFAULT_INITIAL_MODULES;\n const additionalModules = modules.filter((m) => !initialModules.includes(m));\n\n if (additionalModules.length === 0) return;\n\n const response = await firstValueFrom(this.apiService.getTranslationsByLanguage(languageCode, additionalModules));\n\n if (response.success && response.data) {\n this.stateService.mergeTranslations(response.data);\n additionalModules.forEach((m) => this.stateService.markModuleLoaded(m));\n }\n }\n\n loadTranslationsAsync(languageCode: string, clearModules = false): Observable<void> {\n return from(this.loadTranslations(languageCode, clearModules));\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@flusys/ng-core';\nimport { IListResponse, IMessageResponse, ISingleResponse } from '@flusys/ng-shared';\nimport { Observable } from 'rxjs';\nimport { ILanguage } from '../interfaces/language.interface';\n\nexport interface ICreateLanguageDto {\n code: string;\n name: string;\n nativeName?: string;\n direction?: 'ltr' | 'rtl';\n isActive?: boolean;\n isDefault?: boolean;\n serial?: number;\n}\n\nexport interface IUpdateLanguageDto extends Partial<ICreateLanguageDto> {\n id: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageApiService {\n private readonly http = inject(HttpClient);\n private readonly appConfig = inject(APP_CONFIG);\n\n private get baseUrl(): string {\n return `${this.appConfig.apiBaseUrl}/localization/language`;\n }\n\n getAll(): Observable<IListResponse<ILanguage>> {\n return this.http.post<IListResponse<ILanguage>>(`${this.baseUrl}/get-all`, {\n pagination: { currentPage: 0, pageSize: 100 },\n filter: {},\n sort: { serial: 'ASC', name: 'ASC' },\n });\n }\n\n getById(id: string): Observable<ISingleResponse<ILanguage>> {\n return this.http.post<ISingleResponse<ILanguage>>(`${this.baseUrl}/get/${id}`, {});\n }\n\n create(dto: ICreateLanguageDto): Observable<ISingleResponse<ILanguage>> {\n return this.http.post<ISingleResponse<ILanguage>>(`${this.baseUrl}/insert`, dto);\n }\n\n update(dto: IUpdateLanguageDto): Observable<ISingleResponse<ILanguage>> {\n return this.http.post<ISingleResponse<ILanguage>>(`${this.baseUrl}/update`, dto);\n }\n\n delete(id: string): Observable<IMessageResponse> {\n return this.http.post<IMessageResponse>(`${this.baseUrl}/delete`, { id, type: 'delete' });\n }\n\n setDefault(id: string): Observable<ISingleResponse<ILanguage>> {\n return this.http.post<ISingleResponse<ILanguage>>(`${this.baseUrl}/set-default`, { id });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@flusys/ng-core';\nimport { IListResponse, IMessageResponse, ISingleResponse } from '@flusys/ng-shared';\nimport { Observable } from 'rxjs';\nimport { ITranslationKey } from '../interfaces/translation-key.interface';\n\nexport interface ICreateTranslationKeyDto {\n module: string;\n key: string;\n defaultMessage: string;\n description?: string;\n variables?: string[];\n isActive?: boolean;\n}\n\nexport interface IUpdateTranslationKeyDto extends Partial<ICreateTranslationKeyDto> {\n id: string;\n}\n\nexport interface ITranslationKeyFilter {\n module?: string;\n isActive?: boolean;\n search?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationKeyApiService {\n private readonly http = inject(HttpClient);\n private readonly appConfig = inject(APP_CONFIG);\n\n private get baseUrl(): string {\n return `${this.appConfig.apiBaseUrl}/localization/translation-key`;\n }\n\n getAll(filter: ITranslationKeyFilter = {}): Observable<IListResponse<ITranslationKey>> {\n return this.http.post<IListResponse<ITranslationKey>>(`${this.baseUrl}/get-all`, {\n pagination: { currentPage: 0, pageSize: 1000 },\n filter,\n sort: { module: 'ASC', key: 'ASC' },\n });\n }\n\n getByModule(module: string): Observable<IListResponse<ITranslationKey>> {\n return this.http.post<IListResponse<ITranslationKey>>(`${this.baseUrl}/get-by-module`, {\n module,\n });\n }\n\n getModules(): Observable<ISingleResponse<string[]>> {\n return this.http.post<ISingleResponse<string[]>>(`${this.baseUrl}/get-modules`, {});\n }\n\n getById(id: string): Observable<ISingleResponse<ITranslationKey>> {\n return this.http.post<ISingleResponse<ITranslationKey>>(`${this.baseUrl}/get/${id}`, {});\n }\n\n create(dto: ICreateTranslationKeyDto): Observable<ISingleResponse<ITranslationKey>> {\n return this.http.post<ISingleResponse<ITranslationKey>>(`${this.baseUrl}/insert`, dto);\n }\n\n createMany(dtos: ICreateTranslationKeyDto[]): Observable<IListResponse<ITranslationKey>> {\n return this.http.post<IListResponse<ITranslationKey>>(`${this.baseUrl}/insert-many`, { items: dtos });\n }\n\n update(dto: IUpdateTranslationKeyDto): Observable<ISingleResponse<ITranslationKey>> {\n return this.http.post<ISingleResponse<ITranslationKey>>(`${this.baseUrl}/update`, dto);\n }\n\n delete(id: string): Observable<IMessageResponse> {\n return this.http.post<IMessageResponse>(`${this.baseUrl}/delete`, { id, type: 'delete' });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@flusys/ng-core';\nimport { IListResponse, IMessageResponse, ISingleResponse } from '@flusys/ng-shared';\nimport { Observable } from 'rxjs';\nimport { ITranslation, ITranslationWithKey } from '../interfaces/translation.interface';\n\nexport interface ICreateTranslationDto {\n languageId: string;\n translationKeyId: string;\n value: string;\n isVerified?: boolean;\n isActive?: boolean;\n}\n\nexport interface IUpdateTranslationDto extends Partial<ICreateTranslationDto> {\n id: string;\n}\n\nexport interface IBulkUpdateTranslationDto {\n id?: string;\n languageId: string;\n translationKeyId: string;\n value: string;\n isVerified?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationApiService {\n private readonly http = inject(HttpClient);\n private readonly appConfig = inject(APP_CONFIG);\n\n private get baseUrl(): string {\n return `${this.appConfig.apiBaseUrl}/localization/translation`;\n }\n\n getByLanguageId(languageId: string): Observable<IListResponse<ITranslationWithKey>> {\n return this.http.post<IListResponse<ITranslationWithKey>>(`${this.baseUrl}/get-all`, {\n pagination: { currentPage: 0, pageSize: 10000 },\n filter: { languageId },\n sort: {},\n });\n }\n\n getByModuleAndLanguageId(module: string, languageId: string): Observable<IListResponse<ITranslationWithKey>> {\n return this.http.post<IListResponse<ITranslationWithKey>>(`${this.baseUrl}/get-all`, {\n pagination: { currentPage: 0, pageSize: 10000 },\n filter: { languageId, module },\n sort: {},\n });\n }\n\n getById(id: string): Observable<ISingleResponse<ITranslation>> {\n return this.http.post<ISingleResponse<ITranslation>>(`${this.baseUrl}/get/${id}`, {});\n }\n\n create(dto: ICreateTranslationDto): Observable<ISingleResponse<ITranslation>> {\n return this.http.post<ISingleResponse<ITranslation>>(`${this.baseUrl}/insert`, dto);\n }\n\n update(dto: IUpdateTranslationDto): Observable<ISingleResponse<ITranslation>> {\n return this.http.post<ISingleResponse<ITranslation>>(`${this.baseUrl}/update`, dto);\n }\n\n bulkUpdate(translations: IBulkUpdateTranslationDto[]): Observable<IListResponse<ITranslation>> {\n return this.http.post<IListResponse<ITranslation>>(`${this.baseUrl}/update-many-values`, { translations });\n }\n\n delete(id: string): Observable<IMessageResponse> {\n return this.http.post<IMessageResponse>(`${this.baseUrl}/delete`, { id, type: 'delete' });\n }\n\n getByKeyId(translationKeyId: string): Observable<IListResponse<ITranslation>> {\n return this.http.post<IListResponse<ITranslation>>(`${this.baseUrl}/get-all`, {\n pagination: { currentPage: 0, pageSize: 1000 },\n filter: { translationKeyId },\n sort: {},\n });\n }\n\n getCounts(): Observable<ISingleResponse<Record<string, number>>> {\n return this.http.post<ISingleResponse<Record<string, number>>>(`${this.baseUrl}/get-counts`, {});\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, DestroyRef, ElementRef, computed, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { LocalizationStateService } from '../../services/localization-state.service';\nimport { TranslationLoaderService } from '../../services/translation-loader.service';\n\n@Component({\n selector: 'lib-language-selector',\n imports: [StyleClassModule],\n host: { class: 'relative' },\n template: `\n <button\n type=\"button\"\n class=\"layout-topbar-action\"\n [class.layout-topbar-action-highlight]=\"isActive()\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"animate-fadeout\"\n [hideOnOutsideClick]=\"true\"\n (click)=\"togglePanel()\">\n <i class=\"pi pi-globe\"></i>\n <span class=\"font-semibold\">{{ selectedLanguage()?.nativeName || selectedLanguage()?.name || selectedLanguageCode() }}</span>\n </button>\n <div\n class=\"hidden absolute top-[3.25rem] z-50 p-3 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)] min-w-[180px]\"\n style=\"background-color: var(--surface-overlay); inset-inline-end: 0;\">\n <div class=\"flex flex-col\">\n @for (lang of languages(); track lang.id) {\n <button\n type=\"button\"\n class=\"flex items-center gap-3 px-3 py-2.5 rounded-border cursor-pointer transition-all duration-200 text-left w-full border-none bg-transparent hover:bg-emphasis\"\n [class.bg-primary-50]=\"lang.code === selectedLanguageCode()\"\n [class.text-primary]=\"lang.code === selectedLanguageCode()\"\n (click)=\"onLanguageSelect(lang.code)\">\n <span class=\"font-medium flex-1\">{{ lang.nativeName || lang.name }}</span>\n <span class=\"text-xs text-muted-color uppercase\">({{ lang.code }})</span>\n @if (lang.code === selectedLanguageCode()) {\n <i class=\"pi pi-check text-primary text-sm\"></i>\n }\n </button>\n }\n </div>\n </div>\n `,\n})\nexport class LanguageSelectorComponent {\n private readonly localizationState = inject(LocalizationStateService);\n private readonly translationLoader = inject(TranslationLoaderService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n private readonly elementRef = inject(ElementRef);\n\n readonly languages = this.localizationState.availableLanguages;\n\n private readonly _isActive = signal(false);\n readonly isActive = this._isActive.asReadonly();\n\n readonly selectedLanguageCode = this.localizationState.currentLanguageCode;\n readonly selectedLanguage = computed(() => this.languages().find((l) => l.code === this.selectedLanguageCode()) ?? null);\n\n constructor() {\n fromEvent<MouseEvent>(this.document, 'click')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(() => this._isActive()),\n )\n .subscribe((event) => {\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this._isActive.set(false);\n }\n });\n }\n\n togglePanel(): void {\n this._isActive.update((v) => !v);\n }\n\n onLanguageSelect(code: string): void {\n const language = this.languages().find((l) => l.code === code);\n if (language) {\n this.localizationState.setCurrentLanguage(language);\n this._isActive.set(false);\n this.translationLoader\n .loadTranslationsAsync(code, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n }\n}\n","import { Component, DestroyRef, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LocalizationStateService } from '../../services/localization-state.service';\nimport { TranslationLoaderService } from '../../services/translation-loader.service';\n\n@Component({\n selector: 'lib-language-selector-panel',\n imports: [],\n host: {\n class:\n 'hidden absolute top-[3.25rem] z-50 p-3 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)] min-w-[180px]',\n style: 'background-color: var(--surface-overlay); inset-inline-end: 0;',\n },\n template: `\n <div class=\"flex flex-col\">\n @for (lang of languages(); track lang.id) {\n <button\n type=\"button\"\n class=\"flex items-center gap-3 px-3 py-2.5 rounded-border cursor-pointer transition-all duration-200 text-left w-full border-none bg-transparent hover:bg-emphasis\"\n [class.bg-primary-50]=\"lang.code === selectedLanguageCode()\"\n [class.text-primary]=\"lang.code === selectedLanguageCode()\"\n (click)=\"onLanguageSelect(lang.code)\">\n <span class=\"font-medium flex-1\">{{ lang.nativeName || lang.name }}</span>\n <span class=\"text-xs text-muted-color uppercase\">({{ lang.code }})</span>\n @if (lang.code === selectedLanguageCode()) {\n <i class=\"pi pi-check text-primary text-sm\"></i>\n }\n </button>\n }\n </div>\n `,\n})\nexport class LanguageSelectorPanelComponent {\n private readonly localizationState = inject(LocalizationStateService);\n private readonly translationLoader = inject(TranslationLoaderService);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly languages = this.localizationState.availableLanguages;\n\n private readonly _selectedLanguageCode = signal<string>(this.localizationState.currentLanguageCode());\n readonly selectedLanguageCode = this._selectedLanguageCode.asReadonly();\n\n constructor() {\n effect(() => {\n const currentCode = this.localizationState.currentLanguageCode();\n if (currentCode !== this._selectedLanguageCode()) {\n this._selectedLanguageCode.set(currentCode);\n }\n });\n }\n\n onLanguageSelect(code: string): void {\n const language = this.languages().find((l) => l.code === code);\n if (language) {\n this._selectedLanguageCode.set(code);\n this.localizationState.setCurrentLanguage(language);\n this.translationLoader\n .loadTranslationsAsync(code, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n }\n}\n","import { APP_INITIALIZER, Provider } from '@angular/core';\nimport { TRANSLATE_ADAPTER } from '@flusys/ng-core';\nimport { LAYOUT_LANGUAGE_SELECTOR, LAYOUT_LANGUAGE_SELECTOR_PANEL } from '@flusys/ng-layout';\nimport { LanguageSelectorPanelComponent } from '../components/language-selector-panel/language-selector-panel.component';\nimport { LanguageSelectorComponent } from '../components/language-selector/language-selector.component';\nimport { ILocalizationConfig, LOCALIZATION_CONFIG } from '../interfaces/localization-config.interface';\nimport { LocalizationApiService } from '../services/localization-api.service';\nimport { LocalizationInitializerService } from '../services/localization-initializer.service';\nimport { LocalizationStateService } from '../services/localization-state.service';\nimport { TranslateService } from '../services/translate.service';\n\nexport function provideLocalization(config: ILocalizationConfig): Provider[] {\n const providers: Provider[] = [\n { provide: LOCALIZATION_CONFIG, useValue: config },\n LocalizationStateService,\n LocalizationApiService,\n LocalizationInitializerService,\n TranslateService,\n { provide: TRANSLATE_ADAPTER, useExisting: TranslateService },\n {\n provide: APP_INITIALIZER,\n useFactory: (initializer: LocalizationInitializerService) => () => initializer.initialize(),\n deps: [LocalizationInitializerService],\n multi: true,\n },\n ];\n\n if (config.enableLayoutSelector) {\n providers.push(\n { provide: LAYOUT_LANGUAGE_SELECTOR, useValue: LanguageSelectorComponent },\n { provide: LAYOUT_LANGUAGE_SELECTOR_PANEL, useValue: LanguageSelectorPanelComponent },\n );\n }\n\n return providers;\n}\n","import { Routes } from '@angular/router';\nimport { SHARED_MESSAGES, resolveTranslationModule } from '@flusys/ng-shared';\nimport { LOCALIZATION_MESSAGES } from '../constants/messages';\n\nexport const LOCALIZATION_ROUTES: Routes = [\n {\n path: '',\n resolve: { translations: resolveTranslationModule({ modules: ['localization'], fallbackMessages: { ...LOCALIZATION_MESSAGES, ...SHARED_MESSAGES } }) },\n loadComponent: () =>\n import('./localization-container/localization-container.page').then(\n (m) => m.LocalizationContainerPage,\n ),\n children: [\n {\n path: 'languages',\n loadComponent: () =>\n import('./language-list/language-list.page').then((m) => m.LanguageListPage),\n },\n {\n path: 'languages/new',\n loadComponent: () =>\n import('./language-form/language-form.page').then((m) => m.LanguageFormPage),\n },\n {\n path: 'languages/:id',\n loadComponent: () =>\n import('./language-form/language-form.page').then((m) => m.LanguageFormPage),\n },\n {\n path: 'keys',\n loadComponent: () =>\n import('./translation-key-list/translation-key-list.page').then(\n (m) => m.TranslationKeyListPage,\n ),\n },\n {\n path: 'keys/new',\n loadComponent: () =>\n import('./translation-key-form/translation-key-form.page').then(\n (m) => m.TranslationKeyFormPage,\n ),\n },\n {\n path: 'keys/:id',\n loadComponent: () =>\n import('./translation-key-form/translation-key-form.page').then(\n (m) => m.TranslationKeyFormPage,\n ),\n },\n {\n path: 'translations',\n loadComponent: () =>\n import('./translation-list/translation-list.page').then((m) => m.TranslationListPage),\n },\n {\n path: '',\n redirectTo: 'languages',\n pathMatch: 'full',\n },\n ],\n },\n];\n","import { Component, computed, inject } from '@angular/core';\nimport { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\nimport {\n LANGUAGE_PERMISSIONS,\n PermissionValidatorService,\n TRANSLATION_KEY_PERMISSIONS,\n TRANSLATION_PERMISSIONS,\n TranslatePipe,\n} from '@flusys/ng-shared';\n\ninterface ITab {\n id: string;\n labelKey: string;\n icon: string;\n route: string;\n permission: string;\n}\n\n@Component({\n selector: 'lib-localization-container',\n imports: [RouterOutlet, RouterLink, RouterLinkActive, TranslatePipe],\n styles: `\n .scrollbar-hide {\n -ms-overflow-style: none;\n scrollbar-width: none;\n &::-webkit-scrollbar { display: none; }\n }\n `,\n template: `\n <div class=\"p-2 sm:p-4\">\n <div class=\"mb-4\">\n <h1 class=\"text-xl sm:text-2xl font-bold m-0\">{{ 'localization.title' | translate }}</h1>\n <p class=\"text-muted-color mt-1 text-sm sm:text-base\">{{ 'localization.subtitle' | translate }}</p>\n </div>\n\n <div class=\"scrollbar-hide flex gap-1 mb-4 border-b border-surface overflow-x-auto flex-nowrap\">\n @for (tab of visibleTabs(); track tab.id) {\n <a\n [routerLink]=\"tab.route\"\n routerLinkActive=\"tab-active\"\n class=\"flex items-center gap-2 px-4 py-2 rounded-t-lg cursor-pointer transition-colors text-muted-color no-underline border-b-2 border-transparent -mb-px hover:bg-surface-hover [&.tab-active]:text-primary [&.tab-active]:border-primary [&.tab-active]:bg-surface-ground whitespace-nowrap shrink-0\"\n >\n <i [class]=\"tab.icon\"></i>\n <span>{{ tab.labelKey | translate }}</span>\n </a>\n }\n </div>\n\n <router-outlet />\n </div>\n `,\n})\nexport class LocalizationContainerPage {\n private readonly permissionValidator = inject(PermissionValidatorService);\n\n private readonly allTabs: ITab[] = [\n {\n id: 'languages',\n labelKey: 'localization.tabs.languages',\n icon: 'pi pi-globe',\n route: 'languages',\n permission: LANGUAGE_PERMISSIONS.READ,\n },\n {\n id: 'keys',\n labelKey: 'localization.tabs.keys',\n icon: 'pi pi-key',\n route: 'keys',\n permission: TRANSLATION_KEY_PERMISSIONS.READ,\n },\n {\n id: 'translations',\n labelKey: 'localization.tabs.translations',\n icon: 'pi pi-language',\n route: 'translations',\n permission: TRANSLATION_PERMISSIONS.READ,\n },\n ];\n\n readonly visibleTabs = computed(() => {\n // Explicitly track permissions signal for reactivity\n const permissions = this.permissionValidator.permissions();\n if (!permissions.length) return [];\n return this.allTabs.filter((tab) => this.permissionValidator.hasPermission(tab.permission));\n });\n}\n","import {\n Component,\n DestroyRef,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { AngularModule, LANGUAGE_PERMISSIONS, HasPermissionDirective, PrimeModule, TranslatePipe } from '@flusys/ng-shared';\nimport { ConfirmationService, MessageService } from 'primeng/api';\nimport { ILanguage } from '../../interfaces/language.interface';\nimport { LanguageApiService } from '../../services/language-api.service';\nimport { TranslateService } from '../../services/translate.service';\n\n@Component({\n selector: 'lib-language-list-page',\n imports: [AngularModule, PrimeModule, HasPermissionDirective, TranslatePipe],\n providers: [ConfirmationService, MessageService],\n template: `\n <div class=\"card\">\n <div class=\"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-3 mb-4\">\n <div>\n <h3 class=\"text-lg sm:text-xl font-semibold m-0\">{{ 'localization.language.title' | translate }}</h3>\n <p class=\"text-sm text-muted-color mt-1\">\n {{ 'localization.language.subtitle' | translate }}\n </p>\n </div>\n <p-button\n *hasPermission=\"LANGUAGE_PERMISSIONS.CREATE\"\n [label]=\"'localization.language.create' | translate\"\n icon=\"pi pi-plus\"\n (onClick)=\"onCreate()\"\n styleClass=\"w-full sm:w-auto\"\n />\n </div>\n\n <div class=\"overflow-x-auto -mx-4 sm:mx-0\">\n <p-table\n [value]=\"languages()\"\n [loading]=\"isLoading()\"\n styleClass=\"p-datatable-sm\"\n [tableStyle]=\"{ 'min-width': '40rem' }\"\n >\n <ng-template #header>\n <tr>\n <th>{{ 'localization.language.code' | translate }}</th>\n <th>{{ 'localization.language.name' | translate }}</th>\n <th>{{ 'localization.language.native.name' | translate }}</th>\n <th>{{ 'localization.language.direction' | translate }}</th>\n <th>{{ 'shared.status' | translate }}</th>\n <th class=\"w-[150px]\">{{ 'shared.actions' | translate }}</th>\n </tr>\n </ng-template>\n\n <ng-template #body let-lang>\n <tr>\n <td>\n <span class=\"uppercase font-semibold\">{{ lang.code }}</span>\n </td>\n <td>{{ lang.name }}</td>\n <td>{{ lang.nativeName || ('shared.na' | translate) }}</td>\n <td>\n <p-tag\n [value]=\"lang.direction === 'rtl' ? ('localization.language.rtl' | translate) : ('localization.language.ltr' | translate)\"\n [severity]=\"lang.direction === 'rtl' ? 'warn' : 'info'\"\n />\n </td>\n <td>\n <div class=\"flex gap-1 items-center\">\n <p-tag\n [value]=\"lang.isActive ? ('shared.active' | translate) : ('shared.inactive' | translate)\"\n [severity]=\"lang.isActive ? 'success' : 'secondary'\"\n />\n @if (lang.isDefault) {\n <p-tag [value]=\"'localization.language.default' | translate\" severity=\"contrast\" />\n }\n </div>\n </td>\n <td>\n <div class=\"flex gap-1\">\n @if (!lang.isDefault) {\n <p-button\n *hasPermission=\"LANGUAGE_PERMISSIONS.UPDATE\"\n icon=\"pi pi-star\"\n [text]=\"true\"\n size=\"small\"\n [pTooltip]=\"'localization.language.set.default' | translate\"\n (onClick)=\"onSetDefault(lang)\"\n />\n }\n <p-button\n *hasPermission=\"LANGUAGE_PERMISSIONS.UPDATE\"\n icon=\"pi pi-pencil\"\n [text]=\"true\"\n severity=\"secondary\"\n size=\"small\"\n [pTooltip]=\"'shared.edit' | translate\"\n (onClick)=\"onEdit(lang.id)\"\n />\n <p-button\n *hasPermission=\"LANGUAGE_PERMISSIONS.DELETE\"\n icon=\"pi pi-trash\"\n [text]=\"true\"\n severity=\"danger\"\n size=\"small\"\n [pTooltip]=\"'shared.delete' | translate\"\n [disabled]=\"lang.isDefault\"\n (onClick)=\"onDelete(lang)\"\n />\n </div>\n </td>\n </tr>\n </ng-template>\n\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"6\" class=\"text-center py-4 text-muted-color\">\n {{ 'localization.language.empty' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <p-confirmDialog />\n <p-toast />\n `,\n})\nexport class LanguageListPage implements OnInit {\n readonly LANGUAGE_PERMISSIONS = LANGUAGE_PERMISSIONS;\n\n private readonly router = inject(Router);\n private readonly languageService = inject(LanguageApiService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly messageService = inject(MessageService);\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly isLoading = signal(false);\n readonly languages = signal<ILanguage[]>([]);\n\n ngOnInit(): void {\n this.loadLanguages();\n }\n\n onCreate(): void {\n this.router.navigate(['/localization/languages/new']);\n }\n\n onEdit(id: string): void {\n this.router.navigate(['/localization/languages', id]);\n }\n\n loadLanguages(): void {\n this.isLoading.set(true);\n this.languageService.getAll()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.languages.set(response.data ?? []);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.isLoading.set(false);\n },\n });\n }\n\n onSetDefault(lang: ILanguage): void {\n this.confirmationService.confirm({\n message: this.translateService.translate('localization.language.confirm.set.default', { name: lang.name }),\n header: this.translateService.translate('localization.language.set.default'),\n icon: 'pi pi-star',\n accept: () => {\n this.languageService.setDefault(lang.id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.translate('shared.success'),\n detail: this.translateService.translate('localization.language.set.default.success', { name: lang.name }),\n });\n this.loadLanguages();\n }\n },\n });\n },\n });\n }\n\n onDelete(lang: ILanguage): void {\n this.confirmationService.confirm({\n message: this.translateService.translate('shared.confirm.delete'),\n header: this.translateService.translate('localization.language.delete.title'),\n icon: 'pi pi-exclamation-triangle',\n acceptButtonStyleClass: 'p-button-danger',\n accept: () => {\n this.languageService.delete(lang.id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.translate('shared.success'),\n detail: this.translateService.translate('localization.language.delete.success'),\n });\n this.loadLanguages();\n }\n },\n });\n },\n });\n }\n}\n","import {\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { form, FormField, required, maxLength } from '@angular/forms/signals';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TRANSLATE_ADAPTER } from '@flusys/ng-core';\nimport { AngularModule, PrimeModule, TranslatePipe } from '@flusys/ng-shared';\nimport { MessageService } from 'primeng/api';\nimport { finalize } from 'rxjs';\nimport { ILanguage } from '../../interfaces/language.interface';\nimport { LanguageApiService, ICreateLanguageDto, IUpdateLanguageDto } from '../../services/language-api.service';\n\ninterface ILanguageFormModel {\n code: string;\n name: string;\n nativeName: string;\n direction: 'ltr' | 'rtl';\n serial: string;\n isActive: boolean;\n isDefault: boolean;\n}\n\n@Component({\n selector: 'lib-language-form-page',\n imports: [AngularModule, PrimeModule, FormsModule, FormField, TranslatePipe],\n providers: [MessageService],\n template: `\n <p-card>\n <ng-template #header>\n <div class=\"flex justify-between items-center p-4\">\n <h2 class=\"text-xl font-semibold m-0\">\n {{ isEditMode() ? ('localization.language.edit' | translate) : ('localization.language.create' | translate) }}\n </h2>\n </div>\n </ng-template>\n\n <form (ngSubmit)=\"onSubmit()\" class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <!-- Language Code -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"code\" class=\"font-medium\">{{ 'localization.language.code' | translate }} *</label>\n <input\n pInputText\n id=\"code\"\n [formField]=\"formTree.code\"\n [placeholder]=\"'localization.placeholder.code' | translate\" />\n <small class=\"text-muted-color\">{{ 'localization.language.iso.code.hint' | translate }}</small>\n </div>\n\n <!-- Language Name -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"name\" class=\"font-medium\">{{ 'localization.language.name' | translate }} *</label>\n <input\n pInputText\n id=\"name\"\n [formField]=\"formTree.name\"\n [placeholder]=\"'localization.placeholder.name' | translate\" />\n </div>\n\n <!-- Native Name -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"nativeName\" class=\"font-medium\">{{ 'localization.language.native.name' | translate }}</label>\n <input\n pInputText\n id=\"nativeName\"\n [formField]=\"formTree.nativeName\"\n [placeholder]=\"'localization.placeholder.native.name' | translate\" />\n <small class=\"text-muted-color\">{{ 'localization.language.native.name.hint' | translate }}</small>\n </div>\n\n <!-- Text Direction -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"direction\" class=\"font-medium\">{{ 'localization.language.direction' | translate }} *</label>\n <p-select\n id=\"direction\"\n [ngModel]=\"formModel().direction\"\n (ngModelChange)=\"updateDirection($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n [options]=\"directionOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n class=\"w-full\" />\n </div>\n\n <!-- Display Order -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"serial\" class=\"font-medium\">{{ 'localization.language.display.order' | translate }}</label>\n <input\n pInputText\n id=\"serial\"\n type=\"number\"\n [formField]=\"formTree.serial\"\n [placeholder]=\"'shared.display.order.placeholder' | translate\" />\n </div>\n\n <!-- Empty cell for alignment -->\n <div class=\"hidden md:block\"></div>\n\n <!-- Checkboxes -->\n <div class=\"flex items-center gap-6 md:col-span-2 pt-4\">\n <label class=\"p-checkbox-native\">\n <input type=\"checkbox\" [formField]=\"formTree.isActive\" />\n <span>{{ 'shared.active' | translate }}</span>\n </label>\n <label class=\"p-checkbox-native\">\n <input type=\"checkbox\" [formField]=\"formTree.isDefault\" />\n <span>{{ 'localization.language.default' | translate }}</span>\n </label>\n </div>\n\n <!-- Actions -->\n <div class=\"flex justify-end gap-4 md:col-span-2 pt-4\">\n <p-button\n [label]=\"'shared.cancel' | translate\"\n severity=\"secondary\"\n [outlined]=\"true\"\n (onClick)=\"onCancel()\" />\n <p-button\n [label]=\"isEditMode() ? ('shared.update' | translate) : ('shared.create' | translate)\"\n type=\"submit\"\n [loading]=\"isSaving()\"\n [disabled]=\"!isFormValid() || isSaving()\" />\n </div>\n </form>\n </p-card>\n\n <p-toast />\n `,\n})\nexport class LanguageFormPage {\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly languageService = inject(LanguageApiService);\n private readonly messageService = inject(MessageService);\n private readonly translateAdapter = inject(TRANSLATE_ADAPTER, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly routeParams = toSignal(this.route.paramMap);\n private loadTriggered = false;\n\n readonly isSaving = signal(false);\n readonly existingLanguage = signal<ILanguage | null>(null);\n readonly isEditMode = computed(() => !!this.existingLanguage());\n\n private translate(key: string): string {\n return this.translateAdapter?.translate(key) ?? key;\n }\n\n readonly directionOptions = computed(() => [\n { label: this.translate('localization.language.direction.ltr'), value: 'ltr' },\n { label: this.translate('localization.language.direction.rtl'), value: 'rtl' },\n ]);\n\n readonly formModel = signal<ILanguageFormModel>({\n code: '',\n name: '',\n nativeName: '',\n direction: 'ltr',\n serial: '',\n isActive: true,\n isDefault: false,\n });\n\n readonly formTree = form(this.formModel, (f) => {\n required(f.code, { message: this.translate('localization.validation.code.required') });\n maxLength(f.code, 10, { message: this.translate('localization.validation.code.max.length') });\n required(f.name, { message: this.translate('localization.validation.name.required') });\n maxLength(f.name, 100, { message: this.translate('localization.validation.name.max.length') });\n });\n\n readonly isFormValid = computed(() => {\n const model = this.formModel();\n return model.code.trim().length > 0 && model.name.trim().length > 0;\n });\n\n constructor() {\n effect(() => {\n const params = this.routeParams();\n if (!params || this.loadTriggered) return;\n\n this.loadTriggered = true;\n const id = params.get('id');\n if (id && id !== 'new') {\n this.loadLanguage(id);\n }\n });\n }\n\n updateDirection(value: 'ltr' | 'rtl'): void {\n this.formModel.update((m) => ({ ...m, direction: value }));\n }\n\n\n loadLanguage(id: string): void {\n this.isSaving.set(true);\n this.languageService.getById(id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isSaving.set(false))\n )\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n this.existingLanguage.set(response.data);\n this.formModel.set(this.toFormModel(response.data));\n }\n },\n error: () => this.router.navigate(['/localization/languages']),\n });\n }\n\n private toFormModel(language: ILanguage): ILanguageFormModel {\n return {\n code: language.code,\n name: language.name,\n nativeName: language.nativeName ?? '',\n direction: language.direction ?? 'ltr',\n serial: language.serial?.toString() ?? '',\n isActive: language.isActive,\n isDefault: language.isDefault,\n };\n }\n\n onSubmit(): void {\n if (!this.isFormValid()) return;\n\n this.isSaving.set(true);\n const model = this.formModel();\n\n const dto = {\n code: model.code,\n name: model.name,\n nativeName: model.nativeName || undefined,\n direction: model.direction,\n serial: model.serial ? parseInt(model.serial, 10) : undefined,\n isActive: model.isActive,\n isDefault: model.isDefault,\n };\n\n const operation$ = this.isEditMode()\n ? this.languageService.update({ id: this.existingLanguage()!.id, ...dto } as IUpdateLanguageDto)\n : this.languageService.create(dto as ICreateLanguageDto);\n\n operation$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isSaving.set(false))\n )\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.messageService.add({\n severity: 'success',\n summary: this.translate('shared.success'),\n detail: this.translate(\n this.isEditMode() ? 'localization.language.update.success' : 'localization.language.create.success',\n ),\n });\n this.router.navigate(['/localization/languages']);\n }\n },\n });\n }\n\n onCancel(): void {\n this.router.navigate(['/localization/languages']);\n }\n}\n","import {\n Component,\n computed,\n DestroyRef,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { AngularModule, HasPermissionDirective, PrimeModule, TranslatePipe, TRANSLATION_KEY_PERMISSIONS } from '@flusys/ng-shared';\nimport { ConfirmationService, MessageService } from 'primeng/api';\nimport { forkJoin } from 'rxjs';\nimport { ILanguage } from '../../interfaces/language.interface';\nimport { ITranslationKey } from '../../interfaces/translation-key.interface';\nimport { LanguageApiService } from '../../services/language-api.service';\nimport { TranslateService } from '../../services/translate.service';\nimport { TranslationApiService } from '../../services/translation-api.service';\nimport { TranslationKeyApiService } from '../../services/translation-key-api.service';\n\n@Component({\n selector: 'lib-translation-key-list-page',\n imports: [AngularModule, PrimeModule, FormsModule, HasPermissionDirective, TranslatePipe],\n providers: [ConfirmationService, MessageService],\n template: `\n <div class=\"card\">\n <div class=\"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-3 mb-4\">\n <div>\n <h3 class=\"text-lg sm:text-xl font-semibold m-0\">{{ 'localization.key.title' | translate }}</h3>\n <p class=\"text-sm text-muted-color mt-1\">{{ 'localization.key.subtitle' | translate }}</p>\n </div>\n <div class=\"flex gap-2\">\n <p-button\n *hasPermission=\"TRANSLATION_KEY_PERMISSIONS.CREATE\"\n [label]=\"'localization.key.create' | translate\"\n icon=\"pi pi-plus\"\n (onClick)=\"onCreate()\"\n />\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"flex flex-col md:flex-row gap-4 mb-4\">\n <div class=\"flex-1\">\n <p-select\n [options]=\"moduleOptions()\"\n [ngModel]=\"selectedModule()\"\n (ngModelChange)=\"onModuleChange($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"'localization.key.filter.module' | translate\"\n [showClear]=\"true\"\n class=\"w-full\"\n />\n </div>\n <div class=\"flex-1\">\n <p-iconfield class=\"w-full\">\n <p-inputicon class=\"pi pi-search\" />\n <input\n pInputText\n [ngModel]=\"searchTerm()\"\n (ngModelChange)=\"searchTerm.set($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"'shared.search' | translate\"\n class=\"w-full\"\n />\n </p-iconfield>\n </div>\n </div>\n\n <!-- Table -->\n <p-table\n [value]=\"filteredKeys()\"\n [loading]=\"isLoading()\"\n [paginator]=\"true\"\n [rows]=\"15\"\n [rowsPerPageOptions]=\"[10, 15, 25, 50]\"\n styleClass=\"p-datatable-sm\"\n >\n <ng-template #header>\n <tr>\n <th style=\"width: 15%\">{{ 'localization.key.module' | translate }}</th>\n <th style=\"width: 25%\">{{ 'localization.key.name' | translate }}</th>\n <th style=\"width: 35%\">{{ 'localization.key.default.message' | translate }}</th>\n <th style=\"width: 10%\">{{ 'localization.key.translations' | translate }}</th>\n <th style=\"width: 15%\">{{ 'shared.actions' | translate }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-key>\n <tr>\n <td>\n <p-tag [value]=\"key.module\" severity=\"secondary\" />\n </td>\n <td>\n <div class=\"font-medium\">{{ key.key }}</div>\n @if (key.description) {\n <small class=\"text-muted-color\">{{ key.description }}</small>\n }\n </td>\n <td>{{ key.defaultMessage }}</td>\n <td class=\"text-center\">\n <span class=\"text-sm\" [class.text-green-500]=\"getTranslationCount(key.id) === languages().length\" [class.text-orange-500]=\"getTranslationCount(key.id) < languages().length && getTranslationCount(key.id) > 0\" [class.text-muted-color]=\"getTranslationCount(key.id) === 0\">\n {{ getTranslationCount(key.id) }}/{{ languages().length }}\n </span>\n </td>\n <td>\n <div class=\"flex gap-1\">\n <p-button\n *hasPermission=\"TRANSLATION_KEY_PERMISSIONS.UPDATE\"\n icon=\"pi pi-pencil\"\n [text]=\"true\"\n severity=\"secondary\"\n size=\"small\"\n [pTooltip]=\"'shared.edit' | translate\"\n (onClick)=\"onEdit(key)\"\n />\n <p-button\n *hasPermission=\"TRANSLATION_KEY_PERMISSIONS.DELETE\"\n icon=\"pi pi-trash\"\n [text]=\"true\"\n severity=\"danger\"\n size=\"small\"\n [pTooltip]=\"'shared.delete' | translate\"\n (onClick)=\"onDelete(key)\"\n />\n </div>\n </td>\n </tr>\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"5\" class=\"text-center py-4 text-muted-color\">\n {{ 'localization.key.empty' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n <p-confirmDialog />\n <p-toast />\n `,\n})\nexport class TranslationKeyListPage implements OnInit {\n readonly TRANSLATION_KEY_PERMISSIONS = TRANSLATION_KEY_PERMISSIONS;\n\n private readonly router = inject(Router);\n private readonly languageService = inject(LanguageApiService);\n private readonly translationKeyService = inject(TranslationKeyApiService);\n private readonly translationService = inject(TranslationApiService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly messageService = inject(MessageService);\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly isLoading = signal(false);\n readonly languages = signal<ILanguage[]>([]);\n readonly modules = signal<string[]>([]);\n readonly translationKeys = signal<ITranslationKey[]>([]);\n readonly translationCounts = signal<Map<string, number>>(new Map());\n readonly selectedModule = signal<string | null>(null);\n readonly searchTerm = signal('');\n\n readonly moduleOptions = computed(() => [\n { label: this.translateService.instant('shared.all'), value: null },\n ...this.modules().map((m) => ({ label: m, value: m })),\n ]);\n\n readonly filteredKeys = computed(() => {\n let keys = this.translationKeys();\n const module = this.selectedModule();\n const search = this.searchTerm().toLowerCase().trim();\n\n if (module) {\n keys = keys.filter((k) => k.module === module);\n }\n\n if (search) {\n keys = keys.filter(\n (k) =>\n k.key.toLowerCase().includes(search) ||\n k.defaultMessage.toLowerCase().includes(search) ||\n k.module.toLowerCase().includes(search),\n );\n }\n\n return keys;\n });\n\n ngOnInit(): void {\n this.loadData();\n }\n\n loadData(): void {\n this.isLoading.set(true);\n\n forkJoin({\n languages: this.languageService.getAll(),\n modules: this.translationKeyService.getModules(),\n keys: this.translationKeyService.getAll(),\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: ({ languages, modules, keys }) => {\n if (languages.success && languages.data) {\n this.languages.set(languages.data.filter((l) => l.isActive));\n }\n if (modules.success && modules.data) {\n this.modules.set(modules.data);\n }\n if (keys.success && keys.data) {\n this.translationKeys.set(keys.data);\n this.loadTranslationCounts();\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.isLoading.set(false);\n },\n });\n }\n\n loadTranslationCounts(): void {\n this.translationService.getCounts()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n this.translationCounts.set(new Map(Object.entries(response.data)));\n }\n },\n });\n }\n\n getTranslationCount(keyId: string): number {\n return this.translationCounts().get(keyId) ?? 0;\n }\n\n onModuleChange(value: string | null): void {\n this.selectedModule.set(value);\n }\n\n onCreate(): void {\n this.router.navigate(['/localization/keys/new']);\n }\n\n onEdit(key: ITranslationKey): void {\n this.router.navigate(['/localization/keys', key.id]);\n }\n\n onDelete(key: ITranslationKey): void {\n this.confirmationService.confirm({\n message: this.translateService.translate('shared.confirm.delete'),\n header: this.translateService.translate('localization.key.delete.title'),\n icon: 'pi pi-exclamation-triangle',\n acceptButtonStyleClass: 'p-button-danger',\n accept: () => {\n this.translationKeyService.delete(key.id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.instant('shared.success'),\n detail: this.translateService.instant('localization.translation.key.delete.success'),\n });\n this.loadData();\n }\n },\n });\n },\n });\n }\n}\n","import {\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { form, FormField, required } from '@angular/forms/signals';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TRANSLATE_ADAPTER } from '@flusys/ng-core';\nimport { AngularModule, PrimeModule, TranslatePipe } from '@flusys/ng-shared';\nimport { MessageService } from 'primeng/api';\nimport { finalize, forkJoin } from 'rxjs';\nimport { ILanguage } from '../../interfaces/language.interface';\nimport { ITranslationKey } from '../../interfaces/translation-key.interface';\nimport { LanguageApiService } from '../../services/language-api.service';\nimport { TranslationApiService, IBulkUpdateTranslationDto } from '../../services/translation-api.service';\nimport { TranslationKeyApiService, ICreateTranslationKeyDto, IUpdateTranslationKeyDto } from '../../services/translation-key-api.service';\n\ninterface ITranslationValue {\n languageId: string;\n value: string;\n translationId?: string;\n}\n\ninterface ITranslationKeyFormModel {\n key: string;\n module: string;\n defaultMessage: string;\n description: string;\n variables: string;\n}\n\n@Component({\n selector: 'lib-translation-key-form-page',\n imports: [AngularModule, PrimeModule, FormsModule, FormField, TranslatePipe],\n providers: [MessageService],\n template: `\n <p-card>\n <ng-template #header>\n <div class=\"flex justify-between items-center p-4\">\n <h2 class=\"text-xl font-semibold m-0\">\n {{ isEditMode() ? ('localization.key.edit' | translate) : ('localization.key.create' | translate) }}\n </h2>\n </div>\n </ng-template>\n\n <form (ngSubmit)=\"onSubmit()\" class=\"flex flex-col gap-6\">\n <!-- Key Info Section -->\n <div class=\"p-4 surface-ground rounded-lg\">\n <h4 class=\"font-semibold mt-0 mb-4\">{{ 'localization.key.about' | translate }}</h4>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <!-- Key Name -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"key\" class=\"font-medium\">{{ 'localization.key.name' | translate }} *</label>\n <input\n pInputText\n id=\"key\"\n [formField]=\"formTree.key\"\n [placeholder]=\"'localization.placeholder.key.name' | translate\" />\n </div>\n\n <!-- Module -->\n <div class=\"flex flex-col gap-2\">\n <label for=\"module\" class=\"font-medium\">{{ 'localization.key.module' | translate }} *</label>\n <p-select\n id=\"module\"\n [ngModel]=\"formModel().module\"\n (ngModelChange)=\"updateModule($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n [options]=\"moduleOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [editable]=\"true\"\n [placeholder]=\"'localization.key.select.module' | translate\"\n class=\"w-full\" />\n </div>\n\n <!-- Default Message -->\n <div class=\"flex flex-col gap-2 md:col-span-2\">\n <label for=\"defaultMessage\" class=\"font-medium\">{{ 'localization.key.default.message' | translate }} *</label>\n <textarea\n pInputTextarea\n id=\"defaultMessage\"\n [formField]=\"formTree.defaultMessage\"\n [rows]=\"2\"\n [placeholder]=\"'localization.placeholder.default.message' | translate\"></textarea>\n </div>\n\n <!-- Description -->\n <div class=\"flex flex-col gap-2 md:col-span-2\">\n <label for=\"description\" class=\"font-medium\">{{ 'localization.key.description' | translate }}</label>\n <input\n pInputText\n id=\"description\"\n [formField]=\"formTree.description\"\n [placeholder]=\"'localization.placeholder.key.description' | translate\" />\n </div>\n\n <!-- Variables -->\n <div class=\"flex flex-col gap-2 md:col-span-2\">\n <label for=\"variables\" class=\"font-medium\">{{ 'localization.key.variables' | translate }}</label>\n <input\n pInputText\n id=\"variables\"\n [formField]=\"formTree.variables\"\n [placeholder]=\"'localization.key.variables.placeholder' | translate\" />\n <small class=\"text-muted-color\">{{ 'localization.key.variables.hint' | translate }}</small>\n </div>\n </div>\n </div>\n\n <!-- Translations Section -->\n <div class=\"p-4 surface-ground rounded-lg\">\n <h4 class=\"font-semibold mt-0 mb-4\">{{ 'localization.key.translations.section' | translate }}</h4>\n @if (isLoadingLanguages()) {\n <div class=\"flex justify-center py-4\">\n <p-progressSpinner strokeWidth=\"4\" />\n </div>\n } @else if (languages().length === 0) {\n <p class=\"text-muted-color text-center py-4\">\n {{ 'localization.key.no.languages' | translate }}\n </p>\n } @else {\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n @for (lang of languages(); track lang.id) {\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex justify-between items-center\">\n <label class=\"font-medium\">\n {{ lang.name }}\n @if (lang.nativeName && lang.nativeName !== lang.name) {\n <span class=\"text-muted-color\">({{ lang.nativeName }})</span>\n }\n </label>\n <p-tag [value]=\"lang.code\" severity=\"secondary\" class=\"uppercase\" />\n </div>\n <textarea\n pInputTextarea\n [ngModel]=\"getTranslationValue(lang.id)\"\n (ngModelChange)=\"setTranslationValue(lang.id, $event)\"\n [ngModelOptions]=\"{standalone: true}\"\n [rows]=\"2\"\n [placeholder]=\"formModel().defaultMessage || ('localization.key.enter.translation' | translate)\"></textarea>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Actions -->\n <div class=\"flex justify-end gap-4 pt-4\">\n <p-button\n [label]=\"'shared.cancel' | translate\"\n severity=\"secondary\"\n [outlined]=\"true\"\n (onClick)=\"onCancel()\" />\n <p-button\n [label]=\"isEditMode() ? ('shared.update' | translate) : ('shared.create' | translate)\"\n type=\"submit\"\n [loading]=\"isSaving()\"\n [disabled]=\"!isFormValid() || isSaving()\" />\n </div>\n </form>\n </p-card>\n\n <p-toast />\n `,\n})\nexport class TranslationKeyFormPage implements OnInit {\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly languageService = inject(LanguageApiService);\n private readonly translationKeyService = inject(TranslationKeyApiService);\n private readonly translationService = inject(TranslationApiService);\n private readonly messageService = inject(MessageService);\n private readonly translateAdapter = inject(TRANSLATE_ADAPTER, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly routeParams = toSignal(this.route.paramMap);\n private loadTriggered = false;\n\n readonly isSaving = signal(false);\n readonly isLoadingLanguages = signal(false);\n readonly existingKey = signal<ITranslationKey | null>(null);\n readonly isEditMode = computed(() => !!this.existingKey());\n readonly languages = signal<ILanguage[]>([]);\n readonly modules = signal<string[]>([]);\n readonly translations = signal<ITranslationValue[]>([]);\n\n private translate(key: string): string {\n return this.translateAdapter?.translate(key) ?? key;\n }\n\n readonly moduleOptions = computed(() =>\n this.modules().map((m) => ({ label: m, value: m })),\n );\n\n readonly formModel = signal<ITranslationKeyFormModel>({\n key: '',\n module: '',\n defaultMessage: '',\n description: '',\n variables: '',\n });\n\n readonly formTree = form(this.formModel, (f) => {\n required(f.key, { message: this.translate('localization.validation.key.required') });\n required(f.defaultMessage, { message: this.translate('localization.validation.default.message.required') });\n });\n\n readonly isFormValid = computed(() => {\n const model = this.formModel();\n return model.key.trim().length > 0 && model.module.trim().length > 0 && model.defaultMessage.trim().length > 0;\n });\n\n constructor() {\n effect(() => {\n const params = this.routeParams();\n if (!params || this.loadTriggered) return;\n\n this.loadTriggered = true;\n const id = params.get('id');\n if (id && id !== 'new') {\n this.loadTranslationKey(id);\n }\n });\n }\n\n ngOnInit(): void {\n this.loadInitialData();\n }\n\n loadInitialData(): void {\n this.isLoadingLanguages.set(true);\n\n forkJoin({\n languages: this.languageService.getAll(),\n modules: this.translationKeyService.getModules(),\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isLoadingLanguages.set(false)),\n )\n .subscribe({\n next: ({ languages, modules }) => {\n if (languages.success && languages.data) {\n const activeLanguages = languages.data.filter((l) => l.isActive);\n this.languages.set(activeLanguages);\n this.initializeTranslations(activeLanguages);\n }\n if (modules.success && modules.data) {\n this.modules.set(modules.data);\n }\n },\n });\n }\n\n initializeTranslations(languages: ILanguage[]): void {\n const current = this.translations();\n if (current.length === 0) {\n this.translations.set(languages.map((lang) => ({ languageId: lang.id, value: '' })));\n }\n }\n\n updateModule(value: string): void {\n this.formModel.update((m) => ({ ...m, module: value ?? '' }));\n }\n\n getTranslationValue(languageId: string): string {\n return this.translations().find((t) => t.languageId === languageId)?.value ?? '';\n }\n\n setTranslationValue(languageId: string, value: string): void {\n this.translations.update((list) => {\n const existing = list.find((t) => t.languageId === languageId);\n if (existing) {\n return list.map((t) => (t.languageId === languageId ? { ...t, value } : t));\n }\n return [...list, { languageId, value }];\n });\n }\n\n loadTranslationKey(id: string): void {\n this.isSaving.set(true);\n this.translationKeyService.getById(id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isSaving.set(false)),\n )\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n this.existingKey.set(response.data);\n this.formModel.set(this.toFormModel(response.data));\n this.loadExistingTranslations(id);\n }\n },\n error: () => this.router.navigate(['/localization/keys']),\n });\n }\n\n loadExistingTranslations(keyId: string): void {\n this.translationService.getByKeyId(keyId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n this.translations.update((list) => {\n const updated = [...list];\n response.data!.forEach((t) => {\n const existing = updated.find((tr) => tr.languageId === t.languageId);\n if (existing) {\n existing.value = t.value;\n existing.translationId = t.id;\n } else {\n updated.push({ languageId: t.languageId, value: t.value, translationId: t.id });\n }\n });\n return updated;\n });\n }\n },\n });\n }\n\n private toFormModel(key: ITranslationKey): ITranslationKeyFormModel {\n return {\n key: key.key,\n module: key.module,\n defaultMessage: key.defaultMessage,\n description: key.description ?? '',\n variables: key.variables?.join(', ') ?? '',\n };\n }\n\n onSubmit(): void {\n if (!this.isFormValid()) return;\n\n this.isSaving.set(true);\n const model = this.formModel();\n\n const variables = model.variables\n .split(',')\n .map((v) => v.trim())\n .filter((v) => v.length > 0);\n\n if (this.isEditMode()) {\n this.updateKey(model, variables);\n } else {\n this.createKey(model, variables);\n }\n }\n\n private createKey(model: ITranslationKeyFormModel, variables: string[]): void {\n const createDto: ICreateTranslationKeyDto = {\n key: model.key,\n module: model.module,\n defaultMessage: model.defaultMessage,\n description: model.description || undefined,\n variables: variables.length > 0 ? variables : undefined,\n };\n\n this.translationKeyService.create(createDto)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n this.saveTranslations(response.data.id);\n } else {\n this.isSaving.set(false);\n }\n },\n error: () => this.isSaving.set(false),\n });\n }\n\n private updateKey(model: ITranslationKeyFormModel, variables: string[]): void {\n const updateDto: IUpdateTranslationKeyDto = {\n id: this.existingKey()!.id,\n key: model.key,\n module: model.module,\n defaultMessage: model.defaultMessage,\n description: model.description || undefined,\n variables: variables.length > 0 ? variables : undefined,\n };\n\n this.translationKeyService.update(updateDto)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.saveTranslations(this.existingKey()!.id);\n } else {\n this.isSaving.set(false);\n }\n },\n error: () => this.isSaving.set(false),\n });\n }\n\n private saveTranslations(keyId: string): void {\n const translationsToSave: IBulkUpdateTranslationDto[] = this.translations()\n .filter((t) => t.value?.trim())\n .map((t) => ({\n id: t.translationId,\n languageId: t.languageId,\n translationKeyId: keyId,\n value: t.value,\n isVerified: false,\n }));\n\n if (translationsToSave.length === 0) {\n this.onSaveSuccess();\n return;\n }\n\n this.translationService.bulkUpdate(translationsToSave)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => this.onSaveSuccess(),\n error: () => this.onSaveSuccess(),\n });\n }\n\n private onSaveSuccess(): void {\n this.messageService.add({\n severity: 'success',\n summary: this.translate('shared.success'),\n detail: this.translate(\n this.isEditMode() ? 'localization.translation.key.update.success' : 'localization.translation.key.create.success',\n ),\n });\n this.isSaving.set(false);\n this.router.navigate(['/localization/keys']);\n }\n\n onCancel(): void {\n this.router.navigate(['/localization/keys']);\n }\n}\n","import {\n Component,\n computed,\n DestroyRef,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { AngularModule, PrimeModule, TranslatePipe } from '@flusys/ng-shared';\nimport { MessageService } from 'primeng/api';\nimport { forkJoin } from 'rxjs';\nimport { ILanguage } from '../../interfaces/language.interface';\nimport { ITranslationKey } from '../../interfaces/translation-key.interface';\nimport { ITranslationWithKey } from '../../interfaces/translation.interface';\nimport { LanguageApiService } from '../../services/language-api.service';\nimport { TranslateService } from '../../services/translate.service';\nimport { TranslationApiService, IBulkUpdateTranslationDto } from '../../services/translation-api.service';\nimport { TranslationKeyApiService } from '../../services/translation-key-api.service';\n\ninterface ITranslationRow {\n translationKey: ITranslationKey;\n translation: ITranslationWithKey | null;\n editValue: string;\n isVerified: boolean;\n isDirty: boolean;\n}\n\n@Component({\n selector: 'lib-translation-list-page',\n imports: [AngularModule, PrimeModule, FormsModule, TranslatePipe],\n providers: [MessageService],\n template: `\n <div class=\"card\">\n <div class=\"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 mb-4\">\n <h2 class=\"text-xl font-semibold m-0\">{{ 'localization.translation.title' | translate }}</h2>\n <div class=\"flex gap-2\">\n <p-button\n [label]=\"'shared.save' | translate\"\n icon=\"pi pi-save\"\n [disabled]=\"!hasChanges()\"\n [loading]=\"isSaving()\"\n (onClick)=\"saveChanges()\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-col md:flex-row gap-4 mb-4\">\n <div class=\"flex-1\">\n <label class=\"block font-medium mb-2\">{{ 'localization.translation.module' | translate }}</label>\n <p-select\n [options]=\"moduleOptions()\"\n [ngModel]=\"selectedModule()\"\n (ngModelChange)=\"onModuleChange($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"'localization.translation.select.module' | translate\"\n class=\"w-full\"\n />\n </div>\n <div class=\"flex-1\">\n <label class=\"block font-medium mb-2\">{{ 'localization.translation.language' | translate }}</label>\n <p-select\n [options]=\"languageOptions()\"\n [ngModel]=\"selectedLanguageId()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"'localization.translation.select.language' | translate\"\n class=\"w-full\"\n />\n </div>\n <div class=\"flex-1\">\n <label class=\"block font-medium mb-2\">{{ 'shared.search' | translate }}</label>\n <p-iconfield class=\"w-full\">\n <p-inputicon class=\"pi pi-search\" />\n <input\n pInputText\n [ngModel]=\"searchTerm()\"\n (ngModelChange)=\"searchTerm.set($event)\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"'localization.translation.search.keys' | translate\"\n class=\"w-full\"\n />\n </p-iconfield>\n </div>\n </div>\n\n @if (isLoading()) {\n <div class=\"flex justify-center py-8\">\n <p-progressSpinner strokeWidth=\"4\" />\n </div>\n } @else if (!selectedLanguageId()) {\n <div class=\"text-center py-8 text-muted-color\">\n <p>{{ 'localization.translation.select.language.hint' | translate }}</p>\n </div>\n } @else if (filteredRows().length === 0) {\n <div class=\"text-center py-8 text-muted-color\">\n <p>{{ 'localization.translation.no.keys' | translate }}</p>\n </div>\n } @else {\n <p-table\n [value]=\"filteredRows()\"\n [paginator]=\"true\"\n [rows]=\"20\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"paginationTemplate()\"\n styleClass=\"p-datatable-sm\"\n >\n <ng-template #header>\n <tr>\n <th style=\"width: 30%\">{{ 'localization.translation.key' | translate }}</th>\n <th style=\"width: 25%\">{{ 'localization.translation.default.message' | translate }}</th>\n <th style=\"width: 35%\">{{ 'localization.translation.value' | translate }}</th>\n <th style=\"width: 10%\">{{ 'localization.translation.verified' | translate }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-row>\n <tr [class.bg-yellow-50]=\"row.isDirty\">\n <td>\n <div class=\"font-medium text-sm\">{{ row.translationKey.key }}</div>\n @if (row.translationKey.description) {\n <small class=\"text-muted-color\">{{ row.translationKey.description }}</small>\n }\n @if (row.translationKey.variables?.length) {\n <div class=\"mt-1\">\n @for (v of row.translationKey.variables; track v) {\n <span class=\"text-xs bg-surface-100 px-2 py-1 rounded mr-1\">{{ formatVariable(v) }}</span>\n }\n </div>\n }\n </td>\n <td>\n <span class=\"text-sm\">{{ row.translationKey.defaultMessage }}</span>\n </td>\n <td>\n <textarea\n pInputTextarea\n [(ngModel)]=\"row.editValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [rows]=\"2\"\n class=\"w-full\"\n [placeholder]=\"row.translationKey.defaultMessage\"\n (input)=\"onValueChange(row)\"\n ></textarea>\n </td>\n <td class=\"text-center\">\n <p-checkbox\n [(ngModel)]=\"row.isVerified\"\n [ngModelOptions]=\"{standalone: true}\"\n [binary]=\"true\"\n (onChange)=\"onVerifiedChange(row)\"\n />\n </td>\n </tr>\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <td colspan=\"4\" class=\"text-center py-4 text-muted-color\">\n {{ 'shared.no.results' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n }\n\n <div class=\"flex justify-between items-center mt-4\">\n <div class=\"text-muted-color\">\n @if (hasChanges()) {\n <span class=\"text-orange-500\">\n <i class=\"pi pi-exclamation-circle mr-1\"></i>\n {{ 'localization.translation.unsaved.changes' | translate: { count: changedCount() } }}\n </span>\n }\n </div>\n <p-button\n [label]=\"'shared.save' | translate\"\n icon=\"pi pi-save\"\n [disabled]=\"!hasChanges()\"\n [loading]=\"isSaving()\"\n (onClick)=\"saveChanges()\"\n />\n </div>\n </div>\n\n <p-toast />\n `,\n})\nexport class TranslationListPage implements OnInit {\n private readonly languageService = inject(LanguageApiService);\n private readonly translationKeyService = inject(TranslationKeyApiService);\n private readonly translationService = inject(TranslationApiService);\n private readonly messageService = inject(MessageService);\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly isLoading = signal(false);\n readonly isSaving = signal(false);\n readonly languages = signal<ILanguage[]>([]);\n readonly modules = signal<string[]>([]);\n readonly translationRows = signal<ITranslationRow[]>([]);\n readonly selectedModule = signal<string | null>(null);\n readonly selectedLanguageId = signal<string | null>(null);\n readonly searchTerm = signal('');\n\n readonly moduleOptions = computed(() => [\n { label: this.translateService.instant('localization.translation.all.modules'), value: null },\n ...this.modules().map((m) => ({ label: m, value: m })),\n ]);\n\n readonly paginationTemplate = computed(() =>\n this.translateService.instant('localization.translation.pagination'),\n );\n\n readonly languageOptions = computed(() =>\n this.languages().map((l) => ({\n label: `${l.name} (${l.code})`,\n value: l.id,\n })),\n );\n\n readonly filteredRows = computed(() => {\n const rows = this.translationRows();\n const search = this.searchTerm().toLowerCase().trim();\n\n if (!search) return rows;\n\n return rows.filter(\n (r) =>\n r.translationKey.key.toLowerCase().includes(search) ||\n r.translationKey.defaultMessage.toLowerCase().includes(search) ||\n r.editValue.toLowerCase().includes(search),\n );\n });\n\n readonly hasChanges = computed(() => this.translationRows().some((r) => r.isDirty));\n\n readonly changedCount = computed(() => this.translationRows().filter((r) => r.isDirty).length);\n\n formatVariable(v: string): string {\n return `{{${v}}}`;\n }\n\n ngOnInit(): void {\n this.loadInitialData();\n }\n\n loadInitialData(): void {\n this.isLoading.set(true);\n\n forkJoin({\n languages: this.languageService.getAll(),\n modules: this.translationKeyService.getModules(),\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: ({ languages, modules }) => {\n if (languages.success && languages.data) {\n this.languages.set(languages.data.filter((l) => l.isActive));\n const defaultLang = languages.data.find((l) => l.isDefault);\n if (defaultLang) {\n this.selectedLanguageId.set(defaultLang.id);\n } else if (languages.data.length > 0) {\n this.selectedLanguageId.set(languages.data[0].id);\n }\n }\n if (modules.success && modules.data) {\n this.modules.set(modules.data);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.isLoading.set(false);\n },\n });\n }\n\n onModuleChange(value: string | null): void {\n this.selectedModule.set(value);\n this.loadTranslations();\n }\n\n onLanguageChange(value: string | null): void {\n this.selectedLanguageId.set(value);\n this.loadTranslations();\n }\n\n loadTranslations(): void {\n const languageId = this.selectedLanguageId();\n if (!languageId) {\n this.translationRows.set([]);\n return;\n }\n\n this.isLoading.set(true);\n const module = this.selectedModule();\n\n const keysRequest = module\n ? this.translationKeyService.getByModule(module)\n : this.translationKeyService.getAll();\n\n const translationsRequest = module\n ? this.translationService.getByModuleAndLanguageId(module, languageId)\n : this.translationService.getByLanguageId(languageId);\n\n forkJoin({\n keys: keysRequest,\n translations: translationsRequest,\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: ({ keys, translations }) => {\n const translationMap = new Map<string, ITranslationWithKey>();\n if (translations.success && translations.data) {\n translations.data.forEach((t) => {\n translationMap.set(t.translationKeyId, t);\n });\n }\n\n const rows: ITranslationRow[] = [];\n if (keys.success && keys.data) {\n keys.data.forEach((key) => {\n const translation = translationMap.get(key.id) ?? null;\n rows.push({\n translationKey: key,\n translation,\n editValue: translation?.value ?? '',\n isVerified: translation?.isVerified ?? false,\n isDirty: false,\n });\n });\n }\n\n this.translationRows.set(rows);\n this.isLoading.set(false);\n },\n error: () => {\n this.isLoading.set(false);\n },\n });\n }\n\n onValueChange(row: ITranslationRow): void {\n const originalValue = row.translation?.value ?? '';\n const originalVerified = row.translation?.isVerified ?? false;\n row.isDirty = row.editValue !== originalValue || row.isVerified !== originalVerified;\n this.translationRows.update((rows) => [...rows]);\n }\n\n onVerifiedChange(row: ITranslationRow): void {\n this.onValueChange(row);\n }\n\n saveChanges(): void {\n const changedRows = this.translationRows().filter((r) => r.isDirty);\n const languageId = this.selectedLanguageId();\n if (changedRows.length === 0 || !languageId) return;\n\n this.isSaving.set(true);\n\n const items: IBulkUpdateTranslationDto[] = changedRows.map((row) => ({\n id: row.translation?.id,\n languageId,\n translationKeyId: row.translationKey.id,\n value: row.editValue,\n isVerified: row.isVerified,\n }));\n\n this.translationService\n .bulkUpdate(items)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.instant('localization.translation.save.success'),\n detail: this.translateService.instant('localization.translation.save.success.detail'),\n });\n this.loadTranslations();\n }\n this.isSaving.set(false);\n },\n error: () => {\n this.isSaving.set(false);\n },\n });\n }\n}\n","// Interfaces\nexport * from './interfaces/language.interface';\nexport * from './interfaces/localization-config.interface';\nexport * from './interfaces/translation-key.interface';\nexport * from './interfaces/translation.interface';\n\n// Constants\nexport * from './constants/localization.constants';\nexport * from './constants/messages';\n\n// Services\nexport * from './services/localization-state.service';\nexport * from './services/localization-api.service';\nexport * from './services/localization-initializer.service';\nexport * from './services/translate.service';\nexport * from './services/translation-loader.service';\nexport * from './services/language-api.service';\nexport * from './services/translation-key-api.service';\nexport * from './services/translation-api.service';\n\n// Components\nexport * from './components/language-selector/language-selector.component';\n\n// Providers\nexport * from './providers/localization.providers';\n\n// Pages\nexport * from './pages/routes';\nexport * from './pages/localization-container/localization-container.page';\nexport * from './pages/language-list/language-list.page';\nexport * from './pages/language-form/language-form.page';\nexport * from './pages/translation-key-list/translation-key-list.page';\nexport * from './pages/translation-key-form/translation-key-form.page';\nexport * from './pages/translation-list/translation-list.page';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_forTrack0","_c0","i1","i2","i3","i5","i4","i6","_c1","i7","i9","i11","i8"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@flusys/ng-localization",
|
|
3
|
+
"version": "4.0.0-rc",
|
|
4
|
+
"description": "Localization module for multi-language support in FLUSYS Angular apps",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"peerDependencies": {
|
|
7
|
+
"@angular/common": ">=21.0.0",
|
|
8
|
+
"@angular/core": ">=21.0.0",
|
|
9
|
+
"@angular/forms": ">=21.0.0",
|
|
10
|
+
"@angular/router": ">=21.0.0",
|
|
11
|
+
"@flusys/ng-core": ">=4.0.0-rc",
|
|
12
|
+
"@flusys/ng-shared": ">=4.0.0-rc",
|
|
13
|
+
"@primeuix/themes": ">=1.0.0",
|
|
14
|
+
"primeicons": ">=7.0.0",
|
|
15
|
+
"primeng": ">=21.0.0"
|
|
16
|
+
},
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"module": "fesm2022/flusys-ng-localization.mjs",
|
|
19
|
+
"typings": "types/flusys-ng-localization.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
"./package.json": {
|
|
22
|
+
"default": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./types/flusys-ng-localization.d.ts",
|
|
26
|
+
"default": "./fesm2022/flusys-ng-localization.mjs"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"tslib": "^2.3.0"
|
|
31
|
+
}
|
|
32
|
+
}
|