@acorex-platform/module-human-capital-management-client 0.0.38 → 0.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/fesm2022/{acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs → acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DN9uqaD3.mjs} +38 -56
  2. package/fesm2022/acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DN9uqaD3.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs +16 -0
  4. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs +15 -0
  6. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs +17 -0
  8. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs +17 -0
  10. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs +16 -0
  12. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs +16 -0
  14. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs +16 -0
  16. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs.map +1 -1
  17. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-YSqg0InM.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-CVP3I1L7.mjs} +8 -8
  18. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-YSqg0InM.mjs.map → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-CVP3I1L7.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-Bm2XMoMa.mjs} +18 -2
  20. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-Bm2XMoMa.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-BRgx5_BF.mjs} +17 -2
  22. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-BRgx5_BF.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-FBkbZ-o4.mjs} +19 -2
  24. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-FBkbZ-o4.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-BFygPrW9.mjs} +19 -2
  26. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-BFygPrW9.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-70UYqOrV.mjs} +18 -2
  28. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-70UYqOrV.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-USkId1WB.mjs} +18 -2
  30. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-USkId1WB.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs → acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-CkSHA7Rz.mjs} +18 -2
  32. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-CkSHA7Rz.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.mjs +1 -1
  34. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts.mjs +29 -1
  35. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs → acorex-platform-module-human-capital-management-client-edit-personal-info.command-BX8KrGFf.mjs} +2 -2
  37. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs.map → acorex-platform-module-human-capital-management-client-edit-personal-info.command-BX8KrGFf.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs → acorex-platform-module-human-capital-management-client-edit-signature.command-q5j3eld0.mjs} +2 -2
  39. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs.map → acorex-platform-module-human-capital-management-client-edit-signature.command-q5j3eld0.mjs.map} +1 -1
  40. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-2R7o4r04.mjs} +2 -2
  41. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-2R7o4r04.mjs.map} +1 -1
  42. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-vbEb1Lty.mjs} +3 -3
  43. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-vbEb1Lty.mjs.map} +1 -1
  44. package/fesm2022/acorex-platform-module-human-capital-management-client.mjs +2 -1
  45. package/fesm2022/acorex-platform-module-human-capital-management-client.mjs.map +1 -1
  46. package/package.json +2 -2
  47. package/types/acorex-platform-module-human-capital-management-client-contracts.d.ts +8 -2
  48. package/types/acorex-platform-module-human-capital-management-client.d.ts +3 -8
  49. package/fesm2022/acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs.map +0 -1
  50. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs.map +0 -1
  51. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs.map +0 -1
@@ -20,13 +20,13 @@ import { AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG } from '@acorex-platform/module-co
20
20
  import { AXM_ORG_CHART_NODE_CONTRIBUTOR } from '@acorex-platform/module-organization-management-client';
21
21
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
22
22
  import { AXP_STATUS_PROVIDERS, AXP_PROTECTED_ROUTE_GUARDS, AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';
23
- import { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';
23
+ import { AXP_FEATURE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_HOOK_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';
24
24
  import { ROUTES } from '@angular/router';
25
25
  import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
26
26
  import { firstValueFrom } from 'rxjs';
27
27
  import { AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';
28
28
  import { AXCalendarService } from '@acorex/core/date-time';
29
- import { isUserProfileSectionsGroupRequested, PROFILE_PAGE_SECTIONS_HOOK, PROFILE_PAGE_GROUPS_HOOK } from '@acorex-platform/module-auth-client';
29
+ import { isUserProfileSectionsGroupRequested, PROFILE_PAGE_SECTIONS_HOOK, PROFILE_PAGE_GROUPS_HOOK, ONBOARDING_STEPS_HOOK } from '@acorex-platform/module-auth-client';
30
30
 
31
31
  //#endregion
32
32
  //#region ---- Task Badge Provider ----
@@ -1146,34 +1146,6 @@ class AXMPositionAssignmentStatusProvider extends AXPStatusProvider {
1146
1146
  }
1147
1147
  //#endregion
1148
1148
 
1149
- //#region ---- Imports ----
1150
- //#endregion
1151
- //#region ---- Manifest Definition ----
1152
- /**
1153
- * Human Capital Management Module Manifest.
1154
- * Defines module metadata, features, and provider references.
1155
- */
1156
- const HumanCapitalManagementManifest = {
1157
- name: RootConfig.module.name,
1158
- version: '1.0.0',
1159
- title: RootConfig.module.title,
1160
- icon: RootConfig.module.icon,
1161
- i18n: RootConfig.config.i18n,
1162
- type: 'domain',
1163
- domain: 'human-capital',
1164
- // Module dependencies
1165
- dependencies: [
1166
- 'OrganizationManagement',
1167
- 'PersonCore',
1168
- 'LocationManagement',
1169
- 'DocumentManagement',
1170
- 'AssessmentManagement',
1171
- 'WorkflowManagement',
1172
- 'DataManagement',
1173
- ],
1174
- };
1175
- //#endregion
1176
-
1177
1149
  class AXMMenuProvider {
1178
1150
  constructor() {
1179
1151
  this.entityService = inject(AXPEntityService);
@@ -2010,6 +1982,18 @@ const HumanCapitalUserCardItemsHookProvider = {
2010
1982
  };
2011
1983
  //#endregion
2012
1984
 
1985
+ //#region ----- HCM orientation onboarding step -----
1986
+ /**
1987
+ * Application-scoped people/org orientation when HCM is loaded.
1988
+ * Welcome onboarding no longer includes this step (profile + org tools cover it elsewhere).
1989
+ */
1990
+ const HumanCapitalOnboardingStepsHookProvider = {
1991
+ key: ONBOARDING_STEPS_HOOK,
1992
+ priority: 50,
1993
+ execute: (payload) => payload,
1994
+ };
1995
+ //#endregion
1996
+
2013
1997
  //#endregion
2014
1998
  //#region ---- Permission Definition Provider ----
2015
1999
  /**
@@ -2096,12 +2080,6 @@ class AXMHumanCapitalManagementModule {
2096
2080
  useClass: AXMPositionAssignmentStatusProvider,
2097
2081
  multi: true,
2098
2082
  },
2099
- // Module Manifest Provider
2100
- {
2101
- provide: AXP_MODULE_MANIFEST_PROVIDER,
2102
- useValue: HumanCapitalManagementManifest,
2103
- multi: true,
2104
- },
2105
2083
  // Provider references (now using tokens)
2106
2084
  {
2107
2085
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
@@ -2139,21 +2117,26 @@ class AXMHumanCapitalManagementModule {
2139
2117
  multi: true,
2140
2118
  },
2141
2119
  {
2142
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2120
+ provide: AXP_HOOK_PROVIDER,
2143
2121
  useValue: HumanCapitalProfileSectionsHookProvider,
2144
2122
  multi: true,
2145
2123
  },
2146
2124
  {
2147
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2125
+ provide: AXP_HOOK_PROVIDER,
2148
2126
  useValue: HumanCapitalProfileDocumentsGroupsHookProvider,
2149
2127
  multi: true,
2150
2128
  },
2151
2129
  {
2152
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2130
+ provide: AXP_HOOK_PROVIDER,
2153
2131
  useValue: HumanCapitalUserCardItemsHookProvider,
2154
2132
  multi: true,
2155
2133
  },
2156
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponentProvider)),
2134
+ {
2135
+ provide: AXP_HOOK_PROVIDER,
2136
+ useValue: HumanCapitalOnboardingStepsHookProvider,
2137
+ multi: true,
2138
+ },
2139
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-vbEb1Lty.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponentProvider)),
2157
2140
  provideCommandSetups([
2158
2141
  {
2159
2142
  key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign,
@@ -2165,11 +2148,11 @@ class AXMHumanCapitalManagementModule {
2165
2148
  },
2166
2149
  {
2167
2150
  key: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo,
2168
- command: () => import('./acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs').then((c) => c.AXMHcmEditPersonalInfoCommand),
2151
+ command: () => import('./acorex-platform-module-human-capital-management-client-edit-personal-info.command-BX8KrGFf.mjs').then((c) => c.AXMHcmEditPersonalInfoCommand),
2169
2152
  },
2170
2153
  {
2171
2154
  key: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature,
2172
- command: () => import('./acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs').then((c) => c.AXMHcmEditSignatureCommand),
2155
+ command: () => import('./acorex-platform-module-human-capital-management-client-edit-signature.command-q5j3eld0.mjs').then((c) => c.AXMHcmEditSignatureCommand),
2173
2156
  },
2174
2157
  ]),
2175
2158
  ], imports: [CommonModule,
@@ -2209,12 +2192,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2209
2192
  useClass: AXMPositionAssignmentStatusProvider,
2210
2193
  multi: true,
2211
2194
  },
2212
- // Module Manifest Provider
2213
- {
2214
- provide: AXP_MODULE_MANIFEST_PROVIDER,
2215
- useValue: HumanCapitalManagementManifest,
2216
- multi: true,
2217
- },
2218
2195
  // Provider references (now using tokens)
2219
2196
  {
2220
2197
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
@@ -2252,21 +2229,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2252
2229
  multi: true,
2253
2230
  },
2254
2231
  {
2255
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2232
+ provide: AXP_HOOK_PROVIDER,
2256
2233
  useValue: HumanCapitalProfileSectionsHookProvider,
2257
2234
  multi: true,
2258
2235
  },
2259
2236
  {
2260
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2237
+ provide: AXP_HOOK_PROVIDER,
2261
2238
  useValue: HumanCapitalProfileDocumentsGroupsHookProvider,
2262
2239
  multi: true,
2263
2240
  },
2264
2241
  {
2265
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
2242
+ provide: AXP_HOOK_PROVIDER,
2266
2243
  useValue: HumanCapitalUserCardItemsHookProvider,
2267
2244
  multi: true,
2268
2245
  },
2269
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponentProvider)),
2246
+ {
2247
+ provide: AXP_HOOK_PROVIDER,
2248
+ useValue: HumanCapitalOnboardingStepsHookProvider,
2249
+ multi: true,
2250
+ },
2251
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-vbEb1Lty.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponentProvider)),
2270
2252
  provideCommandSetups([
2271
2253
  {
2272
2254
  key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign,
@@ -2278,11 +2260,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2278
2260
  },
2279
2261
  {
2280
2262
  key: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo,
2281
- command: () => import('./acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs').then((c) => c.AXMHcmEditPersonalInfoCommand),
2263
+ command: () => import('./acorex-platform-module-human-capital-management-client-edit-personal-info.command-BX8KrGFf.mjs').then((c) => c.AXMHcmEditPersonalInfoCommand),
2282
2264
  },
2283
2265
  {
2284
2266
  key: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature,
2285
- command: () => import('./acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs').then((c) => c.AXMHcmEditSignatureCommand),
2267
+ command: () => import('./acorex-platform-module-human-capital-management-client-edit-signature.command-q5j3eld0.mjs').then((c) => c.AXMHcmEditSignatureCommand),
2286
2268
  },
2287
2269
  ]),
2288
2270
  ],
@@ -2293,5 +2275,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2293
2275
  * Generated bundle index. Do not edit.
2294
2276
  */
2295
2277
 
2296
- export { AXMHcmProfileContextService as A, DOCUMENT_DRIVE_PAGE_COMPONENT_KEY as D, HumanCapitalManagementManifest as H, PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY as P, AXMHumanCapitalManagementModule as a, AXMLeaveRequestBadgeProvider as b, AXMLeaveRequestResourceAppointmentProvider as c, AXMLeaveRequestTaskPopoverComponent as d, AXPHumanCapitalManagementFeatureDefinitionProvider as e, AXPLeaveRequestDialogService as f };
2297
- //# sourceMappingURL=acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs.map
2278
+ export { AXMHcmProfileContextService as A, DOCUMENT_DRIVE_PAGE_COMPONENT_KEY as D, PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY as P, AXMHumanCapitalManagementModule as a, AXMLeaveRequestBadgeProvider as b, AXMLeaveRequestResourceAppointmentProvider as c, AXMLeaveRequestTaskPopoverComponent as d, AXPHumanCapitalManagementFeatureDefinitionProvider as e, AXPLeaveRequestDialogService as f };
2279
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DN9uqaD3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DN9uqaD3.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/badge.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/leave-request-resource-appointment.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/services/leave-request-dialog.service.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/workflow-tasks/leave-request-task-popover.component.ts","../../../../libs/modules/human-capital-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/lifecycle-event/lifecycle-event-status.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/lifecycle-event/lifecycle-event.module.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/leave-request-status.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/leave-request.module.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/shared/employee-status.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/shared/position-assignment-status.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/menu.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/organization-chart/hcm-org-chart-node-contribution.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/shared/leave-request-manager-due-date.utils.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/shared/leave-request-expression-evaluator-scope.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/shared/lifecycle-event-expression-evaluator-scope.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-context.service.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/human-capital-profile-sections.hook.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.constants.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/human-capital-profile-documents-groups.hook.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/user-card/human-capital-user-card-items.hook.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/onboarding/human-capital-onboarding-steps.hook.ts","../../../../libs/modules/human-capital-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/human-capital-management/client/src/lib/human-capital-management.module.ts","../../../../libs/modules/human-capital-management/client/src/acorex-platform-module-human-capital-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXPSystemStatuses } from '@acorex-platform/framework-shared/core';\nimport { AXPTaskBadgeProvider } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandEventsService, AXPCommandExecutionEvent } from '@acorex-platform/framework-client/runtime';\nimport { DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { get } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementLeaveRequestEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Task Badge Provider ----\n\n@Injectable()\nexport class AXMLeaveRequestBadgeProvider extends AXPTaskBadgeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly leaveRequestData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.leaveRequest.name)\n .data<string, AXMHumanCapitalManagementLeaveRequestEntityModel>();\n private readonly commandEvents = inject(AXPCommandEventsService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Signals & Properties ----\n\n key = 'leave-request-badge';\n count = signal(0);\n\n //#endregion\n\n constructor() {\n super();\n\n void this.refresh();\n\n const unsubscribe = this.commandEvents.listen((event) => {\n if (this.isLeaveRequestCommandEvent(event)) {\n void this.handleCommandEvent(event);\n }\n });\n\n this.destroyRef.onDestroy(unsubscribe);\n }\n\n //#region ---- Badge Actions ----\n\n /**\n * Forces badge count recalculation by querying the leave request entity service.\n */\n async refresh(): Promise<void> {\n const baseFilters: AXDataSourceFilterOption[] = [\n {\n field: 'statusId',\n operator: { type: 'equal' as const },\n value: AXPSystemStatuses.WaitingApproval.name,\n },\n ];\n\n const result = await this.leaveRequestData.query({\n skip: 0,\n take: 99,\n filter: {\n logic: 'and',\n filters: baseFilters,\n },\n });\n\n this.count.set(result.total);\n }\n\n /**\n * Returns true when the command event targets the leave request entity.\n */\n private isLeaveRequestCommandEvent(event: AXPCommandExecutionEvent): boolean {\n const leaveRequestSource = RootConfig.entities.leaveRequest.source;\n\n if (event.key.startsWith(`${leaveRequestSource}:`)) {\n return true;\n }\n\n const context = event.input as Record<string, unknown> | undefined;\n const entity = get(context, 'entity');\n const entityInfo = get(context, 'entityInfo') as Record<string, unknown> | undefined;\n\n if (entity === leaveRequestSource || get(entityInfo, 'source') === leaveRequestSource) {\n return true;\n }\n\n return (\n get(entityInfo, 'module') === RootConfig.module.name &&\n get(entityInfo, 'name') === RootConfig.entities.leaveRequest.name\n );\n }\n\n /**\n * Handles command execution events and refreshes the badge when targeted leave request commands succeed.\n */\n private async handleCommandEvent(event?: AXPCommandExecutionEvent): Promise<void> {\n if (!event || event.stage !== 'after' || !event.success) {\n return;\n }\n\n await this.refresh();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPExecuteCommand, AXPRuntimeCommandResult, AXPSystemStatuses } from '@acorex-platform/framework-shared/core';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\n\nimport {\n AXPResourceAppointmentActionMenuItem,\n AXPResourceAppointmentBoardFilter,\n AXPResourceAppointmentBoardProvider,\n AXPResourceAppointmentItem,\n AXPResourceAppointmentResource,\n AXPResourceAppointmentStatus,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementLeaveRequestEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\n\nexport class AXMLeaveRequestResourceAppointmentProvider extends AXPResourceAppointmentBoardProvider<AXMHumanCapitalManagementLeaveRequestEntityModel> {\n private readonly entityService = inject(AXPEntityService);\n\n override get name(): string {\n return 'leave-request';\n }\n\n override get title(): string {\n return '@human-capital-management:leave-requests.entities.leave-request.plural';\n }\n\n override get icon(): string {\n return RootConfig.entities.leaveRequest.icon;\n }\n\n override async getList(filter?: AXPResourceAppointmentBoardFilter): Promise<AXPResourceAppointmentResource[]> {\n const leaveRequestDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.leaveRequest.name)\n .data<string, AXMHumanCapitalManagementLeaveRequestEntityModel>();\n\n const employeeDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.employee.name)\n .data<string, AXMHumanCapitalManagementEmployeeEntityModel>();\n\n const fieldFilters: AXDataSourceFilterOption[] = [];\n\n if (filter?.range?.from) {\n fieldFilters.push({\n field: 'startDate',\n operator: { type: 'gte' },\n value: filter.range.from,\n });\n }\n\n if (filter?.range?.end) {\n fieldFilters.push({\n field: 'endDate',\n operator: { type: 'lte' },\n value: filter.range.end,\n });\n }\n\n const employee = await employeeDataAccessor.query();\n\n const { items } = await leaveRequestDataAccessor.query({\n skip: 0,\n take: 1000,\n ...(fieldFilters.length\n ? {\n filter: {\n logic: 'and',\n filters: fieldFilters,\n } as AXDataSourceFilterOption,\n }\n : {}),\n });\n\n const result: AXPResourceAppointmentResource[] = employee.items.map(\n (employee: AXMHumanCapitalManagementEmployeeEntityModel) => ({\n id: employee.id,\n title: employee.person?.fullName ?? '',\n description: 'description', //TODO fill later\n icon: 'icon',\n appointments: items\n .filter((item) => item.employeeId === employee.id)\n .map((item) => ({\n id: item.id,\n title: item.leaveType?.title ?? '',\n startDate: item.startDate,\n endDate: item.endDate,\n resourceId: item.employeeId,\n description: item.reason,\n allDay: false,\n })),\n }),\n );\n return result;\n\n // const resourcesMap = new Map<string | number, AXPResourceAppointmentResource>();\n\n // for (const leave of items) {\n // const resourceId: string | number = leave.employeeId ?? 'unassigned';\n // let resource = resourcesMap.get(resourceId);\n\n // if (!resource) {\n // resource = {\n // id: resourceId,\n // title: leave.employee?.person?.displayName ?? '@general:terms.people.employee',\n // appointments: [],\n // };\n // resourcesMap.set(resourceId, resource);\n // }\n\n // const task: AXPResourceAppointmentItem = {\n // id: leave.id,\n // title: leave.leaveType?.title ?? '@human-capital-management:leave-requests.entities.leave-request.title',\n // description: leave.reason,\n // startDate: leave.startDate,\n // endDate: leave.endDate,\n // allDay: false,\n // resourceId,\n // };\n\n // resource.appointments.push(task);\n // }\n\n // return Array.from(resourcesMap.values());\n }\n\n override async getStatuses(): Promise<AXPResourceAppointmentStatus[]> {\n const waitingApproval = AXPSystemStatuses.WaitingApproval;\n const approved = AXPSystemStatuses.Approved;\n const rejected = AXPSystemStatuses.Rejected;\n const cancelled = AXPSystemStatuses.Cancelled;\n\n const statuses: AXPResourceAppointmentStatus[] = [\n { key: waitingApproval.name, index: 0, title: waitingApproval.title, color: waitingApproval.color },\n { key: approved.name, index: 1, title: approved.title, color: approved.color },\n { key: rejected.name, index: 2, title: rejected.title, color: rejected.color },\n { key: cancelled.name, index: 3, title: cancelled.title, color: cancelled.color },\n ];\n\n return statuses;\n }\n\n override async getActions(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n context?: AXPResourceAppointmentItem,\n ): Promise<AXPResourceAppointmentActionMenuItem[]> {\n // Actions can be wired to existing approve/reject/cancel commands later.\n // For now, return an empty list so the board works without a context menu.\n return [];\n }\n\n override async executeCommand(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n command: AXPExecuteCommand,\n ): AXPCommandExecuteResultPromise {\n // No-op for now – commands are handled by existing leave request commands elsewhere.\n return { success: true, kind: 'object', data: undefined };\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nexport interface LeaveRequestActionDialogResult {\n reason?: string;\n note?: string;\n cancelled: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPLeaveRequestDialogService {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n async showRejectionDialog(): Promise<LeaveRequestActionDialogResult> {\n const result = await this.layoutBuilder\n .create()\n .dialog<LeaveRequestActionDialogResult>(dialog => {\n dialog\n .setTitle('@general:actions.reject.title')\n .setMessage('@human-capital-management:leave-requests.components.rejection-dialog.message')\n .setContext({ reason: '', note: '' })\n .content(flex => {\n flex\n .setDirection('column')\n .formField('@human-capital-management:leave-requests.components.rejection-dialog.fields.reason-label', field => {\n field.path('reason');\n field.largeTextBox({\n placeholder: '@human-capital-management:leave-requests.components.rejection-dialog.fields.reason-placeholder',\n maxLength: 500\n });\n })\n .formField('@human-capital-management:leave-requests.components.rejection-dialog.fields.note-label', field => {\n field.path('note');\n field.largeTextBox({\n placeholder: '@human-capital-management:leave-requests.components.rejection-dialog.fields.note-placeholder',\n maxLength: 1000\n });\n });\n })\n .setActions(actions => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.reject.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { reason: undefined, note: undefined, cancelled: true };\n }\n return {\n reason: context['reason'],\n note: context['note'],\n cancelled: false\n };\n });\n })\n .show();\n return result;\n }\n\n async showCancellationDialog(): Promise<LeaveRequestActionDialogResult> {\n const result = await this.layoutBuilder\n .create()\n .dialog<LeaveRequestActionDialogResult>(dialog => {\n dialog\n .setTitle('@general:actions.cancel.title')\n .setMessage('@human-capital-management:leave-requests.components.cancellation-dialog.message')\n .setContext({ reason: '', note: '' })\n .content(flex => {\n flex\n .setDirection('column')\n .formField('@human-capital-management:leave-requests.components.cancellation-dialog.fields.reason-label', field => {\n field.path('reason');\n field.largeTextBox({\n placeholder: '@human-capital-management:leave-requests.components.cancellation-dialog.fields.reason-placeholder',\n maxLength: 500\n });\n })\n .formField('@human-capital-management:leave-requests.components.cancellation-dialog.fields.note-label', field => {\n field.path('note');\n field.largeTextBox({\n placeholder: '@human-capital-management:leave-requests.components.cancellation-dialog.fields.note-placeholder',\n maxLength: 1000\n });\n });\n })\n .setActions(actions => {\n actions.cancel('@general:actions.close.title').submit('@general:actions.cancel.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { reason: undefined, note: undefined, cancelled: true };\n }\n return {\n reason: context['reason'],\n note: context['note'],\n cancelled: false\n };\n });\n })\n .show();\n return result;\n }\n\n async showApprovalDialog(): Promise<LeaveRequestActionDialogResult> {\n const result = await this.layoutBuilder\n .create()\n .dialog<LeaveRequestActionDialogResult>(dialog => {\n dialog\n .setTitle('@general:actions.approve.title')\n .setMessage('@human-capital-management:leave-requests.components.approval-dialog.message')\n .setContext({ note: '' })\n .content(flex => {\n flex\n .setDirection('column')\n .formField('@human-capital-management:leave-requests.components.approval-dialog.fields.note-label', field => {\n field.path('note');\n field.largeTextBox({\n placeholder: '@human-capital-management:leave-requests.components.approval-dialog.fields.note-placeholder',\n maxLength: 1000\n });\n });\n })\n .setActions(actions => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.approve.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { note: undefined, cancelled: true };\n }\n return {\n note: context['note'],\n cancelled: false\n };\n });\n })\n .show();\n return result;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPTask, AXPTaskPopoverComponent } from '@acorex-platform/module-task-management-client';\nimport { AXPSystemStatuses } from '@acorex-platform/framework-shared/core';\nimport { AXPCommandExecutor } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXMHumanCapitalManagementLeaveRequestEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXPLeaveRequestDialogService } from '../services/leave-request-dialog.service';\n\n@Component({\n selector: 'axm-leave-request-task-popover',\n template: `\n <div class=\"leave-request-popover\">\n <!-- Employee Info -->\n <div class=\"leave-request-popover__section\">\n <div class=\"leave-request-popover__section-header\">\n <i class=\"fa-light fa-user\"></i>\n <span>Employee Information</span>\n </div>\n <div class=\"leave-request-popover__section-content\">\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">Employee:</span>\n <span class=\"leave-request-popover__value\">{{ employeeName() }}</span>\n </div>\n @if (managerName(); as manager) {\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">Manager:</span>\n <span class=\"leave-request-popover__value\">{{ manager }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Leave Details -->\n <div class=\"leave-request-popover__section\">\n <div class=\"leave-request-popover__section-header\">\n <i class=\"fa-light fa-calendar\"></i>\n <span>Leave Details</span>\n </div>\n <div class=\"leave-request-popover__section-content\">\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">Leave Type:</span>\n <span class=\"leave-request-popover__value\">{{ leaveType() }}</span>\n </div>\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">Start Date:</span>\n <span class=\"leave-request-popover__value\">{{ formatDate(task().startDate) }}</span>\n </div>\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">End Date:</span>\n <span class=\"leave-request-popover__value\">{{ formatDate(task().endDate) }}</span>\n </div>\n <div class=\"leave-request-popover__info-row\">\n <span class=\"leave-request-popover__label\">Duration:</span>\n <span class=\"leave-request-popover__value\">{{ calculateDuration() }} days</span>\n </div>\n </div>\n </div>\n\n <!-- Reason -->\n @if (task().description) {\n <div class=\"leave-request-popover__section\">\n <div class=\"leave-request-popover__section-header\">\n <i class=\"fa-light fa-note-sticky\"></i>\n <span>Reason</span>\n </div>\n <div class=\"leave-request-popover__section-content\">\n <p class=\"leave-request-popover__reason\">{{ task().description }}</p>\n </div>\n </div>\n }\n\n <!-- Status -->\n <div class=\"leave-request-popover__section\">\n <div class=\"leave-request-popover__section-header\">\n <i class=\"fa-light fa-flag\"></i>\n <span>Status</span>\n </div>\n <div class=\"leave-request-popover__section-content\">\n <div class=\"leave-request-popover__status-badge\" [attr.data-status]=\"task().status.id\">\n {{ task().status.title }}\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"leave-request-popover__actions\">\n @if (canApprove()) {\n <ax-button\n [color]=\"'success'\"\n [look]=\"'blank'\"\n [text]=\"'@general:actions.approve.title' | translate | async\"\n (onClick)=\"handleApprove()\"\n class=\"leave-request-popover__action-btn\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-check\"></i>\n </ax-prefix>\n </ax-button>\n }\n\n @if (canReject()) {\n <ax-button\n [color]=\"'danger'\"\n [look]=\"'blank'\"\n [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReject()\"\n class=\"leave-request-popover__action-btn\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-xmark\"></i>\n </ax-prefix>\n </ax-button>\n }\n\n @if (canCancel()) {\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'blank'\"\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n (onClick)=\"handleCancel()\"\n class=\"leave-request-popover__action-btn\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-ban\"></i>\n </ax-prefix>\n </ax-button>\n }\n </div>\n </div>\n `,\n styles: `@reference '@acorex/styles/themes/default.css';\n\n .leave-request-popover {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-width: 280px;\n max-width: 360px;\n }\n\n .leave-request-popover__section {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .leave-request-popover__section-header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n color: var(--ax-sys-color-text-primary);\n padding-bottom: 6px;\n border-bottom: 1px solid var(--ax-sys-color-border);\n\n i {\n font-size: 13px;\n color: var(--ax-sys-color-text-neutral-600);\n }\n }\n\n .leave-request-popover__section-content {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .leave-request-popover__info-row {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 10px;\n font-size: 12px;\n line-height: 1.4;\n }\n\n .leave-request-popover__label {\n color: var(--ax-sys-color-text-neutral-600);\n font-weight: 500;\n flex-shrink: 0;\n }\n\n .leave-request-popover__value {\n color: var(--ax-sys-color-text-primary);\n text-align: right;\n word-break: break-word;\n }\n\n .leave-request-popover__reason {\n margin: 0;\n padding: 8px;\n background: var(--ax-sys-color-lighter-surface);\n border-radius: 4px;\n font-size: 12px;\n line-height: 1.4;\n color: var(--ax-sys-color-text-primary);\n }\n\n .leave-request-popover__status-badge {\n display: inline-block;\n padding: 3px 10px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n text-transform: capitalize;\n\n &[data-status='waiting-approval'] {\n background: var(--ax-sys-color-warning-lightest);\n color: var(--ax-sys-color-warning);\n }\n\n &[data-status='approved'] {\n background: var(--ax-sys-color-success-lightest);\n color: var(--ax-sys-color-success);\n }\n\n &[data-status='rejected'] {\n background: var(--ax-sys-color-danger-lightest);\n color: var(--ax-sys-color-danger);\n }\n\n &[data-status='cancelled'] {\n background: var(--ax-sys-color-neutral-lightest);\n color: var(--ax-sys-color-neutral);\n }\n }\n\n .leave-request-popover__actions {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n padding-top: 8px;\n border-top: 1px solid var(--ax-sys-color-border);\n }\n\n .leave-request-popover__action-btn {\n flex: 1;\n min-width: 90px;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule],\n})\nexport class AXMLeaveRequestTaskPopoverComponent extends AXPTaskPopoverComponent {\n task = input.required<AXPTask>();\n\n private readonly commandExecutor = inject(AXPCommandExecutor);\n private readonly dialogService = inject(AXPLeaveRequestDialogService);\n\n protected taskData = computed(() => {\n const task = this.task();\n return (\n (task.data as AXMHumanCapitalManagementLeaveRequestEntityModel) ||\n ((task as any).payload as AXMHumanCapitalManagementLeaveRequestEntityModel)\n );\n });\n\n protected employeeName = computed(() => {\n const data = this.taskData();\n return this.task().reporter?.fullName || 'Unknown';\n });\n\n protected managerName = computed(() => {\n const data = this.taskData();\n return data?.employee?.manager?.person?.fullName || '';\n });\n\n protected leaveType = computed(() => {\n const data = this.taskData();\n // Extract leave type from task title or data\n const title = this.task().title || '';\n const parts = title.split(' - ');\n return parts.length > 1 ? parts[1] : data?.leaveType?.title || 'N/A';\n });\n\n protected canApprove = computed(() => {\n const statusId = this.task().status?.id;\n return statusId === AXPSystemStatuses.WaitingApproval.name || statusId === AXPSystemStatuses.Rejected.name;\n });\n\n protected canReject = computed(() => {\n const statusId = this.task().status?.id;\n return statusId === AXPSystemStatuses.WaitingApproval.name || statusId === AXPSystemStatuses.Approved.name;\n });\n\n protected canCancel = computed(() => {\n const statusId = this.task().status?.id;\n return statusId === AXPSystemStatuses.WaitingApproval.name || statusId === AXPSystemStatuses.Approved.name;\n });\n\n protected formatDate(date: Date): string {\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(new Date(date));\n }\n\n protected calculateDuration(): number {\n const start = new Date(this.task().startDate);\n const end = new Date(this.task().endDate);\n const diffTime = Math.abs(end.getTime() - start.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return diffDays + 1; // Include both start and end days\n }\n\n protected async handleApprove(): Promise<void> {\n const task = this.task();\n const leaveRequestId = task.id;\n\n try {\n const dialogResult = await this.dialogService.showApprovalDialog();\n if (dialogResult?.cancelled) {\n return;\n }\n\n const commandKey = 'HumanCapitalManagement.LeaveRequest:Approve';\n const result = await this.commandExecutor.execute(commandKey, {\n id: leaveRequestId,\n reason: dialogResult?.reason,\n note: dialogResult?.note,\n });\n\n if (result?.success) {\n // Optionally emit an event or refresh the task\n console.log('Leave request approved successfully');\n }\n } catch (error) {\n console.error('Failed to approve leave request:', error);\n }\n }\n\n protected async handleReject(): Promise<void> {\n const task = this.task();\n const leaveRequestId = task.id;\n\n try {\n const dialogResult = await this.dialogService.showRejectionDialog();\n if (dialogResult?.cancelled) {\n return;\n }\n\n const commandKey = 'HumanCapitalManagement.LeaveRequest:Reject';\n const result = await this.commandExecutor.execute(commandKey, {\n id: leaveRequestId,\n reason: dialogResult?.reason,\n note: dialogResult?.note,\n });\n\n if (result?.success) {\n console.log('Leave request rejected successfully');\n }\n } catch (error) {\n console.error('Failed to reject leave request:', error);\n }\n }\n\n protected async handleCancel(): Promise<void> {\n const task = this.task();\n const leaveRequestId = task.id;\n\n try {\n const dialogResult = await this.dialogService.showCancellationDialog();\n if (dialogResult?.cancelled) {\n return;\n }\n\n const commandKey = 'HumanCapitalManagement.LeaveRequest:Cancel';\n const result = await this.commandExecutor.execute(commandKey, {\n id: leaveRequestId,\n reason: dialogResult?.reason,\n note: dialogResult?.note,\n });\n\n if (result?.success) {\n console.log('Leave request cancelled successfully');\n }\n } catch (error) {\n console.error('Failed to cancel leave request:', error);\n }\n }\n}\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { AXPHumanCapitalManagementFeatureKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Human Capital Management Feature Definition Provider.\n * Provides feature definitions for the Human Capital Management module.\n */\nexport class AXPHumanCapitalManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n\n context.addFeature(AXPHumanCapitalManagementFeatureKeys.EmployeeManagement, {\n title: '@human-capital-management:features.employee-management.title',\n description: '@human-capital-management:features.employee-management.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPHumanCapitalManagementFeatureKeys.LeaveManagement, {\n title: '@human-capital-management:features.leave-management.title',\n description: '@human-capital-management:features.leave-management.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPHumanCapitalManagementFeatureKeys.LifecycleManagement, {\n title: '@human-capital-management:features.lifecycle-management.title',\n description: '@human-capital-management:features.lifecycle-management.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Lifecycle event status ----\n\n/**\n * Status lifecycle for lifecycle events: In progress → Waiting sign-off → Completed (or Cancelled).\n */\nexport class AXMLifecycleEventStatusProvider extends AXPStatusProvider {\n readonly key = 'human-capital-management.status.lifecycle-event';\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.InProgress, {\n title: '@human-capital-management:lifecycle-events.states.in-progress',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.WaitingSignOff, {\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Completed, {\n title: '@human-capital-management:lifecycle-events.states.completed',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@human-capital-management:lifecycle-events.states.cancelled',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.InProgress,\n to: AXPSystemStatusType.WaitingSignOff,\n title: '@human-capital-management:lifecycle-events.transitions.await-sign-off',\n },\n {\n from: AXPSystemStatusType.WaitingSignOff,\n to: AXPSystemStatusType.Completed,\n title: '@human-capital-management:lifecycle-events.transitions.complete',\n },\n {\n from: AXPSystemStatusType.WaitingSignOff,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n },\n {\n from: AXPSystemStatusType.InProgress,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n },\n ];\n\n readonly defaultStatus = AXPSystemStatusType.InProgress;\n}\n\n//#endregion\n","import { AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMLifecycleEventStatusProvider } from './lifecycle-event-status.provider';\n\n@NgModule({\n imports: [AXPRuntimeModule],\n providers: [\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMLifecycleEventStatusProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXPHumanCapitalManagementCommandKeys.LifecycleEvent.StartFlow,\n command: () =>\n import('./commands/start-lifecycle-event-flow.command').then((c) => c.StartLifecycleEventFlowCommand),\n },\n ]),\n ],\n})\nexport class AXMLifecycleEventFeatureModule {}\n","//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Leave Request Status Provider ----\n\n/**\n * Leave request status provider defining lifecycle states: Waiting approval, Approved, Rejected, Cancelled.\n * Used by the status plugin to manage leave request status transitions and metadata.\n */\nexport class AXMLeaveRequestStatusProvider extends AXPStatusProvider {\n readonly key = 'human-capital-management.status.leave-request';\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.WaitingApproval, {\n title: '@human-capital-management:leave-requests.states.waiting-approval',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Approved, {\n title: '@human-capital-management:leave-requests.states.approved',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Rejected, {\n title: '@human-capital-management:leave-requests.states.rejected',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@human-capital-management:leave-requests.states.cancelled',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.WaitingApproval,\n to: AXPSystemStatusType.Approved,\n title: '@general:statuses.transitions.approve',\n requiresApproval: true\n },\n {\n from: AXPSystemStatusType.WaitingApproval,\n to: AXPSystemStatusType.Rejected,\n title: '@general:statuses.transitions.reject',\n requiresApproval: true\n },\n {\n from: AXPSystemStatusType.WaitingApproval,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n requiresApproval: true\n },\n {\n from: AXPSystemStatusType.Approved,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n requiresApproval: true\n },\n ];\n\n readonly defaultStatus = AXPSystemStatusType.WaitingApproval;\n}\n\n//#endregion\n\n","import { AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport { AXP_TASK_BADGE_PROVIDERS } from '@acorex-platform/framework-client/layout/components';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\n\nimport { AXMLeaveRequestBadgeProvider } from './badge.provider';\nimport { AXMLeaveRequestStatusProvider } from './leave-request-status.provider';\n\n@NgModule({\n imports: [CommonModule, AXPRuntimeModule],\n providers: [\n {\n provide: AXP_TASK_BADGE_PROVIDERS,\n useClass: AXMLeaveRequestBadgeProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMLeaveRequestStatusProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXPHumanCapitalManagementCommandKeys.LeaveRequest.StartFlow,\n command: () =>\n import('./commands/start-leave-request-flow.command').then((c) => c.StartLeaveRequestFlowCommand),\n },\n {\n key: 'HumanCapitalManagement.LeaveRequest:Approve',\n command: () => import('./commands/approve-leave-request.command').then((c) => c.ApproveLeaveRequestCommand),\n },\n {\n key: 'HumanCapitalManagement.LeaveRequest:Reject',\n command: () => import('./commands/reject-leave-request.command').then((c) => c.RejectLeaveRequestCommand),\n },\n {\n key: 'HumanCapitalManagement.LeaveRequest:Cancel',\n command: () => import('./commands/cancel-leave-request.command').then((c) => c.CancelLeaveRequestCommand),\n },\n ]),\n ],\n})\nexport class AXMLeaveRequestFeatureModule {}\n","//#region ---- Imports ----\n\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Custom Status Names ----\n\nconst OnLeave = 'on-leave';\nconst Terminated = 'terminated';\n\n//#endregion\n\n//#region ---- Employee Status Provider ----\n\n/**\n * Employee status provider defining standard lifecycle states: Active, On Leave, Suspended, Terminated, Pending.\n * Used by the status plugin to manage employee status transitions and metadata.\n */\nexport class AXMEmployeeStatusProvider extends AXPStatusProvider {\n readonly key = 'human-capital-management.status.employee';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses: AXPStatusDefinition[] = [\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@human-capital-management:employees.states.active',\n generateView: true,\n }),\n {\n name: OnLeave,\n title: '@human-capital-management:employees.states.on-leave',\n icon: 'fa-light fa-umbrella-beach',\n color: 'info',\n order: 2,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@human-capital-management:employees.states.suspended',\n generateView: true,\n }),\n {\n name: Terminated,\n title: '@human-capital-management:employees.states.terminated',\n icon: 'fa-light fa-user-xmark',\n color: 'danger',\n order: 4,\n isInitial: false,\n isFinal: true,\n generateView: true,\n },\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@human-capital-management:employees.states.pending',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.Active,\n title: '@human-capital-management:employees.transitions.activate',\n },\n {\n from: AXPSystemStatusType.Active,\n to: OnLeave,\n title: '@human-capital-management:employees.transitions.start-leave',\n },\n {\n from: OnLeave,\n to: AXPSystemStatusType.Active,\n title: '@human-capital-management:employees.transitions.return-from-leave',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Suspended,\n title: '@human-capital-management:employees.transitions.suspend',\n },\n {\n from: AXPSystemStatusType.Suspended,\n to: AXPSystemStatusType.Active,\n title: '@human-capital-management:employees.transitions.resume',\n },\n {\n from: AXPSystemStatusType.Active,\n to: Terminated,\n title: '@human-capital-management:employees.transitions.terminate',\n },\n {\n from: OnLeave,\n to: Terminated,\n title: '@human-capital-management:employees.transitions.terminate',\n },\n {\n from: AXPSystemStatusType.Suspended,\n to: Terminated,\n title: '@human-capital-management:employees.transitions.terminate',\n },\n ];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\nimport {\n AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS,\n AXM_POSITION_ASSIGNMENT_STATUS,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Position Assignment Status Provider ----\n\n/**\n * Position assignment lifecycle statuses used by status plugin badges and filters.\n */\nexport class AXMPositionAssignmentStatusProvider extends AXPStatusProvider {\n readonly key = 'human-capital-management.status.position-assignment';\n\n readonly defaultStatus = AXM_POSITION_ASSIGNMENT_STATUS.active;\n\n readonly statuses: AXPStatusDefinition[] = [\n systemStatusToDefinition(AXM_POSITION_ASSIGNMENT_STATUS.active, {\n title: '@human-capital-management:position-assignments.states.active',\n generateView: true,\n }),\n {\n name: AXM_POSITION_ASSIGNMENT_STATUS.scheduled,\n title: '@human-capital-management:position-assignments.states.scheduled',\n icon: 'fa-light fa-calendar-clock',\n color: 'info',\n order: 2,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n {\n name: AXM_POSITION_ASSIGNMENT_STATUS.expired,\n title: '@human-capital-management:position-assignments.states.expired',\n icon: 'fa-light fa-clock-rotate-left',\n color: 'warning',\n order: 3,\n isInitial: false,\n isFinal: true,\n generateView: true,\n },\n {\n name: AXM_POSITION_ASSIGNMENT_STATUS.revoked,\n title: '@human-capital-management:position-assignments.states.revoked',\n icon: 'fa-light fa-user-slash',\n color: 'danger',\n order: 4,\n isInitial: false,\n isFinal: true,\n generateView: true,\n },\n ];\n\n readonly transitions: AXPStatusTransition[] = [];\n}\n\n//#endregion\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n RootConfig,\n AXPPeopleOrganizationPermissionKeys\n} from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXPHumanCapitalManagementFeatureKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXPHumanCapitalManagementMenuKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n const module = RootConfig.module;\n const keys = AXPPeopleOrganizationPermissionKeys;\n\n const organizationMenu = context.find(AXPCommonMenuKeys.Organization);\n if (!organizationMenu.exists) {\n context.addItems([\n {\n name: AXPCommonMenuKeys.Organization,\n priority: 8000,\n text: '@organization-management:module.menus.root.title',\n type: 'menu',\n icon: 'fa-light fa-sitemap',\n children: [],\n },\n ]);\n }\n\n context.find(AXPCommonMenuKeys.Organization).addItems([\n {\n name: AXPHumanCapitalManagementMenuKeys.Employees,\n text: '@human-capital-management:employees.menus.employees.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.employee.name),\n priority: 10,\n icon: RootConfig.entities.employee.icon,\n policy: {\n permissions: [keys.MaintainEmployees],\n features: [AXPHumanCapitalManagementFeatureKeys.EmployeeManagement],\n },\n },\n {\n name: AXPHumanCapitalManagementMenuKeys.LeaveRequests,\n text: '@human-capital-management:leave-requests.menus.leave-requests.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.leaveRequest.name),\n priority: 20,\n icon: RootConfig.entities.leaveRequest.icon,\n badgeKey: 'leave-request-badge',\n policy: {\n permissions: [keys.ManageEmployeeActions],\n features: [AXPHumanCapitalManagementFeatureKeys.LeaveManagement],\n },\n },\n ]);\n\n const orgConfigMenu = context.find(AXPCommonMenuKeys.OrganizationConfig);\n if (!orgConfigMenu.exists) {\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXPCommonMenuKeys.OrganizationConfig,\n priority: 8600,\n text: '@organization-management:module.menus.configuration.title',\n icon: module.icon,\n type: 'menu',\n children: [],\n },\n ]);\n }\n\n context.find(AXPCommonMenuKeys.OrganizationConfig).addItems([\n {\n name: AXPHumanCapitalManagementMenuKeys.EmploymentTypes,\n text: '@human-capital-management:employment-types.menus.employment-types.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.employmentType.name),\n priority: 8,\n icon: RootConfig.entities.employmentType.icon,\n policy: {\n permissions: [keys.Setup],\n features: [AXPHumanCapitalManagementFeatureKeys.EmployeeManagement],\n },\n },\n {\n name: AXPHumanCapitalManagementMenuKeys.LeaveTypes,\n text: '@human-capital-management:leave-types.menus.leave-types.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.leaveType.name),\n priority: 9,\n icon: RootConfig.entities.leaveType.icon,\n policy: {\n permissions: [keys.Setup],\n features: [AXPHumanCapitalManagementFeatureKeys.LeaveManagement],\n },\n },\n {\n name: AXPHumanCapitalManagementMenuKeys.LifecycleEventTypes,\n text: '@human-capital-management:lifecycle-event-types.menus.lifecycle-event-types.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.lifecycleEventType.name),\n priority: 10,\n icon: RootConfig.entities.lifecycleEventType.icon,\n policy: {\n permissions: [keys.Setup],\n features: [AXPHumanCapitalManagementFeatureKeys.LifecycleManagement],\n },\n },\n ]);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXMOrgChartNodeContributionContext,\n AXMOrgChartNodeContributionProvider,\n AXMOrgChartNodeMenuAction,\n} from '@acorex-platform/module-organization-management-client';\nimport { inject, Injectable } from '@angular/core';\n\nimport {\n AXPHumanCapitalManagementCommandKeys,\n AXPPeopleOrganizationPermissionKeys\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst orgChartNodeActionKey = (suffix: string): string =>\n `@human-capital-management:organization-chart.node-actions.${suffix}`;\nconst positionAssignmentSubmenuGroupId = 'position-assignment';\n\n//#endregion\n\n@Injectable()\nexport class AXMHcmOrgChartNodeContributionProvider implements AXMOrgChartNodeContributionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- AXMOrgChartNodeContributionProvider Implementation ----\n\n async getMenuActions(context: AXMOrgChartNodeContributionContext): Promise<AXMOrgChartNodeMenuAction[]> {\n if (context.nodeKind !== 'company-root' && context.nodeKind !== 'business-unit') {\n return [];\n }\n\n const businessUnitId = this.resolveBusinessUnitId(context);\n const positionId = this.resolveManagerPositionId(context);\n const hasManager = this.hasAssignedManager(context);\n const shouldShowVacantAssignAction = context.nodeKind === 'business-unit' && this.hasVacantBusinessUnitHead(context);\n const canMaintainOrganization = this.sessionService.authorize(\n AXPPeopleOrganizationPermissionKeys.MaintainOrganization,\n );\n const canCreatePositionAssignment = canMaintainOrganization;\n const canEditPositionAssignment = canMaintainOrganization;\n\n const assignVacantHeadAction: AXMOrgChartNodeMenuAction | null =\n shouldShowVacantAssignAction\n ? {\n id: 'organization-management.assign-employee-to-head',\n title: orgChartNodeActionKey('assign-manager'),\n icon: 'fa-light fa-user-plus',\n order: 95,\n submenuGroupId: positionAssignmentSubmenuGroupId,\n submenuGroupTitle: orgChartNodeActionKey('position-assignment'),\n submenuGroupIcon: 'fa-light fa-user-tie',\n disabled: !canCreatePositionAssignment || !businessUnitId || !positionId,\n execute: async () => {\n if (!businessUnitId || !positionId) {\n return;\n }\n const result = await this.commandService.execute(AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign, {\n data: {\n businessUnitId,\n positionId,\n isPrimary: true,\n },\n });\n if (result?.success) {\n await context.refreshChart();\n }\n },\n }\n : null;\n\n const managerAction: AXMOrgChartNodeMenuAction = {\n id: 'organization-management.assign-manager',\n title: hasManager ? orgChartNodeActionKey('change-manager') : orgChartNodeActionKey('assign-manager'),\n icon: 'fa-light fa-user-tie',\n order: 100,\n submenuGroupId: positionAssignmentSubmenuGroupId,\n submenuGroupTitle: orgChartNodeActionKey('position-assignment'),\n submenuGroupIcon: 'fa-light fa-user-tie',\n disabled: !canCreatePositionAssignment || !businessUnitId || !positionId,\n execute: async () => {\n if (!businessUnitId || !positionId) {\n return;\n }\n const result = await this.commandService.execute(AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign, {\n data: {\n businessUnitId,\n positionId,\n isPrimary: true,\n },\n });\n if (result?.success) {\n await context.refreshChart();\n }\n },\n };\n\n const revokeManagerAction: AXMOrgChartNodeMenuAction = {\n id: 'organization-management.revoke-manager',\n title: orgChartNodeActionKey('revoke-manager-assignment'),\n icon: 'fa-light fa-user-minus',\n color: 'danger',\n order: 110,\n submenuGroupId: positionAssignmentSubmenuGroupId,\n submenuGroupTitle: orgChartNodeActionKey('position-assignment'),\n submenuGroupIcon: 'fa-light fa-user-tie',\n disabled: !canEditPositionAssignment || !hasManager || !positionId,\n execute: async () => {\n if (!positionId) {\n return;\n }\n const employeeId = this.resolveManagerEmployeeId(context);\n if (!employeeId) {\n return;\n }\n const result = await this.commandService.execute(AXPHumanCapitalManagementCommandKeys.PositionAssignment.Revoke, {\n positionId,\n employeeId,\n businessUnitId,\n });\n if (result?.success) {\n await context.refreshChart();\n }\n },\n };\n\n return [\n ...(assignVacantHeadAction ? [assignVacantHeadAction] : []),\n ...(!shouldShowVacantAssignAction ? [managerAction] : []),\n ...(hasManager ? [revokeManagerAction] : []),\n ];\n }\n\n //#endregion\n\n //#region ---- Node Metadata ----\n\n private resolveBusinessUnitId(context: AXMOrgChartNodeContributionContext): string | undefined {\n if (context.nodeKind === 'business-unit') {\n return (\n context.node.entity?.id ??\n (context.node.metadata?.['businessUnitId'] as string | undefined) ??\n (context.node.metadata?.['unitId'] as string | undefined)\n );\n }\n\n // Company root (merged-executive chart): corporate scope is often `mergedCorporateBusinessUnitId`, not `businessUnitId`.\n const meta = context.node.metadata;\n return (\n (meta?.['businessUnitId'] as string | undefined) ??\n (meta?.['mergedCorporateBusinessUnitId'] as string | undefined)\n );\n }\n\n private resolveManagerPositionId(context: AXMOrgChartNodeContributionContext): string | undefined {\n const metadata = context.node.metadata ?? {};\n const topRole = metadata['topRole'] as Record<string, unknown> | undefined;\n const unitHead = metadata['unitHead'] as Record<string, unknown> | undefined;\n return (\n (unitHead?.['positionId'] as string | undefined) ??\n (topRole?.['positionId'] as string | undefined) ??\n (metadata['headPositionId'] as string | undefined)\n );\n }\n\n private hasAssignedManager(context: AXMOrgChartNodeContributionContext): boolean {\n const metadata = context.node.metadata ?? {};\n if (context.nodeKind === 'company-root') {\n const topRole = metadata['topRole'] as Record<string, unknown> | undefined;\n if (!topRole) {\n return false;\n }\n const vacant = topRole['vacant'] === true;\n const employeeName = topRole['employeeName'];\n return !vacant && typeof employeeName === 'string' && employeeName.trim().length > 0;\n }\n if (context.nodeKind === 'business-unit') {\n const unitHead = metadata['unitHead'] as Record<string, unknown> | undefined;\n if (!unitHead) {\n return false;\n }\n const vacant = unitHead['vacant'] === true;\n const employeeName = unitHead['employeeName'];\n return !vacant && typeof employeeName === 'string' && employeeName.trim().length > 0;\n }\n return false;\n }\n\n private resolveManagerEmployeeId(context: AXMOrgChartNodeContributionContext): string | undefined {\n const metadata = context.node.metadata ?? {};\n if (context.nodeKind === 'company-root') {\n const topRole = metadata['topRole'] as Record<string, unknown> | undefined;\n const employeeId = topRole?.['employeeId'];\n return typeof employeeId === 'string' && employeeId.trim().length > 0 ? employeeId : undefined;\n }\n if (context.nodeKind === 'business-unit') {\n const unitHead = metadata['unitHead'] as Record<string, unknown> | undefined;\n const employeeId = unitHead?.['employeeId'];\n return typeof employeeId === 'string' && employeeId.trim().length > 0 ? employeeId : undefined;\n }\n return undefined;\n }\n\n private hasVacantBusinessUnitHead(context: AXMOrgChartNodeContributionContext): boolean {\n if (context.nodeKind !== 'business-unit') {\n return false;\n }\n const metadata = context.node.metadata ?? {};\n const unitHead = metadata['unitHead'] as Record<string, unknown> | undefined;\n return unitHead?.['vacant'] === true;\n }\n\n //#endregion\n}\n","import { AXCalendarService } from '@acorex/core/date-time';\n\n/**\n * Manager approval due date for leave requests:\n * one calendar day before leave start, or the start date when leave begins today.\n */\nexport function resolveLeaveRequestManagerApprovalDueDate(\n calendarService: AXCalendarService,\n startDateRaw: unknown,\n): Date | null {\n const start = coerceLocalDay(calendarService, startDateRaw);\n if (!start) {\n return null;\n }\n\n const today = calendarService.now().startOf('day');\n const startDay = calendarService.create(start).startOf('day');\n\n if (startDay.date.getTime() === today.date.getTime()) {\n return startDay.date;\n }\n\n return startDay.add('day', -1).date;\n}\n\nfunction coerceLocalDay(calendarService: AXCalendarService, value: unknown): Date | null {\n if (value == null || value === '') {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n\n try {\n return calendarService.create(trimmed).startOf('day').date;\n } catch {\n return null;\n }\n }\n\n return null;\n}\n","//#region ---- Imports ----\n\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { merge } from 'lodash';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport type { AXMHumanCapitalManagementLeaveTypeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { resolveLeaveRequestManagerApprovalDueDate } from './leave-request-manager-due-date.utils';\n\n//#endregion\n\n/**\n * Expression-evaluator scope for leave request \"Create\" dropdown items (leave type templates).\n */\nexport class AXMHumanCapitalManagementLeaveRequestExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n private readonly calendarService = inject(AXCalendarService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n /**\n * Due date for the manager leave-approval human task (workflow expression helper).\n * One day before leave start; when leave starts today, due date is the start date.\n */\n leaveRequestManagerApprovalDueDate: (startDateRaw: unknown): Date | null =>\n resolveLeaveRequestManagerApprovalDueDate(this.calendarService, startDateRaw),\n\n /**\n * Loads leave types and returns toolbar child actions.\n * Types with workflowConfig run `HumanCapitalManagement.LeaveRequest:StartFlow`.\n */\n LeaveRequests: async (): Promise<AXPEntityAction[]> => {\n try {\n const locale = this.translation.getActiveLang();\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.leaveType.name)\n .data()\n .query({ skip: 0, take: 500 });\n const rows = (page.items ?? []) as Pick<\n AXMHumanCapitalManagementLeaveTypeEntityModel,\n 'id' | 'title' | 'workflowConfig'\n >[];\n\n const sorted = [...rows].sort((a, b) => {\n const ta = resolveMultiLanguageString(a.title as never, locale).trim() || a.id;\n const tb = resolveMultiLanguageString(b.title as never, locale).trim() || b.id;\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n return sorted.map((row) => {\n const title = resolveMultiLanguageString(row.title as never, locale).trim() || row.id;\n const workflowConfig = row.workflowConfig;\n const workflowId = workflowConfig?.workflowName?.trim();\n const defaultInput = workflowConfig?.defaultInput ?? {};\n\n const guidedFlowCommand = workflowId\n ? ({\n name: AXPHumanCapitalManagementCommandKeys.LeaveRequest.StartFlow,\n options: {\n workflowId,\n input: merge(\n {\n employeeId: '{{ context.eval(\"id\") }}',\n employeeDisplayName: '{{ context.eval(\"person.fullName\") }}',\n leaveTypeId: row.id,\n leaveTypeTitle: row.title,\n },\n defaultInput,\n ),\n },\n } satisfies AXPEntityAction['command'])\n : undefined;\n\n const notImplementedToastCommand = {\n name: 'workflow-activity:show-toast',\n options: {\n message: '@human-capital-management:leave-requests.messages.request-not-implemented',\n type: 'warning',\n },\n } satisfies AXPEntityAction['command'];\n\n return {\n name: `start-leave-request-${row.id}`,\n title,\n icon: 'fa-light fa-calendar-plus',\n color: 'default',\n command: guidedFlowCommand ?? notImplementedToastCommand,\n priority: 'primary',\n type: 'info',\n scope: AXPEntityCommandScope.TypeLevel,\n } satisfies AXPEntityAction;\n });\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.LeaveRequests failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { get } from 'lodash';\nimport type { AXMHumanCapitalManagementLifecycleEventTypeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Icon helpers ----\n\n/** Dropdown items render `fa-light {{ suffix }}`; strip a leading FA style token from full icon classes. */\nfunction lifecycleEventMenuIconSuffix(icon?: string): string {\n const trimmed = icon?.trim();\n if (!trimmed) {\n return 'fa-circle-plus';\n }\n const rest = trimmed.replace(/^(fa-(?:duotone|solid|regular|light|thin|brands))\\s+/i, '').trim();\n return rest || 'fa-circle-plus';\n}\n\n//#endregion\n\n/**\n * Expression-evaluator scope for lifecycle event \"Start\" dropdown items (event type templates).\n */\nexport class AXMHumanCapitalManagementLifecycleEventExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n /**\n * Loads lifecycle event types and returns toolbar child actions.\n * Templates that define onboarding/offboarding targets run `HumanCapitalManagement.LifecycleEvent:StartFlow`;\n * other types show a not-implemented toast until wired.\n */\n LifecycleEvents: async (): Promise<AXPEntityAction[]> => {\n try {\n const locale = this.translation.getActiveLang();\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.lifecycleEventType.name)\n .data()\n .query({ skip: 0, take: 500 });\n const rows = (page.items ?? []) as Pick<\n AXMHumanCapitalManagementLifecycleEventTypeEntityModel,\n 'id' | 'title' | 'icon' | 'workflowConfig'\n >[];\n\n const sorted = [...rows].sort((a, b) => {\n const ta = resolveMultiLanguageString(a.title as never, locale).trim() || a.id;\n const tb = resolveMultiLanguageString(b.title as never, locale).trim() || b.id;\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n return sorted.map((row) => {\n const menuTitle =\n resolveMultiLanguageString(row.title as never, locale).trim() || row.id;\n\n const workflowConfig = row.workflowConfig;\n const workflowId = workflowConfig?.workflowName?.trim();\n const defaultInput = workflowConfig?.defaultInput ?? {};\n const questionnaireId = get(defaultInput, 'questionnaireId') as string | undefined;\n\n const guidedFlowCommand =\n workflowId && questionnaireId\n ? ({\n name: AXPHumanCapitalManagementCommandKeys.LifecycleEvent.StartFlow,\n options: {\n workflowId,\n input: {\n employeeId: '{{ context.eval(\"id\") }}',\n employeeDisplayName: '{{ context.eval(\"person.fullName\") }}',\n eventTypeId: row.id,\n eventTypeTitle: row.title,\n questionnaireId,\n },\n },\n } satisfies AXPEntityAction['command'])\n : undefined;\n\n const notImplementedToastCommand = {\n name: 'workflow-activity:show-toast',\n options: {\n message: '@human-capital-management:lifecycle-events.messages.event-not-implemented',\n type: 'warning',\n },\n } satisfies AXPEntityAction['command'];\n\n return {\n name: `start-lifecycle-event-${row.id}`,\n title: menuTitle,\n icon: lifecycleEventMenuIconSuffix(row.icon),\n color: 'default',\n command: guidedFlowCommand ?? notImplementedToastCommand,\n priority: 'primary',\n type: 'info',\n scope: AXPEntityCommandScope.TypeLevel,\n } satisfies AXPEntityAction;\n });\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.LifecycleEvents failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { HCM_CATALOG_SCOPE_HR } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst QUESTIONNAIRE = 'AssessmentManagement.Questionnaire';\nconst QUESTION_BANK_ITEM = 'AssessmentManagement.QuestionBankItem';\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\nconst HCM_CATALOG_TARGETS = [QUESTIONNAIRE, QUESTION_BANK_ITEM, WORKFLOW_DEFINITION] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMHumanCapitalManagementCatalogScopeDefinitionProvider\n implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: HCM_CATALOG_SCOPE_HR,\n title: '@human-capital-management:catalog-scopes.hr.title',\n description: '@human-capital-management:catalog-scopes.hr.description',\n targets: [...HCM_CATALOG_TARGETS],\n icon: 'fa-light fa-people-arrows',\n cssClass: 'warning-lighter',\n order: 10,\n },\n ];\n }\n}\n\n//#endregion\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { first, get } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#region ---- Profile context ----\n\nexport interface AXMHcmProfileContext {\n userId: string;\n employeeId: string;\n personId: string;\n}\n\n//#endregion\n\n//#region ---- HCM profile context service ----\n\n/** Resolves the current user's employee and linked person for self-service profile flows. */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmProfileContextService {\n //#region ----- Services & Dependencies -----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ----- State -----\n\n private cachedUserId: string | null = null;\n private cachedContext: AXMHcmProfileContext | null | undefined;\n private inflight: Promise<AXMHcmProfileContext | null> | null = null;\n\n //#endregion\n\n //#region ----- Public API -----\n\n async resolve(): Promise<AXMHcmProfileContext | null> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n this.clearCache();\n return null;\n }\n\n if (this.cachedUserId === userId && this.cachedContext !== undefined) {\n return this.cachedContext;\n }\n\n if (this.inflight && this.cachedUserId === userId) {\n return this.inflight;\n }\n\n this.cachedUserId = userId;\n this.inflight = this.loadContext(userId).finally(() => {\n this.inflight = null;\n });\n\n this.cachedContext = await this.inflight;\n return this.cachedContext;\n }\n\n clearCache(): void {\n this.cachedUserId = null;\n this.cachedContext = undefined;\n this.inflight = null;\n }\n\n //#endregion\n\n //#region ----- Private Methods -----\n\n private async loadContext(userId: string): Promise<AXMHcmProfileContext | null> {\n const employeeResult = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.employee.name)\n .data<string, AXMHumanCapitalManagementEmployeeEntityModel>()\n .query({\n filter: {\n field: 'userId',\n operator: { type: 'equal' },\n value: userId,\n },\n take: 1,\n skip: 0,\n });\n\n const employee = first(employeeResult.items);\n const employeeId = get(employee, 'id');\n const personId = get(employee, 'personId');\n\n if (!employeeId || !personId) {\n return null;\n }\n\n return { userId, employeeId, personId };\n }\n\n //#endregion\n}\n\n//#endregion\n","import { inject } from '@angular/core';\r\nimport { AXPHookProvider } from '@acorex-platform/framework-client/core';\r\n\r\nimport {\r\n PROFILE_PAGE_SECTIONS_HOOK,\r\n isUserProfileSectionsGroupRequested,\r\n type AXPUserProfileSection,\r\n type AXPUserProfileSectionsPayload,\r\n} from '@acorex-platform/module-auth-client';\r\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\r\nimport { AXMHcmProfileContextService } from './profile-context.service';\r\n\r\n//#region ---- Helpers ----\r\n\r\nconst comingSoon = (messageKey: string) => ({\r\n name: 'auth:profile-coming-soon',\r\n options: { messageKey },\r\n});\r\n\r\n//#endregion\r\n\r\n//#region ---- Human capital profile sections ----\r\n\r\n/** Overrides account identity sections for employees and contributes HR profile sections. */\r\nexport const HumanCapitalProfileSectionsHookProvider: AXPHookProvider<\r\n AXPUserProfileSectionsPayload,\r\n AXPUserProfileSectionsPayload\r\n> = {\r\n key: PROFILE_PAGE_SECTIONS_HOOK,\r\n priority: 20,\r\n execute: async (payload) => {\r\n const requestsRequested = isUserProfileSectionsGroupRequested(payload, 'requests');\r\n const accountRequested = isUserProfileSectionsGroupRequested(payload, 'account');\r\n if (!accountRequested && !requestsRequested) {\r\n return payload;\r\n }\r\n\r\n const profileContextService = inject(AXMHcmProfileContextService);\r\n const profileContext = accountRequested ? await profileContextService.resolve() : null;\r\n\r\n const baseSections = profileContext\r\n ? payload.sections.filter((section) => section.id !== 'basic-info' && section.id !== 'signature')\r\n : payload.sections;\r\n\r\n const identitySections: AXPUserProfileSection[] = profileContext\r\n ? [\r\n {\r\n id: 'basic-info',\r\n groupId: 'account',\r\n title: '@auth:profile-page.sections.basic-info.title',\r\n description: '@auth:profile-page.sections.basic-info.description',\r\n icon: 'far fa-address-card',\r\n priority: 10,\r\n layout: { colSpan: 6 },\r\n actions: [\r\n {\r\n name: 'edit-basic-info',\r\n title: '@auth:profile-page.sections.basic-info.actions.edit',\r\n icon: 'far fa-pen',\r\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo },\r\n },\r\n ],\r\n },\r\n {\r\n id: 'signature',\r\n groupId: 'account',\r\n title: '@auth:profile-page.sections.signature.title',\r\n description: '@auth:profile-page.sections.signature.description',\r\n icon: 'far fa-signature',\r\n priority: 20,\r\n layout: { colSpan: 6 },\r\n actions: [\r\n {\r\n name: 'edit-signature',\r\n title: '@auth:profile-page.sections.signature.actions.manage',\r\n icon: 'far fa-pen',\r\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature },\r\n },\r\n ],\r\n },\r\n ]\r\n : [];\r\n\r\n const requestSections: AXPUserProfileSection[] = requestsRequested\r\n ? [\r\n {\r\n id: 'my-leave-requests',\r\n groupId: 'requests',\r\n title: '@human-capital-management:profile-page.sections.my-leave-requests.title',\r\n description: '@human-capital-management:profile-page.sections.my-leave-requests.description',\r\n icon: 'far fa-calendar-days',\r\n priority: 20,\r\n layout: { colSpan: 6 },\r\n actions: [\r\n {\r\n name: 'view-my-leave-requests',\r\n title: '@human-capital-management:profile-page.sections.my-leave-requests.actions.manage',\r\n icon: 'far fa-arrow-right',\r\n command: comingSoon(\r\n '@human-capital-management:profile-page.commands.view-my-leave-requests.coming-soon',\r\n ),\r\n },\r\n ],\r\n },\r\n ]\r\n : [];\r\n\r\n return {\r\n ...payload,\r\n sections: [...baseSections, ...identitySections, ...requestSections],\r\n };\r\n },\r\n};\r\n\r\n//#endregion\r\n","/** Lazy Documents tab host; fetches drive context on first visit. */\nexport const PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY = 'hcm.profile-documents-panel';\n\n/** Same page component key registered by document-management `documents` plugin. */\nexport const DOCUMENT_DRIVE_PAGE_COMPONENT_KEY = 'entity-document-drive-page';\n","//#region ----- Imports -----\r\n\r\nimport { inject } from '@angular/core';\r\nimport { AXPHookProvider } from '@acorex-platform/framework-client/core';\r\nimport {\r\n PROFILE_PAGE_GROUPS_HOOK,\r\n type AXPUserProfileGroupsPayload,\r\n} from '@acorex-platform/module-auth-client';\r\nimport { AXMHcmProfileContextService } from './profile-context.service';\r\nimport { PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './profile-documents-panel.constants';\r\n\r\n//#endregion\r\n\r\n//#region ----- Human capital profile documents group -----\r\n\r\n/**\r\n * Adds the Documents profile tab when the session user has a linked Employee.\r\n * Drive content is fetched when the tab is first opened.\r\n */\r\nexport const HumanCapitalProfileDocumentsGroupsHookProvider: AXPHookProvider<\r\n AXPUserProfileGroupsPayload,\r\n AXPUserProfileGroupsPayload\r\n> = {\r\n key: PROFILE_PAGE_GROUPS_HOOK,\r\n priority: 35,\r\n execute: async (payload) => {\r\n const profileContext = await inject(AXMHcmProfileContextService).resolve();\r\n if (!profileContext?.employeeId) {\r\n return payload;\r\n }\r\n\r\n return {\r\n ...payload,\r\n groups: [\r\n ...payload.groups,\r\n {\r\n id: 'documents',\r\n title: '@human-capital-management:profile-page.groups.documents.title',\r\n icon: 'far fa-folder-open',\r\n priority: 35,\r\n content: {\r\n mode: 'component',\r\n componentKey: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,\r\n },\r\n },\r\n ],\r\n };\r\n },\r\n};\r\n\r\n//#endregion\r\n","import { inject, LOCALE_ID } from '@angular/core';\r\nimport { first } from 'lodash';\r\nimport { AXPHookProvider } from '@acorex-platform/framework-client/core';\r\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\r\nimport {\r\n USER_CARD_ITEMS_HOOK,\r\n type AXPUserCardItemsPayload,\r\n type AXPUserCardRow,\r\n} from '@acorex-platform/framework-client/layout/components';\r\nimport { hasMultiLanguageContent, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\r\nimport {\r\n AXM_POSITION_ASSIGNMENT_STATUS,\r\n RootConfig,\r\n type AXMHumanCapitalManagementEmployeeEntityModel,\r\n type AXMHumanCapitalManagementPositionAssignmentEntityModel,\r\n} from '@acorex-platform/module-human-capital-management-client/contracts';\r\n\r\n//#region ----- Helpers -----\r\n\r\nconst POSITION_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-position';\r\nconst BUSINESS_UNIT_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-business-unit';\r\n\r\nfunction asDisplayTitle(value: unknown, locale: string): string {\r\n return resolveMultiLanguageString(value, locale).trim();\r\n}\r\n\r\nfunction pickActiveAssignment(\r\n items: AXMHumanCapitalManagementPositionAssignmentEntityModel[],\r\n): AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined {\r\n const active = items.filter((item) => item.statusId === AXM_POSITION_ASSIGNMENT_STATUS.active);\r\n return active.find((item) => item.isPrimary === true) ?? first(active);\r\n}\r\n\r\nfunction orgRows(positionTitle: string, businessUnitTitle: string): AXPUserCardRow[] {\r\n const rows: AXPUserCardRow[] = [];\r\n if (positionTitle && hasMultiLanguageContent(positionTitle)) {\r\n rows.push({\r\n id: 'hcm.primary-position',\r\n label: POSITION_LABEL,\r\n value: positionTitle,\r\n priority: 10,\r\n });\r\n }\r\n if (businessUnitTitle && hasMultiLanguageContent(businessUnitTitle)) {\r\n rows.push({\r\n id: 'hcm.primary-business-unit',\r\n label: BUSINESS_UNIT_LABEL,\r\n value: businessUnitTitle,\r\n priority: 20,\r\n });\r\n }\r\n return rows;\r\n}\r\n\r\nasync function loadActiveAssignment(\r\n entityService: AXPEntityService,\r\n employeeId: string,\r\n): Promise<AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined> {\r\n const result = await entityService\r\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\r\n .data<string, AXMHumanCapitalManagementPositionAssignmentEntityModel>()\r\n .query({\r\n skip: 0,\r\n take: 50,\r\n sort: [{ field: 'startDate', dir: 'desc' }],\r\n filter: {\r\n logic: 'and',\r\n filters: [\r\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\r\n { field: 'statusId', operator: { type: 'equal' }, value: AXM_POSITION_ASSIGNMENT_STATUS.active },\r\n ],\r\n },\r\n });\r\n\r\n return pickActiveAssignment(result.items ?? []);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region ----- Human capital user-card items -----\r\n\r\n/**\r\n * Contributes the employee's current position and business unit as user-card badges.\r\n * Prefers the denormalized active primary assignment; falls back to the first active position assignment.\r\n */\r\nexport const HumanCapitalUserCardItemsHookProvider: AXPHookProvider<\r\n AXPUserCardItemsPayload,\r\n AXPUserCardItemsPayload\r\n> = {\r\n key: USER_CARD_ITEMS_HOOK,\r\n priority: 20,\r\n execute: async (payload) => {\r\n const userId = payload.userId?.trim();\r\n if (!userId) {\r\n return payload;\r\n }\r\n\r\n const entityService = inject(AXPEntityService);\r\n const locale = inject(LOCALE_ID);\r\n\r\n try {\r\n const employeeResult = await entityService\r\n .withEntity(RootConfig.module.name, RootConfig.entities.employee.name)\r\n .data<string, AXMHumanCapitalManagementEmployeeEntityModel>()\r\n .query({\r\n filter: {\r\n field: 'userId',\r\n operator: { type: 'equal' },\r\n value: userId,\r\n },\r\n take: 1,\r\n skip: 0,\r\n });\r\n\r\n const employee = first(employeeResult.items);\r\n if (!employee?.id) {\r\n return payload;\r\n }\r\n\r\n let positionTitle = asDisplayTitle(employee.activePrimaryPosition?.title, locale);\r\n let businessUnitTitle = asDisplayTitle(employee.activePrimaryBusinessUnit?.title, locale);\r\n\r\n if (!positionTitle || !businessUnitTitle) {\r\n const assignment = await loadActiveAssignment(entityService, employee.id);\r\n if (assignment) {\r\n positionTitle = positionTitle || asDisplayTitle(assignment.position?.title, locale);\r\n businessUnitTitle = businessUnitTitle || asDisplayTitle(assignment.businessUnit?.title, locale);\r\n }\r\n }\r\n\r\n const rows = orgRows(positionTitle, businessUnitTitle);\r\n if (!rows.length) {\r\n return payload;\r\n }\r\n\r\n return {\r\n ...payload,\r\n rows: [...payload.rows, ...rows],\r\n };\r\n } catch {\r\n return payload;\r\n }\r\n },\r\n};\r\n\r\n//#endregion\r\n","import { AXPHookProvider } from '@acorex-platform/framework-client/core';\nimport {\n ONBOARDING_STEPS_HOOK,\n type AXPOnboardingStepsPayload,\n} from '@acorex-platform/module-auth-client';\n\n//#region ----- HCM orientation onboarding step -----\n\n/**\n * Application-scoped people/org orientation when HCM is loaded.\n * Welcome onboarding no longer includes this step (profile + org tools cover it elsewhere).\n */\nexport const HumanCapitalOnboardingStepsHookProvider: AXPHookProvider<\n AXPOnboardingStepsPayload,\n AXPOnboardingStepsPayload\n> = {\n key: ONBOARDING_STEPS_HOOK,\n priority: 50,\n execute: (payload) => payload,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPPeopleOrganizationPermissionKeys\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers HCM-owned People & Organization capabilities into the shared domain groups.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPPeopleOrganizationPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:people-organization.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.PeopleOrganization.Root, `${G}.people-organization.title`, `${G}.people-organization.description`, { order: 10 });\n\n context\n .addGroup(\n groups.PeopleOrganization.Workforce,\n `${G}.people-organization-workforce.title`,\n `${G}.people-organization-workforce.description`,\n { parent: groups.PeopleOrganization.Root, order: 20 },\n )\n .addPermission(\n keys.MaintainEmployees,\n `${P}.maintain-employees.title`,\n `${P}.maintain-employees.description`,\n )\n .endPermission()\n .addPermission(\n keys.ManageEmployeeActions,\n `${P}.manage-employee-actions.title`,\n `${P}.manage-employee-actions.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG } from '@acorex-platform/module-common-client';\nimport { AXM_ORG_CHART_NODE_CONTRIBUTOR } from '@acorex-platform/module-organization-management-client';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_HOOK_PROVIDER,\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER, AXP_RESOURCE_APPOINTMENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule } from '@angular/core';\nimport { Route, ROUTES } from '@angular/router';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\n\r\nimport { AXPHumanCapitalManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMLeaveRequestResourceAppointmentProvider } from './features';\nimport { AXMLifecycleEventFeatureModule } from './features/lifecycle-event/lifecycle-event.module';\nimport { AXMLeaveRequestFeatureModule } from './features/leave-request/leave-request.module';\nimport { AXMEmployeeStatusProvider } from './features/shared/employee-status.provider';\nimport { AXMPositionAssignmentStatusProvider } from './features/shared/position-assignment-status.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMHcmOrgChartNodeContributionProvider } from './features/organization-chart/hcm-org-chart-node-contribution.provider';\nimport { AXMHumanCapitalManagementLeaveRequestExpressionEvaluatorScopeProvider } from './features/shared/leave-request-expression-evaluator-scope.provider';\nimport { AXMHumanCapitalManagementLifecycleEventExpressionEvaluatorScopeProvider } from './features/shared/lifecycle-event-expression-evaluator-scope.provider';\nimport { AXMHumanCapitalManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { HumanCapitalProfileSectionsHookProvider } from './features/profile-page/human-capital-profile-sections.hook';\nimport { HumanCapitalProfileDocumentsGroupsHookProvider } from './features/profile-page/human-capital-profile-documents-groups.hook';\nimport { HumanCapitalUserCardItemsHookProvider } from './features/user-card/human-capital-user-card-items.hook';\nimport { HumanCapitalOnboardingStepsHookProvider } from './features/onboarding/human-capital-onboarding-steps.hook';\n\r\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n\r\n//#region ---- Appointment Board Route ----\r\n\r\nfunction createAppointmentBoardRoute(): Route {\r\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\r\n return {\r\n path: `:app/${RootConfig.pages.appointmentBoard.path}/:provider-name`,\r\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\r\n data: { rootLayout: true },\r\n loadComponent: () => config.viewers.root(),\r\n children: [\r\n {\r\n path: '',\r\n loadComponent: () => import('@acorex-platform/module-common-client').then((c) => c.AXPResourceAppointmentPageComponent),\r\n providers: [\r\n {\r\n provide: AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG,\r\n useValue: {\r\n pageTitle: RootConfig.pages.appointmentBoard.title,\r\n pageDescription: '@human-capital-management:leave-requests.menus.appointment-board.description',\r\n pageIcon: RootConfig.pages.appointmentBoard.icon,\r\n breadcrumbs: [{ title: RootConfig.module.title }],\r\n showResourceHeaders: true,\r\n showUnassignedAppointments: true,\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n}\r\n\r\n//#endregion\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n AXPRuntimeModule,\r\n AXMLeaveRequestFeatureModule,\r\n AXMLifecycleEventFeatureModule,\r\n ],\r\n providers: [\r\n // Appointment Board route\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: () => [createAppointmentBoardRoute()],\r\n },\r\n {\r\n provide: AXP_RESOURCE_APPOINTMENT_PROVIDER,\r\n useClass: AXMLeaveRequestResourceAppointmentProvider,\r\n multi: true,\r\n },\r\n // Module-specific providers (not part of manifest system)\r\n\r\n {\r\n provide: AXP_STATUS_PROVIDERS,\r\n useClass: AXMEmployeeStatusProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_STATUS_PROVIDERS,\r\n useClass: AXMPositionAssignmentStatusProvider,\r\n multi: true,\r\n },\r\n // Provider references (now using tokens)\r\n {\r\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\r\n useClass: AXMPermissionDefinitionProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_MENU_PROVIDER,\r\n useClass: AXMMenuProvider,\r\n multi: true,\r\n },\r\n \r\n {\r\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\r\n useClass: AXPHumanCapitalManagementFeatureDefinitionProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXM_ORG_CHART_NODE_CONTRIBUTOR,\r\n useClass: AXMHcmOrgChartNodeContributionProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\r\n useClass: AXMHumanCapitalManagementLifecycleEventExpressionEvaluatorScopeProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\r\n useClass: AXMHumanCapitalManagementLeaveRequestExpressionEvaluatorScopeProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\r\n useClass: AXMHumanCapitalManagementCatalogScopeDefinitionProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: HumanCapitalProfileSectionsHookProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: HumanCapitalProfileDocumentsGroupsHookProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: HumanCapitalUserCardItemsHookProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: HumanCapitalOnboardingStepsHookProvider,\r\n multi: true,\r\n },\r\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\r\n import('./features/profile-page/profile-documents-panel.component.provider').then(\r\n (module) => module.AXMHcmProfileDocumentsPanelComponentProvider,\r\n ),\r\n ),\r\n provideCommandSetups([\r\n {\r\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign,\r\n command: () =>\r\n import('./features/organization-chart/commands/assign-position-assignment.command').then(\r\n (c) => c.AXMAssignPositionAssignmentCommand,\r\n ),\r\n },\r\n {\r\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Revoke,\r\n command: () =>\r\n import('./features/organization-chart/commands/revoke-position-assignment.command').then(\r\n (c) => c.AXMRevokePositionAssignmentByIdCommand,\r\n ),\r\n },\r\n {\r\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo,\r\n command: () =>\r\n import('./features/profile-page/commands/edit-personal-info.command').then(\r\n (c) => c.AXMHcmEditPersonalInfoCommand,\r\n ),\r\n },\r\n {\r\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature,\r\n command: () =>\r\n import('./features/profile-page/commands/edit-signature.command').then(\r\n (c) => c.AXMHcmEditSignatureCommand,\r\n ),\r\n },\r\n ]),\r\n ],\r\n})\r\nexport class AXMHumanCapitalManagementModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["resolveMultiLanguageString"],"mappings":"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"}
@@ -105,6 +105,21 @@ async function factoryEmployee() {
105
105
  name: RootConfig.entities.employee.name,
106
106
  title: RootConfig.entities.employee.title,
107
107
  icon: 'fa-light fa-building',
108
+ searchTags: [
109
+ 'employee',
110
+ 'employees',
111
+ 'staff',
112
+ 'personnel',
113
+ 'hr',
114
+ 'human-resources',
115
+ 'workforce',
116
+ 'organizational-structure',
117
+ 'کارمند',
118
+ 'کارمندان',
119
+ 'منابع انسانی',
120
+ 'پرسنل',
121
+ 'مدیریت منابع انسانی',
122
+ ],
108
123
  formats: {
109
124
  individual: RootConfig.entities.employee.title,
110
125
  plural: RootConfig.entities.employee.titlePlural,
@@ -134,6 +149,7 @@ async function factoryEmployee() {
134
149
  },
135
150
  },
136
151
  { name: 'reports' },
152
+ { name: 'integration-ref', options: { groupId: 'employmentProfile' } },
137
153
  ],
138
154
  relatedEntities: [
139
155
  {