@acorex-platform/module-learning-management-client 0.0.56 → 0.0.58
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.
|
@@ -812,7 +812,7 @@ class AXMLearningManagementSkillMatrixComponent {
|
|
|
812
812
|
// Note: 'add' type shouldn't happen in fixed mode, but if it does, we can handle it here
|
|
813
813
|
}
|
|
814
814
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLearningManagementSkillMatrixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
815
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMLearningManagementSkillMatrixComponent, isStandalone: true, selector: "axm-skill-matrix", inputs: { titles: { classPropertyName: "titles", publicName: "titles", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, skillIds: { classPropertyName: "skillIds", publicName: "skillIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", cellChange: "cellChange", skillIdsChange: "skillIdsChange" }, host: { classAttribute: "axm-skill-matrix" }, ngImport: i0, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>", styles: [".skill-matrix{display:block;height:100%;width:100%}.skill-matrix .__container,.skill-matrix .__matrix-section{display:flex;flex-direction:column}.skill-matrix .__matrix-header{margin-bottom:calc(var(--spacing, .25rem) * 3);display:flex;justify-content:flex-end}.skill-matrix .__loading{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPSpreadsheetComponent, selector: "axp-spreadsheet", inputs: ["title", "columns", "rowMode", "rowsInput", "rowsModel", "readonly", "emptyCellPlaceholder", "rowTitlePath", "rowDescriptionPath", "allowAddRows", "allowRemoveRows", "allowAddColumns", "allowRemoveColumns", "showCellActions"], outputs: ["rowsModelChange", "cellChange", "rowChange", "columnChange", "columnsChange", "spreadsheetChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMLearningManagementSkillMatrixComponent, isStandalone: true, selector: "axm-skill-matrix", inputs: { titles: { classPropertyName: "titles", publicName: "titles", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, skillIds: { classPropertyName: "skillIds", publicName: "skillIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", cellChange: "cellChange", skillIdsChange: "skillIdsChange" }, host: { classAttribute: "axm-skill-matrix" }, ngImport: i0, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>", styles: [".skill-matrix{display:block;height:100%;width:100%}.skill-matrix .__container,.skill-matrix .__matrix-section{display:flex;flex-direction:column}.skill-matrix .__matrix-header{margin-bottom:calc(var(--spacing, .25rem) * 3);display:flex;justify-content:flex-end}.skill-matrix .__loading{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPSpreadsheetComponent, selector: "axp-spreadsheet", inputs: ["title", "columns", "rowMode", "rowsInput", "rowsModel", "readonly", "emptyCellPlaceholder", "rowTitlePath", "rowDescriptionPath", "allowAddRows", "allowRemoveRows", "allowAddColumns", "allowRemoveColumns", "showCellActions", "showRowHeader", "rowGroupPath", "rowWidgets"], outputs: ["rowsModelChange", "cellChange", "rowChange", "columnChange", "columnsChange", "spreadsheetChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
816
816
|
}
|
|
817
817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLearningManagementSkillMatrixComponent, decorators: [{
|
|
818
818
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-learning-management-client.mjs","sources":["../../../../libs/modules/learning-management/client/src/lib/menu.provider.ts","../../../../libs/modules/learning-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget.config.ts","../../../../libs/modules/learning-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/learning-management.module.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.html","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-column.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-edit.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-view.component.ts","../../../../libs/modules/learning-management/client/src/acorex-platform-module-learning-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXMLearningManagementMenuKeys } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n/**\n * Learning Management Module Menu Provider.\n * - Root \"Learning\": Skills, Courses, Trainings, Enrollments, Certificates, Licenses, Learning Paths (operational)\n * - Configuration/Learning: Skill Levels, Course Types, Training Definitions/Types, Certificate Definitions/Types, License Types, Mandatory Training Rules (reference)\n */\nexport class AXMLearningManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n // Root \"Learning\" - single level, direct links with dividers\n context.addItems([\n {\n name: AXMLearningManagementMenuKeys.Root,\n priority: 8210,\n text: '@learning-management:module.menus.root.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.Root}:skills`,\n text: RootConfig.entities.skill.titlePlural,\n icon: RootConfig.entities.skill.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skill.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:courses`,\n text: RootConfig.entities.course.titlePlural,\n icon: RootConfig.entities.course.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.course.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:trainings`,\n text: RootConfig.entities.training.titlePlural,\n icon: RootConfig.entities.training.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.training.name),\n priority: 3,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 4 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:enrollments`,\n text: RootConfig.entities.enrollment.titlePlural,\n icon: RootConfig.entities.enrollment.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.enrollment.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:attendance`,\n text: RootConfig.entities.attendance.titlePlural,\n icon: RootConfig.entities.attendance.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.attendance.name),\n priority: 6,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider2`, text: '', type: 'break', priority: 7 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:certificates`,\n text: RootConfig.entities.certificate.titlePlural,\n icon: RootConfig.entities.certificate.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificate.name),\n priority: 8,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:licenses`,\n text: RootConfig.entities.license.titlePlural,\n icon: RootConfig.entities.license.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.license.name),\n priority: 9,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:learning-paths`,\n text: RootConfig.entities.learningPath.titlePlural,\n icon: RootConfig.entities.learningPath.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.learningPath.name),\n priority: 10,\n },\n ],\n },\n ]);\n\n // Configuration/Learning - reference data\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMLearningManagementMenuKeys.ConfigurationRoot,\n priority: 8650,\n text: '@learning-management:module.menus.configuration.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:skill-levels`,\n text: RootConfig.entities.skillLevel.titlePlural,\n icon: RootConfig.entities.skillLevel.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skillLevel.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:course-types`,\n text: RootConfig.entities.courseType.titlePlural,\n icon: RootConfig.entities.courseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.courseType.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-definitions`,\n text: RootConfig.entities.trainingDefinition.titlePlural,\n icon: RootConfig.entities.trainingDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingDefinition.name),\n priority: 3,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-types`,\n text: RootConfig.entities.trainingType.titlePlural,\n icon: RootConfig.entities.trainingType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingType.name),\n priority: 4,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-definitions`,\n text: RootConfig.entities.certificateDefinition.titlePlural,\n icon: RootConfig.entities.certificateDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateDefinition.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-types`,\n text: RootConfig.entities.certificateType.titlePlural,\n icon: RootConfig.entities.certificateType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateType.name),\n priority: 6,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:license-types`,\n text: RootConfig.entities.licenseType.titlePlural,\n icon: RootConfig.entities.licenseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.licenseType.name),\n priority: 7,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:mandatory-rules`,\n text: RootConfig.entities.mandatoryTrainingRule.titlePlural,\n icon: RootConfig.entities.mandatoryTrainingRule.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.mandatoryTrainingRule.name),\n priority: 8,\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPLearningPermissionKeys\n} from '@acorex-platform/module-learning-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers learning capabilities into the shared Learning group.\n */\n@Injectable()\nexport class AXMLearningManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPLearningPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:learning.permissions';\n const G = '@common:permission-groups';\n\n context\n .addGroup(groups.Learning.Root, `${G}.learning.title`, `${G}.learning.description`, { order: 20 })\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(\n keys.MaintainLearning,\n `${P}.maintain-learning.title`,\n `${P}.maintain-learning.description`,\n )\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nfunction cmd(id: string, entityKey: string, e: { name: string; title: string; icon: string }, title: string, desc: string) {\n return {\n id,\n group: 'command' as const,\n title,\n icon: e.icon,\n description: desc,\n command: {\n name: 'Entity:Create' as const,\n options: createEntityCommandOptions(entityKey, { name: e.name, module: RootConfig.module.name, title: e.title }),\n },\n };\n}\n\nexport class AXMLearningManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n cmd('create-skill', `${RootConfig.module.name}.${RootConfig.entities.skill.name}`, RootConfig.entities.skill, '@learning-management:skills.search.create-skill.title', '@learning-management:skills.search.create-skill.description'),\n cmd('create-course', `${RootConfig.module.name}.${RootConfig.entities.course.name}`, RootConfig.entities.course, '@learning-management:courses.search.create-course.title', '@learning-management:courses.search.create-course.description'),\n cmd('create-training', `${RootConfig.module.name}.${RootConfig.entities.training.name}`, RootConfig.entities.training, '@learning-management:trainings.search.schedule-training.title', '@learning-management:trainings.search.schedule-training.description'),\n cmd('create-training-definition', `${RootConfig.module.name}.${RootConfig.entities.trainingDefinition.name}`, RootConfig.entities.trainingDefinition, '@learning-management:trainings.search.create-training-definition.title', '@learning-management:trainings.search.create-training-definition.description'),\n cmd('create-enrollment', `${RootConfig.module.name}.${RootConfig.entities.enrollment.name}`, RootConfig.entities.enrollment, '@learning-management:enrollments.search.create-enrollment.title', '@learning-management:enrollments.search.create-enrollment.description'),\n cmd('create-learning-path', `${RootConfig.module.name}.${RootConfig.entities.learningPath.name}`, RootConfig.entities.learningPath, '@learning-management:learning-paths.search.create-learning-path.title', '@learning-management:learning-paths.search.create-learning-path.description'),\n cmd('create-certificate', `${RootConfig.module.name}.${RootConfig.entities.certificate.name}`, RootConfig.entities.certificate, '@learning-management:certificates.search.issue-certificate.title', '@learning-management:certificates.search.issue-certificate.description'),\n cmd('create-certificate-definition', `${RootConfig.module.name}.${RootConfig.entities.certificateDefinition.name}`, RootConfig.entities.certificateDefinition, '@learning-management:certificates.search.create-certificate-definition.title', '@learning-management:certificates.search.create-certificate-definition.description'),\n cmd('create-attendance', `${RootConfig.module.name}.${RootConfig.entities.attendance.name}`, RootConfig.entities.attendance, '@learning-management:enrollments.search.create-attendance.title', '@learning-management:enrollments.search.create-attendance.description'),\n cmd('create-skill-level', `${RootConfig.module.name}.${RootConfig.entities.skillLevel.name}`, RootConfig.entities.skillLevel, '@learning-management:skills.search.create-skill-level.title', '@learning-management:skills.search.create-skill-level.description'),\n cmd('create-course-type', `${RootConfig.module.name}.${RootConfig.entities.courseType.name}`, RootConfig.entities.courseType, '@learning-management:courses.search.create-course-type.title', '@learning-management:courses.search.create-course-type.description'),\n cmd('create-training-type', `${RootConfig.module.name}.${RootConfig.entities.trainingType.name}`, RootConfig.entities.trainingType, '@learning-management:trainings.search.create-training-type.title', '@learning-management:trainings.search.create-training-type.description'),\n cmd('create-certificate-type', `${RootConfig.module.name}.${RootConfig.entities.certificateType.name}`, RootConfig.entities.certificateType, '@learning-management:certificates.search.create-certificate-type.title', '@learning-management:certificates.search.create-certificate-type.description'),\n cmd('create-mandatory-training-rule', `${RootConfig.module.name}.${RootConfig.entities.mandatoryTrainingRule.name}`, RootConfig.entities.mandatoryTrainingRule, '@learning-management:compliance.search.create-mandatory-training-rule.title', '@learning-management:compliance.search.create-mandatory-training-rule.description'),\n ];\n}\n\n//#endregion\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXLSkillMatrixWidget: AXPWidgetConfig<AXLSkillMatrixWidgetConfigType> = {\n name: 'skill-matrix-editor',\n title: '@learning-management:skills.components.skill-matrix.widget.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing skill levels across different skills',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./skill-matrix-widget-view.component').then((c) => c.AXLSkillMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./skill-matrix-widget-edit.component').then((c) => c.AXLSkillMatrixWidgetEditComponent),\n },\n column: {\n component: () => import('./skill-matrix-widget-column.component').then((c) => c.AXLSkillMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXLSkillMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXLSkillMatrixWidget } from './features/skill-matrix/skill-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Learning Management Widgets Provider ----\n\n@Injectable()\nexport class AXMLearningManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXLSkillMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { NgModule } from '@angular/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXMLearningManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMLearningManagementMenuProvider } from './menu.provider';\nimport { AXMLearningManagementSearchCommandProvider } from './search-command.provider';\n\nimport { AXMLearningManagementWidgetsProvider } from './widget-definition.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMLearningManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMLearningManagementSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMLearningManagementModule { }\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { type AXPCategoryEntity, type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXPSpreadsheetComponent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetRowChangeEvent,\n AXPSpreadsheetItem,\n AXPSpreadsheetData,\n} from '@acorex-platform/framework-client/layout/components';\n\nimport { AXMLearningManagementSkillLevelEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXMLearningManagementSkillEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPCategoryTreeDataSource } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n@Component({\n selector: 'axm-skill-matrix',\n standalone: true,\n imports: [\n CommonModule,\n AXPSpreadsheetComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n templateUrl: './skill-matrix.component.html',\n styleUrl: './skill-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-skill-matrix',\n },\n})\nexport class AXMLearningManagementSkillMatrixComponent {\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly skillLevelDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillLevel.name)\n .data<string, AXMLearningManagementSkillLevelEntityModel>();\n private readonly skillDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skill.name)\n .data<string, AXMLearningManagementSkillEntityModel>();\n private readonly skillCategoryDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillCategory.name)\n .data<string, any>();\n private readonly entityDataSelectorService = inject(AXPEntityDataSelectorService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly activeLocale = signal(this.translationService.getActiveLang());\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /**\n * Array of job titles/positions to display as columns (e.g., Senior, Manager, Director)\n */\n titles = input<AXPSpreadsheetItem[]>([]);\n\n /**\n * Initial matrix data: { [skillId]: { [title.id]: skillLevelId } }\n */\n value = input<AXPSpreadsheetData>({});\n\n /**\n * Whether the matrix is in readonly mode\n */\n readonly = input<boolean>(false);\n\n /**\n * Initial skill IDs (for syncing with parent entity)\n */\n skillIds = input<string[]>([]);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when the matrix value changes\n */\n valueChange = output<AXPSpreadsheetData>();\n\n /**\n * Emitted when a single cell value changes\n */\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n /**\n * Emitted when selected skills change (skill IDs array)\n */\n skillIdsChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n /**\n * Skill levels loaded from the service\n */\n private skillLevels = signal<AXMLearningManagementSkillLevelEntityModel[]>([]);\n\n /**\n * Selected skills (internal state)\n */\n protected selectedSkills = signal<AXMLearningManagementSkillEntityModel[]>([]);\n\n /**\n * Skill entity definition\n */\n private skillEntityDef = signal<AXPEntity | null>(null);\n\n /**\n * Loading state\n */\n protected isLoading = signal<boolean>(true);\n\n /**\n * Loading state for skill entity\n */\n protected isLoadingSkillEntity = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Vertical titles (skills) - rows of the matrix\n */\n protected verticalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const skills = this.selectedSkills();\n const result = (skills ?? []).map((skill) => ({\n id: skill.id,\n title: resolveMultiLanguageString(skill.title, locale),\n description:\n skill.description != null ? resolveMultiLanguageString(skill.description, locale) : undefined,\n }));\n return result;\n });\n\n /**\n * Horizontal titles (job titles/positions) - columns of the matrix\n */\n protected horizontalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const titlesInput = this.titles();\n const result = (titlesInput ?? []).map((title) => ({\n id: title.id,\n title: title.title,\n description: title.description || undefined,\n }));\n return result;\n });\n\n /**\n * Cell options (skill levels) - dropdown options for each cell, loaded from service\n */\n protected cellOptions = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const levels = this.skillLevels();\n return (levels ?? []).map((level) => ({\n id: level.id,\n title: resolveMultiLanguageString(level.title, locale),\n description:\n level.description != null ? resolveMultiLanguageString(level.description, locale) : undefined,\n }));\n });\n\n /**\n * Spreadsheet columns - converted from horizontalTitles (job titles/positions)\n */\n protected spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const cellOptions = this.cellOptions();\n\n // Create SelectBox widget configuration for skill levels\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: cellOptions.map(option => ({\n id: option.id,\n title: option.title,\n description: option.description,\n })),\n },\n };\n\n // Convert horizontal titles to columns\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id, // Path to access the value in row object\n widget: selectBoxWidget,\n }));\n });\n\n /**\n * Spreadsheet rows - converted from matrix data and vertical titles\n */\n protected spreadsheetRows = computed<Record<string, any>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.value();\n\n // Convert matrix data to spreadsheet rows\n return verticalTitles.map((skill) => {\n const row: Record<string, any> = {\n name: skill.id, // Required for fixed mode row identification\n _skillTitle: skill.title, // For row header display\n _skillDescription: skill.description, // For row header description\n };\n\n // Add cell values for each horizontal title (column)\n horizontalTitles.forEach((title) => {\n const cellValue = matrixData[skill.id]?.[title.id] ?? null;\n row[title.id] = cellValue;\n });\n\n return row;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n this.translationService.langChanges$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((lang) => this.activeLocale.set(lang));\n\n // Load skill levels and skill entity definition when component initializes\n this.loadSkillLevels();\n this.loadSkillEntityDef();\n\n // Watch for skillIds input changes and sync selected skills\n effect(() => {\n const ids = this.skillIds();\n if (ids && ids.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(ids);\n } else if (!ids || ids.length === 0) {\n // Try to extract skill IDs from matrix data keys\n const matrixData = this.value();\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n if (skillIdsFromMatrix.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(skillIdsFromMatrix);\n } else {\n this.selectedSkills.set([]);\n }\n }\n });\n\n // Watch for matrix value changes and extract skill IDs\n effect(() => {\n const matrixData = this.value();\n const currentSkillIds = this.selectedSkills().map((s) => s.id);\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n\n // If matrix has skills that aren't in selectedSkills, load them\n const missingIds = skillIdsFromMatrix.filter((id) => !currentSkillIds.includes(id));\n if (missingIds.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(missingIds);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n /**\n * Load skill levels from the service\n */\n private async loadSkillLevels(): Promise<void> {\n try {\n this.isLoading.set(true);\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelNumber', dir: 'asc' as const }],\n };\n const result = await this.skillLevelDataAccessor.query(query);\n this.skillLevels.set(result.items || []);\n } catch (error) {\n console.error('Error loading skill levels:', error);\n this.skillLevels.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Load skill entity definition\n */\n private async loadSkillEntityDef(): Promise<void> {\n try {\n this.isLoadingSkillEntity.set(true);\n const entityDef = await this.entityResolver.resolve(\n RootConfig.module.name,\n RootConfig.entities.skill.name\n );\n this.skillEntityDef.set(entityDef as AXPEntity);\n } catch (error) {\n console.error('Error loading skill entity definition:', error);\n this.skillEntityDef.set(null as unknown as AXPEntity);\n } finally {\n this.isLoadingSkillEntity.set(false);\n }\n }\n\n /**\n * Load skills by IDs\n */\n private async loadSkillsByIds(ids: string[]): Promise<void> {\n try {\n const skills: AXMLearningManagementSkillEntityModel[] = [];\n\n for (const id of ids) {\n try {\n const skill = await this.skillDataAccessor.byKey(id);\n if (skill) {\n skills.push(skill);\n }\n } catch (error) {\n console.error(`Error loading skill ${id}:`, error);\n }\n }\n\n this.selectedSkills.set(skills);\n } catch (error) {\n console.error('Error loading skills by IDs:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n /**\n * Convert spreadsheet rows back to matrix data format\n */\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, any>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const skillId = row['name']; // Row identifier (skill ID)\n if (!skillId) {\n return;\n }\n\n matrixData[skillId] = {};\n\n // Extract cell values for each column\n horizontalTitles.forEach((title) => {\n const cellValue = row[title.id] ?? null;\n matrixData[skillId][title.id] = cellValue;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle spreadsheet change event - convert to matrix format\n */\n protected handleSpreadsheetChange(rows: Record<string, any>[]): void {\n const matrixData = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(matrixData);\n\n // Extract skill IDs from row names and emit\n const skillIds = rows.map((row) => row['name']).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle cell change event from spreadsheet\n */\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n /**\n * Open skill selector dialog with category filter\n */\n protected async handleSelectSkills(): Promise<void> {\n const entityDef = this.skillEntityDef();\n if (!entityDef) {\n console.error('Skill entity definition not loaded');\n return;\n }\n\n try {\n // Get currently selected skill IDs\n const selectedItemIds = this.selectedSkills()\n .map((skill) => skill.id)\n .filter((id) => id != null);\n\n // Create category tree data source\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n };\n\n const result = await this.entityDataSelectorService.open({\n entity: entityDef,\n title: 'Select Skills',\n allowMultiple: true,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns: ['title', 'description'],\n showCategoryFilter: false,\n categoryFilter: {\n title: 'Categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n });\n\n if (result && result.items && result.items.length > 0) {\n // Update selected skills\n this.selectedSkills.set(result.items);\n // Emit skill IDs change\n const skillIds = result.items.map((item) => item.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n } catch (error) {\n console.error('Error opening skill selector:', error);\n }\n }\n\n /**\n * Remove a skill from selection\n */\n protected handleRemoveSkill(skillId: string): void {\n const currentSkills = this.selectedSkills();\n const updatedSkills = currentSkills.filter((skill) => skill.id !== skillId);\n this.selectedSkills.set(updatedSkills);\n\n // Remove skill data from matrix value\n const currentMatrixData = this.value();\n const updatedMatrixData = { ...currentMatrixData };\n delete updatedMatrixData[skillId];\n\n // Emit updated matrix data\n this.valueChange.emit(updatedMatrixData);\n\n // Emit skill IDs change\n const skillIds = updatedSkills.map((skill) => skill.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle row change event from spreadsheet (add/remove)\n */\n protected handleRowChange(event: AXPSpreadsheetRowChangeEvent): void {\n if (event.type === 'remove') {\n // Remove skill from selection\n this.handleRemoveSkill(event.rowId);\n }\n // Note: 'add' type shouldn't happen in fixed mode, but if it does, we can handle it here\n }\n\n //#endregion\n}\n\n//#endregion\n\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>","//#region ----- Imports -----\n\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction assignedRowCount(value: unknown): number {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return 0;\n }\n\n let count = 0;\n for (const row of Object.values(value as AXPSpreadsheetData)) {\n if (row == null || typeof row !== 'object') {\n continue;\n }\n const hasCell = Object.values(row).some((cell) => cell != null && String(cell).trim() !== '');\n if (hasCell) {\n count += 1;\n }\n }\n return count;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-skill-matrix-widget-column',\n template: `\n @if (assignedCount(); as count) {\n <!-- ----- Assigned skill rows ----- -->\n <span>{{ count }}</span>\n }\n <!-- ----- Empty matrix ----- -->\n @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXLSkillMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<AXPSpreadsheetData> {\n //#region ----- Computed Properties -----\n\n protected assignedCount(): number {\n return assignedRowCount(this.rawValue);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\nimport { get } from 'lodash';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-edit',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [skillIds]=\"skillIds()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n (skillIdsChange)=\"handleSkillIdsChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Titles from context - reactively reads from context data signal\n * This ensures the titles update immediately when requiredLevels changes in context\n */\n protected titles = computed<AXPSpreadsheetItem[]>(() => {\n // Read directly from context data signal for reactive updates\n const contextData = this.contextService.data();\n const requiredLevelsFromContext = get(contextData, 'jobLevelsList') as any[] | undefined;\n\n if (Array.isArray(requiredLevelsFromContext) && requiredLevelsFromContext.length > 0) {\n // Ensure each item has the required structure\n return requiredLevelsFromContext.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // Fallback to options (for initial load or when context is not yet available)\n const options = this.options();\n const rawTitles = options?.['titles'];\n\n // If titles is not set, return empty array\n if (!rawTitles) {\n return [];\n }\n\n // If it's already an array, return it (evaluated expression result)\n if (Array.isArray(rawTitles)) {\n // Ensure each item has the required structure\n return rawTitles.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // If it's still a string (unevaluated expression), return empty array\n // The expression will be evaluated by the widget renderer and options will update\n if (typeof rawTitles === 'string') {\n return [];\n }\n\n return [];\n });\n\n /**\n * Readonly mode from options - properly tracks options signal changes\n */\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n const result = options?.['readonly'] ?? false;\n return result;\n });\n\n /**\n * Current matrix value - tracks getValue signal changes\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n const result = (this.getValue() as AXPSpreadsheetData) || {};\n const keysCount = Object.keys(result).length;\n return result;\n });\n\n /**\n * Skill IDs extracted from matrix data keys or from options\n */\n protected skillIds = computed<string[]>(() => {\n const options = this.options();\n const skillIdsFromOptions = options?.['skillIds'] ?? [];\n\n // If skillIds from options is an array, use it\n if (Array.isArray(skillIdsFromOptions) && skillIdsFromOptions.length > 0) {\n return skillIdsFromOptions;\n }\n\n // Otherwise, extract from matrix data keys\n const matrixData = this.matrixValue();\n return Object.keys(matrixData || {});\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n const dataKeysCount = Object.keys(data || {}).length;\n const currentKeysCount = Object.keys(this.getValue() || {}).length;\n if (data) {\n this.setValue(data);\n const afterKeysCount = Object.keys(this.getValue() || {}).length;\n } else {\n }\n }\n\n /**\n * Handle skill IDs change from skill-matrix component\n * Skill IDs are stored as keys in the matrix data, so this is mainly for tracking\n */\n protected handleSkillIdsChange(skillIds: string[]): void {\n // Skill IDs are already reflected in the matrix data keys\n // This handler is here for potential future use or side effects\n console.log('Skill IDs changed:', skillIds);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-view',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Skill IDs from options\n */\n protected skills = computed<{ id: string; title: string; description?: string }[]>(() => {\n return this.options()['skills'] || [];\n });\n\n /**\n * Current matrix value\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-learning-management-client.mjs","sources":["../../../../libs/modules/learning-management/client/src/lib/menu.provider.ts","../../../../libs/modules/learning-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget.config.ts","../../../../libs/modules/learning-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/learning-management.module.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.html","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-column.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-edit.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-view.component.ts","../../../../libs/modules/learning-management/client/src/acorex-platform-module-learning-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXMLearningManagementMenuKeys } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n/**\n * Learning Management Module Menu Provider.\n * - Root \"Learning\": Skills, Courses, Trainings, Enrollments, Certificates, Licenses, Learning Paths (operational)\n * - Configuration/Learning: Skill Levels, Course Types, Training Definitions/Types, Certificate Definitions/Types, License Types, Mandatory Training Rules (reference)\n */\nexport class AXMLearningManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n // Root \"Learning\" - single level, direct links with dividers\n context.addItems([\n {\n name: AXMLearningManagementMenuKeys.Root,\n priority: 8210,\n text: '@learning-management:module.menus.root.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.Root}:skills`,\n text: RootConfig.entities.skill.titlePlural,\n icon: RootConfig.entities.skill.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skill.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:courses`,\n text: RootConfig.entities.course.titlePlural,\n icon: RootConfig.entities.course.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.course.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:trainings`,\n text: RootConfig.entities.training.titlePlural,\n icon: RootConfig.entities.training.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.training.name),\n priority: 3,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 4 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:enrollments`,\n text: RootConfig.entities.enrollment.titlePlural,\n icon: RootConfig.entities.enrollment.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.enrollment.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:attendance`,\n text: RootConfig.entities.attendance.titlePlural,\n icon: RootConfig.entities.attendance.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.attendance.name),\n priority: 6,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider2`, text: '', type: 'break', priority: 7 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:certificates`,\n text: RootConfig.entities.certificate.titlePlural,\n icon: RootConfig.entities.certificate.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificate.name),\n priority: 8,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:licenses`,\n text: RootConfig.entities.license.titlePlural,\n icon: RootConfig.entities.license.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.license.name),\n priority: 9,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:learning-paths`,\n text: RootConfig.entities.learningPath.titlePlural,\n icon: RootConfig.entities.learningPath.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.learningPath.name),\n priority: 10,\n },\n ],\n },\n ]);\n\n // Configuration/Learning - reference data\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMLearningManagementMenuKeys.ConfigurationRoot,\n priority: 8650,\n text: '@learning-management:module.menus.configuration.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:skill-levels`,\n text: RootConfig.entities.skillLevel.titlePlural,\n icon: RootConfig.entities.skillLevel.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skillLevel.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:course-types`,\n text: RootConfig.entities.courseType.titlePlural,\n icon: RootConfig.entities.courseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.courseType.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-definitions`,\n text: RootConfig.entities.trainingDefinition.titlePlural,\n icon: RootConfig.entities.trainingDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingDefinition.name),\n priority: 3,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-types`,\n text: RootConfig.entities.trainingType.titlePlural,\n icon: RootConfig.entities.trainingType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingType.name),\n priority: 4,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-definitions`,\n text: RootConfig.entities.certificateDefinition.titlePlural,\n icon: RootConfig.entities.certificateDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateDefinition.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-types`,\n text: RootConfig.entities.certificateType.titlePlural,\n icon: RootConfig.entities.certificateType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateType.name),\n priority: 6,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:license-types`,\n text: RootConfig.entities.licenseType.titlePlural,\n icon: RootConfig.entities.licenseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.licenseType.name),\n priority: 7,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:mandatory-rules`,\n text: RootConfig.entities.mandatoryTrainingRule.titlePlural,\n icon: RootConfig.entities.mandatoryTrainingRule.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.mandatoryTrainingRule.name),\n priority: 8,\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPLearningPermissionKeys\n} from '@acorex-platform/module-learning-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers learning capabilities into the shared Learning group.\n */\n@Injectable()\nexport class AXMLearningManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPLearningPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:learning.permissions';\n const G = '@common:permission-groups';\n\n context\n .addGroup(groups.Learning.Root, `${G}.learning.title`, `${G}.learning.description`, { order: 20 })\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(\n keys.MaintainLearning,\n `${P}.maintain-learning.title`,\n `${P}.maintain-learning.description`,\n )\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nfunction cmd(id: string, entityKey: string, e: { name: string; title: string; icon: string }, title: string, desc: string) {\n return {\n id,\n group: 'command' as const,\n title,\n icon: e.icon,\n description: desc,\n command: {\n name: 'Entity:Create' as const,\n options: createEntityCommandOptions(entityKey, { name: e.name, module: RootConfig.module.name, title: e.title }),\n },\n };\n}\n\nexport class AXMLearningManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n cmd('create-skill', `${RootConfig.module.name}.${RootConfig.entities.skill.name}`, RootConfig.entities.skill, '@learning-management:skills.search.create-skill.title', '@learning-management:skills.search.create-skill.description'),\n cmd('create-course', `${RootConfig.module.name}.${RootConfig.entities.course.name}`, RootConfig.entities.course, '@learning-management:courses.search.create-course.title', '@learning-management:courses.search.create-course.description'),\n cmd('create-training', `${RootConfig.module.name}.${RootConfig.entities.training.name}`, RootConfig.entities.training, '@learning-management:trainings.search.schedule-training.title', '@learning-management:trainings.search.schedule-training.description'),\n cmd('create-training-definition', `${RootConfig.module.name}.${RootConfig.entities.trainingDefinition.name}`, RootConfig.entities.trainingDefinition, '@learning-management:trainings.search.create-training-definition.title', '@learning-management:trainings.search.create-training-definition.description'),\n cmd('create-enrollment', `${RootConfig.module.name}.${RootConfig.entities.enrollment.name}`, RootConfig.entities.enrollment, '@learning-management:enrollments.search.create-enrollment.title', '@learning-management:enrollments.search.create-enrollment.description'),\n cmd('create-learning-path', `${RootConfig.module.name}.${RootConfig.entities.learningPath.name}`, RootConfig.entities.learningPath, '@learning-management:learning-paths.search.create-learning-path.title', '@learning-management:learning-paths.search.create-learning-path.description'),\n cmd('create-certificate', `${RootConfig.module.name}.${RootConfig.entities.certificate.name}`, RootConfig.entities.certificate, '@learning-management:certificates.search.issue-certificate.title', '@learning-management:certificates.search.issue-certificate.description'),\n cmd('create-certificate-definition', `${RootConfig.module.name}.${RootConfig.entities.certificateDefinition.name}`, RootConfig.entities.certificateDefinition, '@learning-management:certificates.search.create-certificate-definition.title', '@learning-management:certificates.search.create-certificate-definition.description'),\n cmd('create-attendance', `${RootConfig.module.name}.${RootConfig.entities.attendance.name}`, RootConfig.entities.attendance, '@learning-management:enrollments.search.create-attendance.title', '@learning-management:enrollments.search.create-attendance.description'),\n cmd('create-skill-level', `${RootConfig.module.name}.${RootConfig.entities.skillLevel.name}`, RootConfig.entities.skillLevel, '@learning-management:skills.search.create-skill-level.title', '@learning-management:skills.search.create-skill-level.description'),\n cmd('create-course-type', `${RootConfig.module.name}.${RootConfig.entities.courseType.name}`, RootConfig.entities.courseType, '@learning-management:courses.search.create-course-type.title', '@learning-management:courses.search.create-course-type.description'),\n cmd('create-training-type', `${RootConfig.module.name}.${RootConfig.entities.trainingType.name}`, RootConfig.entities.trainingType, '@learning-management:trainings.search.create-training-type.title', '@learning-management:trainings.search.create-training-type.description'),\n cmd('create-certificate-type', `${RootConfig.module.name}.${RootConfig.entities.certificateType.name}`, RootConfig.entities.certificateType, '@learning-management:certificates.search.create-certificate-type.title', '@learning-management:certificates.search.create-certificate-type.description'),\n cmd('create-mandatory-training-rule', `${RootConfig.module.name}.${RootConfig.entities.mandatoryTrainingRule.name}`, RootConfig.entities.mandatoryTrainingRule, '@learning-management:compliance.search.create-mandatory-training-rule.title', '@learning-management:compliance.search.create-mandatory-training-rule.description'),\n ];\n}\n\n//#endregion\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXLSkillMatrixWidget: AXPWidgetConfig<AXLSkillMatrixWidgetConfigType> = {\n name: 'skill-matrix-editor',\n title: '@learning-management:skills.components.skill-matrix.widget.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing skill levels across different skills',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./skill-matrix-widget-view.component').then((c) => c.AXLSkillMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./skill-matrix-widget-edit.component').then((c) => c.AXLSkillMatrixWidgetEditComponent),\n },\n column: {\n component: () => import('./skill-matrix-widget-column.component').then((c) => c.AXLSkillMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXLSkillMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXLSkillMatrixWidget } from './features/skill-matrix/skill-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Learning Management Widgets Provider ----\n\n@Injectable()\nexport class AXMLearningManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXLSkillMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { NgModule } from '@angular/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXMLearningManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMLearningManagementMenuProvider } from './menu.provider';\nimport { AXMLearningManagementSearchCommandProvider } from './search-command.provider';\n\nimport { AXMLearningManagementWidgetsProvider } from './widget-definition.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMLearningManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMLearningManagementSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMLearningManagementModule { }\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { type AXPCategoryEntity, type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXPSpreadsheetComponent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetRowChangeEvent,\n AXPSpreadsheetItem,\n AXPSpreadsheetData,\n} from '@acorex-platform/framework-client/layout/components';\n\nimport { AXMLearningManagementSkillLevelEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXMLearningManagementSkillEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPCategoryTreeDataSource } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n@Component({\n selector: 'axm-skill-matrix',\n standalone: true,\n imports: [\n CommonModule,\n AXPSpreadsheetComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n templateUrl: './skill-matrix.component.html',\n styleUrl: './skill-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-skill-matrix',\n },\n})\nexport class AXMLearningManagementSkillMatrixComponent {\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly skillLevelDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillLevel.name)\n .data<string, AXMLearningManagementSkillLevelEntityModel>();\n private readonly skillDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skill.name)\n .data<string, AXMLearningManagementSkillEntityModel>();\n private readonly skillCategoryDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillCategory.name)\n .data<string, any>();\n private readonly entityDataSelectorService = inject(AXPEntityDataSelectorService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly activeLocale = signal(this.translationService.getActiveLang());\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /**\n * Array of job titles/positions to display as columns (e.g., Senior, Manager, Director)\n */\n titles = input<AXPSpreadsheetItem[]>([]);\n\n /**\n * Initial matrix data: { [skillId]: { [title.id]: skillLevelId } }\n */\n value = input<AXPSpreadsheetData>({});\n\n /**\n * Whether the matrix is in readonly mode\n */\n readonly = input<boolean>(false);\n\n /**\n * Initial skill IDs (for syncing with parent entity)\n */\n skillIds = input<string[]>([]);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when the matrix value changes\n */\n valueChange = output<AXPSpreadsheetData>();\n\n /**\n * Emitted when a single cell value changes\n */\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n /**\n * Emitted when selected skills change (skill IDs array)\n */\n skillIdsChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n /**\n * Skill levels loaded from the service\n */\n private skillLevels = signal<AXMLearningManagementSkillLevelEntityModel[]>([]);\n\n /**\n * Selected skills (internal state)\n */\n protected selectedSkills = signal<AXMLearningManagementSkillEntityModel[]>([]);\n\n /**\n * Skill entity definition\n */\n private skillEntityDef = signal<AXPEntity | null>(null);\n\n /**\n * Loading state\n */\n protected isLoading = signal<boolean>(true);\n\n /**\n * Loading state for skill entity\n */\n protected isLoadingSkillEntity = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Vertical titles (skills) - rows of the matrix\n */\n protected verticalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const skills = this.selectedSkills();\n const result = (skills ?? []).map((skill) => ({\n id: skill.id,\n title: resolveMultiLanguageString(skill.title, locale),\n description:\n skill.description != null ? resolveMultiLanguageString(skill.description, locale) : undefined,\n }));\n return result;\n });\n\n /**\n * Horizontal titles (job titles/positions) - columns of the matrix\n */\n protected horizontalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const titlesInput = this.titles();\n const result = (titlesInput ?? []).map((title) => ({\n id: title.id,\n title: title.title,\n description: title.description || undefined,\n }));\n return result;\n });\n\n /**\n * Cell options (skill levels) - dropdown options for each cell, loaded from service\n */\n protected cellOptions = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const levels = this.skillLevels();\n return (levels ?? []).map((level) => ({\n id: level.id,\n title: resolveMultiLanguageString(level.title, locale),\n description:\n level.description != null ? resolveMultiLanguageString(level.description, locale) : undefined,\n }));\n });\n\n /**\n * Spreadsheet columns - converted from horizontalTitles (job titles/positions)\n */\n protected spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const cellOptions = this.cellOptions();\n\n // Create SelectBox widget configuration for skill levels\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: cellOptions.map(option => ({\n id: option.id,\n title: option.title,\n description: option.description,\n })),\n },\n };\n\n // Convert horizontal titles to columns\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id, // Path to access the value in row object\n widget: selectBoxWidget,\n }));\n });\n\n /**\n * Spreadsheet rows - converted from matrix data and vertical titles\n */\n protected spreadsheetRows = computed<Record<string, any>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.value();\n\n // Convert matrix data to spreadsheet rows\n return verticalTitles.map((skill) => {\n const row: Record<string, any> = {\n name: skill.id, // Required for fixed mode row identification\n _skillTitle: skill.title, // For row header display\n _skillDescription: skill.description, // For row header description\n };\n\n // Add cell values for each horizontal title (column)\n horizontalTitles.forEach((title) => {\n const cellValue = matrixData[skill.id]?.[title.id] ?? null;\n row[title.id] = cellValue;\n });\n\n return row;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n this.translationService.langChanges$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((lang) => this.activeLocale.set(lang));\n\n // Load skill levels and skill entity definition when component initializes\n this.loadSkillLevels();\n this.loadSkillEntityDef();\n\n // Watch for skillIds input changes and sync selected skills\n effect(() => {\n const ids = this.skillIds();\n if (ids && ids.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(ids);\n } else if (!ids || ids.length === 0) {\n // Try to extract skill IDs from matrix data keys\n const matrixData = this.value();\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n if (skillIdsFromMatrix.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(skillIdsFromMatrix);\n } else {\n this.selectedSkills.set([]);\n }\n }\n });\n\n // Watch for matrix value changes and extract skill IDs\n effect(() => {\n const matrixData = this.value();\n const currentSkillIds = this.selectedSkills().map((s) => s.id);\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n\n // If matrix has skills that aren't in selectedSkills, load them\n const missingIds = skillIdsFromMatrix.filter((id) => !currentSkillIds.includes(id));\n if (missingIds.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(missingIds);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n /**\n * Load skill levels from the service\n */\n private async loadSkillLevels(): Promise<void> {\n try {\n this.isLoading.set(true);\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelNumber', dir: 'asc' as const }],\n };\n const result = await this.skillLevelDataAccessor.query(query);\n this.skillLevels.set(result.items || []);\n } catch (error) {\n console.error('Error loading skill levels:', error);\n this.skillLevels.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Load skill entity definition\n */\n private async loadSkillEntityDef(): Promise<void> {\n try {\n this.isLoadingSkillEntity.set(true);\n const entityDef = await this.entityResolver.resolve(\n RootConfig.module.name,\n RootConfig.entities.skill.name\n );\n this.skillEntityDef.set(entityDef as AXPEntity);\n } catch (error) {\n console.error('Error loading skill entity definition:', error);\n this.skillEntityDef.set(null as unknown as AXPEntity);\n } finally {\n this.isLoadingSkillEntity.set(false);\n }\n }\n\n /**\n * Load skills by IDs\n */\n private async loadSkillsByIds(ids: string[]): Promise<void> {\n try {\n const skills: AXMLearningManagementSkillEntityModel[] = [];\n\n for (const id of ids) {\n try {\n const skill = await this.skillDataAccessor.byKey(id);\n if (skill) {\n skills.push(skill);\n }\n } catch (error) {\n console.error(`Error loading skill ${id}:`, error);\n }\n }\n\n this.selectedSkills.set(skills);\n } catch (error) {\n console.error('Error loading skills by IDs:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n /**\n * Convert spreadsheet rows back to matrix data format\n */\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, any>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const skillId = row['name']; // Row identifier (skill ID)\n if (!skillId) {\n return;\n }\n\n matrixData[skillId] = {};\n\n // Extract cell values for each column\n horizontalTitles.forEach((title) => {\n const cellValue = row[title.id] ?? null;\n matrixData[skillId][title.id] = cellValue;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle spreadsheet change event - convert to matrix format\n */\n protected handleSpreadsheetChange(rows: Record<string, any>[]): void {\n const matrixData = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(matrixData);\n\n // Extract skill IDs from row names and emit\n const skillIds = rows.map((row) => row['name']).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle cell change event from spreadsheet\n */\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n /**\n * Open skill selector dialog with category filter\n */\n protected async handleSelectSkills(): Promise<void> {\n const entityDef = this.skillEntityDef();\n if (!entityDef) {\n console.error('Skill entity definition not loaded');\n return;\n }\n\n try {\n // Get currently selected skill IDs\n const selectedItemIds = this.selectedSkills()\n .map((skill) => skill.id)\n .filter((id) => id != null);\n\n // Create category tree data source\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n };\n\n const result = await this.entityDataSelectorService.open({\n entity: entityDef,\n title: 'Select Skills',\n allowMultiple: true,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns: ['title', 'description'],\n showCategoryFilter: false,\n categoryFilter: {\n title: 'Categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n });\n\n if (result && result.items && result.items.length > 0) {\n // Update selected skills\n this.selectedSkills.set(result.items);\n // Emit skill IDs change\n const skillIds = result.items.map((item) => item.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n } catch (error) {\n console.error('Error opening skill selector:', error);\n }\n }\n\n /**\n * Remove a skill from selection\n */\n protected handleRemoveSkill(skillId: string): void {\n const currentSkills = this.selectedSkills();\n const updatedSkills = currentSkills.filter((skill) => skill.id !== skillId);\n this.selectedSkills.set(updatedSkills);\n\n // Remove skill data from matrix value\n const currentMatrixData = this.value();\n const updatedMatrixData = { ...currentMatrixData };\n delete updatedMatrixData[skillId];\n\n // Emit updated matrix data\n this.valueChange.emit(updatedMatrixData);\n\n // Emit skill IDs change\n const skillIds = updatedSkills.map((skill) => skill.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle row change event from spreadsheet (add/remove)\n */\n protected handleRowChange(event: AXPSpreadsheetRowChangeEvent): void {\n if (event.type === 'remove') {\n // Remove skill from selection\n this.handleRemoveSkill(event.rowId);\n }\n // Note: 'add' type shouldn't happen in fixed mode, but if it does, we can handle it here\n }\n\n //#endregion\n}\n\n//#endregion\n\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>","//#region ----- Imports -----\n\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction assignedRowCount(value: unknown): number {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return 0;\n }\n\n let count = 0;\n for (const row of Object.values(value as AXPSpreadsheetData)) {\n if (row == null || typeof row !== 'object') {\n continue;\n }\n const hasCell = Object.values(row).some((cell) => cell != null && String(cell).trim() !== '');\n if (hasCell) {\n count += 1;\n }\n }\n return count;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-skill-matrix-widget-column',\n template: `\n @if (assignedCount(); as count) {\n <!-- ----- Assigned skill rows ----- -->\n <span>{{ count }}</span>\n }\n <!-- ----- Empty matrix ----- -->\n @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXLSkillMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<AXPSpreadsheetData> {\n //#region ----- Computed Properties -----\n\n protected assignedCount(): number {\n return assignedRowCount(this.rawValue);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\nimport { get } from 'lodash';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-edit',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [skillIds]=\"skillIds()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n (skillIdsChange)=\"handleSkillIdsChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Titles from context - reactively reads from context data signal\n * This ensures the titles update immediately when requiredLevels changes in context\n */\n protected titles = computed<AXPSpreadsheetItem[]>(() => {\n // Read directly from context data signal for reactive updates\n const contextData = this.contextService.data();\n const requiredLevelsFromContext = get(contextData, 'jobLevelsList') as any[] | undefined;\n\n if (Array.isArray(requiredLevelsFromContext) && requiredLevelsFromContext.length > 0) {\n // Ensure each item has the required structure\n return requiredLevelsFromContext.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // Fallback to options (for initial load or when context is not yet available)\n const options = this.options();\n const rawTitles = options?.['titles'];\n\n // If titles is not set, return empty array\n if (!rawTitles) {\n return [];\n }\n\n // If it's already an array, return it (evaluated expression result)\n if (Array.isArray(rawTitles)) {\n // Ensure each item has the required structure\n return rawTitles.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // If it's still a string (unevaluated expression), return empty array\n // The expression will be evaluated by the widget renderer and options will update\n if (typeof rawTitles === 'string') {\n return [];\n }\n\n return [];\n });\n\n /**\n * Readonly mode from options - properly tracks options signal changes\n */\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n const result = options?.['readonly'] ?? false;\n return result;\n });\n\n /**\n * Current matrix value - tracks getValue signal changes\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n const result = (this.getValue() as AXPSpreadsheetData) || {};\n const keysCount = Object.keys(result).length;\n return result;\n });\n\n /**\n * Skill IDs extracted from matrix data keys or from options\n */\n protected skillIds = computed<string[]>(() => {\n const options = this.options();\n const skillIdsFromOptions = options?.['skillIds'] ?? [];\n\n // If skillIds from options is an array, use it\n if (Array.isArray(skillIdsFromOptions) && skillIdsFromOptions.length > 0) {\n return skillIdsFromOptions;\n }\n\n // Otherwise, extract from matrix data keys\n const matrixData = this.matrixValue();\n return Object.keys(matrixData || {});\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n const dataKeysCount = Object.keys(data || {}).length;\n const currentKeysCount = Object.keys(this.getValue() || {}).length;\n if (data) {\n this.setValue(data);\n const afterKeysCount = Object.keys(this.getValue() || {}).length;\n } else {\n }\n }\n\n /**\n * Handle skill IDs change from skill-matrix component\n * Skill IDs are stored as keys in the matrix data, so this is mainly for tracking\n */\n protected handleSkillIdsChange(skillIds: string[]): void {\n // Skill IDs are already reflected in the matrix data keys\n // This handler is here for potential future use or side effects\n console.log('Skill IDs changed:', skillIds);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-view',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Skill IDs from options\n */\n protected skills = computed<{ id: string; title: string; description?: string }[]>(() => {\n return this.options()['skills'] || [];\n });\n\n /**\n * Current matrix value\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|