@acorex-platform/module-human-capital-management-client 0.0.30 → 0.0.33

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 (60) hide show
  1. package/fesm2022/{acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DlWna0Lz.mjs → acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs} +7 -7
  2. package/fesm2022/{acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DlWna0Lz.mjs.map → acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs +559 -0
  4. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs +182 -0
  6. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs +374 -0
  8. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs +182 -0
  10. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs +189 -0
  12. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs +307 -0
  14. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs +377 -0
  16. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs.map +1 -0
  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 +109 -0
  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 +1 -0
  19. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-catalog-scope.keys-D8MsCaj5.mjs +5 -0
  20. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-catalog-scope.keys-D8MsCaj5.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-commands.keys-B5rEwAkf.mjs +19 -0
  22. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-commands.keys-B5rEwAkf.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs +459 -0
  24. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs +98 -0
  26. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs +290 -0
  28. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs +96 -0
  30. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs +103 -0
  32. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs +223 -0
  34. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs +277 -0
  36. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.mjs +2 -0
  38. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-personal-info.command-DK947cW5.mjs → acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs} +134 -42
  40. package/fesm2022/acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs.map +1 -0
  41. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-CKrcMxqr.mjs → acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-CKrcMxqr.mjs.map → acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs.map} +1 -1
  43. package/fesm2022/acorex-platform-module-human-capital-management-client-local-entities.mjs +35 -0
  44. package/fesm2022/acorex-platform-module-human-capital-management-client-local-entities.mjs.map +1 -0
  45. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-DrRuKQ6Q.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-DrRuKQ6Q.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-DPH0YiDP.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs} +3 -3
  48. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-DPH0YiDP.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs.map} +1 -1
  49. package/fesm2022/acorex-platform-module-human-capital-management-client.mjs +1 -1
  50. package/package.json +38 -2
  51. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-employee.d.ts +5 -0
  52. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.d.ts +5 -0
  53. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.d.ts +5 -0
  54. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.d.ts +5 -0
  55. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.d.ts +5 -0
  56. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.d.ts +5 -0
  57. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.d.ts +5 -0
  58. package/types/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.d.ts +10 -0
  59. package/types/acorex-platform-module-human-capital-management-client-local-entities.d.ts +12 -0
  60. package/fesm2022/acorex-platform-module-human-capital-management-client-edit-personal-info.command-DK947cW5.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DlWna0Lz.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/manifest.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/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","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Human Capital Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const HumanCapitalManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'human-capital',\n // Module dependencies\n dependencies: [\n 'OrganizationManagement',\n 'PersonCore',\n 'LocationManagement',\n 'DocumentManagement',\n 'AssessmentManagement',\n 'WorkflowManagement',\n 'DataManagement',\n ],\n};\n\n//#endregion\n\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';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\n\nimport {\n PROFILE_PAGE_SECTIONS_HOOK,\n isUserProfileSectionsGroupRequested,\n type AXPUserProfileSection,\n type AXPUserProfileSectionsPayload,\n} from '@acorex-platform/module-auth-client';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHcmProfileContextService } from './profile-context.service';\n\n//#region ---- Helpers ----\n\nconst comingSoon = (messageKey: string) => ({\n name: 'auth:profile-coming-soon',\n options: { messageKey },\n});\n\n//#endregion\n\n//#region ---- Human capital profile sections ----\n\n/** Overrides account identity sections for employees and contributes HR profile sections. */\nexport const HumanCapitalProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 20,\n execute: async (payload) => {\n const requestsRequested = isUserProfileSectionsGroupRequested(payload, 'requests');\n const accountRequested = isUserProfileSectionsGroupRequested(payload, 'account');\n if (!accountRequested && !requestsRequested) {\n return payload;\n }\n\n const profileContextService = inject(AXMHcmProfileContextService);\n const profileContext = accountRequested ? await profileContextService.resolve() : null;\n\n const baseSections = profileContext\n ? payload.sections.filter((section) => section.id !== 'basic-info' && section.id !== 'signature')\n : payload.sections;\n\n const identitySections: AXPUserProfileSection[] = profileContext\n ? [\n {\n id: 'basic-info',\n groupId: 'account',\n title: '@auth:profile-page.sections.basic-info.title',\n description: '@auth:profile-page.sections.basic-info.description',\n icon: 'far fa-address-card',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-basic-info',\n title: '@auth:profile-page.sections.basic-info.actions.edit',\n icon: 'far fa-pen',\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo },\n },\n ],\n },\n {\n id: 'signature',\n groupId: 'account',\n title: '@auth:profile-page.sections.signature.title',\n description: '@auth:profile-page.sections.signature.description',\n icon: 'far fa-signature',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-signature',\n title: '@auth:profile-page.sections.signature.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature },\n },\n ],\n },\n ]\n : [];\n\n const requestSections: AXPUserProfileSection[] = requestsRequested\n ? [\n {\n id: 'my-leave-requests',\n groupId: 'requests',\n title: '@human-capital-management:profile-page.sections.my-leave-requests.title',\n description: '@human-capital-management:profile-page.sections.my-leave-requests.description',\n icon: 'far fa-calendar-days',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-my-leave-requests',\n title: '@human-capital-management:profile-page.sections.my-leave-requests.actions.manage',\n icon: 'far fa-arrow-right',\n command: comingSoon(\n '@human-capital-management:profile-page.commands.view-my-leave-requests.coming-soon',\n ),\n },\n ],\n },\n ]\n : [];\n\n return {\n ...payload,\n sections: [...baseSections, ...identitySections, ...requestSections],\n };\n },\n};\n\n//#endregion\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 -----\n\nimport { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport {\n PROFILE_PAGE_GROUPS_HOOK,\n type AXPUserProfileGroupsPayload,\n} from '@acorex-platform/module-auth-client';\nimport { AXMHcmProfileContextService } from './profile-context.service';\nimport { PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#endregion\n\n//#region ----- Human capital profile documents group -----\n\n/**\n * Adds the Documents profile tab when the session user has a linked Employee.\n * Drive content is fetched when the tab is first opened.\n */\nexport const HumanCapitalProfileDocumentsGroupsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileGroupsPayload,\n AXPUserProfileGroupsPayload\n> = {\n key: PROFILE_PAGE_GROUPS_HOOK,\n priority: 35,\n execute: async (payload) => {\n const profileContext = await inject(AXMHcmProfileContextService).resolve();\n if (!profileContext?.employeeId) {\n return payload;\n }\n\n return {\n ...payload,\n groups: [\n ...payload.groups,\n {\n id: 'documents',\n title: '@human-capital-management:profile-page.groups.documents.title',\n icon: 'far fa-folder-open',\n priority: 35,\n content: {\n mode: 'component',\n componentKey: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,\n },\n },\n ],\n };\n },\n};\n\n//#endregion\n","import { inject, LOCALE_ID } from '@angular/core';\nimport { first } from 'lodash';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n USER_CARD_ITEMS_HOOK,\n type AXPUserCardItemsPayload,\n type AXPUserCardRow,\n} from '@acorex-platform/framework-client/layout/components';\nimport { hasMultiLanguageContent, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXM_POSITION_ASSIGNMENT_STATUS,\n RootConfig,\n type AXMHumanCapitalManagementEmployeeEntityModel,\n type AXMHumanCapitalManagementPositionAssignmentEntityModel,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#region ----- Helpers -----\n\nconst POSITION_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-position';\nconst BUSINESS_UNIT_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-business-unit';\n\nfunction asDisplayTitle(value: unknown, locale: string): string {\n return resolveMultiLanguageString(value, locale).trim();\n}\n\nfunction pickActiveAssignment(\n items: AXMHumanCapitalManagementPositionAssignmentEntityModel[],\n): AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined {\n const active = items.filter((item) => item.statusId === AXM_POSITION_ASSIGNMENT_STATUS.active);\n return active.find((item) => item.isPrimary === true) ?? first(active);\n}\n\nfunction orgRows(positionTitle: string, businessUnitTitle: string): AXPUserCardRow[] {\n const rows: AXPUserCardRow[] = [];\n if (positionTitle && hasMultiLanguageContent(positionTitle)) {\n rows.push({\n id: 'hcm.primary-position',\n label: POSITION_LABEL,\n value: positionTitle,\n priority: 10,\n });\n }\n if (businessUnitTitle && hasMultiLanguageContent(businessUnitTitle)) {\n rows.push({\n id: 'hcm.primary-business-unit',\n label: BUSINESS_UNIT_LABEL,\n value: businessUnitTitle,\n priority: 20,\n });\n }\n return rows;\n}\n\nasync function loadActiveAssignment(\n entityService: AXPEntityService,\n employeeId: string,\n): Promise<AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined> {\n const result = await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data<string, AXMHumanCapitalManagementPositionAssignmentEntityModel>()\n .query({\n skip: 0,\n take: 50,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'statusId', operator: { type: 'equal' }, value: AXM_POSITION_ASSIGNMENT_STATUS.active },\n ],\n },\n });\n\n return pickActiveAssignment(result.items ?? []);\n}\n\n//#endregion\n\n//#region ----- Human capital user-card items -----\n\n/**\n * Contributes the employee's current position and business unit as user-card badges.\n * Prefers the denormalized active primary assignment; falls back to the first active position assignment.\n */\nexport const HumanCapitalUserCardItemsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserCardItemsPayload,\n AXPUserCardItemsPayload\n> = {\n key: USER_CARD_ITEMS_HOOK,\n priority: 20,\n execute: async (payload) => {\n const userId = payload.userId?.trim();\n if (!userId) {\n return payload;\n }\n\n const entityService = inject(AXPEntityService);\n const locale = inject(LOCALE_ID);\n\n try {\n const employeeResult = await 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 if (!employee?.id) {\n return payload;\n }\n\n let positionTitle = asDisplayTitle(employee.activePrimaryPosition?.title, locale);\n let businessUnitTitle = asDisplayTitle(employee.activePrimaryBusinessUnit?.title, locale);\n\n if (!positionTitle || !businessUnitTitle) {\n const assignment = await loadActiveAssignment(entityService, employee.id);\n if (assignment) {\n positionTitle = positionTitle || asDisplayTitle(assignment.position?.title, locale);\n businessUnitTitle = businessUnitTitle || asDisplayTitle(assignment.businessUnit?.title, locale);\n }\n }\n\n const rows = orgRows(positionTitle, businessUnitTitle);\n if (!rows.length) {\n return payload;\n }\n\n return {\n ...payload,\n rows: [...payload.rows, ...rows],\n };\n } catch {\n return payload;\n }\n },\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_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_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\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 { HumanCapitalManagementManifest } from './manifest';\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';\n\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n\n//#region ---- Appointment Board Route ----\n\nfunction createAppointmentBoardRoute(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: `:app/${RootConfig.pages.appointmentBoard.path}/:provider-name`,\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { rootLayout: true },\n loadComponent: () => config.viewers.root(),\n children: [\n {\n path: '',\n loadComponent: () => import('@acorex-platform/module-common-client').then((c) => c.AXPResourceAppointmentPageComponent),\n providers: [\n {\n provide: AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG,\n useValue: {\n pageTitle: RootConfig.pages.appointmentBoard.title,\n pageDescription: '@human-capital-management:leave-requests.menus.appointment-board.description',\n pageIcon: RootConfig.pages.appointmentBoard.icon,\n breadcrumbs: [{ title: RootConfig.module.title }],\n showResourceHeaders: true,\n showUnassignedAppointments: true,\n },\n },\n ],\n },\n ],\n };\n}\n\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n AXPRuntimeModule,\n AXMLeaveRequestFeatureModule,\n AXMLifecycleEventFeatureModule,\n ],\n providers: [\n // Appointment Board route\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => [createAppointmentBoardRoute()],\n },\n {\n provide: AXP_RESOURCE_APPOINTMENT_PROVIDER,\n useClass: AXMLeaveRequestResourceAppointmentProvider,\n multi: true,\n },\n // Module-specific providers (not part of manifest system)\n\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMEmployeeStatusProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMPositionAssignmentStatusProvider,\n multi: true,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: HumanCapitalManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPHumanCapitalManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXM_ORG_CHART_NODE_CONTRIBUTOR,\n useClass: AXMHcmOrgChartNodeContributionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMHumanCapitalManagementLifecycleEventExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMHumanCapitalManagementLeaveRequestExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMHumanCapitalManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalProfileSectionsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalProfileDocumentsGroupsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalUserCardItemsHookProvider,\n multi: true,\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/profile-page/profile-documents-panel.component.provider').then(\n (module) => module.AXMHcmProfileDocumentsPanelComponentProvider,\n ),\n ),\n provideCommandSetups([\n {\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign,\n command: () =>\n import('./features/organization-chart/commands/assign-position-assignment.command').then(\n (c) => c.AXMAssignPositionAssignmentCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Revoke,\n command: () =>\n import('./features/organization-chart/commands/revoke-position-assignment.command').then(\n (c) => c.AXMRevokePositionAssignmentByIdCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo,\n command: () =>\n import('./features/profile-page/commands/edit-personal-info.command').then(\n (c) => c.AXMHcmEditPersonalInfoCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature,\n command: () =>\n import('./features/profile-page/commands/edit-signature.command').then(\n (c) => c.AXMHcmEditSignatureCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMHumanCapitalManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["resolveMultiLanguageString"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.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/manifest.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/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","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Human Capital Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const HumanCapitalManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'human-capital',\n // Module dependencies\n dependencies: [\n 'OrganizationManagement',\n 'PersonCore',\n 'LocationManagement',\n 'DocumentManagement',\n 'AssessmentManagement',\n 'WorkflowManagement',\n 'DataManagement',\n ],\n};\n\n//#endregion\n\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';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\n\nimport {\n PROFILE_PAGE_SECTIONS_HOOK,\n isUserProfileSectionsGroupRequested,\n type AXPUserProfileSection,\n type AXPUserProfileSectionsPayload,\n} from '@acorex-platform/module-auth-client';\nimport { AXPHumanCapitalManagementCommandKeys } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHcmProfileContextService } from './profile-context.service';\n\n//#region ---- Helpers ----\n\nconst comingSoon = (messageKey: string) => ({\n name: 'auth:profile-coming-soon',\n options: { messageKey },\n});\n\n//#endregion\n\n//#region ---- Human capital profile sections ----\n\n/** Overrides account identity sections for employees and contributes HR profile sections. */\nexport const HumanCapitalProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 20,\n execute: async (payload) => {\n const requestsRequested = isUserProfileSectionsGroupRequested(payload, 'requests');\n const accountRequested = isUserProfileSectionsGroupRequested(payload, 'account');\n if (!accountRequested && !requestsRequested) {\n return payload;\n }\n\n const profileContextService = inject(AXMHcmProfileContextService);\n const profileContext = accountRequested ? await profileContextService.resolve() : null;\n\n const baseSections = profileContext\n ? payload.sections.filter((section) => section.id !== 'basic-info' && section.id !== 'signature')\n : payload.sections;\n\n const identitySections: AXPUserProfileSection[] = profileContext\n ? [\n {\n id: 'basic-info',\n groupId: 'account',\n title: '@auth:profile-page.sections.basic-info.title',\n description: '@auth:profile-page.sections.basic-info.description',\n icon: 'far fa-address-card',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-basic-info',\n title: '@auth:profile-page.sections.basic-info.actions.edit',\n icon: 'far fa-pen',\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo },\n },\n ],\n },\n {\n id: 'signature',\n groupId: 'account',\n title: '@auth:profile-page.sections.signature.title',\n description: '@auth:profile-page.sections.signature.description',\n icon: 'far fa-signature',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-signature',\n title: '@auth:profile-page.sections.signature.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature },\n },\n ],\n },\n ]\n : [];\n\n const requestSections: AXPUserProfileSection[] = requestsRequested\n ? [\n {\n id: 'my-leave-requests',\n groupId: 'requests',\n title: '@human-capital-management:profile-page.sections.my-leave-requests.title',\n description: '@human-capital-management:profile-page.sections.my-leave-requests.description',\n icon: 'far fa-calendar-days',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-my-leave-requests',\n title: '@human-capital-management:profile-page.sections.my-leave-requests.actions.manage',\n icon: 'far fa-arrow-right',\n command: comingSoon(\n '@human-capital-management:profile-page.commands.view-my-leave-requests.coming-soon',\n ),\n },\n ],\n },\n ]\n : [];\n\n return {\n ...payload,\n sections: [...baseSections, ...identitySections, ...requestSections],\n };\n },\n};\n\n//#endregion\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 -----\n\nimport { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport {\n PROFILE_PAGE_GROUPS_HOOK,\n type AXPUserProfileGroupsPayload,\n} from '@acorex-platform/module-auth-client';\nimport { AXMHcmProfileContextService } from './profile-context.service';\nimport { PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#endregion\n\n//#region ----- Human capital profile documents group -----\n\n/**\n * Adds the Documents profile tab when the session user has a linked Employee.\n * Drive content is fetched when the tab is first opened.\n */\nexport const HumanCapitalProfileDocumentsGroupsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileGroupsPayload,\n AXPUserProfileGroupsPayload\n> = {\n key: PROFILE_PAGE_GROUPS_HOOK,\n priority: 35,\n execute: async (payload) => {\n const profileContext = await inject(AXMHcmProfileContextService).resolve();\n if (!profileContext?.employeeId) {\n return payload;\n }\n\n return {\n ...payload,\n groups: [\n ...payload.groups,\n {\n id: 'documents',\n title: '@human-capital-management:profile-page.groups.documents.title',\n icon: 'far fa-folder-open',\n priority: 35,\n content: {\n mode: 'component',\n componentKey: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,\n },\n },\n ],\n };\n },\n};\n\n//#endregion\n","import { inject, LOCALE_ID } from '@angular/core';\nimport { first } from 'lodash';\nimport { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n USER_CARD_ITEMS_HOOK,\n type AXPUserCardItemsPayload,\n type AXPUserCardRow,\n} from '@acorex-platform/framework-client/layout/components';\nimport { hasMultiLanguageContent, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXM_POSITION_ASSIGNMENT_STATUS,\n RootConfig,\n type AXMHumanCapitalManagementEmployeeEntityModel,\n type AXMHumanCapitalManagementPositionAssignmentEntityModel,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#region ----- Helpers -----\n\nconst POSITION_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-position';\nconst BUSINESS_UNIT_LABEL = '@human-capital-management:employees.entities.employee.fields.primary-business-unit';\n\nfunction asDisplayTitle(value: unknown, locale: string): string {\n return resolveMultiLanguageString(value, locale).trim();\n}\n\nfunction pickActiveAssignment(\n items: AXMHumanCapitalManagementPositionAssignmentEntityModel[],\n): AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined {\n const active = items.filter((item) => item.statusId === AXM_POSITION_ASSIGNMENT_STATUS.active);\n return active.find((item) => item.isPrimary === true) ?? first(active);\n}\n\nfunction orgRows(positionTitle: string, businessUnitTitle: string): AXPUserCardRow[] {\n const rows: AXPUserCardRow[] = [];\n if (positionTitle && hasMultiLanguageContent(positionTitle)) {\n rows.push({\n id: 'hcm.primary-position',\n label: POSITION_LABEL,\n value: positionTitle,\n priority: 10,\n });\n }\n if (businessUnitTitle && hasMultiLanguageContent(businessUnitTitle)) {\n rows.push({\n id: 'hcm.primary-business-unit',\n label: BUSINESS_UNIT_LABEL,\n value: businessUnitTitle,\n priority: 20,\n });\n }\n return rows;\n}\n\nasync function loadActiveAssignment(\n entityService: AXPEntityService,\n employeeId: string,\n): Promise<AXMHumanCapitalManagementPositionAssignmentEntityModel | undefined> {\n const result = await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data<string, AXMHumanCapitalManagementPositionAssignmentEntityModel>()\n .query({\n skip: 0,\n take: 50,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'statusId', operator: { type: 'equal' }, value: AXM_POSITION_ASSIGNMENT_STATUS.active },\n ],\n },\n });\n\n return pickActiveAssignment(result.items ?? []);\n}\n\n//#endregion\n\n//#region ----- Human capital user-card items -----\n\n/**\n * Contributes the employee's current position and business unit as user-card badges.\n * Prefers the denormalized active primary assignment; falls back to the first active position assignment.\n */\nexport const HumanCapitalUserCardItemsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserCardItemsPayload,\n AXPUserCardItemsPayload\n> = {\n key: USER_CARD_ITEMS_HOOK,\n priority: 20,\n execute: async (payload) => {\n const userId = payload.userId?.trim();\n if (!userId) {\n return payload;\n }\n\n const entityService = inject(AXPEntityService);\n const locale = inject(LOCALE_ID);\n\n try {\n const employeeResult = await 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 if (!employee?.id) {\n return payload;\n }\n\n let positionTitle = asDisplayTitle(employee.activePrimaryPosition?.title, locale);\n let businessUnitTitle = asDisplayTitle(employee.activePrimaryBusinessUnit?.title, locale);\n\n if (!positionTitle || !businessUnitTitle) {\n const assignment = await loadActiveAssignment(entityService, employee.id);\n if (assignment) {\n positionTitle = positionTitle || asDisplayTitle(assignment.position?.title, locale);\n businessUnitTitle = businessUnitTitle || asDisplayTitle(assignment.businessUnit?.title, locale);\n }\n }\n\n const rows = orgRows(positionTitle, businessUnitTitle);\n if (!rows.length) {\n return payload;\n }\n\n return {\n ...payload,\n rows: [...payload.rows, ...rows],\n };\n } catch {\n return payload;\n }\n },\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_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_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\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 { HumanCapitalManagementManifest } from './manifest';\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';\n\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n\n//#region ---- Appointment Board Route ----\n\nfunction createAppointmentBoardRoute(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: `:app/${RootConfig.pages.appointmentBoard.path}/:provider-name`,\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { rootLayout: true },\n loadComponent: () => config.viewers.root(),\n children: [\n {\n path: '',\n loadComponent: () => import('@acorex-platform/module-common-client').then((c) => c.AXPResourceAppointmentPageComponent),\n providers: [\n {\n provide: AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG,\n useValue: {\n pageTitle: RootConfig.pages.appointmentBoard.title,\n pageDescription: '@human-capital-management:leave-requests.menus.appointment-board.description',\n pageIcon: RootConfig.pages.appointmentBoard.icon,\n breadcrumbs: [{ title: RootConfig.module.title }],\n showResourceHeaders: true,\n showUnassignedAppointments: true,\n },\n },\n ],\n },\n ],\n };\n}\n\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n AXPRuntimeModule,\n AXMLeaveRequestFeatureModule,\n AXMLifecycleEventFeatureModule,\n ],\n providers: [\n // Appointment Board route\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => [createAppointmentBoardRoute()],\n },\n {\n provide: AXP_RESOURCE_APPOINTMENT_PROVIDER,\n useClass: AXMLeaveRequestResourceAppointmentProvider,\n multi: true,\n },\n // Module-specific providers (not part of manifest system)\n\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMEmployeeStatusProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMPositionAssignmentStatusProvider,\n multi: true,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: HumanCapitalManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPHumanCapitalManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXM_ORG_CHART_NODE_CONTRIBUTOR,\n useClass: AXMHcmOrgChartNodeContributionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMHumanCapitalManagementLifecycleEventExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMHumanCapitalManagementLeaveRequestExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMHumanCapitalManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalProfileSectionsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalProfileDocumentsGroupsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: HumanCapitalUserCardItemsHookProvider,\n multi: true,\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/profile-page/profile-documents-panel.component.provider').then(\n (module) => module.AXMHcmProfileDocumentsPanelComponentProvider,\n ),\n ),\n provideCommandSetups([\n {\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Assign,\n command: () =>\n import('./features/organization-chart/commands/assign-position-assignment.command').then(\n (c) => c.AXMAssignPositionAssignmentCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.PositionAssignment.Revoke,\n command: () =>\n import('./features/organization-chart/commands/revoke-position-assignment.command').then(\n (c) => c.AXMRevokePositionAssignmentByIdCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditPersonalInfo,\n command: () =>\n import('./features/profile-page/commands/edit-personal-info.command').then(\n (c) => c.AXMHcmEditPersonalInfoCommand,\n ),\n },\n {\n key: AXPHumanCapitalManagementCommandKeys.Profile.EditSignature,\n command: () =>\n import('./features/profile-page/commands/edit-signature.command').then(\n (c) => c.AXMHcmEditSignatureCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMHumanCapitalManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["resolveMultiLanguageString"],"mappings":"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"}