@acorex-platform/module-application-management-client 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-application-management-client-assign-features.command-BG986HtP.mjs → acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-application-management-client-assign-features.command-BG986HtP.mjs.map → acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-application-management-client-features-editor.component-B5yrn7eX.mjs → acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs} +3 -2
- package/fesm2022/acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-application-management-client-features-widget-edit.component-D_IBCjfM.mjs → acorex-platform-module-application-management-client-features-widget-edit.component-B9YJsZFp.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-application-management-client-features-widget-edit.component-D_IBCjfM.mjs.map → acorex-platform-module-application-management-client-features-widget-edit.component-B9YJsZFp.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-application-management-client.mjs +3 -24
- package/fesm2022/acorex-platform-module-application-management-client.mjs.map +1 -1
- package/package.json +1 -1
- package/fesm2022/acorex-platform-module-application-management-client-features-editor.component-B5yrn7eX.mjs.map +0 -1
|
@@ -12,7 +12,7 @@ import { AXButtonModule } from '@acorex/components/button';
|
|
|
12
12
|
import * as i3 from '@acorex/components/decorators';
|
|
13
13
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
14
14
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
15
|
-
import { A as AXPFeaturesEditorComponent } from './acorex-platform-module-application-management-client-features-editor.component-
|
|
15
|
+
import { A as AXPFeaturesEditorComponent } from './acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs';
|
|
16
16
|
|
|
17
17
|
class AXPFeaturesEditorPopupComponent extends AXBasePageComponent {
|
|
18
18
|
constructor() {
|
|
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
150
150
|
}] });
|
|
151
151
|
|
|
152
152
|
export { AXMAssignFeaturesCommand };
|
|
153
|
-
//# sourceMappingURL=acorex-platform-module-application-management-client-assign-features.command-
|
|
153
|
+
//# sourceMappingURL=acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-application-management-client-assign-features.command-BG986HtP.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor-popup.component.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/commands/assign-features.command.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { Component, input, signal, ChangeDetectionStrategy } from '@angular/core';\n\nimport { AXPFeaturesEditorComponent } from './features-editor.component';\n\n@Component({\n template: `\n <div class=\"flex flex-col h-full\">\n <ax-content class=\"flex-1 overflow-auto p-4\">\n <axm-features-editor\n [initialValue]=\"initialValue()\"\n [readOnly]=\"false\"\n (valueChanged)=\"onValueChanged($event)\"\n />\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"close()\"></ax-button>\n <ax-button color=\"primary\" text=\"Save\" (onClick)=\"save()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [AXDecoratorModule, AXButtonModule, AXPFeaturesEditorComponent],\n})\nexport class AXPFeaturesEditorPopupComponent extends AXBasePageComponent {\n initialValue = input<{ modules?: string[]; features?: Record<string, unknown> }>({});\n\n private latestValue = signal<{ modules: string[]; features: Record<string, unknown> }>({\n modules: [],\n features: {},\n });\n\n override ngOnInit(): void {\n super.ngOnInit();\n const initial = this.initialValue();\n this.latestValue.set({\n modules: initial.modules ?? [],\n features: initial.features ?? {},\n });\n }\n\n protected onValueChanged(value: { modules: string[]; features: Record<string, unknown> }): void {\n this.latestValue.set(value);\n }\n\n protected save(): void {\n this.close(this.latestValue());\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPCommonSettings,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPEntityDefinitionRegistryService, dispatchEntityModifiedSideEffects } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPFeaturesEditorPopupComponent } from '../features-editor-popup.component';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMAssignFeaturesCommandInput {\n data?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Assign features command ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMAssignFeaturesCommand implements AXPCommand<AXMAssignFeaturesCommandInput> {\n private readonly popupService = inject(AXPopupService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async execute(input: AXMAssignFeaturesCommandInput = {}): AXPCommandExecuteResultPromise {\n const row = input.data;\n const id = row?.['id'];\n if (!id) {\n return { success: false, message: { text: 'Edition data with id is required.' } };\n }\n\n const title = await this.translationService.translateAsync(\n '@application-management:features-widget.terms.features',\n );\n const entityTitle = row['title'] ?? row['name'] ?? id;\n\n const modulesAndFeatures = (row['modulesAndFeatures'] as {\n modules?: string[];\n features?: Record<string, unknown>;\n }) ?? { modules: [], features: {} };\n\n const popupResult = await this.popupService.open(AXPFeaturesEditorPopupComponent, {\n title: `${title} - ${entityTitle}`,\n size: 'lg',\n data: {\n initialValue: modulesAndFeatures,\n },\n });\n\n const nextValue = popupResult?.data as { modules?: string[]; features?: Record<string, unknown> } | undefined;\n if (!nextValue) {\n return { success: true, kind: 'object', data: null };\n }\n\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.edition.name}`;\n const [moduleName, entityName] = entityKey.split('.');\n const entityRef = await this.entityRegistry.resolve(moduleName, entityName);\n const updatePayload = {\n ...row,\n modulesAndFeatures: nextValue,\n };\n\n const updated = await (entityRef.commands?.update?.execute as (\n data: Record<string, unknown>,\n ) => Promise<Record<string, unknown>>)(updatePayload);\n\n await this.showSuccessToast();\n dispatchEntityModifiedSideEffects(this.entityEvents, entityKey, updated);\n\n return { success: true, kind: 'object', data: nextValue };\n }\n\n private async showSuccessToast(): Promise<void> {\n const enableOperationToasts = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enableOperationToasts) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:workflow.entity-modified-title'),\n content: await this.translationService.translateAsync('@general:workflow.entity-modified-body'),\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n}\n\n//#endregion\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor-popup.component.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/commands/assign-features.command.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { Component, input, signal, ChangeDetectionStrategy } from '@angular/core';\n\nimport { AXPFeaturesEditorComponent } from './features-editor.component';\n\n@Component({\n template: `\n <div class=\"flex flex-col h-full\">\n <ax-content class=\"flex-1 overflow-auto p-4\">\n <axm-features-editor\n [initialValue]=\"initialValue()\"\n [readOnly]=\"false\"\n (valueChanged)=\"onValueChanged($event)\"\n />\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"close()\"></ax-button>\n <ax-button color=\"primary\" text=\"Save\" (onClick)=\"save()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [AXDecoratorModule, AXButtonModule, AXPFeaturesEditorComponent],\n})\nexport class AXPFeaturesEditorPopupComponent extends AXBasePageComponent {\n initialValue = input<{ modules?: string[]; features?: Record<string, unknown> }>({});\n\n private latestValue = signal<{ modules: string[]; features: Record<string, unknown> }>({\n modules: [],\n features: {},\n });\n\n override ngOnInit(): void {\n super.ngOnInit();\n const initial = this.initialValue();\n this.latestValue.set({\n modules: initial.modules ?? [],\n features: initial.features ?? {},\n });\n }\n\n protected onValueChanged(value: { modules: string[]; features: Record<string, unknown> }): void {\n this.latestValue.set(value);\n }\n\n protected save(): void {\n this.close(this.latestValue());\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPCommonSettings,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPEntityDefinitionRegistryService, dispatchEntityModifiedSideEffects } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPFeaturesEditorPopupComponent } from '../features-editor-popup.component';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMAssignFeaturesCommandInput {\n data?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Assign features command ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMAssignFeaturesCommand implements AXPCommand<AXMAssignFeaturesCommandInput> {\n private readonly popupService = inject(AXPopupService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async execute(input: AXMAssignFeaturesCommandInput = {}): AXPCommandExecuteResultPromise {\n const row = input.data;\n const id = row?.['id'];\n if (!id) {\n return { success: false, message: { text: 'Edition data with id is required.' } };\n }\n\n const title = await this.translationService.translateAsync(\n '@application-management:features-widget.terms.features',\n );\n const entityTitle = row['title'] ?? row['name'] ?? id;\n\n const modulesAndFeatures = (row['modulesAndFeatures'] as {\n modules?: string[];\n features?: Record<string, unknown>;\n }) ?? { modules: [], features: {} };\n\n const popupResult = await this.popupService.open(AXPFeaturesEditorPopupComponent, {\n title: `${title} - ${entityTitle}`,\n size: 'lg',\n data: {\n initialValue: modulesAndFeatures,\n },\n });\n\n const nextValue = popupResult?.data as { modules?: string[]; features?: Record<string, unknown> } | undefined;\n if (!nextValue) {\n return { success: true, kind: 'object', data: null };\n }\n\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.edition.name}`;\n const [moduleName, entityName] = entityKey.split('.');\n const entityRef = await this.entityRegistry.resolve(moduleName, entityName);\n const updatePayload = {\n ...row,\n modulesAndFeatures: nextValue,\n };\n\n const updated = await (entityRef.commands?.update?.execute as (\n data: Record<string, unknown>,\n ) => Promise<Record<string, unknown>>)(updatePayload);\n\n await this.showSuccessToast();\n dispatchEntityModifiedSideEffects(this.entityEvents, entityKey, updated);\n\n return { success: true, kind: 'object', data: nextValue };\n }\n\n private async showSuccessToast(): Promise<void> {\n const enableOperationToasts = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enableOperationToasts) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:workflow.entity-modified-title'),\n content: await this.translationService.translateAsync('@general:workflow.entity-modified-body'),\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n}\n\n//#endregion\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -539,7 +539,8 @@ class AXPFeaturesEditorComponent {
|
|
|
539
539
|
const currentValues = { ...this.featureValues() };
|
|
540
540
|
if (event.value) {
|
|
541
541
|
if (currentValues[feature.fullName] === undefined || currentValues[feature.fullName] === null) {
|
|
542
|
-
currentValues[feature.fullName] =
|
|
542
|
+
currentValues[feature.fullName] =
|
|
543
|
+
feature.definition.type === 'boolean' ? true : feature.definition.defaultValue;
|
|
543
544
|
}
|
|
544
545
|
}
|
|
545
546
|
else {
|
|
@@ -581,4 +582,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
581
582
|
}], propDecorators: { initialValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialValue", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], valueChanged: [{ type: i0.Output, args: ["valueChanged"] }] } });
|
|
582
583
|
|
|
583
584
|
export { AXPFeaturesEditorComponent as A };
|
|
584
|
-
//# sourceMappingURL=acorex-platform-module-application-management-client-features-editor.component-
|
|
585
|
+
//# sourceMappingURL=acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor.component.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n signal,\n input,\n output,\n OnInit,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXPModuleManifestRegistry,\n AXPModuleManifest,\n AXPModuleFeatureDefinition,\n AXP_MODULE_TYPE,\n AXP_MODULE_DOMAIN,\n resolveModuleType,\n resolveModuleDomain,\n type AXPModuleType,\n} from '@acorex-platform/framework-client/core';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype EditionModulesViewMode = 'type' | 'domain';\n\ntype ModuleListItem = AXPModuleManifest & {\n translatedTitle?: string;\n translatedDescription?: string;\n featureSearchText?: string;\n};\n\ntype ModuleGroupView = {\n id: string;\n titleKey: string;\n modules: ModuleListItem[];\n};\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@application-management:editions.modules-editor';\n\nconst TYPE_ORDER: AXPModuleType[] = [\n AXP_MODULE_TYPE.platform,\n AXP_MODULE_TYPE.domain,\n AXP_MODULE_TYPE.integration,\n];\n\nconst DOMAIN_ORDER: string[] = [\n AXP_MODULE_DOMAIN.platform,\n AXP_MODULE_DOMAIN.humanCapital,\n AXP_MODULE_DOMAIN.projectManagement,\n AXP_MODULE_DOMAIN.assetMaintenance,\n AXP_MODULE_DOMAIN.workplaceSafety,\n AXP_MODULE_DOMAIN.assessmentLearning,\n AXP_MODULE_DOMAIN.financeCommerce,\n AXP_MODULE_DOMAIN.customerSupplier,\n AXP_MODULE_DOMAIN.communication,\n AXP_MODULE_DOMAIN.ai,\n AXP_MODULE_DOMAIN.contentDocuments,\n AXP_MODULE_DOMAIN.data,\n AXP_MODULE_DOMAIN.operations,\n AXP_MODULE_DOMAIN.weather,\n AXP_MODULE_DOMAIN.sourceControl,\n AXP_MODULE_DOMAIN.general,\n];\n\n//#endregion\n\n//#region ----- Features Editor Component -----\n\n@Component({\n selector: 'axm-features-editor',\n templateUrl: './features-editor.component.html',\n styleUrl: './features-editor.component.css',\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXTranslationModule,\n AXTooltipModule,\n AXSearchBoxModule,\n AXButtonGroupModule,\n AXButtonModule,\n AXDecoratorModule,\n AXPWidgetCoreModule,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n class: 'axm-features-editor flex flex-col w-full min-h-0',\n },\n})\nexport class AXPFeaturesEditorComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ----- Inputs / Outputs -----\n\n /** Initial value: { modules: string[], features: Record<string, any> } */\n initialValue = input<{ modules?: string[]; features?: Record<string, any> }>({});\n\n /** Whether the editor is in read-only mode */\n readOnly = input<boolean>(false);\n\n /** Event emitted when modules/features selection/values change */\n valueChanged = output<{ modules: string[]; features: Record<string, any> }>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly i18n = I18N;\n\n protected readonly searchTerm = signal('');\n\n protected readonly viewMode = signal<EditionModulesViewMode>('type');\n\n /** All available module manifests with translated titles */\n private readonly allModules = signal<ModuleListItem[]>([]);\n\n /** Selected module names */\n protected readonly selectedModules = signal<Set<string>>(new Set());\n\n /** Expanded module names */\n protected readonly expandedModules = signal<Set<string>>(new Set());\n\n /** Expanded feature full names */\n protected readonly expandedFeatures = signal<Set<string>>(new Set());\n\n /** Map of feature values: Record<featureName, featureValue> */\n protected readonly featureValues = signal<Record<string, any>>({});\n\n /** Cache for widget nodes to prevent re-creation and blinking */\n private readonly widgetNodeCache = new Map<string, AXPWidgetNode>();\n\n /** Cache for feature data to prevent re-computation */\n private readonly moduleFeaturesCache = new Map<\n string,\n Array<{\n key: string;\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n isEnabled: boolean;\n widgetNode: AXPWidgetNode | null;\n }>\n >();\n\n /** Set of modules that are currently loading features */\n private readonly loadingFeatures = signal<Set<string>>(new Set());\n\n /** Signal to trigger change detection when features are loaded */\n private readonly featuresLoaded = signal<number>(0);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n /** Required module names (always enabled, cannot be disabled) */\n protected readonly requiredModules = computed(() => {\n return new Set(this.allModules().filter((m) => m.required === true).map((m) => m.name));\n });\n\n /** Modules that are dependencies of selected modules (auto-selected and disabled) */\n protected readonly dependencyModules = computed(() => {\n const selected = this.selectedModules();\n const allManifests = this.manifestRegistry.getAll();\n const dependencySet = new Set<string>();\n\n for (const manifest of allManifests) {\n if (selected.has(manifest.name) && manifest.dependencies) {\n for (const dep of manifest.dependencies) {\n if (!dep.includes('.')) {\n dependencySet.add(dep);\n }\n }\n }\n }\n\n return dependencySet;\n });\n\n /** Always-available (required) modules matching the current search */\n protected readonly alwaysAvailableModules = computed(() => {\n return this.sortModules(\n this.allModules().filter((m) => m.required === true && this.matchesSearch(m)),\n );\n });\n\n /** Grouped non-required modules for the active view mode */\n protected readonly moduleGroups = computed((): ModuleGroupView[] => {\n const modules = this.sortModules(\n this.allModules().filter((m) => m.required !== true && this.matchesSearch(m)),\n );\n\n if (this.viewMode() === 'type') {\n return this.groupByType(modules);\n }\n return this.groupByDomain(modules);\n });\n\n protected readonly hasVisibleModules = computed(() => {\n return this.alwaysAvailableModules().length > 0 || this.moduleGroups().some((g) => g.modules.length > 0);\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n ngOnInit() {\n // Sync paint only — never await settings/i18n/initialize on the critical path\n // (settings.get can hang on session ready and previously left the UI stuck).\n const manifests = this.manifestRegistry.getAll();\n this.allModules.set(\n manifests.map((manifest) => ({\n ...manifest,\n translatedTitle: manifest.title,\n translatedDescription: manifest.description || '',\n featureSearchText: '',\n })),\n );\n\n const initialValue = this.initialValue();\n const initialModules = new Set<string>(initialValue.modules || []);\n\n if (initialValue.features) {\n for (const featureKey of Object.keys(initialValue.features)) {\n const [moduleName] = featureKey.split(':');\n if (moduleName) {\n initialModules.add(moduleName);\n }\n }\n }\n\n this.requiredModules().forEach((moduleName) => {\n initialModules.add(moduleName);\n });\n\n this.ensureDependencies(initialModules);\n this.selectedModules.set(initialModules);\n\n if (initialValue.features) {\n this.featureValues.set(initialValue.features);\n }\n\n this.widgetNodeCache.clear();\n this.moduleFeaturesCache.clear();\n\n // Prefer sync cache — scoped get() can block on session/scope load.\n const cachedViewMode = this.settingsService.peekCached(\n AXPApplicationInfoSettings.EditionModulesViewMode,\n );\n if (cachedViewMode === 'type' || cachedViewMode === 'domain') {\n this.viewMode.set(cachedViewMode);\n }\n\n void this.hydrateAsync();\n }\n\n private async hydrateAsync(): Promise<void> {\n try {\n if (this.allModules().length === 0) {\n await this.manifestRegistry.initialize();\n const manifests = this.manifestRegistry.getAll();\n this.allModules.set(\n manifests.map((manifest) => ({\n ...manifest,\n translatedTitle: manifest.title,\n translatedDescription: manifest.description || '',\n featureSearchText: '',\n })),\n );\n this.requiredModules().forEach((moduleName) => {\n const selected = new Set(this.selectedModules());\n selected.add(moduleName);\n this.ensureDependencies(selected);\n this.selectedModules.set(selected);\n });\n }\n\n const modules = this.allModules();\n const enriched = await Promise.all(\n modules.map(async (module) => {\n let translatedTitle = module.title;\n try {\n translatedTitle =\n (await this.translationService.translateAsync(module.title)) || module.title;\n } catch {\n // keep raw title\n }\n return {\n ...module,\n translatedTitle,\n } satisfies ModuleListItem;\n }),\n );\n this.allModules.set(enriched);\n } catch (error) {\n console.warn('Features editor background hydrate failed', error);\n }\n }\n\n //#endregion\n\n //#region ----- Grouping & Search -----\n\n private matchesSearch(module: ModuleListItem): boolean {\n const term = String(this.searchTerm() ?? '')\n .trim()\n .toLowerCase();\n if (!term) {\n return true;\n }\n\n const haystack = [\n module.translatedTitle,\n module.translatedDescription,\n module.title,\n module.description,\n module.name,\n module.featureSearchText,\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n\n return haystack.includes(term);\n }\n\n private sortModules(modules: ModuleListItem[]): ModuleListItem[] {\n return [...modules].sort((a, b) => {\n const titleA = a.translatedTitle || a.title || '';\n const titleB = b.translatedTitle || b.title || '';\n return titleA.localeCompare(titleB, undefined, { sensitivity: 'base' });\n });\n }\n\n private groupByType(modules: ModuleListItem[]): ModuleGroupView[] {\n const buckets = new Map<AXPModuleType, ModuleListItem[]>();\n for (const type of TYPE_ORDER) {\n buckets.set(type, []);\n }\n\n for (const module of modules) {\n const type = resolveModuleType(module);\n const list = buckets.get(type) ?? [];\n list.push(module);\n buckets.set(type, list);\n }\n\n return TYPE_ORDER.filter((type) => (buckets.get(type)?.length ?? 0) > 0).map((type) => ({\n id: `type:${type}`,\n titleKey: `${I18N}.types.${type}`,\n modules: buckets.get(type) ?? [],\n }));\n }\n\n private groupByDomain(modules: ModuleListItem[]): ModuleGroupView[] {\n const buckets = new Map<string, ModuleListItem[]>();\n\n for (const module of modules) {\n const domain = resolveModuleDomain(module);\n const list = buckets.get(domain) ?? [];\n list.push(module);\n buckets.set(domain, list);\n }\n\n const known = DOMAIN_ORDER.filter((domain) => (buckets.get(domain)?.length ?? 0) > 0);\n const extra = [...buckets.keys()]\n .filter((domain) => !DOMAIN_ORDER.includes(domain))\n .sort((a, b) => a.localeCompare(b));\n\n return [...known, ...extra].map((domain) => ({\n id: `domain:${domain}`,\n titleKey: `${I18N}.domains.${domain}`,\n modules: buckets.get(domain) ?? [],\n }));\n }\n\n //#endregion\n\n //#region ----- Public API -----\n\n public getValue(): { modules: string[]; features: Record<string, any> } {\n return {\n modules: Array.from(this.selectedModules()),\n features: this.featureValues(),\n };\n }\n\n public setValue(value: { modules?: string[]; features?: Record<string, any> }): void {\n if (value.modules) {\n this.selectedModules.set(new Set(value.modules));\n }\n if (value.features) {\n this.featureValues.set(value.features);\n }\n this.emitValueChanged();\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private createWidgetNode(definition: AXPModuleFeatureDefinition, fullName: string): AXPWidgetNode | null {\n if (!definition.interface) {\n return null;\n }\n\n const currentValue = this.featureValues()[fullName];\n const defaultValue =\n currentValue !== undefined && currentValue !== null ? currentValue : definition.defaultValue;\n\n let widgetNode = this.widgetNodeCache.get(fullName);\n\n if (!widgetNode) {\n widgetNode = {\n type: definition.interface.type,\n name: fullName,\n defaultValue: defaultValue,\n options: definition.interface.options || {},\n };\n this.widgetNodeCache.set(fullName, widgetNode);\n } else if (widgetNode.defaultValue !== defaultValue) {\n widgetNode.defaultValue = defaultValue;\n }\n\n return widgetNode;\n }\n\n private emitValueChanged(): void {\n this.valueChanged.emit(this.getValue());\n }\n\n private ensureDependencies(modules: Set<string>): void {\n const allManifests = this.manifestRegistry.getAll();\n let changed = true;\n\n while (changed) {\n changed = false;\n for (const manifest of allManifests) {\n if (modules.has(manifest.name) && manifest.dependencies) {\n for (const dep of manifest.dependencies) {\n if (!dep.includes('.') && !modules.has(dep)) {\n modules.add(dep);\n changed = true;\n }\n }\n }\n }\n }\n }\n\n protected getModuleFeatures(module: AXPModuleManifest): Array<{\n key: string;\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n isEnabled: boolean;\n widgetNode: AXPWidgetNode | null;\n }> {\n this.featuresLoaded();\n\n const moduleFeatures = this.manifestRegistry.getModuleFeatures(module.name);\n if (moduleFeatures.length === 0) {\n return [];\n }\n\n const cacheKey = module.name;\n const currentValues = this.featureValues();\n const cached = this.moduleFeaturesCache.get(cacheKey);\n if (cached) {\n cached.forEach((feature) => {\n const currentValue = currentValues[feature.fullName];\n feature.isEnabled = currentValue !== undefined && currentValue !== null;\n\n if (feature.widgetNode) {\n const newDefaultValue =\n currentValue !== undefined && currentValue !== null\n ? currentValue\n : feature.definition.defaultValue;\n if (feature.widgetNode.defaultValue !== newDefaultValue) {\n feature.widgetNode.defaultValue = newDefaultValue;\n }\n }\n });\n return cached;\n }\n\n const features = moduleFeatures.map((featureDef) => {\n const fullName = featureDef.name;\n const shortKey = featureDef.key;\n const currentValue = currentValues[fullName];\n const isEnabled = currentValue !== undefined && currentValue !== null;\n const widgetNode = this.createWidgetNode(featureDef, fullName);\n\n return {\n key: shortKey,\n fullName,\n definition: featureDef,\n isEnabled,\n widgetNode,\n };\n });\n\n this.moduleFeaturesCache.set(cacheKey, features);\n return features;\n }\n\n private async loadModuleFeatures(module: AXPModuleManifest): Promise<void> {\n try {\n this.moduleFeaturesCache.delete(module.name);\n this.featuresLoaded.update((v) => v + 1);\n } finally {\n this.loadingFeatures.update((set) => {\n const newSet = new Set(set);\n newSet.delete(module.name);\n return newSet;\n });\n }\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSearchTermChange(value: string | null | undefined): void {\n this.searchTerm.set(String(value ?? ''));\n }\n\n protected onViewModeChange(mode: EditionModulesViewMode): void {\n if (this.viewMode() === mode) {\n return;\n }\n this.viewMode.set(mode);\n // Fire-and-forget; do not block UI if scope load is slow.\n void this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPApplicationInfoSettings.EditionModulesViewMode, mode)\n .catch((error) => {\n console.warn('Failed to persist edition modules view mode', error);\n });\n }\n\n protected toggleModule(module: AXPModuleManifest): void {\n const moduleName = module.name;\n const expanded = new Set(this.expandedModules());\n if (expanded.has(moduleName)) {\n expanded.delete(moduleName);\n } else {\n expanded.add(moduleName);\n if (!this.loadingFeatures().has(moduleName)) {\n this.loadingFeatures.update((set) => new Set(set).add(moduleName));\n this.loadModuleFeatures(module).catch((error) => {\n console.error(`Failed to refresh features for module ${moduleName}:`, error);\n });\n }\n }\n this.expandedModules.set(expanded);\n }\n\n protected toggleFeature(fullName: string): void {\n const expanded = new Set(this.expandedFeatures());\n if (expanded.has(fullName)) {\n expanded.delete(fullName);\n } else {\n expanded.add(fullName);\n }\n this.expandedFeatures.set(expanded);\n }\n\n protected isModuleExpanded(moduleName: string): boolean {\n return this.expandedModules().has(moduleName);\n }\n\n protected isFeatureExpanded(fullName: string): boolean {\n return this.expandedFeatures().has(fullName);\n }\n\n protected isModuleSelected(moduleName: string): boolean {\n if (this.selectedModules().has(moduleName)) {\n return true;\n }\n const featureValue = this.featureValues()[moduleName];\n return featureValue !== undefined && featureValue !== null;\n }\n\n protected isModuleRequired(moduleName: string): boolean {\n return this.requiredModules().has(moduleName);\n }\n\n protected isModuleDependency(moduleName: string): boolean {\n return this.dependencyModules().has(moduleName);\n }\n\n protected isModuleDisabled(moduleName: string): boolean {\n return this.isModuleRequired(moduleName) || this.isModuleDependency(moduleName);\n }\n\n protected canEnableModule(moduleName: string): boolean {\n const manifest = this.manifestRegistry.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return true;\n }\n\n const selected = this.selectedModules();\n const moduleDeps = manifest.dependencies.filter((dep) => !dep.includes('.'));\n return moduleDeps.every((dep) => selected.has(dep));\n }\n\n protected getMissingDependencies(moduleName: string): string[] {\n const manifest = this.manifestRegistry.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return [];\n }\n\n const selected = this.selectedModules();\n const moduleDeps = manifest.dependencies.filter((dep) => !dep.includes('.'));\n return moduleDeps.filter((dep) => !selected.has(dep));\n }\n\n protected getDependentModules(moduleName: string): string[] {\n const allManifests = this.manifestRegistry.getAll();\n return allManifests.filter((m) => m.dependencies?.includes(moduleName)).map((m) => m.name);\n }\n\n protected getModuleIcon(module: AXPModuleManifest): string {\n return module.icon || 'fa-light fa-cube';\n }\n\n protected hasModuleFeatures(module: AXPModuleManifest): boolean {\n return this.manifestRegistry.getModuleFeatures(module.name).length > 0;\n }\n\n protected onModuleToggle(module: AXPModuleManifest, event: AXValueChangedEvent): void {\n if (this.readOnly() || this.isModuleDisabled(module.name)) {\n return;\n }\n\n const selectedModules = new Set(this.selectedModules());\n const currentValues = { ...this.featureValues() };\n\n if (event.value) {\n selectedModules.add(module.name);\n currentValues[module.name] = true;\n this.ensureDependencies(selectedModules);\n\n if (!this.loadingFeatures().has(module.name)) {\n setTimeout(() => {\n this.loadingFeatures.update((set) => new Set(set).add(module.name));\n this.loadModuleFeatures(module).catch((error) => {\n console.error(`Failed to refresh features for module ${module.name}:`, error);\n this.loadingFeatures.update((set) => {\n const newSet = new Set(set);\n newSet.delete(module.name);\n return newSet;\n });\n });\n }, 0);\n }\n } else {\n const dependentModules = this.getDependentModules(module.name);\n const hasSelectedDependents = dependentModules.some((dep) => selectedModules.has(dep));\n\n if (hasSelectedDependents) {\n return;\n }\n\n selectedModules.delete(module.name);\n delete currentValues[module.name];\n }\n\n this.selectedModules.set(selectedModules);\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n protected onFeatureToggle(\n feature: {\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n widgetNode: AXPWidgetNode | null;\n },\n event: AXValueChangedEvent,\n ): void {\n if (this.readOnly()) {\n return;\n }\n\n const currentValues = { ...this.featureValues() };\n\n if (event.value) {\n if (currentValues[feature.fullName] === undefined || currentValues[feature.fullName] === null) {\n currentValues[feature.fullName] =\n feature.definition.type === 'boolean' ? true : feature.definition.defaultValue;\n }\n } else {\n delete currentValues[feature.fullName];\n }\n\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n protected onFeatureValueChange(featureFullName: string, value: any): void {\n if (this.readOnly()) {\n return;\n }\n\n const currentValues = { ...this.featureValues() };\n currentValues[featureFullName] = value;\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Toolbar: search + view mode ----- -->\n<div class=\"axm-features-editor__toolbar\">\n <ax-search-box\n class=\"flex-1 min-w-[12rem]\"\n look=\"outline\"\n [placeholder]=\"(i18n + '.search-placeholder' | translate | async) || ''\"\n [ngModel]=\"searchTerm()\"\n [delayTime]=\"300\"\n (ngModelChange)=\"onSearchTermChange($event)\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n\n <ax-button-group selection=\"single\" look=\"outline\" class=\"shrink-0\">\n <ax-button-group-item\n [text]=\"(i18n + '.view-mode.type' | translate | async) ?? ''\"\n [selected]=\"viewMode() === 'type'\"\n [data]=\"'type'\"\n (onClick)=\"onViewModeChange('type')\">\n </ax-button-group-item>\n <ax-button-group-item\n [text]=\"(i18n + '.view-mode.domain' | translate | async) ?? ''\"\n [selected]=\"viewMode() === 'domain'\"\n [data]=\"'domain'\"\n (onClick)=\"onViewModeChange('domain')\">\n </ax-button-group-item>\n </ax-button-group>\n</div>\n\n<!-- ----- Module groups list ----- -->\n<div class=\"axm-features-editor__list overflow-auto\">\n <!--->\n <!-- ----- Empty search / filter result ----- -->\n @if (!hasVisibleModules()) {\n <div class=\"text-sm text-muted py-6 text-center\">\n {{ i18n + '.empty' | translate | async }}\n </div>\n }\n <!-- ----- Grouped modules with Always Available pinned first ----- -->\n @else {\n <!--->\n <!-- ----- Always available (required) modules ----- -->\n @if (alwaysAvailableModules().length > 0) {\n <section class=\"axm-features-editor__group\">\n <div class=\"axm-features-editor__group-title\">\n {{ i18n + '.always-available' | translate | async }}\n </div>\n <div class=\"flex flex-col gap-2\">\n @for (module of alwaysAvailableModules(); track module.name) {\n <ng-container *ngTemplateOutlet=\"moduleTemplate; context: { $implicit: module, level: 0 }\">\n </ng-container>\n }\n </div>\n </section>\n }\n\n @for (group of moduleGroups(); track group.id) {\n <section class=\"axm-features-editor__group\">\n <div class=\"axm-features-editor__group-title\">\n {{ group.titleKey | translate | async }}\n </div>\n <div class=\"flex flex-col gap-2\">\n @for (module of group.modules; track module.name) {\n <ng-container *ngTemplateOutlet=\"moduleTemplate; context: { $implicit: module, level: 0 }\">\n </ng-container>\n }\n </div>\n </section>\n }\n }\n</div>\n\n<!-- ----- Module row template ----- -->\n<ng-template #moduleTemplate let-module let-level=\"level\">\n <div class=\"flex flex-col\">\n <!-- ----- Module checkbox row ----- -->\n <div class=\"flex items-center gap-3 rounded hover:bg-surface-lowest\" [style.padding-left.px]=\"level * 32\">\n <span class=\"w-4\"></span>\n\n <ax-check-box\n [ngModel]=\"isModuleSelected(module.name)\"\n [readonly]=\"readOnly() || isModuleDisabled(module.name)\"\n [class.opacity-50]=\"isModuleDependency(module.name) && !isModuleRequired(module.name)\"\n (onValueChanged)=\"onModuleToggle(module, $event)\"\n (click)=\"$event.stopPropagation()\">\n </ax-check-box>\n\n <i [class]=\"getModuleIcon(module) + ' text-primary fa-fw'\"></i>\n\n <span class=\"flex-1 font-semibold\">{{ module.title | translate | async }}</span>\n\n <!--->\n <!-- ----- Required badge ----- -->\n @if (isModuleRequired(module.name)) {\n <span class=\"text-xs text-primary font-medium\">\n ({{ i18n + '.badges.required' | translate | async }})\n </span>\n }\n\n <!--->\n <!-- ----- Dependency badge ----- -->\n @if (isModuleDependency(module.name) && !isModuleRequired(module.name)) {\n <span class=\"text-xs text-secondary font-medium\">\n ({{ i18n + '.badges.dependency' | translate | async }})\n </span>\n }\n </div>\n\n <!--->\n <!-- ----- Nested features when module selected ----- -->\n @if (isModuleSelected(module.name) && hasModuleFeatures(module)) {\n <div class=\"flex flex-col gap-3 py-4 px-3\">\n @for (feature of getModuleFeatures(module); track feature.fullName) {\n <ng-container\n *ngTemplateOutlet=\"featureTemplate; context: { $implicit: feature, module: module, level: level + 1 }\">\n </ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<!-- ----- Feature row template ----- -->\n<ng-template #featureTemplate let-feature let-module=\"module\" let-level=\"level\">\n <div class=\"flex flex-col\">\n <div class=\"flex items-start gap-3 rounded hover:bg-surface-lowest\" [style.padding-left.px]=\"level * 32\">\n <span class=\"w-4\"></span>\n\n <ax-check-box\n [ngModel]=\"feature.isEnabled\"\n [readonly]=\"readOnly()\"\n (onValueChanged)=\"onFeatureToggle(feature, $event)\"\n (click)=\"$event.stopPropagation()\">\n </ax-check-box>\n\n <div class=\"flex flex-col flex-1 gap-1.5\">\n <div class=\"flex items-center gap-2\">\n <i class=\"fa-light fa-toggle-on text-secondary\"></i>\n <span class=\"font-semibold\">{{ feature.definition.title | translate | async }}</span>\n </div>\n\n <!--->\n <!-- ----- Feature description ----- -->\n @if (feature.definition.description) {\n <div class=\"text-sm text-muted ms-6 leading-relaxed\">\n {{ feature.definition.description | translate | async }}\n </div>\n }\n\n <!--->\n <!-- ----- Feature config widget ----- -->\n @if (feature.isEnabled && feature.widgetNode) {\n <div class=\"mt-3 ms-6 ax-sm\">\n <ng-container\n axp-widget-renderer\n [node]=\"feature.widgetNode\"\n [mode]=\"readOnly() ? 'view' : 'edit'\"\n (onValueChanged)=\"onFeatureValueChange(feature.fullName, $event.widget.getValue())\">\n </ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</ng-template>\n"],"names":["i3","i6","i8"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
-
import { A as AXPFeaturesEditorComponent } from './acorex-platform-module-application-management-client-features-editor.component-
|
|
4
|
+
import { A as AXPFeaturesEditorComponent } from './acorex-platform-module-application-management-client-features-editor.component-D9Tfh0gb.mjs';
|
|
5
5
|
|
|
6
6
|
class AXPModuleFeatureEditorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
7
7
|
// #region ---------------- UI Handlers ----------------
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
39
39
|
}] });
|
|
40
40
|
|
|
41
41
|
export { AXPModuleFeatureEditorWidgetEditComponent };
|
|
42
|
-
//# sourceMappingURL=acorex-platform-module-application-management-client-features-widget-edit.component-
|
|
42
|
+
//# sourceMappingURL=acorex-platform-module-application-management-client-features-widget-edit.component-B9YJsZFp.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-application-management-client-features-widget-edit.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-application-management-client-features-widget-edit.component-B9YJsZFp.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-widget-edit.component.ts"],"sourcesContent":["import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AXPFeaturesEditorComponent } from './features-editor.component';\n\n@Component({\n template: `\n <axm-features-editor\n [initialValue]=\"getValue() || {}\"\n [readOnly]=\"false\"\n (valueChanged)=\"onEditorValueChanged($event)\">\n </axm-features-editor>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXPFeaturesEditorComponent\n]\n})\nexport class AXPModuleFeatureEditorWidgetEditComponent extends AXPValueWidgetComponent<{ modules: string[]; features: Record<string, any> }> {\n\n // #region ---------------- UI Handlers ----------------\n\n /**\n * Handles value changes from the editor.\n */\n protected onEditorValueChanged(value: { modules: string[]; features: Record<string, any> }): void {\n this.setValue(value);\n }\n // #endregion\n\n}\n\n"],"names":[],"mappings":";;;;;AAmBM,MAAO,yCAA0C,SAAQ,uBAA6E,CAAA;;AAI1I;;AAEG;AACO,IAAA,oBAAoB,CAAC,KAA2D,EAAA;AACxF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;8GATW,yCAAyC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yCAAyC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAb1C;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAIC,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGjB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAdrD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE;wBACP;AACH;AACA,iBAAA;;;;;"}
|
|
@@ -498,7 +498,6 @@ var listTerms_component = /*#__PURE__*/Object.freeze({
|
|
|
498
498
|
//#region ---- Setting Provider ----
|
|
499
499
|
const I18N_APP = '@application-management:application-info.settings';
|
|
500
500
|
const I18N_GENERAL = '@general:settings';
|
|
501
|
-
const I18N_EDITION_MODULES = '@application-management:editions.modules-editor.settings';
|
|
502
501
|
class AXPApplicationInfoSettingProvider {
|
|
503
502
|
async provide(context) {
|
|
504
503
|
// Find the 'Experience' settings group
|
|
@@ -561,26 +560,6 @@ class AXPApplicationInfoSettingProvider {
|
|
|
561
560
|
},
|
|
562
561
|
description: `${I18N_GENERAL}.experience.startup.release-notes.description`,
|
|
563
562
|
});
|
|
564
|
-
section.addSetting({
|
|
565
|
-
key: AXPApplicationInfoSettings.EditionModulesViewMode,
|
|
566
|
-
title: `${I18N_EDITION_MODULES}.view-mode.title`,
|
|
567
|
-
description: `${I18N_EDITION_MODULES}.view-mode.description`,
|
|
568
|
-
scope: AXPPlatformScope.User,
|
|
569
|
-
overridableAt: [],
|
|
570
|
-
isInherited: false,
|
|
571
|
-
defaultValue: 'type',
|
|
572
|
-
widget: {
|
|
573
|
-
type: AXPWidgetsCatalog.select,
|
|
574
|
-
options: {
|
|
575
|
-
valueField: 'value',
|
|
576
|
-
textField: 'text',
|
|
577
|
-
dataSource: [
|
|
578
|
-
{ value: 'type', text: '@application-management:editions.modules-editor.view-mode.type' },
|
|
579
|
-
{ value: 'domain', text: '@application-management:editions.modules-editor.view-mode.domain' },
|
|
580
|
-
],
|
|
581
|
-
},
|
|
582
|
-
},
|
|
583
|
-
});
|
|
584
563
|
section.endSection();
|
|
585
564
|
}
|
|
586
565
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApplicationInfoSettingProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -685,7 +664,7 @@ const AXPModuleFeatureEditorWidget = {
|
|
|
685
664
|
component: () => import('./acorex-platform-module-application-management-client-features-widget-view.component-yKbBTqym.mjs').then((c) => c.AXPFeaturesWidgetViewComponent),
|
|
686
665
|
},
|
|
687
666
|
edit: {
|
|
688
|
-
component: () => import('./acorex-platform-module-application-management-client-features-widget-edit.component-
|
|
667
|
+
component: () => import('./acorex-platform-module-application-management-client-features-widget-edit.component-B9YJsZFp.mjs').then((c) => c.AXPModuleFeatureEditorWidgetEditComponent),
|
|
689
668
|
},
|
|
690
669
|
column: {
|
|
691
670
|
component: () => import('./acorex-platform-module-application-management-client-features-widget-column.component-C2OEG0LL.mjs').then((c) => c.AXPFeaturesWidgetColumnComponent),
|
|
@@ -842,7 +821,7 @@ class AXMApplicationManagementModule {
|
|
|
842
821
|
},
|
|
843
822
|
{
|
|
844
823
|
key: 'assign-features',
|
|
845
|
-
command: () => import('./acorex-platform-module-application-management-client-assign-features.command-
|
|
824
|
+
command: () => import('./acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs').then((c) => c.AXMAssignFeaturesCommand),
|
|
846
825
|
},
|
|
847
826
|
]),
|
|
848
827
|
// Module Manifest Provider
|
|
@@ -964,7 +943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
964
943
|
},
|
|
965
944
|
{
|
|
966
945
|
key: 'assign-features',
|
|
967
|
-
command: () => import('./acorex-platform-module-application-management-client-assign-features.command-
|
|
946
|
+
command: () => import('./acorex-platform-module-application-management-client-assign-features.command-CcVvmbTe.mjs').then((c) => c.AXMAssignFeaturesCommand),
|
|
968
947
|
},
|
|
969
948
|
]),
|
|
970
949
|
// Module Manifest Provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-application-management-client.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-term/notify-app-term.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-term/notify-app-term.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/new-term.command.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/new-term.command.definition.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/show-release-notes.command.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/show-release-notes.command.definition.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-version/notify-app-version.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-version/notify-app-version.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/list-versions/list-version.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/list-versions/list-version.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/slots/application-info-slot.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/slots/copyright-footer-slot.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/pages/list/list-terms.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/pages/list/list-terms.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/settings.provider.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/check-terms.service.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-widget.config.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/widget-definition.provider.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features.module.ts","../../../../libs/modules/application-management/client/src/lib/manifest.ts","../../../../libs/modules/application-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/application-management/client/src/lib/context-definition.provider.ts","../../../../libs/modules/application-management/client/src/lib/application-management.module.ts","../../../../libs/modules/application-management/client/src/lib/menu.provider.ts","../../../../libs/modules/application-management/client/src/acorex-platform-module-application-management-client.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMAppTermEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\n@Component({\n selector: 'axm-notify-app-term',\n imports: [\n CommonModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n AXSafePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './notify-app-term.component.html',\n})\nexport class AXMNotifyAppTermComponent extends AXBasePageComponent {\n data: AXMAppTermEntityModel[];\n safeData: SafeHtml | null;\n isConfirm: boolean = false;\n\n i18n = RootConfig.config.i18n;\n\n transformContent(content: string): string {\n return content.replace(/\\n/g, '<br>');\n }\n\n send(): void {\n this.close({ data: this.data });\n }\n}\n\n","@for (item of data; track $index) {\n <ax-content class=\"block px-4 py-4 font-bold\">{{ item.title }}</ax-content>\n <ax-content\n class=\"block px-4 pb-4 text-base/6\"\n [innerHTML]=\"transformContent(item.content) | safe: 'html'\"\n ></ax-content>\n}\n<ax-footer class=\"flex items-center justify-between p-2\">\n <ax-check-box [(value)]=\"isConfirm\">\n <ax-label>{{ 'agreeTerm' | translate: { scope: i18n } | async }}</ax-label>\n </ax-check-box>\n <ax-button\n (click)=\"send()\"\n [text]=\"'@general:actions.ok.title' | translate | async\"\n [disabled]=\"!isConfirm\"\n color=\"primary\"\n ></ax-button>\n</ax-footer>\n\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { AXMAppTermEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\nimport { AXMNotifyAppTermComponent } from '../components/notify-app-term/notify-app-term.component';\n\n//#region ---- Types ----\n\nexport type AXMNewTermCommandInput = AXMAppTermEntityModel[] | { terms?: AXMAppTermEntityModel[] };\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveTerms(input?: AXMNewTermCommandInput | null): AXMAppTermEntityModel[] {\n if (!input) {\n return [];\n }\n if (Array.isArray(input)) {\n return input;\n }\n return input.terms ?? [];\n}\n\n//#endregion\n\n//#region ---- New term command ----\n\n/**\n * Shows the terms confirmation popup, then marks each term as confirmed in user settings.\n * Replaces the former `new-term` workflow (popup step + settings step).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMNewTermCommand implements AXPCommand<AXMNewTermCommandInput> {\n private readonly popupService = inject(AXPopupService);\n private readonly settingsService = inject(AXPSettingsService);\n\n async execute(input: AXMNewTermCommandInput = []): AXPCommandExecuteResultPromise {\n const dataList = resolveTerms(input);\n if (dataList.length === 0) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n await this.popupService.open(AXMNotifyAppTermComponent, {\n title: 'New Terms And Conditions',\n data: { data: dataList },\n closeButton: false,\n });\n\n for (const term of dataList) {\n await this.settingsService.scope(AXPPlatformScope.User).set(`is-confirm-term-${term.id}`, true);\n }\n\n return { success: true, kind: 'object', data: undefined };\n }\n}\n\n//#endregion\n","/**\n * Build-time only. Do not import from Angular modules.\n */\n\nimport { AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM, defineCommand } from '@acorex-platform/framework-shared/runtime';\n\nexport const axmNewTermCommandDefinition = defineCommand({\n key: 'new-term',\n title: 'Confirm new terms and conditions',\n description:\n 'AXMNewTermCommand opens AXMNotifyAppTermComponent for unconfirmed terms, then sets is-confirm-term-{id} in user settings.',\n executionMode: 'frontend',\n inputs: [\n {\n name: 'terms',\n title: 'Terms',\n description: 'AXMAppTermEntityModel[] (or pass the array as root input from startup).',\n interface: { name: 'text-editor' },\n },\n ],\n outcomes: {\n mode: 'static',\n values: ['success', 'failure'],\n },\n ai: {\n tags: ['application-management', 'terms', 'popup'],\n },\n categories: [AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM],\n});\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Show release notes command ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMShowReleaseNotesCommand implements AXPCommand<Record<string, never>> {\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise {\n const comp = (await import('../components/list-versions/list-version.component')).AXMListVersionComponent;\n await this.popupService.open(comp, {\n title: await this.translateService.translateAsync(\n '@application-management:application-info.menus.release-notes.title',\n ),\n });\n return { success: true, kind: 'object', data: undefined };\n }\n}\n\n//#endregion\n","/**\n * Build-time only. Do not import from Angular modules.\n */\n\nimport { AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM, defineCommand } from '@acorex-platform/framework-shared/runtime';\n\nexport const axmShowReleaseNotesCommandDefinition = defineCommand({\n key: 'show-release-notes',\n title: 'Show release notes',\n description: 'AXMShowReleaseNotesCommand opens AXMListVersionComponent in a popup (version timeline).',\n executionMode: 'frontend',\n inputs: [],\n outcomes: {\n mode: 'static',\n values: ['success', 'failure'],\n },\n ai: {\n tags: ['application-management', 'release-notes', 'popup'],\n },\n categories: [AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM],\n});\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { AXMAppVersionEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\n@Component({\n selector: 'axm-notify-app-version',\n imports: [CommonModule, AXLabelModule, AXCheckBoxModule, AXDecoratorModule, AXButtonModule, AXTranslationModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './notify-app-version.component.html',\n})\nexport class AXMNotifyAppVersionComponent extends AXBasePageComponent {\n data: AXMAppVersionEntityModel;\n safeData: SafeHtml | null;\n isShowAgain: boolean = true;\n sanitize = inject(DomSanitizer);\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.safeData = this.sanitize.bypassSecurityTrustHtml(this.data.changeLog);\n }\n send(): void {\n this.close({ data: this.data, isShowAgain: !this.isShowAgain });\n }\n}\n\n","<ax-content class=\"block px-4 py-4 text-base/6\" [innerHTML]=\"safeData\"></ax-content>\n<ax-footer class=\"flex items-center justify-between p-2\">\n <ax-check-box [(value)]=\"isShowAgain\">\n <ax-label>Don't Show Again</ax-label>\n </ax-check-box>\n <ax-button color=\"primary\" (click)=\"send()\" [text]=\"'@general:actions.ok.title' | translate | async\"></ax-button>\n</ax-footer>\n\n","import { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTimeLineModule } from '@acorex/components/time-line';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, WritableSignal } from '@angular/core';\nimport { AXMAppVersionListComponentModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'axm-list-version',\n imports: [\n CommonModule,\n AXTimeLineModule,\n AXDecoratorModule,\n AXFormatModule,\n AXDateTimeModule,\n AXButtonModule,\n AXTranslationModule,\n ],\n templateUrl: './list-version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMListVersionComponent extends AXBasePageComponent {\n private readonly entityService = inject(AXPEntityService);\n private appVersionService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.appVersion.name).data<any, any>();\n private formatService = inject(AXFormatService);\n sanitize = inject(DomSanitizer);\n versions: WritableSignal<AXMAppVersionListComponentModel[]> = signal([]);\n\n protected override async ngOnInit(): Promise<void> {\n const result = await this.appVersionService.query({\n take: 1000,\n skip: 0,\n });\n const mappedItems = result.items.map<AXMAppVersionListComponentModel>((item) => ({\n id: item.id,\n //TODO to translate\n title: `Version ${item.versionNumber} Published at ${this.formatService.format(item.publishDate, 'datetime', {\n format: 'date',\n })}`,\n content: this.sanitize.bypassSecurityTrustHtml(item.changeLog) ?? '',\n }));\n this.versions.set(mappedItems);\n }\n}\n\n","<div class=\"px-12 min-h-96\">\n <ax-time-line>\n @for (version of versions(); track version.id) {\n <ax-time-line-item [text]=\"version.title\" [isCollapsed]=\"$index == 0 ? false : true\">\n <ax-icon class=\"fa-solid fa-flag-checkered\"></ax-icon>\n <ax-content class=\"px-8 py-2 text-base/6\" [innerHtml]=\"version.content\"></ax-content>\n </ax-time-line-item>\n }\n </ax-time-line>\n</div>\n<ax-footer class=\"flex justify-end!\"\n ><ax-button\n [text]=\"'@general:actions.ok.title' | translate | async\"\n color=\"primary\"\n (onClick)=\"this.close()\"\n ></ax-button\n></ax-footer>\n\n","//#region ----- Imports -----\n\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_APP_VERSION_PROVIDER, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPPlatformScope, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMApplicationManagementApplicationEntityModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMApplicationManagementEditionEntityModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\nimport { merge } from 'rxjs';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n template: ` <small class=\"text-sm cursor-pointer\" (click)=\"openPopup()\">{{ displayText() }}</small> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMApplicationInfoSlotComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly versionProvider = inject(AXP_APP_VERSION_PROVIDER);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly editionService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.edition.name)\n .data<any, any>();\n private readonly applicationService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.application.name)\n .data<any, any>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected displayText = signal<string>('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n merge(this.sessionService.application$, this.translationService.langChanges$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n void this.loadDisplayText();\n });\n\n void this.loadDisplayText();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n openPopup(): void {\n void this.commandService.execute('show-release-notes', {});\n }\n\n //#endregion\n\n //#region ----- Private Helpers -----\n\n private async loadDisplayText(): Promise<void> {\n const application = this.sessionService.application;\n if (!application) {\n this.displayText.set('');\n return;\n }\n\n const versionInfo = await this.versionProvider.provider();\n const version = versionInfo.version;\n\n const locale = this.translationService.getActiveLang();\n const appTitle =\n resolveMultiLanguageString(application.title, locale).trim() || application.name || '';\n\n let editionName = '';\n const hasMultipleEditions = await this.checkMultipleEditions(application.id);\n if (hasMultipleEditions && application.edition?.title) {\n editionName = resolveMultiLanguageString(application.edition.title, locale).trim();\n }\n\n const pattern = await this.settingsService\n .scope(AXPPlatformScope.Platform)\n .get(AXPApplicationInfoSettings.DisplayPattern);\n\n const displayPattern = (pattern as string) || '{appTitle} v{version}';\n\n this.displayText.set(\n displayPattern\n .replace(/\\{appTitle\\}/g, appTitle)\n .replace(/\\{\\[editionName\\]\\}/g, editionName ? `[${editionName}]` : '')\n .replace(/\\{editionName\\}/g, editionName)\n .replace(/\\{version\\}/g, version)\n .trim(),\n );\n }\n\n private async checkMultipleEditions(applicationId: string): Promise<boolean> {\n try {\n const application = (await this.applicationService.byKey(\n applicationId,\n )) as AXMApplicationManagementApplicationEntityModel | null;\n if (!application || !application.editionIds || application.editionIds.length === 0) {\n return false;\n }\n\n const editionsResult = (await this.editionService.query({\n skip: 0,\n take: 2,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'id',\n operator: { type: 'in' },\n value: application.editionIds,\n },\n ],\n },\n })) as { items: AXMApplicationManagementEditionEntityModel[] };\n\n return editionsResult.items.length > 1;\n } catch (error) {\n console.error('Error checking multiple editions:', error);\n return false;\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXP_PLATFORM_BRANDING_SETTING_KEYS,\n AXPPlatformBrandingService,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter, merge } from 'rxjs';\n\n//#endregion\n\n//#region ----- Component -----\n\n/**\n * Footer copyright text. Hidden on small (mobile) viewports. Re-resolves when language,\n * tenant, or copyright settings change (slot `options` factories only run once at mount).\n */\n@Component({\n template: ` <small class=\"text-sm\" [innerHTML]=\"text()\"></small> `,\n host: {\n class: 'hidden sm:inline',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMCopyrightFooterSlotComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly brandingService = inject(AXPPlatformBrandingService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly text = signal('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n const copyrightKey = AXP_PLATFORM_BRANDING_SETTING_KEYS.copyrightText;\n\n merge(\n this.translationService.langChanges$,\n this.sessionService.tenant$,\n this.settingsService.onLoaded,\n this.settingsService.onChanged.pipe(filter((event) => event.keys.includes(copyrightKey))),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n void this.reload();\n });\n\n void this.reload();\n }\n\n //#endregion\n\n //#region ----- Private Helpers -----\n\n private async reload(): Promise<void> {\n this.text.set(await this.brandingService.resolveCopyright());\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXOutlineContainerDirective } from '@acorex/cdk/outline';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXOutlineSideMenuDirective, AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMAppTermViewModel } from '@acorex-platform/module-application-management-client/contracts';\n@Component({\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXPThemeLayoutBlockComponent,\n AXTranslationModule,\n AXSideMenuModule,\n AXPPageLayoutComponent,\n AXSafePipe,\n AXOutlineContainerDirective,\n AXOutlineSideMenuDirective,\n ],\n templateUrl: './list-terms.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMListTermsComponent,\n },\n ],\n})\nexport class AXMListTermsComponent extends AXPPageLayoutBaseComponent {\n private readonly entityService = inject(AXPEntityService);\n private service = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.appTerm.name).data<any, any>();\n\n protected terms: AXMAppTermViewModel[] = [];\n protected loaded = signal(false);\n protected showScrollSide = signal(true);\n\n ngAfterViewInit() {\n this.checkScroll();\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkScroll();\n }\n\n checkScroll() {\n const contentElement = document.getElementById('contentDiv');\n if (contentElement != null) {\n this.showScrollSide.set(contentElement!.offsetHeight > window.innerHeight - 140);\n }\n }\n\n override async ngOnInit() {\n super.ngOnInit();\n const result = await this.service.query({\n skip: 0,\n take: 1000,\n });\n this.terms = result.items.map<AXMAppTermViewModel>((term) => {\n return {\n ...term,\n content: term.content.replace(/\\n/g, '<br>'),\n };\n });\n this.loaded.set(true);\n\n setTimeout(() => this.checkScroll(), 50);\n }\n\n protected override getPageTitle(): string | Promise<string> {\n return `t(\"app-term.page-title\", {scope:\"${RootConfig.config.i18n}\"})`;\n }\n\n protected override getPageDescription(): string | Promise<string> {\n return `t(\"app-term.page-description\", {scope:\"${RootConfig.config.i18n}\"})`;\n }\n}\n\n","<axp-page-layout *translate=\"let t\">\n @if(loaded()){\n <axp-page-content id=\"contentDiv\" axOutlineContainer target=\"h2\" [scrollableElementId]=\"'axp-page-layout'\"\n [activationOffset]=\"120\" class=\"flex flex-row\">\n <div class=\"flex flex-col\">\n @for (term of terms; track term.id) {\n <div class=\"flex flex-col\">\n <h2 class=\"px-4 font-semibold text-xl\">{{ term.title }}</h2>\n <p class=\"px-4 text-sm leading-5 opacity-65\">\n {{ term.effectiveDate | format : 'datetime' | async }}\n </p>\n <div class=\"pt-3 pb-6 px-4 text-base/6\" [innerHTML]=\"term.content | safe:'html'\"></div>\n </div>\n }\n </div>\n @if(showScrollSide()){\n <div class=\"hidden lg:block min-w-60\">\n <ax-side-menu axOutlineSideMenu look=\"with-line\" class=\"w-full sticky top-24\"></ax-side-menu>\n </div>\n }\n </axp-page-content>\n }\n</axp-page-layout>\n\n","//#region ---- Imports ----\n\nimport { AXPPlatformScope, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_EXPERIENCE_SETTINGS_GROUP,\n AXP_EXPERIENCE_SETTINGS_SECTIONS,\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\n\nimport { Injectable } from '@angular/core';\n\nimport { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ---- Setting Provider ----\n\nconst I18N_APP = '@application-management:application-info.settings';\nconst I18N_GENERAL = '@general:settings';\nconst I18N_EDITION_MODULES = '@application-management:editions.modules-editor.settings';\n\n@Injectable()\nexport class AXPApplicationInfoSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // Find the 'Experience' settings group\n const group = context.group(AXP_EXPERIENCE_SETTINGS_GROUP);\n if (!group) {\n return;\n }\n\n // Find the 'Startup' section\n const section = group.section(AXP_EXPERIENCE_SETTINGS_SECTIONS.Startup);\n if (!section) {\n return;\n }\n\n // Add the 'Application Info Display Pattern' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.DisplayPattern,\n title: `${I18N_APP}.display-pattern.title`,\n scope: AXPPlatformScope.Platform,\n overridableAt: [],\n isInherited: false,\n defaultValue: '{appTitle} v{version}',\n widget: {\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: `${I18N_APP}.display-pattern.placeholder`,\n },\n },\n description: `${I18N_APP}.display-pattern.description`,\n });\n\n // Add the 'Application Terms' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.ApplicationTerms,\n title: `${I18N_GENERAL}.experience.startup.application-terms.title`,\n scope: AXPPlatformScope.Platform,\n overridableAt: [],\n isInherited: false,\n defaultValue: false,\n valueTransforms: objectKeyValueTransforms('id'),\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: `${I18N_GENERAL}.experience.startup.application-terms.description`,\n });\n\n // Add the 'Release Notes' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.ReleaseNotes,\n title: `${I18N_GENERAL}.experience.startup.release-notes.title`,\n scope: AXPPlatformScope.User,\n overridableAt: [],\n isInherited: true,\n defaultValue: false,\n valueTransforms: objectKeyValueTransforms('id'),\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: `${I18N_GENERAL}.experience.startup.release-notes.description`,\n });\n\n section.addSetting({\n key: AXPApplicationInfoSettings.EditionModulesViewMode,\n title: `${I18N_EDITION_MODULES}.view-mode.title`,\n description: `${I18N_EDITION_MODULES}.view-mode.description`,\n scope: AXPPlatformScope.User,\n overridableAt: [],\n isInherited: false,\n defaultValue: 'type',\n widget: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'type', text: '@application-management:editions.modules-editor.view-mode.type' },\n { value: 'domain', text: '@application-management:editions.modules-editor.view-mode.domain' },\n ],\n },\n },\n });\n\n section.endSection();\n }\n}\n\n//#endregion\n","import { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPAppStartUpService, AXP_APP_STARTUP_PRIORITY } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXMAppTermEntityModel,\n AXPApplicationInfoSettings,\n} from '@acorex-platform/module-application-management-client/contracts';\nimport { combineLatest, distinctUntilChanged, EMPTY, from, switchMap } from 'rxjs';\n\n//#region ---- Terms check service ----\n\n@Injectable()\nexport class AXMAppTermsCheckService {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly commandService = inject(AXPCommandService);\n private readonly appInitService = inject(AXPAppStartUpService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly appTermService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.appTerm.name)\n .data<any, any>();\n\n //#endregion\n\n //#region ----- State -----\n\n private termsCheckGeneration = 0;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n this.appInitService.registerTask({\n name: 'Terms',\n statusText: '@application-management:app-startup.checking-terms',\n priority: AXP_APP_STARTUP_PRIORITY.terms,\n run: async () => {\n // Terms are evaluated reactively once the session is authorized with an application.\n },\n });\n\n combineLatest([this.sessionService.isAuthorized$, this.sessionService.application$])\n .pipe(\n distinctUntilChanged(\n ([authorized, app], [previousAuthorized, previousApp]) =>\n authorized === previousAuthorized && app?.id === previousApp?.id,\n ),\n switchMap(([authorized, app]) => {\n // Cookie sessions have no JS-readable access token — use credentials gate.\n if (!authorized || !app || !this.sessionService.hasSessionCredentials()) {\n this.termsCheckGeneration++;\n return EMPTY;\n }\n const generation = this.termsCheckGeneration;\n return from(this.evaluateUnconfirmedTerms(generation));\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n //#endregion\n\n //#region ----- Terms evaluation -----\n\n private async evaluateUnconfirmedTerms(generation: number): Promise<void> {\n if (!this.canCheckTerms() || generation !== this.termsCheckGeneration) {\n return;\n }\n\n const filterTerms: AXMAppTermEntityModel[] = [];\n const terms = await this.appTermService.query();\n\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n\n for (const term of terms.items) {\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n\n const isConfirm = await this.settingsService.scope(AXPPlatformScope.User).get(`is-confirm-term-${term.id}`);\n const isEnableToShow = await this.settingsService\n .scope(AXPPlatformScope.Platform)\n .get(AXPApplicationInfoSettings.ApplicationTerms);\n\n if (!isConfirm && isEnableToShow) {\n filterTerms.push(term);\n }\n }\n\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms() || filterTerms.length === 0) {\n return;\n }\n\n setTimeout(() => {\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n void this.commandService.execute('new-term', filterTerms);\n }, 500);\n }\n\n private canCheckTerms(): boolean {\n return this.sessionService.isReadyForAppScopedApi;\n }\n\n //#endregion\n}\n\n//#endregion\n","\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXPModuleFeatureEditorWidget: AXPWidgetConfig = {\n name: 'module-feature-editor',\n title: 'Module & Features Editor',\n description: 'Widget for managing module selection and their features with full editor interface',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-star',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n view: {\n component: () =>\n import('./features-widget-view.component').then((c) => c.AXPFeaturesWidgetViewComponent),\n },\n edit: {\n component: () =>\n import('./features-widget-edit.component').then((c) => c.AXPModuleFeatureEditorWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./features-widget-column.component').then((c) => c.AXPFeaturesWidgetColumnComponent),\n },\n print: {\n component: () =>\n import('./features-widget-print.component').then((c) => c.AXPFeaturesWidgetPrintComponent),\n },\n designer: {\n component: () =>\n import('./features-widget-designer.component').then((c) => c.AXPFeaturesWidgetDesignerComponent),\n },\n },\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPModuleFeatureEditorWidget } from './features-widget.config';\n\n//#endregion\n\n//#region ---- Features Widgets Provider ----\n\nconst WIDGETS = [AXPModuleFeatureEditorWidget];\n\n@Injectable()\nexport class AXPFeaturesWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { NgModule } from '@angular/core';\nimport { AXPFeaturesWidgetsProvider } from './widget-definition.provider';\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPFeaturesWidgetsProvider, multi: true },\n ],\n})\nexport class AXMFeaturesModule {}\n\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Application Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const ApplicationManagementManifest: 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 { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\n\n@Injectable()\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-application',\n group: 'command',\n title: RootConfig.entities.application.title,\n icon: RootConfig.entities.application.icon,\n description: RootConfig.entities.application.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.application.name}`,\n {\n name: RootConfig.entities.application.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.application.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_APPLICATION_CONTEXT_DEFINITIONS } from '@acorex-platform/module-application-management-client/contracts';\n\n//#region ---- Application context definitions ----\n\n@Injectable()\nexport class AXMApplicationManagementContextDefinitionProvider implements AXPContextDefinitionProvider {\n async items(): Promise<AXPContextDefinition[]> {\n return AXM_APPLICATION_CONTEXT_DEFINITIONS;\n }\n}\n\n//#endregion\n","import { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS, AXP_SEARCH_PROVIDER, AXPNavBarSlotComponent } from '@acorex-platform/framework-client/common';\nimport { AXP_CONTEXT_DEFINITION_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { inject, NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport {\n AXMApplicationInfoSlotComponent,\n AXMCopyrightFooterSlotComponent,\n AXPApplicationInfoSettingProvider,\n AXMAppTermsCheckService,\n} from './features/application-info';\n// Entity Modules\n\n// Features Modules\nimport { AXMFeaturesModule } from './features/features-widget/features.module';\nimport { AXPComponentSlotModule } from '@acorex-platform/framework-client/core';\n\nimport { ApplicationManagementManifest } from './manifest';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMApplicationManagementContextDefinitionProvider } from './context-definition.provider';\n@NgModule({\n imports: [\n // Entity Modules\n // Features Modules\n AXMFeaturesModule,\n AXPComponentSlotModule.forRoot({\n 'root-footer-start': [\n {\n name: 'application-info',\n component: AXMApplicationInfoSlotComponent,\n priority: 1,\n },\n {\n name: 'copyright',\n component: AXMCopyrightFooterSlotComponent,\n priority: 2,\n },\n ],\n 'auth-footer-links': [\n {\n name: 'links',\n component: AXPNavBarSlotComponent,\n },\n ],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n const routes: Routes = [\n {\n path: ':app/terms',\n loadComponent: () => {\n return config.viewers.root();\n },\n data: { rootLayout: true },\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/application-info/pages/list/list-terms.component').then((c) => c.AXMListTermsComponent),\n },\n ],\n },\n ];\n return routes;\n },\n },\n // Module-specific providers (not part of manifest system)\n // Provide edition service using interface token for platform/core to avoid circular dependency\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXPApplicationInfoSettingProvider,\n multi: true,\n },\n AXMAppTermsCheckService,\n provideCommandSetups([\n {\n key: 'new-term',\n command: () => import('./features/application-info/commands/new-term.command').then((c) => c.AXMNewTermCommand),\n },\n {\n key: 'show-release-notes',\n command: () =>\n import('./features/application-info/commands/show-release-notes.command').then((c) => c.AXMShowReleaseNotesCommand),\n },\n {\n key: 'assign-features',\n command: () =>\n import('./features/features-widget/commands/assign-features.command').then((c) => c.AXMAssignFeaturesCommand),\n },\n ]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ApplicationManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n provideLazyProvider(\n AXP_STATUS_PROVIDERS,\n () => import('./features/application-status.provider').then(m => m.AXMApplicationStatusProvider)\n ),\n provideLazyProvider(\n AXP_FEATURE_DEFINITION_PROVIDER,\n () => import('./feature-definition.provider').then(m => m.AXPApplicationManagementFeatureDefinitionProvider)\n ),\n provideLazyProvider(\n AXP_PERMISSION_DEFINITION_PROVIDER,\n () => import('./permission-definition.provider').then(m => m.AXMPermissionDefinitionProvider)\n ),\n provideLazyProvider(\n AXP_MENU_PROVIDER,\n () => import('./menu.provider').then(m => m.AXMApplicationManagmentModuleMenuProvider)\n ),\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_CONTEXT_DEFINITION_PROVIDER,\n useClass: AXMApplicationManagementContextDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXMApplicationManagementModule {\n constructor(appTermsCheck: AXMAppTermsCheckService) { }\n}\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationManagementMenuKeys } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-application-management-client/contracts';\n\n@Injectable()\nexport class AXMApplicationManagmentModuleMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n const maintainApps = AXPApplicationsPlatformPermissionKeys.MaintainApplications;\n\n context.find('Common:Menu:Platform').addItems([\n {\n name: AXPApplicationManagementMenuKeys.Applications,\n text: RootConfig.entities.application.title,\n path: this.entityService.withEntity(module.name, RootConfig.entities.application.name).createPath(),\n icon: RootConfig.entities.application.icon,\n priority: 1,\n policy: {\n features: [module.name],\n permissions: [maintainApps],\n },\n },\n {\n name: AXPApplicationManagementMenuKeys.ReleaseNotes,\n priority: 2,\n text: `@${scope}:release-notes.menus.release-notes.title`,\n path: this.entityService.withEntity(module.name, RootConfig.entities.appVersion.name).createPath(),\n icon: RootConfig.entities.appVersion.icon,\n policy: {\n features: [module.name],\n permissions: [maintainApps],\n },\n },\n { name: `${AXPApplicationManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 3 },\n ]);\n\n //#region ---- Help Menu Extensions ----\n\n // Help menu is created by common module's menu provider\n context.find('Common:Menu:Help').addItems([\n {\n name: AXPApplicationManagementMenuKeys.HelpReleaseNotes,\n text: `@${scope}:help.menus.release-notes.title`,\n icon: 'fa-light fa-memo-pad',\n command: {\n name: 'show-release-notes',\n },\n priority: 900003,\n },\n {\n name: AXPApplicationManagementMenuKeys.HelpTerms,\n text: `@${scope}:module.menus.terms-page.title`,\n icon: 'fa-light fa-file-contract',\n path: `${appName}/terms`,\n priority: 900004,\n },\n ]);\n\n //#endregion\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i1","i2","i4","i1.AXMAppTermsCheckService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-application-management-client.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-term/notify-app-term.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-term/notify-app-term.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/new-term.command.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/new-term.command.definition.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/show-release-notes.command.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/commands/show-release-notes.command.definition.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-version/notify-app-version.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/notify-app-version/notify-app-version.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/list-versions/list-version.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/list-versions/list-version.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/slots/application-info-slot.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/components/slots/copyright-footer-slot.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/pages/list/list-terms.component.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/pages/list/list-terms.component.html","../../../../libs/modules/application-management/client/src/lib/features/application-info/settings.provider.ts","../../../../libs/modules/application-management/client/src/lib/features/application-info/check-terms.service.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-widget.config.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/widget-definition.provider.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features.module.ts","../../../../libs/modules/application-management/client/src/lib/manifest.ts","../../../../libs/modules/application-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/application-management/client/src/lib/context-definition.provider.ts","../../../../libs/modules/application-management/client/src/lib/application-management.module.ts","../../../../libs/modules/application-management/client/src/lib/menu.provider.ts","../../../../libs/modules/application-management/client/src/acorex-platform-module-application-management-client.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMAppTermEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\n@Component({\n selector: 'axm-notify-app-term',\n imports: [\n CommonModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n AXSafePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './notify-app-term.component.html',\n})\nexport class AXMNotifyAppTermComponent extends AXBasePageComponent {\n data: AXMAppTermEntityModel[];\n safeData: SafeHtml | null;\n isConfirm: boolean = false;\n\n i18n = RootConfig.config.i18n;\n\n transformContent(content: string): string {\n return content.replace(/\\n/g, '<br>');\n }\n\n send(): void {\n this.close({ data: this.data });\n }\n}\n\n","@for (item of data; track $index) {\n <ax-content class=\"block px-4 py-4 font-bold\">{{ item.title }}</ax-content>\n <ax-content\n class=\"block px-4 pb-4 text-base/6\"\n [innerHTML]=\"transformContent(item.content) | safe: 'html'\"\n ></ax-content>\n}\n<ax-footer class=\"flex items-center justify-between p-2\">\n <ax-check-box [(value)]=\"isConfirm\">\n <ax-label>{{ 'agreeTerm' | translate: { scope: i18n } | async }}</ax-label>\n </ax-check-box>\n <ax-button\n (click)=\"send()\"\n [text]=\"'@general:actions.ok.title' | translate | async\"\n [disabled]=\"!isConfirm\"\n color=\"primary\"\n ></ax-button>\n</ax-footer>\n\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { AXMAppTermEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\nimport { AXMNotifyAppTermComponent } from '../components/notify-app-term/notify-app-term.component';\n\n//#region ---- Types ----\n\nexport type AXMNewTermCommandInput = AXMAppTermEntityModel[] | { terms?: AXMAppTermEntityModel[] };\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveTerms(input?: AXMNewTermCommandInput | null): AXMAppTermEntityModel[] {\n if (!input) {\n return [];\n }\n if (Array.isArray(input)) {\n return input;\n }\n return input.terms ?? [];\n}\n\n//#endregion\n\n//#region ---- New term command ----\n\n/**\n * Shows the terms confirmation popup, then marks each term as confirmed in user settings.\n * Replaces the former `new-term` workflow (popup step + settings step).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMNewTermCommand implements AXPCommand<AXMNewTermCommandInput> {\n private readonly popupService = inject(AXPopupService);\n private readonly settingsService = inject(AXPSettingsService);\n\n async execute(input: AXMNewTermCommandInput = []): AXPCommandExecuteResultPromise {\n const dataList = resolveTerms(input);\n if (dataList.length === 0) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n await this.popupService.open(AXMNotifyAppTermComponent, {\n title: 'New Terms And Conditions',\n data: { data: dataList },\n closeButton: false,\n });\n\n for (const term of dataList) {\n await this.settingsService.scope(AXPPlatformScope.User).set(`is-confirm-term-${term.id}`, true);\n }\n\n return { success: true, kind: 'object', data: undefined };\n }\n}\n\n//#endregion\n","/**\n * Build-time only. Do not import from Angular modules.\n */\n\nimport { AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM, defineCommand } from '@acorex-platform/framework-shared/runtime';\n\nexport const axmNewTermCommandDefinition = defineCommand({\n key: 'new-term',\n title: 'Confirm new terms and conditions',\n description:\n 'AXMNewTermCommand opens AXMNotifyAppTermComponent for unconfirmed terms, then sets is-confirm-term-{id} in user settings.',\n executionMode: 'frontend',\n inputs: [\n {\n name: 'terms',\n title: 'Terms',\n description: 'AXMAppTermEntityModel[] (or pass the array as root input from startup).',\n interface: { name: 'text-editor' },\n },\n ],\n outcomes: {\n mode: 'static',\n values: ['success', 'failure'],\n },\n ai: {\n tags: ['application-management', 'terms', 'popup'],\n },\n categories: [AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM],\n});\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Show release notes command ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMShowReleaseNotesCommand implements AXPCommand<Record<string, never>> {\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise {\n const comp = (await import('../components/list-versions/list-version.component')).AXMListVersionComponent;\n await this.popupService.open(comp, {\n title: await this.translateService.translateAsync(\n '@application-management:application-info.menus.release-notes.title',\n ),\n });\n return { success: true, kind: 'object', data: undefined };\n }\n}\n\n//#endregion\n","/**\n * Build-time only. Do not import from Angular modules.\n */\n\nimport { AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM, defineCommand } from '@acorex-platform/framework-shared/runtime';\n\nexport const axmShowReleaseNotesCommandDefinition = defineCommand({\n key: 'show-release-notes',\n title: 'Show release notes',\n description: 'AXMShowReleaseNotesCommand opens AXMListVersionComponent in a popup (version timeline).',\n executionMode: 'frontend',\n inputs: [],\n outcomes: {\n mode: 'static',\n values: ['success', 'failure'],\n },\n ai: {\n tags: ['application-management', 'release-notes', 'popup'],\n },\n categories: [AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM],\n});\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { AXMAppVersionEntityModel } from '@acorex-platform/module-application-management-client/contracts';\n\n@Component({\n selector: 'axm-notify-app-version',\n imports: [CommonModule, AXLabelModule, AXCheckBoxModule, AXDecoratorModule, AXButtonModule, AXTranslationModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './notify-app-version.component.html',\n})\nexport class AXMNotifyAppVersionComponent extends AXBasePageComponent {\n data: AXMAppVersionEntityModel;\n safeData: SafeHtml | null;\n isShowAgain: boolean = true;\n sanitize = inject(DomSanitizer);\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.safeData = this.sanitize.bypassSecurityTrustHtml(this.data.changeLog);\n }\n send(): void {\n this.close({ data: this.data, isShowAgain: !this.isShowAgain });\n }\n}\n\n","<ax-content class=\"block px-4 py-4 text-base/6\" [innerHTML]=\"safeData\"></ax-content>\n<ax-footer class=\"flex items-center justify-between p-2\">\n <ax-check-box [(value)]=\"isShowAgain\">\n <ax-label>Don't Show Again</ax-label>\n </ax-check-box>\n <ax-button color=\"primary\" (click)=\"send()\" [text]=\"'@general:actions.ok.title' | translate | async\"></ax-button>\n</ax-footer>\n\n","import { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTimeLineModule } from '@acorex/components/time-line';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, WritableSignal } from '@angular/core';\nimport { AXMAppVersionListComponentModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'axm-list-version',\n imports: [\n CommonModule,\n AXTimeLineModule,\n AXDecoratorModule,\n AXFormatModule,\n AXDateTimeModule,\n AXButtonModule,\n AXTranslationModule,\n ],\n templateUrl: './list-version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMListVersionComponent extends AXBasePageComponent {\n private readonly entityService = inject(AXPEntityService);\n private appVersionService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.appVersion.name).data<any, any>();\n private formatService = inject(AXFormatService);\n sanitize = inject(DomSanitizer);\n versions: WritableSignal<AXMAppVersionListComponentModel[]> = signal([]);\n\n protected override async ngOnInit(): Promise<void> {\n const result = await this.appVersionService.query({\n take: 1000,\n skip: 0,\n });\n const mappedItems = result.items.map<AXMAppVersionListComponentModel>((item) => ({\n id: item.id,\n //TODO to translate\n title: `Version ${item.versionNumber} Published at ${this.formatService.format(item.publishDate, 'datetime', {\n format: 'date',\n })}`,\n content: this.sanitize.bypassSecurityTrustHtml(item.changeLog) ?? '',\n }));\n this.versions.set(mappedItems);\n }\n}\n\n","<div class=\"px-12 min-h-96\">\n <ax-time-line>\n @for (version of versions(); track version.id) {\n <ax-time-line-item [text]=\"version.title\" [isCollapsed]=\"$index == 0 ? false : true\">\n <ax-icon class=\"fa-solid fa-flag-checkered\"></ax-icon>\n <ax-content class=\"px-8 py-2 text-base/6\" [innerHtml]=\"version.content\"></ax-content>\n </ax-time-line-item>\n }\n </ax-time-line>\n</div>\n<ax-footer class=\"flex justify-end!\"\n ><ax-button\n [text]=\"'@general:actions.ok.title' | translate | async\"\n color=\"primary\"\n (onClick)=\"this.close()\"\n ></ax-button\n></ax-footer>\n\n","//#region ----- Imports -----\n\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_APP_VERSION_PROVIDER, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPPlatformScope, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMApplicationManagementApplicationEntityModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMApplicationManagementEditionEntityModel } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\nimport { merge } from 'rxjs';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n template: ` <small class=\"text-sm cursor-pointer\" (click)=\"openPopup()\">{{ displayText() }}</small> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMApplicationInfoSlotComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly versionProvider = inject(AXP_APP_VERSION_PROVIDER);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly editionService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.edition.name)\n .data<any, any>();\n private readonly applicationService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.application.name)\n .data<any, any>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected displayText = signal<string>('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n merge(this.sessionService.application$, this.translationService.langChanges$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n void this.loadDisplayText();\n });\n\n void this.loadDisplayText();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n openPopup(): void {\n void this.commandService.execute('show-release-notes', {});\n }\n\n //#endregion\n\n //#region ----- Private Helpers -----\n\n private async loadDisplayText(): Promise<void> {\n const application = this.sessionService.application;\n if (!application) {\n this.displayText.set('');\n return;\n }\n\n const versionInfo = await this.versionProvider.provider();\n const version = versionInfo.version;\n\n const locale = this.translationService.getActiveLang();\n const appTitle =\n resolveMultiLanguageString(application.title, locale).trim() || application.name || '';\n\n let editionName = '';\n const hasMultipleEditions = await this.checkMultipleEditions(application.id);\n if (hasMultipleEditions && application.edition?.title) {\n editionName = resolveMultiLanguageString(application.edition.title, locale).trim();\n }\n\n const pattern = await this.settingsService\n .scope(AXPPlatformScope.Platform)\n .get(AXPApplicationInfoSettings.DisplayPattern);\n\n const displayPattern = (pattern as string) || '{appTitle} v{version}';\n\n this.displayText.set(\n displayPattern\n .replace(/\\{appTitle\\}/g, appTitle)\n .replace(/\\{\\[editionName\\]\\}/g, editionName ? `[${editionName}]` : '')\n .replace(/\\{editionName\\}/g, editionName)\n .replace(/\\{version\\}/g, version)\n .trim(),\n );\n }\n\n private async checkMultipleEditions(applicationId: string): Promise<boolean> {\n try {\n const application = (await this.applicationService.byKey(\n applicationId,\n )) as AXMApplicationManagementApplicationEntityModel | null;\n if (!application || !application.editionIds || application.editionIds.length === 0) {\n return false;\n }\n\n const editionsResult = (await this.editionService.query({\n skip: 0,\n take: 2,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'id',\n operator: { type: 'in' },\n value: application.editionIds,\n },\n ],\n },\n })) as { items: AXMApplicationManagementEditionEntityModel[] };\n\n return editionsResult.items.length > 1;\n } catch (error) {\n console.error('Error checking multiple editions:', error);\n return false;\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXP_PLATFORM_BRANDING_SETTING_KEYS,\n AXPPlatformBrandingService,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter, merge } from 'rxjs';\n\n//#endregion\n\n//#region ----- Component -----\n\n/**\n * Footer copyright text. Hidden on small (mobile) viewports. Re-resolves when language,\n * tenant, or copyright settings change (slot `options` factories only run once at mount).\n */\n@Component({\n template: ` <small class=\"text-sm\" [innerHTML]=\"text()\"></small> `,\n host: {\n class: 'hidden sm:inline',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMCopyrightFooterSlotComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly brandingService = inject(AXPPlatformBrandingService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly text = signal('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n const copyrightKey = AXP_PLATFORM_BRANDING_SETTING_KEYS.copyrightText;\n\n merge(\n this.translationService.langChanges$,\n this.sessionService.tenant$,\n this.settingsService.onLoaded,\n this.settingsService.onChanged.pipe(filter((event) => event.keys.includes(copyrightKey))),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n void this.reload();\n });\n\n void this.reload();\n }\n\n //#endregion\n\n //#region ----- Private Helpers -----\n\n private async reload(): Promise<void> {\n this.text.set(await this.brandingService.resolveCopyright());\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXOutlineContainerDirective } from '@acorex/cdk/outline';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXOutlineSideMenuDirective, AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXMAppTermViewModel } from '@acorex-platform/module-application-management-client/contracts';\n@Component({\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXPThemeLayoutBlockComponent,\n AXTranslationModule,\n AXSideMenuModule,\n AXPPageLayoutComponent,\n AXSafePipe,\n AXOutlineContainerDirective,\n AXOutlineSideMenuDirective,\n ],\n templateUrl: './list-terms.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMListTermsComponent,\n },\n ],\n})\nexport class AXMListTermsComponent extends AXPPageLayoutBaseComponent {\n private readonly entityService = inject(AXPEntityService);\n private service = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.appTerm.name).data<any, any>();\n\n protected terms: AXMAppTermViewModel[] = [];\n protected loaded = signal(false);\n protected showScrollSide = signal(true);\n\n ngAfterViewInit() {\n this.checkScroll();\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkScroll();\n }\n\n checkScroll() {\n const contentElement = document.getElementById('contentDiv');\n if (contentElement != null) {\n this.showScrollSide.set(contentElement!.offsetHeight > window.innerHeight - 140);\n }\n }\n\n override async ngOnInit() {\n super.ngOnInit();\n const result = await this.service.query({\n skip: 0,\n take: 1000,\n });\n this.terms = result.items.map<AXMAppTermViewModel>((term) => {\n return {\n ...term,\n content: term.content.replace(/\\n/g, '<br>'),\n };\n });\n this.loaded.set(true);\n\n setTimeout(() => this.checkScroll(), 50);\n }\n\n protected override getPageTitle(): string | Promise<string> {\n return `t(\"app-term.page-title\", {scope:\"${RootConfig.config.i18n}\"})`;\n }\n\n protected override getPageDescription(): string | Promise<string> {\n return `t(\"app-term.page-description\", {scope:\"${RootConfig.config.i18n}\"})`;\n }\n}\n\n","<axp-page-layout *translate=\"let t\">\n @if(loaded()){\n <axp-page-content id=\"contentDiv\" axOutlineContainer target=\"h2\" [scrollableElementId]=\"'axp-page-layout'\"\n [activationOffset]=\"120\" class=\"flex flex-row\">\n <div class=\"flex flex-col\">\n @for (term of terms; track term.id) {\n <div class=\"flex flex-col\">\n <h2 class=\"px-4 font-semibold text-xl\">{{ term.title }}</h2>\n <p class=\"px-4 text-sm leading-5 opacity-65\">\n {{ term.effectiveDate | format : 'datetime' | async }}\n </p>\n <div class=\"pt-3 pb-6 px-4 text-base/6\" [innerHTML]=\"term.content | safe:'html'\"></div>\n </div>\n }\n </div>\n @if(showScrollSide()){\n <div class=\"hidden lg:block min-w-60\">\n <ax-side-menu axOutlineSideMenu look=\"with-line\" class=\"w-full sticky top-24\"></ax-side-menu>\n </div>\n }\n </axp-page-content>\n }\n</axp-page-layout>\n\n","//#region ---- Imports ----\n\nimport { AXPPlatformScope, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_EXPERIENCE_SETTINGS_GROUP,\n AXP_EXPERIENCE_SETTINGS_SECTIONS,\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\n\nimport { Injectable } from '@angular/core';\n\nimport { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ---- Setting Provider ----\n\nconst I18N_APP = '@application-management:application-info.settings';\nconst I18N_GENERAL = '@general:settings';\n\n@Injectable()\nexport class AXPApplicationInfoSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // Find the 'Experience' settings group\n const group = context.group(AXP_EXPERIENCE_SETTINGS_GROUP);\n if (!group) {\n return;\n }\n\n // Find the 'Startup' section\n const section = group.section(AXP_EXPERIENCE_SETTINGS_SECTIONS.Startup);\n if (!section) {\n return;\n }\n\n // Add the 'Application Info Display Pattern' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.DisplayPattern,\n title: `${I18N_APP}.display-pattern.title`,\n scope: AXPPlatformScope.Platform,\n overridableAt: [],\n isInherited: false,\n defaultValue: '{appTitle} v{version}',\n widget: {\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: `${I18N_APP}.display-pattern.placeholder`,\n },\n },\n description: `${I18N_APP}.display-pattern.description`,\n });\n\n // Add the 'Application Terms' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.ApplicationTerms,\n title: `${I18N_GENERAL}.experience.startup.application-terms.title`,\n scope: AXPPlatformScope.Platform,\n overridableAt: [],\n isInherited: false,\n defaultValue: false,\n valueTransforms: objectKeyValueTransforms('id'),\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: `${I18N_GENERAL}.experience.startup.application-terms.description`,\n });\n\n // Add the 'Release Notes' setting\n section.addSetting({\n key: AXPApplicationInfoSettings.ReleaseNotes,\n title: `${I18N_GENERAL}.experience.startup.release-notes.title`,\n scope: AXPPlatformScope.User,\n overridableAt: [],\n isInherited: true,\n defaultValue: false,\n valueTransforms: objectKeyValueTransforms('id'),\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: `${I18N_GENERAL}.experience.startup.release-notes.description`,\n });\n\n section.endSection();\n }\n}\n\n//#endregion\n","import { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPAppStartUpService, AXP_APP_STARTUP_PRIORITY } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXMAppTermEntityModel,\n AXPApplicationInfoSettings,\n} from '@acorex-platform/module-application-management-client/contracts';\nimport { combineLatest, distinctUntilChanged, EMPTY, from, switchMap } from 'rxjs';\n\n//#region ---- Terms check service ----\n\n@Injectable()\nexport class AXMAppTermsCheckService {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly commandService = inject(AXPCommandService);\n private readonly appInitService = inject(AXPAppStartUpService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly appTermService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.appTerm.name)\n .data<any, any>();\n\n //#endregion\n\n //#region ----- State -----\n\n private termsCheckGeneration = 0;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n this.appInitService.registerTask({\n name: 'Terms',\n statusText: '@application-management:app-startup.checking-terms',\n priority: AXP_APP_STARTUP_PRIORITY.terms,\n run: async () => {\n // Terms are evaluated reactively once the session is authorized with an application.\n },\n });\n\n combineLatest([this.sessionService.isAuthorized$, this.sessionService.application$])\n .pipe(\n distinctUntilChanged(\n ([authorized, app], [previousAuthorized, previousApp]) =>\n authorized === previousAuthorized && app?.id === previousApp?.id,\n ),\n switchMap(([authorized, app]) => {\n // Cookie sessions have no JS-readable access token — use credentials gate.\n if (!authorized || !app || !this.sessionService.hasSessionCredentials()) {\n this.termsCheckGeneration++;\n return EMPTY;\n }\n const generation = this.termsCheckGeneration;\n return from(this.evaluateUnconfirmedTerms(generation));\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n //#endregion\n\n //#region ----- Terms evaluation -----\n\n private async evaluateUnconfirmedTerms(generation: number): Promise<void> {\n if (!this.canCheckTerms() || generation !== this.termsCheckGeneration) {\n return;\n }\n\n const filterTerms: AXMAppTermEntityModel[] = [];\n const terms = await this.appTermService.query();\n\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n\n for (const term of terms.items) {\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n\n const isConfirm = await this.settingsService.scope(AXPPlatformScope.User).get(`is-confirm-term-${term.id}`);\n const isEnableToShow = await this.settingsService\n .scope(AXPPlatformScope.Platform)\n .get(AXPApplicationInfoSettings.ApplicationTerms);\n\n if (!isConfirm && isEnableToShow) {\n filterTerms.push(term);\n }\n }\n\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms() || filterTerms.length === 0) {\n return;\n }\n\n setTimeout(() => {\n if (generation !== this.termsCheckGeneration || !this.canCheckTerms()) {\n return;\n }\n void this.commandService.execute('new-term', filterTerms);\n }, 500);\n }\n\n private canCheckTerms(): boolean {\n return this.sessionService.isReadyForAppScopedApi;\n }\n\n //#endregion\n}\n\n//#endregion\n","\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXPModuleFeatureEditorWidget: AXPWidgetConfig = {\n name: 'module-feature-editor',\n title: 'Module & Features Editor',\n description: 'Widget for managing module selection and their features with full editor interface',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-star',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n view: {\n component: () =>\n import('./features-widget-view.component').then((c) => c.AXPFeaturesWidgetViewComponent),\n },\n edit: {\n component: () =>\n import('./features-widget-edit.component').then((c) => c.AXPModuleFeatureEditorWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./features-widget-column.component').then((c) => c.AXPFeaturesWidgetColumnComponent),\n },\n print: {\n component: () =>\n import('./features-widget-print.component').then((c) => c.AXPFeaturesWidgetPrintComponent),\n },\n designer: {\n component: () =>\n import('./features-widget-designer.component').then((c) => c.AXPFeaturesWidgetDesignerComponent),\n },\n },\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPModuleFeatureEditorWidget } from './features-widget.config';\n\n//#endregion\n\n//#region ---- Features Widgets Provider ----\n\nconst WIDGETS = [AXPModuleFeatureEditorWidget];\n\n@Injectable()\nexport class AXPFeaturesWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { NgModule } from '@angular/core';\nimport { AXPFeaturesWidgetsProvider } from './widget-definition.provider';\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPFeaturesWidgetsProvider, multi: true },\n ],\n})\nexport class AXMFeaturesModule {}\n\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Application Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const ApplicationManagementManifest: 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 { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\n\n@Injectable()\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-application',\n group: 'command',\n title: RootConfig.entities.application.title,\n icon: RootConfig.entities.application.icon,\n description: RootConfig.entities.application.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.application.name}`,\n {\n name: RootConfig.entities.application.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.application.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_APPLICATION_CONTEXT_DEFINITIONS } from '@acorex-platform/module-application-management-client/contracts';\n\n//#region ---- Application context definitions ----\n\n@Injectable()\nexport class AXMApplicationManagementContextDefinitionProvider implements AXPContextDefinitionProvider {\n async items(): Promise<AXPContextDefinition[]> {\n return AXM_APPLICATION_CONTEXT_DEFINITIONS;\n }\n}\n\n//#endregion\n","import { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS, AXP_SEARCH_PROVIDER, AXPNavBarSlotComponent } from '@acorex-platform/framework-client/common';\nimport { AXP_CONTEXT_DEFINITION_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { inject, NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport {\n AXMApplicationInfoSlotComponent,\n AXMCopyrightFooterSlotComponent,\n AXPApplicationInfoSettingProvider,\n AXMAppTermsCheckService,\n} from './features/application-info';\n// Entity Modules\n\n// Features Modules\nimport { AXMFeaturesModule } from './features/features-widget/features.module';\nimport { AXPComponentSlotModule } from '@acorex-platform/framework-client/core';\n\nimport { ApplicationManagementManifest } from './manifest';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMApplicationManagementContextDefinitionProvider } from './context-definition.provider';\n@NgModule({\n imports: [\n // Entity Modules\n // Features Modules\n AXMFeaturesModule,\n AXPComponentSlotModule.forRoot({\n 'root-footer-start': [\n {\n name: 'application-info',\n component: AXMApplicationInfoSlotComponent,\n priority: 1,\n },\n {\n name: 'copyright',\n component: AXMCopyrightFooterSlotComponent,\n priority: 2,\n },\n ],\n 'auth-footer-links': [\n {\n name: 'links',\n component: AXPNavBarSlotComponent,\n },\n ],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n const routes: Routes = [\n {\n path: ':app/terms',\n loadComponent: () => {\n return config.viewers.root();\n },\n data: { rootLayout: true },\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/application-info/pages/list/list-terms.component').then((c) => c.AXMListTermsComponent),\n },\n ],\n },\n ];\n return routes;\n },\n },\n // Module-specific providers (not part of manifest system)\n // Provide edition service using interface token for platform/core to avoid circular dependency\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXPApplicationInfoSettingProvider,\n multi: true,\n },\n AXMAppTermsCheckService,\n provideCommandSetups([\n {\n key: 'new-term',\n command: () => import('./features/application-info/commands/new-term.command').then((c) => c.AXMNewTermCommand),\n },\n {\n key: 'show-release-notes',\n command: () =>\n import('./features/application-info/commands/show-release-notes.command').then((c) => c.AXMShowReleaseNotesCommand),\n },\n {\n key: 'assign-features',\n command: () =>\n import('./features/features-widget/commands/assign-features.command').then((c) => c.AXMAssignFeaturesCommand),\n },\n ]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ApplicationManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n provideLazyProvider(\n AXP_STATUS_PROVIDERS,\n () => import('./features/application-status.provider').then(m => m.AXMApplicationStatusProvider)\n ),\n provideLazyProvider(\n AXP_FEATURE_DEFINITION_PROVIDER,\n () => import('./feature-definition.provider').then(m => m.AXPApplicationManagementFeatureDefinitionProvider)\n ),\n provideLazyProvider(\n AXP_PERMISSION_DEFINITION_PROVIDER,\n () => import('./permission-definition.provider').then(m => m.AXMPermissionDefinitionProvider)\n ),\n provideLazyProvider(\n AXP_MENU_PROVIDER,\n () => import('./menu.provider').then(m => m.AXMApplicationManagmentModuleMenuProvider)\n ),\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_CONTEXT_DEFINITION_PROVIDER,\n useClass: AXMApplicationManagementContextDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXMApplicationManagementModule {\n constructor(appTermsCheck: AXMAppTermsCheckService) { }\n}\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationManagementMenuKeys } from '@acorex-platform/module-application-management-client/contracts';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-application-management-client/contracts';\n\n@Injectable()\nexport class AXMApplicationManagmentModuleMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n const maintainApps = AXPApplicationsPlatformPermissionKeys.MaintainApplications;\n\n context.find('Common:Menu:Platform').addItems([\n {\n name: AXPApplicationManagementMenuKeys.Applications,\n text: RootConfig.entities.application.title,\n path: this.entityService.withEntity(module.name, RootConfig.entities.application.name).createPath(),\n icon: RootConfig.entities.application.icon,\n priority: 1,\n policy: {\n features: [module.name],\n permissions: [maintainApps],\n },\n },\n {\n name: AXPApplicationManagementMenuKeys.ReleaseNotes,\n priority: 2,\n text: `@${scope}:release-notes.menus.release-notes.title`,\n path: this.entityService.withEntity(module.name, RootConfig.entities.appVersion.name).createPath(),\n icon: RootConfig.entities.appVersion.icon,\n policy: {\n features: [module.name],\n permissions: [maintainApps],\n },\n },\n { name: `${AXPApplicationManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 3 },\n ]);\n\n //#region ---- Help Menu Extensions ----\n\n // Help menu is created by common module's menu provider\n context.find('Common:Menu:Help').addItems([\n {\n name: AXPApplicationManagementMenuKeys.HelpReleaseNotes,\n text: `@${scope}:help.menus.release-notes.title`,\n icon: 'fa-light fa-memo-pad',\n command: {\n name: 'show-release-notes',\n },\n priority: 900003,\n },\n {\n name: AXPApplicationManagementMenuKeys.HelpTerms,\n text: `@${scope}:module.menus.terms-page.title`,\n icon: 'fa-light fa-file-contract',\n path: `${appName}/terms`,\n priority: 900004,\n },\n ]);\n\n //#endregion\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i1","i2","i4","i1.AXMAppTermsCheckService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-application-management-client-features-editor.component-B5yrn7eX.mjs","sources":["../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor.component.ts","../../../../libs/modules/application-management/client/src/lib/features/features-widget/features-editor.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n signal,\n input,\n output,\n OnInit,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXPModuleManifestRegistry,\n AXPModuleManifest,\n AXPModuleFeatureDefinition,\n AXP_MODULE_TYPE,\n AXP_MODULE_DOMAIN,\n resolveModuleType,\n resolveModuleDomain,\n type AXPModuleType,\n} from '@acorex-platform/framework-client/core';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPApplicationInfoSettings } from '@acorex-platform/module-application-management-client/contracts';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype EditionModulesViewMode = 'type' | 'domain';\n\ntype ModuleListItem = AXPModuleManifest & {\n translatedTitle?: string;\n translatedDescription?: string;\n featureSearchText?: string;\n};\n\ntype ModuleGroupView = {\n id: string;\n titleKey: string;\n modules: ModuleListItem[];\n};\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@application-management:editions.modules-editor';\n\nconst TYPE_ORDER: AXPModuleType[] = [\n AXP_MODULE_TYPE.platform,\n AXP_MODULE_TYPE.domain,\n AXP_MODULE_TYPE.integration,\n];\n\nconst DOMAIN_ORDER: string[] = [\n AXP_MODULE_DOMAIN.platform,\n AXP_MODULE_DOMAIN.humanCapital,\n AXP_MODULE_DOMAIN.projectManagement,\n AXP_MODULE_DOMAIN.assetMaintenance,\n AXP_MODULE_DOMAIN.workplaceSafety,\n AXP_MODULE_DOMAIN.assessmentLearning,\n AXP_MODULE_DOMAIN.financeCommerce,\n AXP_MODULE_DOMAIN.customerSupplier,\n AXP_MODULE_DOMAIN.communication,\n AXP_MODULE_DOMAIN.ai,\n AXP_MODULE_DOMAIN.contentDocuments,\n AXP_MODULE_DOMAIN.data,\n AXP_MODULE_DOMAIN.operations,\n AXP_MODULE_DOMAIN.weather,\n AXP_MODULE_DOMAIN.sourceControl,\n AXP_MODULE_DOMAIN.general,\n];\n\n//#endregion\n\n//#region ----- Features Editor Component -----\n\n@Component({\n selector: 'axm-features-editor',\n templateUrl: './features-editor.component.html',\n styleUrl: './features-editor.component.css',\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXTranslationModule,\n AXTooltipModule,\n AXSearchBoxModule,\n AXButtonGroupModule,\n AXButtonModule,\n AXDecoratorModule,\n AXPWidgetCoreModule,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n class: 'axm-features-editor flex flex-col w-full min-h-0',\n },\n})\nexport class AXPFeaturesEditorComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ----- Inputs / Outputs -----\n\n /** Initial value: { modules: string[], features: Record<string, any> } */\n initialValue = input<{ modules?: string[]; features?: Record<string, any> }>({});\n\n /** Whether the editor is in read-only mode */\n readOnly = input<boolean>(false);\n\n /** Event emitted when modules/features selection/values change */\n valueChanged = output<{ modules: string[]; features: Record<string, any> }>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly i18n = I18N;\n\n protected readonly searchTerm = signal('');\n\n protected readonly viewMode = signal<EditionModulesViewMode>('type');\n\n /** All available module manifests with translated titles */\n private readonly allModules = signal<ModuleListItem[]>([]);\n\n /** Selected module names */\n protected readonly selectedModules = signal<Set<string>>(new Set());\n\n /** Expanded module names */\n protected readonly expandedModules = signal<Set<string>>(new Set());\n\n /** Expanded feature full names */\n protected readonly expandedFeatures = signal<Set<string>>(new Set());\n\n /** Map of feature values: Record<featureName, featureValue> */\n protected readonly featureValues = signal<Record<string, any>>({});\n\n /** Cache for widget nodes to prevent re-creation and blinking */\n private readonly widgetNodeCache = new Map<string, AXPWidgetNode>();\n\n /** Cache for feature data to prevent re-computation */\n private readonly moduleFeaturesCache = new Map<\n string,\n Array<{\n key: string;\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n isEnabled: boolean;\n widgetNode: AXPWidgetNode | null;\n }>\n >();\n\n /** Set of modules that are currently loading features */\n private readonly loadingFeatures = signal<Set<string>>(new Set());\n\n /** Signal to trigger change detection when features are loaded */\n private readonly featuresLoaded = signal<number>(0);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n /** Required module names (always enabled, cannot be disabled) */\n protected readonly requiredModules = computed(() => {\n return new Set(this.allModules().filter((m) => m.required === true).map((m) => m.name));\n });\n\n /** Modules that are dependencies of selected modules (auto-selected and disabled) */\n protected readonly dependencyModules = computed(() => {\n const selected = this.selectedModules();\n const allManifests = this.manifestRegistry.getAll();\n const dependencySet = new Set<string>();\n\n for (const manifest of allManifests) {\n if (selected.has(manifest.name) && manifest.dependencies) {\n for (const dep of manifest.dependencies) {\n if (!dep.includes('.')) {\n dependencySet.add(dep);\n }\n }\n }\n }\n\n return dependencySet;\n });\n\n /** Always-available (required) modules matching the current search */\n protected readonly alwaysAvailableModules = computed(() => {\n return this.sortModules(\n this.allModules().filter((m) => m.required === true && this.matchesSearch(m)),\n );\n });\n\n /** Grouped non-required modules for the active view mode */\n protected readonly moduleGroups = computed((): ModuleGroupView[] => {\n const modules = this.sortModules(\n this.allModules().filter((m) => m.required !== true && this.matchesSearch(m)),\n );\n\n if (this.viewMode() === 'type') {\n return this.groupByType(modules);\n }\n return this.groupByDomain(modules);\n });\n\n protected readonly hasVisibleModules = computed(() => {\n return this.alwaysAvailableModules().length > 0 || this.moduleGroups().some((g) => g.modules.length > 0);\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n ngOnInit() {\n // Sync paint only — never await settings/i18n/initialize on the critical path\n // (settings.get can hang on session ready and previously left the UI stuck).\n const manifests = this.manifestRegistry.getAll();\n this.allModules.set(\n manifests.map((manifest) => ({\n ...manifest,\n translatedTitle: manifest.title,\n translatedDescription: manifest.description || '',\n featureSearchText: '',\n })),\n );\n\n const initialValue = this.initialValue();\n const initialModules = new Set<string>(initialValue.modules || []);\n\n if (initialValue.features) {\n for (const featureKey of Object.keys(initialValue.features)) {\n const [moduleName] = featureKey.split(':');\n if (moduleName) {\n initialModules.add(moduleName);\n }\n }\n }\n\n this.requiredModules().forEach((moduleName) => {\n initialModules.add(moduleName);\n });\n\n this.ensureDependencies(initialModules);\n this.selectedModules.set(initialModules);\n\n if (initialValue.features) {\n this.featureValues.set(initialValue.features);\n }\n\n this.widgetNodeCache.clear();\n this.moduleFeaturesCache.clear();\n\n // Prefer sync cache — scoped get() can block on session/scope load.\n const cachedViewMode = this.settingsService.peekCached(\n AXPApplicationInfoSettings.EditionModulesViewMode,\n );\n if (cachedViewMode === 'type' || cachedViewMode === 'domain') {\n this.viewMode.set(cachedViewMode);\n }\n\n void this.hydrateAsync();\n }\n\n private async hydrateAsync(): Promise<void> {\n try {\n if (this.allModules().length === 0) {\n await this.manifestRegistry.initialize();\n const manifests = this.manifestRegistry.getAll();\n this.allModules.set(\n manifests.map((manifest) => ({\n ...manifest,\n translatedTitle: manifest.title,\n translatedDescription: manifest.description || '',\n featureSearchText: '',\n })),\n );\n this.requiredModules().forEach((moduleName) => {\n const selected = new Set(this.selectedModules());\n selected.add(moduleName);\n this.ensureDependencies(selected);\n this.selectedModules.set(selected);\n });\n }\n\n const modules = this.allModules();\n const enriched = await Promise.all(\n modules.map(async (module) => {\n let translatedTitle = module.title;\n try {\n translatedTitle =\n (await this.translationService.translateAsync(module.title)) || module.title;\n } catch {\n // keep raw title\n }\n return {\n ...module,\n translatedTitle,\n } satisfies ModuleListItem;\n }),\n );\n this.allModules.set(enriched);\n } catch (error) {\n console.warn('Features editor background hydrate failed', error);\n }\n }\n\n //#endregion\n\n //#region ----- Grouping & Search -----\n\n private matchesSearch(module: ModuleListItem): boolean {\n const term = String(this.searchTerm() ?? '')\n .trim()\n .toLowerCase();\n if (!term) {\n return true;\n }\n\n const haystack = [\n module.translatedTitle,\n module.translatedDescription,\n module.title,\n module.description,\n module.name,\n module.featureSearchText,\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n\n return haystack.includes(term);\n }\n\n private sortModules(modules: ModuleListItem[]): ModuleListItem[] {\n return [...modules].sort((a, b) => {\n const titleA = a.translatedTitle || a.title || '';\n const titleB = b.translatedTitle || b.title || '';\n return titleA.localeCompare(titleB, undefined, { sensitivity: 'base' });\n });\n }\n\n private groupByType(modules: ModuleListItem[]): ModuleGroupView[] {\n const buckets = new Map<AXPModuleType, ModuleListItem[]>();\n for (const type of TYPE_ORDER) {\n buckets.set(type, []);\n }\n\n for (const module of modules) {\n const type = resolveModuleType(module);\n const list = buckets.get(type) ?? [];\n list.push(module);\n buckets.set(type, list);\n }\n\n return TYPE_ORDER.filter((type) => (buckets.get(type)?.length ?? 0) > 0).map((type) => ({\n id: `type:${type}`,\n titleKey: `${I18N}.types.${type}`,\n modules: buckets.get(type) ?? [],\n }));\n }\n\n private groupByDomain(modules: ModuleListItem[]): ModuleGroupView[] {\n const buckets = new Map<string, ModuleListItem[]>();\n\n for (const module of modules) {\n const domain = resolveModuleDomain(module);\n const list = buckets.get(domain) ?? [];\n list.push(module);\n buckets.set(domain, list);\n }\n\n const known = DOMAIN_ORDER.filter((domain) => (buckets.get(domain)?.length ?? 0) > 0);\n const extra = [...buckets.keys()]\n .filter((domain) => !DOMAIN_ORDER.includes(domain))\n .sort((a, b) => a.localeCompare(b));\n\n return [...known, ...extra].map((domain) => ({\n id: `domain:${domain}`,\n titleKey: `${I18N}.domains.${domain}`,\n modules: buckets.get(domain) ?? [],\n }));\n }\n\n //#endregion\n\n //#region ----- Public API -----\n\n public getValue(): { modules: string[]; features: Record<string, any> } {\n return {\n modules: Array.from(this.selectedModules()),\n features: this.featureValues(),\n };\n }\n\n public setValue(value: { modules?: string[]; features?: Record<string, any> }): void {\n if (value.modules) {\n this.selectedModules.set(new Set(value.modules));\n }\n if (value.features) {\n this.featureValues.set(value.features);\n }\n this.emitValueChanged();\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private createWidgetNode(definition: AXPModuleFeatureDefinition, fullName: string): AXPWidgetNode | null {\n if (!definition.interface) {\n return null;\n }\n\n const currentValue = this.featureValues()[fullName];\n const defaultValue =\n currentValue !== undefined && currentValue !== null ? currentValue : definition.defaultValue;\n\n let widgetNode = this.widgetNodeCache.get(fullName);\n\n if (!widgetNode) {\n widgetNode = {\n type: definition.interface.type,\n name: fullName,\n defaultValue: defaultValue,\n options: definition.interface.options || {},\n };\n this.widgetNodeCache.set(fullName, widgetNode);\n } else if (widgetNode.defaultValue !== defaultValue) {\n widgetNode.defaultValue = defaultValue;\n }\n\n return widgetNode;\n }\n\n private emitValueChanged(): void {\n this.valueChanged.emit(this.getValue());\n }\n\n private ensureDependencies(modules: Set<string>): void {\n const allManifests = this.manifestRegistry.getAll();\n let changed = true;\n\n while (changed) {\n changed = false;\n for (const manifest of allManifests) {\n if (modules.has(manifest.name) && manifest.dependencies) {\n for (const dep of manifest.dependencies) {\n if (!dep.includes('.') && !modules.has(dep)) {\n modules.add(dep);\n changed = true;\n }\n }\n }\n }\n }\n }\n\n protected getModuleFeatures(module: AXPModuleManifest): Array<{\n key: string;\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n isEnabled: boolean;\n widgetNode: AXPWidgetNode | null;\n }> {\n this.featuresLoaded();\n\n const moduleFeatures = this.manifestRegistry.getModuleFeatures(module.name);\n if (moduleFeatures.length === 0) {\n return [];\n }\n\n const cacheKey = module.name;\n const currentValues = this.featureValues();\n const cached = this.moduleFeaturesCache.get(cacheKey);\n if (cached) {\n cached.forEach((feature) => {\n const currentValue = currentValues[feature.fullName];\n feature.isEnabled = currentValue !== undefined && currentValue !== null;\n\n if (feature.widgetNode) {\n const newDefaultValue =\n currentValue !== undefined && currentValue !== null\n ? currentValue\n : feature.definition.defaultValue;\n if (feature.widgetNode.defaultValue !== newDefaultValue) {\n feature.widgetNode.defaultValue = newDefaultValue;\n }\n }\n });\n return cached;\n }\n\n const features = moduleFeatures.map((featureDef) => {\n const fullName = featureDef.name;\n const shortKey = featureDef.key;\n const currentValue = currentValues[fullName];\n const isEnabled = currentValue !== undefined && currentValue !== null;\n const widgetNode = this.createWidgetNode(featureDef, fullName);\n\n return {\n key: shortKey,\n fullName,\n definition: featureDef,\n isEnabled,\n widgetNode,\n };\n });\n\n this.moduleFeaturesCache.set(cacheKey, features);\n return features;\n }\n\n private async loadModuleFeatures(module: AXPModuleManifest): Promise<void> {\n try {\n this.moduleFeaturesCache.delete(module.name);\n this.featuresLoaded.update((v) => v + 1);\n } finally {\n this.loadingFeatures.update((set) => {\n const newSet = new Set(set);\n newSet.delete(module.name);\n return newSet;\n });\n }\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSearchTermChange(value: string | null | undefined): void {\n this.searchTerm.set(String(value ?? ''));\n }\n\n protected onViewModeChange(mode: EditionModulesViewMode): void {\n if (this.viewMode() === mode) {\n return;\n }\n this.viewMode.set(mode);\n // Fire-and-forget; do not block UI if scope load is slow.\n void this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPApplicationInfoSettings.EditionModulesViewMode, mode)\n .catch((error) => {\n console.warn('Failed to persist edition modules view mode', error);\n });\n }\n\n protected toggleModule(module: AXPModuleManifest): void {\n const moduleName = module.name;\n const expanded = new Set(this.expandedModules());\n if (expanded.has(moduleName)) {\n expanded.delete(moduleName);\n } else {\n expanded.add(moduleName);\n if (!this.loadingFeatures().has(moduleName)) {\n this.loadingFeatures.update((set) => new Set(set).add(moduleName));\n this.loadModuleFeatures(module).catch((error) => {\n console.error(`Failed to refresh features for module ${moduleName}:`, error);\n });\n }\n }\n this.expandedModules.set(expanded);\n }\n\n protected toggleFeature(fullName: string): void {\n const expanded = new Set(this.expandedFeatures());\n if (expanded.has(fullName)) {\n expanded.delete(fullName);\n } else {\n expanded.add(fullName);\n }\n this.expandedFeatures.set(expanded);\n }\n\n protected isModuleExpanded(moduleName: string): boolean {\n return this.expandedModules().has(moduleName);\n }\n\n protected isFeatureExpanded(fullName: string): boolean {\n return this.expandedFeatures().has(fullName);\n }\n\n protected isModuleSelected(moduleName: string): boolean {\n if (this.selectedModules().has(moduleName)) {\n return true;\n }\n const featureValue = this.featureValues()[moduleName];\n return featureValue !== undefined && featureValue !== null;\n }\n\n protected isModuleRequired(moduleName: string): boolean {\n return this.requiredModules().has(moduleName);\n }\n\n protected isModuleDependency(moduleName: string): boolean {\n return this.dependencyModules().has(moduleName);\n }\n\n protected isModuleDisabled(moduleName: string): boolean {\n return this.isModuleRequired(moduleName) || this.isModuleDependency(moduleName);\n }\n\n protected canEnableModule(moduleName: string): boolean {\n const manifest = this.manifestRegistry.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return true;\n }\n\n const selected = this.selectedModules();\n const moduleDeps = manifest.dependencies.filter((dep) => !dep.includes('.'));\n return moduleDeps.every((dep) => selected.has(dep));\n }\n\n protected getMissingDependencies(moduleName: string): string[] {\n const manifest = this.manifestRegistry.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return [];\n }\n\n const selected = this.selectedModules();\n const moduleDeps = manifest.dependencies.filter((dep) => !dep.includes('.'));\n return moduleDeps.filter((dep) => !selected.has(dep));\n }\n\n protected getDependentModules(moduleName: string): string[] {\n const allManifests = this.manifestRegistry.getAll();\n return allManifests.filter((m) => m.dependencies?.includes(moduleName)).map((m) => m.name);\n }\n\n protected getModuleIcon(module: AXPModuleManifest): string {\n return module.icon || 'fa-light fa-cube';\n }\n\n protected hasModuleFeatures(module: AXPModuleManifest): boolean {\n return this.manifestRegistry.getModuleFeatures(module.name).length > 0;\n }\n\n protected onModuleToggle(module: AXPModuleManifest, event: AXValueChangedEvent): void {\n if (this.readOnly() || this.isModuleDisabled(module.name)) {\n return;\n }\n\n const selectedModules = new Set(this.selectedModules());\n const currentValues = { ...this.featureValues() };\n\n if (event.value) {\n selectedModules.add(module.name);\n currentValues[module.name] = true;\n this.ensureDependencies(selectedModules);\n\n if (!this.loadingFeatures().has(module.name)) {\n setTimeout(() => {\n this.loadingFeatures.update((set) => new Set(set).add(module.name));\n this.loadModuleFeatures(module).catch((error) => {\n console.error(`Failed to refresh features for module ${module.name}:`, error);\n this.loadingFeatures.update((set) => {\n const newSet = new Set(set);\n newSet.delete(module.name);\n return newSet;\n });\n });\n }, 0);\n }\n } else {\n const dependentModules = this.getDependentModules(module.name);\n const hasSelectedDependents = dependentModules.some((dep) => selectedModules.has(dep));\n\n if (hasSelectedDependents) {\n return;\n }\n\n selectedModules.delete(module.name);\n delete currentValues[module.name];\n }\n\n this.selectedModules.set(selectedModules);\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n protected onFeatureToggle(\n feature: {\n fullName: string;\n definition: AXPModuleFeatureDefinition;\n widgetNode: AXPWidgetNode | null;\n },\n event: AXValueChangedEvent,\n ): void {\n if (this.readOnly()) {\n return;\n }\n\n const currentValues = { ...this.featureValues() };\n\n if (event.value) {\n if (currentValues[feature.fullName] === undefined || currentValues[feature.fullName] === null) {\n currentValues[feature.fullName] = feature.definition.defaultValue;\n }\n } else {\n delete currentValues[feature.fullName];\n }\n\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n protected onFeatureValueChange(featureFullName: string, value: any): void {\n if (this.readOnly()) {\n return;\n }\n\n const currentValues = { ...this.featureValues() };\n currentValues[featureFullName] = value;\n this.featureValues.set(currentValues);\n this.emitValueChanged();\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Toolbar: search + view mode ----- -->\n<div class=\"axm-features-editor__toolbar\">\n <ax-search-box\n class=\"flex-1 min-w-[12rem]\"\n look=\"outline\"\n [placeholder]=\"(i18n + '.search-placeholder' | translate | async) || ''\"\n [ngModel]=\"searchTerm()\"\n [delayTime]=\"300\"\n (ngModelChange)=\"onSearchTermChange($event)\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n\n <ax-button-group selection=\"single\" look=\"outline\" class=\"shrink-0\">\n <ax-button-group-item\n [text]=\"(i18n + '.view-mode.type' | translate | async) ?? ''\"\n [selected]=\"viewMode() === 'type'\"\n [data]=\"'type'\"\n (onClick)=\"onViewModeChange('type')\">\n </ax-button-group-item>\n <ax-button-group-item\n [text]=\"(i18n + '.view-mode.domain' | translate | async) ?? ''\"\n [selected]=\"viewMode() === 'domain'\"\n [data]=\"'domain'\"\n (onClick)=\"onViewModeChange('domain')\">\n </ax-button-group-item>\n </ax-button-group>\n</div>\n\n<!-- ----- Module groups list ----- -->\n<div class=\"axm-features-editor__list overflow-auto\">\n <!--->\n <!-- ----- Empty search / filter result ----- -->\n @if (!hasVisibleModules()) {\n <div class=\"text-sm text-muted py-6 text-center\">\n {{ i18n + '.empty' | translate | async }}\n </div>\n }\n <!-- ----- Grouped modules with Always Available pinned first ----- -->\n @else {\n <!--->\n <!-- ----- Always available (required) modules ----- -->\n @if (alwaysAvailableModules().length > 0) {\n <section class=\"axm-features-editor__group\">\n <div class=\"axm-features-editor__group-title\">\n {{ i18n + '.always-available' | translate | async }}\n </div>\n <div class=\"flex flex-col gap-2\">\n @for (module of alwaysAvailableModules(); track module.name) {\n <ng-container *ngTemplateOutlet=\"moduleTemplate; context: { $implicit: module, level: 0 }\">\n </ng-container>\n }\n </div>\n </section>\n }\n\n @for (group of moduleGroups(); track group.id) {\n <section class=\"axm-features-editor__group\">\n <div class=\"axm-features-editor__group-title\">\n {{ group.titleKey | translate | async }}\n </div>\n <div class=\"flex flex-col gap-2\">\n @for (module of group.modules; track module.name) {\n <ng-container *ngTemplateOutlet=\"moduleTemplate; context: { $implicit: module, level: 0 }\">\n </ng-container>\n }\n </div>\n </section>\n }\n }\n</div>\n\n<!-- ----- Module row template ----- -->\n<ng-template #moduleTemplate let-module let-level=\"level\">\n <div class=\"flex flex-col\">\n <!-- ----- Module checkbox row ----- -->\n <div class=\"flex items-center gap-3 rounded hover:bg-surface-lowest\" [style.padding-left.px]=\"level * 32\">\n <span class=\"w-4\"></span>\n\n <ax-check-box\n [ngModel]=\"isModuleSelected(module.name)\"\n [readonly]=\"readOnly() || isModuleDisabled(module.name)\"\n [class.opacity-50]=\"isModuleDependency(module.name) && !isModuleRequired(module.name)\"\n (onValueChanged)=\"onModuleToggle(module, $event)\"\n (click)=\"$event.stopPropagation()\">\n </ax-check-box>\n\n <i [class]=\"getModuleIcon(module) + ' text-primary fa-fw'\"></i>\n\n <span class=\"flex-1 font-semibold\">{{ module.title | translate | async }}</span>\n\n <!--->\n <!-- ----- Required badge ----- -->\n @if (isModuleRequired(module.name)) {\n <span class=\"text-xs text-primary font-medium\">\n ({{ i18n + '.badges.required' | translate | async }})\n </span>\n }\n\n <!--->\n <!-- ----- Dependency badge ----- -->\n @if (isModuleDependency(module.name) && !isModuleRequired(module.name)) {\n <span class=\"text-xs text-secondary font-medium\">\n ({{ i18n + '.badges.dependency' | translate | async }})\n </span>\n }\n </div>\n\n <!--->\n <!-- ----- Nested features when module selected ----- -->\n @if (isModuleSelected(module.name) && hasModuleFeatures(module)) {\n <div class=\"flex flex-col gap-3 py-4 px-3\">\n @for (feature of getModuleFeatures(module); track feature.fullName) {\n <ng-container\n *ngTemplateOutlet=\"featureTemplate; context: { $implicit: feature, module: module, level: level + 1 }\">\n </ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<!-- ----- Feature row template ----- -->\n<ng-template #featureTemplate let-feature let-module=\"module\" let-level=\"level\">\n <div class=\"flex flex-col\">\n <div class=\"flex items-start gap-3 rounded hover:bg-surface-lowest\" [style.padding-left.px]=\"level * 32\">\n <span class=\"w-4\"></span>\n\n <ax-check-box\n [ngModel]=\"feature.isEnabled\"\n [readonly]=\"readOnly()\"\n (onValueChanged)=\"onFeatureToggle(feature, $event)\"\n (click)=\"$event.stopPropagation()\">\n </ax-check-box>\n\n <div class=\"flex flex-col flex-1 gap-1.5\">\n <div class=\"flex items-center gap-2\">\n <i class=\"fa-light fa-toggle-on text-secondary\"></i>\n <span class=\"font-semibold\">{{ feature.definition.title | translate | async }}</span>\n </div>\n\n <!--->\n <!-- ----- Feature description ----- -->\n @if (feature.definition.description) {\n <div class=\"text-sm text-muted ms-6 leading-relaxed\">\n {{ feature.definition.description | translate | async }}\n </div>\n }\n\n <!--->\n <!-- ----- Feature config widget ----- -->\n @if (feature.isEnabled && feature.widgetNode) {\n <div class=\"mt-3 ms-6 ax-sm\">\n <ng-container\n axp-widget-renderer\n [node]=\"feature.widgetNode\"\n [mode]=\"readOnly() ? 'view' : 'edit'\"\n (onValueChanged)=\"onFeatureValueChange(feature.fullName, $event.widget.getValue())\">\n </ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</ng-template>\n"],"names":["i3","i6","i8"],"mappings":"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"}
|