@acorex/modules 21.0.0-next.37 → 21.0.0-next.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs → acorex-modules-ai-management-acorex-modules-ai-management-CU2FvMTx.mjs} +260 -80
- package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-CU2FvMTx.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs → acorex-modules-ai-management-agent.entity-CUO9Jczk.mjs} +14 -19
- package/fesm2022/acorex-modules-ai-management-agent.entity-CUO9Jczk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-daTGJ1Rd.mjs} +52 -8
- package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-daTGJ1Rd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-Cmprtps-.mjs} +49 -7
- package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-Cmprtps-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs → acorex-modules-ai-management-assist.entity-C1nM_x4Z.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs.map → acorex-modules-ai-management-assist.entity-C1nM_x4Z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-index-KX3TVRXr.mjs → acorex-modules-ai-management-index-CjTjfydP.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-index-KX3TVRXr.mjs.map → acorex-modules-ai-management-index-CjTjfydP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-model.entity-BeuDUahR.mjs → acorex-modules-ai-management-model.entity-CPHxj8h7.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-model.entity-BeuDUahR.mjs.map → acorex-modules-ai-management-model.entity-CPHxj8h7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-a6MjMiXF.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-a6MjMiXF.mjs.map} +1 -1
- package/fesm2022/acorex-modules-ai-management.mjs +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-DniyhnPK.mjs} +509 -436
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DniyhnPK.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs → acorex-modules-assessment-management-assessment-case.entity-BggEmLhz.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs.map → acorex-modules-assessment-management-assessment-case.entity-BggEmLhz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs → acorex-modules-assessment-management-assessment-session.entity-CWR1QZv1.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CWR1QZv1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs → acorex-modules-assessment-management-fill-assessment-session.command-qajn_XDh.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-qajn_XDh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-B2SncZAW.mjs → acorex-modules-assessment-management-index-B2l5Se1l.mjs} +25 -26
- package/fesm2022/acorex-modules-assessment-management-index-B2l5Se1l.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs → acorex-modules-assessment-management-preview-question.command-BCS477_k.mjs} +10 -11
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-BCS477_k.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs → acorex-modules-assessment-management-preview-questionnaire.command-C8lyuqE-.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-C8lyuqE-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DtowOBLy.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DtowOBLy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs → acorex-modules-assessment-management-question-bank-item.entity-Br7XcU_u.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-Br7XcU_u.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-DNUf5RD3.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-DNUf5RD3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BdBKHvHP.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BdBKHvHP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs → acorex-modules-assessment-management-questionnaire.entity-B5aP_P4z.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs.map → acorex-modules-assessment-management-questionnaire.entity-B5aP_P4z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-C3Qt5fmY.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-C3Qt5fmY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs → acorex-modules-assessment-management-view-session-answers.command-C9VS-Tp3.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-C9VS-Tp3.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-BDs0ZgD5.mjs → acorex-modules-asset-management-acorex-modules-asset-management-F7Ok5dhs.mjs} +519 -81
- package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-F7Ok5dhs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-asset-system-history.entity-CSCwWY_F.mjs → acorex-modules-asset-management-asset-system-history.entity-D1HZG9wO.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-system-history.entity-CSCwWY_F.mjs.map → acorex-modules-asset-management-asset-system-history.entity-D1HZG9wO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-CcefMT8J.mjs → acorex-modules-asset-management-asset-system-type.entity-DDh5RK5M.mjs} +60 -38
- package/fesm2022/acorex-modules-asset-management-asset-system-type.entity-DDh5RK5M.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-6Rauu2Z1.mjs → acorex-modules-asset-management-asset-type-section-component.entity-em7lQ1eu.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-6Rauu2Z1.mjs.map → acorex-modules-asset-management-asset-type-section-component.entity-em7lQ1eu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-r_H1QGwp.mjs → acorex-modules-asset-management-asset-type-section.entity-BtcNy6Ra.mjs} +6 -48
- package/fesm2022/acorex-modules-asset-management-asset-type-section.entity-BtcNy6Ra.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-asset-type.entity-cWVqpbHH.mjs → acorex-modules-asset-management-asset-type.entity-DWhrFVFI.mjs} +53 -100
- package/fesm2022/acorex-modules-asset-management-asset-type.entity-DWhrFVFI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-asset.entity-CamZGWTM.mjs → acorex-modules-asset-management-asset.entity-BEjXfkPD.mjs} +66 -56
- package/fesm2022/acorex-modules-asset-management-asset.entity-BEjXfkPD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-assetSystem.entity-Dq2ASslk.mjs → acorex-modules-asset-management-assetSystem.entity-CJCVALaz.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-assetSystem.entity-Dq2ASslk.mjs.map → acorex-modules-asset-management-assetSystem.entity-CJCVALaz.mjs.map} +1 -1
- package/fesm2022/acorex-modules-asset-management.mjs +1 -1
- package/fesm2022/acorex-modules-common.mjs +38 -41
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1046 -249
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1098 -706
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +63 -35
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +101 -57
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-BRpqFRuI.mjs → acorex-modules-human-capital-management-employee.entity-BmF6_P6d.mjs} +48 -21
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-BmF6_P6d.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +18 -99
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-DtODwbIN.mjs +7137 -0
- package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-DtODwbIN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-DQJJtCqU.mjs → acorex-modules-maintenance-management-failure-effect.entity-BtczD4wu.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-DQJJtCqU.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-BtczD4wu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-gg2fpT2N.mjs → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CDUdEH-e.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-gg2fpT2N.mjs.map → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CDUdEH-e.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-CHUaAnID.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-re5UvGp7.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-CHUaAnID.mjs.map → acorex-modules-maintenance-management-failure-mode-mechanism.entity-re5UvGp7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-B93x1uP_.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-nbFz4LAe.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-B93x1uP_.mjs.map → acorex-modules-maintenance-management-failure-mode-solution.entity-nbFz4LAe.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-McM3l12Q.mjs → acorex-modules-maintenance-management-failure-register-cause.entity-CW2NlX59.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-McM3l12Q.mjs.map → acorex-modules-maintenance-management-failure-register-cause.entity-CW2NlX59.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-_jjy1oeg.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-Bi5XgfoL.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-_jjy1oeg.mjs.map → acorex-modules-maintenance-management-failure-register-effect.entity-Bi5XgfoL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-5CmdhowW.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-DcW6sK01.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-5CmdhowW.mjs.map → acorex-modules-maintenance-management-failure-register-mechanism.entity-DcW6sK01.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-D_lQrda5.mjs → acorex-modules-maintenance-management-failure-register.entity-CUxVZo0w.mjs} +3 -3
- package/fesm2022/acorex-modules-maintenance-management-failure-register.entity-CUxVZo0w.mjs.map +1 -0
- package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BIZxoVIS.mjs → acorex-modules-maintenance-management-failure-severity.entity-B7LBO-UA.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BIZxoVIS.mjs.map → acorex-modules-maintenance-management-failure-severity.entity-B7LBO-UA.mjs.map} +1 -1
- package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-D6ATa-HR.mjs +443 -0
- package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-D6ATa-HR.mjs.map +1 -0
- package/fesm2022/acorex-modules-maintenance-management.mjs +1 -3579
- package/fesm2022/acorex-modules-maintenance-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +11 -5
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-BrVNMCi_.mjs +356 -0
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-BrVNMCi_.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-business-unit-type.entity-CO8jMwVJ.mjs +181 -0
- package/fesm2022/acorex-modules-organization-management-business-unit-type.entity-CO8jMwVJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-business-unit.entity-WiTemBLu.mjs +359 -0
- package/fesm2022/acorex-modules-organization-management-business-unit.entity-WiTemBLu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-chart.entity-bRxA8XHZ.mjs → acorex-modules-organization-management-chart.entity-D6Y7kZfM.mjs} +33 -29
- package/fesm2022/acorex-modules-organization-management-chart.entity-D6Y7kZfM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-company.entity-BohMJQNi.mjs → acorex-modules-organization-management-company.entity-wpNiu8g3.mjs} +6 -8
- package/fesm2022/acorex-modules-organization-management-company.entity-wpNiu8g3.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-data-source-evaluator-scope.provider-BrKtojM9.mjs +48 -0
- package/fesm2022/acorex-modules-organization-management-data-source-evaluator-scope.provider-BrKtojM9.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-entity.provider-B0XbUW1I.mjs +59 -0
- package/fesm2022/acorex-modules-organization-management-entity.provider-B0XbUW1I.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-feature-definition.provider-D7t_nNNk.mjs +19 -0
- package/fesm2022/acorex-modules-organization-management-feature-definition.provider-D7t_nNNk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-S9Jlmr-o.mjs → acorex-modules-organization-management-job-definition.entity-Cb6zEf65.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-S9Jlmr-o.mjs.map → acorex-modules-organization-management-job-definition.entity-Cb6zEf65.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-job-level.datasource-RDGmLrqD.mjs +95 -0
- package/fesm2022/acorex-modules-organization-management-job-level.datasource-RDGmLrqD.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-job-level.entity-oedF18Xm.mjs +274 -0
- package/fesm2022/acorex-modules-organization-management-job-level.entity-oedF18Xm.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-menu.provider-DAKmAxld.mjs +193 -0
- package/fesm2022/acorex-modules-organization-management-menu.provider-DAKmAxld.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-mHV0AWGZ.mjs +1081 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-mHV0AWGZ.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-permission-definition.provider-Be8mvS_Z.mjs +77 -0
- package/fesm2022/acorex-modules-organization-management-permission-definition.provider-Be8mvS_Z.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs +56 -0
- package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-DLPufeWz.mjs → acorex-modules-organization-management-position.entity-BveMCKMd.mjs} +108 -106
- package/fesm2022/acorex-modules-organization-management-position.entity-BveMCKMd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-mMZywr0X.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-ivufxxLL.mjs} +25 -29
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-ivufxxLL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CfRBMxLk.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-DptdG1Nt.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CfRBMxLk.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-DptdG1Nt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-B06t1G1E.mjs → acorex-modules-organization-management-responsibilities-matrix.component-qO33kvo_.mjs} +14 -21
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix.component-qO33kvo_.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-responsibility-level.entity-zOjyjm5H.mjs +137 -0
- package/fesm2022/acorex-modules-organization-management-responsibility-level.entity-zOjyjm5H.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-CMmr3wJa.mjs → acorex-modules-organization-management-responsibility.entity-jWEiPi5-.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-CMmr3wJa.mjs.map → acorex-modules-organization-management-responsibility.entity-jWEiPi5-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-D3ged-4h.mjs +228 -0
- package/fesm2022/acorex-modules-organization-management-settings.provider-D3ged-4h.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-CZ4MibH4.mjs → acorex-modules-organization-management-team-member-role.entity-D9TZoACE.mjs} +68 -8
- package/fesm2022/acorex-modules-organization-management-team-member-role.entity-D9TZoACE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team-member.entity-8sTjn5Jn.mjs → acorex-modules-organization-management-team-member.entity-Bz4o7c3d.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-team-member.entity-8sTjn5Jn.mjs.map → acorex-modules-organization-management-team-member.entity-Bz4o7c3d.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-team.entity-CGR0UlYl.mjs → acorex-modules-organization-management-team.entity-uVffZPeg.mjs} +100 -37
- package/fesm2022/acorex-modules-organization-management-team.entity-uVffZPeg.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-widget-definition.provider-D4yjuqwx.mjs +48 -0
- package/fesm2022/acorex-modules-organization-management-widget-definition.provider-D4yjuqwx.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +1 -2216
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools-menu.provider-BFueKnuF.mjs +40 -0
- package/fesm2022/acorex-modules-platform-dev-tools-menu.provider-BFueKnuF.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs +33 -0
- package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +14 -94
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DPSNAAct.mjs → acorex-modules-report-management-report-runner-root-page.component-BjKrHoBg.mjs} +107 -107
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BjKrHoBg.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/{acorex-modules-reservation-management-acorex-modules-reservation-management-BMemqW2V.mjs → acorex-modules-reservation-management-acorex-modules-reservation-management-BoUiTlmu.mjs} +65 -76
- package/fesm2022/acorex-modules-reservation-management-acorex-modules-reservation-management-BoUiTlmu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-reservation-management-reservation-class-status.entity-Bg7d38wV.mjs → acorex-modules-reservation-management-reservation-class-status.entity-D-ZdqKa8.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-class-status.entity-Bg7d38wV.mjs.map → acorex-modules-reservation-management-reservation-class-status.entity-D-ZdqKa8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-reservation-management-reservation-resource-type.entity-BK-rLEXi.mjs → acorex-modules-reservation-management-reservation-resource-type.entity-zPD-Psml.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-resource-type.entity-BK-rLEXi.mjs.map → acorex-modules-reservation-management-reservation-resource-type.entity-zPD-Psml.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-reservation-management-reservation-status-transition.entity-2ngXhKAV.mjs → acorex-modules-reservation-management-reservation-status-transition.entity-CQ85ZAGF.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-status-transition.entity-2ngXhKAV.mjs.map → acorex-modules-reservation-management-reservation-status-transition.entity-CQ85ZAGF.mjs.map} +1 -1
- package/fesm2022/acorex-modules-reservation-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +269 -190
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-C1H_GTqy.mjs → acorex-modules-task-management-task-board.page-DA2563QE.mjs} +15 -10
- package/fesm2022/acorex-modules-task-management-task-board.page-DA2563QE.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +27 -13
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs +5 -0
- package/fesm2022/acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-column.component-C8lgSjfc.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-column.component-CDo0QVFy.mjs} +14 -6
- package/fesm2022/acorex-modules-workflow-management-activity-command-configurator-widget-column.component-CDo0QVFy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BGUPxGXP.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BYJpDQRs.mjs} +31 -16
- package/fesm2022/acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BYJpDQRs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-activity-definition.entity-Bvs1OfE_.mjs → acorex-modules-workflow-management-activity-definition.entity-B3DkgDQb.mjs} +10 -12
- package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-B3DkgDQb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-DWIDQsWq.mjs → acorex-modules-workflow-management-index-C9Qc07oK.mjs} +125 -3
- package/fesm2022/acorex-modules-workflow-management-index-C9Qc07oK.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-index-D8fjNgQJ.mjs +726 -0
- package/fesm2022/acorex-modules-workflow-management-index-D8fjNgQJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-index-DMnJRDbq.mjs +294 -0
- package/fesm2022/acorex-modules-workflow-management-index-DMnJRDbq.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-save-workflow-definition-activities.command-fFO152ni.mjs +56 -0
- package/fesm2022/acorex-modules-workflow-management-save-workflow-definition-activities.command-fFO152ni.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-definition.entity-aJou58ED.mjs → acorex-modules-workflow-management-workflow-definition.entity-DqPVpcSv.mjs} +101 -140
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-DqPVpcSv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-Cq7LE7u5.mjs → acorex-modules-workflow-management-workflow-instance.entity-sfsoT0is.mjs} +10 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-sfsoT0is.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-task-popover.component-CIakASVR.mjs → acorex-modules-workflow-management-workflow-task-popover.component-NpUx0sB5.mjs} +11 -7
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-NpUx0sB5.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +746 -402
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/organization-management/README.md +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-ai-management.d.ts +64 -16
- package/types/acorex-modules-asset-management.d.ts +115 -58
- package/types/acorex-modules-common.d.ts +2 -4
- package/types/acorex-modules-dashboard-management.d.ts +226 -109
- package/types/acorex-modules-data-management.d.ts +2 -2
- package/types/acorex-modules-document-management.d.ts +1 -2
- package/types/acorex-modules-human-capital-management.d.ts +6 -0
- package/types/acorex-modules-maintenance-management.d.ts +561 -41
- package/types/acorex-modules-notification-management.d.ts +7 -3
- package/types/acorex-modules-organization-management.d.ts +52 -107
- package/types/acorex-modules-security-management.d.ts +15 -1
- package/types/acorex-modules-task-management.d.ts +8 -13
- package/types/acorex-modules-workflow-management.d.ts +67 -13
- package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-B2SncZAW.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-BDs0ZgD5.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset-system-type.entity-CcefMT8J.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset-type-section.entity-r_H1QGwp.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset-type.entity-cWVqpbHH.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset.entity-CamZGWTM.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-BRpqFRuI.mjs.map +0 -1
- package/fesm2022/acorex-modules-maintenance-management-failure-register.entity-D_lQrda5.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-business-unit-type.entity-C-EKX6Oy.mjs +0 -91
- package/fesm2022/acorex-modules-organization-management-business-unit-type.entity-C-EKX6Oy.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-chart.entity-bRxA8XHZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-company.entity-BohMJQNi.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs +0 -784
- package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-DLPufeWz.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-mMZywr0X.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix.component-B06t1G1E.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team-member-role.entity-CZ4MibH4.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-CGR0UlYl.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-DPSNAAct.mjs.map +0 -1
- package/fesm2022/acorex-modules-reservation-management-acorex-modules-reservation-management-BMemqW2V.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-C1H_GTqy.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-activity-command-configurator-widget-column.component-C8lgSjfc.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BGUPxGXP.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-Bvs1OfE_.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-DWIDQsWq.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-aJou58ED.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Cq7LE7u5.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CIakASVR.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-task-management-task-board.page-DA2563QE.mjs","sources":["../../../../libs/modules/task-management/src/lib/features/task-board/settings.keys.ts","../../../../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/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":["export enum AXMTaskBoardSettings {\n ViewMode = 'taskboard.viewMode',\n DetailPanel = 'taskboard.DetailPanel',\n DaysCount = 'taskboard.calendar.daysCount',\n CurrentDate = 'taskboard.calendar.currentDate',\n SelectedPriorities = 'taskboard.filter.selectedPriorities',\n SelectedAssigneeIds = 'taskboard.filter.selectedAssigneeIds',\n SelectedReporterIds = 'taskboard.filter.selectedReporterIds',\n SelectedTaskTypeNames = 'taskboard.filter.selectedTaskTypeNames',\n SelectedCalendarEventTypeIds = 'taskboard.filter.selectedCalendarEventTypeIds',\n}\n","import { AXSchedulerView } from '@acorex/components/scheduler';\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 { 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 selectedPriorities: AXPPriorityFilterKey[];\n selectedAssigneeIds: (string | number)[];\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 selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\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((store, settingsService = inject(AXPSettingsService), taskBoardService = inject(AXPTaskBoardService)) => {\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 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.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 // 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 patchState(store, {\n daysCount: savedDaysCount || 7,\n detailPanel: savedDetailPanel || false,\n currentViewMode: savedViewMode || 'month',\n currentDate,\n selectedTaskTypeNames: savedTaskTypeNames || [],\n selectedAssigneeIds: savedAssigneeIds || [],\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 currentDate: new Date(),\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n selectedPriorities: [],\n selectedReporterIds: [],\n selectedCalendarEventTypeIds: [],\n taskTypes: store.taskTypes(),\n isLoading: false,\n });\n }\n },\n\n setViewMode(mode: AXPTaskBoardViewMode) {\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length === 0) {\n const firstTaskType = store.taskTypes()[0];\n if (firstTaskType) {\n this.setSelectedTaskTypeNames([firstTaskType.name]);\n }\n }\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length > 1) {\n this.setSelectedTaskTypeNames([store.selectedTaskTypeNames()[0]]);\n }\n patchState(store, { currentViewMode: mode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, mode)\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(assigneeIds: (string | number)[], isQueryParam: boolean = false) {\n patchState(store, { selectedAssigneeIds: assigneeIds });\n if (isQueryParam) return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedAssigneeIds, assigneeIds)\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","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 { 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 { isEqual, sortBy } from 'lodash-es';\nimport { RootConfig } from '../../../const';\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\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 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 protected nodes = computed<AXPWidgetNode[]>(() => [\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: true,\n dataSource: 'users',\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 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 $index) {\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","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport {\n AXDayOfWeekName,\n AXSchedulerAppointmentDataSource,\n AXSchedulerAppointmentMouseEvent,\n AXSchedulerComponent,\n AXSchedulerDateRange,\n AXSchedulerService,\n AXSchedulerSlotDropEvent,\n AXSchedulerSlotMouseEvent,\n AXSchedulerView,\n} from '@acorex/components/scheduler';\nimport { AXCalendarService, AXHolidayDate } from '@acorex/core/date-time';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n Type,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RootConfig } from '../../../../const';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport {\n AXPResource,\n AXPTask,\n AXPTaskAction,\n AXPTaskActionMenuItem,\n AXPTaskPopoverComponent,\n} 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: [\n CommonModule,\n AXSchedulerComponent,\n AXPopoverModule,\n AXButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXMTaskBoardCalendarViewComponent implements AfterViewInit {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly calendarService = inject(AXCalendarService);\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\n schedulerComponent = viewChild(AXSchedulerComponent);\n taskPopover = viewChild.required<AXPopoverComponent>('taskPopover');\n\n protected selectedTask = signal<AXPTask | null>(null);\n protected popoverTarget = signal<HTMLElement | null>(null);\n protected taskActions = signal<AXPTaskActionMenuItem[]>([]);\n protected customComponentType = signal<Type<AXPTaskPopoverComponent> | null>(null);\n\n // Separate primary and secondary actions\n protected primaryActions = computed(() => {\n return this.taskActions().filter((action) => (action.priority ?? 'secondary') === 'primary');\n });\n\n protected secondaryActions = computed(() => {\n return this.taskActions().filter((action) => (action.priority ?? 'secondary') === 'secondary');\n });\n\n protected customComponentInputs = computed(() => {\n const task = this.selectedTask();\n if (!task) return null;\n return { task };\n });\n\n resources = input<AXPResource[]>([]);\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 // Pass selected calendar IDs (can be empty array to show no events)\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 // async ngOnInit(): Promise<void> {\n // const firstDayOfWeek = await this.settingsService.get(AXPRegionalSetting.FirstDayOfWeek) as unknown as number;\n // const weekDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n // this.firstDayOfWeek.set(weekDays[firstDayOfWeek] as unknown as AXDayOfWeekName);\n // this.weekendDays.set((await this.settingsService.get(AXPRegionalSetting.WeekendDays)) as unknown as number[]);\n // }\n\n async ngAfterViewInit(): Promise<void> {\n if (this.schedulerComponent()) {\n this.component.emit(this.schedulerComponent()!);\n }\n }\n\n protected onTaskDrop(event: AXSchedulerSlotDropEvent) {\n // Check if dropped on the same slot (agenda view)\n if (event.slot.view === 'agenda' && event.isSameSlotDrop) {\n return;\n }\n\n // Use the scheduler service utility to calculate the new appointment data\n const dropResult = this.schedulerService.calculateAppointmentDropResult(event);\n\n // If dropped on the same slot, no action needed\n if (dropResult.isSameSlotDrop) {\n return;\n }\n\n // Get the original task (before modification)\n const originalTask = event.appointment as AXPTask;\n\n // Apply the drop result to create an updated task object\n // This uses the scheduler's internal utility for consistent date handling\n const updatedTask = this.schedulerService.applyDropResult({ ...originalTask }, dropResult) as AXPTask;\n\n // Persist the change to the backend via taskBoardService\n this.taskBoardService\n .updateTaskDateRange(originalTask, {\n from: dropResult.startDate,\n end: dropResult.endDate,\n })\n .then((persistedTask) => {\n // Emit the change event so parent can update its state\n this.onTaskChanged.emit(persistedTask);\n\n // Refresh the scheduler to reflect the persisted data\n // This ensures the scheduler's internal state is synchronized with the backend\n this.schedulerComponent()?.refresh();\n })\n .catch((error) => {\n console.error('[TaskBoardCalendar] Failed to update task date range:', error);\n // Revert the visual change if persistence fails by refreshing from backend\n this.schedulerComponent()?.refresh();\n });\n }\n\n protected onTaskRightClickHandler(event: AXSchedulerAppointmentMouseEvent) {\n this.onTaskRightClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment as AXPTask });\n }\n\n protected onSlotDblClicked(event: AXSchedulerSlotMouseEvent) {\n if (event.sender.selectedView() === 'month') {\n this.onMonthSlotDblClicked.emit(event.slot.startDate.date);\n }\n }\n\n protected async handleRangeChanged(event: AXSchedulerDateRange) {\n this.onRangeChanged.emit(event);\n }\n\n protected handleActionClick(event: AXSchedulerAppointmentMouseEvent) {\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\n // Find the appointment container element\n let targetElement = (event.nativeEvent.currentTarget as HTMLElement) || (event.nativeEvent.target as HTMLElement);\n\n // Traverse up to find the appointment 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 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 // Set the selected task and target element\n this.selectedTask.set(task);\n this.popoverTarget.set(targetElement);\n\n // Check if provider has a custom component\n await this.loadCustomComponent(task);\n\n // Load actions for the task\n await this.loadTaskActions(task);\n\n if (this.taskPopover() && targetElement) {\n this.taskPopover().target = targetElement;\n this.taskPopover().open();\n }\n\n // Still emit the event for backward compatibility\n this.onTaskClick.emit(task);\n }\n\n protected async loadTaskActions(task: AXPTask): Promise<void> {\n try {\n const providerName = task.provider;\n if (!providerName) {\n this.taskActions.set([]);\n return;\n }\n\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider) {\n this.taskActions.set([]);\n return;\n }\n\n const actions = await provider.getActions(task);\n // Ensure all actions have a priority (default to 'secondary' if not specified)\n const actionsWithPriority = (actions || []).map((action) => ({\n ...action,\n priority: action.priority ?? 'secondary',\n }));\n this.taskActions.set(actionsWithPriority);\n } catch (error) {\n console.error('Failed to load task actions:', error);\n this.taskActions.set([]);\n }\n }\n\n protected getActionColor(action: AXPTaskActionMenuItem): string | null {\n return action.color as string;\n }\n\n protected async executeAction(action: AXPTaskActionMenuItem): Promise<void> {\n const task = this.selectedTask();\n if (!task || !action.command) return;\n\n try {\n const providerName = task.provider;\n if (!providerName) return;\n\n await this.taskBoardService.executeCommand(action.command, providerName);\n this.closePopover();\n } catch (error) {\n console.error('Failed to execute action:', error);\n }\n }\n\n protected async openTaskDetails(): Promise<void> {\n const task = this.selectedTask();\n if (!task) return;\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.closePopover();\n } catch (error) {\n console.error('Failed to open task details:', error);\n }\n }\n\n protected async loadCustomComponent(task: AXPTask): Promise<void> {\n if (!task.provider) {\n console.log('[TaskPopover] No provider on task:', task);\n this.customComponentType.set(null);\n return;\n }\n\n const provider = this.taskBoardService.getProvider(task.provider);\n if (!provider) {\n console.log('[TaskPopover] Provider not found:', task.provider);\n this.customComponentType.set(null);\n return;\n }\n\n const componentGetter = provider.getComponent?.();\n if (!componentGetter) {\n console.log('[TaskPopover] No component getter on provider:', task.provider);\n this.customComponentType.set(null);\n return;\n }\n\n console.log('[TaskPopover] Component getter found:', componentGetter, 'Type:', typeof componentGetter);\n\n try {\n let componentType: Type<AXPTaskPopoverComponent>;\n\n // Check if it's a lazy loading function or direct component type\n // A lazy loader is a function that returns a Promise\n // A component type is a class constructor (also a function, but used differently)\n if (typeof componentGetter === 'function') {\n // Try calling it to see if it returns a Promise (lazy loader)\n const testCall = componentGetter as () =>\n | Promise<Type<AXPTaskPopoverComponent>>\n | Type<AXPTaskPopoverComponent>\n | undefined;\n let result: Promise<Type<AXPTaskPopoverComponent>> | Type<AXPTaskPopoverComponent> | undefined;\n\n try {\n result = testCall();\n } catch (e) {\n // If calling throws (e.g., class constructor without 'new'), use it directly\n console.log('[TaskPopover] Component getter is a class constructor, using directly');\n componentType = componentGetter as Type<AXPTaskPopoverComponent>;\n this.customComponentType.set(componentType);\n return;\n }\n\n if (result instanceof Promise) {\n // It's a lazy loading function\n console.log('[TaskPopover] Component getter is a lazy loader');\n componentType = await result;\n } else if (result) {\n // It returned a component type directly\n console.log('[TaskPopover] Component getter returned component type directly');\n componentType = result;\n } else {\n // Result is undefined, use the original as component type\n console.log('[TaskPopover] Component getter returned undefined, using original as component type');\n componentType = componentGetter as Type<AXPTaskPopoverComponent>;\n }\n } else {\n console.log('[TaskPopover] Component getter is not a function');\n this.customComponentType.set(null);\n return;\n }\n\n console.log('[TaskPopover] Component type loaded successfully:', componentType?.name);\n this.customComponentType.set(componentType);\n } catch (error) {\n console.error('[TaskPopover] Failed to load custom task popover component:', error);\n this.customComponentType.set(null);\n }\n }\n\n protected closePopover(): void {\n this.taskPopover()?.close();\n this.customComponentType.set(null);\n this.selectedTask.set(null);\n this.popoverTarget.set(null);\n this.taskActions.set([]);\n }\n\n protected formatTime(date: Date): string {\n return this.calendarService.create(date).format('HH:mm');\n }\n\n protected formatDate(date: Date): string {\n return this.calendarService.create(date).format('MMM DD, YYYY');\n }\n\n protected formatDateTime(date: Date): string {\n return this.calendarService.create(date).format('MMM DD, YYYY HH:mm');\n }\n\n protected isMultiDay(task: AXPTask): boolean {\n if (task.allDay) {\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n return start.date.getTime() !== end.date.getTime();\n }\n\n // Check if start and end are on different days\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n const startDay = start.date.getDate();\n const endDay = end.date.getDate();\n const startMonth = start.date.getMonth();\n const endMonth = end.date.getMonth();\n const startYear = start.date.getFullYear();\n const endYear = end.date.getFullYear();\n\n return startDay !== endDay || startMonth !== endMonth || startYear !== endYear;\n }\n\n protected formatDateRange(task: AXPTask): string {\n if (task.allDay) {\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n\n // Same day\n if (start.date.getTime() === end.date.getTime()) {\n return this.formatDate(task.startDate);\n }\n\n // Different days - show range\n const startFormatted = this.formatDate(task.startDate);\n const endFormatted = this.formatDate(task.endDate);\n\n // Same month and year\n if (start.date.getMonth() === end.date.getMonth() && start.date.getFullYear() === end.date.getFullYear()) {\n const startDay = start.date.getDate();\n const endDay = end.date.getDate();\n const monthYear = start.format('MMM YYYY');\n return `${startDay} - ${endDay}, ${monthYear}`;\n }\n\n // Different months or years\n return `${startFormatted} - ${endFormatted}`;\n }\n\n // Not all-day\n if (this.isMultiDay(task)) {\n const startFormatted = this.formatDateTime(task.startDate);\n const endFormatted = this.formatDateTime(task.endDate);\n return `${startFormatted} - ${endFormatted}`;\n }\n\n // Same day, show date with time range\n const dateFormatted = this.formatDate(task.startDate);\n const timeRange = `${this.formatTime(task.startDate)} - ${this.formatTime(task.endDate)}`;\n return `${dateFormatted} ${timeRange}`;\n }\n}\n","<ax-scheduler\n [hasHeader]=\"false\"\n [holidays]=\"holidays\"\n [resources]=\"resources()\"\n [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\"\n [selectedView]=\"currentSchedulerView()\"\n [multiDayViewDaysCount]=\"vm.daysCount()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\"\n (onActionClick)=\"handleActionClick($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\"\n (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentClicked)=\"onTaskClickHandler($event)\"\n [weekend]=\"weekendDays()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n></ax-scheduler>\n\n<!-- Task Detail Popover (Modern Google Calendar Style) -->\n<ax-popover\n #taskPopover\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [offsetY]=\"12\"\n [offsetX]=\"12\"\n [adaptivityEnabled]=\"true\"\n>\n <div>\n @if (selectedTask()) {\n <div class=\"task-popover ax-shadow-md ax-border\">\n <!-- Header Section -->\n <div class=\"task-popover__header\">\n <div class=\"task-popover__title-section\">\n <div class=\"task-popover__title-row\">\n <h3 class=\"task-popover__title\" [title]=\"selectedTask()!.title\">{{ selectedTask()!.title }}</h3>\n <button type=\"button\" class=\"task-popover__close-btn\" (click)=\"closePopover()\" aria-label=\"Close\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n </div>\n @if (selectedTask()!.description && !customComponentType()) {\n <p class=\"task-popover__description\">{{ selectedTask()!.description }}</p>\n }\n </div>\n </div>\n\n <!-- Custom Component or Default Content -->\n @if (customComponentType()) {\n <!-- Custom Component from Provider -->\n <div class=\"task-popover__custom-content\">\n <ng-container *ngComponentOutlet=\"customComponentType()!; inputs: customComponentInputs()!\"></ng-container>\n </div>\n } @else {\n <!-- Default Content Section -->\n <div class=\"task-popover__content\">\n <!-- Time -->\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-clock\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{ formatDateRange(selectedTask()!) }}</span>\n </div>\n </div>\n\n <!-- Status -->\n @if (selectedTask()!.status) {\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-flag\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{ selectedTask()!.status.title }}</span>\n </div>\n </div>\n }\n\n <!-- Assignee -->\n @if (selectedTask()!.assignee) {\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-user\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{\n selectedTask()!.assignee?.fullName || selectedTask()!.assignee?.username || 'Unassigned'\n }}</span>\n </div>\n </div>\n }\n\n <!-- Priority -->\n @if (selectedTask()!.priority) {\n <div class=\"task-popover__info-item\">\n <div\n class=\"task-popover__icon task-popover__icon--priority\"\n [attr.data-priority]=\"selectedTask()!.priority\"\n >\n <i class=\"fa-light fa-exclamation-circle\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span\n class=\"task-popover__info-text task-popover__priority\"\n [attr.data-priority]=\"selectedTask()!.priority\"\n >\n {{ selectedTask()!.priority }}\n </span>\n </div>\n </div>\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"task-popover__actions\">\n <!-- Task Actions from Provider -->\n @if (taskActions().length > 0) {\n <div class=\"task-popover__actions-group\">\n <!-- Primary Actions: Icon-only buttons -->\n @if (primaryActions().length > 0) {\n @for (action of primaryActions(); track action.name || action.title) {\n <ax-button\n [look]=\"'solid'\"\n [color]=\"getActionColor(action)\"\n (onClick)=\"executeAction(action)\"\n [disabled]=\"action.disabled === true\"\n [text]=\"(action.title | translate | async)!\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"action.icon\"></i>\n </ax-icon>\n </ax-prefix>\n }\n </ax-button>\n }\n }\n\n <!-- Secondary Actions: Dropdown with \"...\" button -->\n @if (secondaryActions().length > 0) {\n <ax-button [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (action of secondaryActions(); track action.name || action.title) {\n <ax-button-item\n [text]=\"(action.title | translate | async)!\"\n [disabled]=\"action.disabled === true\"\n (onClick)=\"executeAction(action)\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"action.icon\"></i>\n </ax-icon>\n </ax-prefix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ax-popover>\n","import { AXButtonClickEvent, AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableComponent, AXDataTableModule, AXDataTableRowClick } 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 effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPExtraField, AXPTask, AXPTaskAction, 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 styleUrls: ['./task-board-grid-view.component.scss'],\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\n dataSource = input.required<(filter?: AXPTaskFilter) => Promise<{ items: AXPTask[]; total: number }>>();\n\n onTaskClick = output<AXPTask>();\n onActionClick = output<AXPTaskAction>();\n\n private fetchedTasks = signal<AXPTask[]>([]);\n protected columns = signal<AXPExtraField[]>([]);\n protected grid = viewChild<AXDataTableComponent>('grid');\n\n protected tasksDataSource = computed(() => {\n const parentDataSource = this.dataSource();\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 // Store the original task for row click handler\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 #dataSourceChanged = effect(() => {\n // Track filter-related signals that affect the data source\n // When these change, the parent's filter() computed signal changes,\n // which means the data source function will return different results\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 \n // Use untracked to refresh the grid without tracking it\n untracked(() => {\n // Schedule refresh in next tick to avoid issues during effect execution\n setTimeout(() => {\n this.grid()?.refresh();\n }, 0);\n });\n });\n\n constructor() {\n // Ensure data source is refreshed after initial render\n afterNextRender(() => {\n untracked(() => {\n this.grid()?.refresh();\n });\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) {\n if (event.data) {\n // Get the original task from the mapped item or find it by ID\n const mappedItem = event.data as any;\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 onActionClickHandler(e: AXButtonClickEvent) {\n const task = this.fetchedTasks().find((task) => task.id === e.data.id);\n if (!task) return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n}\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=\"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=\"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=\"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]=\"'75px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[\n {\n name: 'view',\n text: ('@task-management:task-board.grid-headers.action-view' | translate | async) ?? 'View',\n icon: 'ax-icon ax-icon-more-horizontal',\n },\n ]\"\n ></ax-command-column>\n</ax-data-table>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport {\n AXKanbanBeforeDropEvent,\n AXKanbanComponent,\n AXKanbanItem,\n AXKanbanMouseEvent,\n AXKanbanSortEvent,\n AXKanbanStatus,\n} from '@acorex/components/kanban';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n model,\n output,\n signal,\n Type,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXPTask, AXPTaskAction, AXPTaskActionMenuItem, AXPTaskPopoverComponent } from '../../task-board.types';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\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: [\n CommonModule,\n AXKanbanComponent,\n AXPopoverModule,\n AXButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXMTaskBoardKanbanViewComponent implements AfterViewInit {\n protected readonly vm = inject(AXMTaskBoardViewModel);\n protected readonly taskBoardService = inject(AXPTaskBoardService);\n protected readonly calendarService = inject(AXCalendarService);\n protected readonly settingService = inject(AXPSettingsService);\n protected readonly commandService = inject(AXPCommandService);\n\n kanbanComponent = viewChild(AXKanbanComponent);\n taskPopover = viewChild.required<AXPopoverComponent>('taskPopover');\n\n protected selectedTask = signal<AXPTask | null>(null);\n protected popoverTarget = signal<HTMLElement | null>(null);\n protected taskActions = signal<AXPTaskActionMenuItem[]>([]);\n protected customComponentType = signal<Type<AXPTaskPopoverComponent> | null>(null);\n\n // Separate primary and secondary actions\n protected primaryActions = computed(() => {\n return this.taskActions().filter((action) => (action.priority ?? 'secondary') === 'primary');\n });\n\n protected secondaryActions = computed(() => {\n return this.taskActions().filter((action) => (action.priority ?? 'secondary') === 'secondary');\n });\n\n protected customComponentInputs = computed(() => {\n const task = this.selectedTask();\n if (!task) return null;\n return { task };\n });\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 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 = event.allItems.find((t) => t.id === item.id);\n if (task) {\n const status = this.statuses().find((s) => s.key === task.statusKey)!;\n return { ...item, index: task.index!, status: { id: status.key, title: status.title } };\n }\n return item;\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 });\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 // Set the selected task and target element\n this.selectedTask.set(task);\n this.popoverTarget.set(targetElement);\n\n // Check if provider has a custom component\n await this.loadCustomComponent(task);\n\n // Load actions for the task\n await this.loadTaskActions(task);\n\n // Open the popover\n setTimeout(() => {\n if (this.taskPopover() && targetElement) {\n this.taskPopover().target = targetElement;\n this.taskPopover().open();\n }\n }, 0);\n\n // Still emit the event for backward compatibility\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 protected async loadTaskActions(task: AXPTask): Promise<void> {\n try {\n const providerName = task.provider;\n if (!providerName) {\n this.taskActions.set([]);\n return;\n }\n\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider) {\n this.taskActions.set([]);\n return;\n }\n\n const actions = await provider.getActions(task);\n // Ensure all actions have a priority (default to 'secondary' if not specified)\n const actionsWithPriority = (actions || []).map((action) => ({\n ...action,\n priority: action.priority ?? 'secondary',\n }));\n this.taskActions.set(actionsWithPriority);\n } catch (error) {\n console.error('Failed to load task actions:', error);\n this.taskActions.set([]);\n }\n }\n\n protected getActionColor(action: AXPTaskActionMenuItem): string | null {\n return action.color as string;\n }\n\n //#region ---- Action Execution ----\n\n /**\n * Executes an action when user clicks on an action button in the popover.\n * If action succeeds, moves the item to the appropriate status using kanban.moveItem().\n */\n protected async executeAction(action: AXPTaskActionMenuItem): Promise<void> {\n const task = this.selectedTask();\n if (!task || !action.command) return;\n\n // Store task info before closing popover\n const taskId = task.id;\n const providerName = task.provider;\n const currentStatusKey = task.status.id;\n\n if (!providerName) return;\n\n try {\n const result = await this.taskBoardService.executeCommand(action.command, providerName);\n\n // Check if action was successful\n if (result?.success === false || result === null) {\n // Action was cancelled or failed - don't close popover, don't move item\n return;\n }\n\n // Action succeeded - close popover first\n this.closePopover();\n\n // Refresh tasks to get updated status and move item if status changed\n await this.refreshAndMoveItem(taskId, providerName, currentStatusKey);\n } catch (error) {\n console.error('Failed to execute action:', error);\n }\n }\n\n /**\n * Refreshes tasks from the provider and moves the item if status changed.\n */\n private async refreshAndMoveItem(\n taskId: string | number,\n providerName: string,\n previousStatusKey: string | number,\n ): Promise<void> {\n try {\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider) {\n return;\n }\n\n // Get updated tasks from provider\n const result = await provider.getTasks();\n const updatedTasks = result.items.map((t) => ({ ...t, provider: providerName }));\n\n // Find the updated task to get its new status\n const updatedTask = updatedTasks.find((t) => t.id === taskId);\n if (!updatedTask) {\n return;\n }\n\n const newStatusKey = updatedTask.status.id;\n\n // Check if status actually changed\n if (newStatusKey !== previousStatusKey) {\n // Move the item programmatically to the new status using kanban API\n const kanban = this.kanbanComponent();\n if (kanban) {\n await kanban.moveItem(taskId, newStatusKey);\n }\n }\n\n // Update the tasks signal with merged data\n const currentTasks = this.tasks();\n const updatedTasksMap = new Map(updatedTasks.map((t) => [t.id, t]));\n\n const mergedTasks = currentTasks.map((t) => {\n const updated = updatedTasksMap.get(t.id);\n return updated ? { ...updated } : t;\n });\n\n // Add any new tasks\n const existingIds = new Set(currentTasks.map((t) => t.id));\n const newTasks = updatedTasks.filter((t) => !existingIds.has(t.id)).map((t) => ({ ...t }));\n mergedTasks.push(...newTasks);\n\n this.tasks.set([...mergedTasks]);\n } catch (error) {\n console.error('Failed to refresh tasks:', error);\n }\n }\n\n //#endregion\n\n protected async loadCustomComponent(task: AXPTask): Promise<void> {\n if (!task.provider) {\n this.customComponentType.set(null);\n return;\n }\n\n const provider = this.taskBoardService.getProvider(task.provider);\n if (!provider) {\n this.customComponentType.set(null);\n return;\n }\n\n const componentGetter = provider.getComponent?.();\n if (!componentGetter) {\n this.customComponentType.set(null);\n return;\n }\n\n try {\n let componentType: Type<AXPTaskPopoverComponent>;\n\n // Check if it's a lazy loading function or direct component type\n if (typeof componentGetter === 'function') {\n const testCall = componentGetter as () =>\n | Promise<Type<AXPTaskPopoverComponent>>\n | Type<AXPTaskPopoverComponent>\n | undefined;\n let result: Promise<Type<AXPTaskPopoverComponent>> | Type<AXPTaskPopoverComponent> | undefined;\n\n try {\n result = testCall();\n } catch (e) {\n componentType = componentGetter as Type<AXPTaskPopoverComponent>;\n this.customComponentType.set(componentType);\n return;\n }\n\n if (result instanceof Promise) {\n componentType = await result;\n } else if (result) {\n componentType = result;\n } else {\n componentType = componentGetter as Type<AXPTaskPopoverComponent>;\n }\n } else {\n this.customComponentType.set(null);\n return;\n }\n\n this.customComponentType.set(componentType);\n } catch (error) {\n console.error('[TaskPopover] Failed to load custom task popover component:', error);\n this.customComponentType.set(null);\n }\n }\n\n protected closePopover(): void {\n this.taskPopover().close();\n this.customComponentType.set(null);\n this.selectedTask.set(null);\n this.popoverTarget.set(null);\n this.taskActions.set([]);\n }\n\n protected formatTime(date: Date): string {\n return this.calendarService.create(date).format('HH:mm');\n }\n\n protected formatDate(date: Date): string {\n return this.calendarService.create(date).format('MMM DD, YYYY');\n }\n\n protected formatDateTime(date: Date): string {\n return this.calendarService.create(date).format('MMM DD, YYYY HH:mm');\n }\n\n protected isMultiDay(task: AXPTask): boolean {\n if (task.allDay) {\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n return start.date.getTime() !== end.date.getTime();\n }\n\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n const startDay = start.date.getDate();\n const endDay = end.date.getDate();\n const startMonth = start.date.getMonth();\n const endMonth = end.date.getMonth();\n const startYear = start.date.getFullYear();\n const endYear = end.date.getFullYear();\n\n return startDay !== endDay || startMonth !== endMonth || startYear !== endYear;\n }\n\n protected formatDateRange(task: AXPTask): string {\n if (task.allDay) {\n const start = this.calendarService.create(task.startDate);\n const end = this.calendarService.create(task.endDate);\n\n if (start.date.getTime() === end.date.getTime()) {\n return this.formatDate(task.startDate);\n }\n\n const startFormatted = this.formatDate(task.startDate);\n const endFormatted = this.formatDate(task.endDate);\n\n if (start.date.getMonth() === end.date.getMonth() && start.date.getFullYear() === end.date.getFullYear()) {\n const startDay = start.date.getDate();\n const endDay = end.date.getDate();\n const monthYear = start.format('MMM YYYY');\n return `${startDay} - ${endDay}, ${monthYear}`;\n }\n\n return `${startFormatted} - ${endFormatted}`;\n }\n\n if (this.isMultiDay(task)) {\n const startFormatted = this.formatDateTime(task.startDate);\n const endFormatted = this.formatDateTime(task.endDate);\n return `${startFormatted} - ${endFormatted}`;\n }\n\n const dateFormatted = this.formatDate(task.startDate);\n const timeRange = `${this.formatTime(task.startDate)} - ${this.formatTime(task.endDate)}`;\n return `${dateFormatted} ${timeRange}`;\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\n<!-- Task Detail Popover (Modern Google Calendar Style) -->\n<ax-popover\n #taskPopover\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [offsetY]=\"12\"\n [offsetX]=\"12\"\n [adaptivityEnabled]=\"true\"\n>\n <div>\n @if (selectedTask()) {\n <div class=\"task-popover ax-shadow-md ax-border\">\n <!-- Header Section -->\n <div class=\"task-popover__header\">\n <div class=\"task-popover__title-section\">\n <div class=\"task-popover__title-row\">\n <h3 class=\"task-popover__title\" [title]=\"selectedTask()!.title\">{{ selectedTask()!.title }}</h3>\n <button type=\"button\" class=\"task-popover__close-btn\" (click)=\"closePopover()\" aria-label=\"Close\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n </div>\n @if (selectedTask()!.description && !customComponentType()) {\n <p class=\"task-popover__description\">{{ selectedTask()!.description }}</p>\n }\n </div>\n </div>\n\n <!-- Custom Component or Default Content -->\n @if (customComponentType()) {\n <!-- Custom Component from Provider -->\n <div class=\"task-popover__custom-content\">\n <ng-container *ngComponentOutlet=\"customComponentType()!; inputs: customComponentInputs()!\"></ng-container>\n </div>\n } @else {\n <!-- Default Content Section -->\n <div class=\"task-popover__content\">\n <!-- Time -->\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-clock\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{ formatDateRange(selectedTask()!) }}</span>\n </div>\n </div>\n\n <!-- Status -->\n @if (selectedTask()!.status) {\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-flag\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{ selectedTask()!.status.title }}</span>\n </div>\n </div>\n }\n\n <!-- Assignee -->\n @if (selectedTask()!.assignee) {\n <div class=\"task-popover__info-item\">\n <div class=\"task-popover__icon\">\n <i class=\"fa-light fa-user\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span class=\"task-popover__info-text\">{{\n selectedTask()!.assignee?.fullName || selectedTask()!.assignee?.username || 'Unassigned'\n }}</span>\n </div>\n </div>\n }\n\n <!-- Priority -->\n @if (selectedTask()!.priority) {\n <div class=\"task-popover__info-item\">\n <div\n class=\"task-popover__icon task-popover__icon--priority\"\n [attr.data-priority]=\"selectedTask()!.priority\"\n >\n <i class=\"fa-light fa-exclamation-circle\"></i>\n </div>\n <div class=\"task-popover__info-content\">\n <span\n class=\"task-popover__info-text task-popover__priority\"\n [attr.data-priority]=\"selectedTask()!.priority\"\n >\n {{ selectedTask()!.priority }}\n </span>\n </div>\n </div>\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"task-popover__actions\">\n <!-- Task Actions from Provider -->\n @if (taskActions().length > 0) {\n <div class=\"task-popover__actions-group\">\n <!-- Primary Actions: Icon-only buttons -->\n @if (primaryActions().length > 0) {\n @for (action of primaryActions(); track action.name || action.title) {\n <ax-button\n [look]=\"'solid'\"\n [color]=\"getActionColor(action)\"\n (onClick)=\"executeAction(action)\"\n [disabled]=\"action.disabled === true\"\n [text]=\"(action.title | translate | async)!\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"action.icon\"></i>\n </ax-icon>\n </ax-prefix>\n }\n </ax-button>\n }\n }\n\n <!-- Secondary Actions: Dropdown with \"...\" button -->\n @if (secondaryActions().length > 0) {\n <ax-button [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (action of secondaryActions(); track action.name || action.title) {\n <ax-button-item\n [text]=\"(action.title | translate | async)!\"\n [disabled]=\"action.disabled === true\"\n (onClick)=\"executeAction(action)\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"action.icon\"></i>\n </ax-icon>\n </ax-prefix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ax-popover>\n","import { AXButtonClickEvent, AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableComponent, AXDataTableModule } 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 effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPExtraField, AXPTask, AXPTaskAction, AXPTaskFilter, AXPWorkflowTaskProvider } from '../../task-board.types';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\n\ninterface StatusTaskGroup {\n statusInfo: AXKanbanStatus;\n tasks: AXDataSource<any>;\n}\n\n@Component({\n selector: 'axm-task-board-status-grouped-grid-view',\n templateUrl: './task-board-status-grouped-grid-view.component.html',\n styleUrls: ['./task-board-status-grouped-grid-view.component.scss'],\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\n provider = input<AXPWorkflowTaskProvider>();\n dataSource = input.required<(filter?: AXPTaskFilter) => Promise<{ items: AXPTask[]; total: number }>>();\n\n onActionClick = output<AXPTaskAction>();\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 #dataChanged = effect(async () => {\n // Track filter-related signals that affect the data source\n // When these change, the parent's filter() computed signal changes,\n // which means the data source function will return different results\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\n const parentDataSource = this.dataSource();\n const allStatuses = this.statuses();\n\n if (!parentDataSource || allStatuses.length === 0) {\n this.groupedTasks.set([]);\n this.allFetchedTasks.set([]);\n return;\n }\n\n const result = await parentDataSource();\n this.allFetchedTasks.set(result.items);\n const allTasks = result.items;\n\n const statusGroups = allStatuses.map((status) => {\n const tasksForStatus = allTasks.filter((task) => task.status.id === status.key);\n return {\n statusInfo: status,\n tasks: this.createTaskDataSourceForGroup(tasksForStatus),\n };\n });\n\n this.groupedTasks.set(statusGroups);\n untracked(() => {\n // Use afterRender to ensure data tables are rendered before refreshing\n setTimeout(() => {\n // Refresh data sources\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n // Refresh data table components\n this.grids().forEach((grid) => {\n grid.refresh();\n });\n }, 0);\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 // Track when groupedTasks changes to refresh grids\n const groups = this.groupedTasks();\n untracked(() => {\n // Wait for grids to be rendered\n setTimeout(() => {\n this.grids().forEach((grid) => {\n grid.refresh();\n });\n }, 100);\n });\n });\n\n constructor() {\n // Ensure data sources are refreshed after initial render\n afterNextRender(() => {\n untracked(() => {\n // Use a longer timeout to ensure data tables are fully rendered\n setTimeout(() => {\n // Refresh data sources\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n // Refresh data table components\n this.grids().forEach((grid) => {\n grid.refresh();\n });\n }, 200);\n });\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 }));\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 onActionClickHandler(e: AXButtonClickEvent) {\n const task = this.allFetchedTasks().find((task) => task.id === e.data.id);\n if (!task) return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n}\n","@for (group of groupedTasks(); track 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 >\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]=\"'75px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[\n {\n name: 'view',\n text: ('@task-management:task-board.grid-headers.action-view' | translate | async) ?? 'View',\n icon: 'ax-icon ax-icon-more-horizontal',\n },\n ]\"\n ></ax-command-column>\n </ax-data-table>\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 { AXPBreadcrumbItem, AXPDeviceService } 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 { AXPTaskBoardService } from './task-board.service';\nimport { AXPResource, AXPTask, AXPTaskAction, AXPTaskFilter, AXPWorkflowTaskProvider } from './task-board.types';\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 = 'calendar' | 'timeline' | 'table' | 'kanban';\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 taskTypeAccordionCollapsed = signal(false);\n protected calendarEventTypeAccordionCollapsed = signal(false);\n protected sidebarCollapsed = signal(false);\n private currentTask = signal<AXPTask | null>(null);\n protected currentViewMode = signal<'calendar' | 'kanban' | 'grid' | 'status-grouped-grid'>('calendar');\n protected schedulerComponent = signal<AXSchedulerComponent | null>(null);\n\n private dayDataCache = signal<Map<string, number>>(new Map());\n protected readonly menuItems = signal<\n {\n key: AXPTaskBoardViewCategory;\n text: string;\n icon: string;\n children?: { key: AXPTaskBoardViewMode; text: string; icon: string }[];\n }[]\n >([\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 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 for (const category of this.menuItems()) {\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 = this.menuItems()[0];\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 // When nothing is selected (empty array), we want to show NO types\n // The service treats empty/undefined types as \"show all providers\"\n // To show none when nothing is selected, we pass a non-existent type name\n // This ensures filteredProviders.length === 0, resulting in empty results\n const types = taskTypeNames.length > 0 ? taskTypeNames : ['__NONE__'];\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 // Always include types - empty array means show no types, non-empty means show only selected types\n types,\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 });\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 protected schedulerDataSource = (filter?: AXPTaskFilter): Promise<AXPTask[]> => {\n const finalFilter: AXPTaskFilter = { ...this.filter(), ...filter };\n\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result.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 eff = effect(async () => {\n const viewMode = this.vm.currentViewMode();\n const filter = this.filter();\n if (viewMode === 'kanban') {\n await this.taskResolveHandler(filter);\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.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 handleContextMenuItemClick(event: AXContextMenuItemsClickEvent) {\n this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');\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 }\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 let dateToSet = new Date(clickedDate);\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 }\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 }\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 show no 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 (onTaskClick)=\"vm.selectTask($event)\"\n (onActionClick)=\"handleContextMenu($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 (onActionClick)=\"handleContextMenu($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 (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":["i1","i2","i4","i5","i6"],"mappings":"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"}
|