@acorex-platform/module-organization-management-client 0.0.32 → 0.0.37

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.
Files changed (110) hide show
  1. package/fesm2022/{acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.mjs → acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-ZM6X7IDO.mjs} +11 -11
  2. package/fesm2022/{acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.mjs.map → acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-ZM6X7IDO.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-organization-management-client-add-business-unit-to-business-unit.command-CA2uZQyC.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-module-organization-management-client-add-position-to-business-unit.command-F7jD3jKs.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-organization-management-client-add-team-to-business-unit.command-BLQFjhS5.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-business-unit-type.mjs +318 -0
  7. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-business-unit-type.mjs.map +1 -0
  8. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-business-unit.mjs +516 -0
  9. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-business-unit.mjs.map +1 -0
  10. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-chart.mjs +314 -0
  11. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-chart.mjs.map +1 -0
  12. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-company.mjs +250 -0
  13. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-company.mjs.map +1 -0
  14. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-job-definition.mjs +439 -0
  15. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-job-definition.mjs.map +1 -0
  16. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-job-level.mjs +385 -0
  17. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-job-level.mjs.map +1 -0
  18. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-position.mjs +657 -0
  19. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-position.mjs.map +1 -0
  20. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-responsibility-level.mjs +248 -0
  21. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-responsibility-level.mjs.map +1 -0
  22. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-responsibility.mjs +317 -0
  23. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-responsibility.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-business-unit.mjs +413 -0
  25. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-business-unit.mjs.map +1 -0
  26. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-member-role.mjs +220 -0
  27. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-member-role.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-member.mjs +366 -0
  29. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team-member.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team.mjs +421 -0
  31. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entities-team.mjs.map +1 -0
  32. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-acorex-platform-module-organization-management-client-contracts-entity-catalog-vMiwmkDK.mjs +146 -0
  33. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-acorex-platform-module-organization-management-client-contracts-entity-catalog-vMiwmkDK.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-business-unit-type.entity-BmhCZeXd.mjs +203 -0
  35. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-business-unit-type.entity-BmhCZeXd.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-business-unit.entity-CIPmfbsM.mjs +401 -0
  37. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-business-unit.entity-CIPmfbsM.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-chart.entity-sg_rI9It.mjs +199 -0
  39. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-chart.entity-sg_rI9It.mjs.map +1 -0
  40. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-company.entity-BSDO_7eL.mjs +135 -0
  41. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-company.entity-BSDO_7eL.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-job-definition.entity-0W6OSQH-.mjs +324 -0
  43. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-job-definition.entity-0W6OSQH-.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-job-level.entity-DbMjRbn9.mjs +270 -0
  45. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-job-level.entity-DbMjRbn9.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-position.entity-BkauiyPn.mjs +542 -0
  47. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-position.entity-BkauiyPn.mjs.map +1 -0
  48. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-responsibility-level.entity-BagFwJmO.mjs +133 -0
  49. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-responsibility-level.entity-BagFwJmO.mjs.map +1 -0
  50. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-responsibility.entity-DHhT7rSq.mjs +202 -0
  51. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-responsibility.entity-DHhT7rSq.mjs.map +1 -0
  52. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-business-unit.entity-hkCAl8so.mjs +298 -0
  53. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-business-unit.entity-hkCAl8so.mjs.map +1 -0
  54. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-member-role.entity-BeGE4JUl.mjs +105 -0
  55. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-member-role.entity-BeGE4JUl.mjs.map +1 -0
  56. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-member.entity-10nYBrN4.mjs +251 -0
  57. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team-member.entity-10nYBrN4.mjs.map +1 -0
  58. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team.entity-Bygn5B_k.mjs +306 -0
  59. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog-team.entity-Bygn5B_k.mjs.map +1 -0
  60. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog.mjs +2 -0
  61. package/fesm2022/acorex-platform-module-organization-management-client-contracts-entity-catalog.mjs.map +1 -0
  62. package/fesm2022/acorex-platform-module-organization-management-client-contracts.mjs.map +1 -1
  63. package/fesm2022/acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs.map +1 -1
  64. package/fesm2022/acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs.map +1 -1
  65. package/fesm2022/acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs.map +1 -1
  66. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-XH_rXGwz.mjs} +2 -2
  67. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs.map → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-XH_rXGwz.mjs.map} +1 -1
  68. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs → acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-CpirrInU.mjs} +2 -2
  69. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs.map → acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-CpirrInU.mjs.map} +1 -1
  70. package/fesm2022/acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs.map +1 -1
  71. package/fesm2022/acorex-platform-module-organization-management-client-local-entities.mjs +41 -0
  72. package/fesm2022/acorex-platform-module-organization-management-client-local-entities.mjs.map +1 -0
  73. package/fesm2022/acorex-platform-module-organization-management-client-menu.provider-BgRoEC48.mjs.map +1 -1
  74. package/fesm2022/acorex-platform-module-organization-management-client-org-chart-default-node-contribution.provider-BQ0ihb43.mjs.map +1 -1
  75. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-ZnMtkQSg.mjs} +2 -2
  76. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs.map → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-ZnMtkQSg.mjs.map} +1 -1
  77. package/fesm2022/acorex-platform-module-organization-management-client-org-chart-position-employee-node-contribution.provider-BTicXn9n.mjs.map +1 -1
  78. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-uZkFZFPA.mjs} +2 -2
  79. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs.map → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-uZkFZFPA.mjs.map} +1 -1
  80. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs → acorex-platform-module-organization-management-client-org-chart.page-BhXvP2qN.mjs} +7 -7
  81. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs.map → acorex-platform-module-organization-management-client-org-chart.page-BhXvP2qN.mjs.map} +1 -1
  82. package/fesm2022/acorex-platform-module-organization-management-client-permission-definition.provider-CiCdTBGo.mjs.map +1 -1
  83. package/fesm2022/acorex-platform-module-organization-management-client-remove-position-from-business-unit.command-BFQVTpfy.mjs.map +1 -1
  84. package/fesm2022/acorex-platform-module-organization-management-client-replace-position-assignee.command-CSgERqLG.mjs.map +1 -1
  85. package/fesm2022/acorex-platform-module-organization-management-client-responsibilities-matrix-widget-column.component-C5H0kcVW.mjs.map +1 -1
  86. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DmDQSgYC.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-m4S5GRko.mjs} +2 -2
  87. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DmDQSgYC.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-m4S5GRko.mjs.map} +1 -1
  88. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-BkLZhXhM.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-Cbua852d.mjs} +2 -2
  89. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-BkLZhXhM.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-Cbua852d.mjs.map} +1 -1
  90. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix.component-DqO6xE2p.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix.component-Cpgdxtw-.mjs} +2 -2
  91. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix.component-DqO6xE2p.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix.component-Cpgdxtw-.mjs.map} +1 -1
  92. package/fesm2022/acorex-platform-module-organization-management-client-settings.provider-B3nDm32f.mjs.map +1 -1
  93. package/fesm2022/acorex-platform-module-organization-management-client.mjs +1 -1
  94. package/package.json +62 -2
  95. package/types/acorex-platform-module-organization-management-client-contracts-entities-business-unit-type.d.ts +5 -0
  96. package/types/acorex-platform-module-organization-management-client-contracts-entities-business-unit.d.ts +5 -0
  97. package/types/acorex-platform-module-organization-management-client-contracts-entities-chart.d.ts +5 -0
  98. package/types/acorex-platform-module-organization-management-client-contracts-entities-company.d.ts +5 -0
  99. package/types/acorex-platform-module-organization-management-client-contracts-entities-job-definition.d.ts +5 -0
  100. package/types/acorex-platform-module-organization-management-client-contracts-entities-job-level.d.ts +5 -0
  101. package/types/acorex-platform-module-organization-management-client-contracts-entities-position.d.ts +5 -0
  102. package/types/acorex-platform-module-organization-management-client-contracts-entities-responsibility-level.d.ts +5 -0
  103. package/types/acorex-platform-module-organization-management-client-contracts-entities-responsibility.d.ts +5 -0
  104. package/types/acorex-platform-module-organization-management-client-contracts-entities-team-business-unit.d.ts +5 -0
  105. package/types/acorex-platform-module-organization-management-client-contracts-entities-team-member-role.d.ts +5 -0
  106. package/types/acorex-platform-module-organization-management-client-contracts-entities-team-member.d.ts +5 -0
  107. package/types/acorex-platform-module-organization-management-client-contracts-entities-team.d.ts +5 -0
  108. package/types/acorex-platform-module-organization-management-client-contracts-entity-catalog.d.ts +10 -0
  109. package/types/acorex-platform-module-organization-management-client-contracts.d.ts +2 -2
  110. package/types/acorex-platform-module-organization-management-client-local-entities.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-contracts.mjs","sources":["../../../../libs/modules/organization-management/contracts/src/commands.keys.ts","../../../../libs/modules/organization-management/contracts/src/server-commands.ts","../../../../libs/modules/organization-management/contracts/src/settings.keys.ts","../../../../libs/modules/organization-management/contracts/src/company-email-merge.util.ts","../../../../libs/modules/organization-management/contracts/src/features.keys.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/menu.keys.ts","../../../../libs/modules/organization-management/contracts/src/org-chart-merged-business-unit.configure.ts","../../../../libs/modules/organization-management/contracts/src/permission.keys.ts","../../../../libs/modules/organization-management/contracts/src/root-config.ts","../../../../libs/modules/organization-management/contracts/src/entities/chart/chart.types.ts","../../../../libs/modules/organization-management/contracts/src/index.ts","../../../../libs/modules/organization-management/contracts/src/acorex-platform-module-organization-management-client-contracts.ts"],"sourcesContent":["//#region ---- Client command keys ----\n\n/**\n * Client-side command keys (UI, dialogs, orchestration).\n * Server handlers use {@link AXMOrganizationManagementServerCommands} — never reuse these strings.\n */\nexport const AXMOrganizationManagementCommandKeys = {\n OrganizationChart: {\n Generate: 'OrganizationManagement.OrgChart:Generate',\n AddPositionToBusinessUnit: 'OrganizationManagement.OrgChart:AddPositionToBusinessUnit',\n AddBusinessUnitToBusinessUnit: 'OrganizationManagement.OrgChart:AddBusinessUnitToBusinessUnit',\n AddTeamToBusinessUnit: 'OrganizationManagement.OrgChart:AddTeamToBusinessUnit',\n RemovePositionFromBusinessUnit: 'OrganizationManagement.OrgChart:RemovePositionFromBusinessUnit',\n ReplacePositionAssignee: 'OrganizationManagement.OrgChart:ReplacePositionAssignee',\n },\n} as const;\n\n//#endregion\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Assign' as const;\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Revoke' as const;\n","//#region ---- Server command keys ----\n\n/**\n * Server-only runtime command keys for Organization Management.\n * Must stay distinct from client {@link AXMOrganizationManagementCommandKeys}.\n */\nexport const AXMOrganizationManagementServerCommands = {\n OrganizationChart: {\n Generate: 'OrganizationManagement:Server:OrgChart:Generate',\n },\n} as const;\n\n//#endregion\n","export enum AXPOrganizationManagementSettings {\n OrganizationName = 'OrganizationManagement:Setting:Organization.OrganizationName',\n OrganizationNameDisplay = 'OrganizationManagement:Setting:Organization.OrganizationNameDisplay',\n TradingName = 'OrganizationManagement:Setting:Organization.TradingName',\n TradingNameDisplay = 'OrganizationManagement:Setting:Organization.TradingNameDisplay',\n CompanyBio = 'OrganizationManagement:Setting:Organization.CompanyBio',\n BusinessRegistrationNumber = 'OrganizationManagement:Setting:Organization.BusinessRegistrationNumber',\n CompanyRegistrationNumber = 'OrganizationManagement:Setting:Organization.CompanyRegistrationNumber',\n LicenceNumber = 'OrganizationManagement:Setting:Organization.LicenceNumber',\n OrganizationID = 'OrganizationManagement:Setting:Organization.OrganizationID',\n ContactEmail = 'OrganizationManagement:Setting:Organization.ContactEmail',\n ContactPhone = 'OrganizationManagement:Setting:Organization.ContactPhone',\n OrganizationStreet1 = 'OrganizationManagement:Setting:Organization.Street1',\n OrganizationStreet2 = 'OrganizationManagement:Setting:Organization.Street2',\n OrganizationCountryId = 'OrganizationManagement:Setting:Organization.CountryId',\n OrganizationStateId = 'OrganizationManagement:Setting:Organization.StateId',\n OrganizationCityId = 'OrganizationManagement:Setting:Organization.CityId',\n OrganizationPostalCode = 'OrganizationManagement:Setting:Organization.PostalCode',\n BrandingColor = 'OrganizationManagement:Setting:Organization.Branding.Color',\n BrandingLogo = 'OrganizationManagement:Setting:Organization.Branding.Logo',\n CopyrightText = 'OrganizationManagement:Setting:Organization.CopyrightText',\n SupportEmail = 'OrganizationManagement:Setting:Organization.SupportEmail',\n InfoEmail = 'OrganizationManagement:Setting:Organization.InfoEmail',\n FaxNumber = 'OrganizationManagement:Setting:Organization.FaxNumber',\n Relations = 'OrganizationManagement:Setting:Organization.Relations',\n\n /** User preference: organization hierarchy chart mode (`structure` | `location` | `reporting` | `positionHierarchy`). */\n HierarchyChartMode = 'OrganizationManagement:Setting:User.HierarchyChart.Mode',\n /** User preference: show vacant leaf seats (structure / geographic modes). */\n HierarchyChartShowVacantLeafSeats = 'OrganizationManagement:Setting:User.HierarchyChart.ShowVacantLeafSeats',\n}\n","import { AXPOrganizationManagementSettings } from './settings.keys';\nimport {\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Company email merge from organization settings (leaf) ----\n\n/** Keys read from platform/tenant settings for company email master tokens. */\nexport const COMPANY_EMAIL_ORG_SETTING_KEYS = {\n OrganizationName: AXPOrganizationManagementSettings.OrganizationName,\n BrandingLogo: AXPOrganizationManagementSettings.BrandingLogo,\n BrandingColor: AXPOrganizationManagementSettings.BrandingColor,\n ContactEmail: AXPOrganizationManagementSettings.ContactEmail,\n ContactPhone: AXPOrganizationManagementSettings.ContactPhone,\n SupportEmail: AXPOrganizationManagementSettings.SupportEmail,\n InfoEmail: AXPOrganizationManagementSettings.InfoEmail,\n Street1: AXPOrganizationManagementSettings.OrganizationStreet1,\n Street2: AXPOrganizationManagementSettings.OrganizationStreet2,\n PostalCode: AXPOrganizationManagementSettings.OrganizationPostalCode,\n CopyrightText: AXPOrganizationManagementSettings.CopyrightText,\n} as const;\n\n/**\n * Definition default for {@link AXPOrganizationManagementSettings.CopyrightText}.\n * Used when the key is not yet persisted (inherited settings often stay client-only).\n */\nexport const AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT = '© 2026 Your Company';\n\nexport interface CompanyEmailTenantSnapshot {\n title?: AXPMultiLanguageString | null;\n email?: string | null;\n phone?: string | null;\n supportEmail?: string | null;\n logo?: string | null;\n color?: string | null;\n city?: { title?: AXPMultiLanguageString | null } | null;\n state?: { title?: AXPMultiLanguageString | null } | null;\n country?: { title?: AXPMultiLanguageString | null } | null;\n}\n\nexport interface BuildCompanyEmailMergeInput {\n settingsValues?: Record<string, unknown> | null;\n tenant?: CompanyEmailTenantSnapshot | null;\n /** UI origin for absolutizing `/assets/...` logo paths in outbound email. */\n webOrigin?: string | null;\n /**\n * API origin (no trailing slash, no `/api` suffix) used to absolutize\n * file-storage download URLs for logo file ids. Email/print callers should\n * prefer {@link inlinedLogoUrl} because download is JWT-protected.\n */\n apiOrigin?: string | null;\n /**\n * Pre-resolved logo URL (typically a `data:` URI after FileStorage inlining).\n * Takes precedence over branding / tenant logo refs.\n */\n inlinedLogoUrl?: string | null;\n /**\n * Locale for resolving multi-language organization settings / tenant title\n * (`companyName`, `copyrightText`, address region titles, …).\n * Defaults to `en-US` when omitted.\n */\n locale?: string | null;\n overrides?: Record<string, string>;\n}\n\n/** Matches platform file-storage ids (and optional `file:` cast prefix). */\nconst FILE_STORAGE_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nfunction coerceString(value: unknown, fallback = '', locale = 'en-US'): string {\n if (typeof value === 'string') {\n return value.trim() || fallback;\n }\n return resolveMultiLanguageString(value, locale).trim() || fallback;\n}\n\nfunction pickSetting(\n values: Record<string, unknown> | null | undefined,\n key: string,\n locale: string,\n): string {\n return coerceString(values?.[key], '', locale);\n}\n\nfunction normalizeLogoRef(value: string): string {\n const trimmed = value.trim();\n return trimmed.startsWith('file:') ? trimmed.slice('file:'.length).trim() : trimmed;\n}\n\nfunction isFileStorageId(value: string): boolean {\n return FILE_STORAGE_ID_PATTERN.test(normalizeLogoRef(value));\n}\n\n/** Relative download path served by `FileStorageController.download`. */\nexport function buildCompanyLogoFileDownloadPath(fileId: string): string {\n const id = normalizeLogoRef(fileId);\n return `/api/v1/file-storage/download/${encodeURIComponent(id)}`;\n}\n\nconst FILE_DOWNLOAD_ID_PATTERN =\n /\\/file-storage\\/download\\/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i;\n\n/**\n * File-storage id from a branding logo setting, tenant.logo, or download URL.\n * Used by the server to inline the binary as a data URI (download is JWT-protected).\n */\nexport function extractCompanyLogoFileId(value: unknown): string | undefined {\n const ref = extractLogoRef(value);\n if (!ref) {\n return undefined;\n }\n const fromPath = ref.match(FILE_DOWNLOAD_ID_PATTERN)?.[1];\n if (fromPath && isFileStorageId(fromPath)) {\n return normalizeLogoRef(fromPath);\n }\n return isFileStorageId(ref) ? normalizeLogoRef(ref) : undefined;\n}\n\nfunction extractLogoRef(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value && typeof value === 'object') {\n const record = value as { url?: unknown; fileId?: unknown; id?: unknown };\n return (\n coerceString(record.url, '') ||\n coerceString(record.fileId, '') ||\n coerceString(record.id, '')\n );\n }\n return '';\n}\n\nfunction buildAddressFromSettings(\n values: Record<string, unknown> | null | undefined,\n locale: string,\n): string {\n return [\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street1, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street2, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.PostalCode, locale),\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildAddressFromTenant(\n tenant: CompanyEmailTenantSnapshot | null | undefined,\n locale: string,\n): string {\n if (!tenant) {\n return '';\n }\n return [tenant.city?.title, tenant.state?.title, tenant.country?.title]\n .map((part) => coerceString(part, '', locale))\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildInitials(name: string): string {\n const parts = name.split(/\\s+/).filter(Boolean);\n if (!parts.length) {\n return 'CO';\n }\n if (parts.length === 1) {\n return parts[0]!.slice(0, 2).toUpperCase();\n }\n return `${parts[0]![0] ?? ''}${parts[1]![0] ?? ''}`.toUpperCase();\n}\n\nfunction isLocalWebOrigin(webOrigin?: string | null): boolean {\n const origin = coerceString(webOrigin, '');\n if (!origin) {\n return true;\n }\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host.endsWith('.local');\n } catch {\n return true;\n }\n}\n\n/**\n * Resolves a logo URL for template merge / preview.\n * - File-storage ids → `/api/v1/file-storage/download/{id}` (absolutized with apiOrigin).\n * Outbound email cannot fetch that URL (JWT + often localhost); pass `inlinedLogoUrl`.\n * - Keep app-relative paths (`/assets/...`) as-is for in-app preview.\n * - Absolutize asset paths only against a public (non-localhost) web origin for outbound email.\n */\nfunction resolveLogoUrl(\n logo: string,\n options: { webOrigin?: string | null; apiOrigin?: string | null } = {},\n): string {\n if (!logo) {\n return '';\n }\n if (isFileStorageId(logo)) {\n const path = buildCompanyLogoFileDownloadPath(logo);\n const apiOrigin = coerceString(options.apiOrigin, '').replace(/\\/$/, '');\n return apiOrigin ? `${apiOrigin}${path}` : path;\n }\n if (/^https?:\\/\\//i.test(logo) || logo.startsWith('data:')) {\n if (/^https?:\\/\\//i.test(logo) && isLocalWebOrigin(logo)) {\n return '';\n }\n return logo;\n }\n if (logo.startsWith('/')) {\n if (isLocalWebOrigin(options.webOrigin)) {\n return logo;\n }\n const origin = coerceString(options.webOrigin, '').replace(/\\/$/, '');\n return origin ? `${origin}${logo}` : logo;\n }\n return logo;\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction escapeHtmlText(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction buildLogoMarkHtml(companyName: string, initials: string, logoUrl: string, brandColor: string): string {\n if (logoUrl) {\n return (\n `<img src=\"${escapeHtmlAttribute(logoUrl)}\" alt=\"${escapeHtmlAttribute(companyName)}\" width=\"40\" height=\"40\" ` +\n `style=\"display:inline-block;border:0;outline:none;height:40px;width:40px;object-fit:contain;\" />`\n );\n }\n return (\n `<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:700;` +\n `line-height:56px;color:${escapeHtmlAttribute(brandColor)};letter-spacing:0.5px;\">` +\n `${escapeHtmlText(initials)}</div>`\n );\n}\n\n/**\n * Builds merge tokens for the company email master from organization settings,\n * falling back to tenant snapshot fields when settings are empty (common after seed).\n */\nexport function buildCompanyEmailMergeFromOrganization(\n input: BuildCompanyEmailMergeInput = {},\n): Record<string, string> {\n const values = input.settingsValues ?? {};\n const tenant = input.tenant ?? null;\n const locale =\n (typeof input.locale === 'string' && input.locale.trim()) || 'en-US';\n const year = String(new Date().getFullYear());\n\n const companyName =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.OrganizationName, locale) ||\n coerceString(tenant?.title, '', locale) ||\n 'Your Company';\n\n const companyEmail =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.InfoEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.SupportEmail, locale) ||\n coerceString(tenant?.email, '', locale) ||\n coerceString(tenant?.supportEmail, '', locale);\n\n const companyPhone =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactPhone, locale) ||\n coerceString(tenant?.phone, '', locale);\n\n const companyAddress =\n buildAddressFromSettings(values, locale) || buildAddressFromTenant(tenant, locale);\n\n const companyBrandColor =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingColor, locale) ||\n coerceString(tenant?.color, '', locale) ||\n '#0f172a';\n\n const rawLogo =\n extractLogoRef(values[COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingLogo]) ||\n extractLogoRef(tenant?.logo);\n const companyLogoUrl =\n coerceString(input.inlinedLogoUrl, '') ||\n resolveLogoUrl(rawLogo, {\n webOrigin: input.webOrigin,\n apiOrigin: input.apiOrigin,\n });\n const companyNameInitials = buildInitials(companyName);\n\n const copyrightText =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.CopyrightText, locale) ||\n AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT;\n\n return {\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyLogoMarkHtml: buildLogoMarkHtml(\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyBrandColor,\n ),\n companyBrandColor,\n companyPhone,\n companyAddress,\n companyEmail,\n copyrightText,\n currentYear: year,\n ...(input.overrides ?? {}),\n };\n}\n\n/** @deprecated Prefer {@link buildCompanyEmailMergeFromOrganization}. */\nexport function buildCompanyEmailMergeDefaults(\n overrides: Record<string, string> = {},\n): Record<string, string> {\n return buildCompanyEmailMergeFromOrganization({ overrides });\n}\n\n//#endregion\n","//#region ---- Feature Keys ----\n\n/**\n * Organization Management Module Feature Keys.\n * Defines all available features for the Organization Management module.\n */\n// Management feature removed - module name is used directly as feature key\nexport const AXPOrganizationManagementFeatureKeys = {} as const;\n\n//#endregion\n\n","/** Page tab for editing job-definition responsibilities matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY = 'job-definition-responsibilities-page';\n","/** Page tab for editing job-definition skills matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY = 'job-definition-skills-page';\n","export const AXPOrganizationManagementMenuKeys = {\n Root: 'OrganizationManagement:Menu',\n ConfigurationRoot: 'OrganizationManagement:Menu:Configuration',\n Teams: 'OrganizationManagement:Menu:Teams',\n TeamMemberRoles: 'OrganizationManagement:Menu:TeamMemberRoles',\n Positions: 'OrganizationManagement:Menu:Positions',\n JobDefinitions: 'OrganizationManagement:Menu:JobDefinitions',\n JobLevels: 'OrganizationManagement:Menu:JobLevels',\n Responsibilities: 'OrganizationManagement:Menu:Responsibilities',\n ResponsibilityLevels: 'OrganizationManagement:Menu:ResponsibilityLevels',\n Divider1: 'OrganizationManagement:Menu:Divider1',\n BusinessUnits: 'OrganizationManagement:Menu:BusinessUnits',\n BusinessUnitTypes: 'OrganizationManagement:Menu:BusinessUnitTypes',\n Divider2: 'OrganizationManagement:Menu:Divider2',\n OrganizationChart: 'OrganizationManagement:Menu:OrganizationChart',\n} as const;\n\n","//#region ----- Org-chart merged corporate business unit id -----\n\n/**\n * Optional id of the enterprise-root / corporate HQ business unit that org-chart\n * builders merge into the company node (skip a separate chart card).\n *\n * Empty default (`null`) = no merge. Product/demo apps call\n * {@link configureOrgChartMergedBusinessUnitId} at boot with their seed id.\n */\nlet orgChartMergedBusinessUnitId: string | null = null;\n\n/**\n * Configure the business-unit id treated as the merged corporate root on org charts.\n * Pass `null` (or empty string) to disable merge behavior.\n */\nexport function configureOrgChartMergedBusinessUnitId(id: string | null): void {\n orgChartMergedBusinessUnitId =\n typeof id === 'string' && id.trim().length > 0 ? id.trim() : null;\n}\n\n/** Configured merged corporate business-unit id, or `null` when merge is disabled. */\nexport function getOrgChartMergedBusinessUnitId(): string | null {\n return orgChartMergedBusinessUnitId;\n}\n\n//#endregion\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPPeopleOrganizationPermissionKeys}.\n * Alias of the full People & Organization key set (including persons/attendance caps).\n */\nexport const AXPOrganizationManagementPermissionKeys = AXPPeopleOrganizationPermissionKeys;\n","const config = {\n i18n: 'organization-management',\n module: 'OrganizationManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'organization-management',\n name: config.module,\n title: '@organization-management:module.title',\n icon: 'fa-light fa-sitemap',\n },\n entities: {\n responsibility: {\n name: 'Responsibility',\n title: '@organization-management:responsibilities.entities.responsibility.title',\n source: `${config.module}.Responsibility`,\n icon: 'fa-light fa-tasks',\n },\n jobDefinition: {\n name: 'JobDefinition',\n title: '@organization-management:job-definitions.entities.job-definition.title',\n source: `${config.module}.JobDefinition`,\n icon: 'fa-light fa-user-tie',\n },\n jobLevel: {\n name: 'JobLevel',\n title: '@organization-management:job-levels.entities.job-level.title',\n source: `${config.module}.JobLevel`,\n icon: 'fa-light fa-layer-group',\n },\n responsibilityLevel: {\n name: 'ResponsibilityLevel',\n title: '@organization-management:responsibility-levels.entities.responsibility-level.title',\n titlePlural: '@organization-management:responsibility-levels.entities.responsibility-level.plural',\n source: `${config.module}.ResponsibilityLevel`,\n icon: 'fa-light fa-layer-group',\n },\n company: {\n name: 'Company',\n source: `${config.module}.Company`,\n title: '@organization-management:companies.entities.company.title',\n icon: 'fa-light fa-building',\n },\n team: {\n name: 'Team',\n source: `${config.module}.Team`,\n title: '@organization-management:teams.entities.team.title',\n icon: 'fa-light fa-people-group',\n },\n teamMemberRole: {\n name: 'TeamMemberRole',\n source: `${config.module}.TeamMemberRole`,\n title: '@organization-management:team-member-roles.entities.team-member-role.title',\n icon: 'fa-light fa-user-tag',\n },\n teamMember: {\n name: 'TeamMember',\n source: `${config.module}.TeamMember`,\n title: '@organization-management:team-members.entities.team-member.title',\n icon: 'fa-light fa-users',\n },\n teamBusinessUnit: {\n name: 'TeamBusinessUnit',\n source: `${config.module}.TeamBusinessUnit`,\n title: '@organization-management:team-business-units.entities.team-business-unit.title',\n icon: 'fa-light fa-link',\n },\n position: {\n name: 'Position',\n source: `${config.module}.Position`,\n title: '@organization-management:positions.entities.position.title',\n icon: 'fa-light fa-briefcase',\n },\n businessUnitType: {\n name: 'BusinessUnitType',\n source: `${config.module}.BusinessUnitType`,\n title: '@organization-management:business-unit-types.entities.business-unit-type.title',\n icon: 'fa-light fa-tag',\n },\n businessUnit: {\n name: 'BusinessUnit',\n source: `${config.module}.BusinessUnit`,\n title: '@organization-management:business-units.entities.business-unit.title',\n icon: 'fa-light fa-sitemap',\n },\n\n structure: {\n name: 'ChartStructure',\n source: `${config.module}.ChartStructure`,\n title: '@organization-management:chart-configuration.components.chart-configuration.title',\n menu: {\n title: '@organization-management:chart-configuration.menus.chart-configuration.title',\n },\n icon: 'fa-light fa-gear',\n },\n chart: {\n name: 'Chart',\n source: `${config.module}.Chart`,\n title: '@organization-management:organization-chart.components.chart.title',\n menu: {\n title: '@organization-management:organization-chart.menus.chart.title',\n },\n icon: 'fa-light fa-chart-diagram',\n },\n },\n queries: {\n dashboard: {\n teamsBar: `${config.module}:Dashboard:TeamsBar`,\n },\n },\n} as const;\n","import { type AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n/** Persisted org-chart JSON: all chart modes in one row (`structure` column). */\nexport const AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION = 1 as const;\n\nexport interface AXMOrgChartStructurePayload {\n schemaVersion: typeof AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION;\n modes: {\n structure: AXMOrganizationManagementChartNodeEntityModel;\n location: AXMOrganizationManagementChartNodeEntityModel;\n reporting: AXMOrganizationManagementChartNodeEntityModel;\n positionHierarchy: AXMOrganizationManagementChartNodeEntityModel;\n };\n}\n\nexport interface AXMOrganizationManagementChartEntityModel extends AXPEntityModel<string> {\n version: string;\n structure: AXMOrgChartStructurePayload;\n}\n\nexport interface AXMOrganizationManagementChartNodeEntityModel extends AXPEntityModel<string> {\n id: string; // Unique identifier for the node\n title: AXPMultiLanguageString;\n subtitle?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationManagementChartNodeEntityModel[];\n icon?: string;\n type?: string; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n metadata?: Record<string, any>; // Additional metadata (e.g., roles, counts, etc.)\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './server-commands';\nexport * from './company-email-merge.util';\nexport * from './features.keys';\nexport * from './JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY';\nexport * from './JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY';\nexport * from './menu.keys';\nexport * from './org-chart-merged-business-unit.configure';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\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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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-contracts.mjs","sources":["../../../../libs/modules/organization-management/contracts/src/commands.keys.ts","../../../../libs/modules/organization-management/contracts/src/server-commands.ts","../../../../libs/modules/organization-management/contracts/src/settings.keys.ts","../../../../libs/modules/organization-management/contracts/src/company-email-merge.util.ts","../../../../libs/modules/organization-management/contracts/src/features.keys.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/menu.keys.ts","../../../../libs/modules/organization-management/contracts/src/org-chart-merged-business-unit.configure.ts","../../../../libs/modules/organization-management/contracts/src/permission.keys.ts","../../../../libs/modules/organization-management/contracts/src/root-config.ts","../../../../libs/modules/organization-management/contracts/src/entities/chart/chart.types.ts","../../../../libs/modules/organization-management/contracts/src/index.ts","../../../../libs/modules/organization-management/contracts/src/acorex-platform-module-organization-management-client-contracts.ts"],"sourcesContent":["//#region ---- Client command keys ----\n\n/**\n * Client-side command keys (UI, dialogs, orchestration).\n * Server handlers use {@link AXMOrganizationManagementServerCommands} — never reuse these strings.\n */\nexport const AXMOrganizationManagementCommandKeys = {\n OrganizationChart: {\n Generate: 'OrganizationManagement.OrgChart:Generate',\n AddPositionToBusinessUnit: 'OrganizationManagement.OrgChart:AddPositionToBusinessUnit',\n AddBusinessUnitToBusinessUnit: 'OrganizationManagement.OrgChart:AddBusinessUnitToBusinessUnit',\n AddTeamToBusinessUnit: 'OrganizationManagement.OrgChart:AddTeamToBusinessUnit',\n RemovePositionFromBusinessUnit: 'OrganizationManagement.OrgChart:RemovePositionFromBusinessUnit',\n ReplacePositionAssignee: 'OrganizationManagement.OrgChart:ReplacePositionAssignee',\n },\n} as const;\n\n//#endregion\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Assign' as const;\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Revoke' as const;\n","//#region ---- Server command keys ----\n\n/**\n * Server-only runtime command keys for Organization Management.\n * Must stay distinct from client {@link AXMOrganizationManagementCommandKeys}.\n */\nexport const AXMOrganizationManagementServerCommands = {\n OrganizationChart: {\n Generate: 'OrganizationManagement:Server:OrgChart:Generate',\n },\n} as const;\n\n//#endregion\n","export enum AXPOrganizationManagementSettings {\n OrganizationName = 'OrganizationManagement:Setting:Organization.OrganizationName',\n OrganizationNameDisplay = 'OrganizationManagement:Setting:Organization.OrganizationNameDisplay',\n TradingName = 'OrganizationManagement:Setting:Organization.TradingName',\n TradingNameDisplay = 'OrganizationManagement:Setting:Organization.TradingNameDisplay',\n CompanyBio = 'OrganizationManagement:Setting:Organization.CompanyBio',\n BusinessRegistrationNumber = 'OrganizationManagement:Setting:Organization.BusinessRegistrationNumber',\n CompanyRegistrationNumber = 'OrganizationManagement:Setting:Organization.CompanyRegistrationNumber',\n LicenceNumber = 'OrganizationManagement:Setting:Organization.LicenceNumber',\n OrganizationID = 'OrganizationManagement:Setting:Organization.OrganizationID',\n ContactEmail = 'OrganizationManagement:Setting:Organization.ContactEmail',\n ContactPhone = 'OrganizationManagement:Setting:Organization.ContactPhone',\n OrganizationStreet1 = 'OrganizationManagement:Setting:Organization.Street1',\n OrganizationStreet2 = 'OrganizationManagement:Setting:Organization.Street2',\n OrganizationCountryId = 'OrganizationManagement:Setting:Organization.CountryId',\n OrganizationStateId = 'OrganizationManagement:Setting:Organization.StateId',\n OrganizationCityId = 'OrganizationManagement:Setting:Organization.CityId',\n OrganizationPostalCode = 'OrganizationManagement:Setting:Organization.PostalCode',\n BrandingColor = 'OrganizationManagement:Setting:Organization.Branding.Color',\n BrandingLogo = 'OrganizationManagement:Setting:Organization.Branding.Logo',\n CopyrightText = 'OrganizationManagement:Setting:Organization.CopyrightText',\n SupportEmail = 'OrganizationManagement:Setting:Organization.SupportEmail',\n InfoEmail = 'OrganizationManagement:Setting:Organization.InfoEmail',\n FaxNumber = 'OrganizationManagement:Setting:Organization.FaxNumber',\n Relations = 'OrganizationManagement:Setting:Organization.Relations',\n\n /** User preference: organization hierarchy chart mode (`structure` | `location` | `reporting` | `positionHierarchy`). */\n HierarchyChartMode = 'OrganizationManagement:Setting:User.HierarchyChart.Mode',\n /** User preference: show vacant leaf seats (structure / geographic modes). */\n HierarchyChartShowVacantLeafSeats = 'OrganizationManagement:Setting:User.HierarchyChart.ShowVacantLeafSeats',\n}\n","import { AXPOrganizationManagementSettings } from './settings.keys';\nimport {\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Company email merge from organization settings (leaf) ----\n\n/** Keys read from platform/tenant settings for company email master tokens. */\nexport const COMPANY_EMAIL_ORG_SETTING_KEYS = {\n OrganizationName: AXPOrganizationManagementSettings.OrganizationName,\n BrandingLogo: AXPOrganizationManagementSettings.BrandingLogo,\n BrandingColor: AXPOrganizationManagementSettings.BrandingColor,\n ContactEmail: AXPOrganizationManagementSettings.ContactEmail,\n ContactPhone: AXPOrganizationManagementSettings.ContactPhone,\n SupportEmail: AXPOrganizationManagementSettings.SupportEmail,\n InfoEmail: AXPOrganizationManagementSettings.InfoEmail,\n Street1: AXPOrganizationManagementSettings.OrganizationStreet1,\n Street2: AXPOrganizationManagementSettings.OrganizationStreet2,\n PostalCode: AXPOrganizationManagementSettings.OrganizationPostalCode,\n CopyrightText: AXPOrganizationManagementSettings.CopyrightText,\n} as const;\n\n/**\n * Definition default for {@link AXPOrganizationManagementSettings.CopyrightText}.\n * Used when the key is not yet persisted (inherited settings often stay client-only).\n */\nexport const AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT = '© 2026 Your Company';\n\nexport interface CompanyEmailTenantSnapshot {\n title?: AXPMultiLanguageString | null;\n email?: string | null;\n phone?: string | null;\n supportEmail?: string | null;\n logo?: string | null;\n color?: string | null;\n city?: { title?: AXPMultiLanguageString | null } | null;\n state?: { title?: AXPMultiLanguageString | null } | null;\n country?: { title?: AXPMultiLanguageString | null } | null;\n}\n\nexport interface BuildCompanyEmailMergeInput {\n settingsValues?: Record<string, unknown> | null;\n tenant?: CompanyEmailTenantSnapshot | null;\n /** UI origin for absolutizing `/assets/...` logo paths in outbound email. */\n webOrigin?: string | null;\n /**\n * API origin (no trailing slash, no `/api` suffix) used to absolutize\n * file-storage download URLs for logo file ids. Email/print callers should\n * prefer {@link inlinedLogoUrl} because download is JWT-protected.\n */\n apiOrigin?: string | null;\n /**\n * Pre-resolved logo URL (typically a `data:` URI after FileStorage inlining).\n * Takes precedence over branding / tenant logo refs.\n */\n inlinedLogoUrl?: string | null;\n /**\n * Locale for resolving multi-language organization settings / tenant title\n * (`companyName`, `copyrightText`, address region titles, …).\n * Defaults to `en-US` when omitted.\n */\n locale?: string | null;\n overrides?: Record<string, string>;\n}\n\n/** Matches platform file-storage ids (and optional `file:` cast prefix). */\nconst FILE_STORAGE_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nfunction coerceString(value: unknown, fallback = '', locale = 'en-US'): string {\n if (typeof value === 'string') {\n return value.trim() || fallback;\n }\n return resolveMultiLanguageString(value, locale).trim() || fallback;\n}\n\nfunction pickSetting(\n values: Record<string, unknown> | null | undefined,\n key: string,\n locale: string,\n): string {\n return coerceString(values?.[key], '', locale);\n}\n\nfunction normalizeLogoRef(value: string): string {\n const trimmed = value.trim();\n return trimmed.startsWith('file:') ? trimmed.slice('file:'.length).trim() : trimmed;\n}\n\nfunction isFileStorageId(value: string): boolean {\n return FILE_STORAGE_ID_PATTERN.test(normalizeLogoRef(value));\n}\n\n/** Relative download path served by `FileStorageController.download`. */\nexport function buildCompanyLogoFileDownloadPath(fileId: string): string {\n const id = normalizeLogoRef(fileId);\n return `/api/v1/file-storage/download/${encodeURIComponent(id)}`;\n}\n\nconst FILE_DOWNLOAD_ID_PATTERN =\n /\\/file-storage\\/download\\/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i;\n\n/**\n * File-storage id from a branding logo setting, tenant.logo, or download URL.\n * Used by the server to inline the binary as a data URI (download is JWT-protected).\n */\nexport function extractCompanyLogoFileId(value: unknown): string | undefined {\n const ref = extractLogoRef(value);\n if (!ref) {\n return undefined;\n }\n const fromPath = ref.match(FILE_DOWNLOAD_ID_PATTERN)?.[1];\n if (fromPath && isFileStorageId(fromPath)) {\n return normalizeLogoRef(fromPath);\n }\n return isFileStorageId(ref) ? normalizeLogoRef(ref) : undefined;\n}\n\nfunction extractLogoRef(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value && typeof value === 'object') {\n const record = value as { url?: unknown; fileId?: unknown; id?: unknown };\n return (\n coerceString(record.url, '') ||\n coerceString(record.fileId, '') ||\n coerceString(record.id, '')\n );\n }\n return '';\n}\n\nfunction buildAddressFromSettings(\n values: Record<string, unknown> | null | undefined,\n locale: string,\n): string {\n return [\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street1, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street2, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.PostalCode, locale),\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildAddressFromTenant(\n tenant: CompanyEmailTenantSnapshot | null | undefined,\n locale: string,\n): string {\n if (!tenant) {\n return '';\n }\n return [tenant.city?.title, tenant.state?.title, tenant.country?.title]\n .map((part) => coerceString(part, '', locale))\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildInitials(name: string): string {\n const parts = name.split(/\\s+/).filter(Boolean);\n if (!parts.length) {\n return 'CO';\n }\n if (parts.length === 1) {\n return parts[0]!.slice(0, 2).toUpperCase();\n }\n return `${parts[0]![0] ?? ''}${parts[1]![0] ?? ''}`.toUpperCase();\n}\n\nfunction isLocalWebOrigin(webOrigin?: string | null): boolean {\n const origin = coerceString(webOrigin, '');\n if (!origin) {\n return true;\n }\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host.endsWith('.local');\n } catch {\n return true;\n }\n}\n\n/**\n * Resolves a logo URL for template merge / preview.\n * - File-storage ids → `/api/v1/file-storage/download/{id}` (absolutized with apiOrigin).\n * Outbound email cannot fetch that URL (JWT + often localhost); pass `inlinedLogoUrl`.\n * - Keep app-relative paths (`/assets/...`) as-is for in-app preview.\n * - Absolutize asset paths only against a public (non-localhost) web origin for outbound email.\n */\nfunction resolveLogoUrl(\n logo: string,\n options: { webOrigin?: string | null; apiOrigin?: string | null } = {},\n): string {\n if (!logo) {\n return '';\n }\n if (isFileStorageId(logo)) {\n const path = buildCompanyLogoFileDownloadPath(logo);\n const apiOrigin = coerceString(options.apiOrigin, '').replace(/\\/$/, '');\n return apiOrigin ? `${apiOrigin}${path}` : path;\n }\n if (/^https?:\\/\\//i.test(logo) || logo.startsWith('data:')) {\n if (/^https?:\\/\\//i.test(logo) && isLocalWebOrigin(logo)) {\n return '';\n }\n return logo;\n }\n if (logo.startsWith('/')) {\n if (isLocalWebOrigin(options.webOrigin)) {\n return logo;\n }\n const origin = coerceString(options.webOrigin, '').replace(/\\/$/, '');\n return origin ? `${origin}${logo}` : logo;\n }\n return logo;\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction escapeHtmlText(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction buildLogoMarkHtml(companyName: string, initials: string, logoUrl: string, brandColor: string): string {\n if (logoUrl) {\n return (\n `<img src=\"${escapeHtmlAttribute(logoUrl)}\" alt=\"${escapeHtmlAttribute(companyName)}\" width=\"40\" height=\"40\" ` +\n `style=\"display:inline-block;border:0;outline:none;height:40px;width:40px;object-fit:contain;\" />`\n );\n }\n return (\n `<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:700;` +\n `line-height:56px;color:${escapeHtmlAttribute(brandColor)};letter-spacing:0.5px;\">` +\n `${escapeHtmlText(initials)}</div>`\n );\n}\n\n/**\n * Builds merge tokens for the company email master from organization settings,\n * falling back to tenant snapshot fields when settings are empty (common after seed).\n */\nexport function buildCompanyEmailMergeFromOrganization(\n input: BuildCompanyEmailMergeInput = {},\n): Record<string, string> {\n const values = input.settingsValues ?? {};\n const tenant = input.tenant ?? null;\n const locale =\n (typeof input.locale === 'string' && input.locale.trim()) || 'en-US';\n const year = String(new Date().getFullYear());\n\n const companyName =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.OrganizationName, locale) ||\n coerceString(tenant?.title, '', locale) ||\n 'Your Company';\n\n const companyEmail =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.InfoEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.SupportEmail, locale) ||\n coerceString(tenant?.email, '', locale) ||\n coerceString(tenant?.supportEmail, '', locale);\n\n const companyPhone =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactPhone, locale) ||\n coerceString(tenant?.phone, '', locale);\n\n const companyAddress =\n buildAddressFromSettings(values, locale) || buildAddressFromTenant(tenant, locale);\n\n const companyBrandColor =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingColor, locale) ||\n coerceString(tenant?.color, '', locale) ||\n '#0f172a';\n\n const rawLogo =\n extractLogoRef(values[COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingLogo]) ||\n extractLogoRef(tenant?.logo);\n const companyLogoUrl =\n coerceString(input.inlinedLogoUrl, '') ||\n resolveLogoUrl(rawLogo, {\n webOrigin: input.webOrigin,\n apiOrigin: input.apiOrigin,\n });\n const companyNameInitials = buildInitials(companyName);\n\n const copyrightText =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.CopyrightText, locale) ||\n AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT;\n\n return {\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyLogoMarkHtml: buildLogoMarkHtml(\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyBrandColor,\n ),\n companyBrandColor,\n companyPhone,\n companyAddress,\n companyEmail,\n copyrightText,\n currentYear: year,\n ...(input.overrides ?? {}),\n };\n}\n\n/** @deprecated Prefer {@link buildCompanyEmailMergeFromOrganization}. */\nexport function buildCompanyEmailMergeDefaults(\n overrides: Record<string, string> = {},\n): Record<string, string> {\n return buildCompanyEmailMergeFromOrganization({ overrides });\n}\n\n//#endregion\n","//#region ---- Feature Keys ----\n\n/**\n * Organization Management Module Feature Keys.\n * Defines all available features for the Organization Management module.\n */\n// Management feature removed - module name is used directly as feature key\nexport const AXPOrganizationManagementFeatureKeys = {} as const;\n\n//#endregion\n\n","/** Page tab for editing job-definition responsibilities matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY = 'job-definition-responsibilities-page';\n","/** Page tab for editing job-definition skills matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY = 'job-definition-skills-page';\n","export const AXPOrganizationManagementMenuKeys = {\n Root: 'OrganizationManagement:Menu',\n ConfigurationRoot: 'OrganizationManagement:Menu:Configuration',\n Teams: 'OrganizationManagement:Menu:Teams',\n TeamMemberRoles: 'OrganizationManagement:Menu:TeamMemberRoles',\n Positions: 'OrganizationManagement:Menu:Positions',\n JobDefinitions: 'OrganizationManagement:Menu:JobDefinitions',\n JobLevels: 'OrganizationManagement:Menu:JobLevels',\n Responsibilities: 'OrganizationManagement:Menu:Responsibilities',\n ResponsibilityLevels: 'OrganizationManagement:Menu:ResponsibilityLevels',\n Divider1: 'OrganizationManagement:Menu:Divider1',\n BusinessUnits: 'OrganizationManagement:Menu:BusinessUnits',\n BusinessUnitTypes: 'OrganizationManagement:Menu:BusinessUnitTypes',\n Divider2: 'OrganizationManagement:Menu:Divider2',\n OrganizationChart: 'OrganizationManagement:Menu:OrganizationChart',\n} as const;\n\n","//#region ----- Org-chart merged corporate business unit id -----\n\n/**\n * Optional id of the enterprise-root / corporate HQ business unit that org-chart\n * builders merge into the company node (skip a separate chart card).\n *\n * Empty default (`null`) = no merge. Product/demo apps call\n * {@link configureOrgChartMergedBusinessUnitId} at boot with their seed id.\n */\nlet orgChartMergedBusinessUnitId: string | null = null;\n\n/**\n * Configure the business-unit id treated as the merged corporate root on org charts.\n * Pass `null` (or empty string) to disable merge behavior.\n */\nexport function configureOrgChartMergedBusinessUnitId(id: string | null): void {\n orgChartMergedBusinessUnitId =\n typeof id === 'string' && id.trim().length > 0 ? id.trim() : null;\n}\n\n/** Configured merged corporate business-unit id, or `null` when merge is disabled. */\nexport function getOrgChartMergedBusinessUnitId(): string | null {\n return orgChartMergedBusinessUnitId;\n}\n\n//#endregion\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPPeopleOrganizationPermissionKeys}.\n * Alias of the full People & Organization key set (including persons/attendance caps).\n */\nexport const AXPOrganizationManagementPermissionKeys = AXPPeopleOrganizationPermissionKeys;\n","const config = {\n i18n: 'organization-management',\n module: 'OrganizationManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'organization-management',\n name: config.module,\n title: '@organization-management:module.title',\n icon: 'fa-light fa-sitemap',\n },\n entities: {\n responsibility: {\n name: 'Responsibility',\n title: '@organization-management:responsibilities.entities.responsibility.title',\n source: `${config.module}.Responsibility`,\n icon: 'fa-light fa-tasks',\n },\n jobDefinition: {\n name: 'JobDefinition',\n title: '@organization-management:job-definitions.entities.job-definition.title',\n source: `${config.module}.JobDefinition`,\n icon: 'fa-light fa-user-tie',\n },\n jobLevel: {\n name: 'JobLevel',\n title: '@organization-management:job-levels.entities.job-level.title',\n source: `${config.module}.JobLevel`,\n icon: 'fa-light fa-layer-group',\n },\n responsibilityLevel: {\n name: 'ResponsibilityLevel',\n title: '@organization-management:responsibility-levels.entities.responsibility-level.title',\n titlePlural: '@organization-management:responsibility-levels.entities.responsibility-level.plural',\n source: `${config.module}.ResponsibilityLevel`,\n icon: 'fa-light fa-layer-group',\n },\n company: {\n name: 'Company',\n source: `${config.module}.Company`,\n title: '@organization-management:companies.entities.company.title',\n icon: 'fa-light fa-building',\n },\n team: {\n name: 'Team',\n source: `${config.module}.Team`,\n title: '@organization-management:teams.entities.team.title',\n icon: 'fa-light fa-people-group',\n },\n teamMemberRole: {\n name: 'TeamMemberRole',\n source: `${config.module}.TeamMemberRole`,\n title: '@organization-management:team-member-roles.entities.team-member-role.title',\n icon: 'fa-light fa-user-tag',\n },\n teamMember: {\n name: 'TeamMember',\n source: `${config.module}.TeamMember`,\n title: '@organization-management:team-members.entities.team-member.title',\n icon: 'fa-light fa-users',\n },\n teamBusinessUnit: {\n name: 'TeamBusinessUnit',\n source: `${config.module}.TeamBusinessUnit`,\n title: '@organization-management:team-business-units.entities.team-business-unit.title',\n icon: 'fa-light fa-link',\n },\n position: {\n name: 'Position',\n source: `${config.module}.Position`,\n title: '@organization-management:positions.entities.position.title',\n icon: 'fa-light fa-briefcase',\n },\n businessUnitType: {\n name: 'BusinessUnitType',\n source: `${config.module}.BusinessUnitType`,\n title: '@organization-management:business-unit-types.entities.business-unit-type.title',\n icon: 'fa-light fa-tag',\n },\n businessUnit: {\n name: 'BusinessUnit',\n source: `${config.module}.BusinessUnit`,\n title: '@organization-management:business-units.entities.business-unit.title',\n icon: 'fa-light fa-sitemap',\n },\n\n structure: {\n name: 'ChartStructure',\n source: `${config.module}.ChartStructure`,\n title: '@organization-management:chart-configuration.components.chart-configuration.title',\n menu: {\n title: '@organization-management:chart-configuration.menus.chart-configuration.title',\n },\n icon: 'fa-light fa-gear',\n },\n chart: {\n name: 'Chart',\n source: `${config.module}.Chart`,\n title: '@organization-management:organization-chart.components.chart.title',\n menu: {\n title: '@organization-management:organization-chart.menus.chart.title',\n },\n icon: 'fa-light fa-chart-diagram',\n },\n },\n queries: {\n dashboard: {\n teamsBar: `${config.module}:Dashboard:TeamsBar`,\n },\n },\n} as const;\n","import { type AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n/** Persisted org-chart JSON: all chart modes in one row (`structure` column). */\nexport const AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION = 1 as const;\n\nexport interface AXMOrgChartStructurePayload {\n schemaVersion: typeof AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION;\n modes: {\n structure: AXMOrganizationManagementChartNodeEntityModel;\n location: AXMOrganizationManagementChartNodeEntityModel;\n reporting: AXMOrganizationManagementChartNodeEntityModel;\n positionHierarchy: AXMOrganizationManagementChartNodeEntityModel;\n };\n}\n\nexport interface AXMOrganizationManagementChartEntityModel extends AXPEntityModel<string> {\n version: string;\n structure: AXMOrgChartStructurePayload;\n}\n\nexport interface AXMOrganizationManagementChartNodeEntityModel extends AXPEntityModel<string> {\n id: string; // Unique identifier for the node\n title: AXPMultiLanguageString;\n subtitle?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationManagementChartNodeEntityModel[];\n icon?: string;\n type?: string; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n metadata?: Record<string, any>; // Additional metadata (e.g., roles, counts, etc.)\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './server-commands';\nexport * from './company-email-merge.util';\nexport * from './features.keys';\nexport * from './JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY';\nexport * from './JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY';\nexport * from './menu.keys';\nexport * from './org-chart-merged-business-unit.configure';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/feature-definition.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Organization Management Module Feature Definition Provider.\n * Provides feature definitions for the Organization Management module.\n */\nexport class AXPOrganizationManagementFeatureDefinitionProvider\n implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n const i18n = RootConfig.config.i18n;\n\n // Management feature removed - module name is used directly as feature key\n }\n}\n\n//#endregion\n\n"],"names":[],"mappings":";;AAAA;AAQA;AAEA;AAEA;;;AAGG;MACU,kDAAkD,CAAA;IAE3D,MAAM,OAAO,CAAC,OAA4C,EAAA;AACtD,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI;;IAGvC;AACH;AAED;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/feature-definition.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Organization Management Module Feature Definition Provider.\n * Provides feature definitions for the Organization Management module.\n */\nexport class AXPOrganizationManagementFeatureDefinitionProvider\n implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n const i18n = RootConfig.config.i18n;\n\n // Management feature removed - module name is used directly as feature key\n }\n}\n\n//#endregion\n\n"],"names":[],"mappings":";;AAAA;AAQA;AAEA;AAEA;;;AAGG;MACU,kDAAkD,CAAA;IAE3D,MAAM,OAAO,CAAC,OAA4C,EAAA;AACtD,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI;;IAGvC;AACH;AAED;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/commands/generate-org-chart.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult,\n runtimeCommandPayloadData} from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXMOrganizationManagementServerCommands,\n} from '@acorex-platform/module-organization-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport type { OrgChartGenerateResult } from '../generation/org-chart.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Defer showing progress until work exceeds this duration (fast runs avoid flicker). */\nconst LOADING_DIALOG_SHOW_THRESHOLD_MS = 500;\n\n/** Minimum time to keep the dialog visible after work completes once shown (smoother dismiss). */\nconst LOADING_DIALOG_CLOSE_DELAY_MS = 500;\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXMGenerateOrgChartInput = {\n mode?: 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n showVacantLeafSeats?: boolean;\n};\n\n//#endregion\n\n//#region ---- Client command ----\n\n/**\n * Client orchestration for org-chart generate: loading UI, then the distinct server command.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMGenerateOrgChartCommand\n implements AXPCommand<AXMGenerateOrgChartInput, OrgChartGenerateResult>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly commandService = inject(AXPCommandService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(_input?: AXMGenerateOrgChartInput): AXPCommandExecuteResultPromise<OrgChartGenerateResult> {\n const [loadingTitle, loadingDescription] = await Promise.all([\n this.translation.translateAsync('@organization-management:organization-chart.commands.generate.loading.title'),\n this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.loading.description',\n ),\n ]);\n\n let showTimer: ReturnType<typeof setTimeout> | undefined;\n let progressDialog: { close: () => void } | undefined;\n\n showTimer = setTimeout(() => {\n showTimer = undefined;\n progressDialog = this.loadingDialog.show({\n title: loadingTitle,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: loadingDescription,\n });\n }, LOADING_DIALOG_SHOW_THRESHOLD_MS);\n\n try {\n const result = await this.commandService.execute<Record<string, never>, OrgChartGenerateResult>(\n AXMOrganizationManagementServerCommands.OrganizationChart.Generate,\n {},\n );\n\n const data = runtimeCommandPayloadData(result);\n if (!data) {\n const fallbackText = await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.failed',\n );\n return {\n success: false,\n message: { text: result?.message?.text ?? fallbackText },\n };\n }\n\n return { success: true, kind: 'object',\n data: data,\n message: {\n text: await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.success',\n ),\n },\n };\n } catch (error) {\n const fallbackText = await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.failed',\n );\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : fallbackText,\n },\n };\n } finally {\n if (showTimer !== undefined) {\n clearTimeout(showTimer);\n }\n if (progressDialog !== undefined) {\n const dlg = progressDialog;\n setTimeout(() => dlg.close(), LOADING_DIALOG_CLOSE_DELAY_MS);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;AAAA;AAcA;AAEA;AAEA;AACA,MAAM,gCAAgC,GAAG,GAAG;AAE5C;AACA,MAAM,6BAA6B,GAAG,GAAG;AAWzC;AAEA;AAEA;;AAEG;MAEU,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA0E5D,IAAA;;;IApEC,MAAM,OAAO,CAAC,MAAiC,EAAA;QAC7C,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,6EAA6E,CAAC;AAC9G,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAC7B,mFAAmF,CACpF;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,SAAoD;AACxD,QAAA,IAAI,cAAiD;AAErD,QAAA,SAAS,GAAG,UAAU,CAAC,MAAK;YAC1B,SAAS,GAAG,SAAS;AACrB,YAAA,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,IAAI,EAAE,kBAAkB;AACzB,aAAA,CAAC;QACJ,CAAC,EAAE,gCAAgC,CAAC;AAEpC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,uCAAuC,CAAC,iBAAiB,CAAC,QAAQ,EAClE,EAAE,CACH;AAED,YAAA,MAAM,IAAI,GAAG,yBAAyB,CAAC,MAAM,CAAC;YAC9C,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CACxD,+EAA+E,CAChF;gBACD,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE;iBACzD;YACH;AAEA,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACpC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CACzC,gFAAgF,CACjF;AACF,iBAAA;aACF;QACH;QAAE,OAAO,KAAK,EAAE;YACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CACxD,+EAA+E,CAChF;YACD,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY;AAC5D,iBAAA;aACF;QACH;gBAAU;AACR,YAAA,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,YAAY,CAAC,SAAS,CAAC;YACzB;AACA,YAAA,IAAI,cAAc,KAAK,SAAS,EAAE;gBAChC,MAAM,GAAG,GAAG,cAAc;gBAC1B,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,6BAA6B,CAAC;YAC9D;QACF;IACF;8GA9EW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/commands/generate-org-chart.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult,\n runtimeCommandPayloadData} from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXMOrganizationManagementServerCommands,\n} from '@acorex-platform/module-organization-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport type { OrgChartGenerateResult } from '../generation/org-chart.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Defer showing progress until work exceeds this duration (fast runs avoid flicker). */\nconst LOADING_DIALOG_SHOW_THRESHOLD_MS = 500;\n\n/** Minimum time to keep the dialog visible after work completes once shown (smoother dismiss). */\nconst LOADING_DIALOG_CLOSE_DELAY_MS = 500;\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXMGenerateOrgChartInput = {\n mode?: 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n showVacantLeafSeats?: boolean;\n};\n\n//#endregion\n\n//#region ---- Client command ----\n\n/**\n * Client orchestration for org-chart generate: loading UI, then the distinct server command.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMGenerateOrgChartCommand\n implements AXPCommand<AXMGenerateOrgChartInput, OrgChartGenerateResult>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly commandService = inject(AXPCommandService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(_input?: AXMGenerateOrgChartInput): AXPCommandExecuteResultPromise<OrgChartGenerateResult> {\n const [loadingTitle, loadingDescription] = await Promise.all([\n this.translation.translateAsync('@organization-management:organization-chart.commands.generate.loading.title'),\n this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.loading.description',\n ),\n ]);\n\n let showTimer: ReturnType<typeof setTimeout> | undefined;\n let progressDialog: { close: () => void } | undefined;\n\n showTimer = setTimeout(() => {\n showTimer = undefined;\n progressDialog = this.loadingDialog.show({\n title: loadingTitle,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: loadingDescription,\n });\n }, LOADING_DIALOG_SHOW_THRESHOLD_MS);\n\n try {\n const result = await this.commandService.execute<Record<string, never>, OrgChartGenerateResult>(\n AXMOrganizationManagementServerCommands.OrganizationChart.Generate,\n {},\n );\n\n const data = runtimeCommandPayloadData(result);\n if (!data) {\n const fallbackText = await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.failed',\n );\n return {\n success: false,\n message: { text: result?.message?.text ?? fallbackText },\n };\n }\n\n return { success: true, kind: 'object',\n data: data,\n message: {\n text: await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.success',\n ),\n },\n };\n } catch (error) {\n const fallbackText = await this.translation.translateAsync(\n '@organization-management:organization-chart.commands.generate.messages.failed',\n );\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : fallbackText,\n },\n };\n } finally {\n if (showTimer !== undefined) {\n clearTimeout(showTimer);\n }\n if (progressDialog !== undefined) {\n const dlg = progressDialog;\n setTimeout(() => dlg.close(), LOADING_DIALOG_CLOSE_DELAY_MS);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-matrix-page.utils.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n//#region ---- Job definition matrix page helpers ----\n\n/**\n * Overlays overview tab fields so matrix column headers track Required Job Levels while draft patches hold matrix data only.\n */\nexport function mergeJobDefinitionMatrixPageContext(\n root: Record<string, unknown>,\n local: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n if (local == null) {\n return root;\n }\n\n return {\n ...local,\n jobLevelsList: root['jobLevelsList'],\n jobLevelIds: root['jobLevelIds'],\n };\n}\n\n/**\n * Builds column titles for responsibility/skill matrices from the joined `jobLevelsList` snapshot.\n */\nexport function jobLevelsToSpreadsheetTitles(\n jobLevels: unknown,\n i18n: AXTranslationService,\n): AXPSpreadsheetItem[] {\n if (!Array.isArray(jobLevels) || jobLevels.length === 0) {\n return [];\n }\n\n const resolve = (v: unknown) => i18n.resolve(v as never);\n\n return jobLevels.map((item: Record<string, unknown> | string) => {\n if (typeof item === 'string') {\n return { id: item, title: item };\n }\n const id = (item['id'] ?? item['value'] ?? String(item)) as string;\n const rawTitle = (item['title'] ?? item['name'] ?? String(item)) as string | Record<string, string>;\n const desc = item['description'];\n return {\n id,\n title: resolve(rawTitle) || String(rawTitle),\n description:\n desc != null && desc !== '' ? resolve(desc as string | Record<string, string>) : undefined,\n };\n });\n}\n\n/**\n * Collects unique cell values from a spreadsheet matrix (e.g. responsibility level ids).\n */\nexport function collectIdsFromSpreadsheetMatrix(matrix: AXPSpreadsheetData | null | undefined): string[] {\n const set = new Set<string>();\n if (!matrix || typeof matrix !== 'object') {\n return [];\n }\n\n for (const row of Object.values(matrix)) {\n if (row && typeof row === 'object') {\n for (const cell of Object.values(row as Record<string, unknown>)) {\n if (cell != null && typeof cell === 'string') {\n set.add(cell);\n }\n }\n }\n }\n\n return Array.from(set);\n}\n\n//#endregion\n"],"names":[],"mappings":"AAAA;AAKA;AAEA;AAEA;;AAEG;AACG,SAAU,mCAAmC,CACjD,IAA6B,EAC7B,KAAiD,EAAA;AAEjD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;AACpC,QAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;KACjC;AACH;AAEA;;AAEG;AACG,SAAU,4BAA4B,CAC1C,SAAkB,EAClB,IAA0B,EAAA;AAE1B,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACvD,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,CAAU,KAAK,IAAI,CAAC,OAAO,CAAC,CAAU,CAAC;AAExD,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAsC,KAAI;AAC9D,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAClC;AACA,QAAA,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAW;AAClE,QAAA,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAoC;AACnG,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,OAAO;YACL,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC5C,YAAA,WAAW,EACT,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,GAAG,OAAO,CAAC,IAAuC,CAAC,GAAG,SAAS;SAC7F;AACH,IAAA,CAAC,CAAC;AACJ;AAEA;;AAEG;AACG,SAAU,+BAA+B,CAAC,MAA6C,EAAA;AAC3F,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;IAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,EAAE;IACX;IAEA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvC,QAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC,EAAE;gBAChE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5C,oBAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBACf;YACF;QACF;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-matrix-page.utils.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n//#region ---- Job definition matrix page helpers ----\n\n/**\n * Overlays overview tab fields so matrix column headers track Required Job Levels while draft patches hold matrix data only.\n */\nexport function mergeJobDefinitionMatrixPageContext(\n root: Record<string, unknown>,\n local: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n if (local == null) {\n return root;\n }\n\n return {\n ...local,\n jobLevelsList: root['jobLevelsList'],\n jobLevelIds: root['jobLevelIds'],\n };\n}\n\n/**\n * Builds column titles for responsibility/skill matrices from the joined `jobLevelsList` snapshot.\n */\nexport function jobLevelsToSpreadsheetTitles(\n jobLevels: unknown,\n i18n: AXTranslationService,\n): AXPSpreadsheetItem[] {\n if (!Array.isArray(jobLevels) || jobLevels.length === 0) {\n return [];\n }\n\n const resolve = (v: unknown) => i18n.resolve(v as never);\n\n return jobLevels.map((item: Record<string, unknown> | string) => {\n if (typeof item === 'string') {\n return { id: item, title: item };\n }\n const id = (item['id'] ?? item['value'] ?? String(item)) as string;\n const rawTitle = (item['title'] ?? item['name'] ?? String(item)) as string | Record<string, string>;\n const desc = item['description'];\n return {\n id,\n title: resolve(rawTitle) || String(rawTitle),\n description:\n desc != null && desc !== '' ? resolve(desc as string | Record<string, string>) : undefined,\n };\n });\n}\n\n/**\n * Collects unique cell values from a spreadsheet matrix (e.g. responsibility level ids).\n */\nexport function collectIdsFromSpreadsheetMatrix(matrix: AXPSpreadsheetData | null | undefined): string[] {\n const set = new Set<string>();\n if (!matrix || typeof matrix !== 'object') {\n return [];\n }\n\n for (const row of Object.values(matrix)) {\n if (row && typeof row === 'object') {\n for (const cell of Object.values(row as Record<string, unknown>)) {\n if (cell != null && typeof cell === 'string') {\n set.add(cell);\n }\n }\n }\n }\n\n return Array.from(set);\n}\n\n//#endregion\n"],"names":[],"mappings":"AAAA;AAKA;AAEA;AAEA;;AAEG;AACG,SAAU,mCAAmC,CACjD,IAA6B,EAC7B,KAAiD,EAAA;AAEjD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;AACpC,QAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;KACjC;AACH;AAEA;;AAEG;AACG,SAAU,4BAA4B,CAC1C,SAAkB,EAClB,IAA0B,EAAA;AAE1B,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACvD,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,CAAU,KAAK,IAAI,CAAC,OAAO,CAAC,CAAU,CAAC;AAExD,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAsC,KAAI;AAC9D,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAClC;AACA,QAAA,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAW;AAClE,QAAA,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAoC;AACnG,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,OAAO;YACL,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC5C,YAAA,WAAW,EACT,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,GAAG,OAAO,CAAC,IAAuC,CAAC,GAAG,SAAS;SAC7F;AACH,IAAA,CAAC,CAAC;AACJ;AAEA;;AAEG;AACG,SAAU,+BAA+B,CAAC,MAA6C,EAAA;AAC3F,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;IAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,EAAE;IACX;IAEA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvC,QAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC,EAAE;gBAChE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5C,oBAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBACf;YACF;QACF;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;"}
@@ -9,7 +9,7 @@ class AXMJobDefinitionPagesComponentProvider {
9
9
  return [
10
10
  {
11
11
  key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,
12
- loader: () => import('./acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs').then((m) => m.AXMJobDefinitionResponsibilitiesPageComponent),
12
+ loader: () => import('./acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-CpirrInU.mjs').then((m) => m.AXMJobDefinitionResponsibilitiesPageComponent),
13
13
  },
14
14
  {
15
15
  key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
25
25
  }] });
26
26
 
27
27
  export { AXMJobDefinitionPagesComponentProvider };
28
- //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs.map
28
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-pages-component.provider-XH_rXGwz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-pages-component.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n} from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Job definition entity page components provider ----\n\n@Injectable()\nexport class AXMJobDefinitionPagesComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-responsibilities-page.component').then(\n (m) => m.AXMJobDefinitionResponsibilitiesPageComponent,\n ),\n },\n {\n key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-skills-page.component').then((m) => m.AXMJobDefinitionSkillsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAYA;AAEA;MAGa,sCAAsC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,kDAAkD;AACvD,gBAAA,MAAM,EAAE,MACN,OAAO,qHAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CACvD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,wCAAwC;AAC7C,gBAAA,MAAM,EAAE,MACN,OAAO,2GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,aAAA;SACF;IACH;8GAhBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtC,sCAAsC,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-XH_rXGwz.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-pages-component.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n} from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Job definition entity page components provider ----\n\n@Injectable()\nexport class AXMJobDefinitionPagesComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-responsibilities-page.component').then(\n (m) => m.AXMJobDefinitionResponsibilitiesPageComponent,\n ),\n },\n {\n key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-skills-page.component').then((m) => m.AXMJobDefinitionSkillsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAYA;AAEA;MAGa,sCAAsC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,kDAAkD;AACvD,gBAAA,MAAM,EAAE,MACN,OAAO,qHAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CACvD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,wCAAwC;AAC7C,gBAAA,MAAM,EAAE,MACN,OAAO,2GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,aAAA;SACF;IACH;8GAhBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtC,sCAAsC,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD;;;"}
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
6
6
  import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
7
7
  import { cloneDeep, isEqual } from 'lodash';
8
8
  import { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';
9
- import { A as AXMOrganizationManagementResponsibilitiesMatrixComponent } from './acorex-platform-module-organization-management-client-responsibilities-matrix.component-DqO6xE2p.mjs';
9
+ import { A as AXMOrganizationManagementResponsibilitiesMatrixComponent } from './acorex-platform-module-organization-management-client-responsibilities-matrix.component-Cpgdxtw-.mjs';
10
10
  import { m as mergeJobDefinitionMatrixPageContext, j as jobLevelsToSpreadsheetTitles, c as collectIdsFromSpreadsheetMatrix } from './acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs';
11
11
 
12
12
  //#endregion
@@ -234,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
234
234
  }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }] } });
235
235
 
236
236
  export { AXMJobDefinitionResponsibilitiesPageComponent };
237
- //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs.map
237
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-CpirrInU.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-responsibilities-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementResponsibilitiesMatrixComponent } from '../responsibilities-matrix/responsibilities-matrix.component';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n collectIdsFromSpreadsheetMatrix,\n jobLevelsToSpreadsheetTitles,\n mergeJobDefinitionMatrixPageContext,\n} from './job-definition-matrix-page.utils';\n\n//#endregion\n\nconst JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';\nconst JOB_DEFINITION_RESPONSIBILITIES_SAVE = 'JobDefinition:Responsibilities:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-responsibilities-page',\n standalone: true,\n imports: [AXMOrganizationManagementResponsibilitiesMatrixComponent],\n template: `\n <axm-responsibilities-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionResponsibilitiesPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const responsibilities = ctx?.['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['responsibilities'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(data);\n this.localContext.set({\n ...base,\n responsibilities: data,\n responsibilityLevelIds,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const responsibilities = ctx['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_RESPONSIBILITIES_SAVE) {\n return;\n }\n\n return this.persistResponsibilities() as unknown as Promise<void>;\n }\n\n private async persistResponsibilities(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const responsibilities = (ctx['responsibilities'] as AXPSpreadsheetData) ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(responsibilities);\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n responsibilities,\n responsibilityLevelIds,\n });\n\n this.baselineMatrix.set(cloneDeep(responsibilities));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-CpirrInU.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-responsibilities-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementResponsibilitiesMatrixComponent } from '../responsibilities-matrix/responsibilities-matrix.component';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n collectIdsFromSpreadsheetMatrix,\n jobLevelsToSpreadsheetTitles,\n mergeJobDefinitionMatrixPageContext,\n} from './job-definition-matrix-page.utils';\n\n//#endregion\n\nconst JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';\nconst JOB_DEFINITION_RESPONSIBILITIES_SAVE = 'JobDefinition:Responsibilities:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-responsibilities-page',\n standalone: true,\n imports: [AXMOrganizationManagementResponsibilitiesMatrixComponent],\n template: `\n <axm-responsibilities-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionResponsibilitiesPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const responsibilities = ctx?.['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['responsibilities'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(data);\n this.localContext.set({\n ...base,\n responsibilities: data,\n responsibilityLevelIds,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const responsibilities = ctx['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_RESPONSIBILITIES_SAVE) {\n return;\n }\n\n return this.persistResponsibilities() as unknown as Promise<void>;\n }\n\n private async persistResponsibilities(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const responsibilities = (ctx['responsibilities'] as AXPSpreadsheetData) ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(responsibilities);\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n responsibilities,\n responsibilityLevelIds,\n });\n\n this.baselineMatrix.set(cloneDeep(responsibilities));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-skills-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXMLearningManagementSkillMatrixComponent } from '@acorex-platform/module-learning-management-client';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { jobLevelsToSpreadsheetTitles, mergeJobDefinitionMatrixPageContext } from './job-definition-matrix-page.utils';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\n\n//#endregion\n\nconst JOB_DEFINITION_SKILLS_PAGE_DISCARD = 'JobDefinition:Skills:Discard';\nconst JOB_DEFINITION_SKILLS_SAVE = 'JobDefinition:Skills:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-skills-page',\n standalone: true,\n imports: [AXMLearningManagementSkillMatrixComponent],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionSkillsPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionSkillsPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const skillRequirements = ctx?.['skillRequirements'];\n const base =\n skillRequirements != null && typeof skillRequirements === 'object'\n ? cloneDeep(skillRequirements as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['skillRequirements'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({\n ...base,\n skillRequirements: data,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_SKILLS_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_SKILLS_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_SKILLS_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const skillRequirements = ctx['skillRequirements'];\n const base =\n skillRequirements != null && typeof skillRequirements === 'object'\n ? cloneDeep(skillRequirements as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_SKILLS_SAVE) {\n return;\n }\n\n return this.persistSkills() as unknown as Promise<void>;\n }\n\n private async persistSkills(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const skillRequirements = (ctx['skillRequirements'] as AXPSpreadsheetData) ?? {};\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n skillRequirements,\n });\n\n this.baselineMatrix.set(cloneDeep(skillRequirements));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-skills-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXMLearningManagementSkillMatrixComponent } from '@acorex-platform/module-learning-management-client';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { jobLevelsToSpreadsheetTitles, mergeJobDefinitionMatrixPageContext } from './job-definition-matrix-page.utils';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\n\n//#endregion\n\nconst JOB_DEFINITION_SKILLS_PAGE_DISCARD = 'JobDefinition:Skills:Discard';\nconst JOB_DEFINITION_SKILLS_SAVE = 'JobDefinition:Skills:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-skills-page',\n standalone: true,\n imports: [AXMLearningManagementSkillMatrixComponent],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionSkillsPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionSkillsPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const skillRequirements = ctx?.['skillRequirements'];\n const base =\n skillRequirements != null && typeof skillRequirements === 'object'\n ? cloneDeep(skillRequirements as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['skillRequirements'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({\n ...base,\n skillRequirements: data,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_SKILLS_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_SKILLS_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_SKILLS_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const skillRequirements = ctx['skillRequirements'];\n const base =\n skillRequirements != null && typeof skillRequirements === 'object'\n ? cloneDeep(skillRequirements as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_SKILLS_SAVE) {\n return;\n }\n\n return this.persistSkills() as unknown as Promise<void>;\n }\n\n private async persistSkills(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const skillRequirements = (ctx['skillRequirements'] as AXPSpreadsheetData) ?? {};\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n skillRequirements,\n });\n\n this.baselineMatrix.set(cloneDeep(skillRequirements));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';
2
+ import { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';
3
+ export { organizationManagementLocalEntityCatalog } from '@acorex-platform/module-organization-management-client/contracts/entity-catalog';
4
+
5
+ //#region ----- Imports -----
6
+ //#endregion
7
+ //#region ----- Provide local entities -----
8
+ /**
9
+ * Registers organization-management layouts on the client from packaged factories.
10
+ * Each `import()` targets a secondary entry so unused entities stay out of the
11
+ * bundle. Do not add this to the demo app; demo continues to load layouts via
12
+ * `Domain:GetEntityLayout`.
13
+ */
14
+ function provideOrganizationManagementLocalEntities() {
15
+ return provideLocalEntityCatalog({
16
+ moduleName: RootConfig.module.name,
17
+ loaders: {
18
+ [RootConfig.entities.businessUnit.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/business-unit').then((m) => m.factoryBusinessUnit()),
19
+ [RootConfig.entities.businessUnitType.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/business-unit-type').then((m) => m.factoryBusinessUnitType()),
20
+ [RootConfig.entities.chart.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/chart').then((m) => m.factoryChart()),
21
+ [RootConfig.entities.company.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/company').then((m) => m.factoryCompany()),
22
+ [RootConfig.entities.jobDefinition.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/job-definition').then((m) => m.factoryJobDefinition()),
23
+ [RootConfig.entities.jobLevel.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/job-level').then((m) => m.factoryJobLevel()),
24
+ [RootConfig.entities.position.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/position').then((m) => m.factoryPosition()),
25
+ [RootConfig.entities.responsibility.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/responsibility').then((m) => m.factoryResponsibility()),
26
+ [RootConfig.entities.responsibilityLevel.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/responsibility-level').then((m) => m.factoryResponsibilityLevel()),
27
+ [RootConfig.entities.team.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/team').then((m) => m.factoryTeam()),
28
+ [RootConfig.entities.teamBusinessUnit.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/team-business-unit').then((m) => m.factoryTeamBusinessUnit()),
29
+ [RootConfig.entities.teamMember.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/team-member').then((m) => m.factoryTeamMember()),
30
+ [RootConfig.entities.teamMemberRole.name]: () => import('@acorex-platform/module-organization-management-client/contracts/entities/team-member-role').then((m) => m.factoryTeamMemberRole()),
31
+ },
32
+ });
33
+ }
34
+ //#endregion
35
+
36
+ /**
37
+ * Generated bundle index. Do not edit.
38
+ */
39
+
40
+ export { provideOrganizationManagementLocalEntities };
41
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-local-entities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-local-entities.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/organization-management/client/src/lib/acorex-platform-module-organization-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers organization-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideOrganizationManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.businessUnit.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/business-unit').then((m) => m.factoryBusinessUnit()),\n [RootConfig.entities.businessUnitType.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/business-unit-type').then((m) => m.factoryBusinessUnitType()),\n [RootConfig.entities.chart.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/chart').then((m) => m.factoryChart()),\n [RootConfig.entities.company.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/company').then((m) => m.factoryCompany()),\n [RootConfig.entities.jobDefinition.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/job-definition').then((m) => m.factoryJobDefinition()),\n [RootConfig.entities.jobLevel.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/job-level').then((m) => m.factoryJobLevel()),\n [RootConfig.entities.position.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/position').then((m) => m.factoryPosition()),\n [RootConfig.entities.responsibility.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/responsibility').then((m) => m.factoryResponsibility()),\n [RootConfig.entities.responsibilityLevel.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/responsibility-level').then((m) => m.factoryResponsibilityLevel()),\n [RootConfig.entities.team.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/team').then((m) => m.factoryTeam()),\n [RootConfig.entities.teamBusinessUnit.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/team-business-unit').then((m) => m.factoryTeamBusinessUnit()),\n [RootConfig.entities.teamMember.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/team-member').then((m) => m.factoryTeamMember()),\n [RootConfig.entities.teamMemberRole.name]: () =>\n import('@acorex-platform/module-organization-management-client/contracts/entities/team-member-role').then((m) => m.factoryTeamMemberRole()),\n },\n });\n}\n\nexport { organizationManagementLocalEntityCatalog } from '@acorex-platform/module-organization-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,0CAA0C,GAAA;AACxD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,MACvC,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACxI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAC3C,OAAO,8FAA8F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AACjJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,MAChC,OAAO,iFAAiF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;AACzH,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,MAClC,OAAO,mFAAmF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;AAC7H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,MACxC,OAAO,0FAA0F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;AAC1I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,qFAAqF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AAChI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,oFAAoF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AAC/H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,MACzC,OAAO,0FAA0F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC3I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,MAC9C,OAAO,gGAAgG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC;AACtJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,MAC/B,OAAO,gFAAgF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACvH,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAC3C,OAAO,8FAA8F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AACjJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,MACrC,OAAO,uFAAuF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;AACpI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,MACzC,OAAO,4FAA4F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC9I,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnDA;;AAEG;;"}