@acorex-platform/module-settings-management-client 0.0.24 → 0.0.28

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.
@@ -18,6 +18,7 @@ import { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes
18
18
  import { Router, ROUTES } from '@angular/router';
19
19
  import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
20
20
  import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
21
+ import { AXCRuntimeRemoteApiModule } from '@acorex-platform/client-connectivity-api';
21
22
 
22
23
  /**
23
24
  * Filters setting groups for in-page search. When `settingSearchTextByKey` is provided (lowercased
@@ -915,7 +916,7 @@ class AXMSettingsManagementModule {
915
916
  });
916
917
  }
917
918
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingsManagementModule, deps: [{ token: i1.AXPAppStartUpService }, { token: i2.AXPSettingsService }, { token: i2.AXPPlatformSettingsLoadState }, { token: i2.AXPPlatformSettingsOfflineBootstrapService }], target: i0.ɵɵFactoryTarget.NgModule }); }
918
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingsManagementModule }); }
919
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingsManagementModule, imports: [AXCRuntimeRemoteApiModule] }); }
919
920
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingsManagementModule, providers: [
920
921
  {
921
922
  provide: AXP_SETTINGS_SYNC_KEYS,
@@ -962,12 +963,12 @@ class AXMSettingsManagementModule {
962
963
  useValue: SettingsManagementProfileSectionsHookProvider,
963
964
  multi: true,
964
965
  },
965
- ] }); }
966
+ ], imports: [AXCRuntimeRemoteApiModule] }); }
966
967
  }
967
968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingsManagementModule, decorators: [{
968
969
  type: NgModule,
969
970
  args: [{
970
- imports: [],
971
+ imports: [AXCRuntimeRemoteApiModule],
971
972
  exports: [],
972
973
  declarations: [],
973
974
  providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-settings-management-client.mjs","sources":["../../../../libs/modules/settings-management/client/src/lib/features/settings/convert-setting-data.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings.viewmodel.ts","../../../../libs/modules/settings-management/client/src/lib/manifest.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/search-definition.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/search.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings-page-can-deactivate.guard.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings-scope.guard.ts","../../../../libs/modules/settings-management/client/src/lib/menu.provider.ts","../../../../libs/modules/settings-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/profile-page/settings-management-profile-sections.hook.ts","../../../../libs/modules/settings-management/client/src/lib/profile-slot-settings-menu.hook.ts","../../../../libs/modules/settings-management/client/src/lib/settings-management.module.ts","../../../../libs/modules/settings-management/client/src/acorex-platform-module-settings-management-client.ts"],"sourcesContent":["import { AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex-platform/framework-client/common';\n\n/**\n * Filters setting groups for in-page search. When `settingSearchTextByKey` is provided (lowercased\n * translated blobs keyed by setting name), setting matches use it; otherwise a raw key fallback is used.\n */\nexport function searchSettings(\n groups: AXPSettingDefinitionGroup[],\n search: string,\n settingSearchTextByKey?: Record<string, string>,\n): AXPSettingDefinitionGroup[] {\n const trimmed = search?.trim() ?? '';\n if (!trimmed) {\n return [];\n }\n\n const normalizedSearch = trimmed.toLowerCase();\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(normalizedSearch) ||\n section.title.toLowerCase().includes(normalizedSearch);\n\n const settingSearchBlob = (setting: AXPSettingDefinition): string => {\n const fromIndex = settingSearchTextByKey?.[setting.name];\n if (fromIndex) {\n return fromIndex;\n }\n return [setting.name, setting.title, setting.description ?? '', ...(setting.searchTagKeys ?? [])]\n .join(' ')\n .toLowerCase();\n };\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter((setting) => {\n const blob = settingSearchBlob(setting);\n return (\n setting.name.toLowerCase().includes(normalizedSearch) ||\n blob.includes(normalizedSearch)\n );\n });\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXPPageStatus } from '@acorex-platform/framework-shared/widget-core';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingsService,\n traceSettingsPageLoadComplete,\n traceSettingsPageLoadStarted,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPPlatformScope,\n AXPPlatformScopeKey,\n getSmart,\n resolvePlatformScopeName,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPDeviceService } from '@acorex-platform/framework-client/core';\n\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { cloneDeep, get, isEmpty, isEqual, isNil } from 'lodash';\nimport { filter, merge } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\n\n/** Delay before reload so the success toast is visible. */\nconst PAGE_REFRESH_DELAY_MS = 500;\n\n/** Setting keys are flat (may contain dots). Prefer own-property, then smart path. */\nfunction readFlatSettingValue(context: Record<string, unknown>, key: string): unknown {\n if (Object.prototype.hasOwnProperty.call(context, key)) {\n return context[key];\n }\n return getSmart(context, key);\n}\n\nfunction collectSettingKeys(groups: AXPSettingDefinitionGroup[]): string[] {\n const keys: string[] = [];\n const walkSections = (sections: AXPSettingDefinitionSection[]) => {\n for (const section of sections) {\n for (const setting of section.settings) {\n keys.push(setting.name);\n }\n }\n };\n const walkGroups = (gs: AXPSettingDefinitionGroup[]) => {\n for (const group of gs) {\n walkSections(group.sections);\n walkGroups(group.groups);\n }\n };\n walkGroups(groups);\n return keys;\n}\n\nexport const AXPSettingsViewModel = signalStore(\n withState(() => ({\n groups: [] as AXPSettingDefinitionGroup[],\n activateGroup: undefined as AXPSettingDefinitionGroup | undefined,\n scope: 'U' as AXPPlatformScopeKey,\n //\n searchExpression: null as string | null,\n settingSearchTextByKey: {} as Record<string, string>,\n //\n previousContext: {} as Record<string, any>,\n context: {} as Record<string, any>,\n /** Synced from {@link AXPWidgetContainerComponent.isFormDirty}. */\n formDirty: false,\n /** Bumped after apply so the settings view can commit the container saved baseline. */\n applySyncNonce: 0,\n /** Suppresses container→VM dirty echo while post-save baseline sync runs. */\n syncingBaseline: false,\n /** Bumped after discard so the settings view can revert the container to saved. */\n discardSyncNonce: 0,\n //\n status: AXPPageStatus.Processing,\n form: null as AXFormComponent | null,\n })),\n withComputed((store, deviceService = inject(AXPDeviceService)) => ({\n searchResults: computed(() => {\n const q = store.searchExpression();\n if (q == null || !q.trim()) {\n return [];\n }\n return searchSettings(store.groups(), q, store.settingSearchTextByKey());\n }),\n hasActivateGroup: computed(() => store.activateGroup() != null),\n showGroups: computed(() => store.activateGroup() != null && deviceService.isLarge()),\n scopeTitle: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.title`;\n }),\n scopeDescription: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.description`;\n }),\n isSearching: computed(() => store.searchExpression() != null),\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isLoaded: computed(() => store.groups().length > 0),\n isDirty: computed(() => store.formDirty()),\n })),\n withMethods(\n (\n store,\n settingDefinitionService = inject(AXPSettingDefinitionProviderService),\n settingValueService = inject(AXPSettingsService),\n toastService = inject(AXToastService),\n translateService = inject(AXTranslationService),\n ) => ({\n registerForm(form: AXFormComponent) {\n patchState(store, {\n form: form,\n });\n },\n async load(scope: AXPPlatformScopeKey) {\n traceSettingsPageLoadStarted(scope, 'settings-page-vm-load');\n const startedAt = Date.now();\n patchState(store, {\n scope: scope,\n status: AXPPageStatus.Processing,\n });\n try {\n const groups = await settingDefinitionService.getListAsync(scope);\n patchState(store, {\n groups: groups,\n });\n await this.rebuildSettingSearchIndex();\n // Settings admin must bind server partition values. `all()` alone can reuse a warm\n // IndexedDB/memory snapshot that omits non-cacheable keys (e.g. SMTP).\n await settingValueService.reload(scope as AXPPlatformScope, 'settings-page-open');\n const currentContext = await settingValueService.scope(scope as AXPPlatformScope).all();\n const defaults = await settingValueService.scope(scope as AXPPlatformScope).defaultValues();\n const context = { ...defaults, ...currentContext };\n patchState(store, {\n context,\n previousContext: cloneDeep(context),\n formDirty: false,\n });\n traceSettingsPageLoadComplete({\n scope,\n groupCount: groups.length,\n valueKeyCount: Object.keys(store.context()).length,\n durationMs: Date.now() - startedAt,\n });\n } catch (error) {\n console.error('Settings page load failed', error);\n } finally {\n // Always leave Processing so Apply/Discard are not stuck disabled after a partial load.\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n }\n },\n async reload() {\n await settingDefinitionService.reload();\n const groups = await settingDefinitionService.getListAsync(store.scope());\n const oldActivateGroupName = store.activateGroup()?.name;\n patchState(store, {\n groups: groups,\n activateGroup: undefined,\n });\n if (oldActivateGroupName) {\n this.setActivateGroupByName(oldActivateGroupName);\n }\n await this.rebuildSettingSearchIndex();\n },\n async rebuildSettingSearchIndex() {\n const groups = store.groups();\n const map: Record<string, string> = {};\n const walkSections = async (sections: AXPSettingDefinitionSection[]) => {\n for (const section of sections) {\n for (const setting of section.settings) {\n const parts: string[] = [await translateService.translateAsync(setting.title)];\n if (setting.description) {\n parts.push(await translateService.translateAsync(setting.description));\n }\n if (setting.searchTagKeys?.length) {\n for (const key of setting.searchTagKeys) {\n parts.push(await translateService.translateAsync(key));\n }\n }\n map[setting.name] = parts.join(' ').toLowerCase();\n }\n }\n };\n const walkGroups = async (gs: AXPSettingDefinitionGroup[]) => {\n for (const g of gs) {\n await walkSections(g.sections);\n await walkGroups(g.groups);\n }\n };\n await walkGroups(groups);\n patchState(store, { settingSearchTextByKey: map });\n },\n updateContext(context: Record<string, any>) {\n patchState(store, {\n context,\n });\n },\n setFormDirty(dirty: boolean) {\n if (store.syncingBaseline() || store.formDirty() === dirty) {\n return;\n }\n patchState(store, {\n formDirty: dirty,\n });\n },\n setSyncingBaseline(syncing: boolean) {\n if (store.syncingBaseline() === syncing) {\n return;\n }\n patchState(store, {\n syncingBaseline: syncing,\n });\n },\n setActivateGroup(group: AXPSettingDefinitionGroup) {\n patchState(store, {\n activateGroup: group,\n formDirty: false,\n });\n },\n unloadActivateGroup() {\n patchState(store, {\n activateGroup: undefined,\n formDirty: false,\n });\n },\n setActivateGroupByName(name: string) {\n const group = store.groups().find((g) => g.name === name);\n if (group) {\n patchState(store, {\n activateGroup: group,\n formDirty: false,\n });\n }\n },\n //\n async search(expression: string) {\n if (!isNil(expression) && !isEmpty(expression)) {\n patchState(store, {\n searchExpression: expression,\n formDirty: false,\n });\n } else {\n patchState(store, {\n searchExpression: null,\n formDirty: false,\n });\n }\n },\n clearSearch() {\n patchState(store, {\n searchExpression: null,\n formDirty: false,\n });\n },\n async apply(): Promise<boolean> {\n const form = store.form();\n if (!form || !store.isDirty()) {\n return false;\n }\n\n form.resetErrors();\n patchState(store, {\n status: AXPPageStatus.Submitting,\n });\n\n try {\n const formResult = await form.validate();\n if (!formResult.result) {\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('@general:actions.apply.messages.invalid.title'),\n content: await translateService.translateAsync('@general:actions.apply.messages.invalid.message'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n return false;\n }\n\n // Persist only known flat setting keys. Context may contain nested parent objects\n // created by path-based writes (e.g. Common:Setting:Offline → { AllowWorkingOffline }).\n const settingKeys = collectSettingKeys(store.groups());\n const context = store.context();\n const previous = store.previousContext();\n const changedValues: Record<string, unknown> = {};\n for (const key of settingKeys) {\n const value = readFlatSettingValue(context, key);\n const previousValue = readFlatSettingValue(previous, key);\n if (!isEqual(value, previousValue)) {\n changedValues[key] = value;\n }\n }\n await settingValueService.scope(store.scope() as AXPPlatformScope).set(changedValues, { flush: true });\n\n const refreshByKey = await settingDefinitionService.requiresPageRefreshByKey();\n const needsPageRefresh = Object.keys(changedValues).some((key) => refreshByKey[key]);\n\n // Keep VM context flat for the next edit session (drop accidental nested parents).\n const nextContext: Record<string, unknown> = {};\n for (const key of settingKeys) {\n const value = Object.prototype.hasOwnProperty.call(changedValues, key)\n ? changedValues[key]\n : readFlatSettingValue(context, key);\n if (value !== undefined) {\n nextContext[key] = value;\n }\n }\n\n patchState(store, {\n status: AXPPageStatus.Rendered,\n context: nextContext,\n previousContext: cloneDeep(nextContext),\n formDirty: false,\n applySyncNonce: store.applySyncNonce() + 1,\n });\n\n const successTitleKey = needsPageRefresh\n ? '@settings-management:settings.actions.apply.reload.success.title'\n : '@settings-management:settings.actions.apply.success.title';\n const successMessageKey = needsPageRefresh\n ? '@settings-management:settings.actions.apply.reload.success.message'\n : '@settings-management:settings.actions.apply.success.message';\n\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync(successTitleKey),\n content: await translateService.translateAsync(successMessageKey),\n location: 'bottom-center',\n closeButton: true,\n timeOut: needsPageRefresh ? PAGE_REFRESH_DELAY_MS : 3000,\n timeOutProgress: true,\n });\n\n if (needsPageRefresh) {\n setTimeout(() => location.reload(), PAGE_REFRESH_DELAY_MS);\n }\n\n return true;\n } catch {\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('@settings-management:settings.actions.apply.error.title'),\n content: await translateService.translateAsync('@settings-management:settings.actions.apply.error.message'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n return false;\n }\n },\n applySavedState(context: Record<string, unknown>) {\n const snapshot = cloneDeep(context);\n patchState(store, {\n context: snapshot,\n previousContext: snapshot,\n formDirty: false,\n });\n },\n\n async discard() {\n const form = store.form();\n form?.resetErrors();\n\n const snapshot = cloneDeep(store.previousContext());\n patchState(store, {\n status: AXPPageStatus.Rendered,\n context: snapshot,\n previousContext: snapshot,\n formDirty: false,\n syncingBaseline: true,\n discardSyncNonce: store.discardSyncNonce() + 1,\n });\n },\n async resetToDefault() {\n const defaults = await settingValueService.scope(store.scope() as AXPPlatformScope).defaultValues();\n patchState(store, {\n context: defaults,\n });\n //\n const result = await this.apply();\n if (!result) {\n this.discard();\n }\n },\n }),\n ),\n withHooks(\n (\n store,\n settingValueService = inject(AXPSettingsService),\n translationService = inject(AXTranslationService),\n localeService = inject(AXLocaleService),\n ) => ({\n async onInit() {\n //\n settingValueService.onChanged.pipe(filter((c) => c.scope == store.scope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(store.context(), k);\n const previousValue = get(store.previousContext(), k);\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n patchState(store, {\n previousContext: {\n ...store.previousContext(),\n [k]: currentValue,\n },\n context: {\n ...store.context(),\n [k]: currentValue,\n },\n formDirty: false,\n });\n }\n });\n });\n //\n merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => {\n if (store.isLoaded()) {\n await store.reload();\n }\n });\n },\n onDestroy() {},\n }),\n ),\n);\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-settings-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Settings Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const SettingsManagementManifest: 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","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex-platform/framework-client/common';\n\nexport class AXPSettingSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('setting', 'Setting', 'setting', 'fa-solid fa-gear', 3, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSearchProvider,\n AXPSearchResult,\n AXPSettingDefinition,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { sortBy } from 'lodash';\n\nexport interface AXPSettingDefinitionSearch extends AXPSettingDefinition {\n group: AXPSettingDefinitionGroup;\n}\n\nexport class AXPSettingSearchProvider implements AXPSearchProvider {\n private settingsService = inject(AXPSettingDefinitionProviderService);\n private sessionService = inject(AXPSessionService);\n private translateService = inject(AXTranslationService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n const groupsSetting = this.settingsService.getList(AXPPlatformScope.User);\n if (groupsSetting.length == 0) {\n groupsSetting.push(...(await this.settingsService.getListAsync(AXPPlatformScope.User)));\n }\n\n // Step 2: Flatten settings from groups\n const allSettings: AXPSettingDefinitionSearch[] = [];\n const extractSettings = (group: AXPSettingDefinitionGroup) => {\n for (const section of group.sections) {\n allSettings.push(...section.settings.map((x) => ({ ...x, group } as AXPSettingDefinitionSearch)));\n }\n for (const subGroup of group.groups) {\n extractSettings(subGroup); // Recursive extraction\n }\n };\n\n for (const group of groupsSetting) {\n extractSettings(group);\n }\n\n const needle = text.trim().toLowerCase();\n if (!needle) {\n return [];\n }\n\n const translatedBlobs = await Promise.all(\n allSettings.map(async (setting) => {\n const parts: string[] = [await this.translateService.translateAsync(setting.title)];\n if (setting.description) {\n parts.push(await this.translateService.translateAsync(setting.description));\n }\n if (setting.searchTagKeys?.length) {\n for (const key of setting.searchTagKeys) {\n parts.push(await this.translateService.translateAsync(key));\n }\n }\n return parts.join(' ').toLowerCase();\n }),\n );\n\n const searchResults = allSettings.filter(\n (setting, i) =>\n translatedBlobs[i].includes(needle) || setting.name.toLowerCase().includes(needle),\n );\n\n return sortBy(\n searchResults.map<AXPSearchResult>((setting) => ({\n title: setting.title,\n description: setting.description,\n group: 'setting',\n data: setting,\n command: {\n name: 'navigate',\n options: {\n type: 'router',\n options: {\n path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,\n },\n }\n },\n parent: setting.group\n ? {\n title: setting.group.title,\n data: setting.group as AXPSettingDefinitionGroup,\n }\n : undefined,\n })),\n ['title']\n );\n }\n}\n","import { createUnsavedChangesCanDeactivateGuard } from '@acorex-platform/framework-client/common';\nimport { AXPSettingPageComponent } from './setting-page/setting-page.component';\n\n//#region ---- Settings Page Can Deactivate Guard ----\n\nexport const axpSettingsPageCanDeactivateGuard = createUnsavedChangesCanDeactivateGuard<AXPSettingPageComponent>();\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXP_UNAUTHORIZED_ROUTE } from '@acorex-platform/framework-client/common';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-settings-management-client/contracts';\nimport { resolvePlatformScopeKey } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, UrlTree } from '@angular/router';\nimport { first, map } from 'rxjs';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst SCOPE_PERMISSIONS: Record<string, string | null> = {\n P: AXPApplicationsPlatformPermissionKeys.MaintainPlatformSettings,\n T: AXPApplicationsPlatformPermissionKeys.MaintainTenantSettings,\n // Own user settings — always allowed once authenticated.\n U: null,\n};\n\n//#endregion\n\n//#region ----- Guard -----\n\n/**\n * Enforces settings-scope capabilities on direct URL navigation.\n * Menu visibility alone is not enough — hidden Platform Settings items are not\n * menu-matched, so {@link AXPMenuRouteGuard} would otherwise allow the route.\n */\nexport const axpSettingsScopeCanActivateGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const sessionService = inject(AXPSessionService);\n const router = inject(Router);\n\n return sessionService.isAuthorizedWithLoading$.pipe(\n first(),\n map((): boolean | UrlTree => {\n const scopeParam = resolveScopeParam(route);\n const scopeKey = resolvePlatformScopeKey(scopeParam);\n const requiredPermission = SCOPE_PERMISSIONS[scopeKey];\n\n if (!requiredPermission) {\n return true;\n }\n\n if (sessionService.authorize(requiredPermission)) {\n return true;\n }\n\n return router.parseUrl(AXP_UNAUTHORIZED_ROUTE);\n }),\n );\n};\n\nfunction resolveScopeParam(route: ActivatedRouteSnapshot): string {\n let current: ActivatedRouteSnapshot | null = route;\n while (current) {\n const scope = current.paramMap.get('scope');\n if (scope) {\n return scope;\n }\n current = current.parent;\n }\n return '';\n}\n\n//#endregion\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n AXPApplicationsPlatformPermissionKeys,\n AXPSettingsManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-settings-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const appName = this.sessionService.application?.name;\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n // Platform Settings — platform console only (not tenant admins).\n context.find(AXPCommonMenuKeys.Platform).addItems([\n {\n name: AXPSettingsManagementMenuKeys.PlatformSettings,\n priority: 999,\n text: '@settings-management:module.terms.scopes.platform.title',\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/platform`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainPlatformSettings],\n },\n },\n ]);\n\n // Tenant Settings — under Administration; own user settings are profile-only (no menu policy).\n context.find(AXPCommonMenuKeys.Administration).addItems([\n { name: `${AXPSettingsManagementMenuKeys.TenantApplicationSettings}:divider`, text: '', type: 'break', priority: 998 },\n {\n name: AXPSettingsManagementMenuKeys.TenantApplicationSettings,\n priority: 999,\n text: '@settings-management:module.terms.scopes.tenant.title',\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainTenantSettings],\n },\n },\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-settings-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers tenant settings under Administration and platform settings under\n * Applications & Platform. Own user settings are not registered — always available\n * to the signed-in user.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider 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.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, {\n order: 120,\n });\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, {\n order: 110,\n });\n\n context\n .addGroup(\n groups.Administration.Settings,\n `${G}.administration-settings.title`,\n `${G}.administration-settings.description`,\n { parent: groups.Administration.Root, order: 15 },\n )\n .addPermission(keys.MaintainTenantSettings, `${P}.maintain-tenant-settings.title`, `${P}.maintain-tenant-settings.description`, {\n modules: ['SettingsManagement'],\n })\n .endPermission()\n .endGroup();\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.MaintainPlatformSettings, `${P}.maintain-platform-settings.title`, `${P}.maintain-platform-settings.description`, {\n modules: ['PlatformManagement'],\n requiredFeatures: ['PlatformManagement'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXMSettingsManagementCommandKeys } from '@acorex-platform/module-settings-management-client/contracts';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\n\n//#region ---- Types ----\n\ntype ProfileSectionsPayload = {\n sections: Record<string, unknown>[];\n groupId?: string;\n};\n\n//#endregion\n\n//#region ---- Settings management profile sections ----\n\n/** Contributes settings-related sections to the user profile hub. */\nexport const SettingsManagementProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n ProfileSectionsPayload,\n ProfileSectionsPayload\n> = {\n key: 'profile-page.sections',\n priority: 10,\n execute: (payload) => {\n if (payload.groupId && payload.groupId !== 'account') {\n return payload;\n }\n\n const commandService = inject(AXPCommandService);\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n const sections: Record<string, unknown>[] = [];\n\n if (commandService.exists(AXMSettingsManagementCommandKeys.Client.Export)) {\n sections.push({\n id: 'export-data',\n groupId: 'account',\n title: '@settings-management:profile-page.sections.export-data.title',\n description: '@settings-management:profile-page.sections.export-data.description',\n icon: 'far fa-file-export',\n priority: 30,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'export-local-data',\n title: '@settings-management:profile-page.sections.export-data.actions.manage',\n icon: 'far fa-download',\n command: { name: AXMSettingsManagementCommandKeys.Client.Export },\n },\n ],\n });\n }\n\n if (appName) {\n sections.push({\n id: 'all-preferences',\n groupId: 'account',\n title: '@settings-management:profile-page.sections.all-preferences.title',\n description: '@settings-management:profile-page.sections.all-preferences.description',\n icon: 'far fa-sliders',\n priority: 40,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-all-preferences',\n title: '@settings-management:profile-page.sections.all-preferences.actions.manage',\n icon: 'far fa-arrow-right',\n command: {\n name: 'navigate',\n options: { path: `/${appName}/settings/user` },\n },\n },\n ],\n });\n }\n\n if (!sections.length) {\n return payload;\n }\n\n return {\n ...payload,\n sections: [...payload.sections, ...sections],\n };\n },\n};\n\n//#endregion\n","import { AXPActionMenuItem } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\n\n//#region ---- Profile slot settings menu hook ----\n\n/** Registers the user settings entry in the profile dropdown (always available; no permission). */\nexport const ProfileSlotSettingsMenuHookProvider: AXPDistributedEventListenerProvider<\n { items: AXPActionMenuItem[] },\n { items: AXPActionMenuItem[] }\n> = {\n key: 'profile-slot.menu-items',\n priority: 0,\n execute: (payload) => {\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n if (!appName) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'settings',\n title: '@auth:profile.settings',\n icon: 'fa-light fa-gear',\n shortcuts: [{ keys: 'ctrl+shift+u', allowInEditableFields: true }],\n command: {\n name: 'navigate',\n options: {\n path: `/${appName}/settings/user`,\n },\n },\n } satisfies AXPActionMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport {\n AXP_MENU_PROVIDER,\n AXP_PROTECTED_ROUTE_GUARDS,\n AXP_SEARCH_DEFINITION_PROVIDER,\n AXP_SEARCH_PROVIDER,\n AXP_SETTINGS_SYNC_KEYS,\n AXPPlatformSettingsLoadState,\n AXPPlatformSettingsOfflineBootstrapService,\n AXPSettingsService,\n traceSettingsAppStartupLoadComplete,\n traceSettingsAppStartupLoadStarted,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPAppStartUpService,\n AXP_APP_STARTUP_PRIORITY,\n AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n} from '@acorex-platform/framework-client/core';\nimport { SettingsManagementManifest } from './manifest';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { NgModule } from '@angular/core';\nimport { Routes, ROUTES } from '@angular/router';\nimport { AXPSettingSearchDefinitionProvider } from './features/settings/search-definition.provider';\nimport { AXPSettingSearchProvider } from './features/settings/search.provider';\nimport { axpSettingsPageCanDeactivateGuard } from './features/settings/settings-page-can-deactivate.guard';\nimport { axpSettingsScopeCanActivateGuard } from './features/settings/settings-scope.guard';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { SettingsManagementProfileSectionsHookProvider } from './features/profile-page/settings-management-profile-sections.hook';\nimport { ProfileSlotSettingsMenuHookProvider } from './profile-slot-settings-menu.hook';\nimport { axmSettingsSyncKeys } from '@acorex-platform/module-settings-management-client/contracts';\n\n//#region ----- Constants -----\n\nconst PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS = 5;\nconst PLATFORM_SETTINGS_STARTUP_RETRY_DELAY_MS = 2_000;\n\n//#endregion\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function loadPlatformSettingsWithRetry(\n settingsService: AXPSettingsService,\n offlineBootstrap: AXPPlatformSettingsOfflineBootstrapService,\n): Promise<void> {\n // Device offline — skip retries and go straight to offline / unavailable handling.\n if (offlineBootstrap.isDeviceOffline()) {\n throw new Error('Device is offline');\n }\n\n let lastError: unknown;\n for (let attempt = 1; attempt <= PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS; attempt++) {\n try {\n await settingsService.ensurePlatformSettingsLoaded();\n return;\n } catch (error) {\n lastError = error;\n console.error(\n `Platform settings bootstrap failed (attempt ${attempt}/${PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS})`,\n error,\n );\n if (offlineBootstrap.isDeviceOffline()) {\n throw error;\n }\n if (attempt < PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS) {\n await sleep(PLATFORM_SETTINGS_STARTUP_RETRY_DELAY_MS);\n }\n }\n }\n throw lastError;\n}\n\nfunction routesFacory() {\n let routes: Routes = [\n {\n path: ':app/settings/:scope',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS, axpSettingsScopeCanActivateGuard],\n data: { tab: true, rootLayout: true },\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/settings/setting-page/setting-page.component').then((c) => c.AXPSettingPageComponent),\n canDeactivate: [axpSettingsPageCanDeactivateGuard],\n data: { reuse: true },\n children: [\n {\n path: ':group',\n loadComponent: () =>\n import('./features/settings/setting-view/setting-view.component').then(\n (c) => c.AXPSettingsViewComponent,\n ),\n data: { reuse: false },\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SETTINGS_SYNC_KEYS,\n useValue: axmSettingsSyncKeys,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: SettingsManagementManifest,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotSettingsMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SettingsManagementProfileSectionsHookProvider,\n multi: true,\n },\n ],\n})\nexport class AXMSettingsManagementModule {\n constructor(\n appInitService: AXPAppStartUpService,\n settingsService: AXPSettingsService,\n platformSettingsLoadState: AXPPlatformSettingsLoadState,\n offlineBootstrap: AXPPlatformSettingsOfflineBootstrapService,\n ) {\n appInitService.registerTask({\n name: 'platform-settings',\n priority: AXP_APP_STARTUP_PRIORITY.platformSettings,\n run: async () => {\n try {\n await loadPlatformSettingsWithRetry(settingsService, offlineBootstrap);\n platformSettingsLoadState.clear();\n } catch (error) {\n console.error('Platform settings bootstrap failed after retries', error);\n // Never open dialogs here (APP_INITIALIZER — overlay host is null).\n // Only inspect IndexedDB; confirm runs later after the app is stable.\n let canOfferOffline = false;\n try {\n canOfferOffline = await offlineBootstrap.canOfferOfflineContinue();\n } catch (offlineError) {\n console.error('Offline continue cache check failed', offlineError);\n }\n if (canOfferOffline) {\n platformSettingsLoadState.setPendingOfflineContinue(error);\n } else {\n platformSettingsLoadState.setFailure(error);\n }\n // Keep only platform-settings-failure-redirect; skip Settings/regional/theme (they hang on API).\n appInitService.abortRemainingStartupTasks();\n }\n },\n });\n\n appInitService.registerTask({\n name: 'Settings',\n statusText: '@settings-management:app-startup.loading-settings',\n priority: AXP_APP_STARTUP_PRIORITY.settings,\n run: async () => {\n if (\n platformSettingsLoadState.hasFailure() ||\n platformSettingsLoadState.hasPendingOfflineContinue() ||\n platformSettingsLoadState.isOfflineMode()\n ) {\n return;\n }\n traceSettingsAppStartupLoadStarted();\n const startedAt = Date.now();\n const settings = await settingsService.load('app-startup');\n traceSettingsAppStartupLoadComplete({\n totalKeys: settings.length,\n keysByScope: {},\n durationMs: Date.now() - startedAt,\n });\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-settings-management-client.mjs","sources":["../../../../libs/modules/settings-management/client/src/lib/features/settings/convert-setting-data.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings.viewmodel.ts","../../../../libs/modules/settings-management/client/src/lib/manifest.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/search-definition.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/search.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings-page-can-deactivate.guard.ts","../../../../libs/modules/settings-management/client/src/lib/features/settings/settings-scope.guard.ts","../../../../libs/modules/settings-management/client/src/lib/menu.provider.ts","../../../../libs/modules/settings-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/settings-management/client/src/lib/features/profile-page/settings-management-profile-sections.hook.ts","../../../../libs/modules/settings-management/client/src/lib/profile-slot-settings-menu.hook.ts","../../../../libs/modules/settings-management/client/src/lib/settings-management.module.ts","../../../../libs/modules/settings-management/client/src/acorex-platform-module-settings-management-client.ts"],"sourcesContent":["import { AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex-platform/framework-client/common';\n\n/**\n * Filters setting groups for in-page search. When `settingSearchTextByKey` is provided (lowercased\n * translated blobs keyed by setting name), setting matches use it; otherwise a raw key fallback is used.\n */\nexport function searchSettings(\n groups: AXPSettingDefinitionGroup[],\n search: string,\n settingSearchTextByKey?: Record<string, string>,\n): AXPSettingDefinitionGroup[] {\n const trimmed = search?.trim() ?? '';\n if (!trimmed) {\n return [];\n }\n\n const normalizedSearch = trimmed.toLowerCase();\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(normalizedSearch) ||\n section.title.toLowerCase().includes(normalizedSearch);\n\n const settingSearchBlob = (setting: AXPSettingDefinition): string => {\n const fromIndex = settingSearchTextByKey?.[setting.name];\n if (fromIndex) {\n return fromIndex;\n }\n return [setting.name, setting.title, setting.description ?? '', ...(setting.searchTagKeys ?? [])]\n .join(' ')\n .toLowerCase();\n };\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter((setting) => {\n const blob = settingSearchBlob(setting);\n return (\n setting.name.toLowerCase().includes(normalizedSearch) ||\n blob.includes(normalizedSearch)\n );\n });\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXPPageStatus } from '@acorex-platform/framework-shared/widget-core';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingsService,\n traceSettingsPageLoadComplete,\n traceSettingsPageLoadStarted,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPPlatformScope,\n AXPPlatformScopeKey,\n getSmart,\n resolvePlatformScopeName,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPDeviceService } from '@acorex-platform/framework-client/core';\n\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { cloneDeep, get, isEmpty, isEqual, isNil } from 'lodash';\nimport { filter, merge } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\n\n/** Delay before reload so the success toast is visible. */\nconst PAGE_REFRESH_DELAY_MS = 500;\n\n/** Setting keys are flat (may contain dots). Prefer own-property, then smart path. */\nfunction readFlatSettingValue(context: Record<string, unknown>, key: string): unknown {\n if (Object.prototype.hasOwnProperty.call(context, key)) {\n return context[key];\n }\n return getSmart(context, key);\n}\n\nfunction collectSettingKeys(groups: AXPSettingDefinitionGroup[]): string[] {\n const keys: string[] = [];\n const walkSections = (sections: AXPSettingDefinitionSection[]) => {\n for (const section of sections) {\n for (const setting of section.settings) {\n keys.push(setting.name);\n }\n }\n };\n const walkGroups = (gs: AXPSettingDefinitionGroup[]) => {\n for (const group of gs) {\n walkSections(group.sections);\n walkGroups(group.groups);\n }\n };\n walkGroups(groups);\n return keys;\n}\n\nexport const AXPSettingsViewModel = signalStore(\n withState(() => ({\n groups: [] as AXPSettingDefinitionGroup[],\n activateGroup: undefined as AXPSettingDefinitionGroup | undefined,\n scope: 'U' as AXPPlatformScopeKey,\n //\n searchExpression: null as string | null,\n settingSearchTextByKey: {} as Record<string, string>,\n //\n previousContext: {} as Record<string, any>,\n context: {} as Record<string, any>,\n /** Synced from {@link AXPWidgetContainerComponent.isFormDirty}. */\n formDirty: false,\n /** Bumped after apply so the settings view can commit the container saved baseline. */\n applySyncNonce: 0,\n /** Suppresses container→VM dirty echo while post-save baseline sync runs. */\n syncingBaseline: false,\n /** Bumped after discard so the settings view can revert the container to saved. */\n discardSyncNonce: 0,\n //\n status: AXPPageStatus.Processing,\n form: null as AXFormComponent | null,\n })),\n withComputed((store, deviceService = inject(AXPDeviceService)) => ({\n searchResults: computed(() => {\n const q = store.searchExpression();\n if (q == null || !q.trim()) {\n return [];\n }\n return searchSettings(store.groups(), q, store.settingSearchTextByKey());\n }),\n hasActivateGroup: computed(() => store.activateGroup() != null),\n showGroups: computed(() => store.activateGroup() != null && deviceService.isLarge()),\n scopeTitle: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.title`;\n }),\n scopeDescription: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.description`;\n }),\n isSearching: computed(() => store.searchExpression() != null),\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isLoaded: computed(() => store.groups().length > 0),\n isDirty: computed(() => store.formDirty()),\n })),\n withMethods(\n (\n store,\n settingDefinitionService = inject(AXPSettingDefinitionProviderService),\n settingValueService = inject(AXPSettingsService),\n toastService = inject(AXToastService),\n translateService = inject(AXTranslationService),\n ) => ({\n registerForm(form: AXFormComponent) {\n patchState(store, {\n form: form,\n });\n },\n async load(scope: AXPPlatformScopeKey) {\n traceSettingsPageLoadStarted(scope, 'settings-page-vm-load');\n const startedAt = Date.now();\n patchState(store, {\n scope: scope,\n status: AXPPageStatus.Processing,\n });\n try {\n const groups = await settingDefinitionService.getListAsync(scope);\n patchState(store, {\n groups: groups,\n });\n await this.rebuildSettingSearchIndex();\n // Settings admin must bind server partition values. `all()` alone can reuse a warm\n // IndexedDB/memory snapshot that omits non-cacheable keys (e.g. SMTP).\n await settingValueService.reload(scope as AXPPlatformScope, 'settings-page-open');\n const currentContext = await settingValueService.scope(scope as AXPPlatformScope).all();\n const defaults = await settingValueService.scope(scope as AXPPlatformScope).defaultValues();\n const context = { ...defaults, ...currentContext };\n patchState(store, {\n context,\n previousContext: cloneDeep(context),\n formDirty: false,\n });\n traceSettingsPageLoadComplete({\n scope,\n groupCount: groups.length,\n valueKeyCount: Object.keys(store.context()).length,\n durationMs: Date.now() - startedAt,\n });\n } catch (error) {\n console.error('Settings page load failed', error);\n } finally {\n // Always leave Processing so Apply/Discard are not stuck disabled after a partial load.\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n }\n },\n async reload() {\n await settingDefinitionService.reload();\n const groups = await settingDefinitionService.getListAsync(store.scope());\n const oldActivateGroupName = store.activateGroup()?.name;\n patchState(store, {\n groups: groups,\n activateGroup: undefined,\n });\n if (oldActivateGroupName) {\n this.setActivateGroupByName(oldActivateGroupName);\n }\n await this.rebuildSettingSearchIndex();\n },\n async rebuildSettingSearchIndex() {\n const groups = store.groups();\n const map: Record<string, string> = {};\n const walkSections = async (sections: AXPSettingDefinitionSection[]) => {\n for (const section of sections) {\n for (const setting of section.settings) {\n const parts: string[] = [await translateService.translateAsync(setting.title)];\n if (setting.description) {\n parts.push(await translateService.translateAsync(setting.description));\n }\n if (setting.searchTagKeys?.length) {\n for (const key of setting.searchTagKeys) {\n parts.push(await translateService.translateAsync(key));\n }\n }\n map[setting.name] = parts.join(' ').toLowerCase();\n }\n }\n };\n const walkGroups = async (gs: AXPSettingDefinitionGroup[]) => {\n for (const g of gs) {\n await walkSections(g.sections);\n await walkGroups(g.groups);\n }\n };\n await walkGroups(groups);\n patchState(store, { settingSearchTextByKey: map });\n },\n updateContext(context: Record<string, any>) {\n patchState(store, {\n context,\n });\n },\n setFormDirty(dirty: boolean) {\n if (store.syncingBaseline() || store.formDirty() === dirty) {\n return;\n }\n patchState(store, {\n formDirty: dirty,\n });\n },\n setSyncingBaseline(syncing: boolean) {\n if (store.syncingBaseline() === syncing) {\n return;\n }\n patchState(store, {\n syncingBaseline: syncing,\n });\n },\n setActivateGroup(group: AXPSettingDefinitionGroup) {\n patchState(store, {\n activateGroup: group,\n formDirty: false,\n });\n },\n unloadActivateGroup() {\n patchState(store, {\n activateGroup: undefined,\n formDirty: false,\n });\n },\n setActivateGroupByName(name: string) {\n const group = store.groups().find((g) => g.name === name);\n if (group) {\n patchState(store, {\n activateGroup: group,\n formDirty: false,\n });\n }\n },\n //\n async search(expression: string) {\n if (!isNil(expression) && !isEmpty(expression)) {\n patchState(store, {\n searchExpression: expression,\n formDirty: false,\n });\n } else {\n patchState(store, {\n searchExpression: null,\n formDirty: false,\n });\n }\n },\n clearSearch() {\n patchState(store, {\n searchExpression: null,\n formDirty: false,\n });\n },\n async apply(): Promise<boolean> {\n const form = store.form();\n if (!form || !store.isDirty()) {\n return false;\n }\n\n form.resetErrors();\n patchState(store, {\n status: AXPPageStatus.Submitting,\n });\n\n try {\n const formResult = await form.validate();\n if (!formResult.result) {\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('@general:actions.apply.messages.invalid.title'),\n content: await translateService.translateAsync('@general:actions.apply.messages.invalid.message'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n return false;\n }\n\n // Persist only known flat setting keys. Context may contain nested parent objects\n // created by path-based writes (e.g. Common:Setting:Offline → { AllowWorkingOffline }).\n const settingKeys = collectSettingKeys(store.groups());\n const context = store.context();\n const previous = store.previousContext();\n const changedValues: Record<string, unknown> = {};\n for (const key of settingKeys) {\n const value = readFlatSettingValue(context, key);\n const previousValue = readFlatSettingValue(previous, key);\n if (!isEqual(value, previousValue)) {\n changedValues[key] = value;\n }\n }\n await settingValueService.scope(store.scope() as AXPPlatformScope).set(changedValues, { flush: true });\n\n const refreshByKey = await settingDefinitionService.requiresPageRefreshByKey();\n const needsPageRefresh = Object.keys(changedValues).some((key) => refreshByKey[key]);\n\n // Keep VM context flat for the next edit session (drop accidental nested parents).\n const nextContext: Record<string, unknown> = {};\n for (const key of settingKeys) {\n const value = Object.prototype.hasOwnProperty.call(changedValues, key)\n ? changedValues[key]\n : readFlatSettingValue(context, key);\n if (value !== undefined) {\n nextContext[key] = value;\n }\n }\n\n patchState(store, {\n status: AXPPageStatus.Rendered,\n context: nextContext,\n previousContext: cloneDeep(nextContext),\n formDirty: false,\n applySyncNonce: store.applySyncNonce() + 1,\n });\n\n const successTitleKey = needsPageRefresh\n ? '@settings-management:settings.actions.apply.reload.success.title'\n : '@settings-management:settings.actions.apply.success.title';\n const successMessageKey = needsPageRefresh\n ? '@settings-management:settings.actions.apply.reload.success.message'\n : '@settings-management:settings.actions.apply.success.message';\n\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync(successTitleKey),\n content: await translateService.translateAsync(successMessageKey),\n location: 'bottom-center',\n closeButton: true,\n timeOut: needsPageRefresh ? PAGE_REFRESH_DELAY_MS : 3000,\n timeOutProgress: true,\n });\n\n if (needsPageRefresh) {\n setTimeout(() => location.reload(), PAGE_REFRESH_DELAY_MS);\n }\n\n return true;\n } catch {\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('@settings-management:settings.actions.apply.error.title'),\n content: await translateService.translateAsync('@settings-management:settings.actions.apply.error.message'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n return false;\n }\n },\n applySavedState(context: Record<string, unknown>) {\n const snapshot = cloneDeep(context);\n patchState(store, {\n context: snapshot,\n previousContext: snapshot,\n formDirty: false,\n });\n },\n\n async discard() {\n const form = store.form();\n form?.resetErrors();\n\n const snapshot = cloneDeep(store.previousContext());\n patchState(store, {\n status: AXPPageStatus.Rendered,\n context: snapshot,\n previousContext: snapshot,\n formDirty: false,\n syncingBaseline: true,\n discardSyncNonce: store.discardSyncNonce() + 1,\n });\n },\n async resetToDefault() {\n const defaults = await settingValueService.scope(store.scope() as AXPPlatformScope).defaultValues();\n patchState(store, {\n context: defaults,\n });\n //\n const result = await this.apply();\n if (!result) {\n this.discard();\n }\n },\n }),\n ),\n withHooks(\n (\n store,\n settingValueService = inject(AXPSettingsService),\n translationService = inject(AXTranslationService),\n localeService = inject(AXLocaleService),\n ) => ({\n async onInit() {\n //\n settingValueService.onChanged.pipe(filter((c) => c.scope == store.scope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(store.context(), k);\n const previousValue = get(store.previousContext(), k);\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n patchState(store, {\n previousContext: {\n ...store.previousContext(),\n [k]: currentValue,\n },\n context: {\n ...store.context(),\n [k]: currentValue,\n },\n formDirty: false,\n });\n }\n });\n });\n //\n merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => {\n if (store.isLoaded()) {\n await store.reload();\n }\n });\n },\n onDestroy() {},\n }),\n ),\n);\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-settings-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Settings Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const SettingsManagementManifest: 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","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex-platform/framework-client/common';\n\nexport class AXPSettingSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('setting', 'Setting', 'setting', 'fa-solid fa-gear', 3, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSearchProvider,\n AXPSearchResult,\n AXPSettingDefinition,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { sortBy } from 'lodash';\n\nexport interface AXPSettingDefinitionSearch extends AXPSettingDefinition {\n group: AXPSettingDefinitionGroup;\n}\n\nexport class AXPSettingSearchProvider implements AXPSearchProvider {\n private settingsService = inject(AXPSettingDefinitionProviderService);\n private sessionService = inject(AXPSessionService);\n private translateService = inject(AXTranslationService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n const groupsSetting = this.settingsService.getList(AXPPlatformScope.User);\n if (groupsSetting.length == 0) {\n groupsSetting.push(...(await this.settingsService.getListAsync(AXPPlatformScope.User)));\n }\n\n // Step 2: Flatten settings from groups\n const allSettings: AXPSettingDefinitionSearch[] = [];\n const extractSettings = (group: AXPSettingDefinitionGroup) => {\n for (const section of group.sections) {\n allSettings.push(...section.settings.map((x) => ({ ...x, group } as AXPSettingDefinitionSearch)));\n }\n for (const subGroup of group.groups) {\n extractSettings(subGroup); // Recursive extraction\n }\n };\n\n for (const group of groupsSetting) {\n extractSettings(group);\n }\n\n const needle = text.trim().toLowerCase();\n if (!needle) {\n return [];\n }\n\n const translatedBlobs = await Promise.all(\n allSettings.map(async (setting) => {\n const parts: string[] = [await this.translateService.translateAsync(setting.title)];\n if (setting.description) {\n parts.push(await this.translateService.translateAsync(setting.description));\n }\n if (setting.searchTagKeys?.length) {\n for (const key of setting.searchTagKeys) {\n parts.push(await this.translateService.translateAsync(key));\n }\n }\n return parts.join(' ').toLowerCase();\n }),\n );\n\n const searchResults = allSettings.filter(\n (setting, i) =>\n translatedBlobs[i].includes(needle) || setting.name.toLowerCase().includes(needle),\n );\n\n return sortBy(\n searchResults.map<AXPSearchResult>((setting) => ({\n title: setting.title,\n description: setting.description,\n group: 'setting',\n data: setting,\n command: {\n name: 'navigate',\n options: {\n type: 'router',\n options: {\n path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,\n },\n }\n },\n parent: setting.group\n ? {\n title: setting.group.title,\n data: setting.group as AXPSettingDefinitionGroup,\n }\n : undefined,\n })),\n ['title']\n );\n }\n}\n","import { createUnsavedChangesCanDeactivateGuard } from '@acorex-platform/framework-client/common';\nimport { AXPSettingPageComponent } from './setting-page/setting-page.component';\n\n//#region ---- Settings Page Can Deactivate Guard ----\n\nexport const axpSettingsPageCanDeactivateGuard = createUnsavedChangesCanDeactivateGuard<AXPSettingPageComponent>();\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXP_UNAUTHORIZED_ROUTE } from '@acorex-platform/framework-client/common';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-settings-management-client/contracts';\nimport { resolvePlatformScopeKey } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, UrlTree } from '@angular/router';\nimport { first, map } from 'rxjs';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst SCOPE_PERMISSIONS: Record<string, string | null> = {\n P: AXPApplicationsPlatformPermissionKeys.MaintainPlatformSettings,\n T: AXPApplicationsPlatformPermissionKeys.MaintainTenantSettings,\n // Own user settings — always allowed once authenticated.\n U: null,\n};\n\n//#endregion\n\n//#region ----- Guard -----\n\n/**\n * Enforces settings-scope capabilities on direct URL navigation.\n * Menu visibility alone is not enough — hidden Platform Settings items are not\n * menu-matched, so {@link AXPMenuRouteGuard} would otherwise allow the route.\n */\nexport const axpSettingsScopeCanActivateGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const sessionService = inject(AXPSessionService);\n const router = inject(Router);\n\n return sessionService.isAuthorizedWithLoading$.pipe(\n first(),\n map((): boolean | UrlTree => {\n const scopeParam = resolveScopeParam(route);\n const scopeKey = resolvePlatformScopeKey(scopeParam);\n const requiredPermission = SCOPE_PERMISSIONS[scopeKey];\n\n if (!requiredPermission) {\n return true;\n }\n\n if (sessionService.authorize(requiredPermission)) {\n return true;\n }\n\n return router.parseUrl(AXP_UNAUTHORIZED_ROUTE);\n }),\n );\n};\n\nfunction resolveScopeParam(route: ActivatedRouteSnapshot): string {\n let current: ActivatedRouteSnapshot | null = route;\n while (current) {\n const scope = current.paramMap.get('scope');\n if (scope) {\n return scope;\n }\n current = current.parent;\n }\n return '';\n}\n\n//#endregion\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n AXPApplicationsPlatformPermissionKeys,\n AXPSettingsManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-settings-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const appName = this.sessionService.application?.name;\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n // Platform Settings — platform console only (not tenant admins).\n context.find(AXPCommonMenuKeys.Platform).addItems([\n {\n name: AXPSettingsManagementMenuKeys.PlatformSettings,\n priority: 999,\n text: '@settings-management:module.terms.scopes.platform.title',\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/platform`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainPlatformSettings],\n },\n },\n ]);\n\n // Tenant Settings — under Administration; own user settings are profile-only (no menu policy).\n context.find(AXPCommonMenuKeys.Administration).addItems([\n { name: `${AXPSettingsManagementMenuKeys.TenantApplicationSettings}:divider`, text: '', type: 'break', priority: 998 },\n {\n name: AXPSettingsManagementMenuKeys.TenantApplicationSettings,\n priority: 999,\n text: '@settings-management:module.terms.scopes.tenant.title',\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainTenantSettings],\n },\n },\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-settings-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers tenant settings under Administration and platform settings under\n * Applications & Platform. Own user settings are not registered — always available\n * to the signed-in user.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider 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.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, {\n order: 120,\n });\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, {\n order: 110,\n });\n\n context\n .addGroup(\n groups.Administration.Settings,\n `${G}.administration-settings.title`,\n `${G}.administration-settings.description`,\n { parent: groups.Administration.Root, order: 15 },\n )\n .addPermission(keys.MaintainTenantSettings, `${P}.maintain-tenant-settings.title`, `${P}.maintain-tenant-settings.description`, {\n modules: ['SettingsManagement'],\n })\n .endPermission()\n .endGroup();\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.MaintainPlatformSettings, `${P}.maintain-platform-settings.title`, `${P}.maintain-platform-settings.description`, {\n modules: ['PlatformManagement'],\n requiredFeatures: ['PlatformManagement'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXMSettingsManagementCommandKeys } from '@acorex-platform/module-settings-management-client/contracts';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\n\n//#region ---- Types ----\n\ntype ProfileSectionsPayload = {\n sections: Record<string, unknown>[];\n groupId?: string;\n};\n\n//#endregion\n\n//#region ---- Settings management profile sections ----\n\n/** Contributes settings-related sections to the user profile hub. */\nexport const SettingsManagementProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n ProfileSectionsPayload,\n ProfileSectionsPayload\n> = {\n key: 'profile-page.sections',\n priority: 10,\n execute: (payload) => {\n if (payload.groupId && payload.groupId !== 'account') {\n return payload;\n }\n\n const commandService = inject(AXPCommandService);\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n const sections: Record<string, unknown>[] = [];\n\n if (commandService.exists(AXMSettingsManagementCommandKeys.Client.Export)) {\n sections.push({\n id: 'export-data',\n groupId: 'account',\n title: '@settings-management:profile-page.sections.export-data.title',\n description: '@settings-management:profile-page.sections.export-data.description',\n icon: 'far fa-file-export',\n priority: 30,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'export-local-data',\n title: '@settings-management:profile-page.sections.export-data.actions.manage',\n icon: 'far fa-download',\n command: { name: AXMSettingsManagementCommandKeys.Client.Export },\n },\n ],\n });\n }\n\n if (appName) {\n sections.push({\n id: 'all-preferences',\n groupId: 'account',\n title: '@settings-management:profile-page.sections.all-preferences.title',\n description: '@settings-management:profile-page.sections.all-preferences.description',\n icon: 'far fa-sliders',\n priority: 40,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-all-preferences',\n title: '@settings-management:profile-page.sections.all-preferences.actions.manage',\n icon: 'far fa-arrow-right',\n command: {\n name: 'navigate',\n options: { path: `/${appName}/settings/user` },\n },\n },\n ],\n });\n }\n\n if (!sections.length) {\n return payload;\n }\n\n return {\n ...payload,\n sections: [...payload.sections, ...sections],\n };\n },\n};\n\n//#endregion\n","import { AXPActionMenuItem } from '@acorex-platform/framework-shared/core';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\n\n//#region ---- Profile slot settings menu hook ----\n\n/** Registers the user settings entry in the profile dropdown (always available; no permission). */\nexport const ProfileSlotSettingsMenuHookProvider: AXPDistributedEventListenerProvider<\n { items: AXPActionMenuItem[] },\n { items: AXPActionMenuItem[] }\n> = {\n key: 'profile-slot.menu-items',\n priority: 0,\n execute: (payload) => {\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n if (!appName) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'settings',\n title: '@auth:profile.settings',\n icon: 'fa-light fa-gear',\n shortcuts: [{ keys: 'ctrl+shift+u', allowInEditableFields: true }],\n command: {\n name: 'navigate',\n options: {\n path: `/${appName}/settings/user`,\n },\n },\n } satisfies AXPActionMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport {\n AXP_MENU_PROVIDER,\n AXP_PROTECTED_ROUTE_GUARDS,\n AXP_SEARCH_DEFINITION_PROVIDER,\n AXP_SEARCH_PROVIDER,\n AXP_SETTINGS_SYNC_KEYS,\n AXPPlatformSettingsLoadState,\n AXPPlatformSettingsOfflineBootstrapService,\n AXPSettingsService,\n traceSettingsAppStartupLoadComplete,\n traceSettingsAppStartupLoadStarted,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPAppStartUpService,\n AXP_APP_STARTUP_PRIORITY,\n AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n} from '@acorex-platform/framework-client/core';\nimport { SettingsManagementManifest } from './manifest';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { NgModule } from '@angular/core';\nimport { Routes, ROUTES } from '@angular/router';\nimport { AXPSettingSearchDefinitionProvider } from './features/settings/search-definition.provider';\nimport { AXPSettingSearchProvider } from './features/settings/search.provider';\nimport { axpSettingsPageCanDeactivateGuard } from './features/settings/settings-page-can-deactivate.guard';\nimport { axpSettingsScopeCanActivateGuard } from './features/settings/settings-scope.guard';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { SettingsManagementProfileSectionsHookProvider } from './features/profile-page/settings-management-profile-sections.hook';\nimport { ProfileSlotSettingsMenuHookProvider } from './profile-slot-settings-menu.hook';\nimport { axmSettingsSyncKeys } from '@acorex-platform/module-settings-management-client/contracts';\nimport { AXCRuntimeRemoteApiModule } from '@acorex-platform/client-connectivity-api';\n\n//#region ----- Constants -----\n\nconst PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS = 5;\nconst PLATFORM_SETTINGS_STARTUP_RETRY_DELAY_MS = 2_000;\n\n//#endregion\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function loadPlatformSettingsWithRetry(\n settingsService: AXPSettingsService,\n offlineBootstrap: AXPPlatformSettingsOfflineBootstrapService,\n): Promise<void> {\n // Device offline — skip retries and go straight to offline / unavailable handling.\n if (offlineBootstrap.isDeviceOffline()) {\n throw new Error('Device is offline');\n }\n\n let lastError: unknown;\n for (let attempt = 1; attempt <= PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS; attempt++) {\n try {\n await settingsService.ensurePlatformSettingsLoaded();\n return;\n } catch (error) {\n lastError = error;\n console.error(\n `Platform settings bootstrap failed (attempt ${attempt}/${PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS})`,\n error,\n );\n if (offlineBootstrap.isDeviceOffline()) {\n throw error;\n }\n if (attempt < PLATFORM_SETTINGS_STARTUP_MAX_ATTEMPTS) {\n await sleep(PLATFORM_SETTINGS_STARTUP_RETRY_DELAY_MS);\n }\n }\n }\n throw lastError;\n}\n\nfunction routesFacory() {\n let routes: Routes = [\n {\n path: ':app/settings/:scope',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS, axpSettingsScopeCanActivateGuard],\n data: { tab: true, rootLayout: true },\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/settings/setting-page/setting-page.component').then((c) => c.AXPSettingPageComponent),\n canDeactivate: [axpSettingsPageCanDeactivateGuard],\n data: { reuse: true },\n children: [\n {\n path: ':group',\n loadComponent: () =>\n import('./features/settings/setting-view/setting-view.component').then(\n (c) => c.AXPSettingsViewComponent,\n ),\n data: { reuse: false },\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [AXCRuntimeRemoteApiModule],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SETTINGS_SYNC_KEYS,\n useValue: axmSettingsSyncKeys,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: SettingsManagementManifest,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotSettingsMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SettingsManagementProfileSectionsHookProvider,\n multi: true,\n },\n ],\n})\nexport class AXMSettingsManagementModule {\n constructor(\n appInitService: AXPAppStartUpService,\n settingsService: AXPSettingsService,\n platformSettingsLoadState: AXPPlatformSettingsLoadState,\n offlineBootstrap: AXPPlatformSettingsOfflineBootstrapService,\n ) {\n appInitService.registerTask({\n name: 'platform-settings',\n priority: AXP_APP_STARTUP_PRIORITY.platformSettings,\n run: async () => {\n try {\n await loadPlatformSettingsWithRetry(settingsService, offlineBootstrap);\n platformSettingsLoadState.clear();\n } catch (error) {\n console.error('Platform settings bootstrap failed after retries', error);\n // Never open dialogs here (APP_INITIALIZER — overlay host is null).\n // Only inspect IndexedDB; confirm runs later after the app is stable.\n let canOfferOffline = false;\n try {\n canOfferOffline = await offlineBootstrap.canOfferOfflineContinue();\n } catch (offlineError) {\n console.error('Offline continue cache check failed', offlineError);\n }\n if (canOfferOffline) {\n platformSettingsLoadState.setPendingOfflineContinue(error);\n } else {\n platformSettingsLoadState.setFailure(error);\n }\n // Keep only platform-settings-failure-redirect; skip Settings/regional/theme (they hang on API).\n appInitService.abortRemainingStartupTasks();\n }\n },\n });\n\n appInitService.registerTask({\n name: 'Settings',\n statusText: '@settings-management:app-startup.loading-settings',\n priority: AXP_APP_STARTUP_PRIORITY.settings,\n run: async () => {\n if (\n platformSettingsLoadState.hasFailure() ||\n platformSettingsLoadState.hasPendingOfflineContinue() ||\n platformSettingsLoadState.isOfflineMode()\n ) {\n return;\n }\n traceSettingsAppStartupLoadStarted();\n const startedAt = Date.now();\n const settings = await settingsService.load('app-startup');\n traceSettingsAppStartupLoadComplete({\n totalKeys: settings.length,\n keysByScope: {},\n durationMs: Date.now() - startedAt,\n });\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-settings-management-client",
3
- "version": "0.0.24",
3
+ "version": "0.0.28",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@angular/common": "^21.0.0",
7
- "@angular/core": "^21.0.0"
6
+ "@angular/common": "^21.0.0 || ^22.0.0",
7
+ "@angular/core": "^21.0.0 || ^22.0.0"
8
8
  },
9
9
  "dependencies": {
10
+ "@acorex-platform/client-connectivity-api": "0.0.28",
10
11
  "tslib": "^2.3.0"
11
12
  },
12
13
  "module": "fesm2022/acorex-platform-module-settings-management-client.mjs",
@@ -5,6 +5,7 @@ import { AXFormComponent } from '@acorex/components/form';
5
5
  import { AXPSettingDefinitionGroup, AXPSettingsService, AXPPlatformSettingsLoadState, AXPPlatformSettingsOfflineBootstrapService } from '@acorex-platform/framework-client/common';
6
6
  import { AXPPlatformScopeKey } from '@acorex-platform/framework-shared/core';
7
7
  import { AXPAppStartUpService } from '@acorex-platform/framework-client/core';
8
+ import * as i1 from '@acorex-platform/client-connectivity-api';
8
9
 
9
10
  declare const AXPSettingsViewModel: _angular_core.Type<{
10
11
  groups: _angular_core.Signal<AXPSettingDefinitionGroup[]>;
@@ -65,7 +66,7 @@ declare const AXPSettingsViewModel: _angular_core.Type<{
65
66
  declare class AXMSettingsManagementModule {
66
67
  constructor(appInitService: AXPAppStartUpService, settingsService: AXPSettingsService, platformSettingsLoadState: AXPPlatformSettingsLoadState, offlineBootstrap: AXPPlatformSettingsOfflineBootstrapService);
67
68
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMSettingsManagementModule, never>;
68
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMSettingsManagementModule, never, never, never>;
69
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMSettingsManagementModule, never, [typeof i1.AXCRuntimeRemoteApiModule], never>;
69
70
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMSettingsManagementModule>;
70
71
  }
71
72