@acorex-platform/module-organization-management-client 0.0.28 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-Dn8Ss1nL.mjs → acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.mjs} +15 -12
- package/fesm2022/acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-organization-management-client-contracts.mjs +23 -5
- package/fesm2022/acorex-platform-module-organization-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-DD3jLujN.mjs → acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs} +3 -3
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-BNhXJfjr.mjs → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-pages-component.provider-BNhXJfjr.mjs.map → acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-BlUzsSy3.mjs → acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs} +3 -3
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-organization-management-client-job-definition-skills-page.component--pyAaXB4.mjs → acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs} +3 -3
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-Bz8nVm04.mjs → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-Bz8nVm04.mjs.map → acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C5TItnOp.mjs → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-C5TItnOp.mjs.map → acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-organization-management-client-org-chart.page-g_3oPPH0.mjs → acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs} +7 -7
- package/fesm2022/acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-organization-management-client-responsibilities-matrix-widget-column.component-C5H0kcVW.mjs +64 -0
- package/fesm2022/acorex-platform-module-organization-management-client-responsibilities-matrix-widget-column.component-C5H0kcVW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DHmUxlnu.mjs → acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DmDQSgYC.mjs} +3 -3
- package/fesm2022/acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DmDQSgYC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-organization-management-client-settings.provider-Dnrkq9Ku.mjs → acorex-platform-module-organization-management-client-settings.provider-B3nDm32f.mjs} +20 -4
- package/fesm2022/{acorex-platform-module-organization-management-client-settings.provider-Dnrkq9Ku.mjs.map → acorex-platform-module-organization-management-client-settings.provider-B3nDm32f.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-organization-management-client.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-module-organization-management-client-contracts.d.ts +13 -2
- package/fesm2022/acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-Dn8Ss1nL.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-DD3jLujN.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-BlUzsSy3.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-organization-management-client-job-definition-skills-page.component--pyAaXB4.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-organization-management-client-org-chart.page-g_3oPPH0.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DHmUxlnu.mjs.map +0 -1
|
@@ -254,7 +254,10 @@ const AXMResponsibilitiesMatrixWidget = {
|
|
|
254
254
|
component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-view.component-BkLZhXhM.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetViewComponent),
|
|
255
255
|
},
|
|
256
256
|
edit: {
|
|
257
|
-
component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-
|
|
257
|
+
component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-edit.component-DmDQSgYC.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetEditComponent),
|
|
258
|
+
},
|
|
259
|
+
column: {
|
|
260
|
+
component: () => import('./acorex-platform-module-organization-management-client-responsibilities-matrix-widget-column.component-C5H0kcVW.mjs').then((c) => c.AXMResponsibilitiesMatrixWidgetColumnComponent),
|
|
258
261
|
},
|
|
259
262
|
},
|
|
260
263
|
};
|
|
@@ -286,8 +289,8 @@ class AXMOrganizationChartModule {
|
|
|
286
289
|
// AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,
|
|
287
290
|
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
291
|
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-
|
|
290
|
-
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-
|
|
292
|
+
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
|
|
293
|
+
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
|
|
291
294
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () => import('./acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs').then((m) => m.AXMGenerateOrgChartCommand)),
|
|
292
295
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-position-to-business-unit.command-F7jD3jKs.mjs').then((m) => m.AXMAddPositionToBusinessUnitCommand)),
|
|
293
296
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-business-unit-to-business-unit.command-CA2uZQyC.mjs').then((m) => m.AXMAddBusinessUnitToBusinessUnitCommand)),
|
|
@@ -304,8 +307,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
304
307
|
// AXM_ORG_CHART_EVENT_LISTENER_RELOAD_PROVIDER,
|
|
305
308
|
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)),
|
|
306
309
|
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)),
|
|
307
|
-
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-
|
|
308
|
-
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-
|
|
310
|
+
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-employee-flyout-contribution.provider-DZs4VB50.mjs').then((m) => m.AXMOrgChartEmployeeFlyoutContributionProvider)),
|
|
311
|
+
provideLazyProvider(AXM_ORG_CHART_NODE_CONTRIBUTOR, () => import('./acorex-platform-module-organization-management-client-org-chart-ux-node-contribution.provider-ISEbvMkZ.mjs').then((m) => m.AXMOrgChartUxNodeContributionProvider)),
|
|
309
312
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.Generate, () => import('./acorex-platform-module-organization-management-client-generate-org-chart.command-DJnFJKuo.mjs').then((m) => m.AXMGenerateOrgChartCommand)),
|
|
310
313
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddPositionToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-position-to-business-unit.command-F7jD3jKs.mjs').then((m) => m.AXMAddPositionToBusinessUnitCommand)),
|
|
311
314
|
provideCommand(AXMOrganizationManagementCommandKeys.OrganizationChart.AddBusinessUnitToBusinessUnit, () => import('./acorex-platform-module-organization-management-client-add-business-unit-to-business-unit.command-CA2uZQyC.mjs').then((m) => m.AXMAddBusinessUnitToBusinessUnitCommand)),
|
|
@@ -330,7 +333,7 @@ function routesFacory() {
|
|
|
330
333
|
{
|
|
331
334
|
path: 'chart',
|
|
332
335
|
resolve: { orgChartUi: orgChartUiPrefsResolver },
|
|
333
|
-
loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-
|
|
336
|
+
loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs').then((c) => c.AXMOrgChartPage),
|
|
334
337
|
},
|
|
335
338
|
],
|
|
336
339
|
},
|
|
@@ -349,7 +352,7 @@ function routesFactory() {
|
|
|
349
352
|
{
|
|
350
353
|
path: 'chart',
|
|
351
354
|
resolve: { orgChartUi: orgChartUiPrefsResolver },
|
|
352
|
-
loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-
|
|
355
|
+
loadComponent: () => import('./acorex-platform-module-organization-management-client-org-chart.page-CMd5nTa7.mjs').then((c) => c.AXMOrgChartPage),
|
|
353
356
|
},
|
|
354
357
|
],
|
|
355
358
|
};
|
|
@@ -375,8 +378,8 @@ class AXMOrganizationManagementModule {
|
|
|
375
378
|
provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-permission-definition.provider-CiCdTBGo.mjs').then((m) => m.AXMPermissionDefinitionProvider)),
|
|
376
379
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-organization-management-client-menu.provider-BgRoEC48.mjs').then((m) => m.AXMMenuProvider)),
|
|
377
380
|
provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider)),
|
|
378
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-
|
|
379
|
-
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-
|
|
381
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
|
|
382
|
+
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-B3nDm32f.mjs').then((m) => m.AXMSettingProvider)),
|
|
380
383
|
// Widgets must register eagerly: lazy registration can resolve after entity forms bind,
|
|
381
384
|
// so module editors like responsibilities-matrix-editor would not be found (blank UI).
|
|
382
385
|
{
|
|
@@ -412,8 +415,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
412
415
|
provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-permission-definition.provider-CiCdTBGo.mjs').then((m) => m.AXMPermissionDefinitionProvider)),
|
|
413
416
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-organization-management-client-menu.provider-BgRoEC48.mjs').then((m) => m.AXMMenuProvider)),
|
|
414
417
|
provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-feature-definition.provider-BQKtvXOM.mjs').then((m) => m.AXPOrganizationManagementFeatureDefinitionProvider)),
|
|
415
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-
|
|
416
|
-
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-
|
|
418
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs').then((m) => m.AXMJobDefinitionPagesComponentProvider)),
|
|
419
|
+
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-organization-management-client-settings.provider-B3nDm32f.mjs').then((m) => m.AXMSettingProvider)),
|
|
417
420
|
// Widgets must register eagerly: lazy registration can resolve after entity forms bind,
|
|
418
421
|
// so module editors like responsibilities-matrix-editor would not be found (blank UI).
|
|
419
422
|
{
|
|
@@ -430,4 +433,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
430
433
|
*/
|
|
431
434
|
|
|
432
435
|
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 };
|
|
433
|
-
//# sourceMappingURL=acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-
|
|
436
|
+
//# sourceMappingURL=acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-organization-management-client-acorex-platform-module-organization-management-client-UGWNdPxI.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/manifest.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","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Organization Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const OrganizationManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'platform',\n domain: 'platform',\n // LearningManagement is optional (job-definition skills page). Do not list it as a\n // hard dependency — feature resolution would auto-enable Learning for every tenant\n // that has OrganizationManagement (e.g. Safetyminder without Learning).\n};\n\n//#endregion\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_MODULE_MANIFEST_PROVIDER,\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 { OrganizationManagementManifest } from './manifest';\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 // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: OrganizationManagementManifest,\n multi: true,\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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"}
|
|
@@ -108,6 +108,22 @@ function buildCompanyLogoFileDownloadPath(fileId) {
|
|
|
108
108
|
const id = normalizeLogoRef(fileId);
|
|
109
109
|
return `/api/v1/file-storage/download/${encodeURIComponent(id)}`;
|
|
110
110
|
}
|
|
111
|
+
const FILE_DOWNLOAD_ID_PATTERN = /\/file-storage\/download\/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i;
|
|
112
|
+
/**
|
|
113
|
+
* File-storage id from a branding logo setting, tenant.logo, or download URL.
|
|
114
|
+
* Used by the server to inline the binary as a data URI (download is JWT-protected).
|
|
115
|
+
*/
|
|
116
|
+
function extractCompanyLogoFileId(value) {
|
|
117
|
+
const ref = extractLogoRef(value);
|
|
118
|
+
if (!ref) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
const fromPath = ref.match(FILE_DOWNLOAD_ID_PATTERN)?.[1];
|
|
122
|
+
if (fromPath && isFileStorageId(fromPath)) {
|
|
123
|
+
return normalizeLogoRef(fromPath);
|
|
124
|
+
}
|
|
125
|
+
return isFileStorageId(ref) ? normalizeLogoRef(ref) : undefined;
|
|
126
|
+
}
|
|
111
127
|
function extractLogoRef(value) {
|
|
112
128
|
if (typeof value === 'string') {
|
|
113
129
|
return value.trim();
|
|
@@ -164,6 +180,7 @@ function isLocalWebOrigin(webOrigin) {
|
|
|
164
180
|
/**
|
|
165
181
|
* Resolves a logo URL for template merge / preview.
|
|
166
182
|
* - File-storage ids → `/api/v1/file-storage/download/{id}` (absolutized with apiOrigin).
|
|
183
|
+
* Outbound email cannot fetch that URL (JWT + often localhost); pass `inlinedLogoUrl`.
|
|
167
184
|
* - Keep app-relative paths (`/assets/...`) as-is for in-app preview.
|
|
168
185
|
* - Absolutize asset paths only against a public (non-localhost) web origin for outbound email.
|
|
169
186
|
*/
|
|
@@ -238,10 +255,11 @@ function buildCompanyEmailMergeFromOrganization(input = {}) {
|
|
|
238
255
|
'#0f172a';
|
|
239
256
|
const rawLogo = extractLogoRef(values[COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingLogo]) ||
|
|
240
257
|
extractLogoRef(tenant?.logo);
|
|
241
|
-
const companyLogoUrl =
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
258
|
+
const companyLogoUrl = coerceString(input.inlinedLogoUrl, '') ||
|
|
259
|
+
resolveLogoUrl(rawLogo, {
|
|
260
|
+
webOrigin: input.webOrigin,
|
|
261
|
+
apiOrigin: input.apiOrigin,
|
|
262
|
+
});
|
|
245
263
|
const companyNameInitials = buildInitials(companyName);
|
|
246
264
|
const copyrightText = pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.CopyrightText, locale) ||
|
|
247
265
|
AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT;
|
|
@@ -464,5 +482,5 @@ const AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION = 1;
|
|
|
464
482
|
* Generated bundle index. Do not edit.
|
|
465
483
|
*/
|
|
466
484
|
|
|
467
|
-
export { AXMOrganizationManagementCommandKeys, AXMOrganizationManagementServerCommands, AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND, AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND, AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION, AXPOrganizationManagementFeatureKeys, AXPOrganizationManagementMenuKeys, AXPOrganizationManagementPermissionKeys, AXPOrganizationManagementSettings, AXPPeopleOrganizationPermissionKeys, AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT, COMPANY_EMAIL_ORG_SETTING_KEYS, JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY, JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY, RootConfig, buildCompanyEmailMergeDefaults, buildCompanyEmailMergeFromOrganization, buildCompanyLogoFileDownloadPath, configureOrgChartMergedBusinessUnitId, getOrgChartMergedBusinessUnitId };
|
|
485
|
+
export { AXMOrganizationManagementCommandKeys, AXMOrganizationManagementServerCommands, AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND, AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND, AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION, AXPOrganizationManagementFeatureKeys, AXPOrganizationManagementMenuKeys, AXPOrganizationManagementPermissionKeys, AXPOrganizationManagementSettings, AXPPeopleOrganizationPermissionKeys, AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT, COMPANY_EMAIL_ORG_SETTING_KEYS, JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY, JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY, RootConfig, buildCompanyEmailMergeDefaults, buildCompanyEmailMergeFromOrganization, buildCompanyLogoFileDownloadPath, configureOrgChartMergedBusinessUnitId, extractCompanyLogoFileId, getOrgChartMergedBusinessUnitId };
|
|
468
486
|
//# sourceMappingURL=acorex-platform-module-organization-management-client-contracts.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-organization-management-client-contracts.mjs","sources":["../../../../libs/modules/organization-management/contracts/src/commands.keys.ts","../../../../libs/modules/organization-management/contracts/src/server-commands.ts","../../../../libs/modules/organization-management/contracts/src/settings.keys.ts","../../../../libs/modules/organization-management/contracts/src/company-email-merge.util.ts","../../../../libs/modules/organization-management/contracts/src/features.keys.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/menu.keys.ts","../../../../libs/modules/organization-management/contracts/src/org-chart-merged-business-unit.configure.ts","../../../../libs/modules/organization-management/contracts/src/permission.keys.ts","../../../../libs/modules/organization-management/contracts/src/root-config.ts","../../../../libs/modules/organization-management/contracts/src/entities/chart/chart.types.ts","../../../../libs/modules/organization-management/contracts/src/index.ts","../../../../libs/modules/organization-management/contracts/src/acorex-platform-module-organization-management-client-contracts.ts"],"sourcesContent":["//#region ---- Client command keys ----\n\n/**\n * Client-side command keys (UI, dialogs, orchestration).\n * Server handlers use {@link AXMOrganizationManagementServerCommands} — never reuse these strings.\n */\nexport const AXMOrganizationManagementCommandKeys = {\n OrganizationChart: {\n Generate: 'OrganizationManagement.OrgChart:Generate',\n AddPositionToBusinessUnit: 'OrganizationManagement.OrgChart:AddPositionToBusinessUnit',\n AddBusinessUnitToBusinessUnit: 'OrganizationManagement.OrgChart:AddBusinessUnitToBusinessUnit',\n AddTeamToBusinessUnit: 'OrganizationManagement.OrgChart:AddTeamToBusinessUnit',\n RemovePositionFromBusinessUnit: 'OrganizationManagement.OrgChart:RemovePositionFromBusinessUnit',\n ReplacePositionAssignee: 'OrganizationManagement.OrgChart:ReplacePositionAssignee',\n },\n} as const;\n\n//#endregion\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Assign' as const;\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Revoke' as const;\n","//#region ---- Server command keys ----\n\n/**\n * Server-only runtime command keys for Organization Management.\n * Must stay distinct from client {@link AXMOrganizationManagementCommandKeys}.\n */\nexport const AXMOrganizationManagementServerCommands = {\n OrganizationChart: {\n Generate: 'OrganizationManagement:Server:OrgChart:Generate',\n },\n} as const;\n\n//#endregion\n","export enum AXPOrganizationManagementSettings {\n OrganizationName = 'OrganizationManagement:Setting:Organization.OrganizationName',\n OrganizationNameDisplay = 'OrganizationManagement:Setting:Organization.OrganizationNameDisplay',\n TradingName = 'OrganizationManagement:Setting:Organization.TradingName',\n TradingNameDisplay = 'OrganizationManagement:Setting:Organization.TradingNameDisplay',\n CompanyBio = 'OrganizationManagement:Setting:Organization.CompanyBio',\n BusinessRegistrationNumber = 'OrganizationManagement:Setting:Organization.BusinessRegistrationNumber',\n CompanyRegistrationNumber = 'OrganizationManagement:Setting:Organization.CompanyRegistrationNumber',\n LicenceNumber = 'OrganizationManagement:Setting:Organization.LicenceNumber',\n OrganizationID = 'OrganizationManagement:Setting:Organization.OrganizationID',\n ContactEmail = 'OrganizationManagement:Setting:Organization.ContactEmail',\n ContactPhone = 'OrganizationManagement:Setting:Organization.ContactPhone',\n OrganizationStreet1 = 'OrganizationManagement:Setting:Organization.Street1',\n OrganizationStreet2 = 'OrganizationManagement:Setting:Organization.Street2',\n OrganizationCountryId = 'OrganizationManagement:Setting:Organization.CountryId',\n OrganizationStateId = 'OrganizationManagement:Setting:Organization.StateId',\n OrganizationCityId = 'OrganizationManagement:Setting:Organization.CityId',\n OrganizationPostalCode = 'OrganizationManagement:Setting:Organization.PostalCode',\n BrandingColor = 'OrganizationManagement:Setting:Organization.Branding.Color',\n BrandingLogo = 'OrganizationManagement:Setting:Organization.Branding.Logo',\n CopyrightText = 'OrganizationManagement:Setting:Organization.CopyrightText',\n SupportEmail = 'OrganizationManagement:Setting:Organization.SupportEmail',\n InfoEmail = 'OrganizationManagement:Setting:Organization.InfoEmail',\n FaxNumber = 'OrganizationManagement:Setting:Organization.FaxNumber',\n Relations = 'OrganizationManagement:Setting:Organization.Relations',\n\n /** User preference: organization hierarchy chart mode (`structure` | `location` | `reporting` | `positionHierarchy`). */\n HierarchyChartMode = 'OrganizationManagement:Setting:User.HierarchyChart.Mode',\n /** User preference: show vacant leaf seats (structure / geographic modes). */\n HierarchyChartShowVacantLeafSeats = 'OrganizationManagement:Setting:User.HierarchyChart.ShowVacantLeafSeats',\n}\n","import { AXPOrganizationManagementSettings } from './settings.keys';\nimport {\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Company email merge from organization settings (leaf) ----\n\n/** Keys read from platform/tenant settings for company email master tokens. */\nexport const COMPANY_EMAIL_ORG_SETTING_KEYS = {\n OrganizationName: AXPOrganizationManagementSettings.OrganizationName,\n BrandingLogo: AXPOrganizationManagementSettings.BrandingLogo,\n BrandingColor: AXPOrganizationManagementSettings.BrandingColor,\n ContactEmail: AXPOrganizationManagementSettings.ContactEmail,\n ContactPhone: AXPOrganizationManagementSettings.ContactPhone,\n SupportEmail: AXPOrganizationManagementSettings.SupportEmail,\n InfoEmail: AXPOrganizationManagementSettings.InfoEmail,\n Street1: AXPOrganizationManagementSettings.OrganizationStreet1,\n Street2: AXPOrganizationManagementSettings.OrganizationStreet2,\n PostalCode: AXPOrganizationManagementSettings.OrganizationPostalCode,\n CopyrightText: AXPOrganizationManagementSettings.CopyrightText,\n} as const;\n\n/**\n * Definition default for {@link AXPOrganizationManagementSettings.CopyrightText}.\n * Used when the key is not yet persisted (inherited settings often stay client-only).\n */\nexport const AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT = '© 2026 Your Company';\n\nexport interface CompanyEmailTenantSnapshot {\n title?: AXPMultiLanguageString | null;\n email?: string | null;\n phone?: string | null;\n supportEmail?: string | null;\n logo?: string | null;\n color?: string | null;\n city?: { title?: AXPMultiLanguageString | null } | null;\n state?: { title?: AXPMultiLanguageString | null } | null;\n country?: { title?: AXPMultiLanguageString | null } | null;\n}\n\nexport interface BuildCompanyEmailMergeInput {\n settingsValues?: Record<string, unknown> | null;\n tenant?: CompanyEmailTenantSnapshot | null;\n /** UI origin for absolutizing `/assets/...` logo paths in outbound email. */\n webOrigin?: string | null;\n /**\n * API origin (no trailing slash, no `/api` suffix) used to absolutize\n * file-storage download URLs for logo file ids.\n */\n apiOrigin?: string | null;\n /**\n * Locale for resolving multi-language organization settings / tenant title\n * (`companyName`, `copyrightText`, address region titles, …).\n * Defaults to `en-US` when omitted.\n */\n locale?: string | null;\n overrides?: Record<string, string>;\n}\n\n/** Matches platform file-storage ids (and optional `file:` cast prefix). */\nconst FILE_STORAGE_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nfunction coerceString(value: unknown, fallback = '', locale = 'en-US'): string {\n if (typeof value === 'string') {\n return value.trim() || fallback;\n }\n return resolveMultiLanguageString(value, locale).trim() || fallback;\n}\n\nfunction pickSetting(\n values: Record<string, unknown> | null | undefined,\n key: string,\n locale: string,\n): string {\n return coerceString(values?.[key], '', locale);\n}\n\nfunction normalizeLogoRef(value: string): string {\n const trimmed = value.trim();\n return trimmed.startsWith('file:') ? trimmed.slice('file:'.length).trim() : trimmed;\n}\n\nfunction isFileStorageId(value: string): boolean {\n return FILE_STORAGE_ID_PATTERN.test(normalizeLogoRef(value));\n}\n\n/** Relative download path served by `FileStorageController.download`. */\nexport function buildCompanyLogoFileDownloadPath(fileId: string): string {\n const id = normalizeLogoRef(fileId);\n return `/api/v1/file-storage/download/${encodeURIComponent(id)}`;\n}\n\nfunction extractLogoRef(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value && typeof value === 'object') {\n const record = value as { url?: unknown; fileId?: unknown; id?: unknown };\n return (\n coerceString(record.url, '') ||\n coerceString(record.fileId, '') ||\n coerceString(record.id, '')\n );\n }\n return '';\n}\n\nfunction buildAddressFromSettings(\n values: Record<string, unknown> | null | undefined,\n locale: string,\n): string {\n return [\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street1, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street2, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.PostalCode, locale),\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildAddressFromTenant(\n tenant: CompanyEmailTenantSnapshot | null | undefined,\n locale: string,\n): string {\n if (!tenant) {\n return '';\n }\n return [tenant.city?.title, tenant.state?.title, tenant.country?.title]\n .map((part) => coerceString(part, '', locale))\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildInitials(name: string): string {\n const parts = name.split(/\\s+/).filter(Boolean);\n if (!parts.length) {\n return 'CO';\n }\n if (parts.length === 1) {\n return parts[0]!.slice(0, 2).toUpperCase();\n }\n return `${parts[0]![0] ?? ''}${parts[1]![0] ?? ''}`.toUpperCase();\n}\n\nfunction isLocalWebOrigin(webOrigin?: string | null): boolean {\n const origin = coerceString(webOrigin, '');\n if (!origin) {\n return true;\n }\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host.endsWith('.local');\n } catch {\n return true;\n }\n}\n\n/**\n * Resolves a logo URL for template merge / preview.\n * - File-storage ids → `/api/v1/file-storage/download/{id}` (absolutized with apiOrigin).\n * - Keep app-relative paths (`/assets/...`) as-is for in-app preview.\n * - Absolutize asset paths only against a public (non-localhost) web origin for outbound email.\n */\nfunction resolveLogoUrl(\n logo: string,\n options: { webOrigin?: string | null; apiOrigin?: string | null } = {},\n): string {\n if (!logo) {\n return '';\n }\n if (isFileStorageId(logo)) {\n const path = buildCompanyLogoFileDownloadPath(logo);\n const apiOrigin = coerceString(options.apiOrigin, '').replace(/\\/$/, '');\n return apiOrigin ? `${apiOrigin}${path}` : path;\n }\n if (/^https?:\\/\\//i.test(logo) || logo.startsWith('data:')) {\n if (/^https?:\\/\\//i.test(logo) && isLocalWebOrigin(logo)) {\n return '';\n }\n return logo;\n }\n if (logo.startsWith('/')) {\n if (isLocalWebOrigin(options.webOrigin)) {\n return logo;\n }\n const origin = coerceString(options.webOrigin, '').replace(/\\/$/, '');\n return origin ? `${origin}${logo}` : logo;\n }\n return logo;\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n\nfunction escapeHtmlText(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n\nfunction buildLogoMarkHtml(companyName: string, initials: string, logoUrl: string, brandColor: string): string {\n if (logoUrl) {\n return (\n `<img src=\"${escapeHtmlAttribute(logoUrl)}\" alt=\"${escapeHtmlAttribute(companyName)}\" width=\"40\" height=\"40\" ` +\n `style=\"display:inline-block;border:0;outline:none;height:40px;width:40px;object-fit:contain;\" />`\n );\n }\n return (\n `<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:700;` +\n `line-height:56px;color:${escapeHtmlAttribute(brandColor)};letter-spacing:0.5px;\">` +\n `${escapeHtmlText(initials)}</div>`\n );\n}\n\n/**\n * Builds merge tokens for the company email master from organization settings,\n * falling back to tenant snapshot fields when settings are empty (common after seed).\n */\nexport function buildCompanyEmailMergeFromOrganization(\n input: BuildCompanyEmailMergeInput = {},\n): Record<string, string> {\n const values = input.settingsValues ?? {};\n const tenant = input.tenant ?? null;\n const locale =\n (typeof input.locale === 'string' && input.locale.trim()) || 'en-US';\n const year = String(new Date().getFullYear());\n\n const companyName =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.OrganizationName, locale) ||\n coerceString(tenant?.title, '', locale) ||\n 'Your Company';\n\n const companyEmail =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.InfoEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.SupportEmail, locale) ||\n coerceString(tenant?.email, '', locale) ||\n coerceString(tenant?.supportEmail, '', locale);\n\n const companyPhone =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactPhone, locale) ||\n coerceString(tenant?.phone, '', locale);\n\n const companyAddress =\n buildAddressFromSettings(values, locale) || buildAddressFromTenant(tenant, locale);\n\n const companyBrandColor =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingColor, locale) ||\n coerceString(tenant?.color, '', locale) ||\n '#0f172a';\n\n const rawLogo =\n extractLogoRef(values[COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingLogo]) ||\n extractLogoRef(tenant?.logo);\n const companyLogoUrl = resolveLogoUrl(rawLogo, {\n webOrigin: input.webOrigin,\n apiOrigin: input.apiOrigin,\n });\n const companyNameInitials = buildInitials(companyName);\n\n const copyrightText =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.CopyrightText, locale) ||\n AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT;\n\n return {\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyLogoMarkHtml: buildLogoMarkHtml(\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyBrandColor,\n ),\n companyBrandColor,\n companyPhone,\n companyAddress,\n companyEmail,\n copyrightText,\n currentYear: year,\n ...(input.overrides ?? {}),\n };\n}\n\n/** @deprecated Prefer {@link buildCompanyEmailMergeFromOrganization}. */\nexport function buildCompanyEmailMergeDefaults(\n overrides: Record<string, string> = {},\n): Record<string, string> {\n return buildCompanyEmailMergeFromOrganization({ overrides });\n}\n\n//#endregion\n","//#region ---- Feature Keys ----\n\n/**\n * Organization Management Module Feature Keys.\n * Defines all available features for the Organization Management module.\n */\n// Management feature removed - module name is used directly as feature key\nexport const AXPOrganizationManagementFeatureKeys = {} as const;\n\n//#endregion\n\n","/** Page tab for editing job-definition responsibilities matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY = 'job-definition-responsibilities-page';\n","/** Page tab for editing job-definition skills matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY = 'job-definition-skills-page';\n","export const AXPOrganizationManagementMenuKeys = {\n Root: 'OrganizationManagement:Menu',\n ConfigurationRoot: 'OrganizationManagement:Menu:Configuration',\n Teams: 'OrganizationManagement:Menu:Teams',\n TeamMemberRoles: 'OrganizationManagement:Menu:TeamMemberRoles',\n Positions: 'OrganizationManagement:Menu:Positions',\n JobDefinitions: 'OrganizationManagement:Menu:JobDefinitions',\n JobLevels: 'OrganizationManagement:Menu:JobLevels',\n Responsibilities: 'OrganizationManagement:Menu:Responsibilities',\n ResponsibilityLevels: 'OrganizationManagement:Menu:ResponsibilityLevels',\n Divider1: 'OrganizationManagement:Menu:Divider1',\n BusinessUnits: 'OrganizationManagement:Menu:BusinessUnits',\n BusinessUnitTypes: 'OrganizationManagement:Menu:BusinessUnitTypes',\n Divider2: 'OrganizationManagement:Menu:Divider2',\n OrganizationChart: 'OrganizationManagement:Menu:OrganizationChart',\n} as const;\n\n","//#region ----- Org-chart merged corporate business unit id -----\n\n/**\n * Optional id of the enterprise-root / corporate HQ business unit that org-chart\n * builders merge into the company node (skip a separate chart card).\n *\n * Empty default (`null`) = no merge. Product/demo apps call\n * {@link configureOrgChartMergedBusinessUnitId} at boot with their seed id.\n */\nlet orgChartMergedBusinessUnitId: string | null = null;\n\n/**\n * Configure the business-unit id treated as the merged corporate root on org charts.\n * Pass `null` (or empty string) to disable merge behavior.\n */\nexport function configureOrgChartMergedBusinessUnitId(id: string | null): void {\n orgChartMergedBusinessUnitId =\n typeof id === 'string' && id.trim().length > 0 ? id.trim() : null;\n}\n\n/** Configured merged corporate business-unit id, or `null` when merge is disabled. */\nexport function getOrgChartMergedBusinessUnitId(): string | null {\n return orgChartMergedBusinessUnitId;\n}\n\n//#endregion\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPPeopleOrganizationPermissionKeys}.\n * Alias of the full People & Organization key set (including persons/attendance caps).\n */\nexport const AXPOrganizationManagementPermissionKeys = AXPPeopleOrganizationPermissionKeys;\n","const config = {\n i18n: 'organization-management',\n module: 'OrganizationManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'organization-management',\n name: config.module,\n title: '@organization-management:module.title',\n icon: 'fa-light fa-sitemap',\n },\n entities: {\n responsibility: {\n name: 'Responsibility',\n title: '@organization-management:responsibilities.entities.responsibility.title',\n source: `${config.module}.Responsibility`,\n icon: 'fa-light fa-tasks',\n },\n jobDefinition: {\n name: 'JobDefinition',\n title: '@organization-management:job-definitions.entities.job-definition.title',\n source: `${config.module}.JobDefinition`,\n icon: 'fa-light fa-user-tie',\n },\n jobLevel: {\n name: 'JobLevel',\n title: '@organization-management:job-levels.entities.job-level.title',\n source: `${config.module}.JobLevel`,\n icon: 'fa-light fa-layer-group',\n },\n responsibilityLevel: {\n name: 'ResponsibilityLevel',\n title: '@organization-management:responsibility-levels.entities.responsibility-level.title',\n titlePlural: '@organization-management:responsibility-levels.entities.responsibility-level.plural',\n source: `${config.module}.ResponsibilityLevel`,\n icon: 'fa-light fa-layer-group',\n },\n company: {\n name: 'Company',\n source: `${config.module}.Company`,\n title: '@organization-management:companies.entities.company.title',\n icon: 'fa-light fa-building',\n },\n team: {\n name: 'Team',\n source: `${config.module}.Team`,\n title: '@organization-management:teams.entities.team.title',\n icon: 'fa-light fa-people-group',\n },\n teamMemberRole: {\n name: 'TeamMemberRole',\n source: `${config.module}.TeamMemberRole`,\n title: '@organization-management:team-member-roles.entities.team-member-role.title',\n icon: 'fa-light fa-user-tag',\n },\n teamMember: {\n name: 'TeamMember',\n source: `${config.module}.TeamMember`,\n title: '@organization-management:team-members.entities.team-member.title',\n icon: 'fa-light fa-users',\n },\n teamBusinessUnit: {\n name: 'TeamBusinessUnit',\n source: `${config.module}.TeamBusinessUnit`,\n title: '@organization-management:team-business-units.entities.team-business-unit.title',\n icon: 'fa-light fa-link',\n },\n position: {\n name: 'Position',\n source: `${config.module}.Position`,\n title: '@organization-management:positions.entities.position.title',\n icon: 'fa-light fa-briefcase',\n },\n businessUnitType: {\n name: 'BusinessUnitType',\n source: `${config.module}.BusinessUnitType`,\n title: '@organization-management:business-unit-types.entities.business-unit-type.title',\n icon: 'fa-light fa-tag',\n },\n businessUnit: {\n name: 'BusinessUnit',\n source: `${config.module}.BusinessUnit`,\n title: '@organization-management:business-units.entities.business-unit.title',\n icon: 'fa-light fa-sitemap',\n },\n\n structure: {\n name: 'ChartStructure',\n source: `${config.module}.ChartStructure`,\n title: '@organization-management:chart-configuration.components.chart-configuration.title',\n menu: {\n title: '@organization-management:chart-configuration.menus.chart-configuration.title',\n },\n icon: 'fa-light fa-gear',\n },\n chart: {\n name: 'Chart',\n source: `${config.module}.Chart`,\n title: '@organization-management:organization-chart.components.chart.title',\n menu: {\n title: '@organization-management:organization-chart.menus.chart.title',\n },\n icon: 'fa-light fa-chart-diagram',\n },\n },\n queries: {\n dashboard: {\n teamsBar: `${config.module}:Dashboard:TeamsBar`,\n },\n },\n} as const;\n","import { type AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n/** Persisted org-chart JSON: all chart modes in one row (`structure` column). */\nexport const AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION = 1 as const;\n\nexport interface AXMOrgChartStructurePayload {\n schemaVersion: typeof AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION;\n modes: {\n structure: AXMOrganizationManagementChartNodeEntityModel;\n location: AXMOrganizationManagementChartNodeEntityModel;\n reporting: AXMOrganizationManagementChartNodeEntityModel;\n positionHierarchy: AXMOrganizationManagementChartNodeEntityModel;\n };\n}\n\nexport interface AXMOrganizationManagementChartEntityModel extends AXPEntityModel<string> {\n version: string;\n structure: AXMOrgChartStructurePayload;\n}\n\nexport interface AXMOrganizationManagementChartNodeEntityModel extends AXPEntityModel<string> {\n id: string; // Unique identifier for the node\n title: AXPMultiLanguageString;\n subtitle?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationManagementChartNodeEntityModel[];\n icon?: string;\n type?: string; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n metadata?: Record<string, any>; // Additional metadata (e.g., roles, counts, etc.)\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './server-commands';\nexport * from './company-email-merge.util';\nexport * from './features.keys';\nexport * from './JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY';\nexport * from './JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY';\nexport * from './menu.keys';\nexport * from './org-chart-merged-business-unit.configure';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-organization-management-client-contracts.mjs","sources":["../../../../libs/modules/organization-management/contracts/src/commands.keys.ts","../../../../libs/modules/organization-management/contracts/src/server-commands.ts","../../../../libs/modules/organization-management/contracts/src/settings.keys.ts","../../../../libs/modules/organization-management/contracts/src/company-email-merge.util.ts","../../../../libs/modules/organization-management/contracts/src/features.keys.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/organization-management/contracts/src/menu.keys.ts","../../../../libs/modules/organization-management/contracts/src/org-chart-merged-business-unit.configure.ts","../../../../libs/modules/organization-management/contracts/src/permission.keys.ts","../../../../libs/modules/organization-management/contracts/src/root-config.ts","../../../../libs/modules/organization-management/contracts/src/entities/chart/chart.types.ts","../../../../libs/modules/organization-management/contracts/src/index.ts","../../../../libs/modules/organization-management/contracts/src/acorex-platform-module-organization-management-client-contracts.ts"],"sourcesContent":["//#region ---- Client command keys ----\n\n/**\n * Client-side command keys (UI, dialogs, orchestration).\n * Server handlers use {@link AXMOrganizationManagementServerCommands} — never reuse these strings.\n */\nexport const AXMOrganizationManagementCommandKeys = {\n OrganizationChart: {\n Generate: 'OrganizationManagement.OrgChart:Generate',\n AddPositionToBusinessUnit: 'OrganizationManagement.OrgChart:AddPositionToBusinessUnit',\n AddBusinessUnitToBusinessUnit: 'OrganizationManagement.OrgChart:AddBusinessUnitToBusinessUnit',\n AddTeamToBusinessUnit: 'OrganizationManagement.OrgChart:AddTeamToBusinessUnit',\n RemovePositionFromBusinessUnit: 'OrganizationManagement.OrgChart:RemovePositionFromBusinessUnit',\n ReplacePositionAssignee: 'OrganizationManagement.OrgChart:ReplacePositionAssignee',\n },\n} as const;\n\n//#endregion\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_ASSIGN_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Assign' as const;\n\n/** HCM command key (string only; avoid importing HCM from org-management). */\nexport const AXM_HCM_POSITION_ASSIGNMENT_REVOKE_COMMAND =\n 'HumanCapitalManagement.PositionAssignment:Revoke' as const;\n","//#region ---- Server command keys ----\n\n/**\n * Server-only runtime command keys for Organization Management.\n * Must stay distinct from client {@link AXMOrganizationManagementCommandKeys}.\n */\nexport const AXMOrganizationManagementServerCommands = {\n OrganizationChart: {\n Generate: 'OrganizationManagement:Server:OrgChart:Generate',\n },\n} as const;\n\n//#endregion\n","export enum AXPOrganizationManagementSettings {\n OrganizationName = 'OrganizationManagement:Setting:Organization.OrganizationName',\n OrganizationNameDisplay = 'OrganizationManagement:Setting:Organization.OrganizationNameDisplay',\n TradingName = 'OrganizationManagement:Setting:Organization.TradingName',\n TradingNameDisplay = 'OrganizationManagement:Setting:Organization.TradingNameDisplay',\n CompanyBio = 'OrganizationManagement:Setting:Organization.CompanyBio',\n BusinessRegistrationNumber = 'OrganizationManagement:Setting:Organization.BusinessRegistrationNumber',\n CompanyRegistrationNumber = 'OrganizationManagement:Setting:Organization.CompanyRegistrationNumber',\n LicenceNumber = 'OrganizationManagement:Setting:Organization.LicenceNumber',\n OrganizationID = 'OrganizationManagement:Setting:Organization.OrganizationID',\n ContactEmail = 'OrganizationManagement:Setting:Organization.ContactEmail',\n ContactPhone = 'OrganizationManagement:Setting:Organization.ContactPhone',\n OrganizationStreet1 = 'OrganizationManagement:Setting:Organization.Street1',\n OrganizationStreet2 = 'OrganizationManagement:Setting:Organization.Street2',\n OrganizationCountryId = 'OrganizationManagement:Setting:Organization.CountryId',\n OrganizationStateId = 'OrganizationManagement:Setting:Organization.StateId',\n OrganizationCityId = 'OrganizationManagement:Setting:Organization.CityId',\n OrganizationPostalCode = 'OrganizationManagement:Setting:Organization.PostalCode',\n BrandingColor = 'OrganizationManagement:Setting:Organization.Branding.Color',\n BrandingLogo = 'OrganizationManagement:Setting:Organization.Branding.Logo',\n CopyrightText = 'OrganizationManagement:Setting:Organization.CopyrightText',\n SupportEmail = 'OrganizationManagement:Setting:Organization.SupportEmail',\n InfoEmail = 'OrganizationManagement:Setting:Organization.InfoEmail',\n FaxNumber = 'OrganizationManagement:Setting:Organization.FaxNumber',\n Relations = 'OrganizationManagement:Setting:Organization.Relations',\n\n /** User preference: organization hierarchy chart mode (`structure` | `location` | `reporting` | `positionHierarchy`). */\n HierarchyChartMode = 'OrganizationManagement:Setting:User.HierarchyChart.Mode',\n /** User preference: show vacant leaf seats (structure / geographic modes). */\n HierarchyChartShowVacantLeafSeats = 'OrganizationManagement:Setting:User.HierarchyChart.ShowVacantLeafSeats',\n}\n","import { AXPOrganizationManagementSettings } from './settings.keys';\nimport {\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Company email merge from organization settings (leaf) ----\n\n/** Keys read from platform/tenant settings for company email master tokens. */\nexport const COMPANY_EMAIL_ORG_SETTING_KEYS = {\n OrganizationName: AXPOrganizationManagementSettings.OrganizationName,\n BrandingLogo: AXPOrganizationManagementSettings.BrandingLogo,\n BrandingColor: AXPOrganizationManagementSettings.BrandingColor,\n ContactEmail: AXPOrganizationManagementSettings.ContactEmail,\n ContactPhone: AXPOrganizationManagementSettings.ContactPhone,\n SupportEmail: AXPOrganizationManagementSettings.SupportEmail,\n InfoEmail: AXPOrganizationManagementSettings.InfoEmail,\n Street1: AXPOrganizationManagementSettings.OrganizationStreet1,\n Street2: AXPOrganizationManagementSettings.OrganizationStreet2,\n PostalCode: AXPOrganizationManagementSettings.OrganizationPostalCode,\n CopyrightText: AXPOrganizationManagementSettings.CopyrightText,\n} as const;\n\n/**\n * Definition default for {@link AXPOrganizationManagementSettings.CopyrightText}.\n * Used when the key is not yet persisted (inherited settings often stay client-only).\n */\nexport const AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT = '© 2026 Your Company';\n\nexport interface CompanyEmailTenantSnapshot {\n title?: AXPMultiLanguageString | null;\n email?: string | null;\n phone?: string | null;\n supportEmail?: string | null;\n logo?: string | null;\n color?: string | null;\n city?: { title?: AXPMultiLanguageString | null } | null;\n state?: { title?: AXPMultiLanguageString | null } | null;\n country?: { title?: AXPMultiLanguageString | null } | null;\n}\n\nexport interface BuildCompanyEmailMergeInput {\n settingsValues?: Record<string, unknown> | null;\n tenant?: CompanyEmailTenantSnapshot | null;\n /** UI origin for absolutizing `/assets/...` logo paths in outbound email. */\n webOrigin?: string | null;\n /**\n * API origin (no trailing slash, no `/api` suffix) used to absolutize\n * file-storage download URLs for logo file ids. Email/print callers should\n * prefer {@link inlinedLogoUrl} because download is JWT-protected.\n */\n apiOrigin?: string | null;\n /**\n * Pre-resolved logo URL (typically a `data:` URI after FileStorage inlining).\n * Takes precedence over branding / tenant logo refs.\n */\n inlinedLogoUrl?: string | null;\n /**\n * Locale for resolving multi-language organization settings / tenant title\n * (`companyName`, `copyrightText`, address region titles, …).\n * Defaults to `en-US` when omitted.\n */\n locale?: string | null;\n overrides?: Record<string, string>;\n}\n\n/** Matches platform file-storage ids (and optional `file:` cast prefix). */\nconst FILE_STORAGE_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nfunction coerceString(value: unknown, fallback = '', locale = 'en-US'): string {\n if (typeof value === 'string') {\n return value.trim() || fallback;\n }\n return resolveMultiLanguageString(value, locale).trim() || fallback;\n}\n\nfunction pickSetting(\n values: Record<string, unknown> | null | undefined,\n key: string,\n locale: string,\n): string {\n return coerceString(values?.[key], '', locale);\n}\n\nfunction normalizeLogoRef(value: string): string {\n const trimmed = value.trim();\n return trimmed.startsWith('file:') ? trimmed.slice('file:'.length).trim() : trimmed;\n}\n\nfunction isFileStorageId(value: string): boolean {\n return FILE_STORAGE_ID_PATTERN.test(normalizeLogoRef(value));\n}\n\n/** Relative download path served by `FileStorageController.download`. */\nexport function buildCompanyLogoFileDownloadPath(fileId: string): string {\n const id = normalizeLogoRef(fileId);\n return `/api/v1/file-storage/download/${encodeURIComponent(id)}`;\n}\n\nconst FILE_DOWNLOAD_ID_PATTERN =\n /\\/file-storage\\/download\\/([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i;\n\n/**\n * File-storage id from a branding logo setting, tenant.logo, or download URL.\n * Used by the server to inline the binary as a data URI (download is JWT-protected).\n */\nexport function extractCompanyLogoFileId(value: unknown): string | undefined {\n const ref = extractLogoRef(value);\n if (!ref) {\n return undefined;\n }\n const fromPath = ref.match(FILE_DOWNLOAD_ID_PATTERN)?.[1];\n if (fromPath && isFileStorageId(fromPath)) {\n return normalizeLogoRef(fromPath);\n }\n return isFileStorageId(ref) ? normalizeLogoRef(ref) : undefined;\n}\n\nfunction extractLogoRef(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value && typeof value === 'object') {\n const record = value as { url?: unknown; fileId?: unknown; id?: unknown };\n return (\n coerceString(record.url, '') ||\n coerceString(record.fileId, '') ||\n coerceString(record.id, '')\n );\n }\n return '';\n}\n\nfunction buildAddressFromSettings(\n values: Record<string, unknown> | null | undefined,\n locale: string,\n): string {\n return [\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street1, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.Street2, locale),\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.PostalCode, locale),\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildAddressFromTenant(\n tenant: CompanyEmailTenantSnapshot | null | undefined,\n locale: string,\n): string {\n if (!tenant) {\n return '';\n }\n return [tenant.city?.title, tenant.state?.title, tenant.country?.title]\n .map((part) => coerceString(part, '', locale))\n .filter(Boolean)\n .join(', ');\n}\n\nfunction buildInitials(name: string): string {\n const parts = name.split(/\\s+/).filter(Boolean);\n if (!parts.length) {\n return 'CO';\n }\n if (parts.length === 1) {\n return parts[0]!.slice(0, 2).toUpperCase();\n }\n return `${parts[0]![0] ?? ''}${parts[1]![0] ?? ''}`.toUpperCase();\n}\n\nfunction isLocalWebOrigin(webOrigin?: string | null): boolean {\n const origin = coerceString(webOrigin, '');\n if (!origin) {\n return true;\n }\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host.endsWith('.local');\n } catch {\n return true;\n }\n}\n\n/**\n * Resolves a logo URL for template merge / preview.\n * - File-storage ids → `/api/v1/file-storage/download/{id}` (absolutized with apiOrigin).\n * Outbound email cannot fetch that URL (JWT + often localhost); pass `inlinedLogoUrl`.\n * - Keep app-relative paths (`/assets/...`) as-is for in-app preview.\n * - Absolutize asset paths only against a public (non-localhost) web origin for outbound email.\n */\nfunction resolveLogoUrl(\n logo: string,\n options: { webOrigin?: string | null; apiOrigin?: string | null } = {},\n): string {\n if (!logo) {\n return '';\n }\n if (isFileStorageId(logo)) {\n const path = buildCompanyLogoFileDownloadPath(logo);\n const apiOrigin = coerceString(options.apiOrigin, '').replace(/\\/$/, '');\n return apiOrigin ? `${apiOrigin}${path}` : path;\n }\n if (/^https?:\\/\\//i.test(logo) || logo.startsWith('data:')) {\n if (/^https?:\\/\\//i.test(logo) && isLocalWebOrigin(logo)) {\n return '';\n }\n return logo;\n }\n if (logo.startsWith('/')) {\n if (isLocalWebOrigin(options.webOrigin)) {\n return logo;\n }\n const origin = coerceString(options.webOrigin, '').replace(/\\/$/, '');\n return origin ? `${origin}${logo}` : logo;\n }\n return logo;\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n\nfunction escapeHtmlText(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n\nfunction buildLogoMarkHtml(companyName: string, initials: string, logoUrl: string, brandColor: string): string {\n if (logoUrl) {\n return (\n `<img src=\"${escapeHtmlAttribute(logoUrl)}\" alt=\"${escapeHtmlAttribute(companyName)}\" width=\"40\" height=\"40\" ` +\n `style=\"display:inline-block;border:0;outline:none;height:40px;width:40px;object-fit:contain;\" />`\n );\n }\n return (\n `<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:700;` +\n `line-height:56px;color:${escapeHtmlAttribute(brandColor)};letter-spacing:0.5px;\">` +\n `${escapeHtmlText(initials)}</div>`\n );\n}\n\n/**\n * Builds merge tokens for the company email master from organization settings,\n * falling back to tenant snapshot fields when settings are empty (common after seed).\n */\nexport function buildCompanyEmailMergeFromOrganization(\n input: BuildCompanyEmailMergeInput = {},\n): Record<string, string> {\n const values = input.settingsValues ?? {};\n const tenant = input.tenant ?? null;\n const locale =\n (typeof input.locale === 'string' && input.locale.trim()) || 'en-US';\n const year = String(new Date().getFullYear());\n\n const companyName =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.OrganizationName, locale) ||\n coerceString(tenant?.title, '', locale) ||\n 'Your Company';\n\n const companyEmail =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.InfoEmail, locale) ||\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.SupportEmail, locale) ||\n coerceString(tenant?.email, '', locale) ||\n coerceString(tenant?.supportEmail, '', locale);\n\n const companyPhone =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.ContactPhone, locale) ||\n coerceString(tenant?.phone, '', locale);\n\n const companyAddress =\n buildAddressFromSettings(values, locale) || buildAddressFromTenant(tenant, locale);\n\n const companyBrandColor =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingColor, locale) ||\n coerceString(tenant?.color, '', locale) ||\n '#0f172a';\n\n const rawLogo =\n extractLogoRef(values[COMPANY_EMAIL_ORG_SETTING_KEYS.BrandingLogo]) ||\n extractLogoRef(tenant?.logo);\n const companyLogoUrl =\n coerceString(input.inlinedLogoUrl, '') ||\n resolveLogoUrl(rawLogo, {\n webOrigin: input.webOrigin,\n apiOrigin: input.apiOrigin,\n });\n const companyNameInitials = buildInitials(companyName);\n\n const copyrightText =\n pickSetting(values, COMPANY_EMAIL_ORG_SETTING_KEYS.CopyrightText, locale) ||\n AXP_ORGANIZATION_COPYRIGHT_TEXT_DEFAULT;\n\n return {\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyLogoMarkHtml: buildLogoMarkHtml(\n companyName,\n companyNameInitials,\n companyLogoUrl,\n companyBrandColor,\n ),\n companyBrandColor,\n companyPhone,\n companyAddress,\n companyEmail,\n copyrightText,\n currentYear: year,\n ...(input.overrides ?? {}),\n };\n}\n\n/** @deprecated Prefer {@link buildCompanyEmailMergeFromOrganization}. */\nexport function buildCompanyEmailMergeDefaults(\n overrides: Record<string, string> = {},\n): Record<string, string> {\n return buildCompanyEmailMergeFromOrganization({ overrides });\n}\n\n//#endregion\n","//#region ---- Feature Keys ----\n\n/**\n * Organization Management Module Feature Keys.\n * Defines all available features for the Organization Management module.\n */\n// Management feature removed - module name is used directly as feature key\nexport const AXPOrganizationManagementFeatureKeys = {} as const;\n\n//#endregion\n\n","/** Page tab for editing job-definition responsibilities matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY = 'job-definition-responsibilities-page';\n","/** Page tab for editing job-definition skills matrix. Registered via {@link AXP_PAGE_COMPONENT_PROVIDER}. */\nexport const JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY = 'job-definition-skills-page';\n","export const AXPOrganizationManagementMenuKeys = {\n Root: 'OrganizationManagement:Menu',\n ConfigurationRoot: 'OrganizationManagement:Menu:Configuration',\n Teams: 'OrganizationManagement:Menu:Teams',\n TeamMemberRoles: 'OrganizationManagement:Menu:TeamMemberRoles',\n Positions: 'OrganizationManagement:Menu:Positions',\n JobDefinitions: 'OrganizationManagement:Menu:JobDefinitions',\n JobLevels: 'OrganizationManagement:Menu:JobLevels',\n Responsibilities: 'OrganizationManagement:Menu:Responsibilities',\n ResponsibilityLevels: 'OrganizationManagement:Menu:ResponsibilityLevels',\n Divider1: 'OrganizationManagement:Menu:Divider1',\n BusinessUnits: 'OrganizationManagement:Menu:BusinessUnits',\n BusinessUnitTypes: 'OrganizationManagement:Menu:BusinessUnitTypes',\n Divider2: 'OrganizationManagement:Menu:Divider2',\n OrganizationChart: 'OrganizationManagement:Menu:OrganizationChart',\n} as const;\n\n","//#region ----- Org-chart merged corporate business unit id -----\n\n/**\n * Optional id of the enterprise-root / corporate HQ business unit that org-chart\n * builders merge into the company node (skip a separate chart card).\n *\n * Empty default (`null`) = no merge. Product/demo apps call\n * {@link configureOrgChartMergedBusinessUnitId} at boot with their seed id.\n */\nlet orgChartMergedBusinessUnitId: string | null = null;\n\n/**\n * Configure the business-unit id treated as the merged corporate root on org charts.\n * Pass `null` (or empty string) to disable merge behavior.\n */\nexport function configureOrgChartMergedBusinessUnitId(id: string | null): void {\n orgChartMergedBusinessUnitId =\n typeof id === 'string' && id.trim().length > 0 ? id.trim() : null;\n}\n\n/** Configured merged corporate business-unit id, or `null` when merge is disabled. */\nexport function getOrgChartMergedBusinessUnitId(): string | null {\n return orgChartMergedBusinessUnitId;\n}\n\n//#endregion\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPPeopleOrganizationPermissionKeys}.\n * Alias of the full People & Organization key set (including persons/attendance caps).\n */\nexport const AXPOrganizationManagementPermissionKeys = AXPPeopleOrganizationPermissionKeys;\n","const config = {\n i18n: 'organization-management',\n module: 'OrganizationManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'organization-management',\n name: config.module,\n title: '@organization-management:module.title',\n icon: 'fa-light fa-sitemap',\n },\n entities: {\n responsibility: {\n name: 'Responsibility',\n title: '@organization-management:responsibilities.entities.responsibility.title',\n source: `${config.module}.Responsibility`,\n icon: 'fa-light fa-tasks',\n },\n jobDefinition: {\n name: 'JobDefinition',\n title: '@organization-management:job-definitions.entities.job-definition.title',\n source: `${config.module}.JobDefinition`,\n icon: 'fa-light fa-user-tie',\n },\n jobLevel: {\n name: 'JobLevel',\n title: '@organization-management:job-levels.entities.job-level.title',\n source: `${config.module}.JobLevel`,\n icon: 'fa-light fa-layer-group',\n },\n responsibilityLevel: {\n name: 'ResponsibilityLevel',\n title: '@organization-management:responsibility-levels.entities.responsibility-level.title',\n titlePlural: '@organization-management:responsibility-levels.entities.responsibility-level.plural',\n source: `${config.module}.ResponsibilityLevel`,\n icon: 'fa-light fa-layer-group',\n },\n company: {\n name: 'Company',\n source: `${config.module}.Company`,\n title: '@organization-management:companies.entities.company.title',\n icon: 'fa-light fa-building',\n },\n team: {\n name: 'Team',\n source: `${config.module}.Team`,\n title: '@organization-management:teams.entities.team.title',\n icon: 'fa-light fa-people-group',\n },\n teamMemberRole: {\n name: 'TeamMemberRole',\n source: `${config.module}.TeamMemberRole`,\n title: '@organization-management:team-member-roles.entities.team-member-role.title',\n icon: 'fa-light fa-user-tag',\n },\n teamMember: {\n name: 'TeamMember',\n source: `${config.module}.TeamMember`,\n title: '@organization-management:team-members.entities.team-member.title',\n icon: 'fa-light fa-users',\n },\n teamBusinessUnit: {\n name: 'TeamBusinessUnit',\n source: `${config.module}.TeamBusinessUnit`,\n title: '@organization-management:team-business-units.entities.team-business-unit.title',\n icon: 'fa-light fa-link',\n },\n position: {\n name: 'Position',\n source: `${config.module}.Position`,\n title: '@organization-management:positions.entities.position.title',\n icon: 'fa-light fa-briefcase',\n },\n businessUnitType: {\n name: 'BusinessUnitType',\n source: `${config.module}.BusinessUnitType`,\n title: '@organization-management:business-unit-types.entities.business-unit-type.title',\n icon: 'fa-light fa-tag',\n },\n businessUnit: {\n name: 'BusinessUnit',\n source: `${config.module}.BusinessUnit`,\n title: '@organization-management:business-units.entities.business-unit.title',\n icon: 'fa-light fa-sitemap',\n },\n\n structure: {\n name: 'ChartStructure',\n source: `${config.module}.ChartStructure`,\n title: '@organization-management:chart-configuration.components.chart-configuration.title',\n menu: {\n title: '@organization-management:chart-configuration.menus.chart-configuration.title',\n },\n icon: 'fa-light fa-gear',\n },\n chart: {\n name: 'Chart',\n source: `${config.module}.Chart`,\n title: '@organization-management:organization-chart.components.chart.title',\n menu: {\n title: '@organization-management:organization-chart.menus.chart.title',\n },\n icon: 'fa-light fa-chart-diagram',\n },\n },\n queries: {\n dashboard: {\n teamsBar: `${config.module}:Dashboard:TeamsBar`,\n },\n },\n} as const;\n","import { type AXPEntityReference, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n/** Persisted org-chart JSON: all chart modes in one row (`structure` column). */\nexport const AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION = 1 as const;\n\nexport interface AXMOrgChartStructurePayload {\n schemaVersion: typeof AXM_ORG_CHART_STRUCTURE_SCHEMA_VERSION;\n modes: {\n structure: AXMOrganizationManagementChartNodeEntityModel;\n location: AXMOrganizationManagementChartNodeEntityModel;\n reporting: AXMOrganizationManagementChartNodeEntityModel;\n positionHierarchy: AXMOrganizationManagementChartNodeEntityModel;\n };\n}\n\nexport interface AXMOrganizationManagementChartEntityModel extends AXPEntityModel<string> {\n version: string;\n structure: AXMOrgChartStructurePayload;\n}\n\nexport interface AXMOrganizationManagementChartNodeEntityModel extends AXPEntityModel<string> {\n id: string; // Unique identifier for the node\n title: AXPMultiLanguageString;\n subtitle?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n isExpanded?: boolean; // Add this property\n children?: AXMOrganizationManagementChartNodeEntityModel[];\n icon?: string;\n type?: string; // Type of the node\n parentId?: string | null; // ID of the parent node (null for root)\n entity?: AXPEntityReference;\n metadata?: Record<string, any>; // Additional metadata (e.g., roles, counts, etc.)\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './server-commands';\nexport * from './company-email-merge.util';\nexport * from './features.keys';\nexport * from './JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY';\nexport * from './JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY';\nexport * from './menu.keys';\nexport * from './org-chart-merged-business-unit.configure';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;AAEA;;;AAGG;AACI,MAAM,oCAAoC,GAAG;AAClD,IAAA,iBAAiB,EAAE;AACjB,QAAA,QAAQ,EAAE,0CAA0C;AACpD,QAAA,yBAAyB,EAAE,2DAA2D;AACtF,QAAA,6BAA6B,EAAE,+DAA+D;AAC9F,QAAA,qBAAqB,EAAE,uDAAuD;AAC9E,QAAA,8BAA8B,EAAE,gEAAgE;AAChG,QAAA,uBAAuB,EAAE,yDAAyD;AACnF,KAAA;;AAGH;AAEA;AACO,MAAM,0CAA0C,GACrD;AAEF;AACO,MAAM,0CAA0C,GACrD;;ACzBF;AAEA;;;AAGG;AACI,MAAM,uCAAuC,GAAG;AACrD,IAAA,iBAAiB,EAAE;AACjB,QAAA,QAAQ,EAAE,iDAAiD;AAC5D,KAAA;;AAGH;;ICZY;AAAZ,CAAA,UAAY,iCAAiC,EAAA;AACzC,IAAA,iCAAA,CAAA,kBAAA,CAAA,GAAA,8DAAiF;AACjF,IAAA,iCAAA,CAAA,yBAAA,CAAA,GAAA,qEAA+F;AAC/F,IAAA,iCAAA,CAAA,aAAA,CAAA,GAAA,yDAAuE;AACvE,IAAA,iCAAA,CAAA,oBAAA,CAAA,GAAA,gEAAqF;AACrF,IAAA,iCAAA,CAAA,YAAA,CAAA,GAAA,wDAAqE;AACrE,IAAA,iCAAA,CAAA,4BAAA,CAAA,GAAA,wEAAqG;AACrG,IAAA,iCAAA,CAAA,2BAAA,CAAA,GAAA,uEAAmG;AACnG,IAAA,iCAAA,CAAA,eAAA,CAAA,GAAA,2DAA2E;AAC3E,IAAA,iCAAA,CAAA,gBAAA,CAAA,GAAA,4DAA6E;AAC7E,IAAA,iCAAA,CAAA,cAAA,CAAA,GAAA,0DAAyE;AACzE,IAAA,iCAAA,CAAA,cAAA,CAAA,GAAA,0DAAyE;AACzE,IAAA,iCAAA,CAAA,qBAAA,CAAA,GAAA,qDAA2E;AAC3E,IAAA,iCAAA,CAAA,qBAAA,CAAA,GAAA,qDAA2E;AAC3E,IAAA,iCAAA,CAAA,uBAAA,CAAA,GAAA,uDAA+E;AAC/E,IAAA,iCAAA,CAAA,qBAAA,CAAA,GAAA,qDAA2E;AAC3E,IAAA,iCAAA,CAAA,oBAAA,CAAA,GAAA,oDAAyE;AACzE,IAAA,iCAAA,CAAA,wBAAA,CAAA,GAAA,wDAAiF;AACjF,IAAA,iCAAA,CAAA,eAAA,CAAA,GAAA,4DAA4E;AAC5E,IAAA,iCAAA,CAAA,cAAA,CAAA,GAAA,2DAA0E;AAC1E,IAAA,iCAAA,CAAA,eAAA,CAAA,GAAA,2DAA2E;AAC3E,IAAA,iCAAA,CAAA,cAAA,CAAA,GAAA,0DAAyE;AACzE,IAAA,iCAAA,CAAA,WAAA,CAAA,GAAA,uDAAmE;AACnE,IAAA,iCAAA,CAAA,WAAA,CAAA,GAAA,uDAAmE;AACnE,IAAA,iCAAA,CAAA,WAAA,CAAA,GAAA,uDAAmE;;AAGnE,IAAA,iCAAA,CAAA,oBAAA,CAAA,GAAA,yDAA8E;;AAE9E,IAAA,iCAAA,CAAA,mCAAA,CAAA,GAAA,wEAA4G;AAChH,CAAC,EA9BW,iCAAiC,KAAjC,iCAAiC,GAAA,EAAA,CAAA,CAAA;;ACM7C;AAEA;AACO,MAAM,8BAA8B,GAAG;IAC5C,gBAAgB,EAAE,iCAAiC,CAAC,gBAAgB;IACpE,YAAY,EAAE,iCAAiC,CAAC,YAAY;IAC5D,aAAa,EAAE,iCAAiC,CAAC,aAAa;IAC9D,YAAY,EAAE,iCAAiC,CAAC,YAAY;IAC5D,YAAY,EAAE,iCAAiC,CAAC,YAAY;IAC5D,YAAY,EAAE,iCAAiC,CAAC,YAAY;IAC5D,SAAS,EAAE,iCAAiC,CAAC,SAAS;IACtD,OAAO,EAAE,iCAAiC,CAAC,mBAAmB;IAC9D,OAAO,EAAE,iCAAiC,CAAC,mBAAmB;IAC9D,UAAU,EAAE,iCAAiC,CAAC,sBAAsB;IACpE,aAAa,EAAE,iCAAiC,CAAC,aAAa;;AAGhE;;;AAGG;AACI,MAAM,uCAAuC,GAAG;AAuCvD;AACA,MAAM,uBAAuB,GAC3B,4EAA4E;AAE9E,SAAS,YAAY,CAAC,KAAc,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,GAAG,OAAO,EAAA;AACnE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,QAAQ;IACjC;IACA,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ;AACrE;AAEA,SAAS,WAAW,CAClB,MAAkD,EAClD,GAAW,EACX,MAAc,EAAA;AAEd,IAAA,OAAO,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;AAChD;AAEA,SAAS,gBAAgB,CAAC,KAAa,EAAA;AACrC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;IAC5B,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,OAAO;AACrF;AAEA,SAAS,eAAe,CAAC,KAAa,EAAA;IACpC,OAAO,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D;AAEA;AACM,SAAU,gCAAgC,CAAC,MAAc,EAAA;AAC7D,IAAA,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACnC,IAAA,OAAO,iCAAiC,kBAAkB,CAAC,EAAE,CAAC,EAAE;AAClE;AAEA,MAAM,wBAAwB,GAC5B,sGAAsG;AAExG;;;AAGG;AACG,SAAU,wBAAwB,CAAC,KAAc,EAAA;AACrD,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AACzD,IAAA,IAAI,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE;AACzC,QAAA,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC;AACA,IAAA,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS;AACjE;AAEA,SAAS,cAAc,CAAC,KAAc,EAAA;AACpC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE;IACrB;AACA,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,MAAM,MAAM,GAAG,KAA0D;QACzE,QACE,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5B,YAAA,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;IAE/B;AACA,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,wBAAwB,CAC/B,MAAkD,EAClD,MAAc,EAAA;IAEd,OAAO;QACL,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC;QACnE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC;QACnE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,UAAU,EAAE,MAAM,CAAC;AACvE;SACE,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,IAAI,CAAC;AACf;AAEA,SAAS,sBAAsB,CAC7B,MAAqD,EACrD,MAAc,EAAA;IAEd,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK;AACnE,SAAA,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC;SAC5C,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,IAAI,CAAC;AACf;AAEA,SAAS,aAAa,CAAC,IAAY,EAAA;AACjC,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/C,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,QAAA,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;IAC5C;IACA,OAAO,CAAA,EAAG,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC,WAAW,EAAE;AACnE;AAEA,SAAS,gBAAgB,CAAC,SAAyB,EAAA;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI;AACF,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;AACnD,QAAA,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAClG;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;;;;AAMG;AACH,SAAS,cAAc,CACrB,IAAY,EACZ,UAAoE,EAAE,EAAA;IAEtE,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,GAAG,gCAAgC,CAAC,IAAI,CAAC;AACnD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACxE,QAAA,OAAO,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,IAAI,CAAA,CAAE,GAAG,IAAI;IACjD;AACA,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC1D,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxB,QAAA,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrE,QAAA,OAAO,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,GAAG,IAAI;IAC3C;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,mBAAmB,CAAC,KAAa,EAAA;AACxC,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1B;AAEA,SAAS,cAAc,CAAC,KAAa,EAAA;AACnC,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1B;AAEA,SAAS,iBAAiB,CAAC,WAAmB,EAAE,QAAgB,EAAE,OAAe,EAAE,UAAkB,EAAA;IACnG,IAAI,OAAO,EAAE;QACX,QACE,CAAA,UAAA,EAAa,mBAAmB,CAAC,OAAO,CAAC,CAAA,OAAA,EAAU,mBAAmB,CAAC,WAAW,CAAC,CAAA,yBAAA,CAA2B;AAC9G,YAAA,CAAA,gGAAA,CAAkG;IAEtG;AACA,IAAA,QACE,CAAA,kFAAA,CAAoF;AACpF,QAAA,CAAA,uBAAA,EAA0B,mBAAmB,CAAC,UAAU,CAAC,CAAA,wBAAA,CAA0B;AACnF,QAAA,CAAA,EAAG,cAAc,CAAC,QAAQ,CAAC,CAAA,MAAA,CAAQ;AAEvC;AAEA;;;AAGG;AACG,SAAU,sCAAsC,CACpD,KAAA,GAAqC,EAAE,EAAA;AAEvC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE;AACzC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI;AACnC,IAAA,MAAM,MAAM,GACV,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,OAAO;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,WAAW,GACf,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC5E,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AACvC,QAAA,cAAc;IAEhB,MAAM,YAAY,GAChB,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,YAAY,EAAE,MAAM,CAAC;QACxE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,SAAS,EAAE,MAAM,CAAC;QACrE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,YAAY,EAAE,MAAM,CAAC;QACxE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;QACvC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC;IAEhD,MAAM,YAAY,GAChB,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,YAAY,EAAE,MAAM,CAAC;QACxE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AAEzC,IAAA,MAAM,cAAc,GAClB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;IAEpF,MAAM,iBAAiB,GACrB,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,aAAa,EAAE,MAAM,CAAC;QACzE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AACvC,QAAA,SAAS;IAEX,MAAM,OAAO,GACX,cAAc,CAAC,MAAM,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;AACnE,QAAA,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9B,MAAM,cAAc,GAClB,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;QACtC,cAAc,CAAC,OAAO,EAAE;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;AAC3B,SAAA,CAAC;AACJ,IAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,WAAW,CAAC;IAEtD,MAAM,aAAa,GACjB,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,aAAa,EAAE,MAAM,CAAC;AACzE,QAAA,uCAAuC;IAEzC,OAAO;QACL,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,mBAAmB,EAAE,iBAAiB,CACpC,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,iBAAiB,CAClB;QACD,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,aAAa;AACb,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;KAC3B;AACH;AAEA;AACM,SAAU,8BAA8B,CAC5C,SAAA,GAAoC,EAAE,EAAA;AAEtC,IAAA,OAAO,sCAAsC,CAAC,EAAE,SAAS,EAAE,CAAC;AAC9D;AAEA;;ACvUA;AAEA;;;AAGG;AACH;AACO,MAAM,oCAAoC,GAAG;AAEpD;;ACTA;AACO,MAAM,kDAAkD,GAAG;;ACDlE;AACO,MAAM,wCAAwC,GAAG;;ACDjD,MAAM,iCAAiC,GAAG;AAC7C,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,iBAAiB,EAAE,2CAA2C;AAC9D,IAAA,KAAK,EAAE,mCAAmC;AAC1C,IAAA,eAAe,EAAE,6CAA6C;AAC9D,IAAA,SAAS,EAAE,uCAAuC;AAClD,IAAA,cAAc,EAAE,4CAA4C;AAC5D,IAAA,SAAS,EAAE,uCAAuC;AAClD,IAAA,gBAAgB,EAAE,8CAA8C;AAChE,IAAA,oBAAoB,EAAE,kDAAkD;AACxE,IAAA,QAAQ,EAAE,sCAAsC;AAChD,IAAA,aAAa,EAAE,2CAA2C;AAC1D,IAAA,iBAAiB,EAAE,+CAA+C;AAClE,IAAA,QAAQ,EAAE,sCAAsC;AAChD,IAAA,iBAAiB,EAAE,+CAA+C;;;ACdtE;AAEA;;;;;;AAMG;AACH,IAAI,4BAA4B,GAAkB,IAAI;AAEtD;;;AAGG;AACG,SAAU,qCAAqC,CAAC,EAAiB,EAAA;IACrE,4BAA4B;QAC1B,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI;AACrE;AAEA;SACgB,+BAA+B,GAAA;AAC7C,IAAA,OAAO,4BAA4B;AACrC;AAEA;;ACzBA;;;AAGG;AACI,MAAM,mCAAmC,GAAG;AACjD,IAAA,MAAM,EAAE,sCAAsC;AAC9C,IAAA,gBAAgB,EAAE,gDAAgD;AAClE,IAAA,oBAAoB,EAAE,oDAAoD;AAC1E,IAAA,aAAa,EAAE,6CAA6C;AAC5D,IAAA,iBAAiB,EAAE,iDAAiD;AACpE,IAAA,qBAAqB,EAAE,qDAAqD;AAC5E,IAAA,eAAe,EAAE,+CAA+C;AAChE,IAAA,kBAAkB,EAAE,kDAAkD;AACtE,IAAA,uBAAuB,EAAE,uDAAuD;AAChF,IAAA,UAAU,EAAE,0CAA0C;AACtD,IAAA,KAAK,EAAE,qCAAqC;;AAG9C;;;AAGG;AACI,MAAM,uCAAuC,GAAG;;ACtBvD,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,MAAM,EAAE,wBAAwB;CACjC;AACM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,uCAAuC;AAC9C,QAAA,IAAI,EAAE,qBAAqB;AAC5B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,yEAAyE;AAChF,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,eAAA,CAAiB;AACzC,YAAA,IAAI,EAAE,mBAAmB;AAC1B,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,KAAK,EAAE,wEAAwE;AAC/E,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,cAAA,CAAgB;AACxC,YAAA,IAAI,EAAE,sBAAsB;AAC7B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,8DAA8D;AACrE,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,SAAA,CAAW;AACnC,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACD,QAAA,mBAAmB,EAAE;AACnB,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,KAAK,EAAE,oFAAoF;AAC3F,YAAA,WAAW,EAAE,qFAAqF;AAClG,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,oBAAA,CAAsB;AAC9C,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,QAAA,CAAU;AAClC,YAAA,KAAK,EAAE,2DAA2D;AAClE,YAAA,IAAI,EAAE,sBAAsB;AAC7B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,KAAA,CAAO;AAC/B,YAAA,KAAK,EAAE,oDAAoD;AAC3D,YAAA,IAAI,EAAE,0BAA0B;AACjC,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,eAAA,CAAiB;AACzC,YAAA,KAAK,EAAE,4EAA4E;AACnF,YAAA,IAAI,EAAE,sBAAsB;AAC7B,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,WAAA,CAAa;AACrC,YAAA,KAAK,EAAE,kEAAkE;AACzE,YAAA,IAAI,EAAE,mBAAmB;AAC1B,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,iBAAA,CAAmB;AAC3C,YAAA,KAAK,EAAE,gFAAgF;AACvF,YAAA,IAAI,EAAE,kBAAkB;AACzB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,SAAA,CAAW;AACnC,YAAA,KAAK,EAAE,4DAA4D;AACnE,YAAA,IAAI,EAAE,uBAAuB;AAC9B,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,iBAAA,CAAmB;AAC3C,YAAA,KAAK,EAAE,gFAAgF;AACvF,YAAA,IAAI,EAAE,iBAAiB;AACxB,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,aAAA,CAAe;AACvC,YAAA,KAAK,EAAE,sEAAsE;AAC7E,YAAA,IAAI,EAAE,qBAAqB;AAC5B,SAAA;AAED,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,eAAA,CAAiB;AACzC,YAAA,KAAK,EAAE,mFAAmF;AAC1F,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,8EAA8E;AACtF,aAAA;AACD,YAAA,IAAI,EAAE,kBAAkB;AACzB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,MAAA,CAAQ;AAChC,YAAA,KAAK,EAAE,oEAAoE;AAC3E,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,+DAA+D;AACvE,aAAA;AACD,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE;AACT,YAAA,QAAQ,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,mBAAA,CAAqB;AAChD,SAAA;AACF,KAAA;;;AC5GH;AACO,MAAM,sCAAsC,GAAG;;ACHtD;;ACAA;;AAEG;;;;"}
|
|
@@ -10,12 +10,12 @@ function mergeJobDefinitionMatrixPageContext(root, local) {
|
|
|
10
10
|
}
|
|
11
11
|
return {
|
|
12
12
|
...local,
|
|
13
|
-
|
|
13
|
+
jobLevelsList: root['jobLevelsList'],
|
|
14
14
|
jobLevelIds: root['jobLevelIds'],
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* Builds column titles for responsibility/skill matrices from
|
|
18
|
+
* Builds column titles for responsibility/skill matrices from the joined `jobLevelsList` snapshot.
|
|
19
19
|
*/
|
|
20
20
|
function jobLevelsToSpreadsheetTitles(jobLevels, i18n) {
|
|
21
21
|
if (!Array.isArray(jobLevels) || jobLevels.length === 0) {
|
|
@@ -58,4 +58,4 @@ function collectIdsFromSpreadsheetMatrix(matrix) {
|
|
|
58
58
|
//#endregion
|
|
59
59
|
|
|
60
60
|
export { collectIdsFromSpreadsheetMatrix as c, jobLevelsToSpreadsheetTitles as j, mergeJobDefinitionMatrixPageContext as m };
|
|
61
|
-
//# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-
|
|
61
|
+
//# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-CGRJXMOn.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-matrix-page.utils.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n//#region ---- Job definition matrix page helpers ----\n\n/**\n * Overlays overview tab fields so matrix column headers track Required Job Levels while draft patches hold matrix data only.\n */\nexport function mergeJobDefinitionMatrixPageContext(\n root: Record<string, unknown>,\n local: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n if (local == null) {\n return root;\n }\n\n return {\n ...local,\n jobLevelsList: root['jobLevelsList'],\n jobLevelIds: root['jobLevelIds'],\n };\n}\n\n/**\n * Builds column titles for responsibility/skill matrices from the joined `jobLevelsList` snapshot.\n */\nexport function jobLevelsToSpreadsheetTitles(\n jobLevels: unknown,\n i18n: AXTranslationService,\n): AXPSpreadsheetItem[] {\n if (!Array.isArray(jobLevels) || jobLevels.length === 0) {\n return [];\n }\n\n const resolve = (v: unknown) => i18n.resolve(v as never);\n\n return jobLevels.map((item: Record<string, unknown> | string) => {\n if (typeof item === 'string') {\n return { id: item, title: item };\n }\n const id = (item['id'] ?? item['value'] ?? String(item)) as string;\n const rawTitle = (item['title'] ?? item['name'] ?? String(item)) as string | Record<string, string>;\n const desc = item['description'];\n return {\n id,\n title: resolve(rawTitle) || String(rawTitle),\n description:\n desc != null && desc !== '' ? resolve(desc as string | Record<string, string>) : undefined,\n };\n });\n}\n\n/**\n * Collects unique cell values from a spreadsheet matrix (e.g. responsibility level ids).\n */\nexport function collectIdsFromSpreadsheetMatrix(matrix: AXPSpreadsheetData | null | undefined): string[] {\n const set = new Set<string>();\n if (!matrix || typeof matrix !== 'object') {\n return [];\n }\n\n for (const row of Object.values(matrix)) {\n if (row && typeof row === 'object') {\n for (const cell of Object.values(row as Record<string, unknown>)) {\n if (cell != null && typeof cell === 'string') {\n set.add(cell);\n }\n }\n }\n }\n\n return Array.from(set);\n}\n\n//#endregion\n"],"names":[],"mappings":"AAAA;AAKA;AAEA;AAEA;;AAEG;AACG,SAAU,mCAAmC,CACjD,IAA6B,EAC7B,KAAiD,EAAA;AAEjD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;AACpC,QAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;KACjC;AACH;AAEA;;AAEG;AACG,SAAU,4BAA4B,CAC1C,SAAkB,EAClB,IAA0B,EAAA;AAE1B,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACvD,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,CAAU,KAAK,IAAI,CAAC,OAAO,CAAC,CAAU,CAAC;AAExD,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAsC,KAAI;AAC9D,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAClC;AACA,QAAA,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAW;AAClE,QAAA,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAoC;AACnG,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,OAAO;YACL,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC5C,YAAA,WAAW,EACT,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,GAAG,OAAO,CAAC,IAAuC,CAAC,GAAG,SAAS;SAC7F;AACH,IAAA,CAAC,CAAC;AACJ;AAEA;;AAEG;AACG,SAAU,+BAA+B,CAAC,MAA6C,EAAA;AAC3F,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;IAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,EAAE;IACX;IAEA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvC,QAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC,EAAE;gBAChE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5C,oBAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBACf;YACF;QACF;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;"}
|
|
@@ -9,11 +9,11 @@ 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-
|
|
12
|
+
loader: () => import('./acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs').then((m) => m.AXMJobDefinitionResponsibilitiesPageComponent),
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,
|
|
16
|
-
loader: () => import('./acorex-platform-module-organization-management-client-job-definition-skills-page.component
|
|
16
|
+
loader: () => import('./acorex-platform-module-organization-management-client-job-definition-skills-page.component-bQOqP1Tx.mjs').then((m) => m.AXMJobDefinitionSkillsPageComponent),
|
|
17
17
|
},
|
|
18
18
|
];
|
|
19
19
|
}
|
|
@@ -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-
|
|
28
|
+
//# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-pages-component.provider-TIHOAeAI.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-pages-component.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n} from '@acorex-platform/module-organization-management-client/contracts';\n\n//#endregion\n\n//#region ---- Job definition entity page components provider ----\n\n@Injectable()\nexport class AXMJobDefinitionPagesComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: JOB_DEFINITION_RESPONSIBILITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-responsibilities-page.component').then(\n (m) => m.AXMJobDefinitionResponsibilitiesPageComponent,\n ),\n },\n {\n key: JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./job-definition-skills-page.component').then((m) => m.AXMJobDefinitionSkillsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAYA;AAEA;MAGa,sCAAsC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,kDAAkD;AACvD,gBAAA,MAAM,EAAE,MACN,OAAO,qHAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CACvD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,wCAAwC;AAC7C,gBAAA,MAAM,EAAE,MACN,OAAO,2GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,aAAA;SACF;IACH;8GAhBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtC,sCAAsC,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD;;;;;"}
|
|
@@ -7,7 +7,7 @@ import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Compo
|
|
|
7
7
|
import { cloneDeep, isEqual } from 'lodash';
|
|
8
8
|
import { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';
|
|
9
9
|
import { A as AXMOrganizationManagementResponsibilitiesMatrixComponent } from './acorex-platform-module-organization-management-client-responsibilities-matrix.component-DqO6xE2p.mjs';
|
|
10
|
-
import { m as mergeJobDefinitionMatrixPageContext, j as jobLevelsToSpreadsheetTitles, c as collectIdsFromSpreadsheetMatrix } from './acorex-platform-module-organization-management-client-job-definition-matrix-page.utils-
|
|
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
|
|
13
13
|
const JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';
|
|
@@ -43,7 +43,7 @@ class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseCom
|
|
|
43
43
|
/** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */
|
|
44
44
|
this.mergedContext = computed(() => mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()), /* @ts-ignore */
|
|
45
45
|
...(ngDevMode ? [{ debugName: "mergedContext" }] : /* istanbul ignore next */ []));
|
|
46
|
-
this.titles = computed(() => jobLevelsToSpreadsheetTitles(this.mergedContext()['
|
|
46
|
+
this.titles = computed(() => jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService), /* @ts-ignore */
|
|
47
47
|
...(ngDevMode ? [{ debugName: "titles" }] : /* istanbul ignore next */ []));
|
|
48
48
|
this.matrixValue = computed(() => {
|
|
49
49
|
const v = this.mergedContext()['responsibilities'];
|
|
@@ -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-
|
|
237
|
+
//# sourceMappingURL=acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-organization-management-client-job-definition-responsibilities-page.component-KwOQXdX0.mjs","sources":["../../../../libs/modules/organization-management/client/src/lib/features/job-definition-pages/job-definition-responsibilities-page.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\n\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementJobDefinitionEntityModel } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXMOrganizationManagementResponsibilitiesMatrixComponent } from '../responsibilities-matrix/responsibilities-matrix.component';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n collectIdsFromSpreadsheetMatrix,\n jobLevelsToSpreadsheetTitles,\n mergeJobDefinitionMatrixPageContext,\n} from './job-definition-matrix-page.utils';\n\n//#endregion\n\nconst JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD = 'JobDefinition:Responsibilities:Discard';\nconst JOB_DEFINITION_RESPONSIBILITIES_SAVE = 'JobDefinition:Responsibilities:Save';\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-job-definition-responsibilities-page',\n standalone: true,\n imports: [AXMOrganizationManagementResponsibilitiesMatrixComponent],\n template: `\n <axm-responsibilities-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [readonly]=\"false\"\n (valueChange)=\"onMatrixChange($event)\"\n />\n `,\n host: {\n class: 'block w-full',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMJobDefinitionResponsibilitiesPageComponent,\n },\n ],\n})\nexport class AXMJobDefinitionResponsibilitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly localContext = signal<Record<string, unknown> | null>(null);\n private readonly ignoreNextMatrixChange = signal(false);\n private readonly baselineMatrix = signal<AXPSpreadsheetData | null>(null);\n protected readonly isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const responsibilities = ctx?.['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed ----\n\n /** Canonical payload for matrix bindings; must be a `computed` so `titles` / `matrixValue` track inputs. */\n private readonly mergedContext = computed(() =>\n mergeJobDefinitionMatrixPageContext(this.rootContext() ?? {}, this.localContext()),\n );\n\n protected titles = computed(() =>\n jobLevelsToSpreadsheetTitles(this.mergedContext()['jobLevelsList'], this.translateService),\n );\n\n protected matrixValue = computed((): AXPSpreadsheetData => {\n const v = this.mergedContext()['responsibilities'];\n if (v != null && typeof v === 'object') {\n return v as AXPSpreadsheetData;\n }\n return {};\n });\n\n //#endregion\n\n //#region ---- UI handlers ----\n\n protected onMatrixChange(data: AXPSpreadsheetData): void {\n if (this.ignoreNextMatrixChange()) {\n this.ignoreNextMatrixChange.set(false);\n return;\n }\n\n const base = this.localContext() ?? this.rootContext() ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(data);\n this.localContext.set({\n ...base,\n responsibilities: data,\n responsibilityLevelIds,\n });\n const baseline = this.baselineMatrix() ?? {};\n this.isDirty.set(!isEqual(baseline, data));\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ---- Page actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: JOB_DEFINITION_RESPONSIBILITIES_SAVE,\n options: {},\n },\n };\n\n return [discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Execute ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === JOB_DEFINITION_RESPONSIBILITIES_PAGE_DISCARD) {\n this.ignoreNextMatrixChange.set(true);\n this.localContext.set(null);\n const ctx = this.rootContext() ?? {};\n const responsibilities = ctx['responsibilities'];\n const base =\n responsibilities != null && typeof responsibilities === 'object'\n ? cloneDeep(responsibilities as AXPSpreadsheetData)\n : {};\n this.baselineMatrix.set(base);\n this.isDirty.set(false);\n this.recompute();\n return;\n }\n\n if (command.name !== JOB_DEFINITION_RESPONSIBILITIES_SAVE) {\n return;\n }\n\n return this.persistResponsibilities() as unknown as Promise<void>;\n }\n\n private async persistResponsibilities(): AXPCommandExecuteResultPromise {\n const ctx = this.mergedContext();\n const id = ctx['id'];\n if (typeof id !== 'string' || id.length === 0) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const responsibilities = (ctx['responsibilities'] as AXPSpreadsheetData) ?? {};\n const responsibilityLevelIds = collectIdsFromSpreadsheetMatrix(responsibilities);\n\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>()\n .update(id, {\n responsibilities,\n responsibilityLevelIds,\n });\n\n this.baselineMatrix.set(cloneDeep(responsibilities));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.recompute();\n\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.jobDefinition.name}`,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const text =\n error instanceof Error && error.message\n ? error.message\n : (await this.translateService.translateAsync('@general:messages.entity.invalid-data')) ?? 'Save failed';\n return {\n success: false,\n message: { text },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Recompute ----\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as { recompute?: () => void } | null;\n layout?.recompute?.();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|