@acorex-platform/module-risk-management-client 0.0.28 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-risk-management-client-contracts.mjs","sources":["../../../../libs/modules/risk-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/risk-management/contracts/src/menu.keys.ts","../../../../libs/modules/risk-management/contracts/src/permission.keys.ts","../../../../libs/modules/risk-management/contracts/src/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/contracts/src/root-config.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-likelihood/risk-likelihood.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-matrix-cell/risk-matrix-cell.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-rating/risk-rating.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-severity/risk-severity.types.ts","../../../../libs/modules/risk-management/contracts/src/index.ts","../../../../libs/modules/risk-management/contracts/src/acorex-platform-module-risk-management-client-contracts.ts"],"sourcesContent":["/** Hazard catalog scope for environmental and operational risk matrix records. */\nexport const RISK_CATALOG_SCOPE_HAZARD = 'risk-management.hazard';\n\n/** PPE items catalog scope for personal protective equipment risk matrices. */\nexport const RISK_CATALOG_SCOPE_PPE_ITEMS = 'risk-management.ppe-items';\n","export const AXMRiskManagementMenuKeys = {\n Root: 'RiskManagement:Menu:Root',\n RiskLikelihoods: 'RiskManagement:Menu:RiskLikelihoods',\n RiskSeverities: 'RiskManagement:Menu:RiskSeverities',\n RiskRatings: 'RiskManagement:Menu:RiskRatings',\n RiskMatrixCells: 'RiskManagement:Menu:RiskMatrixCells',\n} as const;\n","/**\n * Safety & Risk capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPSafetyRiskPermissionKeys = {\n Access: 'SafetyRisk:Permission:Access',\n MaintainSafety: 'SafetyRisk:Permission:MaintainSafety',\n MaintainRisk: 'SafetyRisk:Permission:MaintainRisk',\n MaintainHealth: 'SafetyRisk:Permission:MaintainHealth',\n MaintainAssessments: 'SafetyRisk:Permission:MaintainAssessments',\n Setup: 'SafetyRisk:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPSafetyRiskPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMRiskManagementPermissionKeys = {\n RiskManagement: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n\n RiskLikelihood: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskSeverity: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskRating: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskMatrixCell: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n View: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Create: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Update: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Delete: AXPSafetyRiskPermissionKeys.MaintainRisk,\n },\n },\n} as const;\n","//#region ---- Types ----\n\n/** Lookup properties on RiskMatrixCell that can be assigned to matrix axes. */\nexport type AXMRiskMatrixAxisProperty = 'likelihoodId' | 'severityId' | 'riskRatingId';\n\nexport interface AXMRiskMatrixAxisMapping {\n rowProperty: AXMRiskMatrixAxisProperty;\n columnProperty: AXMRiskMatrixAxisProperty;\n depthProperty: AXMRiskMatrixAxisProperty;\n}\n\nexport type AXMRiskMatrixOrientation = 'likelihood-rows' | 'severity-rows';\n\n//#endregion\n\n//#region ---- Constants ----\n\nexport const RISK_MATRIX_AXIS_PROPERTIES: readonly AXMRiskMatrixAxisProperty[] = [\n 'likelihoodId',\n 'severityId',\n 'riskRatingId',\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_AXIS_MAPPING: AXMRiskMatrixAxisMapping = {\n rowProperty: 'likelihoodId',\n columnProperty: 'severityId',\n depthProperty: 'riskRatingId',\n};\n\nexport const RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS = [\n {\n id: 'likelihoodId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.likelihood-id.title',\n },\n {\n id: 'severityId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.severity-id.title',\n },\n {\n id: 'riskRatingId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.risk-rating-id.title',\n },\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_ORIENTATION: AXMRiskMatrixOrientation = 'likelihood-rows';\n\nexport const RISK_MATRIX_ORIENTATION_OPTIONS: Array<{ id: AXMRiskMatrixOrientation; title: string }> = [\n {\n id: 'likelihood-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.likelihood-rows',\n },\n {\n id: 'severity-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.severity-rows',\n },\n];\n\nexport const RISK_MATRIX_ORIENTATION_TITLE_KEYS: Record<AXMRiskMatrixOrientation, string> = {\n 'likelihood-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.likelihood-rows',\n 'severity-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.severity-rows',\n};\n\n//#endregion\n","//#region ---- Root Configuration ----\n\nconst config = {\n i18n: 'risk-management',\n module: 'RiskManagement',\n route: 'risk-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: config.route,\n name: config.module,\n title: '@risk-management:module.title',\n icon: 'fa-light fa-chart-line',\n },\n entities: {\n riskLikelihood: {\n name: 'RiskLikelihood',\n source: `${config.module}.RiskLikelihood`,\n title: '@risk-management:risk-likelihoods.entities.risk-likelihood.title',\n titlePlural: '@risk-management:risk-likelihoods.entities.risk-likelihood.plural',\n icon: 'fa-light fa-signal',\n },\n riskSeverity: {\n name: 'RiskSeverity',\n source: `${config.module}.RiskSeverity`,\n title: '@risk-management:risk-severities.entities.risk-severity.title',\n titlePlural: '@risk-management:risk-severities.entities.risk-severity.plural',\n icon: 'fa-light fa-gauge-high',\n },\n riskRating: {\n name: 'RiskRating',\n source: `${config.module}.RiskRating`,\n title: '@risk-management:risk-ratings.entities.risk-rating.title',\n titlePlural: '@risk-management:risk-ratings.entities.risk-rating.plural',\n icon: 'fa-light fa-ranking-star',\n },\n riskMatrixCell: {\n name: 'RiskMatrixCell',\n source: `${config.module}.RiskMatrixCell`,\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.title',\n titlePlural: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.plural',\n icon: 'fa-light fa-table-cells',\n },\n },\n};\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskLikelihoodEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPCategoryListItem, AXPMultiLanguageString, type AXPSpreadsheetData, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskMatrixCellEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-matrix-cell-code` (`RMC-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n likelihoodId: string[];\n likelihood?: Array<{ id: string; title?: string; code?: string }>;\n severityId: string[];\n severity?: Array<{ id: string; title?: string; code?: string }>;\n /** Likelihood rows × severity columns mapped to risk rating ids. */\n matrix?: AXPSpreadsheetData;\n categoryIds?: string[];\n categories?: AXPCategoryListItem[];\n /** Registered catalog scope keys (module providers). */\n catalogScopeKeys?: string[];\n /** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */\n catalogScopes?: Array<{ name: string; title: AXPMultiLanguageString | string; cssClass?: string }>;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskRatingEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-rating-code` (`RR-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n /** Color from `material-design` palette (`color` plugin, free mode). */\n color?: string;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskSeverityEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './risk-matrix-axis-mapping';\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AACO,MAAM,yBAAyB,GAAG;AAEzC;AACO,MAAM,4BAA4B,GAAG;;ACJrC,MAAM,yBAAyB,GAAG;AACvC,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,eAAe,EAAE,qCAAqC;AACtD,IAAA,cAAc,EAAE,oCAAoC;AACpD,IAAA,WAAW,EAAE,iCAAiC;AAC9C,IAAA,eAAe,EAAE,qCAAqC;;;ACLxD;;;AAGG;AACI,MAAM,2BAA2B,GAAG;AACzC,IAAA,MAAM,EAAE,8BAA8B;AACtC,IAAA,cAAc,EAAE,sCAAsC;AACtD,IAAA,YAAY,EAAE,oCAAoC;AAClD,IAAA,cAAc,EAAE,sCAAsC;AACtD,IAAA,mBAAmB,EAAE,2CAA2C;AAChE,IAAA,KAAK,EAAE,6BAA6B;;AAGtC;;;AAGG;AACI,MAAM,+BAA+B,GAAG;AAC7C,IAAA,cAAc,EAAE;QACd,UAAU,EAAE,2BAA2B,CAAC,YAAY;AAEpD,QAAA,cAAc,EAAE;YACd,UAAU,EAAE,2BAA2B,CAAC,KAAK;YAC7C,IAAI,EAAE,2BAA2B,CAAC,KAAK;YACvC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;AAC1C,SAAA;AACD,QAAA,YAAY,EAAE;YACZ,UAAU,EAAE,2BAA2B,CAAC,KAAK;YAC7C,IAAI,EAAE,2BAA2B,CAAC,KAAK;YACvC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;AAC1C,SAAA;AACD,QAAA,UAAU,EAAE;YACV,UAAU,EAAE,2BAA2B,CAAC,KAAK;YAC7C,IAAI,EAAE,2BAA2B,CAAC,KAAK;YACvC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;YACzC,MAAM,EAAE,2BAA2B,CAAC,KAAK;AAC1C,SAAA;AACD,QAAA,cAAc,EAAE;YACd,UAAU,EAAE,2BAA2B,CAAC,YAAY;YACpD,IAAI,EAAE,2BAA2B,CAAC,YAAY;YAC9C,MAAM,EAAE,2BAA2B,CAAC,YAAY;YAChD,MAAM,EAAE,2BAA2B,CAAC,YAAY;YAChD,MAAM,EAAE,2BAA2B,CAAC,YAAY;AACjD,SAAA;AACF,KAAA;;;ACjDH;AAaA;AAEA;AAEO,MAAM,2BAA2B,GAAyC;IAC/E,cAAc;IACd,YAAY;IACZ,cAAc;;AAGT,MAAM,gCAAgC,GAA6B;AACxE,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,aAAa,EAAE,cAAc;;AAGxB,MAAM,wCAAwC,GAAG;AACtD,IAAA;AACE,QAAA,EAAE,EAAE,cAAc;AAClB,QAAA,KAAK,EAAE,yFAAyF;AACjG,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,YAAY;AAChB,QAAA,KAAK,EAAE,uFAAuF;AAC/F,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,cAAc;AAClB,QAAA,KAAK,EAAE,0FAA0F;AAClG,KAAA;;AAGI,MAAM,+BAA+B,GAA6B;AAElE,MAAM,+BAA+B,GAA2D;AACrG,IAAA;AACE,QAAA,EAAE,EAAE,iBAAiB;AACrB,QAAA,KAAK,EACH,gHAAgH;AACnH,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,eAAe;AACnB,QAAA,KAAK,EACH,8GAA8G;AACjH,KAAA;;AAGI,MAAM,kCAAkC,GAA6C;AAC1F,IAAA,iBAAiB,EAAE,kFAAkF;AACrG,IAAA,eAAe,EAAE,gFAAgF;;AAGnG;;AChEA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,KAAK,EAAE,iBAAiB;CACzB;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,+BAA+B;AACtC,QAAA,IAAI,EAAE,wBAAwB;AAC/B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,eAAA,CAAiB;AACzC,YAAA,KAAK,EAAE,kEAAkE;AACzE,YAAA,WAAW,EAAE,mEAAmE;AAChF,YAAA,IAAI,EAAE,oBAAoB;AAC3B,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,aAAA,CAAe;AACvC,YAAA,KAAK,EAAE,+DAA+D;AACtE,YAAA,WAAW,EAAE,gEAAgE;AAC7E,YAAA,IAAI,EAAE,wBAAwB;AAC/B,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,WAAA,CAAa;AACrC,YAAA,KAAK,EAAE,0DAA0D;AACjE,YAAA,WAAW,EAAE,2DAA2D;AACxE,YAAA,IAAI,EAAE,0BAA0B;AACjC,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,eAAA,CAAiB;AACzC,YAAA,KAAK,EAAE,oEAAoE;AAC3E,YAAA,WAAW,EAAE,qEAAqE;AAClF,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACF,KAAA;;AAGH;;AChCA;;ACWA;;ACRA;;ACHA;;AChBA;;ACAA;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-risk-management-client-contracts.mjs","sources":["../../../../libs/modules/risk-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/risk-management/contracts/src/menu.keys.ts","../../../../libs/modules/risk-management/contracts/src/permission.keys.ts","../../../../libs/modules/risk-management/contracts/src/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/contracts/src/root-config.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-likelihood/risk-likelihood.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-matrix-cell/risk-matrix-cell.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-rating/risk-rating.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-severity/risk-severity.types.ts","../../../../libs/modules/risk-management/contracts/src/index.ts","../../../../libs/modules/risk-management/contracts/src/acorex-platform-module-risk-management-client-contracts.ts"],"sourcesContent":["/** Hazard catalog scope for environmental and operational risk matrix records. */\nexport const RISK_CATALOG_SCOPE_HAZARD = 'risk-management.hazard';\n\n/** PPE items catalog scope for personal protective equipment risk matrices. */\nexport const RISK_CATALOG_SCOPE_PPE_ITEMS = 'risk-management.ppe-items';\n","export const AXMRiskManagementMenuKeys = {\n Root: 'RiskManagement:Menu:Root',\n RiskLikelihoods: 'RiskManagement:Menu:RiskLikelihoods',\n RiskSeverities: 'RiskManagement:Menu:RiskSeverities',\n RiskRatings: 'RiskManagement:Menu:RiskRatings',\n RiskMatrixCells: 'RiskManagement:Menu:RiskMatrixCells',\n} as const;\n","/**\n * Safety & Risk capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPSafetyRiskPermissionKeys = {\n Access: 'SafetyRisk:Permission:Access',\n MaintainSafety: 'SafetyRisk:Permission:MaintainSafety',\n MaintainRisk: 'SafetyRisk:Permission:MaintainRisk',\n MaintainHealth: 'SafetyRisk:Permission:MaintainHealth',\n MaintainAssessments: 'SafetyRisk:Permission:MaintainAssessments',\n Setup: 'SafetyRisk:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPSafetyRiskPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMRiskManagementPermissionKeys = {\n RiskManagement: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n\n RiskLikelihood: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskSeverity: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskRating: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskMatrixCell: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n View: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Create: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Update: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Delete: AXPSafetyRiskPermissionKeys.MaintainRisk,\n },\n },\n} as const;\n","//#region ---- Types ----\n\n/** Lookup properties on RiskMatrixCell that can be assigned to matrix axes. */\nexport type AXMRiskMatrixAxisProperty = 'likelihoodId' | 'severityId' | 'riskRatingId';\n\nexport interface AXMRiskMatrixAxisMapping {\n rowProperty: AXMRiskMatrixAxisProperty;\n columnProperty: AXMRiskMatrixAxisProperty;\n depthProperty: AXMRiskMatrixAxisProperty;\n}\n\nexport type AXMRiskMatrixOrientation = 'likelihood-rows' | 'severity-rows';\n\n//#endregion\n\n//#region ---- Constants ----\n\nexport const RISK_MATRIX_AXIS_PROPERTIES: readonly AXMRiskMatrixAxisProperty[] = [\n 'likelihoodId',\n 'severityId',\n 'riskRatingId',\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_AXIS_MAPPING: AXMRiskMatrixAxisMapping = {\n rowProperty: 'likelihoodId',\n columnProperty: 'severityId',\n depthProperty: 'riskRatingId',\n};\n\nexport const RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS = [\n {\n id: 'likelihoodId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.likelihood-id.title',\n },\n {\n id: 'severityId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.severity-id.title',\n },\n {\n id: 'riskRatingId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.risk-rating-id.title',\n },\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_ORIENTATION: AXMRiskMatrixOrientation = 'likelihood-rows';\n\nexport const RISK_MATRIX_ORIENTATION_OPTIONS: Array<{ id: AXMRiskMatrixOrientation; title: string }> = [\n {\n id: 'likelihood-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.likelihood-rows',\n },\n {\n id: 'severity-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.severity-rows',\n },\n];\n\nexport const RISK_MATRIX_ORIENTATION_TITLE_KEYS: Record<AXMRiskMatrixOrientation, string> = {\n 'likelihood-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.likelihood-rows',\n 'severity-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.severity-rows',\n};\n\n//#endregion\n","//#region ---- Root Configuration ----\n\nconst config = {\n i18n: 'risk-management',\n module: 'RiskManagement',\n route: 'risk-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: config.route,\n name: config.module,\n title: '@risk-management:module.title',\n icon: 'fa-light fa-chart-line',\n },\n entities: {\n riskLikelihood: {\n name: 'RiskLikelihood',\n source: `${config.module}.RiskLikelihood`,\n title: '@risk-management:risk-likelihoods.entities.risk-likelihood.title',\n titlePlural: '@risk-management:risk-likelihoods.entities.risk-likelihood.plural',\n icon: 'fa-light fa-signal',\n },\n riskSeverity: {\n name: 'RiskSeverity',\n source: `${config.module}.RiskSeverity`,\n title: '@risk-management:risk-severities.entities.risk-severity.title',\n titlePlural: '@risk-management:risk-severities.entities.risk-severity.plural',\n icon: 'fa-light fa-gauge-high',\n },\n riskRating: {\n name: 'RiskRating',\n source: `${config.module}.RiskRating`,\n title: '@risk-management:risk-ratings.entities.risk-rating.title',\n titlePlural: '@risk-management:risk-ratings.entities.risk-rating.plural',\n icon: 'fa-light fa-ranking-star',\n },\n riskMatrixCell: {\n name: 'RiskMatrixCell',\n source: `${config.module}.RiskMatrixCell`,\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.title',\n titlePlural: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.plural',\n icon: 'fa-light fa-table-cells',\n },\n },\n};\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskLikelihoodEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPCategoryListItem, AXPMultiLanguageString, type AXPSpreadsheetData, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskMatrixCellEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-matrix-cell-code` (`RMC-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n likelihoodIds: string[];\n likelihoodList?: Array<{ id: string; title?: string; code?: string }>;\n /** @deprecated Use `likelihoodIds`. Kept so existing documents still resolve in widgets. */\n likelihoodId?: string[];\n severityIds: string[];\n severityList?: Array<{ id: string; title?: string; code?: string }>;\n /** @deprecated Use `severityIds`. Kept so existing documents still resolve in widgets. */\n severityId?: string[];\n /** Likelihood rows × severity columns mapped to risk rating ids. */\n matrix?: AXPSpreadsheetData;\n categoryIds?: string[];\n categories?: AXPCategoryListItem[];\n /** Registered catalog scope keys (module providers). */\n catalogScopeKeys?: string[];\n /** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */\n catalogScopes?: Array<{ name: string; title: AXPMultiLanguageString | string; cssClass?: string }>;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskRatingEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-rating-code` (`RR-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n /** Surface CSS class from `color-chooser` (`success-lighter-surface` or `axp-hex-4caf50`). */\n color?: string;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskSeverityEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './risk-matrix-axis-mapping';\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5,18 +5,18 @@ import { inject, Injectable, NgModule, input, output, signal, computed, effect,
5
5
  import { RootConfig, AXPSafetyRiskPermissionKeys, AXMRiskManagementMenuKeys, RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS, RISK_MATRIX_AXIS_PROPERTIES, DEFAULT_RISK_MATRIX_AXIS_MAPPING, DEFAULT_RISK_MATRIX_ORIENTATION, RISK_MATRIX_ORIENTATION_TITLE_KEYS } from '@acorex-platform/module-risk-management-client/contracts';
6
6
  import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
7
7
  import { AXP_MENU_PROVIDER, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';
8
- import { AXP_MODULE_MANIFEST_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';
8
+ import { AXP_MODULE_MANIFEST_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, provideLazyProvider, ensureRuntimeSurfaceClass } from '@acorex-platform/framework-client/core';
9
9
  import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER, AXPColumnWidgetComponent, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
10
10
  import { provideCommandSetups } from '@acorex-platform/framework-client/runtime';
11
11
  import { AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
12
12
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';
13
13
  import * as i2 from '@acorex/core/translation';
14
14
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
15
- import { extractValue, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
15
+ import { extractValue, resolveToSurfaceClass, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
16
16
  import { AXPSpreadsheetComponent } from '@acorex-platform/framework-client/layout/components';
17
17
  import * as i1 from '@angular/common';
18
18
  import { CommonModule } from '@angular/common';
19
- import { isEmpty, defaultTo, get, isEqual, castArray } from 'lodash';
19
+ import { isEmpty, defaultTo, get, isEqual } from 'lodash';
20
20
  import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
21
21
  import * as i1$1 from '@acorex/components/button';
22
22
  import { AXButtonModule } from '@acorex/components/button';
@@ -394,6 +394,20 @@ function toCanonicalMatrixData(display, orientation) {
394
394
  });
395
395
  return canonical;
396
396
  }
397
+ /**
398
+ * Reads selected axis ids from a risk-matrix-cell record.
399
+ * Prefers `*Ids` (multi-lookup convention), then legacy `*Id`, then joined `*List`.
400
+ */
401
+ function resolveRiskMatrixCellAxisIds(data, axis) {
402
+ if (data == null || typeof data !== 'object') {
403
+ return [];
404
+ }
405
+ const record = data;
406
+ const idsField = axis === 'likelihood' ? 'likelihoodIds' : 'severityIds';
407
+ const legacyField = axis === 'likelihood' ? 'likelihoodId' : 'severityId';
408
+ const listField = axis === 'likelihood' ? 'likelihoodList' : 'severityList';
409
+ return normalizeRiskMatrixAxisIds(record[idsField] ?? record[legacyField] ?? record[listField]);
410
+ }
397
411
  /** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */
398
412
  function normalizeRiskMatrixAxisIds(value) {
399
413
  const items = Array.isArray(value) ? value : value != null ? [value] : [];
@@ -448,19 +462,21 @@ function validateRiskMatrixAxisMapping(mapping) {
448
462
  }
449
463
  //#endregion
450
464
 
451
- //#region ---- Constants ----
452
- /** Default matrix badge colors when {@link color} is not set on a risk rating record. */
465
+ //#region ----- Imports -----
466
+ //#endregion
467
+ //#region ----- Constants -----
468
+ /** Default matrix badge surfaces when {@link color} is not set on a risk rating record. */
453
469
  const DEFAULT_RISK_RATING_BADGE_COLORS = {
454
- low: 'warning-lighter-surface',
455
- medium: 'success-lighter-surface',
470
+ low: 'success-lighter-surface',
471
+ medium: 'warning-lighter-surface',
456
472
  high: 'danger-lighter-surface',
457
473
  };
458
474
  //#endregion
459
- //#region ---- Helpers ----
475
+ //#region ----- Helpers -----
460
476
  function resolveRiskRatingBadgeColor(rating) {
461
- const color = rating.color?.trim();
462
- if (color) {
463
- return color;
477
+ const fromColor = resolveToSurfaceClass(rating.color);
478
+ if (fromColor) {
479
+ return fromColor;
464
480
  }
465
481
  const code = rating.code?.trim().toUpperCase();
466
482
  if (code?.endsWith('0001')) {
@@ -664,7 +680,7 @@ class AXMRiskManagementRiskMatrixComponent {
664
680
  return base;
665
681
  }
666
682
  const rating = item;
667
- const color = resolveRiskRatingBadgeColor(rating);
683
+ const color = ensureRuntimeSurfaceClass(resolveRiskRatingBadgeColor(rating));
668
684
  return color ? { ...base, color } : base;
669
685
  });
670
686
  if (isEmpty(selectedIds)) {
@@ -719,13 +735,13 @@ class AXMRiskManagementRiskMatrixComponent {
719
735
  this.cellChange.emit(event);
720
736
  }
721
737
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskManagementRiskMatrixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
722
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMRiskManagementRiskMatrixComponent, isStandalone: true, selector: "axm-risk-matrix", inputs: { axisMapping: { classPropertyName: "axisMapping", publicName: "axisMapping", isSignal: true, isRequired: false, transformFunction: null }, likelihoodIds: { classPropertyName: "likelihoodIds", publicName: "likelihoodIds", isSignal: true, isRequired: false, transformFunction: null }, severityIds: { classPropertyName: "severityIds", publicName: "severityIds", isSignal: true, isRequired: false, transformFunction: null }, matrixOrientation: { classPropertyName: "matrixOrientation", publicName: "matrixOrientation", 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 } }, outputs: { valueChange: "valueChange", cellChange: "cellChange" }, host: { classAttribute: "axm-risk-matrix" }, ngImport: i0, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n", styles: [".risk-matrix{display:block;height:100%;width:100%}.risk-matrix .__container,.risk-matrix .__matrix-section{display:flex;flex-direction:column}.risk-matrix .__loading,.risk-matrix .__empty-state{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:rgb(var(--ax-sys-color-on-light-surface))}\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"], outputs: ["rowsModelChange", "cellChange", "rowChange", "spreadsheetChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
738
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMRiskManagementRiskMatrixComponent, isStandalone: true, selector: "axm-risk-matrix", inputs: { axisMapping: { classPropertyName: "axisMapping", publicName: "axisMapping", isSignal: true, isRequired: false, transformFunction: null }, likelihoodIds: { classPropertyName: "likelihoodIds", publicName: "likelihoodIds", isSignal: true, isRequired: false, transformFunction: null }, severityIds: { classPropertyName: "severityIds", publicName: "severityIds", isSignal: true, isRequired: false, transformFunction: null }, matrixOrientation: { classPropertyName: "matrixOrientation", publicName: "matrixOrientation", 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 } }, outputs: { valueChange: "valueChange", cellChange: "cellChange" }, host: { classAttribute: "axm-risk-matrix" }, ngImport: i0, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n", styles: [".axm-risk-matrix{--axm-risk-matrix-line: rgb(var(--ax-sys-color-border-surface));display:block;height:100%;width:100%}.axm-risk-matrix .__container,.axm-risk-matrix .__matrix-section{display:flex;flex-direction:column}.axm-risk-matrix .__loading,.axm-risk-matrix .__empty-state{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:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-risk-matrix .axp-spreadsheet .__spreadsheet-container{border:1px solid var(--axm-risk-matrix-line)}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__corner-cell,.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__row-header{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface))}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__corner-cell,.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__row-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell{border:0;border-inline-end:1px solid var(--axm-risk-matrix-line);border-bottom:1px solid var(--axm-risk-matrix-line)}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header:last-child,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:last-child{border-inline-end:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody tr.__row:last-of-type .__row-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody tr.__row:last-of-type .__cell{border-bottom:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing){padding:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing):before{z-index:1}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value{display:block;height:100%;min-height:100%;padding:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value>*{display:block;height:100%;min-height:100%}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value [class*=-surface],.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value [class*=axp-hex-]{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;border-width:0;border-radius:0;padding:.5rem .75rem;font-size:.875rem;font-weight:500}\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"], outputs: ["rowsModelChange", "cellChange", "rowChange", "spreadsheetChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
723
739
  }
724
740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskManagementRiskMatrixComponent, decorators: [{
725
741
  type: Component,
726
742
  args: [{ selector: 'axm-risk-matrix', standalone: true, imports: [CommonModule, AXPSpreadsheetComponent, AXTranslationModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
727
743
  class: 'axm-risk-matrix',
728
- }, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n", styles: [".risk-matrix{display:block;height:100%;width:100%}.risk-matrix .__container,.risk-matrix .__matrix-section{display:flex;flex-direction:column}.risk-matrix .__loading,.risk-matrix .__empty-state{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:rgb(var(--ax-sys-color-on-light-surface))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
744
+ }, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n", styles: [".axm-risk-matrix{--axm-risk-matrix-line: rgb(var(--ax-sys-color-border-surface));display:block;height:100%;width:100%}.axm-risk-matrix .__container,.axm-risk-matrix .__matrix-section{display:flex;flex-direction:column}.axm-risk-matrix .__loading,.axm-risk-matrix .__empty-state{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:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-risk-matrix .axp-spreadsheet .__spreadsheet-container{border:1px solid var(--axm-risk-matrix-line)}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__corner-cell,.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__row-header{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface))}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__corner-cell,.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__row-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell{border:0;border-inline-end:1px solid var(--axm-risk-matrix-line);border-bottom:1px solid var(--axm-risk-matrix-line)}.axm-risk-matrix .axp-spreadsheet .__table .__thead .__header-row .__column-header:last-child,.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:last-child{border-inline-end:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody tr.__row:last-of-type .__row-header,.axm-risk-matrix .axp-spreadsheet .__table .__tbody tr.__row:last-of-type .__cell{border-bottom:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing){padding:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing):before{z-index:1}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value{display:block;height:100%;min-height:100%;padding:0}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value>*{display:block;height:100%;min-height:100%}.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value [class*=-surface],.axm-risk-matrix .axp-spreadsheet .__table .__tbody .__row .__cell:not(.__cell--editing) .__cell-value [class*=axp-hex-]{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;border-width:0;border-radius:0;padding:.5rem .75rem;font-size:.875rem;font-weight:500}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
729
745
  }], ctorParameters: () => [], propDecorators: { axisMapping: [{ type: i0.Input, args: [{ isSignal: true, alias: "axisMapping", required: false }] }], likelihoodIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "likelihoodIds", required: false }] }], severityIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "severityIds", required: false }] }], matrixOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "matrixOrientation", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }] } });
730
746
 
731
747
  //#region ---- Imports ----
@@ -748,7 +764,7 @@ class AXMRiskMatrixViewerService {
748
764
  if (isEmpty(matrixValue)) {
749
765
  return;
750
766
  }
751
- const ref = await this.layoutBuilder
767
+ await this.layoutBuilder
752
768
  .create()
753
769
  .dialog((dialog) => {
754
770
  dialog
@@ -766,13 +782,9 @@ class AXMRiskMatrixViewerService {
766
782
  .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });
767
783
  });
768
784
  });
769
- })
770
- .setActions((actions) => {
771
- actions.cancel('@general:actions.close.title');
772
785
  });
773
786
  })
774
787
  .show();
775
- ref.close();
776
788
  }
777
789
  //#endregion
778
790
  //#region ---- Utility Methods ----
@@ -918,12 +930,12 @@ class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent {
918
930
  ...(ngDevMode ? [{ debugName: "matrixOrientation" }] : /* istanbul ignore next */ []));
919
931
  this.likelihoodIds = computed(() => {
920
932
  this.contextService.changeEvent();
921
- return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));
933
+ return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');
922
934
  }, /* @ts-ignore */
923
935
  ...(ngDevMode ? [{ debugName: "likelihoodIds" }] : /* istanbul ignore next */ []));
924
936
  this.severityIds = computed(() => {
925
937
  this.contextService.changeEvent();
926
- return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));
938
+ return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');
927
939
  }, /* @ts-ignore */
928
940
  ...(ngDevMode ? [{ debugName: "severityIds" }] : /* istanbul ignore next */ []));
929
941
  this.matrixValue = computed(() => {
@@ -947,9 +959,6 @@ class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent {
947
959
  this.setValue(data);
948
960
  }
949
961
  }
950
- normalizeAxisIds(value) {
951
- return normalizeRiskMatrixAxisIds(value);
952
- }
953
962
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskMatrixWidgetEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
954
963
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMRiskMatrixWidgetEditComponent, isStandalone: true, selector: "axm-risk-matrix-widget-edit", host: { classAttribute: "block w-full" }, usesInheritance: true, ngImport: i0, template: `
955
964
  <axm-risk-matrix
@@ -1017,12 +1026,12 @@ class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent {
1017
1026
  ...(ngDevMode ? [{ debugName: "matrixOrientation" }] : /* istanbul ignore next */ []));
1018
1027
  this.likelihoodIds = computed(() => {
1019
1028
  this.contextService.changeEvent();
1020
- return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));
1029
+ return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');
1021
1030
  }, /* @ts-ignore */
1022
1031
  ...(ngDevMode ? [{ debugName: "likelihoodIds" }] : /* istanbul ignore next */ []));
1023
1032
  this.severityIds = computed(() => {
1024
1033
  this.contextService.changeEvent();
1025
- return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));
1034
+ return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');
1026
1035
  }, /* @ts-ignore */
1027
1036
  ...(ngDevMode ? [{ debugName: "severityIds" }] : /* istanbul ignore next */ []));
1028
1037
  this.matrixValue = computed(() => {
@@ -1030,16 +1039,6 @@ class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent {
1030
1039
  }, /* @ts-ignore */
1031
1040
  ...(ngDevMode ? [{ debugName: "matrixValue" }] : /* istanbul ignore next */ []));
1032
1041
  }
1033
- normalizeAxisIds(value) {
1034
- return castArray(value)
1035
- .map((item) => {
1036
- if (item != null && typeof item === 'object' && 'id' in item) {
1037
- return String(item.id);
1038
- }
1039
- return item != null ? String(item) : '';
1040
- })
1041
- .filter((id) => id.length > 0);
1042
- }
1043
1042
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskMatrixWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1044
1043
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMRiskMatrixWidgetViewComponent, isStandalone: true, selector: "axm-risk-matrix-widget-view", host: { classAttribute: "block w-full" }, usesInheritance: true, ngImport: i0, template: `
1045
1044
  <axm-risk-matrix
@@ -1085,5 +1084,5 @@ var riskMatrixWidgetView_component = /*#__PURE__*/Object.freeze({
1085
1084
  * Generated bundle index. Do not edit.
1086
1085
  */
1087
1086
 
1088
- export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, normalizeRiskMatrixAxisIds, pruneMatrixToAxes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixOrientation, resolveRiskMatrixTitleKey, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
1087
+ export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, normalizeRiskMatrixAxisIds, pruneMatrixToAxes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixCellAxisIds, resolveRiskMatrixOrientation, resolveRiskMatrixTitleKey, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
1089
1088
  //# sourceMappingURL=acorex-platform-module-risk-management-client.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-risk-management-client.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/menu.provider.ts","../../../../libs/modules/risk-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/manifest.ts","../../../../libs/modules/risk-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget.config.ts","../../../../libs/modules/risk-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/risk-management.module.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-rating-badge-color.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.html","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer.service.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer-open.util.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-column.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-edit.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-view.component.ts","../../../../libs/modules/risk-management/client/src/acorex-platform-module-risk-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} 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 {\n RootConfig,\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport { AXMRiskManagementMenuKeys } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu provider ----\n\nexport class AXMRiskManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const entities = RootConfig.entities;\n const keys = AXPSafetyRiskPermissionKeys;\n\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMRiskManagementMenuKeys.Root,\n priority: 8950,\n text: `@${RootConfig.config.i18n}:module.menus.risk`,\n icon: module.icon,\n type: 'menu',\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: AXMRiskManagementMenuKeys.RiskMatrixCells,\n text: entities.riskMatrixCell.titlePlural,\n icon: entities.riskMatrixCell.icon,\n priority: 1,\n path: this.entityService.createPath(module.name, entities.riskMatrixCell.name),\n policy: {\n permissions: [keys.MaintainRisk],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskLikelihoods,\n text: entities.riskLikelihood.titlePlural,\n icon: entities.riskLikelihood.icon,\n priority: 2,\n path: this.entityService.createPath(module.name, entities.riskLikelihood.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskSeverities,\n text: entities.riskSeverity.titlePlural,\n icon: entities.riskSeverity.icon,\n priority: 3,\n path: this.entityService.createPath(module.name, entities.riskSeverity.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskRatings,\n text: entities.riskRating.titlePlural,\n icon: entities.riskRating.icon,\n priority: 4,\n path: this.entityService.createPath(module.name, entities.riskRating.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ---- Permission Definition Provider ----\r\n\r\n/**\r\n * Registers risk capabilities into the shared Safety & Risk group.\r\n */\r\n@Injectable()\r\nexport class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPSafetyRiskPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:safety-risk.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.SafetyRisk.Root, `${G}.safety-risk.title`, `${G}.safety-risk.description`, { order: 30 });\n\n context\n .addGroup(\n groups.SafetyRisk.Risk,\n `${G}.safety-risk-risk.title`,\n `${G}.safety-risk-risk.description`,\n { parent: groups.SafetyRisk.Root, order: 20 },\n )\n .addPermission(keys.MaintainRisk, `${P}.maintain-risk.title`, `${P}.maintain-risk.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Risk Management module manifest.\n */\nexport const RiskManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'workplace-safety',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport { RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst RISK_MATRIX_CELL = `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}`;\n\nconst RISK_MATRIX_CELL_CATALOG_TARGETS = [RISK_MATRIX_CELL] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMRiskManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: RISK_CATALOG_SCOPE_HAZARD,\n title: '@risk-management:catalog-scopes.hazard.title',\n description: '@risk-management:catalog-scopes.hazard.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-triangle-exclamation',\n cssClass: 'warning-lighter-surface',\n order: 20,\n },\n {\n name: RISK_CATALOG_SCOPE_PPE_ITEMS,\n title: '@risk-management:catalog-scopes.ppe-items.title',\n description: '@risk-management:catalog-scopes.ppe-items.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-helmet-safety',\n cssClass: 'info-lighter-surface',\n order: 21,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_READONLY_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\n\n//#endregion\n\n//#region ---- Widget Config ----\n\nexport const AXMRiskMatrixWidget: AXPWidgetConfig<AXMRiskMatrixWidgetConfigType> = {\n name: 'risk-matrix-editor',\n title: 'Risk Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for mapping likelihood and severity combinations to risk ratings',\n icon: 'fa-light fa-table-cells',\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('./risk-matrix-widget-view.component').then((c) => c.AXMRiskMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./risk-matrix-widget-edit.component').then((c) => c.AXMRiskMatrixWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./risk-matrix-widget-column.component').then((c) => c.AXMRiskMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMRiskMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMRiskMatrixWidget } from './features/risk-matrix/risk-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Risk Management Widgets Provider ----\n\n@Injectable()\nexport class AXMRiskManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMRiskMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\nimport { RiskManagementManifest } from './manifest';\nimport { AXMRiskManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMRiskManagementWidgetsProvider } from './widget-definition.provider';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: RiskManagementManifest,\n multi: true,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMRiskManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMRiskManagementMenuProvider),\n ),\n \n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}:Preview`,\n command: () =>\n import('./features/risk-matrix/commands/preview-risk-matrix-cell.command').then(\n (c) => c.AXMPreviewRiskMatrixCellCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMRiskManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { extractValue } from '@acorex-platform/framework-shared/core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n DEFAULT_RISK_MATRIX_AXIS_MAPPING,\n DEFAULT_RISK_MATRIX_ORIENTATION,\n RISK_MATRIX_AXIS_PROPERTIES,\n RISK_MATRIX_ORIENTATION_TITLE_KEYS,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixAxisProperty,\n type AXMRiskMatrixOrientation,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty {\n return typeof value === 'string' && (RISK_MATRIX_AXIS_PROPERTIES as readonly string[]).includes(value);\n}\n\nexport function resolveRiskMatrixAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const rowProperty = isRiskMatrixAxisProperty(mapping?.rowProperty)\n ? mapping.rowProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.rowProperty;\n const columnProperty = isRiskMatrixAxisProperty(mapping?.columnProperty)\n ? mapping.columnProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.columnProperty;\n const depthProperty = isRiskMatrixAxisProperty(mapping?.depthProperty)\n ? mapping.depthProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.depthProperty;\n\n if (validateRiskMatrixAxisMapping({ rowProperty, columnProperty, depthProperty })) {\n return { rowProperty, columnProperty, depthProperty };\n }\n\n return { ...DEFAULT_RISK_MATRIX_AXIS_MAPPING };\n}\n\nexport function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation {\n return value === 'likelihood-rows' || value === 'severity-rows';\n}\n\n/**\n * Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).\n */\nexport function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation {\n const candidate = extractValue(value, 'id') ?? value;\n\n return isRiskMatrixOrientation(candidate) ? candidate : DEFAULT_RISK_MATRIX_ORIENTATION;\n}\n\n/** Translation key for the spreadsheet corner title (`row axis / column axis`). */\nexport function resolveRiskMatrixTitleKey(orientation?: unknown): string {\n return RISK_MATRIX_ORIENTATION_TITLE_KEYS[resolveRiskMatrixOrientation(orientation)];\n}\n\nfunction pickDefinedAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): Partial<AXMRiskMatrixAxisMapping> {\n if (!mapping) {\n return {};\n }\n\n const picked: Partial<AXMRiskMatrixAxisMapping> = {};\n\n if (isRiskMatrixAxisProperty(mapping.rowProperty)) {\n picked.rowProperty = mapping.rowProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.columnProperty)) {\n picked.columnProperty = mapping.columnProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.depthProperty)) {\n picked.depthProperty = mapping.depthProperty;\n }\n\n return picked;\n}\n\nexport function resolveRiskMatrixAxisMappingFromOrientation(\n orientation?: unknown,\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const resolvedOrientation = resolveRiskMatrixOrientation(orientation);\n\n const orientationMapping: AXMRiskMatrixAxisMapping =\n resolvedOrientation === 'severity-rows'\n ? { rowProperty: 'severityId', columnProperty: 'likelihoodId', depthProperty: 'riskRatingId' }\n : { rowProperty: 'likelihoodId', columnProperty: 'severityId', depthProperty: 'riskRatingId' };\n\n return resolveRiskMatrixAxisMapping({\n ...pickDefinedAxisMapping(mapping),\n ...orientationMapping,\n });\n}\n\n/**\n * Persisted matrix shape is always likelihood × severity → risk rating.\n * Transpose only for display when severity is shown as rows.\n */\nexport function toDisplayMatrixData(\n canonical: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return canonical;\n }\n\n const display: AXPSpreadsheetData = {};\n\n Object.entries(canonical).forEach(([likelihoodId, severityMap]) => {\n if (!severityMap) {\n return;\n }\n\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n display[severityId] ??= {};\n display[severityId][likelihoodId] = ratingId;\n });\n });\n\n return display;\n}\n\n/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */\nexport function toCanonicalMatrixData(\n display: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return display;\n }\n\n const canonical: AXPSpreadsheetData = {};\n\n Object.entries(display).forEach(([severityId, likelihoodMap]) => {\n if (!likelihoodMap) {\n return;\n }\n\n Object.entries(likelihoodMap).forEach(([likelihoodId, ratingId]) => {\n canonical[likelihoodId] ??= {};\n canonical[likelihoodId][severityId] = ratingId;\n });\n });\n\n return canonical;\n}\n\n/** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */\nexport function normalizeRiskMatrixAxisIds(value: unknown): string[] {\n const items = Array.isArray(value) ? value : value != null ? [value] : [];\n\n return items\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n}\n\n/**\n * Drops matrix entries for axes no longer selected on the record.\n * Persisted shape stays likelihood × severity → risk rating.\n */\nexport function pruneMatrixToAxes(\n matrix: AXPSpreadsheetData,\n likelihoodIds: string[],\n severityIds: string[],\n): AXPSpreadsheetData {\n const likelihoodSet = new Set(likelihoodIds);\n const severitySet = new Set(severityIds);\n const pruned: AXPSpreadsheetData = {};\n\n Object.entries(matrix ?? {}).forEach(([likelihoodId, severityMap]) => {\n if (!likelihoodSet.has(likelihoodId) || severityMap == null) {\n return;\n }\n\n const row: Record<string, string | null> = {};\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n if (severitySet.has(severityId)) {\n row[severityId] = ratingId;\n }\n });\n\n if (Object.keys(row).length > 0) {\n pruned[likelihoodId] = row;\n }\n });\n\n return pruned;\n}\n\nexport function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean {\n const rowProperty = mapping.rowProperty;\n const columnProperty = mapping.columnProperty;\n const depthProperty = mapping.depthProperty;\n\n if (!isRiskMatrixAxisProperty(rowProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(columnProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(depthProperty)) {\n return false;\n }\n\n const values = [rowProperty, columnProperty, depthProperty];\n return new Set(values).size === values.length;\n}\n\n//#endregion\n","//#region ---- Constants ----\n\n/** Default matrix badge colors when {@link color} is not set on a risk rating record. */\nexport const DEFAULT_RISK_RATING_BADGE_COLORS = {\n low: 'warning-lighter-surface',\n medium: 'success-lighter-surface',\n high: 'danger-lighter-surface',\n} as const;\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function resolveRiskRatingBadgeColor(rating: {\n code?: string;\n title?: string;\n color?: string | null;\n}): string | undefined {\n const color = rating.color?.trim();\n if (color) {\n return color;\n }\n\n const code = rating.code?.trim().toUpperCase();\n if (code?.endsWith('0001')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (code?.endsWith('0002')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (code?.endsWith('0003')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n const title = rating.title?.trim().toLowerCase();\n if (title === 'low') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (title === 'medium') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (title === 'high') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n return undefined;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetComponent,\n AXPSpreadsheetData,\n AXPSpreadsheetItem,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping, type AXMRiskMatrixAxisProperty, RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskLikelihoodEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskRatingEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskSeverityEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixTitleKey,\n toCanonicalMatrixData,\n toDisplayMatrixData,\n} from '../shared/risk-matrix-axis-mapping';\nimport { resolveRiskRatingBadgeColor } from '../shared/risk-rating-badge-color';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AxisEntityModel = {\n id: string;\n title: string;\n description?: string;\n color?: string;\n};\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix',\n standalone: true,\n imports: [CommonModule, AXPSpreadsheetComponent, AXTranslationModule],\n templateUrl: './risk-matrix.component.html',\n styleUrl: './risk-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-risk-matrix',\n },\n})\nexport class AXMRiskManagementRiskMatrixComponent {\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly likelihoodDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskLikelihood.name)\n .data<string, AXMRiskManagementRiskLikelihoodEntityModel>();\n private readonly severityDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskSeverity.name)\n .data<string, AXMRiskManagementRiskSeverityEntityModel>();\n private readonly riskRatingDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskRating.name)\n .data<string, AXMRiskManagementRiskRatingEntityModel>();\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Axis mapping. Defaults to likelihood × severity → risk rating. */\n axisMapping = input<Partial<AXMRiskMatrixAxisMapping>>({});\n\n /** Selected axis item ids from the parent matrix record. */\n likelihoodIds = input<string[] | null | undefined>(null);\n severityIds = input<string[] | null | undefined>(null);\n\n /** Controls row/column layout only; persisted matrix stays likelihood × severity. */\n matrixOrientation = input<string | null | undefined>(null);\n\n /** Matrix data: { [likelihoodId]: { [severityId]: riskRatingId } } */\n value = input<AXPSpreadsheetData>({});\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n valueChange = output<AXPSpreadsheetData>();\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n private readonly likelihoodItems = signal<AxisEntityModel[]>([]);\n private readonly severityItems = signal<AxisEntityModel[]>([]);\n private readonly depthItems = signal<AxisEntityModel[]>([]);\n private readonly hasLoadedAxesOnce = signal<boolean>(false);\n protected readonly isLoading = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly resolvedMatrixOrientation = computed(() =>\n resolveRiskMatrixOrientation(this.matrixOrientation()),\n );\n\n protected readonly resolvedAxisMapping = computed(() =>\n resolveRiskMatrixAxisMappingFromOrientation(this.resolvedMatrixOrientation(), this.axisMapping()),\n );\n\n protected readonly displayMatrix = computed(() =>\n toDisplayMatrixData(this.value(), this.resolvedMatrixOrientation()),\n );\n\n protected readonly matrixTitleKey = computed(() => resolveRiskMatrixTitleKey(this.resolvedMatrixOrientation()));\n\n protected readonly verticalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedRowItems()),\n );\n\n protected readonly horizontalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedColumnItems()),\n );\n\n protected readonly cellOptions = computed<AXPSpreadsheetItem[]>(() => this.toSpreadsheetItems(this.depthItems()));\n\n private readonly resolvedRowItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.rowProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n private readonly resolvedColumnItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.columnProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n protected readonly spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const ratingItems = this.depthItems();\n const cellOptions = this.toSpreadsheetItems(ratingItems);\n\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n cssClassField: 'color',\n dataSource: cellOptions.map((option, index) => ({\n id: option.id,\n title: option.title,\n description: option.description,\n color: ratingItems[index]?.color,\n })),\n },\n };\n\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id,\n widget: selectBoxWidget,\n }));\n });\n\n protected readonly spreadsheetRows = computed<Record<string, unknown>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.displayMatrix();\n\n return verticalTitles.map((row) => {\n const rowData: Record<string, unknown> = {\n name: row.id,\n _rowTitle: row.title,\n _rowDescription: row.description,\n };\n\n horizontalTitles.forEach((column) => {\n rowData[column.id] = matrixData[row.id]?.[column.id] ?? null;\n });\n\n return rowData;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n void this.loadMatrixAxes(likelihoodIds, severityIds);\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n private async loadMatrixAxes(\n likelihoodIds: string[] | null | undefined,\n severityIds: string[] | null | undefined,\n ): Promise<void> {\n const isInitialLoad = !this.hasLoadedAxesOnce();\n\n try {\n if (isInitialLoad) {\n this.isLoading.set(true);\n }\n\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelValue', dir: 'asc' as const }],\n };\n\n const [likelihoodResult, severityResult, depthResult] = await Promise.all([\n this.queryAxisItems('likelihoodId', query, likelihoodIds),\n this.queryAxisItems('severityId', query, severityIds),\n this.queryAxisItems('riskRatingId', query),\n ]);\n\n this.likelihoodItems.set(likelihoodResult);\n this.severityItems.set(severityResult);\n this.depthItems.set(depthResult);\n this.hasLoadedAxesOnce.set(true);\n } catch (error) {\n console.error('Error loading risk matrix axes:', error);\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n } finally {\n if (isInitialLoad) {\n this.isLoading.set(false);\n }\n }\n }\n\n private async queryAxisItems(\n property: AXMRiskMatrixAxisProperty,\n query: {\n skip: number;\n take: number;\n sort: { field: string; dir: 'asc' }[];\n },\n selectedIds?: string[] | null,\n ): Promise<AxisEntityModel[]> {\n const accessor = this.getAxisDataAccessor(property);\n const result = await accessor.query(query);\n const items = (result.items ?? []).map((item) => {\n const base = {\n id: item.id,\n title: item.title,\n description: item.description,\n };\n\n if (property !== 'riskRatingId') {\n return base;\n }\n\n const rating = item as AXMRiskManagementRiskRatingEntityModel;\n const color = resolveRiskRatingBadgeColor(rating);\n return color ? { ...base, color } : base;\n });\n\n if (isEmpty(selectedIds)) {\n return items;\n }\n\n const selectedIdSet = new Set(selectedIds);\n return items.filter((item) => selectedIdSet.has(item.id));\n }\n\n private getAxisDataAccessor(property: AXMRiskMatrixAxisProperty) {\n switch (property) {\n case 'severityId':\n return this.severityDataAccessor;\n case 'riskRatingId':\n return this.riskRatingDataAccessor;\n case 'likelihoodId':\n default:\n return this.likelihoodDataAccessor;\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n private toSpreadsheetItems(items: AxisEntityModel[]): AXPSpreadsheetItem[] {\n const resolve = (v: unknown) => this.multiLanguageResolver.resolve(v as never);\n return items.map((item) => ({\n id: item.id,\n title: resolve(item.title),\n description: item.description ? resolve(item.description) : undefined,\n }));\n }\n\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, unknown>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const rowId = row['name'] as string | undefined;\n if (!rowId) {\n return;\n }\n\n matrixData[rowId] = {};\n horizontalTitles.forEach((column) => {\n matrixData[rowId][column.id] = (row[column.id] as string | null) ?? null;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void {\n const displayMatrix = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(toCanonicalMatrixData(displayMatrix, this.resolvedMatrixOrientation()));\n }\n\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isEmpty } from 'lodash';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenOptions {\n context: Record<string, unknown>;\n matrixPath?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ---- Risk Matrix Viewer Service ----\n\n/**\n * Opens a read-only risk matrix preview dialog from row or record context.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMRiskMatrixViewerService {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async open(options: AXMRiskMatrixViewerOpenOptions): Promise<void> {\n const matrixPath = defaultTo(options.matrixPath, 'matrix');\n const matrixValue = get(options.context, matrixPath);\n\n if (isEmpty(matrixValue)) {\n return;\n }\n\n const ref = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(this.resolveDialogTitle(options.title))\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...options.context })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column');\n flex.formField('', (field) => {\n field\n .path(matrixPath)\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.close.title');\n });\n })\n .show();\n\n ref.close();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveDialogTitle(title: string | undefined): string {\n const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n return resolved || 'Risk Matrix';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';\n\nimport { AXMRiskMatrixViewerOpenOptions, AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenParams {\n context: Record<string, unknown>;\n matrixPath?: string;\n widgetOptions?: Record<string, unknown>;\n formatService: AXFormatService;\n activeLang: string;\n data?: Record<string, unknown>;\n entity?: AXPEntity | null;\n fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer Open Helper ----\n\nexport function buildRiskMatrixViewerOpenOptions(\n params: AXMRiskMatrixViewerOpenParams,\n): AXMRiskMatrixViewerOpenOptions {\n const matrixPath = params.matrixPath ?? 'matrix';\n const title = params.data\n ? resolveEntityRowDisplayTitle({\n data: params.data,\n widgetOptions: params.widgetOptions,\n formatService: params.formatService,\n activeLang: params.activeLang,\n entity: params.entity,\n })\n : '';\n\n return {\n context: params.context,\n matrixPath,\n title: title || params.fallbackTitleKey,\n };\n}\n\nexport async function openRiskMatrixViewer(\n viewer: AXMRiskMatrixViewerService,\n params: AXMRiskMatrixViewerOpenParams,\n): Promise<void> {\n await viewer.open(buildRiskMatrixViewerOpenOptions(params));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport { openRiskMatrixViewer } from './risk-matrix-viewer-open.util';\nimport { AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Component: Risk Matrix Widget Column ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-column',\n imports: [AXButtonModule, AXDecoratorModule],\n template: `\n <div class=\"flex items-center gap-2\">\n @if (hasMatrix()) {\n <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n <ax-icon>\n <i class=\"fa-light fa-table-cells\"></i>\n </ax-icon>\n </ax-button>\n } @else {\n <span>-</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {\n //#region ---- Services & Dependencies ----\n\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n private readonly formatService = inject(AXFormatService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n hasMatrix(): boolean {\n return !isEmpty(this.rawValue);\n }\n\n async showPopup(): Promise<void> {\n const rowData = this.rowData as Record<string, unknown> | undefined;\n if (!rowData || isEmpty(this.rawValue)) {\n return;\n }\n\n await openRiskMatrixViewer(this.riskMatrixViewer, {\n context: rowData,\n matrixPath: this.path,\n data: rowData,\n widgetOptions: { ...(this.options as Record<string, unknown>) },\n formatService: this.formatService,\n activeLang: this.translation.getActiveLang(),\n fallbackTitleKey: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix.title',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ViewEncapsulation } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n normalizeRiskMatrixAxisIds,\n pruneMatrixToAxes,\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-edit',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n super();\n\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n const matrix = (this.getValue() as AXPSpreadsheetData) ?? {};\n const prunedMatrix = pruneMatrixToAxes(matrix, likelihoodIds, severityIds);\n\n if (!isEqual(matrix, prunedMatrix)) {\n this.setValue(prunedMatrix);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n return options?.['readonly'] ?? false;\n });\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n private normalizeAxisIds(value: unknown): string[] {\n return normalizeRiskMatrixAxisIds(value);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { castArray, get } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-view',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Computed Properties ----\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n private normalizeAxisIds(value: unknown): string[] {\n return castArray(value)\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n }\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-risk-management-client.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/menu.provider.ts","../../../../libs/modules/risk-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/manifest.ts","../../../../libs/modules/risk-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget.config.ts","../../../../libs/modules/risk-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/risk-management.module.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-rating-badge-color.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.html","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer.service.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer-open.util.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-column.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-edit.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-view.component.ts","../../../../libs/modules/risk-management/client/src/acorex-platform-module-risk-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} 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 {\n RootConfig,\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport { AXMRiskManagementMenuKeys } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu provider ----\n\nexport class AXMRiskManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const entities = RootConfig.entities;\n const keys = AXPSafetyRiskPermissionKeys;\n\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMRiskManagementMenuKeys.Root,\n priority: 8950,\n text: `@${RootConfig.config.i18n}:module.menus.risk`,\n icon: module.icon,\n type: 'menu',\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: AXMRiskManagementMenuKeys.RiskMatrixCells,\n text: entities.riskMatrixCell.titlePlural,\n icon: entities.riskMatrixCell.icon,\n priority: 1,\n path: this.entityService.createPath(module.name, entities.riskMatrixCell.name),\n policy: {\n permissions: [keys.MaintainRisk],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskLikelihoods,\n text: entities.riskLikelihood.titlePlural,\n icon: entities.riskLikelihood.icon,\n priority: 2,\n path: this.entityService.createPath(module.name, entities.riskLikelihood.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskSeverities,\n text: entities.riskSeverity.titlePlural,\n icon: entities.riskSeverity.icon,\n priority: 3,\n path: this.entityService.createPath(module.name, entities.riskSeverity.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskRatings,\n text: entities.riskRating.titlePlural,\n icon: entities.riskRating.icon,\n priority: 4,\n path: this.entityService.createPath(module.name, entities.riskRating.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ---- Permission Definition Provider ----\r\n\r\n/**\r\n * Registers risk capabilities into the shared Safety & Risk group.\r\n */\r\n@Injectable()\r\nexport class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPSafetyRiskPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:safety-risk.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.SafetyRisk.Root, `${G}.safety-risk.title`, `${G}.safety-risk.description`, { order: 30 });\n\n context\n .addGroup(\n groups.SafetyRisk.Risk,\n `${G}.safety-risk-risk.title`,\n `${G}.safety-risk-risk.description`,\n { parent: groups.SafetyRisk.Root, order: 20 },\n )\n .addPermission(keys.MaintainRisk, `${P}.maintain-risk.title`, `${P}.maintain-risk.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Risk Management module manifest.\n */\nexport const RiskManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'workplace-safety',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport { RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst RISK_MATRIX_CELL = `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}`;\n\nconst RISK_MATRIX_CELL_CATALOG_TARGETS = [RISK_MATRIX_CELL] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMRiskManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: RISK_CATALOG_SCOPE_HAZARD,\n title: '@risk-management:catalog-scopes.hazard.title',\n description: '@risk-management:catalog-scopes.hazard.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-triangle-exclamation',\n cssClass: 'warning-lighter-surface',\n order: 20,\n },\n {\n name: RISK_CATALOG_SCOPE_PPE_ITEMS,\n title: '@risk-management:catalog-scopes.ppe-items.title',\n description: '@risk-management:catalog-scopes.ppe-items.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-helmet-safety',\n cssClass: 'info-lighter-surface',\n order: 21,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_READONLY_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\n\n//#endregion\n\n//#region ---- Widget Config ----\n\nexport const AXMRiskMatrixWidget: AXPWidgetConfig<AXMRiskMatrixWidgetConfigType> = {\n name: 'risk-matrix-editor',\n title: 'Risk Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for mapping likelihood and severity combinations to risk ratings',\n icon: 'fa-light fa-table-cells',\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('./risk-matrix-widget-view.component').then((c) => c.AXMRiskMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./risk-matrix-widget-edit.component').then((c) => c.AXMRiskMatrixWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./risk-matrix-widget-column.component').then((c) => c.AXMRiskMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMRiskMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMRiskMatrixWidget } from './features/risk-matrix/risk-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Risk Management Widgets Provider ----\n\n@Injectable()\nexport class AXMRiskManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMRiskMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\nimport { RiskManagementManifest } from './manifest';\nimport { AXMRiskManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMRiskManagementWidgetsProvider } from './widget-definition.provider';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: RiskManagementManifest,\n multi: true,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMRiskManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMRiskManagementMenuProvider),\n ),\n \n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}:Preview`,\n command: () =>\n import('./features/risk-matrix/commands/preview-risk-matrix-cell.command').then(\n (c) => c.AXMPreviewRiskMatrixCellCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMRiskManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { extractValue } from '@acorex-platform/framework-shared/core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n DEFAULT_RISK_MATRIX_AXIS_MAPPING,\n DEFAULT_RISK_MATRIX_ORIENTATION,\n RISK_MATRIX_AXIS_PROPERTIES,\n RISK_MATRIX_ORIENTATION_TITLE_KEYS,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixAxisProperty,\n type AXMRiskMatrixOrientation,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty {\n return typeof value === 'string' && (RISK_MATRIX_AXIS_PROPERTIES as readonly string[]).includes(value);\n}\n\nexport function resolveRiskMatrixAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const rowProperty = isRiskMatrixAxisProperty(mapping?.rowProperty)\n ? mapping.rowProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.rowProperty;\n const columnProperty = isRiskMatrixAxisProperty(mapping?.columnProperty)\n ? mapping.columnProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.columnProperty;\n const depthProperty = isRiskMatrixAxisProperty(mapping?.depthProperty)\n ? mapping.depthProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.depthProperty;\n\n if (validateRiskMatrixAxisMapping({ rowProperty, columnProperty, depthProperty })) {\n return { rowProperty, columnProperty, depthProperty };\n }\n\n return { ...DEFAULT_RISK_MATRIX_AXIS_MAPPING };\n}\n\nexport function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation {\n return value === 'likelihood-rows' || value === 'severity-rows';\n}\n\n/**\n * Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).\n */\nexport function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation {\n const candidate = extractValue(value, 'id') ?? value;\n\n return isRiskMatrixOrientation(candidate) ? candidate : DEFAULT_RISK_MATRIX_ORIENTATION;\n}\n\n/** Translation key for the spreadsheet corner title (`row axis / column axis`). */\nexport function resolveRiskMatrixTitleKey(orientation?: unknown): string {\n return RISK_MATRIX_ORIENTATION_TITLE_KEYS[resolveRiskMatrixOrientation(orientation)];\n}\n\nfunction pickDefinedAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): Partial<AXMRiskMatrixAxisMapping> {\n if (!mapping) {\n return {};\n }\n\n const picked: Partial<AXMRiskMatrixAxisMapping> = {};\n\n if (isRiskMatrixAxisProperty(mapping.rowProperty)) {\n picked.rowProperty = mapping.rowProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.columnProperty)) {\n picked.columnProperty = mapping.columnProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.depthProperty)) {\n picked.depthProperty = mapping.depthProperty;\n }\n\n return picked;\n}\n\nexport function resolveRiskMatrixAxisMappingFromOrientation(\n orientation?: unknown,\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const resolvedOrientation = resolveRiskMatrixOrientation(orientation);\n\n const orientationMapping: AXMRiskMatrixAxisMapping =\n resolvedOrientation === 'severity-rows'\n ? { rowProperty: 'severityId', columnProperty: 'likelihoodId', depthProperty: 'riskRatingId' }\n : { rowProperty: 'likelihoodId', columnProperty: 'severityId', depthProperty: 'riskRatingId' };\n\n return resolveRiskMatrixAxisMapping({\n ...pickDefinedAxisMapping(mapping),\n ...orientationMapping,\n });\n}\n\n/**\n * Persisted matrix shape is always likelihood × severity → risk rating.\n * Transpose only for display when severity is shown as rows.\n */\nexport function toDisplayMatrixData(\n canonical: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return canonical;\n }\n\n const display: AXPSpreadsheetData = {};\n\n Object.entries(canonical).forEach(([likelihoodId, severityMap]) => {\n if (!severityMap) {\n return;\n }\n\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n display[severityId] ??= {};\n display[severityId][likelihoodId] = ratingId;\n });\n });\n\n return display;\n}\n\n/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */\nexport function toCanonicalMatrixData(\n display: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return display;\n }\n\n const canonical: AXPSpreadsheetData = {};\n\n Object.entries(display).forEach(([severityId, likelihoodMap]) => {\n if (!likelihoodMap) {\n return;\n }\n\n Object.entries(likelihoodMap).forEach(([likelihoodId, ratingId]) => {\n canonical[likelihoodId] ??= {};\n canonical[likelihoodId][severityId] = ratingId;\n });\n });\n\n return canonical;\n}\n\n/**\n * Reads selected axis ids from a risk-matrix-cell record.\n * Prefers `*Ids` (multi-lookup convention), then legacy `*Id`, then joined `*List`.\n */\nexport function resolveRiskMatrixCellAxisIds(\n data: unknown,\n axis: 'likelihood' | 'severity',\n): string[] {\n if (data == null || typeof data !== 'object') {\n return [];\n }\n\n const record = data as Record<string, unknown>;\n const idsField = axis === 'likelihood' ? 'likelihoodIds' : 'severityIds';\n const legacyField = axis === 'likelihood' ? 'likelihoodId' : 'severityId';\n const listField = axis === 'likelihood' ? 'likelihoodList' : 'severityList';\n\n return normalizeRiskMatrixAxisIds(record[idsField] ?? record[legacyField] ?? record[listField]);\n}\n\n/** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */\nexport function normalizeRiskMatrixAxisIds(value: unknown): string[] {\n const items = Array.isArray(value) ? value : value != null ? [value] : [];\n\n return items\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n}\n\n/**\n * Drops matrix entries for axes no longer selected on the record.\n * Persisted shape stays likelihood × severity → risk rating.\n */\nexport function pruneMatrixToAxes(\n matrix: AXPSpreadsheetData,\n likelihoodIds: string[],\n severityIds: string[],\n): AXPSpreadsheetData {\n const likelihoodSet = new Set(likelihoodIds);\n const severitySet = new Set(severityIds);\n const pruned: AXPSpreadsheetData = {};\n\n Object.entries(matrix ?? {}).forEach(([likelihoodId, severityMap]) => {\n if (!likelihoodSet.has(likelihoodId) || severityMap == null) {\n return;\n }\n\n const row: Record<string, string | null> = {};\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n if (severitySet.has(severityId)) {\n row[severityId] = ratingId;\n }\n });\n\n if (Object.keys(row).length > 0) {\n pruned[likelihoodId] = row;\n }\n });\n\n return pruned;\n}\n\nexport function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean {\n const rowProperty = mapping.rowProperty;\n const columnProperty = mapping.columnProperty;\n const depthProperty = mapping.depthProperty;\n\n if (!isRiskMatrixAxisProperty(rowProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(columnProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(depthProperty)) {\n return false;\n }\n\n const values = [rowProperty, columnProperty, depthProperty];\n return new Set(values).size === values.length;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { resolveToSurfaceClass } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Default matrix badge surfaces when {@link color} is not set on a risk rating record. */\nexport const DEFAULT_RISK_RATING_BADGE_COLORS = {\n low: 'success-lighter-surface',\n medium: 'warning-lighter-surface',\n high: 'danger-lighter-surface',\n} as const;\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveRiskRatingBadgeColor(rating: {\n code?: string;\n title?: string;\n color?: string | null;\n}): string | undefined {\n const fromColor = resolveToSurfaceClass(rating.color);\n if (fromColor) {\n return fromColor;\n }\n\n const code = rating.code?.trim().toUpperCase();\n if (code?.endsWith('0001')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (code?.endsWith('0002')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (code?.endsWith('0003')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n const title = rating.title?.trim().toLowerCase();\n if (title === 'low') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (title === 'medium') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (title === 'high') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n return undefined;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetComponent,\n AXPSpreadsheetData,\n AXPSpreadsheetItem,\n} from '@acorex-platform/framework-client/layout/components';\nimport { ensureRuntimeSurfaceClass } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping, type AXMRiskMatrixAxisProperty, RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskLikelihoodEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskRatingEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskSeverityEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixTitleKey,\n toCanonicalMatrixData,\n toDisplayMatrixData,\n} from '../shared/risk-matrix-axis-mapping';\nimport { resolveRiskRatingBadgeColor } from '../shared/risk-rating-badge-color';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AxisEntityModel = {\n id: string;\n title: string;\n description?: string;\n color?: string;\n};\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix',\n standalone: true,\n imports: [CommonModule, AXPSpreadsheetComponent, AXTranslationModule],\n templateUrl: './risk-matrix.component.html',\n styleUrl: './risk-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-risk-matrix',\n },\n})\nexport class AXMRiskManagementRiskMatrixComponent {\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly likelihoodDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskLikelihood.name)\n .data<string, AXMRiskManagementRiskLikelihoodEntityModel>();\n private readonly severityDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskSeverity.name)\n .data<string, AXMRiskManagementRiskSeverityEntityModel>();\n private readonly riskRatingDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskRating.name)\n .data<string, AXMRiskManagementRiskRatingEntityModel>();\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Axis mapping. Defaults to likelihood × severity → risk rating. */\n axisMapping = input<Partial<AXMRiskMatrixAxisMapping>>({});\n\n /** Selected axis item ids from the parent matrix record. */\n likelihoodIds = input<string[] | null | undefined>(null);\n severityIds = input<string[] | null | undefined>(null);\n\n /** Controls row/column layout only; persisted matrix stays likelihood × severity. */\n matrixOrientation = input<string | null | undefined>(null);\n\n /** Matrix data: { [likelihoodId]: { [severityId]: riskRatingId } } */\n value = input<AXPSpreadsheetData>({});\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n valueChange = output<AXPSpreadsheetData>();\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n private readonly likelihoodItems = signal<AxisEntityModel[]>([]);\n private readonly severityItems = signal<AxisEntityModel[]>([]);\n private readonly depthItems = signal<AxisEntityModel[]>([]);\n private readonly hasLoadedAxesOnce = signal<boolean>(false);\n protected readonly isLoading = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly resolvedMatrixOrientation = computed(() =>\n resolveRiskMatrixOrientation(this.matrixOrientation()),\n );\n\n protected readonly resolvedAxisMapping = computed(() =>\n resolveRiskMatrixAxisMappingFromOrientation(this.resolvedMatrixOrientation(), this.axisMapping()),\n );\n\n protected readonly displayMatrix = computed(() =>\n toDisplayMatrixData(this.value(), this.resolvedMatrixOrientation()),\n );\n\n protected readonly matrixTitleKey = computed(() => resolveRiskMatrixTitleKey(this.resolvedMatrixOrientation()));\n\n protected readonly verticalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedRowItems()),\n );\n\n protected readonly horizontalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedColumnItems()),\n );\n\n protected readonly cellOptions = computed<AXPSpreadsheetItem[]>(() => this.toSpreadsheetItems(this.depthItems()));\n\n private readonly resolvedRowItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.rowProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n private readonly resolvedColumnItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.columnProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n protected readonly spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const ratingItems = this.depthItems();\n const cellOptions = this.toSpreadsheetItems(ratingItems);\n\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n cssClassField: 'color',\n dataSource: cellOptions.map((option, index) => ({\n id: option.id,\n title: option.title,\n description: option.description,\n color: ratingItems[index]?.color,\n })),\n },\n };\n\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id,\n widget: selectBoxWidget,\n }));\n });\n\n protected readonly spreadsheetRows = computed<Record<string, unknown>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.displayMatrix();\n\n return verticalTitles.map((row) => {\n const rowData: Record<string, unknown> = {\n name: row.id,\n _rowTitle: row.title,\n _rowDescription: row.description,\n };\n\n horizontalTitles.forEach((column) => {\n rowData[column.id] = matrixData[row.id]?.[column.id] ?? null;\n });\n\n return rowData;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n void this.loadMatrixAxes(likelihoodIds, severityIds);\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n private async loadMatrixAxes(\n likelihoodIds: string[] | null | undefined,\n severityIds: string[] | null | undefined,\n ): Promise<void> {\n const isInitialLoad = !this.hasLoadedAxesOnce();\n\n try {\n if (isInitialLoad) {\n this.isLoading.set(true);\n }\n\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelValue', dir: 'asc' as const }],\n };\n\n const [likelihoodResult, severityResult, depthResult] = await Promise.all([\n this.queryAxisItems('likelihoodId', query, likelihoodIds),\n this.queryAxisItems('severityId', query, severityIds),\n this.queryAxisItems('riskRatingId', query),\n ]);\n\n this.likelihoodItems.set(likelihoodResult);\n this.severityItems.set(severityResult);\n this.depthItems.set(depthResult);\n this.hasLoadedAxesOnce.set(true);\n } catch (error) {\n console.error('Error loading risk matrix axes:', error);\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n } finally {\n if (isInitialLoad) {\n this.isLoading.set(false);\n }\n }\n }\n\n private async queryAxisItems(\n property: AXMRiskMatrixAxisProperty,\n query: {\n skip: number;\n take: number;\n sort: { field: string; dir: 'asc' }[];\n },\n selectedIds?: string[] | null,\n ): Promise<AxisEntityModel[]> {\n const accessor = this.getAxisDataAccessor(property);\n const result = await accessor.query(query);\n const items = (result.items ?? []).map((item) => {\n const base = {\n id: item.id,\n title: item.title,\n description: item.description,\n };\n\n if (property !== 'riskRatingId') {\n return base;\n }\n\n const rating = item as AXMRiskManagementRiskRatingEntityModel;\n const color = ensureRuntimeSurfaceClass(resolveRiskRatingBadgeColor(rating));\n return color ? { ...base, color } : base;\n });\n\n if (isEmpty(selectedIds)) {\n return items;\n }\n\n const selectedIdSet = new Set(selectedIds);\n return items.filter((item) => selectedIdSet.has(item.id));\n }\n\n private getAxisDataAccessor(property: AXMRiskMatrixAxisProperty) {\n switch (property) {\n case 'severityId':\n return this.severityDataAccessor;\n case 'riskRatingId':\n return this.riskRatingDataAccessor;\n case 'likelihoodId':\n default:\n return this.likelihoodDataAccessor;\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n private toSpreadsheetItems(items: AxisEntityModel[]): AXPSpreadsheetItem[] {\n const resolve = (v: unknown) => this.multiLanguageResolver.resolve(v as never);\n return items.map((item) => ({\n id: item.id,\n title: resolve(item.title),\n description: item.description ? resolve(item.description) : undefined,\n }));\n }\n\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, unknown>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const rowId = row['name'] as string | undefined;\n if (!rowId) {\n return;\n }\n\n matrixData[rowId] = {};\n horizontalTitles.forEach((column) => {\n matrixData[rowId][column.id] = (row[column.id] as string | null) ?? null;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void {\n const displayMatrix = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(toCanonicalMatrixData(displayMatrix, this.resolvedMatrixOrientation()));\n }\n\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isEmpty } from 'lodash';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenOptions {\n context: Record<string, unknown>;\n matrixPath?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ---- Risk Matrix Viewer Service ----\n\n/**\n * Opens a read-only risk matrix preview dialog from row or record context.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMRiskMatrixViewerService {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async open(options: AXMRiskMatrixViewerOpenOptions): Promise<void> {\n const matrixPath = defaultTo(options.matrixPath, 'matrix');\n const matrixValue = get(options.context, matrixPath);\n\n if (isEmpty(matrixValue)) {\n return;\n }\n\n await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(this.resolveDialogTitle(options.title))\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...options.context })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column');\n flex.formField('', (field) => {\n field\n .path(matrixPath)\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n });\n });\n })\n .show();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveDialogTitle(title: string | undefined): string {\n const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n return resolved || 'Risk Matrix';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';\n\nimport { AXMRiskMatrixViewerOpenOptions, AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenParams {\n context: Record<string, unknown>;\n matrixPath?: string;\n widgetOptions?: Record<string, unknown>;\n formatService: AXFormatService;\n activeLang: string;\n data?: Record<string, unknown>;\n entity?: AXPEntity | null;\n fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer Open Helper ----\n\nexport function buildRiskMatrixViewerOpenOptions(\n params: AXMRiskMatrixViewerOpenParams,\n): AXMRiskMatrixViewerOpenOptions {\n const matrixPath = params.matrixPath ?? 'matrix';\n const title = params.data\n ? resolveEntityRowDisplayTitle({\n data: params.data,\n widgetOptions: params.widgetOptions,\n formatService: params.formatService,\n activeLang: params.activeLang,\n entity: params.entity,\n })\n : '';\n\n return {\n context: params.context,\n matrixPath,\n title: title || params.fallbackTitleKey,\n };\n}\n\nexport async function openRiskMatrixViewer(\n viewer: AXMRiskMatrixViewerService,\n params: AXMRiskMatrixViewerOpenParams,\n): Promise<void> {\n await viewer.open(buildRiskMatrixViewerOpenOptions(params));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport { openRiskMatrixViewer } from './risk-matrix-viewer-open.util';\nimport { AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Component: Risk Matrix Widget Column ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-column',\n imports: [AXButtonModule, AXDecoratorModule],\n template: `\n <div class=\"flex items-center gap-2\">\n @if (hasMatrix()) {\n <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n <ax-icon>\n <i class=\"fa-light fa-table-cells\"></i>\n </ax-icon>\n </ax-button>\n } @else {\n <span>-</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {\n //#region ---- Services & Dependencies ----\n\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n private readonly formatService = inject(AXFormatService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n hasMatrix(): boolean {\n return !isEmpty(this.rawValue);\n }\n\n async showPopup(): Promise<void> {\n const rowData = this.rowData as Record<string, unknown> | undefined;\n if (!rowData || isEmpty(this.rawValue)) {\n return;\n }\n\n await openRiskMatrixViewer(this.riskMatrixViewer, {\n context: rowData,\n matrixPath: this.path,\n data: rowData,\n widgetOptions: { ...(this.options as Record<string, unknown>) },\n formatService: this.formatService,\n activeLang: this.translation.getActiveLang(),\n fallbackTitleKey: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix.title',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ViewEncapsulation } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n pruneMatrixToAxes,\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixCellAxisIds,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-edit',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n super();\n\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n const matrix = (this.getValue() as AXPSpreadsheetData) ?? {};\n const prunedMatrix = pruneMatrixToAxes(matrix, likelihoodIds, severityIds);\n\n if (!isEqual(matrix, prunedMatrix)) {\n this.setValue(prunedMatrix);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n return options?.['readonly'] ?? false;\n });\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixCellAxisIds,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-view',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Computed Properties ----\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-risk-management-client",
3
- "version": "0.0.28",
3
+ "version": "0.0.32",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0 || ^22.0.0",
@@ -148,18 +148,22 @@ interface AXMRiskManagementRiskMatrixCellEntityModel extends AXPEntityModel<stri
148
148
  /** Business code from identifier rule `risk-matrix-cell-code` (`RMC-{date:YYYY}-{seq:4}`). */
149
149
  code: string;
150
150
  title: string;
151
- likelihoodId: string[];
152
- likelihood?: Array<{
151
+ likelihoodIds: string[];
152
+ likelihoodList?: Array<{
153
153
  id: string;
154
154
  title?: string;
155
155
  code?: string;
156
156
  }>;
157
- severityId: string[];
158
- severity?: Array<{
157
+ /** @deprecated Use `likelihoodIds`. Kept so existing documents still resolve in widgets. */
158
+ likelihoodId?: string[];
159
+ severityIds: string[];
160
+ severityList?: Array<{
159
161
  id: string;
160
162
  title?: string;
161
163
  code?: string;
162
164
  }>;
165
+ /** @deprecated Use `severityIds`. Kept so existing documents still resolve in widgets. */
166
+ severityId?: string[];
163
167
  /** Likelihood rows × severity columns mapped to risk rating ids. */
164
168
  matrix?: AXPSpreadsheetData;
165
169
  categoryIds?: string[];
@@ -182,7 +186,7 @@ interface AXMRiskManagementRiskRatingEntityModel extends AXPEntityModel<string>
182
186
  title: string;
183
187
  description?: string;
184
188
  levelValue: number;
185
- /** Color from `material-design` palette (`color` plugin, free mode). */
189
+ /** Surface CSS class from `color-chooser` (`success-lighter-surface` or `axp-hex-4caf50`). */
186
190
  color?: string;
187
191
  isArchived?: boolean;
188
192
  archivedAt?: Date | string;
@@ -109,7 +109,6 @@ declare class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<A
109
109
  protected severityIds: _angular_core.Signal<string[]>;
110
110
  protected matrixValue: _angular_core.Signal<AXPSpreadsheetData>;
111
111
  protected handleValueChange(data: AXPSpreadsheetData): void;
112
- private normalizeAxisIds;
113
112
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetEditComponent, never>;
114
113
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetEditComponent, "axm-risk-matrix-widget-edit", never, {}, {}, never, never, true, never>;
115
114
  }
@@ -120,7 +119,6 @@ declare class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<A
120
119
  protected likelihoodIds: _angular_core.Signal<string[]>;
121
120
  protected severityIds: _angular_core.Signal<string[]>;
122
121
  protected matrixValue: _angular_core.Signal<AXPSpreadsheetData>;
123
- private normalizeAxisIds;
124
122
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetViewComponent, never>;
125
123
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetViewComponent, "axm-risk-matrix-widget-view", never, {}, {}, never, never, true, never>;
126
124
  }
@@ -142,6 +140,11 @@ declare function resolveRiskMatrixAxisMappingFromOrientation(orientation?: unkno
142
140
  declare function toDisplayMatrixData(canonical: AXPSpreadsheetData, orientation?: unknown): AXPSpreadsheetData;
143
141
  /** Converts display-oriented matrix data back to canonical likelihood × severity storage. */
144
142
  declare function toCanonicalMatrixData(display: AXPSpreadsheetData, orientation?: unknown): AXPSpreadsheetData;
143
+ /**
144
+ * Reads selected axis ids from a risk-matrix-cell record.
145
+ * Prefers `*Ids` (multi-lookup convention), then legacy `*Id`, then joined `*List`.
146
+ */
147
+ declare function resolveRiskMatrixCellAxisIds(data: unknown, axis: 'likelihood' | 'severity'): string[];
145
148
  /** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */
146
149
  declare function normalizeRiskMatrixAxisIds(value: unknown): string[];
147
150
  /**
@@ -151,5 +154,5 @@ declare function normalizeRiskMatrixAxisIds(value: unknown): string[];
151
154
  declare function pruneMatrixToAxes(matrix: AXPSpreadsheetData, likelihoodIds: string[], severityIds: string[]): AXPSpreadsheetData;
152
155
  declare function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean;
153
156
 
154
- export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, normalizeRiskMatrixAxisIds, pruneMatrixToAxes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixOrientation, resolveRiskMatrixTitleKey, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
157
+ export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, normalizeRiskMatrixAxisIds, pruneMatrixToAxes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixCellAxisIds, resolveRiskMatrixOrientation, resolveRiskMatrixTitleKey, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
155
158
  export type { AXMRiskMatrixViewerOpenOptions };