@acorex/modules 21.0.0-next.43 → 21.0.0-next.44

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 (114) hide show
  1. package/fesm2022/acorex-modules-ai-management.mjs +31 -225
  2. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs} +16 -19
  4. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs → acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs → acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs.map → acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs → acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs.map → acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs → acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs.map → acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs → acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs.map → acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs → acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs → acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs.map} +1 -1
  25. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  26. package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-Dqhk5reQ.mjs → acorex-modules-organization-management-acorex-modules-organization-management-CGzZcKEy.mjs} +141 -578
  27. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-CGzZcKEy.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-pnxqURIQ.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BEJyfR3P.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-pnxqURIQ.mjs.map → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BEJyfR3P.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-DbHKd1Nd.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-DKgxg9q5.mjs} +2 -2
  31. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-DbHKd1Nd.mjs.map → acorex-modules-organization-management-add-position-to-business-unit.command-DKgxg9q5.mjs.map} +1 -1
  32. package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-DJJT7BXT.mjs +130 -0
  33. package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-DJJT7BXT.mjs.map +1 -0
  34. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-FsF290Im.mjs → acorex-modules-organization-management-business-unit.entity-BAp38sib.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-FsF290Im.mjs.map → acorex-modules-organization-management-business-unit.entity-BAp38sib.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-organization-management-chart.entity-_OJkO2zX.mjs → acorex-modules-organization-management-chart.entity-WfmpWj8R.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-organization-management-chart.entity-_OJkO2zX.mjs.map → acorex-modules-organization-management-chart.entity-WfmpWj8R.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-organization-management-company.entity-Dw7_BvxV.mjs → acorex-modules-organization-management-company.entity-BUVLrwjq.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-organization-management-company.entity-Dw7_BvxV.mjs.map → acorex-modules-organization-management-company.entity-BUVLrwjq.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-organization-management-entity.provider-BWw2RN_V.mjs → acorex-modules-organization-management-entity.provider-DH3eUGTu.mjs} +15 -15
  41. package/fesm2022/{acorex-modules-organization-management-entity.provider-BWw2RN_V.mjs.map → acorex-modules-organization-management-entity.provider-DH3eUGTu.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-D3WYwpy0.mjs → acorex-modules-organization-management-feature-definition.provider-DuScrBze.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-D3WYwpy0.mjs.map → acorex-modules-organization-management-feature-definition.provider-DuScrBze.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-CnS_nu1v.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-D-J9JCsU.mjs} +3 -3
  45. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-CnS_nu1v.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-D-J9JCsU.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-ZTopEh2M.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-Dsy5rFGw.mjs} +3 -3
  47. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-ZTopEh2M.mjs.map → acorex-modules-organization-management-job-definition-responsibilities-page.component-Dsy5rFGw.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-Yyzwqg0v.mjs → acorex-modules-organization-management-job-definition-skills-page.component-B73wLPby.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-Yyzwqg0v.mjs.map → acorex-modules-organization-management-job-definition-skills-page.component-B73wLPby.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-DJjmv1hf.mjs → acorex-modules-organization-management-job-definition.entity-B7mWKYqb.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-DJjmv1hf.mjs.map → acorex-modules-organization-management-job-definition.entity-B7mWKYqb.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DJH3zaNN.mjs → acorex-modules-organization-management-job-level.datasource-DibRoKXR.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DJH3zaNN.mjs.map → acorex-modules-organization-management-job-level.datasource-DibRoKXR.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-organization-management-job-level.entity-DBEFEBzu.mjs → acorex-modules-organization-management-job-level.entity-C_MzeTw5.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-organization-management-job-level.entity-DBEFEBzu.mjs.map → acorex-modules-organization-management-job-level.entity-C_MzeTw5.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-organization-management-menu.provider-yGn338K1.mjs → acorex-modules-organization-management-menu.provider-CQeJINzl.mjs} +3 -2
  57. package/fesm2022/{acorex-modules-organization-management-menu.provider-yGn338K1.mjs.map → acorex-modules-organization-management-menu.provider-CQeJINzl.mjs.map} +1 -1
  58. package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-D3hCHSr_.mjs +228 -0
  59. package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-D3hCHSr_.mjs.map +1 -0
  60. package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-Bv0I-45L.mjs +182 -0
  61. package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-Bv0I-45L.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-DbfYza8q.mjs +170 -0
  63. package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-DbfYza8q.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-C9APxguL.mjs +334 -0
  65. package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-C9APxguL.mjs.map +1 -0
  66. package/fesm2022/{acorex-modules-organization-management-org-chart.page-C1J123cl.mjs → acorex-modules-organization-management-org-chart.page-BcHO5kKP.mjs} +104 -19
  67. package/fesm2022/acorex-modules-organization-management-org-chart.page-BcHO5kKP.mjs.map +1 -0
  68. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs → acorex-modules-organization-management-permission-definition.provider-BcIRJpBt.mjs} +3 -2
  69. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs.map → acorex-modules-organization-management-permission-definition.provider-BcIRJpBt.mjs.map} +1 -1
  70. package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs +56 -0
  71. package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs.map +1 -0
  72. package/fesm2022/{acorex-modules-organization-management-position.entity-BvSjM5Hs.mjs → acorex-modules-organization-management-position.entity-DBOpLtSI.mjs} +2 -2
  73. package/fesm2022/{acorex-modules-organization-management-position.entity-BvSjM5Hs.mjs.map → acorex-modules-organization-management-position.entity-DBOpLtSI.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-CPdbVSno.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-TqYgfnsy.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-CPdbVSno.mjs.map → acorex-modules-organization-management-remove-position-from-business-unit.command-TqYgfnsy.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-CQRcVN6R.mjs → acorex-modules-organization-management-replace-position-assignee.command-BJ2gn0-A.mjs} +2 -2
  77. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-CQRcVN6R.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-BJ2gn0-A.mjs.map} +1 -1
  78. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-Ce3T04Qb.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CZdMLIL-.mjs} +2 -2
  79. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-Ce3T04Qb.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CZdMLIL-.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CIr7JDX-.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BBo97rDN.mjs} +2 -2
  81. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CIr7JDX-.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BBo97rDN.mjs.map} +1 -1
  82. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-BXWso7Ga.mjs → acorex-modules-organization-management-responsibilities-matrix.component-D9oH_Fbb.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-BXWso7Ga.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-D9oH_Fbb.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DB04XTJ8.mjs → acorex-modules-organization-management-responsibility-level.entity-D6IG9Zc7.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DB04XTJ8.mjs.map → acorex-modules-organization-management-responsibility-level.entity-D6IG9Zc7.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BMqhYqJS.mjs → acorex-modules-organization-management-responsibility.entity-BosNxYjW.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BMqhYqJS.mjs.map → acorex-modules-organization-management-responsibility.entity-BosNxYjW.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-organization-management-settings.provider-BhIJkbq_.mjs → acorex-modules-organization-management-settings.provider-CL9C9UXA.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-organization-management-settings.provider-BhIJkbq_.mjs.map → acorex-modules-organization-management-settings.provider-CL9C9UXA.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-DkTtZv7y.mjs → acorex-modules-organization-management-team-business-unit.entity-CYFGTcHe.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-DkTtZv7y.mjs.map → acorex-modules-organization-management-team-business-unit.entity-CYFGTcHe.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-DPqEPpkP.mjs → acorex-modules-organization-management-team-member-role.entity-B5vNDne0.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-DPqEPpkP.mjs.map → acorex-modules-organization-management-team-member-role.entity-B5vNDne0.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-organization-management-team-member.entity-IN-CPv5W.mjs → acorex-modules-organization-management-team-member.entity-DsKuxCRB.mjs} +14 -2
  95. package/fesm2022/acorex-modules-organization-management-team-member.entity-DsKuxCRB.mjs.map +1 -0
  96. package/fesm2022/{acorex-modules-organization-management-team.entity-D7B8ulFX.mjs → acorex-modules-organization-management-team.entity-Cg30cho_.mjs} +2 -2
  97. package/fesm2022/{acorex-modules-organization-management-team.entity-D7B8ulFX.mjs.map → acorex-modules-organization-management-team.entity-Cg30cho_.mjs.map} +1 -1
  98. package/fesm2022/acorex-modules-organization-management.mjs +1 -1
  99. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-CWlgXg_u.mjs → acorex-modules-task-management-acorex-modules-task-management-DDUq9FpA.mjs} +178 -14
  100. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-DDUq9FpA.mjs.map +1 -0
  101. package/fesm2022/{acorex-modules-task-management-task-board.page-Bxpga0DN.mjs → acorex-modules-task-management-task-board.page-C6j-_aSD.mjs} +106 -68
  102. package/fesm2022/acorex-modules-task-management-task-board.page-C6j-_aSD.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  104. package/organization-management/README.md +1 -1
  105. package/package.json +2 -2
  106. package/types/acorex-modules-ai-management.d.ts +25 -67
  107. package/types/acorex-modules-organization-management.d.ts +128 -69
  108. package/types/acorex-modules-task-management.d.ts +12 -1
  109. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs.map +0 -1
  110. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-Dqhk5reQ.mjs.map +0 -1
  111. package/fesm2022/acorex-modules-organization-management-org-chart.page-C1J123cl.mjs.map +0 -1
  112. package/fesm2022/acorex-modules-organization-management-team-member.entity-IN-CPv5W.mjs.map +0 -1
  113. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-CWlgXg_u.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-task-management-task-board.page-Bxpga0DN.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-organization-management-org-chart.page-BcHO5kKP.mjs","sources":["../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/business-unit/org-chart-business-unit-node.component.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/business-unit/org-chart-business-unit-node.component.html","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/company/org-chart-company-node.component.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/company/org-chart-company-node.component.html","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/employee/org-chart-employee-node.component.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/employee/org-chart-employee-node.component.html","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/position/org-chart-position-node.component.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/position/org-chart-position-node.component.html","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/org-chart-node-outlet.component.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/nodes/org-chart-node-outlet.component.html","../../../../libs/modules/organization-management/src/lib/features/organization-chart/services/org-chart-node-contribution.service.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/utils/org-chart-vacant-filter.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/services/org-chart.service.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/page/org-chart.page.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/page/org-chart.page.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXM_ORG_CHART_HOST, type AXMOrgChartHostApi } from '../../tokens/org-chart-host.token';\nimport { AXMOrgChartNodeFooterMetric, AXMOrganizationNode } from '../../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Component ----\n\n/** Business unit node: merged unit (head slot) or compact card. */\n@Component({\n selector: 'axm-org-chart-business-unit-node',\n templateUrl: './org-chart-business-unit-node.component.html',\n imports: [AXButtonModule, AXDecoratorModule, AXPAvatarComponent, AXTranslationModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMOrgChartBusinessUnitNodeComponent {\n protected readonly host: AXMOrgChartHostApi = inject(AXM_ORG_CHART_HOST);\n\n readonly data = input.required<AXMOrganizationNode>();\n\n protected readonly unitFooterMetrics = computed((): AXMOrgChartNodeFooterMetric[] => {\n const node = this.data();\n const items: AXMOrgChartNodeFooterMetric[] = [];\n const roster = this.host.getSubtreeRosterCounts(node);\n if (roster) {\n items.push({\n icon: 'fa-users',\n value: String(roster.people),\n title: this.host.chartML.people,\n });\n items.push({\n icon: 'fa-briefcase',\n value: String(roster.positions),\n title: this.host.chartML.positions,\n });\n }\n const teams = this.host.getTeamsMembershipCount(node);\n if (teams != null && teams > 0) {\n items.push({\n icon: 'fa-people-group',\n value: String(teams),\n title: this.host.chartML.teams,\n });\n }\n return items;\n });\n\n protected isRegional(): boolean {\n return this.data().metadata?.['isRegional'] === true;\n }\n\n protected getColorKey(): string {\n return this.isRegional() ? 'accent1' : 'accent2';\n }\n\n protected resolveNodeColorToken(): string {\n const raw = this.data().metadata?.['unitTypeColor'];\n if (typeof raw === 'string' && raw.trim().length > 0) {\n return raw.trim();\n }\n return this.getColorKey();\n }\n}\n\n//#endregion\n","<div>\n @if (data().metadata?.['chartTemplate'] === 'merged-unit') {\n @let leadIcon = data().icon ?? 'fa-building';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--business-unit\"\n [class.axm-org-chart-card--vacant]=\"!!data().metadata?.['unitHead']?.['vacant']\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors(resolveNodeColorToken())\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle && host.shouldShowOrgCardSubtitle(data())) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n @if (data().metadata?.['unitHead']; as unitHead) {\n <section class=\"axm-org-chart-card__person\">\n <div class=\"axm-org-chart-card__person-label\">{{ host.chartML.buHead | translate | async }}</div>\n <div class=\"axm-org-chart-card__person-row\">\n <axp-avatar\n [fullName]=\"unitHead['employeeName'] ?? ''\"\n [placeholder]=\"unitHead['vacant'] || !unitHead['employeeName']\"\n [size]=\"44\"\n />\n <div class=\"axm-org-chart-card__person-text\">\n @if (unitHead['vacant'] || !unitHead['employeeName']) {\n <span class=\"axm-org-chart-card__person-vacant\">{{\n host.chartML.vacant | translate | async\n }}</span>\n } @else {\n <span class=\"axm-org-chart-card__person-name\">{{ unitHead['employeeName'] }}</span>\n }\n @if (unitHead['positionTitle']) {\n <span class=\"axm-org-chart-card__person-role\">{{ unitHead['positionTitle'] | translate | async }}</span>\n }\n </div>\n </div>\n </section>\n }\n </div>\n @if (unitFooterMetrics().length > 0) {\n <div class=\"axm-org-chart-card__footer\">\n @for (m of unitFooterMetrics(); track $index) {\n <div class=\"axm-org-chart-card__metric\">\n <i [class]=\"'fa-light fa-fw axm-org-chart-card__metric-icon ' + m.icon\"></i>\n <div class=\"axm-org-chart-card__metric-col\">\n <span class=\"axm-org-chart-card__metric-value\">{{ m.value }}</span>\n <span\n class=\"axm-org-chart-card__metric-title\"\n [title]=\"(m.title | translate | async) ?? ''\"\n >{{ m.title | translate | async }}</span\n >\n </div>\n </div>\n }\n </div>\n }\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n } @else {\n @let leadIcon = data().icon ?? 'fa-building';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--business-unit\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors(resolveNodeColorToken())\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle && host.shouldShowOrgCardSubtitle(data())) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n </div>\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXM_ORG_CHART_HOST, type AXMOrgChartHostApi } from '../../tokens/org-chart-host.token';\nimport { AXMOrgChartNodeFooterMetric, AXMOrganizationNode } from '../../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Component ----\n\n/** Company node: merged executive (Chief executive slot) or compact company card. */\n@Component({\n selector: 'axm-org-chart-company-node',\n templateUrl: './org-chart-company-node.component.html',\n imports: [AXButtonModule, AXDecoratorModule, AXPAvatarComponent, AXTranslationModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMOrgChartCompanyNodeComponent {\n protected readonly host: AXMOrgChartHostApi = inject(AXM_ORG_CHART_HOST);\n\n readonly data = input.required<AXMOrganizationNode>();\n\n protected readonly companyFooterMetrics = computed((): AXMOrgChartNodeFooterMetric[] => {\n const node = this.data();\n const items: AXMOrgChartNodeFooterMetric[] = [];\n const roster = this.host.getSubtreeRosterCounts(node);\n if (roster) {\n items.push({\n icon: 'fa-users',\n value: String(roster.people),\n title: this.host.chartML.people,\n });\n items.push({\n icon: 'fa-briefcase',\n value: String(roster.positions),\n title: this.host.chartML.positions,\n });\n }\n const teams = this.host.getTeamsMembershipCount(node);\n if (teams != null && teams > 0) {\n items.push({\n icon: 'fa-people-group',\n value: String(teams),\n title: this.host.chartML.teams,\n });\n }\n return items;\n });\n}\n\n//#endregion\n","<div>\n @if (data().metadata?.['chartTemplate'] === 'merged-executive') {\n @let leadIcon = data().icon ?? 'fa-building';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--company\"\n [class.axm-org-chart-card--vacant]=\"!!data().metadata?.['topRole']?.['vacant']\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('primary')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n @if (data().metadata?.['topRole']; as topRole) {\n <section class=\"axm-org-chart-card__person\">\n <div class=\"axm-org-chart-card__person-label\">{{ host.chartML.chiefExecutive | translate | async }}</div>\n <div class=\"axm-org-chart-card__person-row\">\n <axp-avatar\n [fullName]=\"topRole['employeeName'] ?? ''\"\n [placeholder]=\"topRole['vacant'] || !topRole['employeeName']\"\n [size]=\"44\"\n />\n <div class=\"axm-org-chart-card__person-text\">\n @if (topRole['vacant'] || !topRole['employeeName']) {\n <span class=\"axm-org-chart-card__person-vacant\">{{\n host.chartML.vacant | translate | async\n }}</span>\n } @else {\n <span class=\"axm-org-chart-card__person-name\">{{ topRole['employeeName'] }}</span>\n }\n @if (topRole['positionTitle']) {\n <span class=\"axm-org-chart-card__person-role\">{{ topRole['positionTitle'] | translate | async }}</span>\n }\n </div>\n </div>\n </section>\n }\n </div>\n @if (companyFooterMetrics().length > 0) {\n <div class=\"axm-org-chart-card__footer\">\n @for (m of companyFooterMetrics(); track $index) {\n <div class=\"axm-org-chart-card__metric\">\n <i [class]=\"'fa-light fa-fw axm-org-chart-card__metric-icon ' + m.icon\"></i>\n <div class=\"axm-org-chart-card__metric-col\">\n <span class=\"axm-org-chart-card__metric-value\">{{ m.value }}</span>\n <span\n class=\"axm-org-chart-card__metric-title\"\n [title]=\"(m.title | translate | async) ?? ''\"\n >{{ m.title | translate | async }}</span\n >\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else {\n @let leadIcon = data().icon ?? 'fa-building';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--company\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('primary')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n </div>\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXM_ORG_CHART_HOST, type AXMOrgChartHostApi } from '../../tokens/org-chart-host.token';\nimport { AXMOrgChartNodeFooterMetric, AXMOrganizationNode } from '../../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Component ----\n\n/** Employee node: person-forward card or compact icon card. */\n@Component({\n selector: 'axm-org-chart-employee-node',\n templateUrl: './org-chart-employee-node.component.html',\n imports: [AXButtonModule, AXDecoratorModule, AXPAvatarComponent, AXTranslationModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMOrgChartEmployeeNodeComponent {\n protected readonly host: AXMOrgChartHostApi = inject(AXM_ORG_CHART_HOST);\n\n readonly data = input.required<AXMOrganizationNode>();\n\n protected readonly employeeFooterMetrics = computed((): AXMOrgChartNodeFooterMetric[] => {\n const teams = this.host.getTeamsMembershipCount(this.data());\n if (teams == null || teams <= 0) {\n return [];\n }\n return [\n {\n icon: 'fa-people-group',\n value: String(teams),\n title: this.host.chartML.teams,\n },\n ];\n });\n\n /** Frame color for employee merged cards — distinct from business units (`accent2`). */\n protected getColorKey(): string {\n return 'accent3';\n }\n}\n\n//#endregion\n","<div>\n @if (data().metadata?.['chartTemplate'] === 'employee-card') {\n @let titleText = (data().title | translate | async) ?? '';\n @let subtitleText = data().subtitle ? ((data().subtitle | translate | async) ?? '') : '';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--employee\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors(getColorKey())\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--person\">\n <axp-avatar [fullName]=\"titleText\" [placeholder]=\"!titleText.trim()\" [size]=\"56\" />\n <div class=\"axm-org-chart-card__person-text\">\n @if (titleText.trim()) {\n <span class=\"axm-org-chart-card__person-name\" [title]=\"titleText\">{{ titleText }}</span>\n }\n @if (subtitleText) {\n <span class=\"axm-org-chart-card__person-role\">{{ subtitleText }}</span>\n }\n </div>\n </div>\n </div>\n @if (employeeFooterMetrics().length > 0) {\n <div class=\"axm-org-chart-card__footer\">\n @for (m of employeeFooterMetrics(); track $index) {\n <div class=\"axm-org-chart-card__metric\">\n <i [class]=\"'fa-light fa-fw axm-org-chart-card__metric-icon ' + m.icon\"></i>\n <div class=\"axm-org-chart-card__metric-col\">\n <span class=\"axm-org-chart-card__metric-value\">{{ m.value }}</span>\n <span\n class=\"axm-org-chart-card__metric-title\"\n [title]=\"(m.title | translate | async) ?? ''\"\n >{{ m.title | translate | async }}</span\n >\n </div>\n </div>\n }\n </div>\n }\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n } @else {\n @let leadIcon = data().icon ?? 'fa-address-card';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--employee\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('surface')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n </div>\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXM_ORG_CHART_HOST, type AXMOrgChartHostApi } from '../../tokens/org-chart-host.token';\nimport { AXMOrgChartNodeFooterMetric, AXMOrganizationNode } from '../../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Component ----\n\n/** Position node: merged manager (occupant slot), IC seat, or compact card. */\n@Component({\n selector: 'axm-org-chart-position-node',\n templateUrl: './org-chart-position-node.component.html',\n imports: [AXButtonModule, AXDecoratorModule, AXPAvatarComponent, AXTranslationModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMOrgChartPositionNodeComponent {\n protected readonly host: AXMOrgChartHostApi = inject(AXM_ORG_CHART_HOST);\n\n readonly data = input.required<AXMOrganizationNode>();\n\n protected readonly icFooterMetrics = computed((): AXMOrgChartNodeFooterMetric[] => {\n const roster = this.host.getSubtreeRosterCounts(this.data());\n if (!roster) {\n return [];\n }\n return [\n {\n icon: 'fa-users',\n value: String(roster.people),\n title: this.host.chartML.people,\n },\n {\n icon: 'fa-briefcase',\n value: String(roster.positions),\n title: this.host.chartML.positions,\n },\n ];\n });\n\n protected readonly managerFooterMetrics = computed((): AXMOrgChartNodeFooterMetric[] => {\n const stats = this.data().metadata?.['stats'] as Record<string, unknown> | undefined;\n const directReports = stats?.['directReports'];\n if (typeof directReports !== 'number' || !Number.isFinite(directReports) || directReports <= 0) {\n return [];\n }\n return [\n {\n icon: 'fa-users',\n value: String(Math.max(0, Math.floor(directReports))),\n title: this.host.chartML.directReports,\n },\n ];\n });\n}\n\n//#endregion\n","<div>\n @if (data().metadata?.['chartTemplate'] === 'merged-manager') {\n @let leadIcon = 'fa-user-tie';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--position\"\n [class.axm-org-chart-card--vacant]=\"!!data().metadata?.['vacant']\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('accent3')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle && host.shouldShowOrgCardSubtitle(data())) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n </div>\n </div>\n <section class=\"axm-org-chart-card__person\">\n <div class=\"axm-org-chart-card__person-row\">\n <axp-avatar\n [fullName]=\"data().metadata?.['occupant']?.['displayName'] ?? ''\"\n [placeholder]=\"!!data().metadata?.['vacant'] || !data().metadata?.['occupant']?.['displayName']\"\n [size]=\"44\"\n />\n <div class=\"axm-org-chart-card__person-text\">\n @if (!!data().metadata?.['vacant'] || !data().metadata?.['occupant']?.['displayName']) {\n <span class=\"axm-org-chart-card__person-vacant\">{{ host.chartML.vacant | translate | async }}</span>\n } @else {\n <span class=\"axm-org-chart-card__person-name\">{{ data().metadata?.['occupant']?.['displayName'] }}</span>\n }\n @if (\n data().description &&\n !data().metadata?.['vacant'] &&\n data().metadata?.['occupant']?.['displayName']\n ) {\n <span class=\"axm-org-chart-card__person-role\">{{ data().description! | translate | async }}</span>\n }\n </div>\n </div>\n </section>\n </div>\n @if (managerFooterMetrics().length > 0) {\n <div class=\"axm-org-chart-card__footer\">\n @for (m of managerFooterMetrics(); track $index) {\n <div class=\"axm-org-chart-card__metric\">\n <i [class]=\"'fa-light fa-fw axm-org-chart-card__metric-icon ' + m.icon\"></i>\n <div class=\"axm-org-chart-card__metric-col\">\n <span class=\"axm-org-chart-card__metric-value\">{{ m.value }}</span>\n <span\n class=\"axm-org-chart-card__metric-title\"\n [title]=\"(m.title | translate | async) ?? ''\"\n >{{ m.title | translate | async }}</span\n >\n </div>\n </div>\n }\n </div>\n }\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n } @else if (data().metadata?.['chartTemplate'] === 'position-ic') {\n @let leadIcon = data().icon ?? 'fa-user-tie';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--position\"\n [class.axm-org-chart-card--vacant]=\"!!data().metadata?.['vacant']\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('accent3')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n } @else if (data().metadata?.['vacant']) {\n <span class=\"axm-org-chart-card__subtitle\">{{ host.chartML.vacant | translate | async }}</span>\n }\n </div>\n </div>\n </div>\n @if (icFooterMetrics().length > 0) {\n <div class=\"axm-org-chart-card__footer\">\n @for (m of icFooterMetrics(); track $index) {\n <div class=\"axm-org-chart-card__metric\">\n <i [class]=\"'fa-light fa-fw axm-org-chart-card__metric-icon ' + m.icon\"></i>\n <div class=\"axm-org-chart-card__metric-col\">\n <span class=\"axm-org-chart-card__metric-value\">{{ m.value }}</span>\n <span\n class=\"axm-org-chart-card__metric-title\"\n [title]=\"(m.title | translate | async) ?? ''\"\n >{{ m.title | translate | async }}</span\n >\n </div>\n </div>\n }\n </div>\n }\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n } @else {\n @let leadIcon = data().icon ?? 'fa-user-tie';\n <div\n #node\n class=\"--node-container --merged-card axm-org-chart-card axm-org-chart-card--position\"\n [attr.data-chart-node-id]=\"data().id\"\n [class.--selected]=\"host.isNodeSelected(data())\"\n [style]=\"host.getNodeColors('accent3')\"\n (click)=\"host.selectNode(data())\"\n (contextmenu)=\"host.selectNode(data())\"\n >\n <div class=\"--container\">\n <div class=\"axm-org-chart-card__accent\" aria-hidden=\"true\"></div>\n <div class=\"axm-org-chart-card__body\">\n <div class=\"axm-org-chart-card__header axm-org-chart-card__header--org\">\n <div class=\"axm-org-chart-card__leading-icon\">\n <i [class]=\"'fa-light fa-xl fa-fw ' + leadIcon\"></i>\n </div>\n <div class=\"axm-org-chart-card__title-block\">\n <span class=\"axm-org-chart-card__title\" [title]=\"(data().title | translate | async) ?? ''\">{{\n data().title | translate | async\n }}</span>\n @if (data().subtitle) {\n <span class=\"axm-org-chart-card__subtitle\" [title]=\"(data().subtitle! | translate | async) ?? ''\">{{\n data().subtitle! | translate | async\n }}</span>\n }\n @if (data().description) {\n <span class=\"axm-org-chart-card__desc\">{{ data().description | translate | async }}</span>\n }\n </div>\n </div>\n </div>\n @if (data().children && data().children!.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"host.toggleNode(data(), node)\">\n <ax-icon\n icon=\"fa-solid\"\n [class]=\"data().isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","//#region ---- Imports ----\n\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXMOrgChartNodeType, type AXMOrganizationNode } from '../model/org-chart.type';\nimport { AXMOrgChartBusinessUnitNodeComponent } from './business-unit/org-chart-business-unit-node.component';\nimport { AXMOrgChartCompanyNodeComponent } from './company/org-chart-company-node.component';\nimport { AXMOrgChartEmployeeNodeComponent } from './employee/org-chart-employee-node.component';\nimport { AXMOrgChartPositionNodeComponent } from './position/org-chart-position-node.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Picks the org chart card by node type. Uses a static @switch (not NgComponentOutlet) so\n * components render reliably when the host is created in code and moved into an SVG foreignObject.\n */\n@Component({\n selector: 'axm-org-chart-node-outlet',\n templateUrl: './org-chart-node-outlet.component.html',\n styleUrls: ['./org-chart-node-outlet.component.scss'],\n imports: [\n AXMOrgChartCompanyNodeComponent,\n AXMOrgChartBusinessUnitNodeComponent,\n AXMOrgChartPositionNodeComponent,\n AXMOrgChartEmployeeNodeComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'axm-org-chart-node-outlet',\n },\n})\nexport class AXMOrgChartNodeOutletComponent {\n protected readonly NodeTypes = AXMOrgChartNodeType;\n\n readonly data = input.required<AXMOrganizationNode>();\n}\n\n//#endregion\n","@switch (data().type) {\n@case (NodeTypes.Company) {\n<axm-org-chart-company-node [data]=\"data()\" />\n} @case (NodeTypes.BusinessUnit) {\n<axm-org-chart-business-unit-node [data]=\"data()\" />\n} @case (NodeTypes.Position) {\n<axm-org-chart-position-node [data]=\"data()\" />\n} @case (NodeTypes.Employee) {\n<axm-org-chart-employee-node [data]=\"data()\" />\n} @default {\n<axm-org-chart-company-node [data]=\"data()\" />\n} }","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXM_ORG_CHART_NODE_CONTRIBUTOR,\n AXMOrgChartNodeContributionContext,\n AXMOrgChartNodeContributionProvider,\n AXMOrgChartNodeContributorRef,\n AXMOrgChartNodeInfoContribution,\n AXMOrgChartNodeMenuAction,\n} from '../tokens/org-chart-node-contribution.token';\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable()\nexport class AXMOrgChartNodeContributionService {\n /** `inject` typings for this multi-token omit the array wrapper; runtime value is always `T[]`. */\n private readonly contributorSlots: AXMOrgChartNodeContributorRef[] =\n (inject(AXM_ORG_CHART_NODE_CONTRIBUTOR, { optional: true }) as AXMOrgChartNodeContributorRef[] | null) ?? [];\n\n /**\n * Resolves eager contributors and lazy `provideLazyProvider` slots (factory returns a Promise).\n */\n private async resolveContributors(): Promise<AXMOrgChartNodeContributionProvider[]> {\n return Promise.all(this.contributorSlots.map((slot) => Promise.resolve(slot)));\n }\n\n /**\n * Collects and sorts menu actions contributed by all providers for the current node context.\n */\n async getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]> {\n const contributors = await this.resolveContributors();\n const buckets = await Promise.all(contributors.map((provider) => provider.getMenuActions(context)));\n return buckets\n .flat()\n .sort((a, b) => (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER));\n }\n\n /**\n * Collects and sorts related info blocks contributed for the selected node.\n * This is used by the upcoming node detail drawer.\n */\n async getInfoContributions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeInfoContribution[]> {\n const contributors = await this.resolveContributors();\n const buckets = await Promise.all(\n contributors.map((provider) => provider.getInfoContributions?.(context) ?? Promise.resolve([])),\n );\n return buckets\n .flat()\n .sort((a, b) => (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER));\n }\n}\n\n//#endregion\n","import { AXMOrganizationNode, AXMOrgChartNodeType } from '../model/org-chart.type';\n\n/**\n * Drops leaf vacant seat position nodes from the persisted chart tree (matches generator behavior when\n * `showVacantLeafSeats` is false).\n */\nexport function omitVacantLeafSeatNodes(root: AXMOrganizationNode): AXMOrganizationNode {\n const clone = structuredClone(root);\n const visit = (node: AXMOrganizationNode): void => {\n if (!node.children?.length) {\n return;\n }\n node.children = node.children.filter((child) => {\n const hideVacantSeat =\n child.type === AXMOrgChartNodeType.Position && child.metadata?.['vacant'] === true;\n return !hideVacantSeat;\n });\n for (const child of node.children) {\n visit(child);\n }\n };\n visit(clone);\n return clone;\n}\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExportService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPCommandService } from '@acorex/platform/runtime';\n\nimport { createMultiLanguageString } from '@acorex/core/translation';\nimport { AXPDataGenerator, AXPPlatformScope } from '@acorex/platform/core';\nimport { inject, Injectable, signal } from '@angular/core';\n\nimport { RootConfig } from '../../../const';\nimport {\n AXMOrgChartStructurePayload,\n AXMOrganizationManagementChartEntityModel,\n} from '../../../entities/chart/chart.types';\nimport { AXPOrganizationManagementSettings } from '../../../settings.keys';\nimport { omitVacantLeafSeatNodes } from '../utils/org-chart-vacant-filter';\nimport {\n normalizeVacantLeafSeatsSetting,\n type OrgChartHydratedUiPrefs,\n parseOrgChartMode,\n} from '../ui/org-chart-user-ui.helper';\nimport { type OrgChartMode, AXMOrganizationNode, AXMOrgChartNodeType } from '../model/org-chart.type';\n\nexport type { OrgChartMode } from '../model/org-chart.type';\n\n@Injectable()\nexport class AXMOrgChartService {\n private readonly entityService = inject(AXPEntityService);\n private readonly chartData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.chart.name)\n .data<string, AXMOrganizationManagementChartEntityModel>();\n\n private loadingDialog = inject(AXLoadingDialogService);\n private exportService = inject(AXPExportService);\n private translationService = inject(AXTranslationService);\n private commandService = inject(AXPCommandService);\n private readonly settingsService = inject(AXPSettingsService);\n\n private readonly _modesBundle = signal<AXMOrgChartStructurePayload | null>(null);\n private readonly _selectedMode = signal<OrgChartMode>('structure');\n private readonly _showVacantLeafSeats = signal(true);\n\n private readonly _rootNode = signal<AXMOrganizationNode>({\n id: AXPDataGenerator.uuid(),\n type: AXMOrgChartNodeType.Company,\n title: createMultiLanguageString('Company', 'شرکت'),\n });\n\n public readonly rootNode = this._rootNode.asReadonly();\n public readonly selectedMode = this._selectedMode.asReadonly();\n public readonly showVacantLeafSeats = this._showVacantLeafSeats.asReadonly();\n\n /**\n * Applies user prefs resolved before first paint (route resolver). Does not persist.\n */\n applyHydratedUiPrefs(prefs: OrgChartHydratedUiPrefs | undefined): void {\n if (!prefs) {\n return;\n }\n if (prefs.selectedMode !== undefined) {\n this._selectedMode.set(prefs.selectedMode);\n }\n if (prefs.showVacantLeafSeats !== undefined) {\n this._showVacantLeafSeats.set(prefs.showVacantLeafSeats);\n }\n }\n\n /**\n * Applies current mode + vacant visibility from the cached bundle onto {@link rootNode}.\n */\n applyDisplayRoot(): void {\n const bundle = this._modesBundle();\n if (!bundle?.modes) {\n return;\n }\n const modeKey = this._selectedMode();\n let tree = structuredClone(bundle.modes[modeKey]) as AXMOrganizationNode;\n if (!this._showVacantLeafSeats()) {\n tree = omitVacantLeafSeatNodes(tree);\n }\n this._rootNode.set(tree);\n }\n\n public setChartMode(mode: OrgChartMode): void {\n this._selectedMode.set(mode);\n this.applyDisplayRoot();\n this.persistChartMode(mode);\n }\n\n public setShowVacantLeafSeats(value: unknown): void {\n const normalized = normalizeVacantLeafSeatsSetting(value);\n if (normalized === undefined) {\n return;\n }\n this._showVacantLeafSeats.set(normalized);\n this.applyDisplayRoot();\n this.persistShowVacantLeafSeats(normalized);\n }\n\n //#region ---- User chart preferences (settings) ----\n\n /**\n * Reads persisted chart UI preferences into signals (does not persist).\n */\n private async restoreChartUiFromSettings(): Promise<void> {\n try {\n const userScope = this.settingsService.scope(AXPPlatformScope.User);\n const modeRaw = await userScope.get<string | undefined>(\n AXPOrganizationManagementSettings.HierarchyChartMode,\n );\n const mode = parseOrgChartMode(modeRaw);\n if (mode !== undefined) {\n this._selectedMode.set(mode);\n }\n\n const vacantRaw = await userScope.get<unknown>(\n AXPOrganizationManagementSettings.HierarchyChartShowVacantLeafSeats,\n );\n const vacant = normalizeVacantLeafSeatsSetting(vacantRaw);\n if (vacant !== undefined) {\n this._showVacantLeafSeats.set(vacant);\n }\n } catch {\n // Keep constructor defaults when settings are unavailable.\n }\n }\n\n private persistChartMode(mode: OrgChartMode): void {\n void this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPOrganizationManagementSettings.HierarchyChartMode, mode)\n .catch(() => {});\n }\n\n private persistShowVacantLeafSeats(value: boolean): void {\n void this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPOrganizationManagementSettings.HierarchyChartShowVacantLeafSeats, value)\n .catch(() => {});\n }\n\n //#endregion\n\n public async load(): Promise<void> {\n const first = (\n await this.chartData.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'version', dir: 'desc' }],\n })\n ).items[0];\n\n const structure = first?.structure;\n if (\n structure?.modes?.structure &&\n structure?.modes?.location &&\n structure?.modes?.reporting &&\n structure?.modes?.positionHierarchy\n ) {\n this._modesBundle.set(structure);\n await this.restoreChartUiFromSettings();\n this.applyDisplayRoot();\n return;\n }\n\n await this.generate();\n await this.load();\n }\n\n public async generate(): Promise<void> {\n await this.commandService.execute('OrganizationManagement.OrgChart:Generate', {});\n }\n\n //#region ---- Printing ----\n\n async printChart(element: HTMLElement): Promise<void> {\n const d = this.loadingDialog.show({\n title: 'Printing Organization Chart...',\n mode: 'determinate',\n progressColor: 'primary',\n progressValue: 0,\n status: '0/10',\n text: 'Initializing print process...',\n buttons: [{ text: 'Cancel', color: 'danger', onClick: () => d.close() }],\n });\n\n try {\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.preparing-document'),\n 10,\n '1/10',\n );\n const chartElement = element;\n const { originalStyles, modifiedStyles } = this.expandChart(chartElement);\n\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.rendering-chart-image'),\n 25,\n '2.5/10',\n );\n const blob = await this.exportService.generateBlobFromElement(chartElement, {\n popup: true,\n filter: (node: Node) => !(node instanceof Element && node.classList.contains('--toggle')),\n bgcolor: 'transparent',\n scale: 2,\n quality: 1,\n height: Number.parseInt(modifiedStyles.modifiedHeight),\n width: Number.parseInt(modifiedStyles.modifiedWidth),\n });\n\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.finalizing-image-processing'),\n 50,\n '5/10',\n );\n this.restoreChartStyles(chartElement, originalStyles);\n\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.downloading-image'),\n 75,\n '7.5/10',\n );\n this.exportService.download(blob, 'org-chart.png');\n\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.process-complete'),\n 100,\n '10/10',\n );\n setTimeout(() => d.close(), 1500);\n } catch (err) {\n console.error('Error capturing chart:', err);\n await this.updateStep(\n d,\n await this.translate('@organization-management:organization-chart.states.failed-to-generate-chart-image'),\n 100,\n 'Error',\n 'danger',\n );\n d.close();\n }\n }\n\n private expandChart(chartElement: HTMLElement) {\n const originalStyles = {\n originalOverflow: chartElement.style.overflow,\n originalWidth: chartElement.style.width,\n originalHeight: chartElement.style.height,\n };\n const modifiedStyles = {\n modifiedOverflow: 'visible',\n modifiedWidth: `${chartElement.scrollWidth}px`,\n modifiedHeight: `${chartElement.scrollHeight}px`,\n };\n chartElement.style.overflow = modifiedStyles.modifiedOverflow;\n chartElement.style.width = modifiedStyles.modifiedWidth;\n chartElement.style.height = modifiedStyles.modifiedHeight;\n return { originalStyles, modifiedStyles };\n }\n\n private restoreChartStyles(\n chartElement: HTMLElement,\n originalStyles: { originalOverflow: string; originalWidth: string; originalHeight: string },\n ): void {\n chartElement.style.overflow = originalStyles.originalOverflow;\n chartElement.style.width = originalStyles.originalWidth;\n chartElement.style.height = originalStyles.originalHeight;\n }\n\n private async updateStep(\n dialog: any,\n text: string,\n progress: number,\n status: string,\n color: AXStyleColorType = 'primary',\n ): Promise<void> {\n return new Promise((resolve) => {\n dialog.setProgressColor(color);\n dialog.setProgressText(text);\n dialog.setProgressValue(progress);\n dialog.setProgressStatus(status);\n resolve();\n });\n }\n\n private async translate(key: string): Promise<string> {\n return (await this.translationService.translateAsync(key)) + '...';\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTranslationModule, createMultiLanguageString, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXStyleColorType } from '@acorex/cdk/common';\nimport {\n AXPActionMenuItem,\n AXPBreadcrumbItem,\n AXPDeviceService,\n AXPExecuteCommand,\n AXPMultiLanguageString,\n getActionButton,\n} from '@acorex/platform/core';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ComponentRef,\n computed,\n ElementRef,\n inject,\n Injector,\n LOCALE_ID,\n NgZone,\n signal,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport set from 'lodash-es/set';\nimport { RootConfig } from '../../../const';\nimport { AXMOrgChartStructureRefreshHub } from '../model/org-chart-structure-refresh.hub';\nimport { AXMOrgChartDetailPanelComponent } from '../views/detail-panel/org-chart-detail-panel.component';\nimport { AXMOrgChartNodeOutletComponent } from '../nodes/org-chart-node-outlet.component';\nimport { AXM_ORG_CHART_HOST, type AXMOrgChartHostApi } from '../tokens/org-chart-host.token';\nimport {\n AXMOrgChartNodeContributionContext,\n AXMOrgChartNodeKind,\n AXMOrgChartNodeMenuAction,\n} from '../tokens/org-chart-node-contribution.token';\nimport { AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID } from '../constants/org-chart-employee-submenu.const';\nimport { AXMOrgChartNodeContributionService } from '../services/org-chart-node-contribution.service';\nimport { AXMOrgChartService, OrgChartMode } from '../services/org-chart.service';\nimport type { OrgChartHydratedUiPrefs } from '../ui/org-chart-user-ui.helper';\nimport { AXMOrganizationNode, AXMOrgChartCategory, AXMOrgChartNodeType } from '../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Org chart context menu item type ----\n\n/**\n * Row while building: {@link AXMOrgChartNodeMenuAction.break} `before` / `both` becomes `orgChartBreakBefore` here,\n * then `materializeOrgChartMenuBreaks` turns that into `AXMenuItem.break` on the **previous** row and clears the flag.\n */\ntype AXMOrgChartContextMenuItem = AXMenuItem & { orgChartBreakBefore?: boolean };\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Component for displaying and interacting with an organizational chart.\n */\n@Component({\n templateUrl: './org-chart.page.html',\n styleUrls: ['./org-chart.page.scss'],\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXPanViewDirective,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXSwitchModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXMOrgChartDetailPanelComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXMOrgChartService,\n AXMOrgChartNodeContributionService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage,\n },\n { provide: AXM_ORG_CHART_HOST, useExisting: AXMOrgChartPage },\n ],\n})\nexport class AXMOrgChartPage extends AXPPageLayoutBaseComponent implements AXMOrgChartHostApi {\n //#region ---- Services & Dependencies ----\n\n protected readonly rootConfig = RootConfig;\n\n private d3!: typeof import('d3');\n\n private treeContainer = viewChild.required<ElementRef<HTMLDivElement>>('chart');\n private parent = viewChild.required<ElementRef<HTMLDivElement>>('parent');\n private contextMenu = viewChild(AXContextMenuComponent);\n private panView = viewChild(AXPanViewDirective);\n\n private ngzone = inject(NgZone);\n private pageInjector = inject(Injector);\n private viewContainerRef = inject(ViewContainerRef);\n // printing is handled by service itself\n protected chartService = inject(AXMOrgChartService);\n private readonly nodeContributionService = inject(AXMOrgChartNodeContributionService);\n\n private readonly route = inject(ActivatedRoute);\n\n private readonly localeId = inject(LOCALE_ID);\n\n protected readonly deviceService = inject(AXPDeviceService);\n\n private readonly orgChartStructureRefreshHub = inject(AXMOrgChartStructureRefreshHub);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n this.chartService.applyHydratedUiPrefs(\n this.route.snapshot.data['orgChartUi'] as OrgChartHydratedUiPrefs | undefined,\n );\n\n effect(() => {\n const rev = this.orgChartStructureRefreshHub.structureDataRevision();\n if (rev === 0) {\n return;\n }\n void this.reloadChartFromPersistedStructure();\n });\n }\n\n //#endregion\n\n //#region ---- Chart State & UI Metadata ----\n\n private readonly NODE_STROKE_COLOR = 'rgba(var(--ax-sys-color-primary-400))';\n private readonly LINK_STROKE_WIDTH = 1;\n\n /**\n * SVG `foreignObject` viewport and tree layout spacing.\n * Keep card `min-width` in `org-chart.page.scss` aligned with {@link chartNodeWidth}.\n */\n private readonly chartNodeWidth = 360;\n private readonly chartNodeHeight = 280;\n private readonly chartHorizontalSpacing = 24;\n private readonly chartVerticalSpacing = 48;\n /** Nudges card content inside the allocated foreignObject band (connectors use rendered bounds). */\n private readonly chartNodeYOffset = 10;\n\n protected isFullscreen = signal(false);\n protected panX = signal(0);\n protected panY = signal(0);\n protected panZoomLevel = signal(100);\n protected readonly zoomPercentageLabel = computed(() => `${Math.round(this.panZoomLevel())}%`);\n\n protected isChartRendered = false;\n protected selectedNodeId = signal<string | null>(null);\n /** Large layouts: optional side panel with {@link getNodeInfoItems} for the selected node (same UX pattern as document drive). */\n protected isDetailPanelOpen = signal(false);\n private activeContextNode: AXMOrganizationNode | null = null;\n private activeContextMenuActions = new Map<string, AXMOrgChartNodeMenuAction>();\n\n protected nodeTypes = [\n { title: 'Company', color: 'primary', icon: 'fal fa-building', category: AXMOrgChartCategory.Company },\n { title: 'Business Unit', color: 'accent2', icon: 'fal fa-sitemap', category: AXMOrgChartCategory.BusinessUnit },\n { title: 'Position', color: 'accent3', icon: 'fal fa-user-tie', category: AXMOrgChartCategory.Position },\n { title: 'Employee', color: 'surface', icon: 'fal fa-address-card', category: AXMOrgChartCategory.Employee },\n ];\n\n /**\n * UI chrome for chart cards; align copy with `organization-chart.organization-chart.nodes` / mock `org-chart-labels`.\n */\n public readonly chartML = {\n vacant: createMultiLanguageString('Vacant', 'خالی'),\n directReports: createMultiLanguageString('Direct reports', 'گزارش مستقیم'),\n teams: createMultiLanguageString('Teams', 'تیم‌ها'),\n people: createMultiLanguageString('People', 'اعضا'),\n positions: createMultiLanguageString('Positions', 'سمت‌ها'),\n /** Label above the chief executive slot on merged company cards. */\n chiefExecutive: createMultiLanguageString('Chief executive', 'مدیر اجرایی'),\n buHead: createMultiLanguageString('Head', 'سرپرست'),\n buPosition: createMultiLanguageString('Position', 'عنوان سمت'),\n unitType: createMultiLanguageString('Unit type', 'نوع واحد'),\n businessUnit: createMultiLanguageString('Business unit', 'واحد سازمانی'),\n location: createMultiLanguageString('Location', 'موقعیت'),\n code: createMultiLanguageString('Code', 'کد'),\n capacity: createMultiLanguageString('Capacity', 'ظرفیت'),\n level: createMultiLanguageString('Level', 'سطح'),\n email: createMultiLanguageString('Email', 'ایمیل'),\n phone: createMultiLanguageString('Phone', 'تلفن'),\n employmentType: createMultiLanguageString('Employment type', 'نوع همکاری'),\n workMode: createMultiLanguageString('Work mode', 'نحوه کار'),\n more: '@organization-management:organization-chart.node-actions.more',\n add: '@organization-management:organization-chart.node-actions.add',\n noActionsAvailable: '@organization-management:organization-chart.node-actions.no-actions',\n };\n\n /**\n * Selected tree node for the detail panel; stays in sync with {@link selectedNodeId}.\n */\n protected readonly detailPanelSelectedNode = computed(() => {\n const id = this.selectedNodeId();\n if (id == null || id === '') {\n return null;\n }\n return this.findNodeInTree(this.chartService.rootNode(), id);\n });\n\n /** Bound to `ax-search-box` in the page toolbar. */\n protected chartSearchQuery = '';\n private chartSearchPendingPresentation: 'none' | 'fit-all' | 'fit-one' = 'none';\n private chartSearchPendingFocusId: string | null = null;\n\n //#endregion\n\n //#region ---- Initialization ----\n\n #initialize = afterNextRender(async () => {\n this.d3 = await import('d3');\n\n await this.refresh();\n });\n\n //#endregion\n\n //#region ---- Detail Panel ----\n\n public toggleDetailPanel(): void {\n this.isDetailPanelOpen.update((open) => !open);\n }\n\n /**\n * Expands or collapses a node's branch and redraws the chart.\n */\n public setNodeBranchExpanded(data: AXMOrganizationNode, expanded: boolean): void {\n data.isExpanded = expanded;\n this.selectNode(data);\n this.redrawChart();\n }\n\n //#endregion\n\n //#region ---- Pan & Fullscreen ----\n\n /**\n * Zooms in the chart.\n */\n protected zoomIn() {\n this.panView()?.zoomIn();\n }\n\n /**\n * Zooms out the chart.\n */\n protected zoomOut() {\n this.panView()?.zoomOut();\n }\n\n /**\n * Resets the zoom level and pan position of the chart.\n */\n protected zoomReset() {\n this.panView()?.resetPosition();\n }\n\n /**\n * Toggles fullscreen mode for the chart.\n */\n protected toggleFullscreen() {\n if (this.isFullscreen()) {\n document.exitFullscreen();\n this.isFullscreen.set(false);\n } else {\n this.parent().nativeElement.requestFullscreen();\n this.isFullscreen.set(true);\n }\n document.querySelector(`foreignObject[node=\"node-${this.chartService.rootNode().id}\"]`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'center',\n });\n }\n\n //#endregion\n\n //#region ---- Chart Search ----\n\n protected onChartSearchValueChanged(event: AXValueChangedEvent<string | null>): void {\n const v = event.value;\n this.chartSearchQuery = typeof v === 'string' ? v : '';\n this.applyChartSearchFromQuery();\n }\n\n private applyChartSearchFromQuery(): void {\n const q = this.chartSearchQuery.trim().toLowerCase();\n if (!q) {\n this.chartSearchPendingPresentation = 'none';\n this.chartSearchPendingFocusId = null;\n this.applySearchHitClasses(new Set());\n return;\n }\n const matches = this.findNodesMatchingChartSearch(this.chartService.rootNode(), q);\n if (matches.length === 0) {\n this.chartSearchPendingPresentation = 'none';\n this.chartSearchPendingFocusId = null;\n this.applySearchHitClasses(new Set());\n return;\n }\n for (const node of matches) {\n this.ensureExpandedPathToNode(node.id);\n }\n this.chartSearchPendingPresentation = matches.length === 1 ? 'fit-one' : 'fit-all';\n this.chartSearchPendingFocusId = matches.length === 1 ? matches[0].id : null;\n this.redrawChart();\n }\n\n private completeChartRenderPresentation(): void {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.ngzone.run(() => {\n const q = this.chartSearchQuery.trim().toLowerCase();\n const mode = this.chartSearchPendingPresentation;\n const focusId = this.chartSearchPendingFocusId;\n this.chartSearchPendingPresentation = 'none';\n this.chartSearchPendingFocusId = null;\n\n if (!q) {\n this.applySearchHitClasses(new Set());\n return;\n }\n const matches = this.findNodesMatchingChartSearch(this.chartService.rootNode(), q);\n this.applySearchHitClasses(new Set(matches.map((m) => m.id)));\n if (matches.length === 0) {\n return;\n }\n if (mode === 'fit-one' && focusId != null && focusId !== '') {\n const node = this.findNodeInTree(this.chartService.rootNode(), focusId);\n if (node) {\n this.selectNode(node);\n }\n this.panView()?.resetPosition();\n requestAnimationFrame(() => this.centerChartOnForeignObject(focusId));\n } else if (mode === 'fit-all') {\n this.panView()?.resetPosition();\n }\n });\n });\n });\n }\n\n private findNodesMatchingChartSearch(root: AXMOrganizationNode, q: string): AXMOrganizationNode[] {\n const all: AXMOrganizationNode[] = [];\n this.collectAllChartNodes(root, all);\n return all.filter((n) => this.nodeMatchesChartSearchText(n, q));\n }\n\n private collectAllChartNodes(node: AXMOrganizationNode, out: AXMOrganizationNode[]): void {\n out.push(node);\n for (const child of node.children ?? []) {\n this.collectAllChartNodes(child, out);\n }\n }\n\n private nodeMatchesChartSearchText(node: AXMOrganizationNode, q: string): boolean {\n const parts: string[] = [];\n parts.push(resolveMultiLanguageString(node.title, this.localeId));\n if (node.subtitle != null) {\n parts.push(resolveMultiLanguageString(node.subtitle, this.localeId));\n }\n if (node.description != null) {\n parts.push(resolveMultiLanguageString(node.description, this.localeId));\n }\n const haystack = parts.join(' ').trim().toLowerCase();\n return haystack.includes(q);\n }\n\n private findPathToRootNode(root: AXMOrganizationNode, id: string): AXMOrganizationNode[] | null {\n if (root.id === id) {\n return [root];\n }\n for (const child of root.children ?? []) {\n const sub = this.findPathToRootNode(child, id);\n if (sub) {\n return [root, ...sub];\n }\n }\n return null;\n }\n\n private ensureExpandedPathToNode(targetId: string): void {\n const path = this.findPathToRootNode(this.chartService.rootNode(), targetId);\n if (path == null) {\n return;\n }\n for (let i = 0; i < path.length - 1; i++) {\n path[i].isExpanded = true;\n }\n }\n\n private applySearchHitClasses(ids: ReadonlySet<string>): void {\n const nodes = document.querySelectorAll('foreignObject.axp-chart-node');\n for (let i = 0; i < nodes.length; i++) {\n const fo = nodes[i] as HTMLElement;\n const raw = fo.getAttribute('node');\n const nodeId = raw?.startsWith('node-') === true ? raw.slice('node-'.length) : (raw ?? '');\n const container = fo.querySelector('.--node-container') as HTMLElement | null;\n if (container == null) {\n continue;\n }\n if (ids.has(nodeId)) {\n container.classList.add('--search-hit');\n } else {\n container.classList.remove('--search-hit');\n }\n }\n }\n\n private centerChartOnForeignObject(nodeId: string): void {\n const fo = document.querySelector(`foreignObject[node=\"node-${nodeId}\"]`) as HTMLElement | null;\n const panel = this.parent().nativeElement;\n if (fo == null) {\n return;\n }\n const foRect = fo.getBoundingClientRect();\n const cRect = panel.getBoundingClientRect();\n const dx = cRect.left + cRect.width / 2 - (foRect.left + foRect.width / 2);\n const dy = cRect.top + cRect.height / 2 - (foRect.top + foRect.height / 2);\n this.panX.update((x) => x + dx);\n this.panY.update((y) => y + dy);\n this.syncPanViewTransformFromSignals();\n }\n\n /**\n * Applies the same transform formula as {@link AXPanViewDirective} so programmatic pan updates take effect immediately.\n */\n private syncPanViewTransformFromSignals(): void {\n const el = this.treeContainer().nativeElement;\n el.style.transform = `translate(${this.panX()}px, ${this.panY()}px) scale(${this.panZoomLevel() / 100})`;\n }\n\n //#endregion\n\n //#region ---- Chart Layout Metrics ----\n\n /**\n * Calculates the maximum depth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum depth of the chart.\n */\n private calculateMaxDepth(node: AXMOrganizationNode): number {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return 1 + Math.max(...node.children.map((child) => this.calculateMaxDepth(child)));\n }\n\n /**\n * Calculates the maximum breadth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum breadth of the chart.\n */\n private calculateMaxBreadth(node: AXMOrganizationNode): number {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return node.children.reduce((acc, child) => acc + this.calculateMaxBreadth(child), 0);\n }\n\n //#endregion\n\n //#region ---- Chart Rendering ----\n\n /**\n * Creates and renders the organizational chart.\n * @param el - The container element for the chart.\n * @param data - The root node of the organizational chart.\n */\n createChart(el: Element, data: AXMOrganizationNode): void {\n if (!this.d3) {\n return;\n }\n const nw = this.chartNodeWidth;\n const nh = this.chartNodeHeight;\n const hGap = this.chartHorizontalSpacing;\n const vGap = this.chartVerticalSpacing;\n const yOff = this.chartNodeYOffset;\n\n this.ngzone.runOutsideAngular(() => {\n this.clearChart(el);\n const newSvg = this.d3.select(el).append('svg');\n\n const root = this.d3.hierarchy(data);\n\n root.descendants().forEach((node: any) => {\n if (node.data.isExpanded === false) {\n node.children = undefined;\n }\n });\n\n const treeLayout = this.d3\n .tree<AXMOrganizationNode>()\n .nodeSize([nw + hGap, nh + vGap]);\n\n treeLayout(root);\n\n let minX = Infinity,\n maxX = -Infinity,\n minY = Infinity,\n maxY = -Infinity;\n root.descendants().forEach((d: any) => {\n if (d.x < minX) minX = d.x;\n if (d.x > maxX) maxX = d.x;\n if (d.y < minY) minY = d.y;\n if (d.y > maxY) maxY = d.y;\n });\n\n const CONTAINER_WIDTH = maxX - minX + nw + 2 * hGap;\n const CONTAINER_HEIGHT = maxY - minY + nh + 2 * vGap;\n\n newSvg.attr('width', CONTAINER_WIDTH).attr('height', CONTAINER_HEIGHT);\n\n const g = newSvg\n .append('g')\n .attr(\n 'transform',\n `translate(${-minX + nw / 2 + hGap / 2}, ${-minY + nh / 2 + vGap / 2})`,\n );\n\n const linksLayer = g.append('g').attr('class', 'axp-chart-links');\n const nodesLayer = g.append('g').attr('class', 'axp-chart-nodes');\n\n linksLayer\n .selectAll<SVGPathElement, { source: any; target: any }>('.link')\n .data(root.links())\n .enter()\n .append('path')\n .attr('class', 'link')\n .attr('d', (d: { source: any; target: any }) => this.computeOrgChartLinkPath(d, nw, nh, yOff))\n .attr('fill', 'none')\n .attr('stroke', this.NODE_STROKE_COLOR)\n .attr('stroke-width', this.LINK_STROKE_WIDTH)\n .attr('from', (d: any) => `node-${d.source.data.id}`)\n .attr('to', (d: any) => `node-${d.target.data.id}`);\n\n nodesLayer\n .selectAll('.axp-chart-node')\n .data(root.descendants())\n .enter()\n .append('foreignObject')\n .attr('class', 'axp-chart-node')\n .attr('node', (d: any) => `node-${d.data.id}`)\n .attr('x', (d: any) => d.x - nw / 2)\n .attr('y', (d: any) => d.y - nh / 2 + yOff)\n .attr('width', nw)\n .attr('height', nh)\n .each((d: any) => this.renderNodeTemplate(d.data, d.x, d.y));\n\n const svgEl = newSvg.node();\n if (svgEl) {\n this.scheduleChartLinkPathRefresh(svgEl, nw, nh, yOff);\n }\n });\n if (!this.isChartRendered) {\n // document.querySelector(`foreignObject[node=\"node-${data.id}\"] .--heading-container`)?.scrollIntoView({\n // behavior: 'smooth',\n // block: 'center',\n // inline: 'center',\n // });\n this.isChartRendered = true;\n this.panView()?.resetPosition();\n }\n this.ngzone.run(() => {\n this.completeChartRenderPresentation();\n });\n }\n\n /**\n * Orthogonal elbow between two nodes using measured card bounds inside each foreignObject when available.\n */\n private computeOrgChartLinkPath(\n d: { source: any; target: any },\n nodeWidth: number,\n nodeHeight: number,\n nodeYOffset: number,\n ): string {\n const source = d.source;\n const target = d.target;\n const EDGE_PADDING = 2;\n const MIN_VERTICAL_GAP = 10;\n\n const sourceBounds = this.getRenderedNodeBounds(source.data.id);\n const targetBounds = this.getRenderedNodeBounds(target.data.id);\n\n const foSourceTop = source.y - nodeHeight / 2 + nodeYOffset;\n const foTargetTop = target.y - nodeHeight / 2 + nodeYOffset;\n\n let sourceBottomY =\n sourceBounds != null\n ? foSourceTop + sourceBounds.topOffset + sourceBounds.height\n : source.y + nodeHeight / 2 + nodeYOffset - EDGE_PADDING;\n\n let targetTopY =\n targetBounds != null\n ? foTargetTop + targetBounds.topOffset\n : target.y - nodeHeight / 2 + nodeYOffset + EDGE_PADDING;\n\n sourceBottomY += EDGE_PADDING;\n targetTopY -= EDGE_PADDING;\n\n if (sourceBottomY >= targetTopY - MIN_VERTICAL_GAP) {\n sourceBottomY = source.y + nodeYOffset;\n targetTopY = target.y - 10;\n }\n\n return `M${source.x},${sourceBottomY}V${(sourceBottomY + targetTopY) / 2}H${target.x}V${targetTopY}`;\n }\n\n /**\n * Node templates render asynchronously; remap connectors after layout so edges use real card heights.\n */\n private scheduleChartLinkPathRefresh(\n svg: SVGSVGElement,\n nodeWidth: number,\n nodeHeight: number,\n nodeYOffset: number,\n ): void {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.ngzone.runOutsideAngular(() => {\n this.refreshChartLinkPaths(svg, nodeWidth, nodeHeight, nodeYOffset);\n });\n });\n });\n });\n }\n\n private refreshChartLinkPaths(\n svg: SVGSVGElement,\n nodeWidth: number,\n nodeHeight: number,\n nodeYOffset: number,\n ): void {\n if (!this.d3) {\n return;\n }\n this.d3\n .select(svg)\n .selectAll<SVGPathElement, { source: any; target: any }>('g.axp-chart-links path.link')\n .attr('d', (d) => this.computeOrgChartLinkPath(d, nodeWidth, nodeHeight, nodeYOffset));\n }\n\n /**\n * Reads rendered bounds for a node card inside its foreignObject.\n */\n private getRenderedNodeBounds(nodeId: string | number): { topOffset: number; height: number } | null {\n const foreignObject = document.querySelector(`foreignObject[node=\"node-${nodeId}\"]`) as HTMLElement | null;\n const nodeContainer = foreignObject?.querySelector('.--node-container') as HTMLElement | null;\n if (!foreignObject || !nodeContainer) {\n return null;\n }\n return {\n topOffset: nodeContainer.offsetTop,\n height: nodeContainer.offsetHeight,\n };\n }\n\n /**\n * Renders the node template for a given organizational node.\n * @param data - The node data.\n * @param x - The x-coordinate of the node.\n * @param y - The y-coordinate of the node.\n */\n private renderNodeTemplate(data: AXMOrganizationNode, _x: number, _y: number): void {\n if (data.type == null) {\n set(data, 'type', AXMOrgChartNodeType.Company);\n }\n set(data, 'category', data.type);\n\n // D3 runs inside runOutsideAngular; created views must be updated inside the zone.\n this.ngzone.run(() => {\n // Dynamic subviews can use an injector that does not inherit the page `providers`.\n // Bridge `AXM_ORG_CHART_HOST` explicitly so child node components can inject it.\n const nodeTreeInjector = Injector.create({\n parent: this.pageInjector,\n providers: [{ provide: AXM_ORG_CHART_HOST, useValue: this as AXMOrgChartHostApi }],\n });\n\n const ref: ComponentRef<AXMOrgChartNodeOutletComponent> = this.viewContainerRef.createComponent(\n AXMOrgChartNodeOutletComponent,\n { injector: nodeTreeInjector },\n );\n ref.setInput('data', data);\n\n const nodeElement = this.d3.select(this.treeContainer().nativeElement).select(`[node=\"node-${data.id}\"]`);\n const element = nodeElement.node() as HTMLElement | null;\n if (element) {\n element.appendChild(ref.location.nativeElement);\n ref.changeDetectorRef.detectChanges();\n } else {\n ref.destroy();\n }\n });\n }\n\n /**\n * Toggles the expansion state of a node.\n * @param data - The node data.\n * @param el - The HTML element representing the node.\n */\n public toggleNode(data: AXMOrganizationNode, _el?: HTMLDivElement | null) {\n data.isExpanded = data.isExpanded === undefined ? false : !data.isExpanded;\n this.selectedNodeId.set(data.id);\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n // el.scrollIntoView({\n // behavior: 'smooth',\n // });\n }\n\n /**\n * Clears the chart from the container element.\n * @param el - The container element.\n */\n private clearChart(el: Element): void {\n if (this.d3) {\n this.d3.select(el).select('svg').remove();\n this.viewContainerRef.clear();\n }\n }\n\n private redrawChart(): void {\n if (!this.d3 || !this.treeContainer()?.nativeElement) {\n return;\n }\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n }\n\n private async refresh() {\n await this.chartService.load();\n if (this.d3) {\n this.redrawChart();\n }\n }\n\n /**\n * Invoked when chart JSON was rebuilt outside this page (e.g. mock listener after entity changes).\n */\n private async reloadChartFromPersistedStructure(): Promise<void> {\n await this.refresh();\n this.recompute();\n }\n\n protected onVacantLeafSeatsChange(event: AXValueChangedEvent<boolean>): void {\n if (!event.isUserInteraction) {\n return;\n }\n this.chartService.setShowVacantLeafSeats(event.value);\n this.redrawChart();\n }\n\n //#endregion\n\n //#region ---- Context Menu ----\n\n /**\n * Handles right-click on the chart surface. Context menu items must be ready before `showAt`;\n * `AXContextMenuComponent` assigns `items` synchronously after `onOpening`, so async `onOpening` handlers leave the menu empty.\n */\n protected onOrgChartSurfaceContextMenu(e: MouseEvent): void {\n const hit = e.target instanceof HTMLElement ? e.target : null;\n const container = hit?.closest('.axp-chart-node .--node-container');\n if (!(container instanceof HTMLElement)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n void this.openOrgChartContextMenuFromDom(e.clientX, e.clientY, container);\n }\n\n private async openOrgChartContextMenuFromDom(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n ): Promise<void> {\n const node = this.resolveNodeFromTarget(targetElement);\n if (!node) {\n return;\n }\n await this.openOrgChartContextMenuAt(clientX, clientY, node, targetElement);\n }\n\n /**\n * Turns carry {@link AXMOrgChartContextMenuItem.orgChartBreakBefore} into `AXMenuItem.break` on the **previous**\n * sibling at the same level. Recurses into nested flyouts, then removes `orgChartBreakBefore`.\n */\n private materializeOrgChartMenuBreaks(items: AXMOrgChartContextMenuItem[]): void {\n if (items.length === 0) {\n return;\n }\n\n for (const entry of items) {\n if (entry.items != null && entry.items.length > 0) {\n this.materializeOrgChartMenuBreaks(entry.items as AXMOrgChartContextMenuItem[]);\n }\n }\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].orgChartBreakBefore === true && i > 0) {\n items[i - 1].break = true;\n }\n delete items[i].orgChartBreakBefore;\n }\n }\n\n /**\n * Removes a trailing `break` on the last row at each nesting level so the menu does not show a divider after the final item.\n * Recursive for nested flyouts.\n */\n private normalizeOrgChartContextMenuBreaks(items: AXMOrgChartContextMenuItem[]): void {\n if (items.length === 0) {\n return;\n }\n\n for (const entry of items) {\n if (entry.items != null && entry.items.length > 0) {\n this.normalizeOrgChartContextMenuBreaks(entry.items as AXMOrgChartContextMenuItem[]);\n }\n }\n\n const last = items[items.length - 1];\n if (last.break === true) {\n last.break = false;\n }\n }\n\n /**\n * Whether this action renders `AXMenuItem.break` after its **row**: `break` `after` / `both`, and\n * {@link AXMOrgChartNodeMenuAction.submenuSectionBreak} (separator after this row at any nesting level, including\n * root when the Employee flyout is flattened on employee cards).\n */\n private menuActionRowBreakAfter(action: AXMOrgChartNodeMenuAction): boolean {\n const b = action.break;\n const hasAfter = b === 'after' || b === 'both';\n return action.submenuSectionBreak === true || hasAfter;\n }\n\n /** `break` `before` / `both` for carry / bucket (not for inner-only submenuSectionBreak). */\n private menuActionHasBreakBefore(action: AXMOrgChartNodeMenuAction): boolean {\n return action.break === 'before' || action.break === 'both';\n }\n\n /** `after` / `both` for grouped parent bucket trailing separator. */\n private menuActionContributesGroupBreakAfter(action: AXMOrgChartNodeMenuAction): boolean {\n return action.break === 'after' || action.break === 'both';\n }\n\n /**\n * Loads actions, assigns menu structures, then opens the context menu with a pre-filled opening event (`items`\n * must be populated before {@link AXContextMenuComponent.showAt}: async `onOpening` alone loses the assignment).\n */\n private async openOrgChartContextMenuAt(\n clientX: number,\n clientY: number,\n node: AXMOrganizationNode,\n targetElement: HTMLElement,\n ): Promise<void> {\n this.selectNode(node);\n this.activeContextNode = node;\n this.activeContextMenuActions.clear();\n\n const context = this.createNodeContributionContext(node);\n const actions = await this.nodeContributionService.getMenuActions(context);\n\n const items: AXMOrgChartContextMenuItem[] = [];\n if (!actions.length) {\n items.push({\n name: 'org-chart.no-actions',\n text: this.chartML.noActionsAvailable,\n icon: 'fa-light fa-circle-info',\n disabled: true,\n });\n } else {\n const addFlyoutActions = actions.filter((action) => action.nestedInAddFlyout === true);\n const otherActions = actions.filter((action) => action.nestedInAddFlyout !== true);\n\n if (addFlyoutActions.length > 0) {\n items.push({\n name: 'org-chart.group.add',\n text: this.chartML.add,\n icon: 'fa-light fa-plus',\n break: true,\n items: addFlyoutActions.map((action) => this.buildContextMenuLeafItem(action)),\n } as AXMOrgChartContextMenuItem);\n }\n\n const nonAddMenuActions =\n context.nodeKind === 'employee'\n ? otherActions.map((action) =>\n action.submenuGroupId === AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID\n ? {\n ...action,\n submenuGroupId: undefined,\n submenuGroupTitle: undefined,\n submenuGroupIcon: undefined,\n }\n : action,\n )\n : otherActions;\n\n items.push(...this.buildGroupedNonAddContextMenuItems(nonAddMenuActions));\n }\n\n this.materializeOrgChartMenuBreaks(items);\n this.normalizeOrgChartContextMenuBreaks(items);\n\n const menu = this.contextMenu();\n if (!menu) {\n return;\n }\n\n this.ngzone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items: items as AXMenuItem[],\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n /**\n * Builds top-level rows for actions not under {@link AXMOrgChartNodeMenuAction.nestedInAddFlyout},\n * collapsing {@link AXMOrgChartNodeMenuAction.submenuGroupId} sets into one flyout.\n */\n private buildGroupedNonAddContextMenuItems(actions: AXMOrgChartNodeMenuAction[]): AXMOrgChartContextMenuItem[] {\n type GroupBucket = {\n title: AXPMultiLanguageString;\n icon?: string;\n actions: AXMOrgChartNodeMenuAction[];\n breakAfter: boolean;\n breakBefore: boolean;\n };\n\n const groups = new Map<string, GroupBucket>();\n const singles: AXMOrgChartNodeMenuAction[] = [];\n\n for (const action of actions) {\n const gid = action.submenuGroupId?.trim();\n if (!gid) {\n singles.push(action);\n continue;\n }\n let bucket = groups.get(gid);\n if (!bucket) {\n bucket = {\n title: action.submenuGroupTitle as any,\n icon: action.submenuGroupIcon,\n actions: [],\n breakAfter: false,\n breakBefore: false,\n };\n groups.set(gid, bucket);\n }\n bucket.actions.push(action);\n if (this.menuActionContributesGroupBreakAfter(action)) {\n bucket.breakAfter = true;\n }\n if (this.menuActionHasBreakBefore(action)) {\n bucket.breakBefore = true;\n }\n if (!bucket.icon && action.submenuGroupIcon) {\n bucket.icon = action.submenuGroupIcon;\n }\n }\n\n type OrderedEntry =\n | { kind: 'single'; action: AXMOrgChartNodeMenuAction }\n | { kind: 'group'; groupId: string };\n\n const ordered: OrderedEntry[] = [];\n for (const action of singles) {\n ordered.push({ kind: 'single', action });\n }\n for (const groupId of groups.keys()) {\n ordered.push({ kind: 'group', groupId });\n }\n\n const orderOf = (entry: OrderedEntry): number => {\n if (entry.kind === 'single') {\n return entry.action.order ?? Number.MAX_SAFE_INTEGER;\n }\n const bucket = groups.get(entry.groupId);\n if (!bucket || bucket.actions.length === 0) {\n return Number.MAX_SAFE_INTEGER;\n }\n return Math.min(...bucket.actions.map((a) => a.order ?? Number.MAX_SAFE_INTEGER));\n };\n ordered.sort((a, b) => orderOf(a) - orderOf(b));\n\n const items: AXMOrgChartContextMenuItem[] = [];\n for (const entry of ordered) {\n if (entry.kind === 'single') {\n items.push(this.buildContextMenuLeafItem(entry.action));\n continue;\n }\n const bucket = groups.get(entry.groupId);\n if (!bucket || bucket.actions.length === 0) {\n continue;\n }\n const sortedMembers = [...bucket.actions].sort(\n (a, b) => (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER),\n );\n if (sortedMembers.length === 1 && entry.groupId !== AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID) {\n items.push(this.buildContextMenuLeafItem(sortedMembers[0]));\n continue;\n }\n items.push({\n name: `org-chart.submenu.${entry.groupId}`,\n text: bucket.title,\n icon: bucket.icon ?? 'fa-light fa-comments',\n break: bucket.breakAfter,\n orgChartBreakBefore: bucket.breakBefore === true,\n items: sortedMembers.map((action) => this.buildContextMenuLeafItem(action)),\n } as AXMOrgChartContextMenuItem);\n }\n return items;\n }\n\n private buildContextMenuLeafItem(action: AXMOrgChartNodeMenuAction): AXMOrgChartContextMenuItem {\n this.activeContextMenuActions.set(action.id, action);\n return {\n name: action.id,\n text: action.title as any,\n icon: action.icon,\n color: action.color as AXStyleColorType | undefined,\n disabled: action.disabled,\n break: this.menuActionRowBreakAfter(action),\n orgChartBreakBefore: this.menuActionHasBreakBefore(action),\n };\n }\n\n protected async handleContextMenuItemClick(e: AXContextMenuItemsClickEvent): Promise<void> {\n const actionId = e.item.name;\n if (!actionId || !this.activeContextNode) {\n return;\n }\n const action = this.activeContextMenuActions.get(actionId);\n if (!action || action.disabled) {\n return;\n }\n await action.execute(this.createNodeContributionContext(this.activeContextNode));\n }\n\n //#endregion\n\n //#region ---- Node Selection & Host API ----\n\n public isNodeSelected(data: AXMOrganizationNode): boolean {\n return this.selectedNodeId() === data.id;\n }\n\n public selectNode(data: AXMOrganizationNode): void {\n this.selectedNodeId.set(data.id);\n }\n\n public openNodeContextMenuFromMore(event: unknown, data: AXMOrganizationNode): void {\n const nativeEvent = this.resolveNativeMouseEvent(event);\n if (!nativeEvent) {\n return;\n }\n nativeEvent.preventDefault();\n nativeEvent.stopPropagation();\n const fromCurrent =\n nativeEvent.currentTarget instanceof HTMLElement\n ? nativeEvent.currentTarget.closest('.--node-container')\n : null;\n const fromTarget =\n nativeEvent.target instanceof HTMLElement ? nativeEvent.target.closest('.--node-container') : null;\n const fromPoint = document.elementFromPoint(nativeEvent.clientX, nativeEvent.clientY);\n const anchor = (fromCurrent ?? fromTarget ?? fromPoint) as HTMLElement | null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openOrgChartContextMenuAt(nativeEvent.clientX, nativeEvent.clientY, data, anchor);\n }\n\n private resolveNodeFromTarget(target: HTMLElement | undefined): AXMOrganizationNode | null {\n if (!target) {\n return null;\n }\n let el: HTMLElement | null = target;\n while (el) {\n const id = el.getAttribute('data-chart-node-id');\n if (id) {\n const fromTree = this.findNodeInTree(this.chartService.rootNode(), id);\n if (fromTree) {\n return fromTree;\n }\n }\n el = el.parentElement;\n }\n const directNode = (target as unknown as { __data__?: { data?: AXMOrganizationNode } }).__data__?.data;\n if (directNode && typeof (directNode as AXMOrganizationNode).id === 'string') {\n return directNode as AXMOrganizationNode;\n }\n const foreignObject = target.closest('foreignObject.axp-chart-node') as unknown as\n | { __data__?: { data?: AXMOrganizationNode } }\n | null;\n const fromFo = foreignObject?.__data__?.data;\n if (fromFo && typeof (fromFo as AXMOrganizationNode).id === 'string') {\n return fromFo as AXMOrganizationNode;\n }\n return null;\n }\n\n private findNodeInTree(root: AXMOrganizationNode, id: string): AXMOrganizationNode | null {\n if (root.id === id) {\n return root;\n }\n for (const child of root.children ?? []) {\n const found = this.findNodeInTree(child, id);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private resolveNativeMouseEvent(event: unknown): MouseEvent | null {\n if (event instanceof MouseEvent) {\n return event;\n }\n if (\n typeof event === 'object' &&\n event != null &&\n 'nativeEvent' in event &&\n (event as { nativeEvent?: unknown }).nativeEvent instanceof MouseEvent\n ) {\n return (event as { nativeEvent: MouseEvent }).nativeEvent;\n }\n return null;\n }\n\n private createNodeContributionContext(node: AXMOrganizationNode): AXMOrgChartNodeContributionContext {\n return {\n node,\n nodeKind: this.resolveNodeKind(node),\n selectedMode: this.chartService.selectedMode(),\n refreshChart: async () => {\n await this.refresh();\n this.recompute();\n },\n host: this,\n };\n }\n\n private resolveNodeKind(node: AXMOrganizationNode): AXMOrgChartNodeKind {\n if (node.type === AXMOrgChartNodeType.Company) {\n return 'company-root';\n }\n if (node.type === AXMOrgChartNodeType.BusinessUnit) {\n return 'business-unit';\n }\n if (node.type === AXMOrgChartNodeType.Position) {\n return 'position';\n }\n if (node.type === AXMOrgChartNodeType.Employee) {\n return 'employee';\n }\n return 'other';\n }\n\n //#endregion\n\n //#region ---- Print & Card Presentation ----\n\n /**\n * Prints the organizational chart.\n */\n protected async printChart() {\n let [panX, panY, panZoomLevel] = [this.panX(), this.panY(), this.panZoomLevel()];\n (this.panX.set(0), this.panY.set(0), this.panZoomLevel.set(100));\n await this.chartService.printChart(this.treeContainer().nativeElement);\n (this.panX.set(panX), this.panY.set(panY), this.panZoomLevel.set(panZoomLevel));\n }\n\n /**\n * Parses hex or comma-separated `rgb(...)` into comma-separated channels for `rgba(var(--node-*))`.\n */\n private parseCssColorToRgbCommaChannels(color: string): string | null {\n const s = color.trim();\n const hex6 = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(s);\n if (hex6) {\n return `${parseInt(hex6[1], 16)}, ${parseInt(hex6[2], 16)}, ${parseInt(hex6[3], 16)}`;\n }\n const hex3 = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i.exec(s);\n if (hex3) {\n return `${parseInt(hex3[1] + hex3[1], 16)}, ${parseInt(hex3[2] + hex3[2], 16)}, ${parseInt(hex3[3] + hex3[3], 16)}`;\n }\n const rgb = /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/i.exec(s);\n if (rgb) {\n return `${rgb[1]}, ${rgb[2]}, ${rgb[3]}`;\n }\n return null;\n }\n\n private contrastingRgbCommaChannels(bgComma: string): string {\n const parts = bgComma.split(',').map((p) => Number(p.trim()));\n const [r, g, b] = parts;\n const luminance = 0.2126 * (r / 255) + 0.7152 * (g / 255) + 0.0722 * (b / 255);\n return luminance > 0.55 ? '15, 23, 42' : '255, 255, 255';\n }\n\n private darkenRgbCommaChannels(bgComma: string, factor: number): string {\n const parts = bgComma.split(',').map((p) => Math.round(Number(p.trim()) * factor));\n return `${parts[0]}, ${parts[1]}, ${parts[2]}`;\n }\n\n /**\n * Gets the node colors based on the provided color.\n * @param color - Semantic token (for example primary, accent2) or a literal CSS color (hex / rgb).\n * @returns An object containing the node's background, text, and border colors.\n */\n public getNodeColors(color: string): Record<string, string> {\n const literal = this.parseCssColorToRgbCommaChannels(color);\n if (literal) {\n return {\n '--node-bg-color': literal,\n '--node-text-color': this.contrastingRgbCommaChannels(literal),\n '--node-border-color': this.darkenRgbCommaChannels(literal, 0.82),\n };\n }\n if (color.includes('surface')) {\n return {\n '--node-bg-color': `var(--ax-sys-color-${color})`,\n '--node-text-color': `var(--ax-sys-color-on-${color})`,\n '--node-border-color': `var(--ax-sys-color-border-${color})`,\n };\n }\n return {\n '--node-bg-color': `var(--ax-sys-color-${color}-surface)`,\n '--node-text-color': `var(--ax-sys-color-on-${color}-surface)`,\n '--node-border-color': `var(--ax-sys-color-border-${color}-surface)`,\n };\n }\n\n /**\n * Merged cards render the assignee in the body; suppressing `subtitle` avoids repeating name/role lines\n * (including for charts persisted before subtitle generation was tightened).\n */\n public shouldShowOrgCardSubtitle(data: AXMOrganizationNode): boolean {\n const md = data.metadata ?? {};\n const template = md['chartTemplate'];\n if (template === 'merged-unit') {\n const uh = md['unitHead'] as Record<string, unknown> | undefined;\n if (uh && uh['vacant'] !== true && typeof uh['employeeName'] === 'string' && uh['employeeName'].trim().length > 0) {\n return false;\n }\n }\n if (template === 'merged-manager') {\n if (md['vacant'] === true) {\n return true;\n }\n const occ = md['occupant'] as Record<string, unknown> | undefined;\n const dn = occ?.['displayName'];\n if (typeof dn === 'string' && dn.trim().length > 0) {\n return false;\n }\n }\n return true;\n }\n\n //#endregion\n\n //#region ---- Node Card Data ----\n\n public getSubtreeRosterCounts(data: AXMOrganizationNode): { people: number; positions: number } | null {\n if (\n data.type === AXMOrgChartNodeType.Position &&\n data.metadata?.['chartTemplate'] === 'position-ic'\n ) {\n const stats = data.metadata?.['stats'] as Record<string, unknown> | undefined;\n const subtreePeopleRaw = stats?.['subtreePeople'];\n let people: number;\n if (typeof subtreePeopleRaw === 'number' && Number.isFinite(subtreePeopleRaw)) {\n people = Math.max(0, Math.floor(subtreePeopleRaw));\n } else if (data.metadata?.['vacant'] === true) {\n people = 0;\n } else {\n const childCount = data.children?.length ?? 0;\n people = childCount > 0 ? childCount : 1;\n }\n /** One catalog seat row in the chart. */\n return { people, positions: 1 };\n }\n if (data.type !== AXMOrgChartNodeType.BusinessUnit && data.type !== AXMOrgChartNodeType.Company) {\n return null;\n }\n if (data.metadata?.['isRegional'] === true) {\n return null;\n }\n const stats = data.metadata?.['stats'] as Record<string, unknown> | undefined;\n const peopleRaw = stats?.['subtreePeople'];\n const positionsRaw = stats?.['subtreePositionSeatCount'];\n if (typeof peopleRaw !== 'number' || !Number.isFinite(peopleRaw)) {\n return null;\n }\n if (typeof positionsRaw !== 'number' || !Number.isFinite(positionsRaw)) {\n return null;\n }\n return {\n people: Math.max(0, Math.floor(peopleRaw)),\n positions: Math.max(0, Math.floor(positionsRaw)),\n };\n }\n\n public getTeamsMembershipCount(data: AXMOrganizationNode): number | null {\n const stats = data.metadata?.['stats'];\n const candidates: unknown[] = [\n stats?.['teamMemberships'],\n stats?.['teamMembershipCount'],\n stats?.['teams'],\n stats?.['teamsCount'],\n data.metadata?.['teamMemberships'],\n data.metadata?.['teamMembershipCount'],\n data.metadata?.['teamsCount'],\n data.metadata?.['teams'],\n ];\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isFinite(candidate) && candidate >= 0) {\n return candidate;\n }\n }\n return null;\n }\n\n /**\n * Metadata rows for {@link AXMOrgChartDetailPanelComponent} only (key-value list is not shown on chart cards).\n */\n public getNodeInfoItems(data: AXMOrganizationNode): Array<{ label: AXPMultiLanguageString; value: string }> {\n const metadata = data.metadata ?? {};\n const toText = (value: unknown): string | null => {\n if (value == null) {\n return null;\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed.length ? trimmed : null;\n }\n return null;\n };\n const resolveFirst = (...candidates: unknown[]): string | null => {\n for (const candidate of candidates) {\n const text = toText(candidate);\n if (text != null) {\n return text;\n }\n }\n return null;\n };\n const createInfo = (\n label: AXPMultiLanguageString,\n value: string | null,\n ): { label: AXPMultiLanguageString; value: string } | null => {\n return value == null ? null : { label, value };\n };\n const items: Array<{ label: AXPMultiLanguageString; value: string }> = [];\n const teamMembershipCount = this.getTeamsMembershipCount(data);\n\n if (data.type === AXMOrgChartNodeType.BusinessUnit) {\n const unitHead = metadata['unitHead'] as Record<string, unknown> | undefined;\n if (unitHead) {\n const vacant = unitHead['vacant'] === true;\n const rawName = unitHead['employeeName'];\n const nameText =\n vacant || typeof rawName !== 'string' || !rawName.trim()\n ? resolveMultiLanguageString(this.chartML.vacant, this.localeId)\n : rawName.trim();\n const posRaw = unitHead['positionTitle'];\n let positionText: string | null = null;\n if (typeof posRaw === 'string') {\n const t = posRaw.trim();\n positionText = t.length ? t : null;\n } else if (posRaw != null && typeof posRaw === 'object') {\n const t = resolveMultiLanguageString(posRaw as AXPMultiLanguageString, this.localeId).trim();\n positionText = t.length ? t : null;\n }\n const buLeadRows = [\n createInfo(this.chartML.buHead, nameText),\n createInfo(this.chartML.buPosition, positionText),\n ].filter((item): item is { label: AXPMultiLanguageString; value: string } => item != null);\n items.push(...buLeadRows);\n }\n }\n\n if (data.type === AXMOrgChartNodeType.BusinessUnit || data.type === AXMOrgChartNodeType.Company) {\n const unitType = resolveFirst(metadata['unitTypeTitle'], metadata['unitType'], metadata['typeLabel']);\n const location = resolveFirst(metadata['locationName'], metadata['regionName'], metadata['countryName']);\n const infoCandidates = [\n createInfo(this.chartML.unitType, unitType),\n createInfo(this.chartML.location, location),\n ];\n if (teamMembershipCount != null) {\n infoCandidates.push({ label: this.chartML.teams, value: String(teamMembershipCount) });\n }\n items.push(\n ...infoCandidates.filter((item): item is { label: AXPMultiLanguageString; value: string } => item != null),\n );\n }\n\n if (data.type === AXMOrgChartNodeType.Position) {\n const vacantIcSeat =\n metadata['vacant'] === true && metadata['chartTemplate'] === 'position-ic';\n const ouMl = metadata['organizationalUnitTitle'] as AXPMultiLanguageString | undefined;\n const ouDisplay =\n ouMl != null && typeof ouMl === 'object'\n ? resolveMultiLanguageString(ouMl, this.localeId)\n : null;\n const level = resolveFirst(metadata['jobLevelTitle'], metadata['jobLevel'], metadata['grade']);\n const code = resolveFirst(metadata['code'], metadata['positionCode']);\n const capacity = resolveFirst(metadata['capacity']);\n const positionItems = vacantIcSeat\n ? [createInfo(this.chartML.businessUnit, ouDisplay)]\n : [\n createInfo(this.chartML.businessUnit, ouDisplay),\n createInfo(this.chartML.level, level),\n createInfo(this.chartML.code, code),\n createInfo(this.chartML.capacity, capacity),\n ];\n items.push(\n ...positionItems.filter((item): item is { label: AXPMultiLanguageString; value: string } => item != null),\n );\n }\n\n if (data.type === AXMOrgChartNodeType.Employee || data.metadata?.['chartTemplate'] === 'employee-card') {\n const email = resolveFirst(metadata['email'], metadata['workEmail']);\n const phone = resolveFirst(metadata['phone'], metadata['mobile']);\n const employmentType = resolveFirst(metadata['employmentTypeTitle'], metadata['employmentType']);\n const workMode = resolveFirst(metadata['workModeTitle'], metadata['workMode']);\n const employeeInfo = [\n createInfo(this.chartML.email, email),\n createInfo(this.chartML.phone, phone),\n createInfo(this.chartML.employmentType, employmentType),\n createInfo(this.chartML.workMode, workMode),\n ];\n /** Teams count is rendered on employee chart cards — omit here to avoid duplicate rows. */\n items.push(\n ...employeeInfo.filter((item): item is { label: AXPMultiLanguageString; value: string } => item != null),\n );\n }\n\n return items.slice(0, 8);\n }\n\n //#endregion\n\n //#region ---- Page Layout Integration ----\n\n /**\n * Translation key for the hierarchy chart mode shown under the page title.\n */\n private chartModeDescriptionTranslationKey(mode: OrgChartMode): string {\n const keys: Record<OrgChartMode, string> = {\n structure: '@organization-management:organization-chart.options.mode.structure',\n location: '@organization-management:organization-chart.options.mode.location',\n reporting: '@organization-management:organization-chart.options.mode.reporting',\n positionHierarchy:\n '@organization-management:organization-chart.options.mode.positionHierarchy',\n };\n return keys[mode];\n }\n\n protected updateVar(oldValue: any, newValue: AXMOrgChartCategory) {\n oldValue.cat = newValue;\n }\n\n override async getPageTitle(): Promise<string> {\n return await this.translateService.translateAsync(\n '@organization-management:organization-chart.components.chart.title',\n );\n }\n\n override async getPageDescription(): Promise<string> {\n const mode = this.chartService.selectedMode();\n const modeKey = this.chartModeDescriptionTranslationKey(mode);\n return await this.translateService.translateAsync(modeKey);\n }\n\n protected override getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n const mode = this.chartService.selectedMode();\n const modes: OrgChartMode[] = ['structure', 'location', 'reporting', 'positionHierarchy'];\n return modes.map((m) => ({\n title: this.chartModeDescriptionTranslationKey(m),\n command: {\n name: 'chart-mode',\n metadata: { mode: m, isSelected: mode === m, hideSelectionCheckSuffix: true },\n },\n // Prefix renders `fa-light {{ icon }}` (matches dashboard title-action check placement).\n icon: mode === m ? 'fa-check' : '',\n }));\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n ...getActionButton('print'),\n command: {\n name: 'print',\n },\n },\n {\n ...getActionButton('refresh'),\n command: {\n name: 'refresh',\n },\n },\n ];\n }\n override async getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@organization-management:module.menus.root.title'),\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand) {\n if (command.name === 'chart-mode') {\n const mode = command.metadata?.['mode'] as OrgChartMode | undefined;\n if (mode) {\n this.chartService.setChartMode(mode);\n this.redrawChart();\n this.recompute();\n }\n return;\n }\n if (command.name == 'print') {\n await this.printChart();\n }\n if (command.name == 'refresh') {\n await this.chartService.generate();\n await this.refresh();\n this.recompute();\n }\n }\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n ngOnDestroy(): void {\n this.clearChart(this.treeContainer().nativeElement);\n }\n\n //#endregion\n}\n\n//#endregion\n","<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix>\n <div class=\"ax-flex ax-flex-wrap ax-items-center ax-gap-3\">\n <ax-search-box class=\"ax-w-72\" [(ngModel)]=\"chartSearchQuery\"\n (onValueChanged)=\"onChartSearchValueChanged($event)\" [placeholder]=\"\n ('@organization-management:organization-chart.components.chart.search-placeholder' | translate | async) || ''\n \">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n @if (chartService.selectedMode() !== 'reporting') {\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-shrink-0 ax-whitespace-nowrap\">\n <span class=\"ax-text-sm\">{{\n '@organization-management:organization-chart.components.generate-dialog.fields.show-vacant-leaf-seats.label'\n | translate\n | async\n }}</span>\n <ax-switch [ngModel]=\"chartService.showVacantLeafSeats()\"\n (onValueChanged)=\"onVacantLeafSeatsChange($event)\"></ax-switch>\n </div>\n }\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n @if (deviceService.isLarge()) {\n <ax-button (onClick)=\"toggleDetailPanel()\">\n <ax-icon icon=\"{{ isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-overflow-hidden ax-flex ax-flex-col\">\n <div class=\"ax-flex ax-flex-row ax-gap-4 ax-flex-1 ax-min-h-0 ax-overflow-hidden\" #parent id=\"parent\">\n <div class=\"ax-flex-1 ax-min-w-0 ax-min-h-0 ax-overflow-hidden ax-relative ax-light\">\n <div #chart axPanView [(panX)]=\"panX\" [(panY)]=\"panY\" [freeMode]=\"true\" [(zoom)]=\"panZoomLevel\"\n [fitContent]=\"true\" wrapperClasses=\"h\" class=\"ax-light\" (contextmenu)=\"onOrgChartSurfaceContextMenu($event)\">\n </div>\n <div class=\"axm-org-chart-page__floating-zoom\">\n <ax-button look=\"blank\" class=\"ax-sm __zoom-button\" (onClick)=\"zoomOut()\">\n <ax-icon class=\"fa-solid fa-minus\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm __zoom-value\" [text]=\"zoomPercentageLabel()\"\n (onClick)=\"zoomReset()\"></ax-button>\n <ax-button look=\"blank\" class=\"ax-sm __zoom-button\" (onClick)=\"zoomIn()\">\n <ax-icon class=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n <ax-context-menu [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\">\n </ax-context-menu>\n </div>\n @if (isDetailPanelOpen() && deviceService.isLarge()) {\n <axm-org-chart-detail-panel class=\"ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [node]=\"detailPanelSelectedNode()\" (panelClose)=\"toggleDetailPanel()\" />\n }\n </div>\n </axp-page-content>\n</axp-page-layout>"],"names":["i1","i3","i5","i8","i4"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable } from '@angular/core';
3
- import { g as AXPOrganizationManagementPermissionKeys, R as RootConfig } from './acorex-modules-organization-management-acorex-modules-organization-management-Dqhk5reQ.mjs';
3
+ import { A as AXPOrganizationManagementPermissionKeys } from './acorex-modules-organization-management-permission.keys-DwZNBc12.mjs';
4
+ import { R as RootConfig } from './acorex-modules-organization-management-acorex-modules-organization-management-CGzZcKEy.mjs';
4
5
 
5
6
  //#endregion
6
7
  //#region ---- Permission Definition Provider ----
@@ -73,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
73
74
  }] });
74
75
 
75
76
  export { AXMPermissionDefinitionProvider };
76
- //# sourceMappingURL=acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs.map
77
+ //# sourceMappingURL=acorex-modules-organization-management-permission-definition.provider-BcIRJpBt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs","sources":["../../../../libs/modules/organization-management/src/lib/permission-definition.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\nimport { AXPOrganizationManagementPermissionKeys } from './permission.keys';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Permission Definition Provider for Organization Management Module.\n * Defines permissions based on aggregate roots following domain-driven design principles.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPOrganizationManagementPermissionKeys;\n\n // I18n path constants for cleaner code\n const MODULE_PERMISSIONS = '@organization-management:module.permissions';\n const TEAM_PERMISSIONS = '@organization-management:team.permissions';\n const POSITION_PERMISSIONS = '@organization-management:position.permissions';\n const JOB_DEFINITION_PERMISSIONS = '@organization-management:job-definition.permissions';\n const JOB_LEVEL_PERMISSIONS = '@organization-management:job-level.permissions';\n const RESPONSIBILITY_PERMISSIONS = '@organization-management:responsibility.permissions';\n const BUSINESS_UNIT_PERMISSIONS = '@organization-management:business-unit.permissions';\n const BUSINESS_UNIT_TYPE_PERMISSIONS = '@organization-management:business-unit-type.permissions';\n const CHART_PERMISSIONS = '@organization-management:chart.permissions';\n\n context\n .addGroup(\n RootConfig.module.name,\n `${MODULE_PERMISSIONS}.title`,\n `${MODULE_PERMISSIONS}.description`\n )\n // Aggregate Root: Team (Important Entity - Full CRUD)\n .addPermission(\n keys.Team.Management,\n `${TEAM_PERMISSIONS}.title`,\n `${TEAM_PERMISSIONS}.description`\n )\n .addChild(\n keys.Team.View,\n `${TEAM_PERMISSIONS}.view.title`,\n `${TEAM_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.Team.Create,\n `${TEAM_PERMISSIONS}.create.title`,\n `${TEAM_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.Team.Update,\n `${TEAM_PERMISSIONS}.edit.title`,\n `${TEAM_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.Team.Delete,\n `${TEAM_PERMISSIONS}.delete.title`,\n `${TEAM_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: Position (Important Entity - Full CRUD)\n .addPermission(\n keys.Position.Management,\n `${POSITION_PERMISSIONS}.title`,\n `${POSITION_PERMISSIONS}.description`\n )\n .addChild(\n keys.Position.View,\n `${POSITION_PERMISSIONS}.view.title`,\n `${POSITION_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.Position.Create,\n `${POSITION_PERMISSIONS}.create.title`,\n `${POSITION_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.Position.Update,\n `${POSITION_PERMISSIONS}.edit.title`,\n `${POSITION_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.Position.Delete,\n `${POSITION_PERMISSIONS}.delete.title`,\n `${POSITION_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: JobDefinition (Important Entity - Full CRUD)\n .addPermission(\n keys.JobDefinition.Management,\n `${JOB_DEFINITION_PERMISSIONS}.title`,\n `${JOB_DEFINITION_PERMISSIONS}.description`\n )\n .addChild(\n keys.JobDefinition.View,\n `${JOB_DEFINITION_PERMISSIONS}.view.title`,\n `${JOB_DEFINITION_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.JobDefinition.Create,\n `${JOB_DEFINITION_PERMISSIONS}.create.title`,\n `${JOB_DEFINITION_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.JobDefinition.Update,\n `${JOB_DEFINITION_PERMISSIONS}.edit.title`,\n `${JOB_DEFINITION_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.JobDefinition.Delete,\n `${JOB_DEFINITION_PERMISSIONS}.delete.title`,\n `${JOB_DEFINITION_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: JobLevel (Simple Entity - Management Only)\n .addPermission(\n keys.JobLevel.Management,\n `${JOB_LEVEL_PERMISSIONS}.title`,\n `${JOB_LEVEL_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: Responsibility (Simple Entity - Management Only)\n .addPermission(\n keys.Responsibility.Management,\n `${RESPONSIBILITY_PERMISSIONS}.title`,\n `${RESPONSIBILITY_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: BusinessUnit (Important Entity - Full CRUD)\n .addPermission(\n keys.BusinessUnit.Management,\n `${BUSINESS_UNIT_PERMISSIONS}.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.description`\n )\n .addChild(\n keys.BusinessUnit.View,\n `${BUSINESS_UNIT_PERMISSIONS}.view.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.BusinessUnit.Create,\n `${BUSINESS_UNIT_PERMISSIONS}.create.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.BusinessUnit.Update,\n `${BUSINESS_UNIT_PERMISSIONS}.edit.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.BusinessUnit.Delete,\n `${BUSINESS_UNIT_PERMISSIONS}.delete.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: BusinessUnitType (Simple Entity - Management Only)\n .addPermission(\n keys.BusinessUnitType.Management,\n `${BUSINESS_UNIT_TYPE_PERMISSIONS}.title`,\n `${BUSINESS_UNIT_TYPE_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: Chart (Simple Entity - Management Only)\n .addPermission(\n keys.Chart.Management,\n `${CHART_PERMISSIONS}.title`,\n `${CHART_PERMISSIONS}.description`\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-organization-management-permission-definition.provider-BcIRJpBt.mjs","sources":["../../../../libs/modules/organization-management/src/lib/permission-definition.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\nimport { AXPOrganizationManagementPermissionKeys } from './permission.keys';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Permission Definition Provider for Organization Management Module.\n * Defines permissions based on aggregate roots following domain-driven design principles.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPOrganizationManagementPermissionKeys;\n\n // I18n path constants for cleaner code\n const MODULE_PERMISSIONS = '@organization-management:module.permissions';\n const TEAM_PERMISSIONS = '@organization-management:team.permissions';\n const POSITION_PERMISSIONS = '@organization-management:position.permissions';\n const JOB_DEFINITION_PERMISSIONS = '@organization-management:job-definition.permissions';\n const JOB_LEVEL_PERMISSIONS = '@organization-management:job-level.permissions';\n const RESPONSIBILITY_PERMISSIONS = '@organization-management:responsibility.permissions';\n const BUSINESS_UNIT_PERMISSIONS = '@organization-management:business-unit.permissions';\n const BUSINESS_UNIT_TYPE_PERMISSIONS = '@organization-management:business-unit-type.permissions';\n const CHART_PERMISSIONS = '@organization-management:chart.permissions';\n\n context\n .addGroup(\n RootConfig.module.name,\n `${MODULE_PERMISSIONS}.title`,\n `${MODULE_PERMISSIONS}.description`\n )\n // Aggregate Root: Team (Important Entity - Full CRUD)\n .addPermission(\n keys.Team.Management,\n `${TEAM_PERMISSIONS}.title`,\n `${TEAM_PERMISSIONS}.description`\n )\n .addChild(\n keys.Team.View,\n `${TEAM_PERMISSIONS}.view.title`,\n `${TEAM_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.Team.Create,\n `${TEAM_PERMISSIONS}.create.title`,\n `${TEAM_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.Team.Update,\n `${TEAM_PERMISSIONS}.edit.title`,\n `${TEAM_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.Team.Delete,\n `${TEAM_PERMISSIONS}.delete.title`,\n `${TEAM_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: Position (Important Entity - Full CRUD)\n .addPermission(\n keys.Position.Management,\n `${POSITION_PERMISSIONS}.title`,\n `${POSITION_PERMISSIONS}.description`\n )\n .addChild(\n keys.Position.View,\n `${POSITION_PERMISSIONS}.view.title`,\n `${POSITION_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.Position.Create,\n `${POSITION_PERMISSIONS}.create.title`,\n `${POSITION_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.Position.Update,\n `${POSITION_PERMISSIONS}.edit.title`,\n `${POSITION_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.Position.Delete,\n `${POSITION_PERMISSIONS}.delete.title`,\n `${POSITION_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: JobDefinition (Important Entity - Full CRUD)\n .addPermission(\n keys.JobDefinition.Management,\n `${JOB_DEFINITION_PERMISSIONS}.title`,\n `${JOB_DEFINITION_PERMISSIONS}.description`\n )\n .addChild(\n keys.JobDefinition.View,\n `${JOB_DEFINITION_PERMISSIONS}.view.title`,\n `${JOB_DEFINITION_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.JobDefinition.Create,\n `${JOB_DEFINITION_PERMISSIONS}.create.title`,\n `${JOB_DEFINITION_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.JobDefinition.Update,\n `${JOB_DEFINITION_PERMISSIONS}.edit.title`,\n `${JOB_DEFINITION_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.JobDefinition.Delete,\n `${JOB_DEFINITION_PERMISSIONS}.delete.title`,\n `${JOB_DEFINITION_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: JobLevel (Simple Entity - Management Only)\n .addPermission(\n keys.JobLevel.Management,\n `${JOB_LEVEL_PERMISSIONS}.title`,\n `${JOB_LEVEL_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: Responsibility (Simple Entity - Management Only)\n .addPermission(\n keys.Responsibility.Management,\n `${RESPONSIBILITY_PERMISSIONS}.title`,\n `${RESPONSIBILITY_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: BusinessUnit (Important Entity - Full CRUD)\n .addPermission(\n keys.BusinessUnit.Management,\n `${BUSINESS_UNIT_PERMISSIONS}.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.description`\n )\n .addChild(\n keys.BusinessUnit.View,\n `${BUSINESS_UNIT_PERMISSIONS}.view.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.view.description`\n )\n .addChild(\n keys.BusinessUnit.Create,\n `${BUSINESS_UNIT_PERMISSIONS}.create.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.create.description`\n )\n .addChild(\n keys.BusinessUnit.Update,\n `${BUSINESS_UNIT_PERMISSIONS}.edit.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.edit.description`\n )\n .addChild(\n keys.BusinessUnit.Delete,\n `${BUSINESS_UNIT_PERMISSIONS}.delete.title`,\n `${BUSINESS_UNIT_PERMISSIONS}.delete.description`\n )\n .endPermission()\n // Aggregate Root: BusinessUnitType (Simple Entity - Management Only)\n .addPermission(\n keys.BusinessUnitType.Management,\n `${BUSINESS_UNIT_TYPE_PERMISSIONS}.title`,\n `${BUSINESS_UNIT_TYPE_PERMISSIONS}.description`\n )\n .endPermission()\n // Aggregate Root: Chart (Simple Entity - Management Only)\n .addPermission(\n keys.Chart.Management,\n `${CHART_PERMISSIONS}.title`,\n `${CHART_PERMISSIONS}.description`\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ const AXPOrganizationManagementPermissionKeys = {
2
+ OrganizationManagement: {
3
+ Management: 'OrganizationManagement:Permission:OrganizationManagement.Management',
4
+ },
5
+ // Important Entity - Full CRUD
6
+ Team: {
7
+ Management: 'OrganizationManagement:Permission:Team.Management',
8
+ View: 'OrganizationManagement:Permission:Team.View',
9
+ Create: 'OrganizationManagement:Permission:Team.Create',
10
+ Update: 'OrganizationManagement:Permission:Team.Update',
11
+ Delete: 'OrganizationManagement:Permission:Team.Delete',
12
+ },
13
+ // Important Entity - Full CRUD
14
+ Position: {
15
+ Management: 'OrganizationManagement:Permission:Position.Management',
16
+ View: 'OrganizationManagement:Permission:Position.View',
17
+ Create: 'OrganizationManagement:Permission:Position.Create',
18
+ Update: 'OrganizationManagement:Permission:Position.Update',
19
+ Delete: 'OrganizationManagement:Permission:Position.Delete',
20
+ },
21
+ // Important Entity - Full CRUD
22
+ JobDefinition: {
23
+ Management: 'OrganizationManagement:Permission:JobDefinition.Management',
24
+ View: 'OrganizationManagement:Permission:JobDefinition.View',
25
+ Create: 'OrganizationManagement:Permission:JobDefinition.Create',
26
+ Update: 'OrganizationManagement:Permission:JobDefinition.Update',
27
+ Delete: 'OrganizationManagement:Permission:JobDefinition.Delete',
28
+ },
29
+ // Simple Entity - Management Only
30
+ JobLevel: {
31
+ Management: 'OrganizationManagement:Permission:JobLevel.Management',
32
+ },
33
+ // Simple Entity - Management Only
34
+ Responsibility: {
35
+ Management: 'OrganizationManagement:Permission:Responsibility.Management',
36
+ },
37
+ // Important Entity - Full CRUD
38
+ BusinessUnit: {
39
+ Management: 'OrganizationManagement:Permission:BusinessUnit.Management',
40
+ View: 'OrganizationManagement:Permission:BusinessUnit.View',
41
+ Create: 'OrganizationManagement:Permission:BusinessUnit.Create',
42
+ Update: 'OrganizationManagement:Permission:BusinessUnit.Update',
43
+ Delete: 'OrganizationManagement:Permission:BusinessUnit.Delete',
44
+ },
45
+ // Simple Entity - Management Only
46
+ BusinessUnitType: {
47
+ Management: 'OrganizationManagement:Permission:BusinessUnitType.Management',
48
+ },
49
+ // Simple Entity - Management Only
50
+ Chart: {
51
+ Management: 'OrganizationManagement:Permission:Chart.Management',
52
+ },
53
+ };
54
+
55
+ export { AXPOrganizationManagementPermissionKeys as A };
56
+ //# sourceMappingURL=acorex-modules-organization-management-permission.keys-DwZNBc12.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-organization-management-permission.keys-DwZNBc12.mjs","sources":["../../../../libs/modules/organization-management/src/lib/permission.keys.ts"],"sourcesContent":["export const AXPOrganizationManagementPermissionKeys = {\n OrganizationManagement: {\n Management: 'OrganizationManagement:Permission:OrganizationManagement.Management',\n },\n // Important Entity - Full CRUD\n Team: {\n Management: 'OrganizationManagement:Permission:Team.Management',\n View: 'OrganizationManagement:Permission:Team.View',\n Create: 'OrganizationManagement:Permission:Team.Create',\n Update: 'OrganizationManagement:Permission:Team.Update',\n Delete: 'OrganizationManagement:Permission:Team.Delete',\n },\n // Important Entity - Full CRUD\n Position: {\n Management: 'OrganizationManagement:Permission:Position.Management',\n View: 'OrganizationManagement:Permission:Position.View',\n Create: 'OrganizationManagement:Permission:Position.Create',\n Update: 'OrganizationManagement:Permission:Position.Update',\n Delete: 'OrganizationManagement:Permission:Position.Delete',\n },\n // Important Entity - Full CRUD\n JobDefinition: {\n Management: 'OrganizationManagement:Permission:JobDefinition.Management',\n View: 'OrganizationManagement:Permission:JobDefinition.View',\n Create: 'OrganizationManagement:Permission:JobDefinition.Create',\n Update: 'OrganizationManagement:Permission:JobDefinition.Update',\n Delete: 'OrganizationManagement:Permission:JobDefinition.Delete',\n },\n // Simple Entity - Management Only\n JobLevel: {\n Management: 'OrganizationManagement:Permission:JobLevel.Management',\n },\n // Simple Entity - Management Only\n Responsibility: {\n Management: 'OrganizationManagement:Permission:Responsibility.Management',\n },\n // Important Entity - Full CRUD\n BusinessUnit: {\n Management: 'OrganizationManagement:Permission:BusinessUnit.Management',\n View: 'OrganizationManagement:Permission:BusinessUnit.View',\n Create: 'OrganizationManagement:Permission:BusinessUnit.Create',\n Update: 'OrganizationManagement:Permission:BusinessUnit.Update',\n Delete: 'OrganizationManagement:Permission:BusinessUnit.Delete',\n },\n // Simple Entity - Management Only\n BusinessUnitType: {\n Management: 'OrganizationManagement:Permission:BusinessUnitType.Management',\n },\n // Simple Entity - Management Only\n Chart: {\n Management: 'OrganizationManagement:Permission:Chart.Management',\n },\n} as const;\n\n"],"names":[],"mappings":"AAAO,MAAM,uCAAuC,GAAG;AACrD,IAAA,sBAAsB,EAAE;AACtB,QAAA,UAAU,EAAE,qEAAqE;AAClF,KAAA;;AAED,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE,mDAAmD;AAC/D,QAAA,IAAI,EAAE,6CAA6C;AACnD,QAAA,MAAM,EAAE,+CAA+C;AACvD,QAAA,MAAM,EAAE,+CAA+C;AACvD,QAAA,MAAM,EAAE,+CAA+C;AACxD,KAAA;;AAED,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE,uDAAuD;AACnE,QAAA,IAAI,EAAE,iDAAiD;AACvD,QAAA,MAAM,EAAE,mDAAmD;AAC3D,QAAA,MAAM,EAAE,mDAAmD;AAC3D,QAAA,MAAM,EAAE,mDAAmD;AAC5D,KAAA;;AAED,IAAA,aAAa,EAAE;AACb,QAAA,UAAU,EAAE,4DAA4D;AACxE,QAAA,IAAI,EAAE,sDAAsD;AAC5D,QAAA,MAAM,EAAE,wDAAwD;AAChE,QAAA,MAAM,EAAE,wDAAwD;AAChE,QAAA,MAAM,EAAE,wDAAwD;AACjE,KAAA;;AAED,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE,uDAAuD;AACpE,KAAA;;AAED,IAAA,cAAc,EAAE;AACd,QAAA,UAAU,EAAE,6DAA6D;AAC1E,KAAA;;AAED,IAAA,YAAY,EAAE;AACZ,QAAA,UAAU,EAAE,2DAA2D;AACvE,QAAA,IAAI,EAAE,qDAAqD;AAC3D,QAAA,MAAM,EAAE,uDAAuD;AAC/D,QAAA,MAAM,EAAE,uDAAuD;AAC/D,QAAA,MAAM,EAAE,uDAAuD;AAChE,KAAA;;AAED,IAAA,gBAAgB,EAAE;AAChB,QAAA,UAAU,EAAE,+DAA+D;AAC5E,KAAA;;AAED,IAAA,KAAK,EAAE;AACL,QAAA,UAAU,EAAE,oDAAoD;AACjE,KAAA;;;;;"}