@acorex-platform/module-locale-management-client 0.0.21

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-locale-management-client.mjs","sources":["../../../../libs/modules/locale-management/client/src/lib/manifest.ts","../../../../libs/modules/locale-management/client/src/lib/features/shared/regional-store.service.ts","../../../../libs/modules/locale-management/client/src/lib/features/shared/locale-management.service.ts","../../../../libs/modules/locale-management/client/src/lib/features/shared/language-slot/language-slot.component.ts","../../../../libs/modules/locale-management/client/src/lib/features/shared/language-slot/language-slot.component.html","../../../../libs/modules/locale-management/client/src/lib/features/shared/locale-profile-provider.service.ts","../../../../libs/modules/locale-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/locale-management/client/src/lib/menu.provider.ts","../../../../libs/modules/locale-management/client/src/lib/settings.provider.ts","../../../../libs/modules/locale-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/locale-management/client/src/lib/context-definition.provider.ts","../../../../libs/modules/locale-management/client/src/lib/locale-management.module.ts","../../../../libs/modules/locale-management/client/src/acorex-platform-module-locale-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-locale-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Locale Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const LocaleManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'platform',\n domain: 'platform',\n required: true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","import { AXPPlatformScope, AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\n\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleProfile, AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject } from '@angular/core';\nimport { patchState, signalStore, withHooks, withMethods, withState } from '@ngrx/signals';\n\nconst REGIONAL_SETTING_KEYS = [\n AXPRegionalSetting.LocaleProfile,\n AXPRegionalSetting.Language,\n AXPRegionalSetting.Calendar,\n] as const;\n\n// Regional Store - Manages regional settings and system changes\nexport const AXPRegionalStoreService = signalStore(\n { providedIn: 'root' },\n // Initial State\n withState(() => {\n // Initialize with safe defaults - actual values will be loaded via loadSetting()\n const state = {\n profile: null as string | null,\n language: null as string | null,\n calendar: null as string | null,\n };\n return state;\n }),\n\n // Computed Signals\n // withComputed(({ }) => ({\n\n // })),\n\n // Methods for State Management\n withMethods(\n (\n store,\n settingsService = inject(AXPSettingsService),\n localeService = inject(AXLocaleService),\n calendarService = inject(AXCalendarService),\n translateService = inject(AXTranslationService)\n ) => {\n\n const applyChanges = async () => {\n const profile = localeService.activeProfile();\n const html = document.getElementsByTagName('html')[0];\n profile.i18nMeta?.rtl ? html.setAttribute('dir', 'rtl') : html.removeAttribute('dir');\n };\n\n const applyProfileFormats = async (profile: AXLocaleProfile) => {\n const date = profile.formats?.date;\n if (date?.short) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.ShortDate, date.short);\n }\n if (date?.medium) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.MediumDate, date.medium);\n }\n if (date?.long) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.LongDate, date.long);\n }\n const time = profile.formats?.time;\n if (time?.short) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.ShortTime, time.short);\n }\n if (time?.medium) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.MediumTime, time.medium);\n }\n if (time?.long) {\n await settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.LongTime, time.long);\n }\n };\n\n return {\n async changeProfile(profileCode: string) {\n await localeService.setProfile(profileCode);\n const profile = localeService.activeProfile();\n if (store.profile() != profile.localeInfo.code) {\n settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.LocaleProfile, profile.localeInfo.code);\n settingsService.scope(AXPPlatformScope.User).set(AXPRegionalSetting.Language, profile.localeInfo.code);\n patchState(store, { profile: profile.localeInfo.code });\n }\n await applyProfileFormats(profile);\n await applyChanges();\n },\n /**\n * Applies effective regional settings (user → tenant → platform) to locale, calendar, i18n, and document direction.\n */\n async loadSetting() {\n const profileCode =\n ((await settingsService.get(AXPRegionalSetting.LocaleProfile)) as string) || 'en-US';\n patchState(store, { profile: profileCode });\n if (profileCode) {\n await localeService.setProfile(profileCode);\n }\n\n const calendar = (await settingsService.get(AXPRegionalSetting.Calendar)) as string | undefined;\n if (calendar) {\n patchState(store, { calendar });\n calendarService.setActiveCalendar(calendar);\n }\n\n const language = (await settingsService.get(AXPRegionalSetting.Language)) as string | undefined;\n if (language) {\n patchState(store, { language });\n translateService.setActiveLang(language);\n }\n\n await applyChanges();\n },\n };\n }\n ),\n withHooks((store, settingsService = inject(AXPSettingsService)) => ({\n onInit() {\n settingsService.onLoaded.subscribe(() => {\n void store.loadSetting();\n });\n settingsService.onChanged.subscribe(async (setting) => {\n if (REGIONAL_SETTING_KEYS.some((k) => setting.keys.includes(k))) {\n await store.loadSetting();\n }\n });\n },\n onDestroy() {},\n })),\n);\n","import { AXPQueryRequest } from '@acorex-platform/framework-shared/core';\nimport {\n AXPLanguage,\n AXPLocaleManagementPort,\n AXPLocaleProfile,\n AXPSettingsService,\n AXPTimeZone,\n resolveEffectiveAvailableLanguageCodes,\n} from '@acorex-platform/framework-client/common';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport {\n getLocaleProfileCatalogCodes,\n RootConfig,\n AXMLocaleManagementLanguagesEntityModel,\n AXMLocaleManagementLocalesEntityModel,\n AXMLocaleManagementTimezonesEntityModel,\n} from '@acorex-platform/module-locale-management-client/contracts';\n\n/** Simple cache - timezones are static reference data */\nlet timezonesCache: AXPTimeZone[] | null = null;\n/** Dedupes concurrent bootstrap callers so a failed/slow query cannot storm the API. */\nlet timezonesLoadPromise: Promise<AXPTimeZone[]> | null = null;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMLocaleManagementService implements AXPLocaleManagementPort {\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly languagesDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.languages.name)\n .data<string, AXMLocaleManagementLanguagesEntityModel>();\n private readonly timezonesDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timezones.name)\n .data<string, AXMLocaleManagementTimezonesEntityModel>();\n private readonly localesDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.locales.name)\n .data<string, AXMLocaleManagementLocalesEntityModel>();\n\n private activeQuery: AXPQueryRequest = {\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'isActive',\n operator: {\n type: 'equal',\n },\n value: true,\n },\n ],\n },\n sort: [\n {\n field: 'title',\n dir: 'asc',\n },\n ],\n };\n\n async getLocaleProfiles(): Promise<AXPLocaleProfile[]> {\n const { profiles } = await import('./data/profiles');\n const catalogCodes = getLocaleProfileCatalogCodes();\n if (!catalogCodes?.length) {\n return profiles;\n }\n const allowSet = new Set(catalogCodes);\n const filtered = profiles.filter((profile) => allowSet.has(profile.code));\n return filtered.length > 0 ? filtered : profiles;\n }\n\n async getAvailableLocaleProfiles(): Promise<AXPLocaleProfile[]> {\n const profiles = await this.getLocaleProfiles();\n const allowed = await resolveEffectiveAvailableLanguageCodes(this.settingsService);\n if (allowed.length === 0) {\n return profiles;\n }\n const allowSet = new Set(allowed);\n return profiles.filter((profile) => allowSet.has(profile.code));\n }\n\n async getLanguages(): Promise<AXPLanguage[]> {\n const result = await this.languagesDataAccessor.query(this.activeQuery);\n return result.items.map((c: AXMLocaleManagementLanguagesEntityModel) => ({\n code: c.code,\n title: c.title,\n } as AXPLanguage));\n }\n\n async getLocales(): Promise<AXPLanguage[]> {\n const result = await this.localesDataAccessor.query(this.activeQuery);\n return result.items.map((c: AXMLocaleManagementLocalesEntityModel) => ({\n code: c.code,\n title: c.title,\n } as AXPLanguage));\n }\n\n async getAvailableLanguages(): Promise<AXPLanguage[]> {\n const profiles = await this.getAvailableLocaleProfiles();\n return profiles.map((profile) => ({\n code: profile.code,\n title: profile.title,\n }));\n }\n\n async getTimeZones(): Promise<AXPTimeZone[]> {\n if (timezonesCache) {\n return timezonesCache;\n }\n if (!timezonesLoadPromise) {\n timezonesLoadPromise = this.loadTimeZones().finally(() => {\n timezonesLoadPromise = null;\n });\n }\n return timezonesLoadPromise;\n }\n\n async getBrowserTimeZoneCode(): Promise<string> {\n // Prefer browser IANA zone — no network needed during app bootstrap / login.\n const browserIana =\n typeof Intl !== 'undefined'\n ? Intl.DateTimeFormat().resolvedOptions().timeZone\n : undefined;\n if (browserIana) {\n return browserIana;\n }\n\n try {\n const timeZones = await this.getTimeZones();\n const offsetMinutes = new Date().getTimezoneOffset() * -1;\n const matchedZone = timeZones.find((zone) => zone.offset === offsetMinutes);\n return matchedZone?.code ?? 'UTC';\n } catch {\n return 'UTC';\n }\n }\n\n private async loadTimeZones(): Promise<AXPTimeZone[]> {\n try {\n const result = await this.timezonesDataAccessor.query({\n ...this.activeQuery,\n sort: [{ field: 'standardOffset', dir: 'asc' }],\n });\n const padZero = (value: number) => value.toString().padStart(2, '0');\n const formatOffset = (offset: number) => {\n const sign = offset > 0 ? '+' : '-';\n const hours = padZero(Math.floor(Math.abs(offset) / 60));\n const minutes = padZero(Math.abs(offset % 60));\n return `${sign}${hours}:${minutes}`;\n };\n timezonesCache = result.items.map((c: AXMLocaleManagementTimezonesEntityModel) => ({\n code: c.code,\n title: `${c.title} (${formatOffset(c.standardOffset)})`,\n offset: c.standardOffset,\n iana: c.code,\n abbr: c.abbreviation,\n } as AXPTimeZone));\n return timezonesCache;\n } catch {\n // Do not cache failures — allow retry after login when auth is available.\n return [];\n }\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPLocaleProfile } from '@acorex-platform/framework-client/common';\n\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { AXPRegionalStoreService } from '../regional-store.service';\nimport { AXMLocaleManagementService } from '../locale-management.service';\n\n@Component({\n imports: [AXDropdownModule, AXDecoratorModule, AXPopoverModule, AXButtonModule],\n templateUrl: './language-slot.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMLanguageSlotComponent {\n private localeManagementService = inject(AXMLocaleManagementService);\n protected store = inject(AXPRegionalStoreService);\n protected items = signal<AXPLocaleProfile[]>([]);\n\n async ngOnInit() {\n const items = await this.localeManagementService.getAvailableLocaleProfiles();\n this.items.set(items);\n }\n}\n","<ax-button color=\"primary\">\n <ax-icon class=\"fa-regular fa-globe\"> </ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(lang of items(); track lang){\n <ax-button-item\n [text]=\"lang.title\"\n [selected]=\"store.profile() === lang.code\"\n (onClick)=\"store.changeProfile(lang.code)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-flag\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n</ax-button>\n","import { inject, Injectable } from '@angular/core';\nimport { AXLocaleProfile, AXLocaleProfileProvider } from '@acorex/core/locale';\nimport { AXMLocaleManagementService } from './locale-management.service';\n\n/**\n * Custom locale profile provider that integrates with the locale-management module\n * to provide profiles from the platform's data instead of the default UI library profiles\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMLocaleProfileProviderService implements AXLocaleProfileProvider {\n private readonly localeManagementService = inject(AXMLocaleManagementService);\n\n /**\n * Provides locale profiles from the locale-management module\n * This allows the platform to override the default UI library profiles\n */\n async provide(): Promise<Record<string, () => Promise<AXLocaleProfile> | AXLocaleProfile>> {\n try {\n // Get profiles from the locale-management module\n const profiles = await this.localeManagementService.getLocaleProfiles();\n\n // Convert to the format expected by the UI library\n const result: Record<string, () => Promise<AXLocaleProfile> | AXLocaleProfile> = {};\n\n for (const profile of profiles) {\n try {\n // Convert AXPLocaleProfile to AXLocaleProfile (remove platform-specific properties)\n const coreProfile: AXLocaleProfile = {\n localeInfo: profile.localeInfo,\n calendar: profile.calendar,\n formats: profile.formats,\n units: profile.units,\n i18nMeta: profile.i18nMeta,\n };\n\n // Validate that the profile has all required properties\n if (this.isValidProfile(coreProfile)) {\n // Store the profile with lazy loading for better performance\n result[profile.code] = () => Promise.resolve(coreProfile);\n } else {\n console.warn(`[AXMLocaleProfileProviderService] Profile ${profile.code} is missing required properties, skipping`);\n }\n } catch (profileError) {\n console.error(`[AXMLocaleProfileProviderService] Error processing profile ${profile.code}:`, profileError);\n }\n }\n\n if (Object.keys(result).length === 0) {\n console.warn('[AXMLocaleProfileProviderService] No valid profiles found, falling back to default behavior');\n } else {\n //console.log(`[AXMLocaleProfileProviderService] Successfully loaded ${Object.keys(result).length} profiles:`, Object.keys(result));\n }\n\n return result;\n } catch (error) {\n console.error('[AXMLocaleProfileProviderService] Failed to load profiles:', error);\n\n // Fallback to empty result if loading fails\n return {};\n }\n }\n\n /**\n * Validates that a profile has all required properties\n */\n private isValidProfile(profile: any): profile is AXLocaleProfile {\n return (\n profile &&\n profile.localeInfo &&\n profile.calendar &&\n profile.formats &&\n profile.units &&\n typeof profile.localeInfo.code === 'string' &&\n typeof profile.localeInfo.language === 'string'\n );\n }\n\n /**\n * Gets the list of available locale codes from the locale-management module\n * This can be used by other services to check available locales\n */\n async getAvailableLocaleCodes(): Promise<string[]> {\n try {\n const profiles = await this.localeManagementService.getLocaleProfiles();\n return profiles.map(p => p.code);\n } catch (error) {\n console.error('[AXMLocaleProfileProviderService] Failed to get available locale codes:', error);\n return [];\n }\n }\n\n /**\n * Checks if a specific locale is available\n */\n async hasLocale(localeCode: string): Promise<boolean> {\n try {\n const codes = await this.getAvailableLocaleCodes();\n return codes.includes(localeCode);\n } catch (error) {\n console.error(`[AXMLocaleProfileProviderService] Failed to check locale ${localeCode}:`, error);\n return false;\n }\n }\n}\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPApplicationsPlatformPermissionKeys\n} from '@acorex-platform/module-locale-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers MaintainLocales under Applications & Platform.\n */\n@Injectable()\nexport class AXMLocaleManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPApplicationsPlatformPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:applications-platform.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, { order: 110 });\n\n context\n .addGroup(\n groups.ApplicationsPlatform.Configuration,\n `${G}.applications-platform-configuration.title`,\n `${G}.applications-platform-configuration.description`,\n { parent: groups.ApplicationsPlatform.Root, order: 30 },\n )\n .addPermission(keys.MaintainLocales, `${P}.maintain-locales.title`, `${P}.maintain-locales.description`, {\n modules: ['LocaleManagement'],\n requiredFeatures: ['LocaleManagement'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-locale-management-client/contracts';\nimport { AXPLocaleManagementMenuKeys } from '@acorex-platform/module-locale-management-client/contracts';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-locale-management-client/contracts';\n\nexport class AXMLocaleManagementMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const maintainLocales = AXPApplicationsPlatformPermissionKeys.MaintainLocales;\n\n // Languages under Configuration/Region\n context.find(AXPCommonMenuKeys.Region).addItems([\n {\n name: AXPLocaleManagementMenuKeys.Languages,\n text: '@locale-management:languages.menus.languages.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.languages.name),\n icon: RootConfig.entities.languages.icon,\n priority: 3,\n policy: {\n features: [module.name],\n permissions: [maintainLocales],\n },\n },\n ]);\n\n // Timezones under Configuration/Date and Time\n context.find(AXPCommonMenuKeys.DateAndTime).addItems([\n {\n name: AXPLocaleManagementMenuKeys.Timezones,\n text: '@locale-management:timezones.menus.timezones.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.timezones.name),\n icon: RootConfig.entities.timezones.icon,\n priority: 1,\n policy: {\n features: [module.name],\n permissions: [maintainLocales],\n },\n },\n ]);\n }\n}\n","\nimport { AXPRegionalSetting, AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\n\nimport { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';\nimport { Injectable, Injector } from '@angular/core';\n\nimport { AXMLocaleManagementService } from './features/shared/locale-management.service';\n\n@Injectable()\nexport class AXMRegionalSettingProvider implements AXPSettingDefinitionProvider {\n private readonly regionalService = this.injector.get(AXMLocaleManagementService);\n private readonly translateService = this.injector.get(AXTranslationService);\n\n constructor(private injector: Injector) { }\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n const i18n = (key: string) => `@locale-management:settings.settings.regional.${key}`;\n const profiles = await this.regionalService.getLocaleProfiles();\n const defaultProfile = profiles.find((p) => p.code === 'en-US')!;\n const defaultAvailableLanguages = profiles.map((p) => p.code);\n const multipleLanguagesVisibility = `{{ ((await settings.get('${AXPRegionalSetting.AvailableLanguages}')) || []).length > 1 }}`;\n\n context\n .addGroup(\n 'regional-settings',\n i18n('nav-title'),\n i18n('description'),\n 'fa-light fa-earth-americas',\n i18n('title'),\n 30,\n )\n\n // Date & Time Section\n .addSection('date-time', i18n('datetime.title'), i18n('datetime.description'))\n .addSetting({\n key: AXPRegionalSetting.TimeZone,\n title: i18n('datetime.timezone.title'),\n scope: 'T',\n overridableAt: ['U'],\n isInherited: true,\n defaultValue: 'UTC',\n valueTransforms: objectKeyValueTransforms('code'),\n widget: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'LocaleManagement.Timezones',\n look: 'select',\n allowSearch: true,\n valueField: 'code',\n textField: 'title',\n filter: {\n logic: 'and',\n filters: [{ field: 'isActive', operator: { type: 'equal' }, value: true }],\n },\n },\n },\n description: i18n('datetime.timezone.description'),\n })\n .endSection()\n\n // Region Section\n .addSection('region', i18n('region.title'), i18n('region.description'))\n .addSetting({\n key: AXPRegionalSetting.AvailableLanguages,\n title: i18n('region.available-languages.title'),\n scope: 'P',\n overridableAt: ['T'],\n isInherited: true,\n defaultValue: defaultAvailableLanguages,\n widget: {\n type: AXPWidgetsList.Editors.SelectionList,\n options: {\n multiple: true,\n valueField: 'code',\n textField: 'title',\n dataSource: 'LocaleManagement:ListLocaleProfiles',\n },\n },\n description: i18n('region.available-languages.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.LocaleProfile,\n title: i18n('region.format.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.code,\n valueTransforms: objectKeyValueTransforms('code'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'code',\n textField: 'title',\n dataSource: 'LocaleManagement:ListAvailableLocaleProfiles',\n visibility: multipleLanguagesVisibility,\n },\n },\n description: i18n('region.format.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.Language,\n title: i18n('region.language.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: await this.translateService.getDefaultLang(),\n valueTransforms: objectKeyValueTransforms('code'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'code',\n textField: 'title',\n dataSource: 'LocaleManagement:ListAvailableLocaleProfiles',\n visibility: multipleLanguagesVisibility,\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: `{{ widget.setValue(context.eval('${AXPRegionalSetting.LocaleProfile}')) }}`,\n },\n ],\n },\n description: i18n('region.language.description'),\n })\n\n .addSetting({\n key: AXPRegionalSetting.Calendar,\n title: i18n('region.calendar.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.calendar.system,\n valueTransforms: objectKeyValueTransforms('id'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: 'CalendarManagement:ListCalendarSystems',\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').calendar.system) }}`,\n ],\n },\n ],\n },\n description: i18n('region.calendar.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.CalendarEvents,\n title: i18n('region.calendar-events.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: [],\n widget: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'CalendarManagement.Calendar',\n look: 'select',\n multiple: true,\n valueField: 'id',\n textField: 'title',\n filter: {\n logic: 'or',\n filters: [\n { field: 'isArchived', operator: { type: 'equal' }, value: false },\n { field: 'isArchived', operator: { type: 'isNull' } },\n ],\n },\n },\n },\n description: i18n('region.calendar-events.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.FirstDayOfWeek,\n title: i18n('region.firstday.title'),\n scope: 'T',\n overridableAt: [],\n isInherited: false,\n defaultValue: defaultProfile.calendar.week.startsOn,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: [\n {\n text: i18n('region.firstday.options.saturday'),\n value: 6,\n },\n {\n text: i18n('region.firstday.options.sunday'),\n value: 0,\n },\n {\n text: i18n('region.firstday.options.monday'),\n value: 1,\n },\n ],\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').calendar.week.startsOn) }}`,\n ],\n },\n ],\n },\n },\n description: i18n('region.firstday.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.WeekendDays,\n title: i18n('region.workdays.title'),\n scope: 'T',\n overridableAt: [],\n isInherited: false,\n defaultValue: defaultProfile.calendar.week.weekends,\n widget: {\n type: AXPWidgetsList.Editors.SelectionList,\n options: {\n multiple: true,\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { text: i18n('region.workdays.options.monday'), value: 1 },\n { text: i18n('region.workdays.options.tuesday'), value: 2 },\n { text: i18n('region.workdays.options.wednesday'), value: 3 },\n { text: i18n('region.workdays.options.thursday'), value: 4 },\n { text: i18n('region.workdays.options.friday'), value: 5 },\n { text: i18n('region.workdays.options.saturday'), value: 6 },\n { text: i18n('region.workdays.options.sunday'), value: 0 },\n ],\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').calendar.week.weekends) }}`,\n ],\n },\n ],\n },\n description: i18n('region.workdays.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.MultiLanguageSupport,\n title: i18n('region.multilanguage-support.title'),\n scope: 'T',\n overridableAt: [],\n isInherited: true,\n defaultValue: false,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: i18n('region.multilanguage-support.description'),\n })\n // .addSetting({\n // key: AXPRegionalSetting.ShortDate,\n // title: i18n('region.shortdate.title'),\n // scope: 'U',\n // isInherited: true,\n // defaultValue: defaultProfile.formats.date.medium,\n // valueTransforms: objectKeyValueTransforms('value'),\n // widget: {\n // type: AXPWidgetsList.Editors.SelectBox,\n // options: {\n // valueField: 'value',\n // textField: 'text',\n // dataSource: await Promise.all(\n // profiles.map(async (c) => ({\n // text: `${c.formats.date.medium} (${await this.formatService.format(new Date(), 'datetime', { format: c.formats.date.medium })})`,\n // value: c.formats.date.medium,\n // })),\n // ),\n // },\n // triggers: [\n // {\n // event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n // action: [\n // `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').formats.date.short) }}`,\n // ],\n // },\n // ],\n // },\n // description: i18n('region.shortdate.description'),\n // })\n // .addSetting({\n // key: AXPRegionalSetting.LongDate,\n // title: i18n('region.longdate.title'),\n // scope: 'U',\n // isInherited: true,\n // defaultValue: defaultProfile.formats.date.long,\n // valueTransforms: objectKeyValueTransforms('value'),\n // widget: {\n // type: AXPWidgetsList.Editors.SelectBox,\n // options: {\n // valueField: 'value',\n // textField: 'text',\n // dataSource: await Promise.all(\n // profiles.map(async (c) => ({\n // text: `${c.formats.date.long} (${await this.formatService.format(new Date(), 'datetime', { format: c.formats.date.long })})`,\n // value: c.formats.date.long,\n // })),\n // ),\n // },\n // triggers: [\n // {\n // event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n // action: [\n // `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').formats.date.long) }}`,\n // ],\n // },\n // ],\n // },\n // description: i18n('region.longdate.description'),\n // })\n // .addSetting({\n // key: AXPRegionalSetting.ShortTime,\n // title: i18n('region.shorttime.title'),\n // scope: 'U',\n // isInherited: true,\n // defaultValue: defaultProfile.formats.time.short,\n // valueTransforms: objectKeyValueTransforms('value'),\n // widget: {\n // type: AXPWidgetsList.Editors.SelectBox,\n // options: {\n // valueField: 'value',\n // textField: 'text',\n // dataSource: await Promise.all(\n // profiles.map(async (c) => ({\n // text: `${c.formats.time.short} (${await this.formatService.format(new Date(), 'datetime', { format: c.formats.time.short })})`,\n // value: c.formats.time.short,\n // })),\n // ),\n // },\n // triggers: [\n // {\n // event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n // action: [\n // `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').formats.time.short) }}`,\n // ],\n // },\n // ],\n // },\n // description: i18n('region.shorttime.description'),\n // })\n // .addSetting({\n // key: AXPRegionalSetting.LongTime,\n // title: i18n('region.longtime.title'),\n // scope: 'U',\n // isInherited: true,\n // defaultValue: defaultProfile.formats.time.long,\n // valueTransforms: objectKeyValueTransforms('value'),\n // widget: {\n // type: AXPWidgetsList.Editors.SelectBox,\n // options: {\n // valueField: 'value',\n // textField: 'text',\n // dataSource: await Promise.all(\n // profiles.map(async (c) => ({\n // text: `${c.formats.time.long} (${await this.formatService.format(new Date(), 'datetime', { format: c.formats.time.long })})`,\n // value: c.formats.time.long,\n // })),\n // ),\n // },\n // triggers: [\n // {\n // event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n // action: [\n // `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').formats.time.long) }}`,\n // ],\n // },\n // ],\n // },\n // description: i18n('region.longtime.description'),\n // })\n .endSection()\n\n // Unit Settings Section\n .addSection('units', i18n('units.title'), i18n('units.description'))\n .addSetting({\n key: AXPRegionalSetting.TemperatureUnits,\n title: i18n('units.temperature.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.temperature,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: profiles.map((c) => ({\n text: i18n(`units.temperature.options.${c.units!.temperature}`),\n value: c.units!.temperature,\n })),\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.temperature) }}`,\n ],\n },\n ],\n },\n description: i18n('units.temperature.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.DistanceUnits,\n title: i18n('units.distance.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.distance,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: profiles.map((c) => ({\n text: i18n(`units.distance.options.${c.units!.distance}`),\n value: c.units!.distance,\n })),\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.distance) }}`,\n ],\n },\n ],\n },\n description: i18n('units.distance.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.WeightUnits,\n title: i18n('units.weight.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.weight,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: profiles.map((c) => ({\n text: i18n(`units.weight.options.${c.units!.weight}`),\n value: c.units!.weight,\n })),\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.weight) }}`,\n ],\n },\n ],\n },\n description: i18n('units.weight.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.VolumeUnits,\n title: i18n('units.volume.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.volume,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { text: i18n('units.volume.options.liters'), value: 'liters' },\n { text: i18n('units.volume.options.gallons'), value: 'gallons' },\n ],\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.volume) }}`,\n ],\n },\n ],\n },\n description: i18n('units.volume.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.SpeedUnits,\n title: i18n('units.speed.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.speed,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: profiles.map((c) => ({\n text: i18n(`units.speed.options.${c.units!.speed}`),\n value: c.units!.speed,\n })),\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.speed) }}`,\n ],\n },\n ],\n },\n description: i18n('units.speed.description'),\n })\n .addSetting({\n key: AXPRegionalSetting.AreaUnits,\n title: i18n('units.area.title'),\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue: defaultProfile.units!.area,\n valueTransforms: objectKeyValueTransforms('value'),\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: profiles.map((c) => ({\n text: i18n(`units.area.options.${c.units!.area}`),\n value: c.units!.area,\n })),\n },\n triggers: [\n {\n event: `{{ events.context('${AXPRegionalSetting.LocaleProfile}') }}`,\n action: [\n `{{ widget.setValue(widget.find('${AXPRegionalSetting.LocaleProfile}').output('item').units.area) }}`,\n ],\n },\n ],\n },\n description: i18n('units.area.description'),\n })\n .endSection()\n .endGroup();\n }\n}\n","import { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-locale-management-client/contracts';\n\nexport class AXMLocaleManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-language',\n group: 'command',\n title: 'New Language',\n icon: RootConfig.entities.languages.icon,\n description: 'Create a new language with locales.',\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.languages.name}`,\n {\n name: RootConfig.entities.languages.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.languages.title,\n }\n ),\n },\n },\n {\n id: 'create-timezone',\n group: 'command',\n title: 'New Timezone',\n icon: RootConfig.entities.timezones.icon,\n description: 'Create a new timezone definition.',\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.timezones.name}`,\n {\n name: RootConfig.entities.timezones.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.timezones.title,\n }\n ),\n },\n },\n ];\n}\n","import { Injectable } from '@angular/core';\nimport type { AXPContextDefinition, AXPContextDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { AXM_LOCALE_CONTEXT_DEFINITIONS } from '@acorex-platform/module-locale-management-contracts';\n\n//#region ---- Locale & regional context definitions ----\n\n@Injectable()\nexport class AXMLocaleManagementContextDefinitionProvider implements AXPContextDefinitionProvider {\n async items(): Promise<AXPContextDefinition[]> {\n return AXM_LOCALE_CONTEXT_DEFINITIONS;\n }\n}\n\n//#endregion\n","import { Injector, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AXP_CONTEXT_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n AXPAppStartUpService,\n AXP_APP_STARTUP_PRIORITY,\n} from '@acorex-platform/framework-client/core';\nimport { provideQuerySetups } from '@acorex-platform/framework-client/runtime';\n\nimport { LocaleManagementManifest } from './manifest';\nimport { AXPComponentSlotModule } from '@acorex-platform/framework-client/core';\nimport { AXMLanguageSlotComponent } from './features/shared/language-slot/language-slot.component';\nimport { AXPRegionalStoreService } from './features/shared/regional-store.service';\nimport {\n AXP_LOCALE_MANAGEMENT_PORT,\n AXP_MENU_PROVIDER,\n AXP_SEARCH_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n AXPPlatformSettingsLoadState,\n AXPRegionalCalendarService,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\n\n// Locale Profile Provider Integration\nimport { AX_LOCALE_PROFILE_PROVIDERS } from '@acorex/core/locale';\nimport { AXMLocaleProfileProviderService } from './features/shared/locale-profile-provider.service';\nimport { AXMLocaleManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMLocaleManagementMenuProvider } from './menu.provider';\n\nimport { AXMRegionalSettingProvider } from './settings.provider';\nimport { AXMLocaleManagementSearchCommandProvider } from './search-command.provider';\nimport { AXMLocaleManagementService } from './features/shared/locale-management.service';\nimport { AXMLocaleManagementContextDefinitionProvider } from './context-definition.provider';\nimport { AXCalendarService } from '@acorex/core/date-time';\n\n/** Hide the header language switch when the tenant allow-list has at most one profile. */\nconst LANGUAGE_SLOT_VISIBLE_WHEN_MULTIPLE = `{{ ((await settings.get('${AXPRegionalSetting.AvailableLanguages}')) || []).length > 1 }}`;\n\n@NgModule({\n imports: [\n CommonModule,\n AXPComponentSlotModule.forChild({\n 'root-header-end': [\n {\n name: 'language',\n component: AXMLanguageSlotComponent,\n condition: LANGUAGE_SLOT_VISIBLE_WHEN_MULTIPLE,\n },\n ],\n }),\n ],\n providers: [\n {\n provide: AXP_LOCALE_MANAGEMENT_PORT,\n useExisting: AXMLocaleManagementService,\n },\n // Module-specific providers (not part of manifest system)\n {\n provide: AX_LOCALE_PROFILE_PROVIDERS,\n useClass: AXMLocaleProfileProviderService,\n multi: true,\n },\n {\n provide: AXCalendarService,\n useClass: AXPRegionalCalendarService,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: LocaleManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMLocaleManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMLocaleManagementMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMRegionalSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMLocaleManagementSearchCommandProvider,\n multi: true,\n },\n provideQuerySetups([\n {\n key: 'LocaleManagement:ListLocaleProfiles',\n loader: () =>\n import('./features/queries/list-locale-profiles.query').then(\n (c) => c.AXMListLocaleProfilesQuery,\n ),\n },\n {\n key: 'LocaleManagement:ListAvailableLocaleProfiles',\n loader: () =>\n import('./features/queries/list-available-locale-profiles.query').then(\n (c) => c.AXMListAvailableLocaleProfilesQuery,\n ),\n },\n ]),\n {\n provide: AXP_CONTEXT_DEFINITION_PROVIDER,\n useClass: AXMLocaleManagementContextDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXMLocaleManagementModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n const service = injector.get(AXPRegionalStoreService);\n const platformSettingsLoadState = injector.get(AXPPlatformSettingsLoadState);\n appInitService.registerTask({\n name: 'regional-settings',\n statusText: '@locale-management:app-startup.applying-regional-settings',\n priority: AXP_APP_STARTUP_PRIORITY.regionalSettings,\n run: async () => {\n if (\n platformSettingsLoadState.hasFailure() ||\n platformSettingsLoadState.hasPendingOfflineContinue() ||\n platformSettingsLoadState.isOfflineMode()\n ) {\n return;\n }\n await service.loadSetting();\n },\n });\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-locale-management-client",
3
+ "version": "0.0.21",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-module-locale-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-locale-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-locale-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-locale-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-locale-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-locale-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,126 @@
1
+ import { AXPContextDefinition } from '@acorex-platform/framework-shared/core';
2
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
3
+
4
+ declare const AXM_LOCALE_CONTEXT_DEFINITIONS: AXPContextDefinition[];
5
+
6
+ declare const AXPLocaleManagementMenuKeys: {
7
+ readonly Root: "locale-management:menu";
8
+ readonly Languages: "locale-management:menu:languages";
9
+ readonly Divider1: "locale-management:menu:divider-1";
10
+ readonly Timezones: "locale-management:menu:timezones";
11
+ };
12
+
13
+ /**
14
+ * Applications & Platform capabilities used by this module.
15
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
16
+ */
17
+ declare const AXPApplicationsPlatformPermissionKeys: {
18
+ readonly Access: "ApplicationsPlatform:Permission:Access";
19
+ readonly MaintainApplications: "ApplicationsPlatform:Permission:MaintainApplications";
20
+ readonly MaintainTenants: "ApplicationsPlatform:Permission:MaintainTenants";
21
+ readonly MaintainPlatformShell: "ApplicationsPlatform:Permission:MaintainPlatformShell";
22
+ readonly MaintainLandingPages: "ApplicationsPlatform:Permission:MaintainLandingPages";
23
+ readonly MaintainIdentifiers: "ApplicationsPlatform:Permission:MaintainIdentifiers";
24
+ readonly MaintainTenantSettings: "ApplicationsPlatform:Permission:MaintainTenantSettings";
25
+ readonly MaintainPlatformSettings: "ApplicationsPlatform:Permission:MaintainPlatformSettings";
26
+ readonly MaintainLocales: "ApplicationsPlatform:Permission:MaintainLocales";
27
+ readonly UseDevTools: "ApplicationsPlatform:Permission:UseDevTools";
28
+ };
29
+ /**
30
+ * @deprecated Prefer {@link AXPApplicationsPlatformPermissionKeys}.
31
+ * Legacy nested shape kept so existing imports compile during migration.
32
+ */
33
+ declare const AXMPermissionsKeys: {
34
+ readonly LocaleManagement: {
35
+ readonly Management: "ApplicationsPlatform:Permission:MaintainLocales";
36
+ readonly Language: {
37
+ readonly Management: "ApplicationsPlatform:Permission:MaintainLocales";
38
+ readonly View: "ApplicationsPlatform:Permission:MaintainLocales";
39
+ readonly Edit: "ApplicationsPlatform:Permission:MaintainLocales";
40
+ readonly Delete: "ApplicationsPlatform:Permission:MaintainLocales";
41
+ readonly Create: "ApplicationsPlatform:Permission:MaintainLocales";
42
+ };
43
+ readonly Timezone: {
44
+ readonly Management: "ApplicationsPlatform:Permission:MaintainLocales";
45
+ readonly View: "ApplicationsPlatform:Permission:MaintainLocales";
46
+ readonly Edit: "ApplicationsPlatform:Permission:MaintainLocales";
47
+ readonly Delete: "ApplicationsPlatform:Permission:MaintainLocales";
48
+ readonly Create: "ApplicationsPlatform:Permission:MaintainLocales";
49
+ };
50
+ };
51
+ };
52
+
53
+ /**
54
+ * Restrict which built-in locale profiles appear in the Available Languages picker.
55
+ * Pass `null` or an empty list to restore the full built-in catalog.
56
+ */
57
+ declare function configureLocaleProfileCatalogCodes(codes: readonly string[] | null): void;
58
+ /** Configured catalog allow-list, or `null` when the full built-in catalog is used. */
59
+ declare function getLocaleProfileCatalogCodes(): readonly string[] | null;
60
+
61
+ declare const RootConfig: {
62
+ readonly config: {
63
+ i18n: string;
64
+ };
65
+ readonly module: {
66
+ readonly name: "LocaleManagement";
67
+ readonly title: "@locale-management:module.title";
68
+ readonly icon: "fa-light fa-globe";
69
+ };
70
+ readonly entities: {
71
+ readonly languages: {
72
+ readonly name: "Languages";
73
+ readonly title: "@locale-management:languages.entities.language.title";
74
+ readonly titlePlural: "@locale-management:languages.entities.language.plural";
75
+ readonly icon: "fa-light fa-language";
76
+ };
77
+ readonly locales: {
78
+ readonly name: "Locales";
79
+ readonly title: "@locale-management:locales.entities.locale.title";
80
+ readonly titlePlural: "@locale-management:locales.entities.locale.plural";
81
+ readonly icon: "fa-light fa-globe";
82
+ };
83
+ readonly timezones: {
84
+ readonly name: "Timezones";
85
+ readonly title: "@locale-management:timezones.entities.timezone.title";
86
+ readonly titlePlural: "@locale-management:timezones.entities.timezone.plural";
87
+ readonly icon: "fa-light fa-clock";
88
+ };
89
+ };
90
+ };
91
+
92
+ interface AXMLocaleManagementLanguagesEntityModel extends AXPEntityModel<string> {
93
+ code: string;
94
+ title: string;
95
+ nativeTitle: string;
96
+ isRTL: boolean;
97
+ isActive: boolean;
98
+ createdAt: Date;
99
+ updatedAt: Date;
100
+ }
101
+
102
+ interface AXMLocaleManagementLocalesEntityModel extends AXPEntityModel<string> {
103
+ languageId: string;
104
+ code: string;
105
+ title: string;
106
+ countryCode: string;
107
+ isDefault: boolean;
108
+ isActive: boolean;
109
+ createdAt: Date;
110
+ updatedAt: Date;
111
+ }
112
+
113
+ interface AXMLocaleManagementTimezonesEntityModel extends AXPEntityModel<string> {
114
+ code: string;
115
+ title: string;
116
+ abbreviation: string;
117
+ standardOffset: number;
118
+ supportsDST: boolean;
119
+ region: string;
120
+ isActive: boolean;
121
+ createdAt: Date;
122
+ updatedAt: Date;
123
+ }
124
+
125
+ export { AXMPermissionsKeys, AXM_LOCALE_CONTEXT_DEFINITIONS, AXPApplicationsPlatformPermissionKeys, AXPLocaleManagementMenuKeys, RootConfig, configureLocaleProfileCatalogCodes, getLocaleProfileCatalogCodes };
126
+ export type { AXMLocaleManagementLanguagesEntityModel, AXMLocaleManagementLocalesEntityModel, AXMLocaleManagementTimezonesEntityModel };
@@ -0,0 +1,82 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injector } from '@angular/core';
3
+ import * as i2 from '@acorex-platform/framework-client/core';
4
+ import { AXPAppStartUpService } from '@acorex-platform/framework-client/core';
5
+ import * as i1 from '@angular/common';
6
+ import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult, AXPLocaleManagementPort, AXPLocaleProfile, AXPLanguage, AXPTimeZone } from '@acorex-platform/framework-client/common';
7
+ import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
8
+ import { AXLocaleProfileProvider, AXLocaleProfile } from '@acorex/core/locale';
9
+
10
+ declare class AXMLocaleManagementModule {
11
+ constructor(appInitService: AXPAppStartUpService, injector: Injector);
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMLocaleManagementModule, never>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMLocaleManagementModule, never, [typeof i1.CommonModule, typeof i2.AXPComponentSlotModule], never>;
14
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMLocaleManagementModule>;
15
+ }
16
+
17
+ declare class AXMLocaleManagementMenuProvider implements AXPMenuProvider {
18
+ private entityService;
19
+ provide(context: AXPMenuProviderContext): Promise<void>;
20
+ }
21
+
22
+ declare class AXMLocaleManagementSearchCommandProvider extends AXPSearchCommandProvider {
23
+ commands: AXPSearchResult[];
24
+ }
25
+
26
+ /**
27
+ * Registers MaintainLocales under Applications & Platform.
28
+ */
29
+ declare class AXMLocaleManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
30
+ define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMLocaleManagementPermissionDefinitionProvider, never>;
32
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMLocaleManagementPermissionDefinitionProvider>;
33
+ }
34
+
35
+ declare class AXMLocaleManagementService implements AXPLocaleManagementPort {
36
+ private readonly entityService;
37
+ private readonly settingsService;
38
+ private readonly languagesDataAccessor;
39
+ private readonly timezonesDataAccessor;
40
+ private readonly localesDataAccessor;
41
+ private activeQuery;
42
+ getLocaleProfiles(): Promise<AXPLocaleProfile[]>;
43
+ getAvailableLocaleProfiles(): Promise<AXPLocaleProfile[]>;
44
+ getLanguages(): Promise<AXPLanguage[]>;
45
+ getLocales(): Promise<AXPLanguage[]>;
46
+ getAvailableLanguages(): Promise<AXPLanguage[]>;
47
+ getTimeZones(): Promise<AXPTimeZone[]>;
48
+ getBrowserTimeZoneCode(): Promise<string>;
49
+ private loadTimeZones;
50
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMLocaleManagementService, never>;
51
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMLocaleManagementService>;
52
+ }
53
+
54
+ /**
55
+ * Custom locale profile provider that integrates with the locale-management module
56
+ * to provide profiles from the platform's data instead of the default UI library profiles
57
+ */
58
+ declare class AXMLocaleProfileProviderService implements AXLocaleProfileProvider {
59
+ private readonly localeManagementService;
60
+ /**
61
+ * Provides locale profiles from the locale-management module
62
+ * This allows the platform to override the default UI library profiles
63
+ */
64
+ provide(): Promise<Record<string, () => Promise<AXLocaleProfile> | AXLocaleProfile>>;
65
+ /**
66
+ * Validates that a profile has all required properties
67
+ */
68
+ private isValidProfile;
69
+ /**
70
+ * Gets the list of available locale codes from the locale-management module
71
+ * This can be used by other services to check available locales
72
+ */
73
+ getAvailableLocaleCodes(): Promise<string[]>;
74
+ /**
75
+ * Checks if a specific locale is available
76
+ */
77
+ hasLocale(localeCode: string): Promise<boolean>;
78
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMLocaleProfileProviderService, never>;
79
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMLocaleProfileProviderService>;
80
+ }
81
+
82
+ export { AXMLocaleManagementMenuProvider, AXMLocaleManagementModule, AXMLocaleManagementPermissionDefinitionProvider, AXMLocaleManagementSearchCommandProvider, AXMLocaleManagementService, AXMLocaleProfileProviderService };