@acorex/modules 21.0.0-next.63 → 21.0.0-next.64

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 (78) hide show
  1. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-DqmJVJ0z.mjs} +22 -37
  2. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DqmJVJ0z.mjs.map +1 -0
  3. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs → acorex-modules-assessment-management-assessment-case.entity-DhVwPz0T.mjs} +8 -7
  4. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-DhVwPz0T.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs → acorex-modules-assessment-management-assessment-session.entity-BvV2Qgw1.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs.map → acorex-modules-assessment-management-assessment-session.entity-BvV2Qgw1.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs → acorex-modules-assessment-management-fill-assessment-session.command-4fkaeAG-.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-4fkaeAG-.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs → acorex-modules-assessment-management-preview-question.command-6IGOdVVZ.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs.map → acorex-modules-assessment-management-preview-question.command-6IGOdVVZ.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs → acorex-modules-assessment-management-preview-questionnaire.command-CRDBe_BS.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-CRDBe_BS.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-B2ES-zcL.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-B2ES-zcL.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs → acorex-modules-assessment-management-question-bank-item.entity-Cw2WCdYK.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-Cw2WCdYK.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-D9I3S-ZT.mjs} +120 -7
  18. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-D9I3S-ZT.mjs.map +1 -0
  19. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs → acorex-modules-assessment-management-questionnaire.entity-D9nHUmQB.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs.map → acorex-modules-assessment-management-questionnaire.entity-D9nHUmQB.mjs.map} +1 -1
  21. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-BOeO3Dit.mjs +350 -0
  22. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-BOeO3Dit.mjs.map +1 -0
  23. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  24. package/fesm2022/acorex-modules-common.mjs +0 -8
  25. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  26. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-uRz1c5Km.mjs} +20 -20
  27. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-uRz1c5Km.mjs.map} +1 -1
  28. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs → acorex-modules-human-capital-management-approve-leave-request.command-23klKnTy.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-23klKnTy.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BJ8xUiR2.mjs} +2 -2
  31. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BJ8xUiR2.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-B3u1gXWI.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-B3u1gXWI.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs → acorex-modules-human-capital-management-employee.entity-uhwOOw_y.mjs} +11 -3
  35. package/fesm2022/acorex-modules-human-capital-management-employee.entity-uhwOOw_y.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs → acorex-modules-human-capital-management-employment-type.entity-BQe82rsr.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs.map → acorex-modules-human-capital-management-employment-type.entity-BQe82rsr.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs → acorex-modules-human-capital-management-leave-request.entity-CE4hs4C8.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs.map → acorex-modules-human-capital-management-leave-request.entity-CE4hs4C8.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs → acorex-modules-human-capital-management-leave-type.entity-DJ4EEUKg.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs.map → acorex-modules-human-capital-management-leave-type.entity-DJ4EEUKg.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-CB2hlyOP.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs.map → acorex-modules-human-capital-management-lifecycle-event-type.entity-CB2hlyOP.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-DWonFZpU.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs.map → acorex-modules-human-capital-management-lifecycle-event.entity-DWonFZpU.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs → acorex-modules-human-capital-management-position-assignment.entity-o8PjggiT.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-o8PjggiT.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs → acorex-modules-human-capital-management-reject-leave-request.command-B6sr7oey.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-B6sr7oey.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-aH7qTRnr.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-aH7qTRnr.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B-VsXS4c.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs.map → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B-VsXS4c.mjs.map} +1 -1
  54. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  55. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  56. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  57. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs → acorex-modules-task-management-acorex-modules-task-management-DAh3IByo.mjs} +37 -19
  58. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-DAh3IByo.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs → acorex-modules-task-management-task-board.page-C2hB9JPM.mjs} +21 -12
  60. package/fesm2022/acorex-modules-task-management-task-board.page-C2hB9JPM.mjs.map +1 -0
  61. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  62. package/package.json +2 -2
  63. package/types/acorex-modules-assessment-management.d.ts +8 -0
  64. package/types/acorex-modules-task-management.d.ts +14 -1
  65. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs.map +0 -1
  66. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs.map +0 -1
  67. package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs +0 -47
  68. package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs.map +0 -1
  69. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs.map +0 -1
  70. package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs +0 -157
  71. package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs.map +0 -1
  72. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs +0 -172
  73. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs.map +0 -1
  74. package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs +0 -239
  75. package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs.map +0 -1
  76. package/fesm2022/acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs.map +0 -1
  77. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs.map +0 -1
  78. package/fesm2022/acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-task-management-task-board.page-C2hB9JPM.mjs","sources":["../../../../libs/modules/task-management/src/lib/features/task-board/task-board.viewmodel.ts","../../../../libs/modules/task-management/src/lib/features/task-board/task-board-detail-panel/task-board-detail-panel.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/task-board-detail-panel/task-board-detail-panel.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/task-board-filters/task-board-filters.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/task-board-filters/task-board-filters.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/task-board-menu.definition.ts","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-grid-view/task-board-grid-view.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-grid-view/task-board-grid-view.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-kanban-view/task-board-kanban-view.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-kanban-view/task-board-kanban-view.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component.ts","../../../../libs/modules/task-management/src/lib/features/task-board/views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component.html","../../../../libs/modules/task-management/src/lib/features/task-board/task-board.page.ts","../../../../libs/modules/task-management/src/lib/features/task-board/task-board.page.html"],"sourcesContent":["import { AXSchedulerView } from '@acorex/components/scheduler';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMTaskBoardSettings } from './settings.keys';\nimport { AXM_TASK_BOARD_ALL_VIEW_MODE_IDS, normalizeVisibleTaskBoardModesByParts } from './task-board-view-mode-ids';\nimport { canViewAllTaskAssignees, hasTaskBoardSavedAssigneePreference, normalizeTaskBoardAssigneeIds, resolveTaskBoardSavedAssigneeIds } from './task-board-assignee-access';\nimport { AXPTaskBoardService } from './task-board.service';\nimport { AXPTask, AXPWorkflowTaskProvider } from './task-board.types';\n\ntype AXPTaskPriority = NonNullable<AXPTask['priority']>;\nexport type AXPPriorityFilterKey = AXPTaskPriority | 'no_priority';\nexport type AXPTaskBoardViewMode = AXSchedulerView | 'kanban' | 'grid' | 'status-grouped-grid';\n\ntype AXPTaskBoardState = {\n daysCount: number;\n currentDate: Date;\n isLoading: boolean;\n detailPanel: boolean;\n rangeStartDate: Date | null;\n selectedTask: AXPTask | null;\n selectedTaskTypeNames: string[];\n taskTypes: AXPWorkflowTaskProvider[];\n currentViewMode: AXPTaskBoardViewMode;\n /** Modes the user may select (from settings). */\n visibleViewModes: AXPTaskBoardViewMode[];\n selectedPriorities: AXPPriorityFilterKey[];\n selectedAssigneeIds: (string | number)[];\n /** False until the user (or persisted settings) sets assignee ids explicitly. */\n assigneeFilterHasSavedPreference: boolean;\n selectedReporterIds: (string | number)[];\n selectedCalendarEventTypeIds: string[];\n};\n\nexport const AXMTaskBoardViewModel = signalStore(\n { providedIn: 'root' },\n withState<AXPTaskBoardState>(() => ({\n daysCount: 7,\n taskTypes: [],\n isLoading: true,\n detailPanel: false,\n selectedTask: null,\n rangeStartDate: null,\n currentDate: new Date(),\n currentViewMode: 'month',\n visibleViewModes: [...AXM_TASK_BOARD_ALL_VIEW_MODE_IDS] as AXPTaskBoardViewMode[],\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n assigneeFilterHasSavedPreference: false,\n selectedPriorities: [],\n selectedReporterIds: [],\n selectedCalendarEventTypeIds: [],\n })),\n\n withComputed((store) => ({\n selectedTaskTypes: computed(() => {\n const names = store.selectedTaskTypeNames();\n if (!names || names.length === 0) {\n return [];\n }\n return store.taskTypes().filter((tt) => names.includes(tt.name));\n }),\n isTaskSelected: computed(() => store.selectedTask() !== null),\n isDetailPanelOpen: computed(() => store.detailPanel()),\n endDate: computed(() => {\n const currentDate = store.currentDate();\n const daysCount = store.daysCount();\n // Calculate end of the last day in the range (23:59:59.999)\n const endDate = new Date(currentDate);\n endDate.setDate(endDate.getDate() + daysCount - 1);\n endDate.setHours(23, 59, 59, 999);\n return endDate;\n }),\n activeFilterCount: computed(() => {\n let count = 0;\n if (\n store.currentViewMode() !== 'kanban' &&\n store.currentViewMode() !== 'status-grouped-grid' &&\n store.selectedTaskTypeNames().length > 0\n ) {\n count++;\n }\n if (store.selectedAssigneeIds().length > 0) {\n count++;\n }\n if (store.selectedReporterIds().length > 0) {\n count++;\n }\n if (store.selectedPriorities().length > 0) {\n count++;\n }\n return count;\n }),\n })),\n\n withMethods(\n (\n store,\n settingsService = inject(AXPSettingsService),\n taskBoardService = inject(AXPTaskBoardService),\n sessionService = inject(AXPSessionService),\n ) => {\n const userScopedSettings = () => settingsService.scope(AXPPlatformScope.User);\n\n return {\n async initialize() {\n patchState(store, { isLoading: true });\n try {\n const taskTypes = await taskBoardService.getTaskTypes();\n patchState(store, { taskTypes });\n\n const [\n savedDaysCount,\n savedDateString,\n savedDetailPanel,\n savedViewMode,\n savedVisibleCalendarModes,\n savedVisibleTimelineModes,\n savedVisibleTableModes,\n savedVisibleKanbanModes,\n savedTaskTypeNames,\n savedAssigneeIds,\n savedReporterIds,\n savedPriorities,\n savedCalendarEventTypeIds,\n ] = await Promise.all([\n userScopedSettings().get<number | undefined>(AXMTaskBoardSettings.DaysCount),\n userScopedSettings().get<string | undefined>(AXMTaskBoardSettings.CurrentDate),\n userScopedSettings().get<boolean | undefined>(AXMTaskBoardSettings.DetailPanel),\n userScopedSettings().get<AXPTaskBoardViewMode | undefined>(AXMTaskBoardSettings.ViewMode),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.VisibleCalendarModes),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.VisibleTimelineModes),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.VisibleTableModes),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.VisibleKanbanModes),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.SelectedTaskTypeNames),\n userScopedSettings().get<(string | number)[] | undefined>(AXMTaskBoardSettings.SelectedAssigneeIds),\n userScopedSettings().get<(string | number)[] | undefined>(AXMTaskBoardSettings.SelectedReporterIds),\n userScopedSettings().get<AXPPriorityFilterKey[] | undefined>(AXMTaskBoardSettings.SelectedPriorities),\n userScopedSettings().get<string[] | undefined>(AXMTaskBoardSettings.SelectedCalendarEventTypeIds),\n ]);\n\n const visibleViewModes = normalizeVisibleTaskBoardModesByParts({\n calendar: savedVisibleCalendarModes,\n timeline: savedVisibleTimelineModes,\n table: savedVisibleTableModes,\n kanban: savedVisibleKanbanModes,\n }) as AXPTaskBoardViewMode[];\n\n // Ensure currentDate is always a valid Date\n let currentDate: Date;\n if (savedDateString) {\n const parsedDate = new Date(savedDateString);\n currentDate = isNaN(parsedDate.getTime()) ? new Date() : parsedDate;\n } else {\n currentDate = new Date();\n }\n\n const canViewAll = canViewAllTaskAssignees(sessionService);\n const assigneeFilterHasSavedPreference = hasTaskBoardSavedAssigneePreference(savedAssigneeIds);\n const resolvedSavedAssigneeIds = resolveTaskBoardSavedAssigneeIds(sessionService, savedAssigneeIds);\n const defaultAssigneeIds = canViewAll\n ? resolvedSavedAssigneeIds\n : normalizeTaskBoardAssigneeIds(sessionService, resolvedSavedAssigneeIds);\n\n let effectiveViewMode: AXPTaskBoardViewMode = savedViewMode || 'month';\n if (!visibleViewModes.includes(effectiveViewMode)) {\n effectiveViewMode = visibleViewModes[0] ?? 'month';\n }\n\n if (savedViewMode != null && !visibleViewModes.includes(savedViewMode)) {\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, effectiveViewMode)\n .catch((error) => console.error('Error aligning task board view mode with visible views:', error));\n }\n\n patchState(store, {\n daysCount: savedDaysCount || 7,\n detailPanel: savedDetailPanel || false,\n currentViewMode: effectiveViewMode,\n visibleViewModes,\n currentDate,\n selectedTaskTypeNames: savedTaskTypeNames || [],\n selectedAssigneeIds: defaultAssigneeIds,\n assigneeFilterHasSavedPreference,\n selectedReporterIds: savedReporterIds || [],\n selectedPriorities: savedPriorities || [],\n selectedCalendarEventTypeIds: savedCalendarEventTypeIds || [],\n isLoading: false,\n });\n } catch (error) {\n console.error('Error initializing TaskBoard ViewModel:', error);\n patchState(store, {\n detailPanel: false,\n currentViewMode: 'month',\n visibleViewModes: [...AXM_TASK_BOARD_ALL_VIEW_MODE_IDS] as AXPTaskBoardViewMode[],\n currentDate: new Date(),\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n assigneeFilterHasSavedPreference: false,\n selectedPriorities: [],\n selectedReporterIds: [],\n selectedCalendarEventTypeIds: [],\n taskTypes: store.taskTypes(),\n isLoading: false,\n });\n }\n },\n\n setViewMode(mode: AXPTaskBoardViewMode) {\n const allowed = store.visibleViewModes();\n const effectiveMode = allowed.includes(mode) ? mode : (allowed[0] ?? mode);\n\n if (\n (effectiveMode === 'kanban' || effectiveMode === 'status-grouped-grid') &&\n store.selectedTaskTypeNames().length === 0\n ) {\n const firstTaskType = store.taskTypes()[0];\n if (firstTaskType) {\n this.setSelectedTaskTypeNames([firstTaskType.name]);\n }\n }\n if (\n (effectiveMode === 'kanban' || effectiveMode === 'status-grouped-grid') &&\n store.selectedTaskTypeNames().length > 1\n ) {\n this.setSelectedTaskTypeNames([store.selectedTaskTypeNames()[0]]);\n }\n patchState(store, { currentViewMode: effectiveMode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, effectiveMode)\n .catch((error) => console.error('Error saving calendar view mode:', error));\n },\n\n setCurrentDate(date: Date) {\n patchState(store, { currentDate: new Date(date) });\n userScopedSettings()\n .set(AXMTaskBoardSettings.CurrentDate, date.toISOString())\n .catch((error) => console.error('Error saving current date:', error));\n },\n\n setSelectedTaskTypeNames(taskTypeNames: string[], isQueryParam: boolean = false) {\n patchState(store, { selectedTaskTypeNames: taskTypeNames });\n if (isQueryParam) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedTaskTypeNames, taskTypeNames)\n .catch((error) => console.error('Error saving selected task type filter:', error));\n },\n\n setSelectedAssigneeIds(\n assigneeIds: (string | number)[],\n isQueryParam: boolean = false,\n persistPreference: boolean = !isQueryParam,\n ) {\n const normalizedAssigneeIds = normalizeTaskBoardAssigneeIds(sessionService, assigneeIds);\n patchState(store, {\n selectedAssigneeIds: normalizedAssigneeIds,\n ...(persistPreference ? { assigneeFilterHasSavedPreference: true } : {}),\n });\n if (isQueryParam || !persistPreference) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedAssigneeIds, normalizedAssigneeIds)\n .catch((error) => console.error('Error saving selected assignee filter:', error));\n },\n\n setSelectedReporterIds(reporterIds: (string | number)[], isQueryParam: boolean = false) {\n patchState(store, { selectedReporterIds: reporterIds });\n if (isQueryParam) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedReporterIds, reporterIds)\n .catch((error) => console.error('Error saving selected reporter filter:', error));\n },\n\n setSelectedPriorities(priorities: AXPPriorityFilterKey[], isQueryParam: boolean = false) {\n patchState(store, { selectedPriorities: priorities });\n if (isQueryParam) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedPriorities, priorities)\n .catch((error) => console.error('Error saving selected priority filter:', error));\n },\n\n setSelectedCalendarEventTypeIds(eventTypeIds: string[], isQueryParam: boolean = false) {\n patchState(store, { selectedCalendarEventTypeIds: eventTypeIds });\n if (isQueryParam) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedCalendarEventTypeIds, eventTypeIds)\n .catch((error) => console.error('Error saving selected calendar event type filter:', error));\n },\n\n /**\n * Sets the currently selected task. Pass `null` to clear the selection.\n * @param task The task to select, or null.\n */\n selectTask(task: AXPTask | null) {\n patchState(store, { selectedTask: task });\n },\n\n /**\n * A convenience method to clear the currently selected task.\n */\n clearSelectedTask() {\n patchState(store, { selectedTask: null });\n },\n\n openDetailPanel() {\n patchState(store, { detailPanel: true });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, true)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n\n closeDetailPanel() {\n patchState(store, { detailPanel: false });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, false)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n\n toggleDetailPanel() {\n const detailPanel = !store.detailPanel();\n patchState(store, { detailPanel: detailPanel });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, detailPanel)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n\n async getStatusName(key: any, provider: string): Promise<string | null> {\n return taskBoardService.getStatusName(key, provider);\n },\n\n /**\n * Sets the start date for a new range selection.\n * Pass `null` to clear the selection.\n * @param date The start date of the range.\n */\n setRangeStartDate(date: Date | null) {\n patchState(store, { rangeStartDate: date });\n },\n\n setDaysCount(days: number) {\n const count = Math.max(1, days);\n patchState(store, { daysCount: count });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DaysCount, count)\n .catch((error) => console.error('Error saving days count:', error));\n },\n };\n },\n ),\n);\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { RootConfig } from '../../../const';\nimport { AXPTaskBoardService } from '../task-board.service';\nimport { AXPExtraField } from '../task-board.types';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\n\n@Component({\n selector: 'axm-task-board-detail-panel',\n templateUrl: './task-board-detail-panel.component.html',\n styleUrls: ['./task-board-detail-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AsyncPipe,\n AXFormatPipe,\n AXTranslatorPipe,\n AXButtonComponent,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXDecoratorIconComponent,\n ],\n})\nexport class AXMTaskBoardDetailPanel {\n protected readonly rootConfig = RootConfig;\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly localeService = inject(AXLocaleService);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n\n protected statusName = signal<string>('');\n protected extraFields = signal<AXPExtraField[]>([]);\n\n #selectedTaskChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const key = selectedTask?.status.id;\n const provider = selectedTask?.provider;\n if (!provider) return;\n const name = await this.vm.getStatusName(key, provider);\n if (name) this.statusName.set(name);\n });\n\n #selectedTaskTypeChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const selectedTaskType = this.taskBoardService.getProvider(selectedTask?.provider);\n const extraFields = await selectedTaskType?.getExtraFields();\n if (!extraFields) {\n this.extraFields.set([]);\n return;\n }\n this.extraFields.set(extraFields);\n });\n\n protected capitalizeFirstLetter(text: string) {\n return String(text).charAt(0).toUpperCase() + String(text).slice(1);\n }\n}\n","@if (vm.isTaskSelected()) {\n @let nodeInfo = vm.selectedTask();\n <div class=\"__header\">\n <div class=\"__title\">\n <span>{{ nodeInfo?.title }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n\n <div class=\"__content\">\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ '@task-management:task-board.detail-panel.title' | translate | async }}</span>\n </div>\n <div class=\"__content\">\n @if (nodeInfo?.description) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ '@task-management:task-board.detail-panel.description' | translate | async }}\n </span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.description }}</div>\n </div>\n }\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ '@task-management:task-board.detail-panel.start-date' | translate | async }}\n </span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.startDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ '@task-management:task-board.detail-panel.end-date' | translate | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.endDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ '@task-management:task-board.detail-panel.reporter' | translate | async }}</span>\n </div>\n <div class=\"__content\">\n {{ nodeInfo?.reporter?.fullName }}\n </div>\n </div>\n @if (nodeInfo?.assignee) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ '@task-management:task-board.detail-panel.assignee' | translate | async }}</span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.assignee?.fullName }}</div>\n </div>\n }\n @if (statusName()) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ '@task-management:task-board.detail-panel.status' | translate | async }}</span>\n </div>\n <div class=\"__content\">{{ statusName() }}</div>\n </div>\n }\n @if (nodeInfo?.priority) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ '@task-management:task-board.detail-panel.priority' | translate | async }}\n </span>\n </div>\n <div class=\"__content\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\n </div>\n }\n @if (extraFields() && extraFields().length) {\n <div class=\"__row\">\n <axp-widgets-container [context]=\"nodeInfo\">\n @for (extraField of extraFields(); track extraField) {\n <div class=\"__title\">\n <span>\n {{ extraField.title | translate | async }}\n </span>\n </div>\n <div class=\"__content\">\n <ng-container axp-widget-renderer [node]=\"extraField.widget\" [mode]=\"'view'\"> </ng-container>\n </div>\n }\n </axp-widgets-container>\n </div>\n }\n </div>\n </div>\n </div>\n} @else {\n <div class=\"__header\">\n <div class=\"__title\">\n <span>\n {{ '@task-management:task-board.detail-panel.title' | translate | async }}\n </span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n\n <div class=\"__content ax-flex ax-items-center ax-justify-center\">\n <axp-state-message\n icon=\"fa-light fa-clipboard-list-check\"\n [title]=\"'@task-management:task-board.detail-panel.no-task-selected.title'\"\n [description]=\"'@task-management:task-board.detail-panel.no-task-selected.description'\"\n >\n </axp-state-message>\n </div>\n}\n","import { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPContextChangeEvent } from '@acorex/platform/core';\nimport { AXPWidgetCoreModule, AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isEqual, sortBy } from 'lodash-es';\nimport { RootConfig } from '../../../const';\nimport { canViewAllTaskAssignees, normalizeTaskBoardAssigneeIds, resolveTaskBoardSavedAssigneeIds } from '../task-board-assignee-access';\nimport { AXMTaskBoardViewModel, AXPPriorityFilterKey } from '../task-board.viewmodel';\n\ntype TaskType = { name: string; title: string };\ntype Assignee = { id: string | number; [key: string]: any };\ntype Reporter = { id: string | number; [key: string]: any };\ntype Priority = { name: AXPPriorityFilterKey; [key: string]: any };\n\n@Component({\n selector: 'axm-task-board-filters',\n templateUrl: './task-board-filters.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXFormFieldComponent,\n AXPWidgetCoreModule,\n AXFormComponent,\n AXLabelComponent,\n AXTranslatorPipe,\n ],\n})\nexport class AXMTaskBoardFiltersComponent {\n protected readonly rootConfig = RootConfig;\n\n private readonly vm = inject(AXMTaskBoardViewModel);\n private readonly sessionService = inject(AXPSessionService);\n\n /** Tracks session user/permissions so assignee filter options react to login changes. */\n private readonly sessionUser = toSignal(this.sessionService.user$, { initialValue: null });\n private readonly sessionPermissions = toSignal(this.sessionService.permissions$, { initialValue: [] as string[] });\n\n isQueryParam = input<boolean>(false);\n\n applyClicked = output<void>();\n\n protected context = signal<{ options?: any }>({});\n private isInitialized = false;\n\n #init = effect(() => {\n const isLoading = this.vm.isLoading();\n if (!isLoading && !this.isInitialized) {\n this.resetContextToViewModel();\n this.isInitialized = true;\n }\n });\n\n /** Re-scope assignee filter when user or permissions change (e.g. after switching accounts). */\n #assigneeScope = effect(() => {\n this.sessionUser();\n this.sessionPermissions();\n\n if (this.vm.isLoading()) {\n return;\n }\n\n const resolvedAssigneeIds = this.vm.assigneeFilterHasSavedPreference()\n ? this.vm.selectedAssigneeIds()\n : resolveTaskBoardSavedAssigneeIds(this.sessionService, null);\n const scopedIds = normalizeTaskBoardAssigneeIds(this.sessionService, resolvedAssigneeIds);\n if (!isEqual(sortBy(this.vm.selectedAssigneeIds()), sortBy(scopedIds))) {\n this.vm.setSelectedAssigneeIds(scopedIds, this.isQueryParam(), false);\n }\n\n if (this.isInitialized) {\n this.resetContextToViewModel();\n }\n });\n\n private readonly VALID_PRIORITIES: { title: string; name: AXPPriorityFilterKey }[] = [\n { title: 'Highest', name: 'highest' },\n { title: 'High', name: 'high' },\n { title: 'Medium', name: 'medium' },\n { title: 'Low', name: 'low' },\n { title: 'Lowest', name: 'lowest' },\n { title: 'No Priority', name: 'no_priority' },\n ];\n\n public resetContextToViewModel(): void {\n const vmTaskTypeNames = this.vm.selectedTaskTypeNames();\n const vmAssigneeIds = this.vm.selectedAssigneeIds();\n const vmReporterIds = this.vm.selectedReporterIds();\n const vmPriorities = this.vm.selectedPriorities();\n const currentViewIsMulti = this.isMultiSelectEnabled();\n\n const taskTypeContextValue = currentViewIsMulti\n ? vmTaskTypeNames\n : vmTaskTypeNames.length > 0\n ? vmTaskTypeNames[0]\n : null;\n\n this.context.set({\n options: {\n priority: vmPriorities,\n assignee: vmAssigneeIds,\n reporter: vmReporterIds,\n taskType: taskTypeContextValue,\n },\n });\n }\n\n private readonly isMultiSelectEnabled = computed<boolean>(() => {\n const viewMode = this.vm.currentViewMode();\n return viewMode !== 'kanban' && viewMode !== 'status-grouped-grid';\n });\n\n private readonly canFilterByAllAssignees = computed(() => {\n this.sessionUser();\n this.sessionPermissions();\n return canViewAllTaskAssignees(this.sessionService);\n });\n\n protected nodes = computed<AXPWidgetNode[]>(() => {\n const canFilterByAllAssignees = this.canFilterByAllAssignees();\n const assigneeScopeKey = `${this.sessionUser()?.id ?? ''}:${canFilterByAllAssignees}`;\n\n return [\n {\n name: 'taskType',\n path: 'options.taskType',\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: 'task-types',\n placeholder: 'Select Task Type',\n multiple: this.isMultiSelectEnabled(),\n allowClear: this.isMultiSelectEnabled(),\n },\n meta: {\n title: 'task-board.filter.task-type',\n },\n },\n {\n name: 'assignee',\n path: 'options.assignee',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: canFilterByAllAssignees,\n allowClear: canFilterByAllAssignees,\n readonly: !canFilterByAllAssignees,\n dataSource: 'task-board-assignees',\n assigneeScopeKey,\n textField: 'displayName',\n placeholder: 'Select Assignee',\n },\n meta: {\n title: 'task-board.filter.assignee',\n },\n },\n {\n name: 'reporter',\n path: 'options.reporter',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: true,\n dataSource: 'users',\n textField: 'displayName',\n placeholder: 'Select Reporter',\n },\n meta: {\n title: 'task-board.filter.reporter',\n },\n },\n {\n name: 'priority',\n path: 'options.priority',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'name',\n textField: 'title',\n direction: 'horizontal',\n placeholder: 'Select Priority',\n dataSource: this.VALID_PRIORITIES,\n },\n meta: {\n title: 'task-board.filter.priority',\n },\n },\n ];\n });\n\n protected handleContextChanged(e: AXPContextChangeEvent) {\n this.context.set(e.data);\n this.handleApply();\n }\n\n protected handleApply() {\n this.syncTaskTypesToViewModel(this.context()?.options?.taskType);\n this.syncAssigneesToViewModel(this.context()?.options?.assignee);\n this.syncReportersToViewModel(this.context()?.options?.reporter);\n this.syncPrioritiesToViewModel(this.context()?.options?.priority);\n this.applyClicked.emit();\n }\n\n private syncTaskTypesToViewModel(selectedValue: TaskType | TaskType[] | string | string[] | null | undefined) {\n let newNames: string[] = [];\n if (Array.isArray(selectedValue)) {\n newNames = selectedValue.filter((v) => v != null).map((t) => (typeof t === 'string' ? t : t.name));\n } else if (selectedValue) {\n newNames = [typeof selectedValue === 'string' ? selectedValue : selectedValue.name];\n }\n const currentNames = this.vm.selectedTaskTypeNames();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedTaskTypeNames(newNames, this.isQueryParam());\n }\n }\n\n private syncAssigneesToViewModel(selectedAssignees: Assignee[] | (string | number)[] | null | undefined) {\n let newIds: (string | number)[] = [];\n if (Array.isArray(selectedAssignees)) {\n newIds = selectedAssignees\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedAssigneeIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedAssigneeIds(newIds, this.isQueryParam());\n }\n }\n\n private syncReportersToViewModel(selectedReporters: Reporter[] | (string | number)[] | null | undefined) {\n let newIds: (string | number)[] = [];\n if (Array.isArray(selectedReporters)) {\n newIds = selectedReporters\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedReporterIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedReporterIds(newIds, this.isQueryParam());\n }\n }\n\n private syncPrioritiesToViewModel(selectedPriorities: Priority[] | string[] | null | undefined) {\n let newNames: AXPPriorityFilterKey[] = [];\n if (Array.isArray(selectedPriorities)) {\n newNames = selectedPriorities\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' ? (t as AXPPriorityFilterKey) : t.name));\n }\n const currentNames = this.vm.selectedPriorities();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedPriorities(newNames, this.isQueryParam());\n }\n }\n\n protected handleReset() {\n if (this.vm.currentViewMode() === 'kanban' || this.vm.currentViewMode() === 'status-grouped-grid') {\n const currentOptions = this.context();\n this.context.set({\n options: {\n taskType: currentOptions?.options?.taskType,\n },\n });\n return;\n }\n this.context.set({});\n }\n}\n","<div class=\"ax-px-4 ax-py-3 ax-flex ax-flex-col ax-gap-2 ax-sm ax-w-[20rem]\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- @if (taskTypeItems()) {\n <ax-form-field>\n <ax-label> </ax-label>\n <ax-selection-list\n [items]=\"taskTypeItems()!\"\n [ngModel]=\"selectedTaskTypeValues()!\"\n (onValueChanged)=\"handleTaskTypeSelectionChange.emit($event.value)\"\n direction=\"vertical\"\n [multiple]=\"multiple()\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n >\n <ng-template #itemTemplate let-item>\n <div class=\"ax-flex ax-items-center\">\n @if (item.icon) {\n <i [class]=\"item.icon\"></i>\n }\n <span [class]=\"item.icon ? 'ax-ml-2' : ''\">{{ item.text }}</span>\n </div>\n </ng-template>\n </ax-selection-list>\n <ax-select-box\n [dataSource]=\"taskTypeItems()!\"\n [ngModel]=\"selectedTaskTypeValues()!\"\n (onValueChanged)=\"handleTaskTypeSelectionChange.emit($event.value)\"\n [multiple]=\"multiple()\"\n valueField=\"id\"\n textField=\"text\"\n >\n </ax-select-box>\n </ax-form-field>\n <hr />\n } -->\n @for (node of nodes(); track node.name) {\n <ax-form-field>\n @if (node.meta?.['title']) {\n <ax-label>\n {{ node.meta?.['title'] | translate: { scope: rootConfig.config.i18n } | async }}\n </ax-label>\n }\n <ng-container axp-widget-renderer [node]=\"node\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n }\n </div>\n <!-- <div class=\"ax-flex ax-gap-2 ax-mt-6 ax-mb-1\">\n <ax-button\n (onClick)=\"handleReset()\"\n class=\"ax-w-full\"\n [text]=\"'@general:actions.clear.title' | translate | async\"\n ></ax-button>\n <ax-button\n color=\"primary\"\n [type]=\"'submit'\"\n (onClick)=\"handleApply()\"\n class=\"ax-w-full\"\n [text]=\"'@general:actions.apply.title' | translate | async\"\n ></ax-button>\n </div> -->\n </ax-form>\n </axp-widgets-container>\n</div>\n","//#region ---- Imports ----\n\nimport type { AXPTaskBoardViewMode } from './task-board.viewmodel';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXPTaskBoardViewCategory = 'calendar' | 'timeline' | 'table' | 'kanban';\n\nexport type AXMTaskBoardMenuCategoryItem = {\n key: AXPTaskBoardViewCategory;\n text: string;\n icon: string;\n children?: { key: AXPTaskBoardViewMode; text: string; icon: string }[];\n};\n\n//#endregion\n\n//#region ---- Menu Definition ----\n\n/** Default task board view selector structure (filtered by user preference for visible modes). */\nexport const AXM_TASK_BOARD_MENU_ITEMS: readonly AXMTaskBoardMenuCategoryItem[] = [\n {\n key: 'calendar',\n text: 'calendar',\n icon: 'fa-light fa-calendar-day',\n children: [\n { key: 'day', text: 'daily', icon: 'fa-light fa-calendar-day' },\n { key: 'week', text: 'weekly', icon: 'fa-light fa-calendar-week' },\n { key: 'month', text: 'monthly', icon: 'fa-light fa-calendar-alt' },\n { key: 'agenda', text: 'agenda', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'timeline',\n text: 'timeline',\n icon: 'fa-light fa-list-timeline',\n children: [\n { key: 'timeline-day', text: 'daily-timeline', icon: 'fa-light fa-calendar-day' },\n { key: 'timeline-weekly', text: 'weekly-timeline', icon: 'fa-light fa-calendar-week' },\n { key: 'timeline-month', text: 'monthly-timeline', icon: 'fa-light fa-calendar-alt' },\n { key: 'timeline-year', text: 'yearly-timeline', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'table',\n text: 'table',\n icon: 'fa-light fa-table',\n children: [\n { key: 'grid', text: 'grid', icon: 'fa-light fa-table' },\n { key: 'status-grouped-grid', text: 'status-grouped-grid', icon: 'fa-light fa-table' },\n ],\n },\n { key: 'kanban', text: 'kanban', icon: 'fa-light fa-chart-kanban' },\n];\n\n/**\n * Returns menu branches that contain at least one allowed leaf mode.\n */\nexport function filterTaskBoardMenuByAllowedModes(\n items: readonly AXMTaskBoardMenuCategoryItem[],\n allowed: ReadonlySet<string>,\n): AXMTaskBoardMenuCategoryItem[] {\n const result: AXMTaskBoardMenuCategoryItem[] = [];\n\n for (const category of items) {\n if (!category.children) {\n if (allowed.has(category.key)) {\n result.push(category);\n }\n continue;\n }\n\n const children = category.children.filter((child) => allowed.has(child.key));\n if (children.length > 0) {\n result.push({ ...category, children });\n }\n }\n\n return result;\n}\n\n//#endregion\n","import {\n AXDayOfWeekName,\n AXSchedulerAppointmentDataSource,\n AXSchedulerAppointmentMouseEvent,\n AXSchedulerComponent,\n AXSchedulerDateRange,\n AXSchedulerService,\n AXSchedulerSlotDropEvent,\n AXSchedulerSlotMouseEvent,\n AXSchedulerView,\n} from '@acorex/components/scheduler';\nimport { AXHolidayDate } from '@acorex/core/date-time';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RootConfig } from '../../../../const';\nimport { AXMTaskBoardTaskPopoverOverlayService } from '../../task-board-task-popover-overlay.service';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPResource, AXPTask, AXPTaskAction } from '../../task-board.types';\nimport { AXMTaskBoardViewModel, AXPTaskBoardViewMode } from '../../task-board.viewmodel';\n\n@Component({\n selector: 'axm-task-board-calendar-view',\n templateUrl: './task-board-calendar-view.component.html',\n styleUrls: ['./task-board-calendar-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXSchedulerComponent],\n})\nexport class AXMTaskBoardCalendarViewComponent implements AfterViewInit {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n protected readonly settingService = inject(AXPSettingsService);\n protected readonly commandService = inject(AXPCommandService);\n protected readonly schedulerService = inject(AXSchedulerService);\n private readonly taskPopoverOverlay = inject(AXMTaskBoardTaskPopoverOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n\n schedulerComponent = viewChild(AXSchedulerComponent);\n\n resources = input<AXPResource[]>([]);\n refreshNonce = input<number>(0);\n startingDate = input<Date>(new Date());\n selectedView = input<AXPTaskBoardViewMode>('month');\n dataSource = input.required<AXSchedulerAppointmentDataSource>();\n protected firstDayOfWeek = signal<AXDayOfWeekName>('monday');\n protected weekendDays = signal<number[]>([0, 6]);\n\n protected holidays = (range: AXSchedulerDateRange): Promise<AXHolidayDate[]> => {\n const selectedEventTypeIds = this.vm.selectedCalendarEventTypeIds();\n return this.taskBoardService.getEvents(range, selectedEventTypeIds);\n };\n\n protected currentSchedulerView = computed<AXSchedulerView>(() =>\n this.selectedView() === 'kanban' || this.selectedView() === 'grid'\n ? 'month'\n : (this.selectedView() as AXSchedulerView),\n );\n\n onTaskClick = output<AXPTask>();\n onTaskChanged = output<AXPTask>();\n onMonthSlotDblClicked = output<Date>();\n onActionClick = output<AXPTaskAction>();\n component = output<AXSchedulerComponent>();\n onTaskRightClick = output<AXPTaskAction>();\n onRangeChanged = output<AXSchedulerDateRange>();\n\n private readonly refreshNonceEffect = effect(() => {\n this.refreshNonce();\n this.schedulerComponent()?.refresh();\n });\n\n private readonly schedulerStateSyncEffect = effect(() => {\n this.startingDate();\n this.currentSchedulerView();\n this.vm.daysCount();\n this.vm.selectedTaskTypeNames();\n this.vm.selectedAssigneeIds();\n this.vm.selectedReporterIds();\n this.vm.selectedPriorities();\n this.refreshNonce();\n\n queueMicrotask(() => {\n this.schedulerComponent()?.refresh();\n });\n });\n\n async ngAfterViewInit(): Promise<void> {\n this.taskBoardService.refresh$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(async (data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n await this.refreshPopoverData();\n });\n\n this.taskBoardService.close$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n this.taskPopoverOverlay.close();\n });\n\n if (this.schedulerComponent()) {\n this.component.emit(this.schedulerComponent()!);\n }\n }\n\n protected onTaskDrop(event: AXSchedulerSlotDropEvent): void {\n if (event.slot.view === 'agenda' && event.isSameSlotDrop) {\n return;\n }\n\n const dropResult = this.schedulerService.calculateAppointmentDropResult(event);\n if (dropResult.isSameSlotDrop) {\n return;\n }\n\n const originalTask = event.appointment as AXPTask;\n const updatedTask = this.schedulerService.applyDropResult({ ...originalTask }, dropResult) as AXPTask;\n\n this.taskBoardService\n .updateTaskDateRange(originalTask, {\n from: dropResult.startDate,\n end: dropResult.endDate,\n })\n .then((persistedTask) => {\n this.onTaskChanged.emit(persistedTask);\n this.schedulerComponent()?.refresh();\n })\n .catch((error) => {\n console.error('[TaskBoardCalendar] Failed to update task date range:', error);\n this.schedulerComponent()?.refresh();\n });\n }\n\n protected onTaskRightClickHandler(event: AXSchedulerAppointmentMouseEvent): void {\n this.onTaskRightClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment as AXPTask });\n }\n\n protected onSlotDblClicked(event: AXSchedulerSlotMouseEvent): void {\n if (event.sender.selectedView() === 'month') {\n this.onMonthSlotDblClicked.emit(event.slot.startDate.date);\n }\n }\n\n protected async handleRangeChanged(event: AXSchedulerDateRange): Promise<void> {\n this.onRangeChanged.emit(event);\n }\n\n protected handleActionClick(event: AXSchedulerAppointmentMouseEvent): void {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment as AXPTask });\n }\n\n protected async onTaskClickHandler(event: AXSchedulerAppointmentMouseEvent): Promise<void> {\n const task = event.appointment as AXPTask;\n const anchor = this.resolveAppointmentAnchor(event);\n\n if (anchor) {\n await this.taskPopoverOverlay.open({\n task,\n anchor,\n offsetX: 12,\n offsetY: 12,\n adaptivityEnabled: true,\n });\n }\n\n this.onTaskClick.emit(task);\n }\n\n private async refreshPopoverData(): Promise<void> {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n\n const provider = this.taskBoardService.getProvider(active.provider);\n if (!provider) {\n return;\n }\n\n try {\n const result = await provider.getTasks();\n const updatedTask = result.items.find((t) => t.id === active.id);\n if (updatedTask) {\n await this.taskPopoverOverlay.refreshTask({ ...updatedTask, provider: active.provider });\n }\n this.schedulerComponent()?.refresh();\n } catch (error) {\n console.error('[TaskPopover] Failed to refresh popover data:', error);\n }\n }\n\n protected async openTaskDetails(): Promise<void> {\n const task = this.taskPopoverOverlay.getActiveTask();\n if (!task) {\n return;\n }\n\n try {\n await this.commandService.execute('Entity:OpenDetails', {\n entity: `${RootConfig.module.name}.${RootConfig.entities.task.name}`,\n data: { id: task.id },\n });\n this.taskPopoverOverlay.close();\n } catch (error) {\n console.error('Failed to open task details:', error);\n }\n }\n\n private resolveAppointmentAnchor(event: AXSchedulerAppointmentMouseEvent): HTMLElement | undefined {\n let targetElement = (event.nativeEvent.currentTarget as HTMLElement) || (event.nativeEvent.target as HTMLElement);\n let element = targetElement;\n const maxDepth = 10;\n let depth = 0;\n\n while (element && element !== document.body && depth < maxDepth) {\n depth++;\n\n const isAppointment =\n element.classList?.contains('dx-scheduler-appointment') ||\n element.classList?.contains('ax-scheduler-appointment') ||\n element.hasAttribute('data-appointment-id');\n\n if (isAppointment) {\n targetElement = element;\n break;\n }\n\n const parent = element.parentElement;\n if (parent) {\n const isParentAppointment =\n parent.classList?.contains('dx-scheduler-appointment') ||\n parent.classList?.contains('ax-scheduler-appointment');\n\n if (isParentAppointment) {\n targetElement = parent;\n break;\n }\n }\n\n element = element.parentElement as HTMLElement;\n }\n\n return targetElement;\n }\n}\n","<ax-scheduler [hasHeader]=\"false\" [holidays]=\"holidays\" [resources]=\"resources()\" [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\" [selectedView]=\"currentSchedulerView()\" [multiDayViewDaysCount]=\"vm.daysCount()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\" (onActionClick)=\"handleActionClick($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\" (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentClicked)=\"onTaskClickHandler($event)\" [weekend]=\"weekendDays()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"></ax-scheduler>","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowClick,\n AXRowCommandItemClickEvent,\n} from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH,\n TASK_BOARD_GRID_ROW_ACTION_ITEMS,\n} from '../../task-board-grid-row-actions';\nimport { AXMTaskBoardTaskPopoverOverlayService } from '../../task-board-task-popover-overlay.service';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPExtraField, AXPTask, AXPTaskFilter } from '../../task-board.types';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\n\n@Component({\n selector: 'axm-task-board-grid-view',\n templateUrl: './task-board-grid-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule],\n})\nexport class AXMTaskBoardGridViewComponent {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly localeService = inject(AXLocaleService);\n protected readonly calendarService = inject(AXCalendarService);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n private readonly taskPopoverOverlay = inject(AXMTaskBoardTaskPopoverOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n\n dataSource = input.required<(filter?: AXPTaskFilter) => Promise<{ items: AXPTask[]; total: number }>>();\n refreshNonce = input<number>(0);\n\n onTaskClick = output<AXPTask>();\n\n private fetchedTasks = signal<AXPTask[]>([]);\n protected columns = signal<AXPExtraField[]>([]);\n protected grid = viewChild<AXDataTableComponent>('grid');\n\n protected readonly taskRowCommandWidth = TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH;\n protected readonly taskRowCommandItems = TASK_BOARD_GRID_ROW_ACTION_ITEMS;\n\n protected gridRemountKeys = computed(() => [this.refreshNonce()]);\n\n protected tasksDataSource = computed(() => {\n const parentDataSource = this.dataSource();\n void this.refreshNonce();\n\n return new AXDataSource<any>({\n load: async (e) => {\n const result = await parentDataSource({ skip: e.skip, take: e.take });\n this.fetchedTasks.set(result.items);\n const mappedItems = result.items.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n statusTitle: task.status.title,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n type: this.taskBoardService.getProvider(task.provider)?.title,\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n _originalTask: task,\n }));\n return { items: mappedItems, total: result.total };\n },\n pageSize: 10,\n key: 'id',\n byKey: async (key: unknown) => {\n return this.fetchedTasks().find((task) => task.id === key);\n },\n });\n });\n\n constructor() {\n afterNextRender(() => {\n untracked(() => {\n this.grid()?.refresh({ reset: true });\n });\n });\n\n this.taskBoardService.close$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n this.taskPopoverOverlay.close();\n });\n }\n\n #dataSourceChanged = effect(() => {\n this.vm.selectedTaskTypeNames();\n this.vm.selectedAssigneeIds();\n this.vm.selectedReporterIds();\n this.vm.selectedPriorities();\n this.vm.currentDate();\n this.vm.daysCount();\n this.vm.currentViewMode();\n this.refreshNonce();\n\n untracked(() => {\n setTimeout(() => {\n this.grid()?.refresh({ reset: true });\n }, 0);\n });\n });\n\n #providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.columns.set([]);\n return;\n }\n\n taskType.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n });\n\n protected handleRowClick(event: AXDataTableRowClick): void {\n if (event.data) {\n const mappedItem = event.data as { _originalTask?: AXPTask; id?: string | number };\n const originalTask = mappedItem._originalTask || this.fetchedTasks().find((task) => task.id === mappedItem.id);\n if (originalTask) {\n this.onTaskClick.emit(originalTask);\n }\n }\n }\n\n protected handleTaskCommandClick(event: AXRowCommandItemClickEvent): void {\n if (event.name !== 'view') {\n return;\n }\n\n event.nativeEvent?.stopPropagation();\n\n const mappedItem = event.data as { _originalTask?: AXPTask; id?: string | number };\n const task = mappedItem._originalTask ?? this.fetchedTasks().find((t) => t.id === mappedItem.id);\n if (!task) {\n return;\n }\n\n const anchor = this.taskPopoverOverlay.resolveAnchorFromCommandClick(event);\n if (!anchor) {\n return;\n }\n\n setTimeout(() => {\n void this.taskPopoverOverlay.open({\n task,\n anchor,\n placement: 'bottom-start',\n adaptivityEnabled: false,\n autoFlip: true,\n });\n }, 0);\n }\n}\n","@for (remountKey of gridRemountKeys(); track remountKey) {\n <ax-data-table\n #grid\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"tasksDataSource()\"\n (onRowClick)=\"handleRowClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <ax-text-column\n dataField=\"title\"\n [caption]=\"('@task-management:task-board.grid-headers.title' | translate | async)!\"\n [width]=\"'350px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"description\"\n [caption]=\"('@task-management:task-board.grid-headers.description' | translate | async)!\"\n [width]=\"'500px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"assignee\"\n [caption]=\"('@task-management:task-board.grid-headers.assignee' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"startDate\"\n [caption]=\"('@task-management:task-board.grid-headers.start-date' | translate | async)!\"\n [width]=\"'150px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"endDate\"\n [caption]=\"('@task-management:task-board.grid-headers.due-date' | translate | async)!\"\n [width]=\"'150px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"priority\"\n [caption]=\"('@task-management:task-board.grid-headers.priority' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n [allowResizing]=\"true\"\n dataField=\"reporter\"\n [caption]=\"('@task-management:task-board.grid-headers.reporter' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"statusTitle\"\n [caption]=\"('@task-management:task-board.grid-headers.status' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"type\"\n [caption]=\"('@task-management:task-board.grid-headers.type' | translate | async)!\"\n [width]=\"'150px'\"\n ></ax-text-column>\n\n @if (columns().length) {\n <ng-container>\n @for (column of columns(); track column) {\n <axp-widget-column-renderer\n [node]=\"column.widget\"\n [caption]=\"(column.title | translate | async)!\"\n ></axp-widget-column-renderer>\n }\n </ng-container>\n }\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"taskRowCommandWidth\"\n [items]=\"taskRowCommandItems\"\n (onItemClick)=\"handleTaskCommandClick($event)\"\n ></ax-command-column>\n </ax-data-table>\n}\n","import {\n AXKanbanBeforeDropEvent,\n AXKanbanComponent,\n AXKanbanItem,\n AXKanbanMouseEvent,\n AXKanbanSortEvent,\n AXKanbanStatus,\n} from '@acorex/components/kanban';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXMTaskBoardTaskPopoverOverlayService } from '../../task-board-task-popover-overlay.service';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPTask, AXPTaskAction, AXPTaskActionMenuItem } from '../../task-board.types';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'axm-task-board-kanban-view',\n templateUrl: './task-board-kanban-view.component.html',\n styleUrls: ['./task-board-kanban-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXKanbanComponent],\n})\nexport class AXMTaskBoardKanbanViewComponent implements AfterViewInit {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n protected readonly settingService = inject(AXPSettingsService);\n protected readonly commandService = inject(AXPCommandService);\n private readonly taskPopoverOverlay = inject(AXMTaskBoardTaskPopoverOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n\n kanbanComponent = viewChild(AXKanbanComponent);\n\n tasks = model.required<AXPTask[]>();\n\n onTaskClick = output<AXPTask>();\n onTaskChanged = output<AXPTask>();\n component = output<AXKanbanComponent>();\n onActionClick = output<AXPTaskAction>();\n\n statuses = signal<AXKanbanStatus[]>([]);\n\n stableTasks = computed(() => this.tasks(), { equal: isEqual });\n protected kanbanTasks = computed<AXKanbanItem[]>(() => {\n return this.stableTasks().map((task) => ({\n id: task.id,\n title: task.title,\n index: task.index,\n cssClass: task.cssClass,\n priority: task.priority,\n statusKey: task.status.id,\n description: task.description,\n }));\n });\n\n ngAfterViewInit(): void {\n this.taskBoardService.refresh$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(async (data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n await this.refreshPopoverData();\n });\n\n this.taskBoardService.close$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n this.taskPopoverOverlay.close();\n });\n\n if (this.kanbanComponent()) {\n this.component.emit(this.kanbanComponent()!);\n }\n }\n\n #providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.statuses.set([]);\n return;\n }\n taskType.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n });\n\n //#region ---- Drag & Drop Handling ----\n\n /**\n * Handles the onBeforeDrop event from the kanban component.\n * Uses event.wait() to register async operations that the kanban will await.\n * If action is cancelled/failed, we set event.canceled = true to prevent the drop.\n */\n protected onBeforeDrop(event: AXKanbanBeforeDropEvent): void {\n // If no status change, allow the drop (just reordering)\n if (event.previousStatusKey === event.currentStatusKey) {\n return;\n }\n\n // Find the task being moved\n const task = this.stableTasks().find((t) => t.id === event.item?.id);\n if (!task || !task.provider) {\n // Allow drop if task not found or no provider\n return;\n }\n\n // Get the provider\n const provider = this.taskBoardService.getProvider(task.provider);\n if (!provider) {\n return;\n }\n\n // Register the async operation using event.wait()\n // The kanban component will await this promise before proceeding\n event.wait(this.executeDropAction(event, task, provider));\n }\n\n /**\n * Executes the action for a drop operation.\n * Sets event.canceled = true if action fails or is cancelled.\n * IMPORTANT: Do NOT update the task status in dataSource here - let the kanban handle the move.\n * The kanban will update the status in onSortChanged, and we'll sync with backend there.\n */\n private async executeDropAction(\n event: AXKanbanBeforeDropEvent,\n task: AXPTask,\n provider: ReturnType<typeof this.taskBoardService.getProvider>,\n ): Promise<void> {\n if (!provider) {\n return;\n }\n\n try {\n // Get available actions for the task\n const actions = await provider.getActions(task);\n if (!actions || actions.length === 0) {\n // No actions available, allow the drop\n return;\n }\n\n // Find action that matches the new status\n const matchingAction = this.findActionForStatus(actions, event.currentStatusKey);\n if (!matchingAction || !matchingAction.command) {\n // No matching action found, allow the drop\n return;\n }\n\n // Execute the action and check result\n const result = await this.taskBoardService.executeCommand(matchingAction.command, task.provider!);\n\n // Check if action was successful (not cancelled or failed)\n if (result?.success === false || result === null) {\n // Action was cancelled or failed - prevent the drop\n event.canceled = true;\n return;\n }\n\n // Action succeeded - allow the drop to proceed\n // The kanban will handle the visual move, and onSortChanged will sync with backend\n } catch (error) {\n console.error('[KanbanDrop] Failed to execute action during drop:', error);\n // On error, prevent the drop to be safe\n event.canceled = true;\n }\n }\n\n /**\n * Finds an action that corresponds to the target status.\n * Matches actions by name patterns (e.g., \"approve\" action for \"approved\" status).\n */\n private findActionForStatus(\n actions: AXPTaskActionMenuItem[],\n targetStatus: string | number,\n ): AXPTaskActionMenuItem | null {\n const targetStatusStr = String(targetStatus).toLowerCase();\n\n // Common status-to-action mappings\n const statusActionMap: Record<string, string[]> = {\n approved: ['approve'],\n rejected: ['reject'],\n cancelled: ['cancel'],\n completed: ['complete', 'finish'],\n done: ['complete', 'finish'],\n inprogress: ['start', 'begin'],\n 'in-progress': ['start', 'begin'],\n blocked: ['block'],\n unblocked: ['unblock'],\n };\n\n // Check direct mappings first\n const possibleActionNames = statusActionMap[targetStatusStr] || [];\n for (const actionName of possibleActionNames) {\n const action = actions.find((a) => a.name?.toLowerCase().includes(actionName));\n if (action) {\n return action;\n }\n }\n\n // Try to find action by name containing status keywords\n const statusKeywords = targetStatusStr.split(/[-_\\s]+/);\n for (const keyword of statusKeywords) {\n if (keyword.length < 3) continue; // Skip very short keywords\n\n const action = actions.find((a) => {\n const actionName = a.name?.toLowerCase() || '';\n return actionName.includes(keyword) || keyword.includes(actionName);\n });\n\n if (action) {\n return action;\n }\n }\n\n // Try exact match with action name\n const exactMatch = actions.find((a) => a.name?.toLowerCase() === targetStatusStr);\n if (exactMatch) {\n return exactMatch;\n }\n\n // Try partial match (status contains action name or vice versa)\n for (const action of actions) {\n const actionName = action.name?.toLowerCase() || '';\n if (targetStatusStr.includes(actionName) || actionName.includes(targetStatusStr)) {\n return action;\n }\n }\n\n return null;\n }\n\n //#endregion\n\n protected onSortChanged(event: AXKanbanSortEvent) {\n const tasks = this.tasks().map((item) => {\n const task: AXKanbanItem | undefined = event.allItems.find((t) => t.id === item.id);\n if (!task) {\n return item;\n }\n\n const status = this.statuses().find((s) => String(s.key) === String(task.statusKey));\n if (!status) {\n return { ...item, index: task.index ?? item.index };\n }\n\n return {\n ...item,\n index: task.index ?? item.index,\n status: { id: status.key, title: status.title },\n };\n });\n\n this.taskBoardService\n .updateTasks(tasks)\n .then((updatedTasks) => {\n this.tasks.set(updatedTasks);\n })\n .catch((error) => {\n console.error('[KanbanSort] Failed to update tasks:', error);\n const provider = tasks[0]?.provider;\n if (provider) {\n this.taskBoardService.requestRefresh(provider);\n }\n });\n }\n\n protected async handleItemClick(event: AXKanbanMouseEvent): Promise<void> {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (!task) return;\n\n // Find the kanban item container element\n let targetElement = (event.nativeEvent.currentTarget as HTMLElement) || (event.nativeEvent.target as HTMLElement);\n\n // Traverse up to find the kanban item container\n let element = targetElement;\n const maxDepth = 10;\n let depth = 0;\n\n while (element && element !== document.body && depth < maxDepth) {\n depth++;\n\n const isKanbanItem =\n element.classList?.contains('dx-kanban-item') ||\n element.classList?.contains('ax-kanban-item') ||\n element.hasAttribute('data-item-id');\n\n if (isKanbanItem) {\n targetElement = element;\n break;\n }\n\n element = element.parentElement as HTMLElement;\n }\n\n if (targetElement) {\n await this.taskPopoverOverlay.open({\n task,\n anchor: targetElement,\n offsetX: 12,\n offsetY: 12,\n adaptivityEnabled: true,\n });\n }\n\n this.onTaskClick.emit(task);\n }\n\n protected handleActionClick(event: AXKanbanMouseEvent) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: task });\n }\n }\n\n private async refreshPopoverData(): Promise<void> {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n\n const provider = this.taskBoardService.getProvider(active.provider);\n if (!provider) {\n return;\n }\n\n try {\n const result = await provider.getTasks();\n const updatedTasks = result.items.map((t) => ({ ...t, provider: active.provider }));\n const updatedMap = new Map(updatedTasks.map((t) => [t.id, t]));\n\n const currentTasks = this.tasks();\n const mergedTasks = currentTasks.map((t) => updatedMap.get(t.id) ?? t);\n const existingIds = new Set(currentTasks.map((t) => t.id));\n const newTasks = updatedTasks.filter((t) => !existingIds.has(t.id));\n this.tasks.set([...mergedTasks, ...newTasks]);\n\n const updatedSelectedTask = updatedMap.get(active.id);\n if (updatedSelectedTask) {\n await this.taskPopoverOverlay.refreshTask({ ...updatedSelectedTask, provider: active.provider });\n }\n } catch (error) {\n console.error('[TaskPopover] Failed to refresh popover data:', error);\n }\n }\n}\n","<ax-kanban\n [statuses]=\"statuses()\"\n [dataSource]=\"kanbanTasks()\"\n (onItemClick)=\"handleItemClick($event)\"\n (onBeforeDrop)=\"onBeforeDrop($event)\"\n (onSortChanged)=\"onSortChanged($event)\"\n></ax-kanban>\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowClick,\n AXRowCommandItemClickEvent,\n} from '@acorex/components/data-table';\nimport { AXKanbanStatus } from '@acorex/components/kanban';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH,\n TASK_BOARD_GRID_ROW_ACTION_ITEMS,\n} from '../../task-board-grid-row-actions';\nimport { AXMTaskBoardTaskPopoverOverlayService } from '../../task-board-task-popover-overlay.service';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPExtraField, AXPTask, AXPTaskFilter, AXPWorkflowTaskProvider } from '../../task-board.types';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\n\ninterface StatusTaskGroup {\n statusInfo: AXKanbanStatus;\n tasks: AXDataSource<any>;\n}\n\nfunction statusGroupTrackKey(nonce: number, group: StatusTaskGroup): string {\n return `${nonce}:${String(group.statusInfo.key)}`;\n}\n\nfunction taskMatchesStatus(task: AXPTask, status: AXKanbanStatus): boolean {\n return String(task.status.id) === String(status.key);\n}\n\n@Component({\n selector: 'axm-task-board-status-grouped-grid-view',\n templateUrl: './task-board-status-grouped-grid-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule],\n})\nexport class AXMTaskBoardStatusGroupedGridViewComponent {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly localeService = inject(AXLocaleService);\n protected readonly calendarService = inject(AXCalendarService);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n private readonly taskPopoverOverlay = inject(AXMTaskBoardTaskPopoverOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n\n provider = input<AXPWorkflowTaskProvider>();\n dataSource = input.required<(filter?: AXPTaskFilter) => Promise<{ items: AXPTask[]; total: number }>>();\n refreshNonce = input<number>(0);\n\n onTaskClick = output<AXPTask>();\n\n groupedTasks = signal<StatusTaskGroup[]>([]);\n private allFetchedTasks = signal<AXPTask[]>([]);\n protected columns = signal<AXPExtraField[]>([]);\n protected statuses = signal<AXKanbanStatus[]>([]);\n protected grids = viewChildren<AXDataTableComponent>('grid');\n\n protected readonly taskRowCommandWidth = TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH;\n protected readonly taskRowCommandItems = TASK_BOARD_GRID_ROW_ACTION_ITEMS;\n\n protected trackStatusGroup = (_index: number, group: StatusTaskGroup) =>\n statusGroupTrackKey(this.refreshNonce(), group);\n\n protected groupedViewRemountKeys = computed(() => [this.refreshNonce()]);\n\n constructor() {\n afterNextRender(() => {\n untracked(() => {\n setTimeout(() => {\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n this.grids().forEach((grid) => {\n grid.refresh({ reset: true });\n });\n }, 200);\n });\n });\n\n this.taskBoardService.close$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => {\n const active = this.taskPopoverOverlay.getActiveTask();\n if (!active?.provider) {\n return;\n }\n if (data.provider && data.provider !== active.provider) {\n return;\n }\n this.taskPopoverOverlay.close();\n });\n }\n\n #dataChanged = effect(() => {\n this.vm.selectedTaskTypeNames();\n this.vm.selectedAssigneeIds();\n this.vm.selectedReporterIds();\n this.vm.selectedPriorities();\n this.vm.currentDate();\n this.vm.daysCount();\n this.vm.currentViewMode();\n this.refreshNonce();\n const allStatuses = this.statuses();\n\n const parentDataSource = this.dataSource();\n if (!parentDataSource || allStatuses.length === 0) {\n this.groupedTasks.set([]);\n this.allFetchedTasks.set([]);\n return;\n }\n\n void parentDataSource().then((result) => {\n this.allFetchedTasks.set(result.items);\n const allTasks = result.items;\n\n const statusGroups = allStatuses.map((status) => {\n const tasksForStatus = allTasks.filter((task) => taskMatchesStatus(task, status));\n return {\n statusInfo: status,\n tasks: this.createTaskDataSourceForGroup(tasksForStatus),\n };\n });\n\n this.groupedTasks.set(statusGroups);\n untracked(() => {\n setTimeout(() => {\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n this.grids().forEach((grid) => {\n grid.refresh({ reset: true });\n });\n }, 0);\n });\n });\n });\n\n #providerChanged = effect(async () => {\n const provider = this.vm.selectedTaskTypes()[0];\n provider?.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n provider?.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n });\n\n #gridsChanged = effect(() => {\n const groups = this.groupedTasks();\n untracked(() => {\n setTimeout(() => {\n this.grids().forEach((grid) => {\n grid.refresh({ reset: true });\n });\n }, 100);\n });\n });\n\n private createTaskDataSourceForGroup(tasks: AXPTask[]): AXDataSource<any> {\n return new AXDataSource<any>({\n load: async (e) => {\n const items = tasks.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n _originalTask: task,\n }));\n return {\n items: items.slice(e.skip, e.skip + e.take),\n total: items.length,\n };\n },\n pageSize: 5,\n key: 'id',\n byKey: async (key: unknown) => {\n return tasks.find((task) => task.id === key);\n },\n });\n }\n\n protected handleRowClick(event: AXDataTableRowClick): void {\n if (!event.data) {\n return;\n }\n const mappedItem = event.data as { id?: string | number; _originalTask?: AXPTask };\n const originalTask = mappedItem._originalTask ?? this.allFetchedTasks().find((task) => task.id === mappedItem.id);\n if (originalTask) {\n this.onTaskClick.emit(originalTask);\n }\n }\n\n protected handleTaskCommandClick(event: AXRowCommandItemClickEvent): void {\n if (event.name !== 'view') {\n return;\n }\n\n event.nativeEvent?.stopPropagation();\n\n const mappedItem = event.data as { _originalTask?: AXPTask; id?: string | number };\n const task = mappedItem._originalTask ?? this.allFetchedTasks().find((t) => t.id === mappedItem.id);\n if (!task) {\n return;\n }\n\n const anchor = this.taskPopoverOverlay.resolveAnchorFromCommandClick(event);\n if (!anchor) {\n return;\n }\n\n setTimeout(() => {\n void this.taskPopoverOverlay.open({\n task,\n anchor,\n placement: 'bottom-start',\n adaptivityEnabled: false,\n autoFlip: true,\n });\n }, 0);\n }\n}\n","@for (remountKey of groupedViewRemountKeys(); track remountKey) {\n @for (group of groupedTasks(); track trackStatusGroup($index, group)) {\n <h1 class=\"ax-text-xl ax-font-bold\">{{ group.statusInfo.title }}</h1>\n <ax-data-table\n #grid\n class=\"ax-h-[300px]\"\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"group.tasks\"\n [loading]=\"{ enabled: true, animation: true }\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n <ax-text-column\n dataField=\"title\"\n [caption]=\"('@task-management:task-board.grid-headers.title' | translate | async)!\"\n [width]=\"'350px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"description\"\n [caption]=\"('@task-management:task-board.grid-headers.description' | translate | async)!\"\n [width]=\"'500px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"startDate\"\n [caption]=\"('@task-management:task-board.grid-headers.start-date' | translate | async)!\"\n [width]=\"'150px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"endDate\"\n [caption]=\"('@task-management:task-board.grid-headers.due-date' | translate | async)!\"\n [width]=\"'150px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"priority\"\n [caption]=\"('@task-management:task-board.grid-headers.priority' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"reporter\"\n [caption]=\"('@task-management:task-board.grid-headers.reporter' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n <ax-text-column\n dataField=\"assignee\"\n [caption]=\"('@task-management:task-board.grid-headers.assignee' | translate | async)!\"\n [width]=\"'125px'\"\n ></ax-text-column>\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"taskRowCommandWidth\"\n [items]=\"taskRowCommandItems\"\n (onItemClick)=\"handleTaskCommandClick($event)\"\n ></ax-command-column>\n </ax-data-table>\n }\n}\n","import { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXAccordionModule } from '@acorex/components/accordion';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCalendarComponent, AXCalendarSlotClick } from '@acorex/components/calendar';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXSchedulerComponent } from '@acorex/components/scheduler';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXCalendarService, AXDateTime } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n AXPActionMenuItem,\n AXPBreadcrumbItem,\n AXPDeviceService,\n AXPExecuteCommand,\n getActionButton,\n} from '@acorex/platform/core';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutStartSideComponent,\n} from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { RootConfig } from '../../const';\nimport { AXMTaskBoardDetailPanel } from './task-board-detail-panel/task-board-detail-panel.component';\nimport { AXMTaskBoardFiltersComponent } from './task-board-filters/task-board-filters.component';\nimport { filterTasksOverlappingRange } from './task-board-range.utils';\nimport { AXPTaskBoardService } from './task-board.service';\nimport { AXPResource, AXPTask, AXPTaskAction, AXPTaskFilter, AXPWorkflowTaskProvider } from './task-board.types';\nimport {\n AXM_TASK_BOARD_MENU_ITEMS,\n filterTaskBoardMenuByAllowedModes,\n} from './task-board-menu.definition';\nimport { AXMTaskBoardViewModel, AXPPriorityFilterKey, AXPTaskBoardViewMode } from './task-board.viewmodel';\nimport { AXMTaskBoardCalendarViewComponent } from './views/task-board-calendar-view/task-board-calendar-view.component';\nimport { AXMTaskBoardGridViewComponent } from './views/task-board-grid-view/task-board-grid-view.component';\nimport { AXMTaskBoardKanbanViewComponent } from './views/task-board-kanban-view/task-board-kanban-view.component';\nimport { AXMTaskBoardStatusGroupedGridViewComponent } from './views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component';\n\nexport type { AXPTaskBoardViewCategory } from './task-board-menu.definition';\n\n@Component({\n templateUrl: './task-board.page.html',\n styleUrls: ['./task-board.page.scss'],\n imports: [\n FormsModule,\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXAccordionModule,\n AXAccordionCdkModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXMTaskBoardCalendarViewComponent,\n AXMTaskBoardKanbanViewComponent,\n AXMTaskBoardGridViewComponent,\n AXMTaskBoardStatusGroupedGridViewComponent,\n AXMTaskBoardDetailPanel,\n AXDropdownPanelComponent,\n AXPopoverModule,\n AXCalendarComponent,\n AXMTaskBoardFiltersComponent,\n AXCheckBoxModule,\n AXFormModule,\n AXLabelModule,\n AXSelectionListModule,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ],\n})\nexport class AXMTaskBoardPage extends AXPPageLayoutBaseComponent implements OnInit {\n private readonly router = inject(Router);\n protected readonly rootConfig = RootConfig;\n protected readonly deviceService = inject(AXPDeviceService);\n protected readonly vm = inject(AXMTaskBoardViewModel);\n private readonly unsubscribe = inject(AXUnsubscriber);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly localeService = inject(AXLocaleService);\n private readonly calendarService = inject(AXCalendarService);\n private readonly taskBoardService = inject(AXPTaskBoardService);\n\n protected popover = viewChild<AXPopoverComponent>('popover');\n protected calendar = viewChild<AXCalendarComponent>('calendar');\n protected sidebarCalendar = viewChild<AXCalendarComponent>('sidebarCalendar');\n\n protected isReady = signal(false);\n protected taskTypes = signal<AXPWorkflowTaskProvider[]>([]);\n protected calendarEventTypes = signal<Array<{ id: string; title: string; color?: string; icon?: string }>>([]);\n protected resources = signal<AXPResource[]>([]);\n protected isQueryParam = signal<boolean>(false);\n protected refreshNonce = signal(0);\n protected taskTypeAccordionCollapsed = signal(false);\n protected calendarEventTypeAccordionCollapsed = signal(false);\n protected sidebarCollapsed = signal(false);\n private currentTask = signal<AXPTask | null>(null);\n protected schedulerComponent = signal<AXSchedulerComponent | null>(null);\n private kanbanLoadVersion = 0;\n\n private dayDataCache = signal<Map<string, number>>(new Map());\n\n /** View switcher entries filtered by user visibility settings parts. */\n protected readonly menuItems = computed(() => {\n const allowed = new Set(this.vm.visibleViewModes());\n return filterTaskBoardMenuByAllowedModes(AXM_TASK_BOARD_MENU_ITEMS, allowed);\n });\n\n protected calendarType = computed(() => this.localeService.activeProfile().calendar.system);\n protected todayButtonText = computed(() => {\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-day':\n case 'timeline-weekly':\n case 'status-grouped-grid':\n return 'Today';\n case 'week':\n return 'Current week';\n case 'month':\n case 'timeline-month':\n return 'Current month';\n case 'timeline-year':\n return 'Current year';\n default:\n return 'Today';\n }\n });\n protected timeText = computed(() => {\n if (\n this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid'\n ) {\n const currentDate = this.vm.currentDate();\n if (!currentDate) {\n return '';\n }\n const start = this.calendarService.create(currentDate, this.localeService.activeProfile().calendar.system);\n const end = start.add('day', this.vm.daysCount() - 1);\n const startText = start.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n const endText = end.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n return `${startText} - ${endText}`;\n }\n return this.schedulerComponent()?.currentDateText() || '';\n });\n protected calendarDepth = computed(() => {\n if (\n this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid'\n ) {\n return 'day';\n }\n return this.schedulerComponent()?.calendarDepth() || 'day';\n });\n\n protected currentDateForCalendar = computed(() => {\n const date = this.vm.currentDate();\n return date || new Date();\n });\n protected readonly selectedViewMode = computed(() => {\n const currentMode = this.vm.currentViewMode();\n const items = this.menuItems();\n for (const category of items) {\n if (category.key === currentMode) {\n return { key: category.key as AXPTaskBoardViewMode, text: category.text, icon: category.icon };\n }\n if (category.children) {\n const foundChild = category.children.find((child) => child.key === currentMode);\n if (foundChild) {\n return foundChild;\n }\n }\n }\n const firstCategory = items[0];\n if (!firstCategory) {\n return {\n key: currentMode,\n text: 'view',\n icon: 'fa-light fa-table',\n };\n }\n return firstCategory.children\n ? firstCategory.children[0]\n : { key: firstCategory.key as AXPTaskBoardViewMode, text: firstCategory.text, icon: firstCategory.icon };\n });\n protected filter = computed<AXPTaskFilter>(() => {\n const taskTypeNames = this.vm.selectedTaskTypeNames();\n const assigneeIds = this.vm.selectedAssigneeIds();\n const reporterIds = this.vm.selectedReporterIds();\n const priorities = this.vm.selectedPriorities();\n\n const currentDate = this.vm.currentDate() || new Date();\n let from: AXDateTime = this.calendarService.create(currentDate, this.localeService.activeProfile().calendar.system);\n let end: AXDateTime;\n\n const currentView = this.vm.currentViewMode();\n\n if (\n currentView === 'grid' ||\n currentView === 'kanban' ||\n currentView === 'agenda' ||\n currentView === 'timeline-weekly' ||\n currentView === 'status-grouped-grid'\n ) {\n end = from.add('day', this.vm.daysCount() - 1);\n } else if (currentView === 'month' || currentView === 'timeline-month') {\n from = from.startOf('month');\n end = from.endOf('month');\n } else {\n end = from.endOf('day');\n }\n\n return {\n // Empty filter means \"all items\" for task type/provider.\n ...(taskTypeNames.length > 0 && { types: taskTypeNames }),\n ...(assigneeIds.length > 0 && { assigneeIds }),\n ...(reporterIds.length > 0 && { reporterIds }),\n ...(priorities.length > 0 && { priorities }),\n range: { from: from.date, end: end.date },\n };\n });\n\n private contextMenu = viewChild<AXContextMenuComponent>('rootContextMenu');\n\n override async ngOnInit() {\n await super.ngOnInit();\n await this.vm.initialize();\n\n // Load task types for checkbox filter\n const types = await this.taskBoardService.getTaskTypes();\n this.taskTypes.set(types);\n\n // Load calendar event types for checkbox filter\n const eventTypes = await this.taskBoardService.getCalendarEventTypes();\n this.calendarEventTypes.set(\n eventTypes.map((et: { id: string; title: string }) => ({\n id: et.id,\n title: et.title,\n })),\n );\n\n // Initialize day data cache\n await this.updateDayDataCache();\n\n this.router.events\n .pipe(\n this.unsubscribe.takeUntilDestroy,\n filter((event) => event instanceof NavigationEnd),\n startWith(null),\n )\n .subscribe(async () => {\n await this.loadFromRoute();\n if (!this.isReady()) {\n this.isReady.set(true);\n }\n });\n\n this.taskBoardService.refresh$.subscribe(async () => {\n await this.taskResolveHandler();\n await this.getResources();\n this.refreshNonce.update((value) => value + 1);\n this.schedulerComponent()?.refresh();\n });\n\n this.taskBoardService.openTask$.subscribe(async ({ task, provider, instanceId, activityId }) => {\n await this.taskResolveHandler();\n let match = task;\n if (!match && instanceId && activityId) {\n match = this.resolvedTasks().find((t) => {\n const data = t.data as { instanceId?: string; activityId?: string } | undefined;\n return data?.instanceId === instanceId && data?.activityId === activityId;\n });\n }\n if (!match) {\n return;\n }\n this.vm.selectTask({\n ...match,\n provider: match.provider ?? provider,\n });\n });\n }\n override async getPageTitle(): Promise<string> {\n return await this.translateService.translateAsync('@task-management:task-board.page-title');\n }\n override async getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@task-management:root-menu'),\n },\n ];\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n ...getActionButton('refresh'),\n command: { name: 'refresh' },\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command.name === 'refresh') {\n this.taskBoardService.requestRefresh();\n }\n }\n\n protected schedulerDataSource = (schedulerFilter?: AXPTaskFilter): Promise<AXPTask[]> => {\n const pageFilter = this.filter();\n const visibleRange = schedulerFilter?.range ?? pageFilter.range;\n const finalFilter: AXPTaskFilter = {\n ...pageFilter,\n ...schedulerFilter,\n range: visibleRange,\n };\n\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n const items = filterTasksOverlappingRange(result.items, visibleRange);\n this.validateSelectedTask(items);\n return items;\n });\n };\n\n protected gridDataSource = (filter?: AXPTaskFilter): Promise<{ items: AXPTask[]; total: number }> => {\n const finalFilter: AXPTaskFilter = { ...this.filter(), ...filter };\n\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result;\n });\n };\n\n resolvedTasks = signal<AXPTask[]>([]);\n\n /** Loads kanban tasks when filters or date range change; ignores stale async results. */\n private readonly kanbanDataEffect = effect(() => {\n if (this.vm.currentViewMode() !== 'kanban') {\n return;\n }\n\n this.vm.selectedTaskTypeNames();\n this.vm.selectedAssigneeIds();\n this.vm.selectedReporterIds();\n this.vm.selectedPriorities();\n this.vm.currentDate();\n this.vm.daysCount();\n this.refreshNonce();\n\n const filter = this.filter();\n const version = ++this.kanbanLoadVersion;\n\n void this.taskBoardService.getTasks(filter).then((result) => {\n if (version !== this.kanbanLoadVersion) {\n return;\n }\n this.validateSelectedTask(result.items);\n this.resolvedTasks.set(result.items);\n });\n });\n\n /** Keeps scheduler in sync when toolbar date/view changes outside the scheduler UI. */\n private readonly schedulerNavigationEffect = effect(() => {\n const viewMode = this.vm.currentViewMode();\n const calendarViews: AXPTaskBoardViewMode[] = [\n 'day',\n 'week',\n 'month',\n 'agenda',\n 'timeline-day',\n 'timeline-weekly',\n 'timeline-month',\n 'timeline-year',\n ];\n if (!calendarViews.includes(viewMode)) {\n return;\n }\n\n this.vm.currentDate();\n this.vm.currentViewMode();\n this.vm.daysCount();\n this.refreshNonce();\n\n queueMicrotask(() => {\n this.schedulerComponent()?.refresh();\n });\n });\n\n private async taskResolveHandler(filter: AXPTaskFilter = this.filter()) {\n const result = await this.taskBoardService.getTasks(filter);\n this.validateSelectedTask(result.items);\n this.resolvedTasks.set(result.items);\n }\n\n schedulerComponentChanged(component: AXSchedulerComponent) {\n this.schedulerComponent.set(component);\n }\n\n protected async handleContextMenuOnOpening(event: AXContextMenuOpeningEvent) {\n const currentTask = this.currentTask();\n if (!currentTask) return;\n const providerName = currentTask.provider;\n if (!providerName) return;\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider) return;\n const actions = await provider.getActions(currentTask);\n for (const item of actions) {\n const t = item.title;\n const text =\n typeof t === 'string'\n ? t.startsWith('@')\n ? await this.translateService.translateAsync(t)\n : t\n : this.translateService.resolve(t);\n event.items.push({\n text,\n icon: item.icon,\n color: item.color as AXStyleColorType,\n break: item.break,\n data: {\n command: item.command,\n },\n });\n }\n }\n\n protected handleContextMenu(event: AXPTaskAction) {\n this.currentTask.set(event.task);\n const x = event.nativeEvent.clientX;\n const y = event.nativeEvent.clientY;\n const element = event.nativeEvent.target as HTMLElement;\n this.contextMenu()?.showAt({ x, y }, element);\n }\n\n protected handleMonthSlotDblClicked(date: Date) {\n this.vm.setCurrentDate(date);\n this.vm.setViewMode('day');\n }\n\n protected handleViewChange(view: any, dropdownPanel: AXDropdownPanelComponent) {\n this.router.navigate([], { queryParams: { view } });\n this.vm.setViewMode(view);\n this.popover()?.close();\n dropdownPanel.close();\n }\n\n private readonly refreshEffect = effect(() => {\n this.vm.selectedTaskTypeNames();\n this.vm.selectedAssigneeIds();\n this.vm.selectedReporterIds();\n this.vm.selectedPriorities();\n this.vm.currentDate();\n this.vm.daysCount();\n this.refreshNonce();\n\n void this.getResources();\n this.schedulerComponent()?.refresh();\n });\n\n private readonly calendarEventTypeRefreshEffect = effect(() => {\n this.vm.selectedCalendarEventTypeIds();\n // Refresh calendar view to update holidays when event types change\n this.schedulerComponent()?.refresh();\n });\n\n private readonly dayDataCacheEffect = effect(async () => {\n // Update cache when filters, date, or view mode change\n this.vm.currentDate();\n this.vm.currentViewMode();\n this.vm.selectedTaskTypeNames();\n this.vm.selectedCalendarEventTypeIds();\n await this.updateDayDataCache();\n });\n\n private async updateDayDataCache(): Promise<void> {\n const currentDate = this.vm.currentDate();\n const depth = this.calendarDepth();\n\n // Determine the date range based on the sidebar calendar depth\n let rangeStart: Date;\n let rangeEnd: Date;\n if (depth === 'month') {\n // When depth is 'month', the sidebar shows a full year of months -- fetch data for the entire year\n rangeStart = this.calendarService.create(currentDate).startOf('year').date;\n rangeEnd = this.calendarService.create(currentDate).endOf('year').date;\n } else {\n // When depth is 'day', the sidebar shows a single month -- fetch data for that month\n rangeStart = this.calendarService.create(currentDate).startOf('month').date;\n rangeEnd = this.calendarService.create(currentDate).endOf('month').date;\n }\n\n // Get tasks for the range\n const tasks = await this.taskBoardService.getTasks({\n ...this.filter(),\n range: { from: rangeStart, end: rangeEnd },\n });\n\n // Get events for the range\n const selectedEventTypeIds = this.vm.selectedCalendarEventTypeIds();\n const events = await this.taskBoardService.getEvents({ from: rangeStart, end: rangeEnd }, selectedEventTypeIds);\n\n // Create a map of day -> count\n const dayCountMap = new Map<string, number>();\n\n // Count tasks per day\n tasks.items.forEach((task) => {\n const taskStart = new Date(task.startDate);\n const taskEnd = new Date(task.endDate);\n const startDay = this.calendarService.create(taskStart).startOf('day');\n const endDay = this.calendarService.create(taskEnd).startOf('day');\n\n let currentDay = startDay;\n while (currentDay.compare(endDay, 'day') <= 0) {\n const dayKey = currentDay.format('YYYY-MM-DD');\n dayCountMap.set(dayKey, (dayCountMap.get(dayKey) || 0) + 1);\n currentDay = currentDay.add('day', 1);\n }\n });\n\n // Count events per day\n events.forEach((event) => {\n const eventDate = new Date(event.date);\n const dayKey = this.calendarService.create(eventDate).format('YYYY-MM-DD');\n dayCountMap.set(dayKey, (dayCountMap.get(dayKey) || 0) + 1);\n });\n\n this.dayDataCache.set(dayCountMap);\n this.sidebarCalendar()?.render();\n }\n\n protected getDayDataCount(date: AXDateTime | undefined): number {\n if (!date) {\n return 0;\n }\n try {\n // Get the native Date object from AXDateTime\n const dateObj = (date as any).date || (date as any)._date;\n if (!dateObj) {\n return 0;\n }\n // Create a new AXDateTime from the date object for consistent formatting\n const nativeDate = dateObj instanceof Date ? dateObj : new Date(dateObj);\n const axDate = this.calendarService.create(nativeDate);\n const dayKey = axDate.format('YYYY-MM-DD');\n return this.dayDataCache().get(dayKey) || 0;\n } catch (error) {\n console.warn('Error getting day data count:', error);\n return 0;\n }\n }\n\n /**\n * Aggregates the day-level data counts for an entire month.\n * Used by the monthCellTemplate to show badges when the sidebar calendar depth is 'month'.\n */\n protected getMonthDataCount(date: AXDateTime | undefined): number {\n if (!date) {\n return 0;\n }\n try {\n const dateObj = (date as any).date || (date as any)._date;\n if (!dateObj) {\n return 0;\n }\n const nativeDate = dateObj instanceof Date ? dateObj : new Date(dateObj);\n const axDate = this.calendarService.create(nativeDate);\n const monthStart = axDate.startOf('month');\n const monthEnd = axDate.endOf('month');\n\n let total = 0;\n let current = monthStart;\n while (current.compare(monthEnd, 'day') <= 0) {\n const dayKey = current.format('YYYY-MM-DD');\n total += this.dayDataCache().get(dayKey) || 0;\n current = current.add('day', 1);\n }\n return total;\n } catch (error) {\n console.warn('Error getting month data count:', error);\n return 0;\n }\n }\n\n protected async handleContextMenuItemClick(event: AXContextMenuItemsClickEvent) {\n const command = event.item.data?.command;\n const provider = this.currentTask()?.provider ?? '';\n try {\n if (command) {\n await this.taskBoardService.executeCommand(command, provider);\n }\n } catch (error) {\n console.error('[TaskBoard] Context menu command failed:', error);\n } finally {\n if (command) {\n this.taskBoardService.requestRefresh(provider || undefined);\n }\n }\n }\n\n changeDate(forward: boolean) {\n const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'timeline-day':\n this.vm.setCurrentDate(date.add('day', forward ? 1 : -1).date);\n break;\n\n case 'week':\n this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);\n break;\n\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-weekly':\n case 'status-grouped-grid':\n this.vm.setCurrentDate(date.add('day', forward ? this.vm.daysCount() : -this.vm.daysCount()).date);\n break;\n\n case 'month':\n case 'timeline-month':\n this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);\n break;\n\n case 'timeline-year':\n this.vm.setCurrentDate(date.add('year', forward ? 1 : -1).date);\n break;\n }\n this.popover()?.close();\n this.calendar()?.render();\n this.sidebarCalendar()?.render();\n this.schedulerComponent()?.refresh();\n }\n\n private readonly rangeBasedViews: AXPTaskBoardViewMode[] = [\n 'grid',\n 'kanban',\n 'agenda',\n 'status-grouped-grid',\n 'timeline-weekly',\n ];\n\n protected handleCalendarSlotClick(event: AXCalendarSlotClick) {\n if (event.component.activeView !== event.component.depth) return;\n\n const clickedDate: Date = event.item;\n const currentView = this.vm.currentViewMode();\n\n if (this.rangeBasedViews.includes(currentView)) {\n const selectionStartDate = this.vm.rangeStartDate();\n\n if (!selectionStartDate) {\n // Clear any previous range selection before starting a new one\n this.vm.setDaysCount(7); // Reset to default\n this.vm.setRangeStartDate(clickedDate);\n this.calendar()?.render();\n this.sidebarCalendar()?.render();\n return;\n }\n\n const date1 = selectionStartDate.getTime();\n const date2 = clickedDate.getTime();\n const newStartDate = new Date(Math.min(date1, date2));\n const newEndDate = new Date(Math.max(date1, date2));\n\n const differenceInDays = this.calculateDifferenceInDays(newStartDate, newEndDate);\n\n // Clear any previous range selection state first to remove any other selection\n this.vm.setRangeStartDate(null);\n\n // Set the new range selection\n this.vm.setCurrentDate(newStartDate);\n this.vm.setDaysCount(differenceInDays);\n\n this.calendar()?.render();\n this.sidebarCalendar()?.render();\n this.popover()?.close();\n return;\n }\n\n const calendarSystem = this.localeService.activeProfile().calendar.system;\n let dateToSet = this.calendarService.create(clickedDate, calendarSystem).startOf('day').date;\n\n if (currentView === 'week') {\n const day = dateToSet.getDay();\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n let daysToSubtract = day - weekStart;\n if (daysToSubtract < 0) {\n daysToSubtract += 7;\n }\n dateToSet.setDate(dateToSet.getDate() - daysToSubtract);\n }\n\n this.vm.setCurrentDate(dateToSet);\n this.popover()?.close();\n this.calendar()?.render();\n this.sidebarCalendar()?.render();\n this.schedulerComponent()?.refresh();\n }\n\n getCellClass = (date: AXDateTime): string | null => {\n const currentView = this.vm.currentViewMode();\n const selectionStartDate = this.vm.rangeStartDate();\n\n if (this.rangeBasedViews.includes(currentView)) {\n if (selectionStartDate) {\n const axSelectionStartDate = this.calendarService.create(selectionStartDate);\n if (date.equal(axSelectionStartDate, 'day')) {\n return 'ax-range-start ax-range-end';\n }\n return null;\n }\n\n const fromRange = this.calendarService.create(this.vm.currentDate());\n const endRange = fromRange.add('day', this.vm.daysCount() - 1);\n\n const isStart = date.equal(fromRange, 'day');\n const isEnd = date.equal(endRange, 'day');\n\n if (isStart && isEnd) return 'ax-range-start ax-range-end';\n if (isStart) return 'ax-range-start';\n if (isEnd) return 'ax-range-end';\n if (date.compare(fromRange, 'day') > 0 && date.compare(endRange, 'day') < 0) {\n return 'ax-range-between';\n }\n\n return null;\n }\n\n if (currentView === 'week') {\n const from = this.calendarService.create(this.vm.currentDate());\n const end = from.add('day', 6);\n\n if (date.equal(from, 'day')) return 'ax-range-start';\n if (date.equal(end, 'day')) return 'ax-range-end';\n if (date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0) {\n return 'ax-range-between';\n }\n }\n\n return null;\n };\n\n /**\n * Helper function to calculate the difference in whole days between two dates.\n * The result is inclusive (e.g., May 5 to May 6 is a 2-day range).\n */\n private calculateDifferenceInDays(start: Date, end: Date): number {\n if (!start || !end) {\n return 1;\n }\n const startDate = new Date(start.getFullYear(), start.getMonth(), start.getDate());\n const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());\n\n const timeDifference = endDate.getTime() - startDate.getTime();\n const daysDifference = Math.round(timeDifference / (1000 * 3600 * 24));\n\n return daysDifference + 1;\n }\n\n handleTodayClick() {\n this.vm.setRangeStartDate(null);\n let currentDate: Date;\n if (this.vm.currentViewMode() === 'week') {\n currentDate = this.calendarService\n .create(new Date(), this.localeService.activeProfile().calendar.system)\n .startOf('week').date;\n } else {\n currentDate = new Date();\n }\n this.vm.setCurrentDate(currentDate);\n this.popover()?.close();\n this.calendar()?.render();\n this.sidebarCalendar()?.render();\n this.schedulerComponent()?.refresh();\n }\n\n protected taskTypeItems = computed(() => {\n return this.taskTypes().map((taskType) => ({\n id: taskType.name,\n text: taskType.title,\n icon: taskType.icon,\n }));\n });\n\n // Check if current view mode is kanban, grid, or status-grouped-grid\n protected isNonCalendarView = computed(() => {\n const mode = this.vm.currentViewMode();\n return mode === 'kanban' || mode === 'grid' || mode === 'status-grouped-grid';\n });\n\n protected selectedTaskTypeValues = computed(() => {\n const values = this.vm.selectedTaskTypeNames();\n // If in radio mode (non-calendar view), return only the first value or empty array\n if (this.isNonCalendarView() && values.length > 0) {\n return [values[0]];\n }\n return values;\n });\n\n protected handleTaskTypeSelectionChange(selectedValues: string[] | string): void {\n // Convert single value to array if needed (for radio mode)\n const values = Array.isArray(selectedValues) ? selectedValues : selectedValues ? [selectedValues] : [];\n // If nothing is selected, pass empty array to mean \"all task types\".\n this.vm.setSelectedTaskTypeNames(values, this.isQueryParam());\n }\n\n protected calendarEventTypeItems = computed(() => {\n return this.calendarEventTypes().map((eventType) => ({\n id: eventType.id,\n text: eventType.title,\n icon: eventType.icon,\n color: eventType.color,\n }));\n });\n\n protected selectedCalendarEventTypeValues = computed(() => {\n return this.vm.selectedCalendarEventTypeIds();\n });\n\n protected handleCalendarEventTypeSelectionChange(selectedValues: string[]): void {\n // If nothing is selected, pass empty array to show no types\n this.vm.setSelectedCalendarEventTypeIds(selectedValues || [], this.isQueryParam());\n // Refresh calendar view to update holidays\n this.schedulerComponent()?.refresh();\n }\n\n private async loadFromRoute(): Promise<void> {\n const snapshot = this.activatedRoute.snapshot.queryParamMap;\n const view = (snapshot.get('view') as AXPTaskBoardViewMode) ?? null;\n const allValidViews = this.menuItems().flatMap((c) => (c.children ? c.children.map((child) => child.key) : c.key));\n\n if (view && allValidViews.includes(view)) {\n this.vm.setViewMode(view);\n } else if (!this.vm.currentViewMode()) {\n this.vm.setViewMode('day');\n }\n\n const type = snapshot.getAll('type') as string[];\n const assignee = snapshot.getAll('assignee') as string[];\n const reporter = snapshot.getAll('reporter') as string[];\n const priority = snapshot.getAll('priority') as AXPPriorityFilterKey[];\n if (type.length || assignee.length || priority.length || reporter.length) {\n this.isQueryParam.set(true);\n this.vm.setSelectedTaskTypeNames(type, true);\n this.vm.setSelectedAssigneeIds(assignee, true);\n this.vm.setSelectedReporterIds(reporter, true);\n this.vm.setSelectedPriorities(priority, true);\n }\n\n const dateRange = snapshot.get('dateRange') as string;\n if (dateRange) {\n const range = this.taskBoardService.rangeCalculator(dateRange);\n if (range) {\n this.vm.setCurrentDate(range.from);\n this.vm.setDaysCount(this.calculateDifferenceInDays(range.from, range.end));\n switch (dateRange) {\n case 'today':\n this.vm.setViewMode('day');\n break;\n case 'this-week':\n this.vm.setViewMode('week');\n this.vm.setRangeStartDate(range.from);\n break;\n case 'this-month':\n this.vm.setViewMode('month');\n break;\n }\n }\n }\n }\n\n /**\n * Checks if the currently selected task is still present in the list of visible tasks.\n * If not, it clears the selection to prevent showing details for a hidden task.\n * @param visibleTasks The new array of tasks that will be displayed.\n */\n private validateSelectedTask(visibleTasks: AXPTask[]): void {\n const currentSelectedTask = this.vm.selectedTask();\n // Proceed only if a task is actually selected\n if (currentSelectedTask) {\n // Check if any task in the new list has the same ID as the selected one\n const isSelectedTaskVisible = visibleTasks.some((task) => task.id === currentSelectedTask.id);\n\n // If the selected task is NOT in the new list, clear the selection.\n if (!isSelectedTaskVisible) {\n this.vm.selectTask(null);\n }\n }\n }\n\n protected async getResources(): Promise<void> {\n if (this.vm.selectedTaskTypeNames().length !== 1) {\n this.resources.set([]);\n return;\n }\n const resources = await this.taskBoardService.getResources(this.vm.selectedTaskTypeNames()[0] ?? '');\n this.resources.set(resources);\n }\n\n protected toggleSidebar(): void {\n this.sidebarCollapsed.update((v) => !v);\n }\n\n protected override toggleStartSide(): void {\n this.layout()?.toggleStartSide();\n }\n}\n","<axp-page-layout *translate=\"let t\">\n <axp-layout-start-side\n class=\"ax-border-e ax-lightest-surface ax-h-full ax-min-w-0\"\n [style.width]=\"sidebarCollapsed() ? 'auto' : null\"\n >\n <axp-layout-header\n class=\"ax-flex !ax-flex-row ax-items-center ax-gap-2\"\n [class.ax-justify-center]=\"sidebarCollapsed()\"\n [class.ax-border-b]=\"!sidebarCollapsed()\"\n >\n @if (!sidebarCollapsed()) {\n <ng-container *ngTemplateOutlet=\"viewSelectorTemplate; context: { location: 'sidebar' }\"></ng-container>\n }\n <ax-button look=\"blank\" color=\"neutral\" (onClick)=\"toggleSidebar()\" [iconOnly]=\"true\">\n <ax-icon [icon]=\"sidebarCollapsed() ? 'fa-light fa-chevrons-right' : 'fa-light fa-chevrons-left'\"></ax-icon>\n </ax-button>\n </axp-layout-header>\n\n @if (!sidebarCollapsed()) {\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-overflow-y-auto\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-6\">\n <div class=\"ax-flex ax-flex-col ax-gap-3\">\n <ax-calendar\n #sidebarCalendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"currentDateForCalendar()\"\n [dayCellTemplate]=\"dayCellTemplate\"\n [monthCellTemplate]=\"monthCellTemplate\"\n class=\"ax-single-range-calendar ax-border ax-rounded-lg\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n </ax-calendar>\n </div>\n\n <div axAccordionGroup [accordion]=\"false\">\n <div\n class=\"ax-mb-2 ax-w-full ax-border ax-p-2 ax-rounded-lg\"\n axAccordionItem\n #calendarFilterTypeAccordion=\"axAccordionItem\"\n >\n <div\n class=\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-select-none ax-cursor-pointer\"\n axAccordionItemHeader\n >\n <h3 class=\"ax-text-sm ax-font-semibold\">\n {{ ('@task-management:task-board.filter.title-plural' | translate | async)! }}\n </h3>\n <ax-icon\n [icon]=\"calendarFilterTypeAccordion?.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"\n class=\"ax-transition-transform\"\n ></ax-icon>\n </div>\n <div axAccordionItemContent>\n <axm-task-board-filters #filtersComponent [isQueryParam]=\"isQueryParam()\"></axm-task-board-filters>\n </div>\n </div>\n @if (!isNonCalendarView()) {\n <div\n class=\"ax-mb-2 ax-w-full ax-border ax-p-2 ax-rounded-lg\"\n axAccordionItem\n #calendarEventTypeAccordion=\"axAccordionItem\"\n >\n <div\n class=\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-select-none ax-cursor-pointer\"\n axAccordionItemHeader\n >\n <h3 class=\"ax-text-sm ax-font-semibold\">\n {{ ('@task-management:task-board.filter.calendars' | translate | async)! }}\n </h3>\n <ax-icon\n [icon]=\"calendarEventTypeAccordion?.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"\n class=\"ax-transition-transform\"\n ></ax-icon>\n </div>\n @if (calendarEventTypeItems().length > 0) {\n <div axAccordionItemContent>\n <div class=\"ax-pt-2\">\n <ax-selection-list\n [items]=\"calendarEventTypeItems()\"\n [ngModel]=\"selectedCalendarEventTypeValues()\"\n (onValueChanged)=\"handleCalendarEventTypeSelectionChange($event.value)\"\n direction=\"vertical\"\n [multiple]=\"true\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n >\n <ng-template #itemTemplate let-item>\n <div class=\"ax-flex ax-items-center\">\n @if (item.icon) {\n <i [class]=\"item.icon\"></i>\n }\n <span [class]=\"item.icon ? 'ax-ml-2' : ''\">{{ item.text }}</span>\n </div>\n </ng-template>\n </ax-selection-list>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </axp-layout-content>\n }\n </axp-layout-start-side>\n <axp-page-toolbar>\n <axp-layout-prefix class=\"sm:ax-flex-row ax-flex-col ax-items-start\">\n <div class=\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <!-- <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover [adaptivityEnabled]=\"true\">\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover> -->\n </div>\n </axp-layout-prefix>\n\n <axp-layout-suffix>\n @if (deviceService.isSmall()) {\n <ax-button id=\"axp-toolbar-btn-filters\" (onClick)=\"toggleStartSide()\" [iconOnly]=\"true\" [color]=\"'default'\">\n <i class=\"fa-light fa-bars\"></i>\n </ax-button>\n }\n <!-- @if (!deviceService.isSmall()) {\n <ng-container *ngTemplateOutlet=\"viewSelectorTemplate; context: { location: 'toolbar' }\"></ng-container>\n } -->\n\n <!-- @if(deviceService.isLarge()) {\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n } -->\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-flex ax-flex-row ax-gap-2\">\n @if (isReady()) { @switch(vm.currentViewMode()) { @case('kanban') {\n <axm-task-board-kanban-view\n class=\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\"\n [(tasks)]=\"resolvedTasks\"\n (onTaskClick)=\"vm.selectTask($event)\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-kanban-view>\n } @case('grid') {\n <axm-task-board-grid-view\n class=\"ax-h-full ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n [refreshNonce]=\"refreshNonce()\"\n (onTaskClick)=\"vm.selectTask($event)\"\n ></axm-task-board-grid-view>\n } @case('status-grouped-grid') {\n <axm-task-board-status-grouped-grid-view\n class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n [refreshNonce]=\"refreshNonce()\"\n (onTaskClick)=\"vm.selectTask($event)\"\n ></axm-task-board-status-grouped-grid-view>\n } @default {\n <axm-task-board-calendar-view\n class=\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\"\n [resources]=\"resources()\"\n [startingDate]=\"vm.currentDate()\"\n [dataSource]=\"schedulerDataSource\"\n [refreshNonce]=\"refreshNonce()\"\n (onTaskClick)=\"vm.selectTask($event)\"\n [selectedView]=\"vm.currentViewMode()\"\n (onActionClick)=\"handleContextMenu($event)\"\n (onTaskRightClick)=\"handleContextMenu($event)\"\n (component)=\"schedulerComponentChanged($event)\"\n (onMonthSlotDblClicked)=\"handleMonthSlotDblClicked($event)\"\n ></axm-task-board-calendar-view>\n } }\n <ax-context-menu\n #rootContextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n @if (vm.isDetailPanelOpen() && deviceService.isLarge()) {\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\n } } @else {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-w-full ax-h-full\">\n <ax-loading></ax-loading>\n </div>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<ng-template #viewSelectorTemplate let-location=\"location\">\n @if (location === 'sidebar') {\n <ax-button\n class=\"ax-grow\"\n [text]=\"('@task-management:task-board.view.' + selectedViewMode().text | translate | async)!\"\n >\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #sidebarDropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.' + category.text | translate | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key, sidebarDropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.view.' + child.text | translate | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key, sidebarDropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.' + category.text | translate | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n } @else {\n <ax-button [text]=\"('@task-management:task-board.view.' + selectedViewMode().text | translate | async)!\">\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #toolbarDropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.' + category.text | translate | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key, toolbarDropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.view.' + child.text | translate | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key, toolbarDropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ ('@task-management:task-board.' + category.text | translate | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n }\n</ng-template>\n\n<ng-template #dayCellTemplate let-slot>\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-between ax-w-full ax-gap-1\"\n [style.padding-bottom]=\"'0.25rem'\"\n >\n <span class=\"ax-flex-1 ax-text-center\">{{ slot.slot.text ?? slot.slot.date?.day ?? '' }}</span>\n @if (slot.slot.date && getDayDataCount(slot.slot.date) > 0) {\n <ax-badge color=\"warning\"></ax-badge>\n }\n </div>\n</ng-template>\n\n<ng-template #monthCellTemplate let-slot>\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-between ax-w-full ax-gap-1\"\n [style.padding-bottom]=\"'0.25rem'\"\n >\n <span class=\"ax-flex-1 ax-text-center\">{{ slot.slot.text ?? '' }}</span>\n @if (slot.slot.date && getMonthDataCount(slot.slot.date) > 0) {\n <ax-badge color=\"warning\"></ax-badge>\n }\n </div>\n</ng-template>\n"],"names":["i2","i1","i4","i6"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { h as AXMPermissionsKeys, i as AXMSearchCommandProvider, j as AXMSettingProvider, k as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, l as AXMTaskBoardTaskPopoverShellComponent, m as AXMTaskManagementEntityProvider, o as AXMTaskManagementMenuProvider, p as AXMTaskManagementModule, q as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, r as AXM_TASK_VIEW_ALL_PERMISSION, s as AXPTaskBoardModule, d as AXPTaskBoardService, t as AXPTaskBoardShortcut, u as AXPTaskBoardShortcutViewComponent, v as AXPTaskBoardWidget, w as AXPTaskBoardWidgetViewComponent, x as AXPTaskPopoverComponent, y as AXPTaskTypeDataSourceDefinition, z as AXPWorkflowTaskProvider, B as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, C as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, D as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, E as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, F as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, G as isTaskBoardUnassignedAssigneeId, H as matchesTaskBoardAssigneeFilter, I as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, J as resolveTaskPopoverComponent, K as taskAssignmentFactory, L as taskChecklistItemFactory, M as taskContextFactory, N as taskDependencyFactory, O as taskFactory, P as taskStatusFactory, Q as taskTemplateFactory, S as taskTypeFactory, U as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs';
1
+ export { i as AXMPermissionsKeys, j as AXMSearchCommandProvider, k as AXMSettingProvider, l as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, m as AXMTaskBoardTaskPopoverShellComponent, o as AXMTaskManagementEntityProvider, p as AXMTaskManagementMenuProvider, q as AXMTaskManagementModule, s as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, t as AXM_TASK_VIEW_ALL_PERMISSION, u as AXPTaskBoardModule, d as AXPTaskBoardService, v as AXPTaskBoardShortcut, w as AXPTaskBoardShortcutViewComponent, x as AXPTaskBoardWidget, y as AXPTaskBoardWidgetViewComponent, z as AXPTaskPopoverComponent, B as AXPTaskTypeDataSourceDefinition, C as AXPWorkflowTaskProvider, D as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, E as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, F as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, G as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, H as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, h as hasTaskBoardSavedAssigneePreference, I as isTaskBoardUnassignedAssigneeId, J as matchesTaskBoardAssigneeFilter, K as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, L as resolveTaskBoardCurrentUserAssigneeItem, r as resolveTaskBoardSavedAssigneeIds, M as resolveTaskPopoverComponent, N as taskAssignmentFactory, O as taskChecklistItemFactory, P as taskContextFactory, Q as taskDependencyFactory, S as taskFactory, U as taskStatusFactory, V as taskTemplateFactory, W as taskTypeFactory, X as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-DAh3IByo.mjs';
2
2
  //# sourceMappingURL=acorex-modules-task-management.mjs.map
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/modules",
3
- "version": "21.0.0-next.63",
3
+ "version": "21.0.0-next.64",
4
4
  "peerDependencies": {
5
- "@acorex/platform": "21.0.0-next.63",
5
+ "@acorex/platform": "21.0.0-next.64",
6
6
  "@angular/service-worker": "^20.0.0",
7
7
  "d3": "^7.0.0",
8
8
  "html2canvas": "^1.0.0",