@acorex-platform/module-organization-management-client 0.0.57 → 0.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/fesm2022/{acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs → acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs} +13 -13
  2. package/fesm2022/{acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs.map → acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs.map → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-B1hFwmaF.mjs → acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-D6NuCL7P.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-B1hFwmaF.mjs.map → acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-D6NuCL7P.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs.map → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-BX7UB9Z1.mjs → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C2XFBqrb.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-BX7UB9Z1.mjs.map → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C2XFBqrb.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart.page-DurM6Wqt.mjs → acorex-platform-module-organization-management-client-org-chart.page-BrAjoBbm.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-organization-management-client-org-chart.page-DurM6Wqt.mjs.map → acorex-platform-module-organization-management-client-org-chart.page-BrAjoBbm.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Bo-lM5Rd.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Dtaaj36p.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Bo-lM5Rd.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Dtaaj36p.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-CfhbdP-c.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-un_RTJx_.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-CfhbdP-c.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-un_RTJx_.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix.component-DoktMNuL.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix.component-BatNIVf7.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix.component-DoktMNuL.mjs.map → acorex-platform-module-organization-management-client-responsibilities-matrix.component-BatNIVf7.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-organization-management-client-settings.provider-CWrJGKtx.mjs → acorex-platform-module-organization-management-client-settings.provider-D61-y9zD.mjs} +4 -4
  20. package/fesm2022/{acorex-platform-module-organization-management-client-settings.provider-CWrJGKtx.mjs.map → acorex-platform-module-organization-management-client-settings.provider-D61-y9zD.mjs.map} +1 -1
  21. package/fesm2022/acorex-platform-module-organization-management-client.mjs +1 -1
  22. package/package.json +2 -2
@@ -230,10 +230,10 @@ const AXMResponsibilitiesMatrixWidget = {
230
230
  ],
231
231
  components: {
232
232
  view: {
233
- component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-CfhbdP-c.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetViewComponent),
233
+ component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-un_RTJx_.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetViewComponent),
234
234
  },
235
235
  edit: {
236
- component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Bo-lM5Rd.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetEditComponent),
236
+ component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-Dtaaj36p.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetEditComponent),
237
237
  },
238
238
  column: {
239
239
  component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-column.component-C5H0kcVW.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetColumnComponent),
@@ -268,8 +268,8 @@ class AXMOrganizationChartModule {
268
268
  // AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,
269
269
  provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-default-node-contribution.provider-BQ0ihb43.mjs').then((m) => m.AXMOrgChartDefaultNodeContributionProvider)),
270
270
  provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-position-employee-node-contribution.provider-BTicXn9n.mjs').then((m) => m.AXMOrgChartPositionEmployeeNodeContributionProvider)),
271
- provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
272
- provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-BX7UB9Z1.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
271
+ provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
272
+ provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C2XFBqrb.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
273
273
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () => import('./acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs').then((m) => m.AXMGenerateOrgChartCommand)),
274
274
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-position-to-business-unit.command-F7jD3jKs.mjs').then((m) => m.AXMAddPositionToBusinessUnitCommand)),
275
275
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-business-unit-to-business-unit.command-CA2uZQyC.mjs').then((m) => m.AXMAddBusinessUnitToBusinessUnitCommand)),
@@ -286,8 +286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
286
286
  // AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,
287
287
  provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-default-node-contribution.provider-BQ0ihb43.mjs').then((m) => m.AXMOrgChartDefaultNodeContributionProvider)),
288
288
  provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-position-employee-node-contribution.provider-BTicXn9n.mjs').then((m) => m.AXMOrgChartPositionEmployeeNodeContributionProvider)),
289
- provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
290
- provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-BX7UB9Z1.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
289
+ provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
290
+ provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C2XFBqrb.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
291
291
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () => import('./acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs').then((m) => m.AXMGenerateOrgChartCommand)),
292
292
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-position-to-business-unit.command-F7jD3jKs.mjs').then((m) => m.AXMAddPositionToBusinessUnitCommand)),
293
293
  provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-business-unit-to-business-unit.command-CA2uZQyC.mjs').then((m) => m.AXMAddBusinessUnitToBusinessUnitCommand)),
@@ -312,7 +312,7 @@ function routesFacory() {
312
312
  {
313
313
  path: 'chart',
314
314
  resolve: { orgChartUi: orgChartUiPrefsResolver },
315
- loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-DurM6Wqt.mjs').then((c) => c.AXMOrgChartPage),
315
+ loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-BrAjoBbm.mjs').then((c) => c.AXMOrgChartPage),
316
316
  },
317
317
  ],
318
318
  },
@@ -331,7 +331,7 @@ function routesFactory() {
331
331
  {
332
332
  path: 'chart',
333
333
  resolve: { orgChartUi: orgChartUiPrefsResolver },
334
- loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-DurM6Wqt.mjs').then((c) => c.AXMOrgChartPage),
334
+ loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-BrAjoBbm.mjs').then((c) => c.AXMOrgChartPage),
335
335
  },
336
336
  ],
337
337
  };
@@ -351,8 +351,8 @@ class AXMOrganizationManagementModule {
351
351
  provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-permission-definition.provider-CiCdTBGo.mjs').then((m) => m.AXMPermissionDefinitionProvider)),
352
352
  provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-organization-management-client-menu.provider-BgRoEC48.mjs').then((m) => m.AXMMenuProvider)),
353
353
  provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider)),
354
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
355
- provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-CWrJGKtx.mjs').then((m) => m.AXMSettingProvider)),
354
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
355
+ provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-D61-y9zD.mjs').then((m) => m.AXMSettingProvider)),
356
356
  // Widgets must register eagerly: lazy registration can resolve after entity forms bind,
357
357
  // so module editors like responsibilities-matrix-editor would not be found (blank UI).
358
358
  {
@@ -382,8 +382,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
382
382
  provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-permission-definition.provider-CiCdTBGo.mjs').then((m) => m.AXMPermissionDefinitionProvider)),
383
383
  provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-organization-management-client-menu.provider-BgRoEC48.mjs').then((m) => m.AXMMenuProvider)),
384
384
  provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider)),
385
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
386
- provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-CWrJGKtx.mjs').then((m) => m.AXMSettingProvider)),
385
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
386
+ provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-D61-y9zD.mjs').then((m) => m.AXMSettingProvider)),
387
387
  // Widgets must register eagerly: lazy registration can resolve after entity forms bind,
388
388
  // so module editors like responsibilities-matrix-editor would not be found (blank UI).
389
389
  {
@@ -400,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
400
400
  */
401
401
 
402
402
  export { AXMOrgChartNodeType as A, AXM_ORG_CHART_NODE_CONTRIBUTOR as a, AXMOrgChartStructureRefreshHub as b, AXMOrgChartCategory as c, AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID as d, axmResolveOrgChartFlyoutEmployeeId as e, AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON as f, AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY as g, AXM_ORG_CHART_LAYOUT_SUBMENU_ICON as h, AXM_ORG_CHART_LAYOUT_SUBMENU_TITLE_I18N_KEY as i, AXM_ORG_CHART_LAYOUT_SUBMENU_GROUP_ID as j, AXMOrganizationManagementModule as k, AXM_ORG_CHART_COMMUNICATION_SUBMENU_GROUP_ID as l, AXM_ORG_CHART_COMMUNICATION_SUBMENU_ICON as m, normalizeVacantLeafSeatsSetting as n, AXM_ORG_CHART_COMMUNICATION_SUBMENU_TITLE_I18N_KEY as o, parseOrgChartMode as p };
403
- //# sourceMappingURL=acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs.map
403
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/model/org-chart.type.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/utils/org-chart-resolve-flyout-employee-id.util.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-employee-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-layout-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-communication-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/tokens/org-chart-node-contribution.token.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/model/org-chart-structure-refresh.hub.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/ui/org-chart-user-ui.helper.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/ui/org-chart-ui.resolver.ts","../../../../libs/modules/organization-management/client/src/lib/features/responsibilities-matrix/responsibilities-matrix-widget.config.ts","../../../../libs/modules/organization-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/organization-chart.module.ts","../../../../libs/modules/organization-management/client/src/lib/organization-management.module.ts","../../../../libs/modules/organization-management/client/src/acorex-platform-module-organization-management-client.ts"],"sourcesContent":["/**\n * Chart node data types for organization chart.\n */\nimport type { AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n/**\n * Chart nodes use {@link AXPMultiLanguageString} for every user-visible string on the card\n * (`title`, `subtitle`, `description`) so stored chart JSON and the UI respect locale.\n *\n * - Prefer **locale maps** `{ 'en-US': '…', 'fa-IR': '…' }` (see `createMultiLanguageString` in platform core).\n * - A **plain string** is allowed as a narrow fallback; the resolver treats it as the value for any locale.\n * - **`metadata`** fields that are shown in templates must also be `AXPMultiLanguageString` (or plain string\n * with the same rules), not English-only literals baked into feature code.\n */\nexport enum AXMOrgChartNodeType {\n Company = 'Company',\n BusinessUnit = 'BusinessUnit',\n Position = 'Position',\n Employee = 'Employee',\n}\n\n/** Card layout for organizational (and compatible geographic) charts — see README merging strategy. */\nexport type AXMOrgChartCardTemplate =\n | 'merged-executive'\n | 'merged-unit'\n | 'merged-manager'\n | 'position-ic'\n | 'employee-card'\n | 'compact';\n\n/** Structured head / CEO block for merged cards; `positionTitle` is always localized. */\nexport interface AXMOrgChartMergedRoleBlock {\n positionTitle: AXPMultiLanguageString;\n positionId?: string;\n employeeName?: string;\n employeeId?: string;\n vacant: boolean;\n}\n\n// Minimal high-level categories for rendering/legend only\nexport enum AXMOrgChartCategory {\n Company = 'Company',\n BusinessUnit = 'BusinessUnit',\n Position = 'Position',\n Employee = 'Employee',\n}\n\n/** User-selectable hierarchy chart view in the organization chart page. */\nexport type OrgChartMode = 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n\nexport interface AXMOrganizationNode {\n id: string; // Unique identifier for the node\n /** Primary label; must be multi-language when content is not a proper name. */\n title: AXPMultiLanguageString;\n /** Secondary line (e.g. head summary); use locale map when mixing labels and entity titles. */\n subtitle?: AXPMultiLanguageString;\n /** Body / mission text. */\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationNode[];\n icon?: string;\n type?: AXMOrgChartNodeType; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n /** Rich card data; any **display** field here should use `AXPMultiLanguageString` like the core node fields. */\n metadata?: Record<string, any>;\n}\n\n/**\n * Pill badge on org chart node cards (icon + label). {@link title} is translated in the template.\n */\nexport interface AXMOrgChartNodeBadgeItem {\n /** Font Awesome class segment (e.g. `fa-light fa-building`). */\n icon: string;\n title: AXPMultiLanguageString;\n}\n\n/**\n * Footer metric cell: icon, numeric or short value, and translated label.\n */\nexport interface AXMOrgChartNodeFooterMetric {\n icon: string;\n /** Plain display value (formatted number or short text). */\n value: string;\n title: AXPMultiLanguageString;\n}\n","//#region ---- Imports ----\n\nimport { AXMOrgChartNodeContributionContext } from '../tokens/org-chart-node-contribution.token';\n\n//#endregion\n\nconst HCM_EMPLOYEE_SOURCE = 'HumanCapitalManagement.Employee';\n\n//#region ---- Resolve flyout employee ----\n\n/**\n * Employee id for org chart **Employee** flyout actions: card occupant, unit head, top role, or an `employee` node.\n * Returns undefined when the seat is vacant or no person is linked.\n */\nexport function axmResolveOrgChartFlyoutEmployeeId(\n context: AXMOrgChartNodeContributionContext,\n): string | undefined {\n if (context.nodeKind === 'employee') {\n const entity = context.node.entity;\n if (entity?.id != null && axmIsEmployeeEntityType(entity.type)) {\n const id = String(entity.id).trim();\n return id.length > 0 ? id : undefined;\n }\n return undefined;\n }\n\n if (context.nodeKind === 'company-root') {\n const topRole = context.node.metadata?.['topRole'] as Record<string, unknown> | undefined;\n if (!topRole || topRole['vacant'] === true) {\n return undefined;\n }\n const raw = topRole['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n if (context.nodeKind === 'business-unit') {\n const unitHead = context.node.metadata?.['unitHead'] as Record<string, unknown> | undefined;\n if (!unitHead || unitHead['vacant'] === true) {\n return undefined;\n }\n const raw = unitHead['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n if (context.nodeKind === 'position') {\n if (context.node.metadata?.['vacant'] === true) {\n return undefined;\n }\n const occ = context.node.metadata?.['occupant'] as Record<string, unknown> | undefined;\n const raw = occ?.['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n return undefined;\n}\n\nfunction axmIsEmployeeEntityType(entityType: string | undefined): boolean {\n if (!entityType || typeof entityType !== 'string') {\n return false;\n }\n return entityType === HCM_EMPLOYEE_SOURCE || entityType.endsWith('.Employee');\n}\n\n//#endregion\n","//#region ---- Org chart: employee flyout (assigned person + employee nodes) ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} for actions that target the person on a card\n * (chief executive, unit head, seat occupant) or the {@link AXMOrgChartNodeKind} `employee` node itself.\n * Private chat/email move here from the Communication group.\n */\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.employee-submenu' as const;\n\n/**\n * i18n key: `organization-chart.employee-submenu.title` in `organization-management` assets.\n */\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.employee-submenu.title' as const;\n\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON = 'fa-light fa-user' as const;\n\n//#endregion\n","//#region ---- Org chart: view / layout flyout ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} for panel toggle and branch expand/collapse.\n */\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.layout-submenu' as const;\n\n/**\n * i18n key: `organization-chart.layout-submenu.title` in `organization-management` assets.\n */\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.layout-submenu.title' as const;\n\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_ICON = 'fa-light fa-sidebar' as const;\n\n//#endregion\n","//#region ---- Org chart: shared communication flyout ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} so chat and email extensions merge\n * their org-chart context actions under one parent flyout.\n */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.communication-submenu' as const;\n\n/**\n * i18n key for the flyout parent label (`apps/.../organization-management.json`:\n * `organization-chart.communication-submenu.title`).\n */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.communication-submenu.title' as const;\n\n/** Parent row icon when actions from multiple modules supply the same group id. */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_ICON = 'fa-light fa-comments' as const;\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { InjectionToken } from '@angular/core';\nimport type { AXMOrgChartHostApi } from './org-chart-host.token';\nimport { AXMOrganizationNode } from '../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXMOrgChartNodeKind = 'company-root' | 'business-unit' | 'position' | 'employee' | 'other';\n\n/** Section separator for org chart context menu rows built from {@link AXMOrgChartNodeMenuAction}. */\nexport type AXMOrgChartNodeMenuBreak = 'before' | 'after' | 'both';\n\nexport interface AXMOrgChartNodeContributionContext {\n node: AXMOrganizationNode;\n nodeKind: AXMOrgChartNodeKind;\n selectedMode: 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n refreshChart: () => Promise<void>;\n /** Page host (detail panel, branch expand/collapse, selection). */\n host: AXMOrgChartHostApi;\n}\n\nexport interface AXMOrgChartNodeMenuAction {\n id: string;\n /** i18n key (`@scope:...`) or {@link AXPMultiLanguageString} locale map (`ax-menu-item` pipes `translate` without forwarding params — use maps for interpolated copy). */\n title: string | AXPMultiLanguageString;\n /** Interpolation helper for contributors; the org chart host does not pipe params into menu `translate` (use `title` maps). */\n titleParams?: Record<string, string | number>;\n icon?: string;\n color?: AXStyleColorType;\n order?: number;\n disabled?: boolean;\n /**\n * Section separator for this row (and for `submenuGroupId` buckets: `before` / `after` / `both` also move the\n * parent flyout's separator relative to siblings). `before` is implemented by setting `AXMenuItem.break` on the\n * **previous** sibling at the same level (no-op when first).\n */\n break?: AXMOrgChartNodeMenuBreak;\n /**\n * Adds a separator after this row. Applies at any menu level (including root when a `submenuGroupId` flyout is\n * flattened, e.g. Employee actions on an employee node). Does not set the parent bucket's trailing break; use\n * {@link break} `after` / `both` on a member when the parent flyout row should also end a section.\n */\n submenuSectionBreak?: boolean;\n /**\n * When true, nested under the chart **Add …** submenu (business unit kinds, add position, and similar).\n */\n nestedInAddFlyout?: boolean;\n /**\n * Optional flyout: actions that share the same `submenuGroupId` render as children of one parent row.\n * Use the same `submenuGroupTitle` for every member; `submenuGroupIcon` may be set on any member (first wins).\n * On grouped members: {@link break} `after` / `both` adds a line inside the flyout below that child and sets the\n * parent row's section break after the flyout; `before` / `both` on any member adds a line before the parent row\n * (previous top-level sibling gets `break`). Use {@link submenuSectionBreak} for a separator after that child\n * without affecting the parent bucket's trailing break.\n * Cross-module chat + email on the org chart should use the communication constants in\n * `org-chart-communication-submenu.const.ts` (`AXM_ORG_CHART_COMMUNICATION_SUBMENU_GROUP_ID`, title key, icon).\n */\n submenuGroupId?: string;\n submenuGroupTitle?: string | AXPMultiLanguageString;\n submenuGroupIcon?: string;\n execute: (context: AXMOrgChartNodeContributionContext) => Promise<void>;\n}\n\nexport interface AXMOrgChartNodeInfoContribution {\n id: string;\n title: AXPMultiLanguageString;\n order?: number;\n load: (context: AXMOrgChartNodeContributionContext) => Promise<unknown>;\n}\n\nexport interface AXMOrgChartNodeContributionProvider {\n getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]>;\n getInfoContributions?(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeInfoContribution[]>;\n}\n\n/**\n * One multi-provider slot: an eager instance or a promise from a lazy provider factory (`provideLazyProvider`).\n */\nexport type AXMOrgChartNodeContributorRef =\n | AXMOrgChartNodeContributionProvider\n | Promise<AXMOrgChartNodeContributionProvider>;\n\n//#endregion\n\n//#region ---- Tokens ----\n\nexport const AXM_ORG_CHART_NODE_CONTRIBUTOR = new InjectionToken<AXMOrgChartNodeContributorRef>(\n 'AXM_ORG_CHART_NODE_CONTRIBUTOR',\n);\n\n//#endregion\n","import { Injectable, signal } from '@angular/core';\n\n/**\n * Broadcasts when persisted org chart structure was rebuilt (server regen or optional client listener template).\n * The chart page reloads from storage when {@link structureDataRevision} increments.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMOrgChartStructureRefreshHub {\n private readonly revision = signal(0);\n\n readonly structureDataRevision = this.revision.asReadonly();\n\n notifyStructureRebuilt(): void {\n this.revision.update((v) => v + 1);\n }\n}\n","import type { OrgChartMode } from '../model/org-chart.type';\n\n/**\n * Chart mode + vacant-seat visibility restored from user settings (route resolver or post-load hydrate).\n */\nexport interface OrgChartHydratedUiPrefs {\n selectedMode?: OrgChartMode;\n showVacantLeafSeats?: boolean;\n}\n\nexport function parseOrgChartMode(value: unknown): OrgChartMode | undefined {\n if (\n value === 'structure' ||\n value === 'location' ||\n value === 'reporting' ||\n value === 'positionHierarchy'\n ) {\n return value;\n }\n return undefined;\n}\n\n/**\n * Normalizes vacant-toggle values from persisted settings or UI widgets (some paths use strings).\n */\nexport function normalizeVacantLeafSeatsSetting(value: unknown): boolean | undefined {\n if (value === true || value === 1) {\n return true;\n }\n if (value === false || value === 0) {\n return false;\n }\n if (typeof value === 'string') {\n const s = value.trim().toLowerCase();\n if (s === 'true' || s === '1' || s === 'yes' || s === 'on') {\n return true;\n }\n if (s === 'false' || s === '0' || s === 'no' || s === 'off') {\n return false;\n }\n }\n return undefined;\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPOrganizationManagementSettings } from '@acorex-platform/module-organization-management-client/contracts';\nimport {\n normalizeVacantLeafSeatsSetting,\n type OrgChartHydratedUiPrefs,\n parseOrgChartMode,\n} from './org-chart-user-ui.helper';\n\n/**\n * Loads user chart UI preferences before {@link AXMOrgChartPage} is created so the first render matches saved state.\n */\nexport const orgChartUiPrefsResolver: ResolveFn<OrgChartHydratedUiPrefs> = async () => {\n const settingsService = inject(AXPSettingsService);\n await settingsService.load();\n\n const userScope = settingsService.scope(AXPPlatformScope.User);\n const modeRaw = await userScope.get<string | undefined>(\n AXPOrganizationManagementSettings.HierarchyChartMode,\n );\n const vacantRaw = await userScope.get<unknown>(\n AXPOrganizationManagementSettings.HierarchyChartShowVacantLeafSeats,\n );\n\n const prefs: OrgChartHydratedUiPrefs = {};\n const mode = parseOrgChartMode(modeRaw);\n if (mode !== undefined) {\n prefs.selectedMode = mode;\n }\n const vacant = normalizeVacantLeafSeatsSetting(vacantRaw);\n if (vacant !== undefined) {\n prefs.showVacantLeafSeats = vacant;\n }\n return prefs;\n};\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXMResponsibilitiesMatrixWidget: AXPWidgetConfig<AXMResponsibilitiesMatrixWidgetConfigType> = {\n name: 'responsibilities-matrix-editor',\n title: 'Responsibilities Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing responsibility levels',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./responsibilities-matrix-widget-view.component').then((c) => c.AXMResponsibilitiesMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./responsibilities-matrix-widget-edit.component').then((c) => c.AXMResponsibilitiesMatrixWidgetEditComponent),\n },\n column: {\n component: () => import('./responsibilities-matrix-widget-column.component').then((c) => c.AXMResponsibilitiesMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMResponsibilitiesMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMResponsibilitiesMatrixWidget } from './features/responsibilities-matrix/responsibilities-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Organization Management Widgets Provider ----\n\n@Injectable()\nexport class AXMOrganizationManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMResponsibilitiesMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { provideCommand } from '@acorex-platform/framework-client/runtime';\nimport { provideLazyProvider } from '@acorex-platform/framework-client/core';\n\nimport { NgModule } from '@angular/core';\nimport { AXMOrganizationManagementCommandKeys } from '@acorex-platform/module-organization-management-client/contracts';\n// import {\n// AXM_ORG_CHART_EVENT_LISTENER_GENERATE_PROVIDER,\n// AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,\n// } from './listeners/org-chart-event.listener';\nimport { AXM_ORG_CHART_NODE_CONTRIBUTOR } from './tokens/org-chart-node-contribution.token';\n\n//#endregion\n\n//#region ---- NgModule ----\n\n/**\n * Registers organization chart node contributors and chart-scoped commands for Organization Management.\n */\n@NgModule({\n providers: [\n // AXM_ORG_CHART_EVENT_LISTENER_GENERATE_PROVIDER,\n // AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-default-node-contribution.provider').then(\n (m) => m.AXMOrgChartDefaultNodeContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-position-employee-node-contribution.provider').then(\n (m) => m.AXMOrgChartPositionEmployeeNodeContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-employee-flyout-contribution.provider').then(\n (m) => m.AXMOrgChartEmployeeFlyoutContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-ux-node-contribution.provider').then(\n (m) => m.AXMOrgChartUxNodeContributionProvider,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () =>\n import('./commands/generate-org-chart.command').then((m) => m.AXMGenerateOrgChartCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () =>\n import('./commands/add-position-to-business-unit.command').then((m) => m.AXMAddPositionToBusinessUnitCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () =>\n import('./commands/add-business-unit-to-business-unit.command').then(\n (m) => m.AXMAddBusinessUnitToBusinessUnitCommand,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddTeamToBusinessUnit, () =>\n import('./commands/add-team-to-business-unit.command').then((m) => m.AXMAddTeamToBusinessUnitCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.RemovePositionFromBusinessUnit, () =>\n import('./commands/remove-position-from-business-unit.command').then(\n (m) => m.AXMRemovePositionFromBusinessUnitCommand,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.ReplacePositionAssignee, () =>\n import('./commands/replace-position-assignee.command').then((m) => m.AXMReplacePositionAssigneeCommand),\n ),\n ],\n})\nexport class AXMOrganizationChartModule {}\n\n//#endregion\n","import { AXP_HOME_PAGES, AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXP_FEATURE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { orgChartUiPrefsResolver } from './features/organization-chart/ui/org-chart-ui.resolver';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule } from '@angular/core';\nimport { Route, Routes, ROUTES } from '@angular/router';\nimport { AXMOrganizationManagementWidgetsProvider } from './widget-definition.provider';\nimport { AXMOrganizationChartModule } from './features/organization-chart/organization-chart.module';\n\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n const routes: Routes = [\n {\n loadComponent: () => {\n return config.viewers.root();\n },\n path: ':app/organization',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { rootLayout: true },\n children: [\n {\n path: 'chart',\n resolve: { orgChartUi: orgChartUiPrefsResolver },\n loadComponent: () => import('./features/organization-chart/page/org-chart.page').then((c) => c.AXMOrgChartPage),\n },\n ],\n },\n ];\n return routes;\n}\n\nfunction routesFactory(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: ':app/organization',\n loadComponent: () => {\n return config.viewers.root();\n },\n data: { rootLayout: true },\n children: [\n {\n path: 'chart',\n resolve: { orgChartUi: orgChartUiPrefsResolver },\n loadComponent: () => import('./features/organization-chart/page/org-chart.page').then((c) => c.AXMOrgChartPage),\n },\n ],\n };\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AXPWidgetCoreModule,\n AXMOrganizationChartModule,\n ],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () => import('./menu.provider').then((m) => m.AXMMenuProvider)),\n \n provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () =>\n import('./feature-definition.provider').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider),\n ),\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/job-definition-pages/job-definition-pages-component.provider').then(\n (m) => m.AXMJobDefinitionPagesComponentProvider,\n ),\n ),\n provideLazyProvider(\n AXP_SETTING_DEFINITION_PROVIDER,\n () => import('./settings.provider').then((m) => m.AXMSettingProvider),\n ),\n // Widgets must register eagerly: lazy registration can resolve after entity forms bind,\n // so module editors like responsibilities-matrix-editor would not be found (blank UI).\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMOrganizationManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMOrganizationManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/model/org-chart.type.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/utils/org-chart-resolve-flyout-employee-id.util.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-employee-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-layout-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/constants/org-chart-communication-submenu.const.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/tokens/org-chart-node-contribution.token.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/model/org-chart-structure-refresh.hub.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/ui/org-chart-user-ui.helper.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/ui/org-chart-ui.resolver.ts","../../../../libs/modules/organization-management/client/src/lib/features/responsibilities-matrix/responsibilities-matrix-widget.config.ts","../../../../libs/modules/organization-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/organization-chart.module.ts","../../../../libs/modules/organization-management/client/src/lib/organization-management.module.ts","../../../../libs/modules/organization-management/client/src/acorex-platform-module-organization-management-client.ts"],"sourcesContent":["/**\n * Chart node data types for organization chart.\n */\nimport type { AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n/**\n * Chart nodes use {@link AXPMultiLanguageString} for every user-visible string on the card\n * (`title`, `subtitle`, `description`) so stored chart JSON and the UI respect locale.\n *\n * - Prefer **locale maps** `{ 'en-US': '…', 'fa-IR': '…' }` (see `createMultiLanguageString` in platform core).\n * - A **plain string** is allowed as a narrow fallback; the resolver treats it as the value for any locale.\n * - **`metadata`** fields that are shown in templates must also be `AXPMultiLanguageString` (or plain string\n * with the same rules), not English-only literals baked into feature code.\n */\nexport enum AXMOrgChartNodeType {\n Company = 'Company',\n BusinessUnit = 'BusinessUnit',\n Position = 'Position',\n Employee = 'Employee',\n}\n\n/** Card layout for organizational (and compatible geographic) charts — see README merging strategy. */\nexport type AXMOrgChartCardTemplate =\n | 'merged-executive'\n | 'merged-unit'\n | 'merged-manager'\n | 'position-ic'\n | 'employee-card'\n | 'compact';\n\n/** Structured head / CEO block for merged cards; `positionTitle` is always localized. */\nexport interface AXMOrgChartMergedRoleBlock {\n positionTitle: AXPMultiLanguageString;\n positionId?: string;\n employeeName?: string;\n employeeId?: string;\n vacant: boolean;\n}\n\n// Minimal high-level categories for rendering/legend only\nexport enum AXMOrgChartCategory {\n Company = 'Company',\n BusinessUnit = 'BusinessUnit',\n Position = 'Position',\n Employee = 'Employee',\n}\n\n/** User-selectable hierarchy chart view in the organization chart page. */\nexport type OrgChartMode = 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n\nexport interface AXMOrganizationNode {\n id: string; // Unique identifier for the node\n /** Primary label; must be multi-language when content is not a proper name. */\n title: AXPMultiLanguageString;\n /** Secondary line (e.g. head summary); use locale map when mixing labels and entity titles. */\n subtitle?: AXPMultiLanguageString;\n /** Body / mission text. */\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationNode[];\n icon?: string;\n type?: AXMOrgChartNodeType; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n /** Rich card data; any **display** field here should use `AXPMultiLanguageString` like the core node fields. */\n metadata?: Record<string, any>;\n}\n\n/**\n * Pill badge on org chart node cards (icon + label). {@link title} is translated in the template.\n */\nexport interface AXMOrgChartNodeBadgeItem {\n /** Font Awesome class segment (e.g. `fa-light fa-building`). */\n icon: string;\n title: AXPMultiLanguageString;\n}\n\n/**\n * Footer metric cell: icon, numeric or short value, and translated label.\n */\nexport interface AXMOrgChartNodeFooterMetric {\n icon: string;\n /** Plain display value (formatted number or short text). */\n value: string;\n title: AXPMultiLanguageString;\n}\n","//#region ---- Imports ----\n\nimport { AXMOrgChartNodeContributionContext } from '../tokens/org-chart-node-contribution.token';\n\n//#endregion\n\nconst HCM_EMPLOYEE_SOURCE = 'HumanCapitalManagement.Employee';\n\n//#region ---- Resolve flyout employee ----\n\n/**\n * Employee id for org chart **Employee** flyout actions: card occupant, unit head, top role, or an `employee` node.\n * Returns undefined when the seat is vacant or no person is linked.\n */\nexport function axmResolveOrgChartFlyoutEmployeeId(\n context: AXMOrgChartNodeContributionContext,\n): string | undefined {\n if (context.nodeKind === 'employee') {\n const entity = context.node.entity;\n if (entity?.id != null && axmIsEmployeeEntityType(entity.type)) {\n const id = String(entity.id).trim();\n return id.length > 0 ? id : undefined;\n }\n return undefined;\n }\n\n if (context.nodeKind === 'company-root') {\n const topRole = context.node.metadata?.['topRole'] as Record<string, unknown> | undefined;\n if (!topRole || topRole['vacant'] === true) {\n return undefined;\n }\n const raw = topRole['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n if (context.nodeKind === 'business-unit') {\n const unitHead = context.node.metadata?.['unitHead'] as Record<string, unknown> | undefined;\n if (!unitHead || unitHead['vacant'] === true) {\n return undefined;\n }\n const raw = unitHead['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n if (context.nodeKind === 'position') {\n if (context.node.metadata?.['vacant'] === true) {\n return undefined;\n }\n const occ = context.node.metadata?.['occupant'] as Record<string, unknown> | undefined;\n const raw = occ?.['employeeId'];\n return typeof raw === 'string' && raw.trim().length > 0 ? raw.trim() : undefined;\n }\n\n return undefined;\n}\n\nfunction axmIsEmployeeEntityType(entityType: string | undefined): boolean {\n if (!entityType || typeof entityType !== 'string') {\n return false;\n }\n return entityType === HCM_EMPLOYEE_SOURCE || entityType.endsWith('.Employee');\n}\n\n//#endregion\n","//#region ---- Org chart: employee flyout (assigned person + employee nodes) ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} for actions that target the person on a card\n * (chief executive, unit head, seat occupant) or the {@link AXMOrgChartNodeKind} `employee` node itself.\n * Private chat/email move here from the Communication group.\n */\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.employee-submenu' as const;\n\n/**\n * i18n key: `organization-chart.employee-submenu.title` in `organization-management` assets.\n */\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.employee-submenu.title' as const;\n\nexport const AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON = 'fa-light fa-user' as const;\n\n//#endregion\n","//#region ---- Org chart: view / layout flyout ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} for panel toggle and branch expand/collapse.\n */\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.layout-submenu' as const;\n\n/**\n * i18n key: `organization-chart.layout-submenu.title` in `organization-management` assets.\n */\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.layout-submenu.title' as const;\n\nexport const AXM_ORG_CHART_LAYOUT_SUBMENU_ICON = 'fa-light fa-sidebar' as const;\n\n//#endregion\n","//#region ---- Org chart: shared communication flyout ----\n\n/**\n * Stable {@link AXMOrgChartNodeMenuAction.submenuGroupId} so chat and email extensions merge\n * their org-chart context actions under one parent flyout.\n */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_GROUP_ID =\n 'organization-management.org-chart.communication-submenu' as const;\n\n/**\n * i18n key for the flyout parent label (`apps/.../organization-management.json`:\n * `organization-chart.communication-submenu.title`).\n */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_TITLE_I18N_KEY =\n '@organization-management:organization-chart.communication-submenu.title' as const;\n\n/** Parent row icon when actions from multiple modules supply the same group id. */\nexport const AXM_ORG_CHART_COMMUNICATION_SUBMENU_ICON = 'fa-light fa-comments' as const;\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { InjectionToken } from '@angular/core';\nimport type { AXMOrgChartHostApi } from './org-chart-host.token';\nimport { AXMOrganizationNode } from '../model/org-chart.type';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXMOrgChartNodeKind = 'company-root' | 'business-unit' | 'position' | 'employee' | 'other';\n\n/** Section separator for org chart context menu rows built from {@link AXMOrgChartNodeMenuAction}. */\nexport type AXMOrgChartNodeMenuBreak = 'before' | 'after' | 'both';\n\nexport interface AXMOrgChartNodeContributionContext {\n node: AXMOrganizationNode;\n nodeKind: AXMOrgChartNodeKind;\n selectedMode: 'location' | 'structure' | 'reporting' | 'positionHierarchy';\n refreshChart: () => Promise<void>;\n /** Page host (detail panel, branch expand/collapse, selection). */\n host: AXMOrgChartHostApi;\n}\n\nexport interface AXMOrgChartNodeMenuAction {\n id: string;\n /** i18n key (`@scope:...`) or {@link AXPMultiLanguageString} locale map (`ax-menu-item` pipes `translate` without forwarding params — use maps for interpolated copy). */\n title: string | AXPMultiLanguageString;\n /** Interpolation helper for contributors; the org chart host does not pipe params into menu `translate` (use `title` maps). */\n titleParams?: Record<string, string | number>;\n icon?: string;\n color?: AXStyleColorType;\n order?: number;\n disabled?: boolean;\n /**\n * Section separator for this row (and for `submenuGroupId` buckets: `before` / `after` / `both` also move the\n * parent flyout's separator relative to siblings). `before` is implemented by setting `AXMenuItem.break` on the\n * **previous** sibling at the same level (no-op when first).\n */\n break?: AXMOrgChartNodeMenuBreak;\n /**\n * Adds a separator after this row. Applies at any menu level (including root when a `submenuGroupId` flyout is\n * flattened, e.g. Employee actions on an employee node). Does not set the parent bucket's trailing break; use\n * {@link break} `after` / `both` on a member when the parent flyout row should also end a section.\n */\n submenuSectionBreak?: boolean;\n /**\n * When true, nested under the chart **Add …** submenu (business unit kinds, add position, and similar).\n */\n nestedInAddFlyout?: boolean;\n /**\n * Optional flyout: actions that share the same `submenuGroupId` render as children of one parent row.\n * Use the same `submenuGroupTitle` for every member; `submenuGroupIcon` may be set on any member (first wins).\n * On grouped members: {@link break} `after` / `both` adds a line inside the flyout below that child and sets the\n * parent row's section break after the flyout; `before` / `both` on any member adds a line before the parent row\n * (previous top-level sibling gets `break`). Use {@link submenuSectionBreak} for a separator after that child\n * without affecting the parent bucket's trailing break.\n * Cross-module chat + email on the org chart should use the communication constants in\n * `org-chart-communication-submenu.const.ts` (`AXM_ORG_CHART_COMMUNICATION_SUBMENU_GROUP_ID`, title key, icon).\n */\n submenuGroupId?: string;\n submenuGroupTitle?: string | AXPMultiLanguageString;\n submenuGroupIcon?: string;\n execute: (context: AXMOrgChartNodeContributionContext) => Promise<void>;\n}\n\nexport interface AXMOrgChartNodeInfoContribution {\n id: string;\n title: AXPMultiLanguageString;\n order?: number;\n load: (context: AXMOrgChartNodeContributionContext) => Promise<unknown>;\n}\n\nexport interface AXMOrgChartNodeContributionProvider {\n getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]>;\n getInfoContributions?(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeInfoContribution[]>;\n}\n\n/**\n * One multi-provider slot: an eager instance or a promise from a lazy provider factory (`provideLazyProvider`).\n */\nexport type AXMOrgChartNodeContributorRef =\n | AXMOrgChartNodeContributionProvider\n | Promise<AXMOrgChartNodeContributionProvider>;\n\n//#endregion\n\n//#region ---- Tokens ----\n\nexport const AXM_ORG_CHART_NODE_CONTRIBUTOR = new InjectionToken<AXMOrgChartNodeContributorRef>(\n 'AXM_ORG_CHART_NODE_CONTRIBUTOR',\n);\n\n//#endregion\n","import { Injectable, signal } from '@angular/core';\n\n/**\n * Broadcasts when persisted org chart structure was rebuilt (server regen or optional client listener template).\n * The chart page reloads from storage when {@link structureDataRevision} increments.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMOrgChartStructureRefreshHub {\n private readonly revision = signal(0);\n\n readonly structureDataRevision = this.revision.asReadonly();\n\n notifyStructureRebuilt(): void {\n this.revision.update((v) => v + 1);\n }\n}\n","import type { OrgChartMode } from '../model/org-chart.type';\n\n/**\n * Chart mode + vacant-seat visibility restored from user settings (route resolver or post-load hydrate).\n */\nexport interface OrgChartHydratedUiPrefs {\n selectedMode?: OrgChartMode;\n showVacantLeafSeats?: boolean;\n}\n\nexport function parseOrgChartMode(value: unknown): OrgChartMode | undefined {\n if (\n value === 'structure' ||\n value === 'location' ||\n value === 'reporting' ||\n value === 'positionHierarchy'\n ) {\n return value;\n }\n return undefined;\n}\n\n/**\n * Normalizes vacant-toggle values from persisted settings or UI widgets (some paths use strings).\n */\nexport function normalizeVacantLeafSeatsSetting(value: unknown): boolean | undefined {\n if (value === true || value === 1) {\n return true;\n }\n if (value === false || value === 0) {\n return false;\n }\n if (typeof value === 'string') {\n const s = value.trim().toLowerCase();\n if (s === 'true' || s === '1' || s === 'yes' || s === 'on') {\n return true;\n }\n if (s === 'false' || s === '0' || s === 'no' || s === 'off') {\n return false;\n }\n }\n return undefined;\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXPOrganizationManagementSettings } from '@acorex-platform/module-organization-management-client/contracts';\nimport {\n normalizeVacantLeafSeatsSetting,\n type OrgChartHydratedUiPrefs,\n parseOrgChartMode,\n} from './org-chart-user-ui.helper';\n\n/**\n * Loads user chart UI preferences before {@link AXMOrgChartPage} is created so the first render matches saved state.\n */\nexport const orgChartUiPrefsResolver: ResolveFn<OrgChartHydratedUiPrefs> = async () => {\n const settingsService = inject(AXPSettingsService);\n await settingsService.load();\n\n const userScope = settingsService.scope(AXPPlatformScope.User);\n const modeRaw = await userScope.get<string | undefined>(\n AXPOrganizationManagementSettings.HierarchyChartMode,\n );\n const vacantRaw = await userScope.get<unknown>(\n AXPOrganizationManagementSettings.HierarchyChartShowVacantLeafSeats,\n );\n\n const prefs: OrgChartHydratedUiPrefs = {};\n const mode = parseOrgChartMode(modeRaw);\n if (mode !== undefined) {\n prefs.selectedMode = mode;\n }\n const vacant = normalizeVacantLeafSeatsSetting(vacantRaw);\n if (vacant !== undefined) {\n prefs.showVacantLeafSeats = vacant;\n }\n return prefs;\n};\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXMResponsibilitiesMatrixWidget: AXPWidgetConfig<AXMResponsibilitiesMatrixWidgetConfigType> = {\n name: 'responsibilities-matrix-editor',\n title: 'Responsibilities Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing responsibility levels',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./responsibilities-matrix-widget-view.component').then((c) => c.AXMResponsibilitiesMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./responsibilities-matrix-widget-edit.component').then((c) => c.AXMResponsibilitiesMatrixWidgetEditComponent),\n },\n column: {\n component: () => import('./responsibilities-matrix-widget-column.component').then((c) => c.AXMResponsibilitiesMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMResponsibilitiesMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMResponsibilitiesMatrixWidget } from './features/responsibilities-matrix/responsibilities-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Organization Management Widgets Provider ----\n\n@Injectable()\nexport class AXMOrganizationManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMResponsibilitiesMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { provideCommand } from '@acorex-platform/framework-client/runtime';\nimport { provideLazyProvider } from '@acorex-platform/framework-client/core';\n\nimport { NgModule } from '@angular/core';\nimport { AXMOrganizationManagementCommandKeys } from '@acorex-platform/module-organization-management-client/contracts';\n// import {\n// AXM_ORG_CHART_EVENT_LISTENER_GENERATE_PROVIDER,\n// AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,\n// } from './listeners/org-chart-event.listener';\nimport { AXM_ORG_CHART_NODE_CONTRIBUTOR } from './tokens/org-chart-node-contribution.token';\n\n//#endregion\n\n//#region ---- NgModule ----\n\n/**\n * Registers organization chart node contributors and chart-scoped commands for Organization Management.\n */\n@NgModule({\n providers: [\n // AXM_ORG_CHART_EVENT_LISTENER_GENERATE_PROVIDER,\n // AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-default-node-contribution.provider').then(\n (m) => m.AXMOrgChartDefaultNodeContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-position-employee-node-contribution.provider').then(\n (m) => m.AXMOrgChartPositionEmployeeNodeContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-employee-flyout-contribution.provider').then(\n (m) => m.AXMOrgChartEmployeeFlyoutContributionProvider,\n ),\n ),\n provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () =>\n import('./contributions/org-chart-ux-node-contribution.provider').then(\n (m) => m.AXMOrgChartUxNodeContributionProvider,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () =>\n import('./commands/generate-org-chart.command').then((m) => m.AXMGenerateOrgChartCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () =>\n import('./commands/add-position-to-business-unit.command').then((m) => m.AXMAddPositionToBusinessUnitCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () =>\n import('./commands/add-business-unit-to-business-unit.command').then(\n (m) => m.AXMAddBusinessUnitToBusinessUnitCommand,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddTeamToBusinessUnit, () =>\n import('./commands/add-team-to-business-unit.command').then((m) => m.AXMAddTeamToBusinessUnitCommand),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.RemovePositionFromBusinessUnit, () =>\n import('./commands/remove-position-from-business-unit.command').then(\n (m) => m.AXMRemovePositionFromBusinessUnitCommand,\n ),\n ),\n provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.ReplacePositionAssignee, () =>\n import('./commands/replace-position-assignee.command').then((m) => m.AXMReplacePositionAssigneeCommand),\n ),\n ],\n})\nexport class AXMOrganizationChartModule {}\n\n//#endregion\n","import { AXP_HOME_PAGES, AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXP_FEATURE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { orgChartUiPrefsResolver } from './features/organization-chart/ui/org-chart-ui.resolver';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule } from '@angular/core';\nimport { Route, Routes, ROUTES } from '@angular/router';\nimport { AXMOrganizationManagementWidgetsProvider } from './widget-definition.provider';\nimport { AXMOrganizationChartModule } from './features/organization-chart/organization-chart.module';\n\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n const routes: Routes = [\n {\n loadComponent: () => {\n return config.viewers.root();\n },\n path: ':app/organization',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { rootLayout: true },\n children: [\n {\n path: 'chart',\n resolve: { orgChartUi: orgChartUiPrefsResolver },\n loadComponent: () => import('./features/organization-chart/page/org-chart.page').then((c) => c.AXMOrgChartPage),\n },\n ],\n },\n ];\n return routes;\n}\n\nfunction routesFactory(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: ':app/organization',\n loadComponent: () => {\n return config.viewers.root();\n },\n data: { rootLayout: true },\n children: [\n {\n path: 'chart',\n resolve: { orgChartUi: orgChartUiPrefsResolver },\n loadComponent: () => import('./features/organization-chart/page/org-chart.page').then((c) => c.AXMOrgChartPage),\n },\n ],\n };\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AXPWidgetCoreModule,\n AXMOrganizationChartModule,\n ],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () => import('./menu.provider').then((m) => m.AXMMenuProvider)),\n \n provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () =>\n import('./feature-definition.provider').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider),\n ),\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/job-definition-pages/job-definition-pages-component.provider').then(\n (m) => m.AXMJobDefinitionPagesComponentProvider,\n ),\n ),\n provideLazyProvider(\n AXP_SETTING_DEFINITION_PROVIDER,\n () => import('./settings.provider').then((m) => m.AXMSettingProvider),\n ),\n // Widgets must register eagerly: lazy registration can resolve after entity forms bind,\n // so module editors like responsibilities-matrix-editor would not be found (blank UI).\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMOrganizationManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMOrganizationManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ class AXMJobDefinitionPagesComponentProvider {
9
9
  return [
10
10
  {
11
11
  key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,
12
- loader: () => import('./acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-B1hFwmaF.mjs').then((m) => m.AXMJobDefinitionResponsibilitiesPageComponent),
12
+ loader: () => import('./acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-D6NuCL7P.mjs').then((m) => m.AXMJobDefinitionResponsibilitiesPageComponent),
13
13
  },
14
14
  {
15
15
  key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
25
25
  }] });
26
26
 
27
27
  export { AXMJobDefinitionPagesComponentProvider };
28
- //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs.map
28
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-qOqAdl0L.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-pages-component.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n} from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Job definition entity page components provider ----\n\n@Injectable()\nexport class AXMJobDefinitionPagesComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-responsibilities-page.component').then(\n (m) => m.AXMJobDefinitionResponsibilitiesPageComponent,\n ),\n },\n {\n key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-skills-page.component').then((m) => m.AXMJobDefinitionSkillsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAYA;AAEA;MAGa,sCAAsC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,kDAAkD;AACvD,gBAAA,MAAM,EAAE,MACN,OAAO,qHAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CACvD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,wCAAwC;AAC7C,gBAAA,MAAM,EAAE,MACN,OAAO,2GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,aAAA;SACF;IACH;8GAhBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtC,sCAAsC,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD;;;"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-CKXjoIvd.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-pages-component.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n} from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Job definition entity page components provider ----\n\n@Injectable()\nexport class AXMJobDefinitionPagesComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-responsibilities-page.component').then(\n (m) => m.AXMJobDefinitionResponsibilitiesPageComponent,\n ),\n },\n {\n key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-skills-page.component').then((m) => m.AXMJobDefinitionSkillsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAYA;AAEA;MAGa,sCAAsC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,kDAAkD;AACvD,gBAAA,MAAM,EAAE,MACN,OAAO,qHAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CACvD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,wCAAwC;AAC7C,gBAAA,MAAM,EAAE,MACN,OAAO,2GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,aAAA;SACF;IACH;8GAhBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtC,sCAAsC,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD;;;"}
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
6
6
  import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
7
7
  import { cloneDeep, isEqual } from 'lodash';
8
8
  import { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';
9
- import { A as AXMOrganizationManagementResponsibilitiesMatrixComponent } from './acorex-platform-module-organization-management-client-responsibilities-matrix.component-DoktMNuL.mjs';
9
+ import { A as AXMOrganizationManagementResponsibilitiesMatrixComponent } from './acorex-platform-module-organization-management-client-responsibilities-matrix.component-BatNIVf7.mjs';
10
10
  import { m as mergeJobDefinitionMatrixPageContext, j as jobLevelsToSpreadsheetTitles, c as collectIdsFromSpreadsheetMatrix } from './acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs';
11
11
 
12
12
  //#endregion
@@ -234,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
234
234
  }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }] } });
235
235
 
236
236
  export { AXMJobDefinitionResponsibilitiesPageComponent };
237
- //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-B1hFwmaF.mjs.map
237
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-D6NuCL7P.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-B1hFwmaF.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-responsibilities-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementResponsibilitiesMatrixComponent } from '../responsibilities-matrix/responsibilities-matrix.component';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n collectIdsFromSpreadsheetMatrix,\n jobLevelsToSpreadsheetTitles,\n mergeJobDefinitionMatrixPageContext,\n} from './job-definition-matrix-page.utils';\n\n//#endregion\n\nconst JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';\nconst JOB_DEFINITION_RESPONSIBILITIES_SAVE = 'JobDefinition:Responsibilities:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-responsibilities-page',\n standalone: true,\n imports: [AXMOrganizationManagementResponsibilitiesMatrixComponent],\n template: `\n <axm-responsibilities-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionResponsibilitiesPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const responsibilities = ctx?.['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['responsibilities'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(data);\n this.localContext.set({\n ...base,\n responsibilities: data,\n responsibilityLevelIds,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const responsibilities = ctx['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_RESPONSIBILITIES_SAVE) {\n return;\n }\n\n return this.persistResponsibilities() as unknown as Promise<void>;\n }\n\n private async persistResponsibilities(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const responsibilities = (ctx['responsibilities'] as AXPSpreadsheetData) ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(responsibilities);\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n responsibilities,\n responsibilityLevelIds,\n });\n\n this.baselineMatrix.set(cloneDeep(responsibilities));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-D6NuCL7P.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-responsibilities-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementResponsibilitiesMatrixComponent } from '../responsibilities-matrix/responsibilities-matrix.component';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n collectIdsFromSpreadsheetMatrix,\n jobLevelsToSpreadsheetTitles,\n mergeJobDefinitionMatrixPageContext,\n} from './job-definition-matrix-page.utils';\n\n//#endregion\n\nconst JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';\nconst JOB_DEFINITION_RESPONSIBILITIES_SAVE = 'JobDefinition:Responsibilities:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-responsibilities-page',\n standalone: true,\n imports: [AXMOrganizationManagementResponsibilitiesMatrixComponent],\n template: `\n <axm-responsibilities-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionResponsibilitiesPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const responsibilities = ctx?.['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['responsibilities'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(data);\n this.localContext.set({\n ...base,\n responsibilities: data,\n responsibilityLevelIds,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const responsibilities = ctx['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_RESPONSIBILITIES_SAVE) {\n return;\n }\n\n return this.persistResponsibilities() as unknown as Promise<void>;\n }\n\n private async persistResponsibilities(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const responsibilities = (ctx['responsibilities'] as AXPSpreadsheetData) ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(responsibilities);\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n responsibilities,\n responsibilityLevelIds,\n });\n\n this.baselineMatrix.set(cloneDeep(responsibilities));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable } from '@angular/core';
8
8
  import { RootConfig, AXPPeopleOrganizationPermissionKeys } from '@acorex-platform/module-organization-management-client/contracts';
9
- import { e as axmResolveOrgChartFlyoutEmployeeId, f as AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON, g as AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY, d as AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID } from './acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs';
9
+ import { e as axmResolveOrgChartFlyoutEmployeeId, f as AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON, g as AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY, d as AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID } from './acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs';
10
10
 
11
11
  //#region ---- Imports ----
12
12
  //#endregion
@@ -176,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
176
176
  }] });
177
177
 
178
178
  export { AXMOrgChartEmployeeFlyoutContributionProvider };
179
- //# sourceMappingURL=acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs.map
179
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DAj237cB.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/contributions/org-chart-employee-flyout-contribution.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport {\n RootConfig,\n AXPPeopleOrganizationPermissionKeys\n} from '@acorex-platform/module-organization-management-client/contracts';\n\nimport {\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID,\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON,\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY,\n} from '../constants/org-chart-employee-submenu.const';\nimport {\n AXMOrgChartNodeContributionContext,\n AXMOrgChartNodeContributionProvider,\n AXMOrgChartNodeMenuAction,\n} from '../tokens/org-chart-node-contribution.token';\nimport { axmResolveOrgChartFlyoutEmployeeId } from '../utils/org-chart-resolve-flyout-employee-id.util';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst actionKey = (suffix: string): string =>\n `@organization-management:organization-chart.node-actions.${suffix}`;\n\nconst HCM_EMPLOYEE_MODULE = 'HumanCapitalManagement';\nconst HCM_EMPLOYEE_NAME = 'Employee';\nconst HCM_EMPLOYEE_SOURCE = `${HCM_EMPLOYEE_MODULE}.${HCM_EMPLOYEE_NAME}`;\n\n//#endregion\n\n/**\n * **Employee** context-submenu: open employee record (`Entity:OpenDetails`), HR placeholders, schedule, add-to-team — plus chat/email from extensions.\n * Shown for {@link AXMOrgChartNodeKind} `employee` and for company / business unit / filled position when an\n * assigned person id is available; hidden when head or top role is vacant.\n */\n@Injectable()\nexport class AXMOrgChartEmployeeFlyoutContributionProvider implements AXMOrgChartNodeContributionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly entityDataSelector = inject(AXPEntityDataSelectorService);\n\n private readonly teamMemberEntityInfo = {\n module: RootConfig.module.name,\n name: RootConfig.entities.teamMember.name,\n title: RootConfig.entities.teamMember.title,\n };\n\n //#endregion\n\n //#region ---- AXMOrgChartNodeContributionProvider ----\n\n async getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]> {\n const employeeId = axmResolveOrgChartFlyoutEmployeeId(context);\n if (!employeeId) {\n return [];\n }\n return this.buildFlyoutActions(context, employeeId);\n }\n\n //#endregion\n\n //#region ---- Flyout actions ----\n\n private buildFlyoutActions(\n context: AXMOrgChartNodeContributionContext,\n employeeId: string,\n ): AXMOrgChartNodeMenuAction[] {\n void context;\n const canViewEmployee = this.authorize(AXPPeopleOrganizationPermissionKeys.MaintainEmployees);\n const canTeam = this.authorize(AXPPeopleOrganizationPermissionKeys.MaintainTeams);\n\n return [\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.open-employee-details',\n title: actionKey('open'),\n icon: 'fa-light fa-arrow-up-right-from-square',\n order: 35,\n disabled: !canViewEmployee,\n execute: async () => {\n await this.commandService.execute('Entity:OpenDetails', {\n entity: HCM_EMPLOYEE_SOURCE,\n data: { id: employeeId },\n });\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-transfer',\n title: actionKey('hr-workflow-transfer'),\n icon: 'fa-light fa-right-left',\n order: 60,\n submenuSectionBreak: true,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.transfer'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-promotion',\n title: actionKey('hr-workflow-promotion'),\n icon: 'fa-light fa-arrow-trend-up',\n order: 61,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.promotion'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-offboarding',\n title: actionKey('hr-workflow-offboarding'),\n icon: 'fa-light fa-door-open',\n order: 62,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.offboarding'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.schedule-meeting',\n title: actionKey('schedule-meeting'),\n icon: 'fa-light fa-calendar-plus',\n order: 70,\n submenuSectionBreak: true,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.schedule-meeting.title'),\n actionKey('placeholders.schedule-meeting.message'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.add-to-team',\n title: actionKey('add-to-team'),\n icon: 'fa-light fa-user-plus',\n order: 75,\n /** Trailing group break: separator after the Employee row on the root menu (inner last-row break is normalized away). */\n break: 'after',\n disabled: !canTeam,\n execute: async (ctx) => {\n await this.openTeamSelectorThenCreateTeamMember(ctx, employeeId);\n },\n }),\n ];\n }\n\n /**\n * Picks a team via {@link AXPEntityDataSelectorService}, then opens **Create Team Member** with both `teamId` and\n * `employeeId` set.\n */\n private async openTeamSelectorThenCreateTeamMember(\n ctx: AXMOrgChartNodeContributionContext,\n employeeId: string,\n ): Promise<void> {\n const teamEntity = await this.entityRegistry.resolve(RootConfig.module.name, RootConfig.entities.team.name);\n if (!teamEntity) {\n return;\n }\n const title = await this.translationService.translateAsync(actionKey('add-to-team-select-team'));\n const pick = await this.entityDataSelector.open({\n entity: teamEntity,\n title,\n allowMultiple: false,\n });\n const teamId = pick?.items?.[0]?.id;\n if (teamId == null || String(teamId).trim().length === 0) {\n return;\n }\n\n const result = await this.commandService.execute('Entity:Create', {\n entity: RootConfig.entities.teamMember.source,\n entityInfo: this.teamMemberEntityInfo,\n data: { employeeId, teamId: String(teamId).trim() },\n options: {\n process: {\n redirect: false,\n },\n },\n \n });\n if (result?.success) {\n await ctx.refreshChart();\n }\n }\n\n private withEmployeeSubmenu(\n action: AXMOrgChartNodeMenuAction,\n ): AXMOrgChartNodeMenuAction {\n return {\n ...action,\n submenuGroupId: AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID,\n submenuGroupTitle: AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY,\n submenuGroupIcon: AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON,\n };\n }\n\n //#endregion\n\n //#region ---- Resolvers ----\n\n private authorize(permission: string): boolean {\n return this.sessionService.authorize(permission);\n }\n\n private async showPlaceholder(titleKey: string, messageKey: string): Promise<void> {\n const title = await this.translationService.translateAsync(titleKey);\n const message = await this.translationService.translateAsync(messageKey);\n await this.dialogService.alert(title, message, 'primary');\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-3IyiZdhr.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/organization-chart/contributions/org-chart-employee-flyout-contribution.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport {\n RootConfig,\n AXPPeopleOrganizationPermissionKeys\n} from '@acorex-platform/module-organization-management-client/contracts';\n\nimport {\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID,\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON,\n AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY,\n} from '../constants/org-chart-employee-submenu.const';\nimport {\n AXMOrgChartNodeContributionContext,\n AXMOrgChartNodeContributionProvider,\n AXMOrgChartNodeMenuAction,\n} from '../tokens/org-chart-node-contribution.token';\nimport { axmResolveOrgChartFlyoutEmployeeId } from '../utils/org-chart-resolve-flyout-employee-id.util';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst actionKey = (suffix: string): string =>\n `@organization-management:organization-chart.node-actions.${suffix}`;\n\nconst HCM_EMPLOYEE_MODULE = 'HumanCapitalManagement';\nconst HCM_EMPLOYEE_NAME = 'Employee';\nconst HCM_EMPLOYEE_SOURCE = `${HCM_EMPLOYEE_MODULE}.${HCM_EMPLOYEE_NAME}`;\n\n//#endregion\n\n/**\n * **Employee** context-submenu: open employee record (`Entity:OpenDetails`), HR placeholders, schedule, add-to-team — plus chat/email from extensions.\n * Shown for {@link AXMOrgChartNodeKind} `employee` and for company / business unit / filled position when an\n * assigned person id is available; hidden when head or top role is vacant.\n */\n@Injectable()\nexport class AXMOrgChartEmployeeFlyoutContributionProvider implements AXMOrgChartNodeContributionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly entityDataSelector = inject(AXPEntityDataSelectorService);\n\n private readonly teamMemberEntityInfo = {\n module: RootConfig.module.name,\n name: RootConfig.entities.teamMember.name,\n title: RootConfig.entities.teamMember.title,\n };\n\n //#endregion\n\n //#region ---- AXMOrgChartNodeContributionProvider ----\n\n async getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]> {\n const employeeId = axmResolveOrgChartFlyoutEmployeeId(context);\n if (!employeeId) {\n return [];\n }\n return this.buildFlyoutActions(context, employeeId);\n }\n\n //#endregion\n\n //#region ---- Flyout actions ----\n\n private buildFlyoutActions(\n context: AXMOrgChartNodeContributionContext,\n employeeId: string,\n ): AXMOrgChartNodeMenuAction[] {\n void context;\n const canViewEmployee = this.authorize(AXPPeopleOrganizationPermissionKeys.MaintainEmployees);\n const canTeam = this.authorize(AXPPeopleOrganizationPermissionKeys.MaintainTeams);\n\n return [\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.open-employee-details',\n title: actionKey('open'),\n icon: 'fa-light fa-arrow-up-right-from-square',\n order: 35,\n disabled: !canViewEmployee,\n execute: async () => {\n await this.commandService.execute('Entity:OpenDetails', {\n entity: HCM_EMPLOYEE_SOURCE,\n data: { id: employeeId },\n });\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-transfer',\n title: actionKey('hr-workflow-transfer'),\n icon: 'fa-light fa-right-left',\n order: 60,\n submenuSectionBreak: true,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.transfer'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-promotion',\n title: actionKey('hr-workflow-promotion'),\n icon: 'fa-light fa-arrow-trend-up',\n order: 61,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.promotion'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.hr-offboarding',\n title: actionKey('hr-workflow-offboarding'),\n icon: 'fa-light fa-door-open',\n order: 62,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.hr-workflow.title'),\n actionKey('placeholders.hr-workflow.offboarding'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.schedule-meeting',\n title: actionKey('schedule-meeting'),\n icon: 'fa-light fa-calendar-plus',\n order: 70,\n submenuSectionBreak: true,\n execute: async () => {\n await this.showPlaceholder(\n actionKey('placeholders.schedule-meeting.title'),\n actionKey('placeholders.schedule-meeting.message'),\n );\n },\n }),\n this.withEmployeeSubmenu({\n id: 'organization-management.org-chart.add-to-team',\n title: actionKey('add-to-team'),\n icon: 'fa-light fa-user-plus',\n order: 75,\n /** Trailing group break: separator after the Employee row on the root menu (inner last-row break is normalized away). */\n break: 'after',\n disabled: !canTeam,\n execute: async (ctx) => {\n await this.openTeamSelectorThenCreateTeamMember(ctx, employeeId);\n },\n }),\n ];\n }\n\n /**\n * Picks a team via {@link AXPEntityDataSelectorService}, then opens **Create Team Member** with both `teamId` and\n * `employeeId` set.\n */\n private async openTeamSelectorThenCreateTeamMember(\n ctx: AXMOrgChartNodeContributionContext,\n employeeId: string,\n ): Promise<void> {\n const teamEntity = await this.entityRegistry.resolve(RootConfig.module.name, RootConfig.entities.team.name);\n if (!teamEntity) {\n return;\n }\n const title = await this.translationService.translateAsync(actionKey('add-to-team-select-team'));\n const pick = await this.entityDataSelector.open({\n entity: teamEntity,\n title,\n allowMultiple: false,\n });\n const teamId = pick?.items?.[0]?.id;\n if (teamId == null || String(teamId).trim().length === 0) {\n return;\n }\n\n const result = await this.commandService.execute('Entity:Create', {\n entity: RootConfig.entities.teamMember.source,\n entityInfo: this.teamMemberEntityInfo,\n data: { employeeId, teamId: String(teamId).trim() },\n options: {\n process: {\n redirect: false,\n },\n },\n \n });\n if (result?.success) {\n await ctx.refreshChart();\n }\n }\n\n private withEmployeeSubmenu(\n action: AXMOrgChartNodeMenuAction,\n ): AXMOrgChartNodeMenuAction {\n return {\n ...action,\n submenuGroupId: AXM_ORG_CHART_EMPLOYEE_SUBMENU_GROUP_ID,\n submenuGroupTitle: AXM_ORG_CHART_EMPLOYEE_SUBMENU_TITLE_I18N_KEY,\n submenuGroupIcon: AXM_ORG_CHART_EMPLOYEE_SUBMENU_ICON,\n };\n }\n\n //#endregion\n\n //#region ---- Resolvers ----\n\n private authorize(permission: string): boolean {\n return this.sessionService.authorize(permission);\n }\n\n private async showPlaceholder(titleKey: string, messageKey: string): Promise<void> {\n const title = await this.translationService.translateAsync(titleKey);\n const message = await this.translationService.translateAsync(messageKey);\n await this.dialogService.alert(title, message, 'primary');\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
3
3
  import * as i0 from '@angular/core';
4
4
  import { inject, Injectable } from '@angular/core';
5
5
  import { RootConfig, AXPPeopleOrganizationPermissionKeys, AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND } from '@acorex-platform/module-organization-management-client/contracts';
6
- import { h as AXM_ORG_CHART_LAYOUT_SUBMENU_ICON, i as AXM_ORG_CHART_LAYOUT_SUBMENU_TITLE_I18N_KEY, j as AXM_ORG_CHART_LAYOUT_SUBMENU_GROUP_ID, A as AXMOrgChartNodeType } from './acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-svaAbPwX.mjs';
6
+ import { h as AXM_ORG_CHART_LAYOUT_SUBMENU_ICON, i as AXM_ORG_CHART_LAYOUT_SUBMENU_TITLE_I18N_KEY, j as AXM_ORG_CHART_LAYOUT_SUBMENU_GROUP_ID, A as AXMOrgChartNodeType } from './acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-BrZiTl-n.mjs';
7
7
 
8
8
  //#region ---- Imports ----
9
9
  //#endregion
@@ -335,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
335
335
  }] });
336
336
 
337
337
  export { AXMOrgChartUxNodeContributionProvider };
338
- //# sourceMappingURL=acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-BX7UB9Z1.mjs.map
338
+ //# sourceMappingURL=acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C2XFBqrb.mjs.map