@acorex/modules 21.0.0-next.71 → 21.0.0-next.72
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.mjs +102 -6
- package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-BnfSTevp.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-D7bHX4-0.mjs} +50 -39
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-D7bHX4-0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BWMbcZFT.mjs → acorex-modules-assessment-management-assessment-case.entity-Cpbj5sCP.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BWMbcZFT.mjs.map → acorex-modules-assessment-management-assessment-case.entity-Cpbj5sCP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-B42XNJUV.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-ALsxM0ww.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-B42XNJUV.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-ALsxM0ww.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-osEWRiw1.mjs → acorex-modules-assessment-management-assessment-session.entity-CMW7wsoN.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-osEWRiw1.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CMW7wsoN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs → acorex-modules-assessment-management-fill-assessment-session.command-C-dGKO7p.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-C-dGKO7p.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs → acorex-modules-assessment-management-preview-question.command-CBewUZSF.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs.map → acorex-modules-assessment-management-preview-question.command-CBewUZSF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs → acorex-modules-assessment-management-preview-questionnaire.command-DlwBZ7mO.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-DlwBZ7mO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BEhxeR8A.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BEhxeR8A.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DZBQOgAg.mjs → acorex-modules-assessment-management-question-bank-item.entity-CfCWKqN5.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DZBQOgAg.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-CfCWKqN5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BMv-XkZk.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-C03wF6Oy.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BMv-XkZk.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-C03wF6Oy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-BGkWU83k.mjs → acorex-modules-assessment-management-questionnaire.entity-CPMGkhGu.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-BGkWU83k.mjs.map → acorex-modules-assessment-management-questionnaire.entity-CPMGkhGu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs → acorex-modules-assessment-management-review-assessment-session.command-XK3IK3MH.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs.map → acorex-modules-assessment-management-review-assessment-session.command-XK3IK3MH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs → acorex-modules-assessment-management-view-session-answers.command-BPoF0v9C.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BPoF0v9C.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-BdiaXlkx.mjs → acorex-modules-asset-management-acorex-modules-asset-management-BCs0QS-r.mjs} +11 -8
- package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-BdiaXlkx.mjs.map → acorex-modules-asset-management-acorex-modules-asset-management-BCs0QS-r.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-Bf9nJTkD.mjs → acorex-modules-asset-management-asset-system-assignment.entity-B0sf4MzL.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-Bf9nJTkD.mjs.map → acorex-modules-asset-management-asset-system-assignment.entity-B0sf4MzL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-Cbzu3bqC.mjs → acorex-modules-asset-management-asset-system-type.entity-Cpcgr3KS.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-Cbzu3bqC.mjs.map → acorex-modules-asset-management-asset-system-type.entity-Cpcgr3KS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DA7dO3eE.mjs → acorex-modules-asset-management-asset-system.entity-CEuEjyuQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DA7dO3eE.mjs.map → acorex-modules-asset-management-asset-system.entity-CEuEjyuQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-C9B-TUQD.mjs → acorex-modules-asset-management-asset-type-section-component.entity-CwaPrUlk.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-C9B-TUQD.mjs.map → acorex-modules-asset-management-asset-type-section-component.entity-CwaPrUlk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BNz1Zfox.mjs → acorex-modules-asset-management-asset-type-section.entity-CK0dAIU4.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BNz1Zfox.mjs.map → acorex-modules-asset-management-asset-type-section.entity-CK0dAIU4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-type.entity-D_bBxBKI.mjs → acorex-modules-asset-management-asset-type.entity-DexywYoA.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset-type.entity-D_bBxBKI.mjs.map → acorex-modules-asset-management-asset-type.entity-DexywYoA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset.entity-Cf_H7edH.mjs → acorex-modules-asset-management-asset.entity-BNj3kuHC.mjs} +2 -2
- package/fesm2022/{acorex-modules-asset-management-asset.entity-Cf_H7edH.mjs.map → acorex-modules-asset-management-asset.entity-BNj3kuHC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-asset-management.mjs +1 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-JEkso4J7.mjs +1580 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-JEkso4J7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DTlzE1Rd.mjs → acorex-modules-auth-app-chooser.component-MjGWaBI0.mjs} +5 -6
- package/fesm2022/acorex-modules-auth-app-chooser.component-MjGWaBI0.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-change-password.command-Ctyw3WfE.mjs +32 -0
- package/fesm2022/acorex-modules-auth-change-password.command-Ctyw3WfE.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-change-photo.command-_vxTFH0X.mjs +32 -0
- package/fesm2022/acorex-modules-auth-change-photo.command-_vxTFH0X.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-edit-signature.command-CcTJJwAX.mjs +32 -0
- package/fesm2022/acorex-modules-auth-edit-signature.command-CcTJJwAX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-DSQfhKUZ.mjs → acorex-modules-auth-login.module-FJxkiTeX.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DSQfhKUZ.mjs.map → acorex-modules-auth-login.module-FJxkiTeX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-BDM5XtcM.mjs → acorex-modules-auth-master.layout-B4Vpqg2F.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-BDM5XtcM.mjs.map → acorex-modules-auth-master.layout-B4Vpqg2F.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-C4Q78fuo.mjs → acorex-modules-auth-oauth-callback.component-It5tkYuf.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-C4Q78fuo.mjs.map → acorex-modules-auth-oauth-callback.component-It5tkYuf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-ChF8OYdd.mjs → acorex-modules-auth-open-sessions.command-Qik0eKUR.mjs} +32 -7
- package/fesm2022/acorex-modules-auth-open-sessions.command-Qik0eKUR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-password.component-C_55t9er.mjs → acorex-modules-auth-password.component-B2BIaXZ_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-C_55t9er.mjs.map → acorex-modules-auth-password.component-B2BIaXZ_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-VwEsbfR1.mjs → acorex-modules-auth-password.component-BRnlp4j1.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-password.component-VwEsbfR1.mjs.map → acorex-modules-auth-password.component-BRnlp4j1.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-profile-activity-chart.component-CmtkTEI5.mjs +177 -0
- package/fesm2022/acorex-modules-auth-profile-activity-chart.component-CmtkTEI5.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-profile-coming-soon.command-DBbFbzAx.mjs +31 -0
- package/fesm2022/acorex-modules-auth-profile-coming-soon.command-DBbFbzAx.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-profile-delete-account-danger-zone.component-62K4A_lM.mjs +78 -0
- package/fesm2022/acorex-modules-auth-profile-delete-account-danger-zone.component-62K4A_lM.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-profile-page-component.provider-Dz9yFSnA.mjs +27 -0
- package/fesm2022/acorex-modules-auth-profile-page-component.provider-Dz9yFSnA.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-profile-page.component-BGkPr1_o.mjs +370 -0
- package/fesm2022/acorex-modules-auth-profile-page.component-BGkPr1_o.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-prPiMAL6.mjs → acorex-modules-auth-routes-D6PLdcTC.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-prPiMAL6.mjs.map → acorex-modules-auth-routes-D6PLdcTC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-signout-command-IUSkq50M.mjs +24 -0
- package/fesm2022/acorex-modules-auth-signout-command-IUSkq50M.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DVyI9cGU.mjs → acorex-modules-auth-tenant-chooser.component-qGfNSQ6H.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DVyI9cGU.mjs.map → acorex-modules-auth-tenant-chooser.component-qGfNSQ6H.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-C7vZrBHK.mjs → acorex-modules-auth-two-factor.module-DcvqZOIq.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-C7vZrBHK.mjs.map → acorex-modules-auth-two-factor.module-DcvqZOIq.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-business-core.mjs +2 -2
- package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-calendar-management-datasource.provider-CnxTy81J.mjs +225 -0
- package/fesm2022/acorex-modules-calendar-management-datasource.provider-CnxTy81J.mjs.map +1 -0
- package/fesm2022/acorex-modules-calendar-management.mjs +481 -392
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +63 -26
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-B1ijk48q.mjs → acorex-modules-conversation-acorex-modules-conversation-BX09r8Xj.mjs} +178 -35
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-BX09r8Xj.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Mlan0ADR.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-hMiSfvL2.mjs} +5 -5
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Mlan0ADR.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-hMiSfvL2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component--Q5RxEyI.mjs → acorex-modules-conversation-comments-page.component-BJu6CoNR.mjs} +18 -6
- package/fesm2022/acorex-modules-conversation-comments-page.component-BJu6CoNR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command--_hCn9Et.mjs → acorex-modules-conversation-send-assist-chat-message.command-B471NQRh.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command--_hCn9Et.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-B471NQRh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BE1BPjj2.mjs → acorex-modules-conversation-start-assist-chat.command-CasClVbR.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BE1BPjj2.mjs.map → acorex-modules-conversation-start-assist-chat.command-CasClVbR.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-DJMJFziT.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-9MoalNjW.mjs} +6 -6
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-9MoalNjW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-index-DoTVg9ro.mjs → acorex-modules-dashboard-management-index-Dsu3Yw8O.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-index-DoTVg9ro.mjs.map → acorex-modules-dashboard-management-index-Dsu3Yw8O.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-data-management-index-DEm_BsbE.mjs → acorex-modules-data-management-index-CxVSgxTM.mjs} +4 -1
- package/fesm2022/acorex-modules-data-management-index-CxVSgxTM.mjs.map +1 -0
- package/fesm2022/acorex-modules-data-management.mjs +2 -2
- package/fesm2022/acorex-modules-document-management.mjs +6 -3
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-financial-core.mjs +7 -7
- package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-C1lNgBrC.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-Cb7_mEJt.mjs} +71 -26
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Cb7_mEJt.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-CDBhDXr8.mjs → acorex-modules-human-capital-management-approve-leave-request.command-wO2u1IKg.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-CDBhDXr8.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-wO2u1IKg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-pz0IOxa3.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BDesaehJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-pz0IOxa3.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BDesaehJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-Czwdu-nH.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-D8u45bHk.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-Czwdu-nH.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-D8u45bHk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-ZTRqQfRv.mjs → acorex-modules-human-capital-management-employee.entity-sq1G--OE.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-sq1G--OE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BIIc7EpP.mjs → acorex-modules-human-capital-management-employment-type.entity-qgNm-AAZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BIIc7EpP.mjs.map → acorex-modules-human-capital-management-employment-type.entity-qgNm-AAZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-Bmv7oLAr.mjs → acorex-modules-human-capital-management-leave-request.entity-DcdYnwyN.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-Bmv7oLAr.mjs.map → acorex-modules-human-capital-management-leave-request.entity-DcdYnwyN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-OwdxjYKk.mjs → acorex-modules-human-capital-management-leave-type.entity-Dr5YHs8p.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-OwdxjYKk.mjs.map → acorex-modules-human-capital-management-leave-type.entity-Dr5YHs8p.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-C_XVrmZt.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-Bni4vgt5.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-C_XVrmZt.mjs.map → acorex-modules-human-capital-management-lifecycle-event-type.entity-Bni4vgt5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event.entity-BwLAEtqA.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-ds4Iq82f.mjs} +5 -5
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-ds4Iq82f.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-DdMmiGbn.mjs → acorex-modules-human-capital-management-position-assignment.entity-CalDJQrD.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-DdMmiGbn.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-CalDJQrD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Bdwwkcs3.mjs → acorex-modules-human-capital-management-reject-leave-request.command-CshyWVLH.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Bdwwkcs3.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-CshyWVLH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-Cq-aA79w.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-BENxT4Qg.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-Cq-aA79w.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-BENxT4Qg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-Cx9TRMlY.mjs → acorex-modules-human-capital-management-start-leave-request-flow.command-DjkzwxHN.mjs} +17 -5
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-DjkzwxHN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DjepuAcu.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-x8J2kneo.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DjepuAcu.mjs.map → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-x8J2kneo.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/{acorex-modules-learning-management-course.entity-DUUgeikJ.mjs → acorex-modules-learning-management-course.entity-BG6TaQk4.mjs} +4 -4
- package/fesm2022/acorex-modules-learning-management-course.entity-BG6TaQk4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs → acorex-modules-learning-management-enrollment.entity-DjpUDcLv.mjs} +5 -5
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-DjpUDcLv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-learning-path.entity-Zo--bDto.mjs → acorex-modules-learning-management-learning-path.entity-C2S0VVeq.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-learning-path.entity-C2S0VVeq.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-skill.entity-VXkLbaD4.mjs → acorex-modules-learning-management-skill.entity-DAM-_nuT.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-skill.entity-DAM-_nuT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-training.entity-C4KDv1uh.mjs → acorex-modules-learning-management-training.entity-THsY3DiM.mjs} +4 -4
- package/fesm2022/acorex-modules-learning-management-training.entity-THsY3DiM.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +5 -5
- package/fesm2022/{acorex-modules-locale-management-profiles-BOveGIcE.mjs → acorex-modules-locale-management-profiles-BYZa_Ti0.mjs} +23 -8
- package/fesm2022/acorex-modules-locale-management-profiles-BYZa_Ti0.mjs.map +1 -0
- package/fesm2022/acorex-modules-locale-management.mjs +31 -15
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +4 -4
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-acorex-modules-maintenance-management-DiM2aFgg.mjs → acorex-modules-maintenance-management-acorex-modules-maintenance-management-Xyu3jpEh.mjs} +14 -14
- package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-Xyu3jpEh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-BCMeHmxS.mjs → acorex-modules-maintenance-management-failure-effect.entity-CYQ3ExC3.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-BCMeHmxS.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-CYQ3ExC3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-ByBoVQ8D.mjs → acorex-modules-maintenance-management-failure-mode-asset-type.entity-Cz0tQkwZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-ByBoVQ8D.mjs.map → acorex-modules-maintenance-management-failure-mode-asset-type.entity-Cz0tQkwZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-BJs4KhkU.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-vqX88zIA.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-BJs4KhkU.mjs.map → acorex-modules-maintenance-management-failure-mode-mechanism.entity-vqX88zIA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-rw24sQxb.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-CpefPKAY.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-rw24sQxb.mjs.map → acorex-modules-maintenance-management-failure-mode-solution.entity-CpefPKAY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-C_6sjW8z.mjs → acorex-modules-maintenance-management-failure-register-cause.entity-C1_4BQBR.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-C_6sjW8z.mjs.map → acorex-modules-maintenance-management-failure-register-cause.entity-C1_4BQBR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DCIAzSYQ.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-BRssxEl6.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DCIAzSYQ.mjs.map → acorex-modules-maintenance-management-failure-register-effect.entity-BRssxEl6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-DlXr6A4i.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-YyBWG00N.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-DlXr6A4i.mjs.map → acorex-modules-maintenance-management-failure-register-mechanism.entity-YyBWG00N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4J3um7j.mjs → acorex-modules-maintenance-management-failure-register.entity-CH-C6Q7m.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4J3um7j.mjs.map → acorex-modules-maintenance-management-failure-register.entity-CH-C6Q7m.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-C-spQtYx.mjs → acorex-modules-maintenance-management-failure-severity.entity-BMoUEcVC.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-C-spQtYx.mjs.map → acorex-modules-maintenance-management-failure-severity.entity-BMoUEcVC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-Huahnjhd.mjs → acorex-modules-maintenance-management-maintenance-template.entity-CBayAtRD.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-Huahnjhd.mjs.map → acorex-modules-maintenance-management-maintenance-template.entity-CBayAtRD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-work-order-list-command-1YsWctqu.mjs → acorex-modules-maintenance-management-work-order-list-command-mMZGiG3q.mjs} +2 -2
- package/fesm2022/{acorex-modules-maintenance-management-work-order-list-command-1YsWctqu.mjs.map → acorex-modules-maintenance-management-work-order-list-command-mMZGiG3q.mjs.map} +1 -1
- package/fesm2022/acorex-modules-maintenance-management.mjs +1 -1
- package/fesm2022/acorex-modules-measurement-core.mjs +4 -4
- package/fesm2022/acorex-modules-measurement-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-BSf1wd6j.mjs +3836 -0
- package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-BSf1wd6j.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management-notification-page.component-ATFOFL7C.mjs +548 -0
- package/fesm2022/acorex-modules-notification-management-notification-page.component-ATFOFL7C.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management.mjs +1 -3590
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-order-management-bulk-buy-order-item.entity-DGtHoqqj.mjs → acorex-modules-order-management-bulk-buy-order-item.entity-63BpszqL.mjs} +2 -2
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-63BpszqL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-entity.provider-DVHBXOCD.mjs → acorex-modules-order-management-entity.provider-DGwVhM91.mjs} +3 -3
- package/fesm2022/{acorex-modules-order-management-entity.provider-DVHBXOCD.mjs.map → acorex-modules-order-management-entity.provider-DGwVhM91.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-order-management-member-order-line.entity-DZJ90WHI.mjs → acorex-modules-order-management-member-order-line.entity-Czu7qE7i.mjs} +2 -2
- package/fesm2022/acorex-modules-order-management-member-order-line.entity-Czu7qE7i.mjs.map +1 -0
- package/fesm2022/acorex-modules-order-management.mjs +2 -2
- package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-Iopv_G-d.mjs → acorex-modules-organization-management-acorex-modules-organization-management-smWojO0l.mjs} +40 -40
- package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-Iopv_G-d.mjs.map → acorex-modules-organization-management-acorex-modules-organization-management-smWojO0l.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-D7NChP_A.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BLifgeRF.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-D7NChP_A.mjs.map → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BLifgeRF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-PkeqXFt1.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-CKFqYBLD.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-PkeqXFt1.mjs.map → acorex-modules-organization-management-add-position-to-business-unit.command-CKFqYBLD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-team-to-business-unit.command-jalyX-F4.mjs → acorex-modules-organization-management-add-team-to-business-unit.command-DfaLXvTw.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-team-to-business-unit.command-jalyX-F4.mjs.map → acorex-modules-organization-management-add-team-to-business-unit.command-DfaLXvTw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CBjAC9Ip.mjs → acorex-modules-organization-management-business-unit.entity-BkeFPaIT.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CBjAC9Ip.mjs.map → acorex-modules-organization-management-business-unit.entity-BkeFPaIT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-chart.entity-CaY_5LGN.mjs → acorex-modules-organization-management-chart.entity-bWx4IFSv.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-chart.entity-CaY_5LGN.mjs.map → acorex-modules-organization-management-chart.entity-bWx4IFSv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-company.entity-BUBhqyCn.mjs → acorex-modules-organization-management-company.entity-yPUVhIzy.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-company.entity-BUBhqyCn.mjs.map → acorex-modules-organization-management-company.entity-yPUVhIzy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-entity.provider-BZsy_wi6.mjs → acorex-modules-organization-management-entity.provider-IhJwnzd-.mjs} +15 -15
- package/fesm2022/{acorex-modules-organization-management-entity.provider-BZsy_wi6.mjs.map → acorex-modules-organization-management-entity.provider-IhJwnzd-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-CEO1nSFP.mjs → acorex-modules-organization-management-feature-definition.provider-B5yqFa4Z.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-CEO1nSFP.mjs.map → acorex-modules-organization-management-feature-definition.provider-B5yqFa4Z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-ChRGp5ZI.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-C51sgWyG.mjs} +3 -3
- package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-ChRGp5ZI.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-C51sgWyG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-aWZO09Xw.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-EEWB5VUq.mjs} +8 -3
- package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-EEWB5VUq.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-DJcFhQM9.mjs → acorex-modules-organization-management-job-definition-skills-page.component-L2GmFRra.mjs} +7 -2
- package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-L2GmFRra.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-BoM49wYi.mjs → acorex-modules-organization-management-job-definition.entity-CDXsJADe.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-BoM49wYi.mjs.map → acorex-modules-organization-management-job-definition.entity-CDXsJADe.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DbQG79uR.mjs → acorex-modules-organization-management-job-level.datasource-C84zFgVo.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DbQG79uR.mjs.map → acorex-modules-organization-management-job-level.datasource-C84zFgVo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-level.entity-XO-NsBG-.mjs → acorex-modules-organization-management-job-level.entity-BqjP04k-.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-level.entity-XO-NsBG-.mjs.map → acorex-modules-organization-management-job-level.entity-BqjP04k-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-menu.provider-DXW6aUIX.mjs → acorex-modules-organization-management-menu.provider-ChR3Rh4W.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-menu.provider-DXW6aUIX.mjs.map → acorex-modules-organization-management-menu.provider-ChR3Rh4W.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-default-node-contribution.provider-ClKr6K6Y.mjs → acorex-modules-organization-management-org-chart-default-node-contribution.provider-DFVts4Q2.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-default-node-contribution.provider-ClKr6K6Y.mjs.map → acorex-modules-organization-management-org-chart-default-node-contribution.provider-DFVts4Q2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-BjIDzwXF.mjs → acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-D1r0YQbL.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-BjIDzwXF.mjs.map → acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-D1r0YQbL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-DRAlUmIa.mjs → acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Df1x_VF0.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-DRAlUmIa.mjs.map → acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Df1x_VF0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DwSjov_Z.mjs → acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BPWFJSx2.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DwSjov_Z.mjs.map → acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BPWFJSx2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CuPEM-_N.mjs → acorex-modules-organization-management-org-chart.page-BzKPjJwY.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CuPEM-_N.mjs.map → acorex-modules-organization-management-org-chart.page-BzKPjJwY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-BNthP0QV.mjs → acorex-modules-organization-management-permission-definition.provider-DShSa-Wp.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-BNthP0QV.mjs.map → acorex-modules-organization-management-permission-definition.provider-DShSa-Wp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-position.entity-Cja3CYmL.mjs → acorex-modules-organization-management-position.entity-DyF02saN.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-position.entity-Cja3CYmL.mjs.map → acorex-modules-organization-management-position.entity-DyF02saN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-Dm1a6-uO.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-CGYBDMLJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-Dm1a6-uO.mjs.map → acorex-modules-organization-management-remove-position-from-business-unit.command-CGYBDMLJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-BWtzQZyW.mjs → acorex-modules-organization-management-replace-position-assignee.command-DgR5-k3v.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-BWtzQZyW.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-DgR5-k3v.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-C4W0VlL5.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-oqrqfc2t.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-C4W0VlL5.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-oqrqfc2t.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CaPqjai7.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BEZm8HRq.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CaPqjai7.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BEZm8HRq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-nJuP6fA0.mjs → acorex-modules-organization-management-responsibilities-matrix.component-CBfTsRx4.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-nJuP6fA0.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-CBfTsRx4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CvvzIjvE.mjs → acorex-modules-organization-management-responsibility-level.entity-BAm1en5A.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CvvzIjvE.mjs.map → acorex-modules-organization-management-responsibility-level.entity-BAm1en5A.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-Cc0Ou-hc.mjs → acorex-modules-organization-management-responsibility.entity-DTCMbqNy.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-Cc0Ou-hc.mjs.map → acorex-modules-organization-management-responsibility.entity-DTCMbqNy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-settings.provider-C33ZatCD.mjs → acorex-modules-organization-management-settings.provider-C6op-yff.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-settings.provider-C33ZatCD.mjs.map → acorex-modules-organization-management-settings.provider-C6op-yff.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-DGuF5ux1.mjs → acorex-modules-organization-management-team-business-unit.entity-B4Wra1YB.mjs} +3 -3
- package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-B4Wra1YB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-BMXkNavp.mjs → acorex-modules-organization-management-team-member-role.entity-CVH2m8uw.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-BMXkNavp.mjs.map → acorex-modules-organization-management-team-member-role.entity-CVH2m8uw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-team-member.entity-Deem7M3N.mjs → acorex-modules-organization-management-team-member.entity-By97LISn.mjs} +3 -3
- package/fesm2022/acorex-modules-organization-management-team-member.entity-By97LISn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team.entity-CNmpaJ3F.mjs → acorex-modules-organization-management-team.entity-Cezsw5Vq.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-team.entity-CNmpaJ3F.mjs.map → acorex-modules-organization-management-team.entity-Cezsw5Vq.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +1 -1
- package/fesm2022/acorex-modules-person-core.mjs +1 -1
- package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +3 -3
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs → acorex-modules-platform-management-acorex-modules-platform-management-LJBIjN39.mjs} +5 -5
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-LJBIjN39.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs → acorex-modules-platform-management-menu-list.component-SXuHsuj0.mjs} +3 -3
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs.map → acorex-modules-platform-management-menu-list.component-SXuHsuj0.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-procurement-management.mjs +2 -2
- package/fesm2022/acorex-modules-procurement-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-product-catalog-product-sku.entity-C3ynevYI.mjs → acorex-modules-product-catalog-product-sku.entity-DNgCnDtL.mjs} +2 -2
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-DNgCnDtL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-product-catalog-product.entity-BbB7GAg7.mjs → acorex-modules-product-catalog-product.entity-CBwSFTL2.mjs} +2 -2
- package/fesm2022/acorex-modules-product-catalog-product.entity-CBwSFTL2.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog.mjs +2 -2
- package/fesm2022/acorex-modules-report-management.mjs +5 -5
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-reservation-management-acorex-modules-reservation-management-BoUiTlmu.mjs → acorex-modules-reservation-management-acorex-modules-reservation-management-D7YtuAbZ.mjs} +7 -7
- package/fesm2022/{acorex-modules-reservation-management-acorex-modules-reservation-management-BoUiTlmu.mjs.map → acorex-modules-reservation-management-acorex-modules-reservation-management-D7YtuAbZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-reservation-management-reservation-class-status.entity-D-ZdqKa8.mjs → acorex-modules-reservation-management-reservation-class-status.entity-D4insz8u.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-class-status.entity-D-ZdqKa8.mjs.map → acorex-modules-reservation-management-reservation-class-status.entity-D4insz8u.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-reservation-management-reservation-resource-type.entity-zPD-Psml.mjs → acorex-modules-reservation-management-reservation-resource-type.entity-Dn2CMqO9.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-resource-type.entity-zPD-Psml.mjs.map → acorex-modules-reservation-management-reservation-resource-type.entity-Dn2CMqO9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-reservation-management-reservation-status-transition.entity-CQ85ZAGF.mjs → acorex-modules-reservation-management-reservation-status-transition.entity-CrwUrIrC.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-reservation-status-transition.entity-CQ85ZAGF.mjs.map → acorex-modules-reservation-management-reservation-status-transition.entity-CrwUrIrC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-reservation-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +4 -4
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BfbVV7di.mjs → acorex-modules-settings-management-acorex-modules-settings-management-O8kBegUF.mjs} +136 -65
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-O8kBegUF.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BBb5hqkc.mjs → acorex-modules-settings-management-permission-definition.provider-CU7SEx6v.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BBb5hqkc.mjs.map → acorex-modules-settings-management-permission-definition.provider-CU7SEx6v.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-Dn8CYgux.mjs → acorex-modules-settings-management-setting-page.component-D8_cjOzW.mjs} +181 -19
- package/fesm2022/acorex-modules-settings-management-setting-page.component-D8_cjOzW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-B5jpPo9k.mjs → acorex-modules-settings-management-setting-view.component-DIvERzMC.mjs} +65 -17
- package/fesm2022/acorex-modules-settings-management-setting-view.component-DIvERzMC.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +2 -2
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-BB7eeaYX.mjs → acorex-modules-task-management-acorex-modules-task-management-Bp-9vZdR.mjs} +939 -383
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-Bp-9vZdR.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management-task-board.page-Brgg9wJa.mjs +3368 -0
- package/fesm2022/acorex-modules-task-management-task-board.page-Brgg9wJa.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +2 -2
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-gXP-srRO.mjs +5600 -0
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-gXP-srRO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BW6kK9Av.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs.map → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-BW6kK9Av.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-activity-definition.entity-B3DkgDQb.mjs → acorex-modules-workflow-management-activity-definition.entity-BlK-sL_3.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-activity-definition.entity-B3DkgDQb.mjs.map → acorex-modules-workflow-management-activity-definition.entity-BlK-sL_3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-automation.entity-BigK8yE2.mjs → acorex-modules-workflow-management-automation.entity-C9q24TPu.mjs} +3 -3
- package/fesm2022/acorex-modules-workflow-management-automation.entity-C9q24TPu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-1B7oRAKX.mjs → acorex-modules-workflow-management-index-BFdyFvcu.mjs} +8 -5
- package/fesm2022/acorex-modules-workflow-management-index-BFdyFvcu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-DC_9M9dk.mjs → acorex-modules-workflow-management-index-BbVGViSE.mjs} +7 -163
- package/fesm2022/acorex-modules-workflow-management-index-BbVGViSE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-34UZrsxw.mjs → acorex-modules-workflow-management-index-Bq5tBgif.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-index-34UZrsxw.mjs.map → acorex-modules-workflow-management-index-Bq5tBgif.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-CztICioV.mjs → acorex-modules-workflow-management-index-CIV7Abnc.mjs} +53 -5
- package/fesm2022/acorex-modules-workflow-management-index-CIV7Abnc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-save-workflow-definition-activities.command-CGNwslcn.mjs → acorex-modules-workflow-management-save-workflow-definition-activities.command-B_tjSneV.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-save-workflow-definition-activities.command-CGNwslcn.mjs.map → acorex-modules-workflow-management-save-workflow-definition-activities.command-B_tjSneV.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-activity-instance-rows.utils-L8W4ogSI.mjs +172 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-activity-instance-rows.utils-L8W4ogSI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-column.component-Cpi0Pq3n.mjs → acorex-modules-workflow-management-workflow-configurator-widget-column.component-CPOQZxsq.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-column.component-Cpi0Pq3n.mjs.map → acorex-modules-workflow-management-workflow-configurator-widget-column.component-CPOQZxsq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-edit.component-RbwX6Nd_.mjs → acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CqF3z8Xq.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-edit.component-RbwX6Nd_.mjs.map → acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CqF3z8Xq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-definition.entity-BfACGpo4.mjs → acorex-modules-workflow-management-workflow-definition.entity-BbnGGXZs.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-definition.entity-BfACGpo4.mjs.map → acorex-modules-workflow-management-workflow-definition.entity-BbnGGXZs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs → acorex-modules-workflow-management-workflow-instance.entity-Ci6c4VoI.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs.map → acorex-modules-workflow-management-workflow-instance.entity-Ci6c4VoI.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-CJ0cRwUE.mjs +579 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-CJ0cRwUE.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CHv2_W75.mjs +285 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CHv2_W75.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -5358
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs +42 -0
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs +70 -0
- package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management.mjs +1229 -67
- package/fesm2022/acorex-modules-workplacesafety-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-ai-management.d.ts +21 -2
- package/types/acorex-modules-asset-management.d.ts +1 -0
- package/types/acorex-modules-calendar-management.d.ts +61 -33
- package/types/acorex-modules-common.d.ts +1 -1
- package/types/acorex-modules-conversation.d.ts +40 -6
- package/types/acorex-modules-document-management.d.ts +2 -0
- package/types/acorex-modules-notification-management.d.ts +32 -3
- package/types/acorex-modules-settings-management.d.ts +12 -2
- package/types/acorex-modules-task-management.d.ts +196 -47
- package/types/acorex-modules-workflow-management.d.ts +23 -28
- package/types/acorex-modules-workplacesafety-management.d.ts +124 -4
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-BnfSTevp.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BKMD5v6t.mjs +0 -807
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BKMD5v6t.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-DTlzE1Rd.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-ChF8OYdd.mjs.map +0 -1
- package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs +0 -95
- package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-B1ijk48q.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-comments-page.component--Q5RxEyI.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DJMJFziT.mjs.map +0 -1
- package/fesm2022/acorex-modules-data-management-index-DEm_BsbE.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-C1lNgBrC.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-ZTRqQfRv.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-BwLAEtqA.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-Cx9TRMlY.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-course.entity-DUUgeikJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-learning-path.entity-Zo--bDto.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-skill.entity-VXkLbaD4.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-training.entity-C4KDv1uh.mjs.map +0 -1
- package/fesm2022/acorex-modules-locale-management-profiles-BOveGIcE.mjs.map +0 -1
- package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-DiM2aFgg.mjs.map +0 -1
- package/fesm2022/acorex-modules-notification-management-notification-page.component-6YOiGgKm.mjs +0 -858
- package/fesm2022/acorex-modules-notification-management-notification-page.component-6YOiGgKm.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-DGtHoqqj.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-member-order-line.entity-DZJ90WHI.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-aWZO09Xw.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-DJcFhQM9.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-DGuF5ux1.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team-member.entity-Deem7M3N.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-C3ynevYI.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product.entity-BbB7GAg7.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-BfbVV7di.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-Dn8CYgux.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-view.component-B5jpPo9k.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-BB7eeaYX.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-BmUIngWk.mjs +0 -2284
- package/fesm2022/acorex-modules-task-management-task-board.page-BmUIngWk.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-automation.entity-BigK8yE2.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-1B7oRAKX.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-CztICioV.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-DC_9M9dk.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-B4hEv2-a.mjs +0 -255
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-B4hEv2-a.mjs.map +0 -1
|
@@ -1,34 +1,35 @@
|
|
|
1
|
-
import { AXP_DATASOURCE_DEFINITION_PROVIDER, AXPBroadcastEventService, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';
|
|
1
|
+
import { AXPPlatformScope, AXP_DATASOURCE_DEFINITION_PROVIDER, AXPBroadcastEventService, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';
|
|
2
2
|
import { AXP_ENTITY_CONFIG_TOKEN, AXPEntityService, AXP_ENTITY_DEFINITION_LOADER, entityMasterCrudActions, entityMasterDeleteAction, entityDetailsSimpleCondition, entityMasterRecordActions, entityDetailsCrudActions } from '@acorex/platform/layout/entity';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import {
|
|
7
|
-
import { AXP_HOME_PAGES, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, createAllQueryView, AXPEntityCommandScope } from '@acorex/platform/common';
|
|
8
|
-
import { AXPSessionService,
|
|
6
|
+
import { InjectionToken, Injectable, inject, output, DestroyRef, computed, signal, effect, ChangeDetectionStrategy, Component, NgModule, Injector, input, ViewEncapsulation, ElementRef } from '@angular/core';
|
|
7
|
+
import { AXPSystemStatuses, AXPRegionalSetting, AXPSettingsService, AXP_PROTECTED_ROUTE_GUARDS, AXP_HOME_PAGES, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, createAllQueryView, AXPEntityCommandScope } from '@acorex/platform/common';
|
|
8
|
+
import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
|
|
9
|
+
import { get } from 'lodash-es';
|
|
10
|
+
import { AXLocaleService } from '@acorex/core/locale';
|
|
9
11
|
import { ROUTES, RouterLink } from '@angular/router';
|
|
10
|
-
import * as i1$1 from '@acorex/components/button';
|
|
11
|
-
import { AXButtonComponent, AXButtonModule } from '@acorex/components/button';
|
|
12
12
|
import { AXChipsComponent } from '@acorex/components/chips';
|
|
13
|
-
import
|
|
14
|
-
import { AXDecoratorIconComponent, AXDecoratorGenericComponent, AXDecoratorModule } from '@acorex/components/decorators';
|
|
15
|
-
import { AXContextMenuComponent } from '@acorex/components/menu';
|
|
16
|
-
import { AXFormatPipe } from '@acorex/core/format';
|
|
13
|
+
import { AXFormatService, AXFormatPipe } from '@acorex/core/format';
|
|
17
14
|
import * as i5 from '@acorex/core/translation';
|
|
18
15
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
19
16
|
import { AXPStateMessageComponent } from '@acorex/platform/layout/components';
|
|
20
17
|
import { AXPLayoutBaseWidgetComponent, AXPWidgetsCatalog, cloneProperty, AXPWidgetGroupEnum, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex/platform/layout/widget-core';
|
|
21
|
-
import { AXCalendarService } from '@acorex/core/date-time';
|
|
22
|
-
import { AXMCalendarManagementService, AXMCalendarManagementModule } from '@acorex/modules/calendar-management';
|
|
23
18
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
19
|
+
import { AXCalendarService } from '@acorex/core/date-time';
|
|
20
|
+
import { mapCalendarOccasionToHolidayDate, AXMCalendarManagementService, AXMCalendarManagementModule } from '@acorex/modules/calendar-management';
|
|
24
21
|
import { Subject } from 'rxjs';
|
|
22
|
+
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
23
|
+
import { AXPlatform } from '@acorex/core/platform';
|
|
24
|
+
import * as i1$1 from '@acorex/components/button';
|
|
25
|
+
import { AXButtonModule, AXButtonComponent } from '@acorex/components/button';
|
|
26
|
+
import * as i2 from '@acorex/components/decorators';
|
|
27
|
+
import { AXDecoratorModule, AXDecoratorIconComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';
|
|
28
|
+
import * as i3 from '@acorex/components/dropdown';
|
|
29
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
25
30
|
import { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/layout/widgets';
|
|
26
31
|
import { AXDataSource } from '@acorex/cdk/common';
|
|
27
32
|
import { AXMUsersEntityService } from '@acorex/modules/security-management';
|
|
28
|
-
import * as i3 from '@acorex/components/dropdown';
|
|
29
|
-
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
30
|
-
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
31
|
-
import { AXPlatform } from '@acorex/core/platform';
|
|
32
33
|
import { AXPWidgetsList } from '@acorex/modules/common';
|
|
33
34
|
|
|
34
35
|
const config = {
|
|
@@ -123,133 +124,700 @@ const TaskManagementManifest = {
|
|
|
123
124
|
};
|
|
124
125
|
//#endregion
|
|
125
126
|
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
highest: 0,
|
|
127
|
+
const AXPTASK_PRIORITIES = ['urgent', 'high', 'normal', 'low'];
|
|
128
|
+
const TASK_PRIORITY_ORDER = {
|
|
129
|
+
urgent: 0,
|
|
130
130
|
high: 1,
|
|
131
|
-
|
|
131
|
+
normal: 2,
|
|
132
132
|
low: 3,
|
|
133
|
-
|
|
134
|
-
no_priority: 5,
|
|
133
|
+
no_priority: 4,
|
|
135
134
|
};
|
|
136
|
-
|
|
135
|
+
/** Normalizes workflow or legacy task-board priority values to the canonical enum. */
|
|
136
|
+
function normalizeTaskPriority(value) {
|
|
137
|
+
const normalized = String(value ?? 'normal')
|
|
138
|
+
.trim()
|
|
139
|
+
.toLowerCase();
|
|
140
|
+
if (normalized === 'urgent' || normalized === 'high' || normalized === 'normal' || normalized === 'low') {
|
|
141
|
+
return normalized;
|
|
142
|
+
}
|
|
143
|
+
const legacyMap = {
|
|
144
|
+
highest: 'urgent',
|
|
145
|
+
medium: 'normal',
|
|
146
|
+
lowest: 'low',
|
|
147
|
+
};
|
|
148
|
+
return legacyMap[normalized] ?? 'normal';
|
|
149
|
+
}
|
|
150
|
+
function getTaskPriorityColor(priority) {
|
|
151
|
+
switch (priority) {
|
|
152
|
+
case 'urgent':
|
|
153
|
+
return 'danger';
|
|
154
|
+
case 'high':
|
|
155
|
+
return 'warning';
|
|
156
|
+
case 'normal':
|
|
157
|
+
return 'secondary';
|
|
158
|
+
case 'low':
|
|
159
|
+
return 'neutral';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const LEGACY_PRIORITY_FILTER_MAP = {
|
|
163
|
+
highest: 'urgent',
|
|
164
|
+
medium: 'normal',
|
|
165
|
+
lowest: 'low',
|
|
166
|
+
};
|
|
167
|
+
/** Maps persisted or query-string priority filter keys to the canonical filter enum. */
|
|
168
|
+
function normalizePriorityFilterKey(value) {
|
|
169
|
+
const normalized = String(value ?? '')
|
|
170
|
+
.trim()
|
|
171
|
+
.toLowerCase();
|
|
172
|
+
if (normalized === 'no_priority') {
|
|
173
|
+
return 'no_priority';
|
|
174
|
+
}
|
|
175
|
+
if (normalized in LEGACY_PRIORITY_FILTER_MAP) {
|
|
176
|
+
return LEGACY_PRIORITY_FILTER_MAP[normalized];
|
|
177
|
+
}
|
|
178
|
+
return normalizeTaskPriority(normalized);
|
|
179
|
+
}
|
|
180
|
+
function normalizePriorityFilterKeys(values) {
|
|
181
|
+
if (!values?.length) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
return [...new Set(values.map(normalizePriorityFilterKey))];
|
|
185
|
+
}
|
|
186
|
+
function getTaskPriorityFilterKey(task) {
|
|
187
|
+
return task.priority ? normalizeTaskPriority(task.priority) : 'no_priority';
|
|
188
|
+
}
|
|
189
|
+
function matchesTaskPriorityFilter(task, priorities) {
|
|
190
|
+
if (priorities.length === 0) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
const filterSet = new Set(priorities.map(normalizePriorityFilterKey));
|
|
194
|
+
return filterSet.has(getTaskPriorityFilterKey(task));
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const BADGE_COLORS = new Set([
|
|
198
|
+
'primary',
|
|
199
|
+
'secondary',
|
|
200
|
+
'success',
|
|
201
|
+
'warning',
|
|
202
|
+
'danger',
|
|
203
|
+
'neutral',
|
|
204
|
+
'ghost',
|
|
205
|
+
'accent1',
|
|
206
|
+
'accent2',
|
|
207
|
+
'accent3',
|
|
208
|
+
]);
|
|
209
|
+
/** Maps entity status semantic colors to badge/chip tokens (`info` → `accent3`). */
|
|
210
|
+
function mapEntityStatusColorForBadge(color, statusId) {
|
|
211
|
+
const normalized = color?.trim().toLowerCase();
|
|
212
|
+
if (normalized === 'info') {
|
|
213
|
+
return 'accent3';
|
|
214
|
+
}
|
|
215
|
+
if (normalized && BADGE_COLORS.has(normalized)) {
|
|
216
|
+
return normalized;
|
|
217
|
+
}
|
|
218
|
+
return resolveDefaultTaskStatusColor(statusId);
|
|
219
|
+
}
|
|
220
|
+
function resolveDefaultTaskStatusColor(statusId) {
|
|
221
|
+
if (String(statusId) === AXPSystemStatuses.Pending.name) {
|
|
222
|
+
return 'warning';
|
|
223
|
+
}
|
|
224
|
+
return 'primary';
|
|
225
|
+
}
|
|
226
|
+
/** Resolves the chip color for a task row, aligned with workflow popover badge layout. */
|
|
227
|
+
function resolveTaskBoardStatusColor(task) {
|
|
228
|
+
if (task.status.color) {
|
|
229
|
+
return task.status.color;
|
|
230
|
+
}
|
|
231
|
+
const data = task.data;
|
|
232
|
+
const rawColor = get(data, 'entityStatusDefinition.color') ?? get(data, 'statusColor');
|
|
233
|
+
return mapEntityStatusColorForBadge(rawColor, task.status.id);
|
|
234
|
+
}
|
|
235
|
+
/** Calendar placement for tasks without an explicit due date (received/created day, all-day). */
|
|
236
|
+
function resolveTaskBoardCalendarPlacement(task) {
|
|
237
|
+
const hasExplicitDueDate = get(task.data, 'hasExplicitDueDate') === true;
|
|
238
|
+
if (hasExplicitDueDate) {
|
|
239
|
+
const due = new Date(task.endDate);
|
|
240
|
+
const dayStart = new Date(due);
|
|
241
|
+
dayStart.setHours(0, 0, 0, 0);
|
|
242
|
+
const dayEnd = new Date(due);
|
|
243
|
+
dayEnd.setHours(23, 59, 59, 999);
|
|
244
|
+
return {
|
|
245
|
+
startDate: dayStart,
|
|
246
|
+
endDate: dayEnd,
|
|
247
|
+
allDay: true,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
const received = task.createdAt ? new Date(task.createdAt) : new Date(task.startDate);
|
|
251
|
+
const dayStart = new Date(received);
|
|
252
|
+
dayStart.setHours(0, 0, 0, 0);
|
|
253
|
+
const dayEnd = new Date(received);
|
|
254
|
+
dayEnd.setHours(23, 59, 59, 999);
|
|
255
|
+
return {
|
|
256
|
+
startDate: dayStart,
|
|
257
|
+
endDate: dayEnd,
|
|
258
|
+
allDay: true,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Returns tasks whose effective scheduling range overlaps the filter range (inclusive).
|
|
263
|
+
* Open tasks without an explicit due date are always included (widget-style visibility).
|
|
264
|
+
*/
|
|
265
|
+
function resolveTaskBoardSchedulingRange(task) {
|
|
266
|
+
const hasExplicitDueDate = get(task.data, 'hasExplicitDueDate') === true;
|
|
267
|
+
if (hasExplicitDueDate) {
|
|
268
|
+
const due = new Date(task.endDate);
|
|
269
|
+
return { from: due, end: due };
|
|
270
|
+
}
|
|
271
|
+
const received = task.createdAt ? new Date(task.createdAt) : new Date(task.startDate);
|
|
272
|
+
return { from: received, end: received };
|
|
273
|
+
}
|
|
274
|
+
/** Whether a task should appear for the task board's active date navigator range. */
|
|
275
|
+
function taskOverlapsFilterRange(task, range) {
|
|
276
|
+
if (!range?.from || !range?.end) {
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
const hasExplicitDueDate = get(task.data, 'hasExplicitDueDate') === true;
|
|
280
|
+
const bookmarkConsumed = get(task.data, 'bookmarkConsumed') === true;
|
|
281
|
+
if (!hasExplicitDueDate && !bookmarkConsumed) {
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
const { from, end } = resolveTaskBoardSchedulingRange(task);
|
|
285
|
+
const rangeStart = range.from.getTime();
|
|
286
|
+
const rangeEnd = range.end.getTime();
|
|
287
|
+
const taskStart = from.getTime();
|
|
288
|
+
const taskEnd = end.getTime();
|
|
289
|
+
return taskStart <= rangeEnd && taskEnd >= rangeStart;
|
|
290
|
+
}
|
|
291
|
+
function filterTasksOverlappingRange(tasks, range) {
|
|
292
|
+
if (!range?.from || !range?.end) {
|
|
293
|
+
return tasks;
|
|
294
|
+
}
|
|
295
|
+
return tasks.filter((task) => taskOverlapsFilterRange(task, range));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function resolveTaskBoardAccentColor(task, colorBy) {
|
|
299
|
+
switch (colorBy) {
|
|
300
|
+
case 'dueDate':
|
|
301
|
+
return resolveDueStatusAccentColor(task);
|
|
302
|
+
case 'priority':
|
|
303
|
+
return task.priority ? getTaskPriorityColor(normalizeTaskPriority(task.priority)) : 'neutral';
|
|
304
|
+
case 'status':
|
|
305
|
+
return resolveTaskBoardStatusColor(task);
|
|
306
|
+
default:
|
|
307
|
+
return resolveDueStatusAccentColor(task);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function resolveDueStatusAccentColor(task) {
|
|
311
|
+
const dueStatus = get(task.data, 'dueStatus');
|
|
312
|
+
if (dueStatus?.color) {
|
|
313
|
+
return dueStatus.color;
|
|
314
|
+
}
|
|
315
|
+
if (get(task.data, 'hasExplicitDueDate') !== true) {
|
|
316
|
+
return 'neutral';
|
|
317
|
+
}
|
|
318
|
+
return 'secondary';
|
|
319
|
+
}
|
|
320
|
+
const SURFACE_CLASS_TOKENS = new Set([
|
|
321
|
+
'primary',
|
|
322
|
+
'secondary',
|
|
323
|
+
'success',
|
|
324
|
+
'warning',
|
|
325
|
+
'danger',
|
|
326
|
+
'accent1',
|
|
327
|
+
'accent2',
|
|
328
|
+
'accent3',
|
|
329
|
+
'neutral',
|
|
330
|
+
'ghost',
|
|
331
|
+
]);
|
|
332
|
+
function normalizeSurfaceClassToken(colorToken) {
|
|
333
|
+
const safe = colorToken.replace(/[^a-z0-9-]/gi, '').toLowerCase();
|
|
334
|
+
return SURFACE_CLASS_TOKENS.has(safe) ? safe : 'neutral';
|
|
335
|
+
}
|
|
336
|
+
/** Maps a color token to a static BEM class backed by Tailwind @apply rules in task-board-surface.scss. */
|
|
337
|
+
function buildTaskSurfaceCssClass(colorToken) {
|
|
338
|
+
return `axm-task-board-surface--${normalizeSurfaceClassToken(colorToken)}`;
|
|
339
|
+
}
|
|
340
|
+
/** Accent stripe modifier for dashboard widget rows. */
|
|
341
|
+
function buildTaskAccentSurfaceCssClass(colorToken) {
|
|
342
|
+
return `axm-task-board-accent--${normalizeSurfaceClassToken(colorToken)}`;
|
|
343
|
+
}
|
|
344
|
+
/** @deprecated Use {@link buildTaskSurfaceCssClass}. */
|
|
345
|
+
function buildTaskAccentCssClass(colorToken) {
|
|
346
|
+
return buildTaskSurfaceCssClass(colorToken);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const TASK_I18N_DATE_KEYS = new Set(['startDate', 'endDate', 'effectiveDate', 'dueDate']);
|
|
350
|
+
function isDateLikeString(value) {
|
|
351
|
+
return /^\d{4}-\d{2}-\d{2}(?:T|$)/.test(value.trim());
|
|
352
|
+
}
|
|
353
|
+
function parseDateOnlyString(value) {
|
|
354
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})/.exec(value.trim());
|
|
355
|
+
if (!match) {
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
const year = Number(match[1]);
|
|
359
|
+
const month = Number(match[2]);
|
|
360
|
+
const day = Number(match[3]);
|
|
361
|
+
if (!year || !month || !day) {
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
return new Date(year, month - 1, day);
|
|
365
|
+
}
|
|
366
|
+
function normalizeTaskI18nParamValue(translationService, value) {
|
|
367
|
+
if (value == null) {
|
|
368
|
+
return '';
|
|
369
|
+
}
|
|
370
|
+
if (typeof value === 'string') {
|
|
371
|
+
return value.trim();
|
|
372
|
+
}
|
|
373
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
374
|
+
return String(value);
|
|
375
|
+
}
|
|
376
|
+
if (value instanceof Date) {
|
|
377
|
+
return value.toISOString();
|
|
378
|
+
}
|
|
379
|
+
if (typeof value === 'object') {
|
|
380
|
+
const resolved = translationService.resolve(value);
|
|
381
|
+
return resolved?.trim() ?? '';
|
|
382
|
+
}
|
|
383
|
+
return String(value).trim();
|
|
384
|
+
}
|
|
385
|
+
/** Formats raw `_taskI18n` params for the translate pipe (ML + dates + locale). */
|
|
386
|
+
async function formatTaskI18nParamsForTranslate(raw, translationService, formatService, settingsService) {
|
|
387
|
+
if (!raw) {
|
|
388
|
+
return {};
|
|
389
|
+
}
|
|
390
|
+
const format = await settingsService.get(AXPRegionalSetting.ShortDate);
|
|
391
|
+
const params = {};
|
|
392
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
393
|
+
if (value == null || value === '') {
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
if (TASK_I18N_DATE_KEYS.has(key) &&
|
|
397
|
+
(value instanceof Date || (typeof value === 'string' && isDateLikeString(value)))) {
|
|
398
|
+
const date = value instanceof Date ? value : parseDateOnlyString(value) ?? new Date(value);
|
|
399
|
+
if (!Number.isNaN(date.getTime())) {
|
|
400
|
+
const formatted = formatService.format(date, 'date', { format });
|
|
401
|
+
const text = typeof formatted === 'string' ? formatted : String(formatted ?? '');
|
|
402
|
+
if (text) {
|
|
403
|
+
params[key] = text;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
const text = normalizeTaskI18nParamValue(translationService, value);
|
|
409
|
+
if (text) {
|
|
410
|
+
params[key] = text;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
return params;
|
|
414
|
+
}
|
|
415
|
+
function getTaskTranslationKey(task, field) {
|
|
416
|
+
const data = task.data;
|
|
417
|
+
const key = field === 'title' ? data?.titleKey : data?.descriptionKey;
|
|
418
|
+
if (key?.trim().startsWith('@')) {
|
|
419
|
+
return key.trim();
|
|
420
|
+
}
|
|
421
|
+
const fallback = field === 'title' ? task.title : task.description;
|
|
422
|
+
return fallback?.trim().startsWith('@') ? fallback.trim() : undefined;
|
|
423
|
+
}
|
|
424
|
+
/** Resolves scheduler/kanban labels; popovers should use the translate pipe with {@link getTaskTranslationKey}. */
|
|
425
|
+
async function resolveTaskBoardSchedulerLabels(tasks, translationService, formatService, settingsService) {
|
|
426
|
+
return Promise.all(tasks.map(async (task) => {
|
|
427
|
+
const titleKey = getTaskTranslationKey(task, 'title');
|
|
428
|
+
const descriptionKey = getTaskTranslationKey(task, 'description');
|
|
429
|
+
const rawParams = get(task.data, 'taskI18nParams');
|
|
430
|
+
const params = await formatTaskI18nParamsForTranslate(rawParams, translationService, formatService, settingsService);
|
|
431
|
+
return {
|
|
432
|
+
...task,
|
|
433
|
+
...(titleKey ? { title: await translationService.translateAsync(titleKey, { params }) } : {}),
|
|
434
|
+
...(descriptionKey
|
|
435
|
+
? { description: await translationService.translateAsync(descriptionKey, { params }) }
|
|
436
|
+
: {}),
|
|
437
|
+
};
|
|
438
|
+
}));
|
|
439
|
+
}
|
|
440
|
+
function enrichTaskBoardTasks(tasks, colorBy, dueStatusProviderService) {
|
|
441
|
+
return tasks.map((task) => {
|
|
442
|
+
const withDueStatus = dueStatusProviderService.attachDueStatusToTask(task);
|
|
443
|
+
const accentClass = buildTaskSurfaceCssClass(resolveTaskBoardAccentColor(withDueStatus, colorBy));
|
|
444
|
+
const calendarPlacement = resolveTaskBoardCalendarPlacement(withDueStatus);
|
|
445
|
+
return {
|
|
446
|
+
...withDueStatus,
|
|
447
|
+
...calendarPlacement,
|
|
448
|
+
cssClass: accentClass,
|
|
449
|
+
};
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
class AXPDueStatusProvider {
|
|
454
|
+
}
|
|
455
|
+
const AXP_DUE_STATUS_PROVIDERS = new InjectionToken('AXP_DUE_STATUS_PROVIDERS');
|
|
456
|
+
function getTaskDueStatusKey(task) {
|
|
457
|
+
const data = task.data;
|
|
458
|
+
return data?.dueStatusKey;
|
|
459
|
+
}
|
|
460
|
+
function matchesTaskDueStatusFilter(task, dueStatusKeys) {
|
|
461
|
+
if (dueStatusKeys.length === 0) {
|
|
462
|
+
return true;
|
|
463
|
+
}
|
|
464
|
+
const key = getTaskDueStatusKey(task);
|
|
465
|
+
return key != null && dueStatusKeys.includes(key);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
function startOfLocalDay(date) {
|
|
469
|
+
const value = new Date(date);
|
|
470
|
+
value.setHours(0, 0, 0, 0);
|
|
471
|
+
return value;
|
|
472
|
+
}
|
|
473
|
+
function endOfLocalDay(date) {
|
|
474
|
+
const value = new Date(date);
|
|
475
|
+
value.setHours(23, 59, 59, 999);
|
|
476
|
+
return value;
|
|
477
|
+
}
|
|
478
|
+
function isSameLocalDay(a, b) {
|
|
479
|
+
return (a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate());
|
|
480
|
+
}
|
|
481
|
+
function addLocalDays(date, days) {
|
|
482
|
+
const value = new Date(date);
|
|
483
|
+
value.setDate(value.getDate() + days);
|
|
484
|
+
return value;
|
|
485
|
+
}
|
|
486
|
+
function getStartOfLocalWeek(date, weekStartsOn) {
|
|
487
|
+
const day = startOfLocalDay(date);
|
|
488
|
+
const weekday = day.getDay();
|
|
489
|
+
const diff = (weekday - weekStartsOn + 7) % 7;
|
|
490
|
+
day.setDate(day.getDate() - diff);
|
|
491
|
+
return day;
|
|
492
|
+
}
|
|
493
|
+
function getEndOfLocalWeek(date, weekStartsOn) {
|
|
494
|
+
const start = getStartOfLocalWeek(date, weekStartsOn);
|
|
495
|
+
return endOfLocalDay(addLocalDays(start, 6));
|
|
496
|
+
}
|
|
497
|
+
function matchesDueStatusKey(context, key) {
|
|
498
|
+
const today = startOfLocalDay(context.now);
|
|
499
|
+
const tomorrow = startOfLocalDay(addLocalDays(context.now, 1));
|
|
500
|
+
const weekEnd = getEndOfLocalWeek(context.now, context.weekStartsOn);
|
|
501
|
+
if (key === 'completed') {
|
|
502
|
+
return context.bookmarkConsumed;
|
|
503
|
+
}
|
|
504
|
+
if (key === 'no-due-date') {
|
|
505
|
+
return !context.bookmarkConsumed && !context.hasExplicitDueDate;
|
|
506
|
+
}
|
|
507
|
+
if (!context.hasExplicitDueDate || !context.dueDate || context.bookmarkConsumed) {
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
510
|
+
const dueDay = startOfLocalDay(context.dueDate);
|
|
511
|
+
if (key === 'overdue') {
|
|
512
|
+
return dueDay.getTime() < today.getTime();
|
|
513
|
+
}
|
|
514
|
+
if (key === 'due-today') {
|
|
515
|
+
return isSameLocalDay(dueDay, today);
|
|
516
|
+
}
|
|
517
|
+
if (key === 'due-tomorrow') {
|
|
518
|
+
return isSameLocalDay(dueDay, tomorrow);
|
|
519
|
+
}
|
|
520
|
+
if (key === 'due-this-week') {
|
|
521
|
+
return dueDay.getTime() > tomorrow.getTime() && dueDay.getTime() <= weekEnd.getTime();
|
|
522
|
+
}
|
|
523
|
+
if (key === 'upcoming') {
|
|
524
|
+
return dueDay.getTime() > weekEnd.getTime();
|
|
525
|
+
}
|
|
526
|
+
return false;
|
|
527
|
+
}
|
|
528
|
+
function resolveDueStatusFromDefinitions(definitions, context) {
|
|
529
|
+
const ordered = [...definitions].sort((a, b) => a.order - b.order);
|
|
530
|
+
for (const definition of ordered) {
|
|
531
|
+
if (matchesDueStatusKey(context, definition.name)) {
|
|
532
|
+
return definition;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
const DEFAULT_DUE_STATUS_DEFINITIONS = [
|
|
539
|
+
{
|
|
540
|
+
name: 'completed',
|
|
541
|
+
title: '@task-management:task-board.due-status.completed',
|
|
542
|
+
color: 'success',
|
|
543
|
+
icon: 'fa-light fa-circle-check',
|
|
544
|
+
order: 0,
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
name: 'no-due-date',
|
|
548
|
+
title: '@task-management:task-board.due-status.no-due-date',
|
|
549
|
+
color: 'neutral',
|
|
550
|
+
icon: 'fa-light fa-calendar-xmark',
|
|
551
|
+
order: 1,
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: 'overdue',
|
|
555
|
+
title: '@task-management:task-board.due-status.overdue',
|
|
556
|
+
color: 'danger',
|
|
557
|
+
icon: 'fa-light fa-calendar-exclamation',
|
|
558
|
+
order: 2,
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
name: 'due-today',
|
|
562
|
+
title: '@task-management:task-board.due-status.due-today',
|
|
563
|
+
color: 'warning',
|
|
564
|
+
icon: 'fa-light fa-calendar-day',
|
|
565
|
+
order: 3,
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
name: 'due-tomorrow',
|
|
569
|
+
title: '@task-management:task-board.due-status.due-tomorrow',
|
|
570
|
+
color: 'accent3',
|
|
571
|
+
icon: 'fa-light fa-calendar-plus',
|
|
572
|
+
order: 4,
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
name: 'due-this-week',
|
|
576
|
+
title: '@task-management:task-board.due-status.due-this-week',
|
|
577
|
+
color: 'primary',
|
|
578
|
+
icon: 'fa-light fa-calendar-week',
|
|
579
|
+
order: 5,
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
name: 'upcoming',
|
|
583
|
+
title: '@task-management:task-board.due-status.upcoming',
|
|
584
|
+
color: 'secondary',
|
|
585
|
+
icon: 'fa-light fa-calendar',
|
|
586
|
+
order: 6,
|
|
587
|
+
},
|
|
588
|
+
];
|
|
589
|
+
class AXMDefaultDueStatusProvider extends AXPDueStatusProvider {
|
|
137
590
|
constructor() {
|
|
138
591
|
super(...arguments);
|
|
139
|
-
|
|
592
|
+
this.key = 'default';
|
|
593
|
+
this.priority = 0;
|
|
594
|
+
}
|
|
595
|
+
getDefinitions() {
|
|
596
|
+
return DEFAULT_DUE_STATUS_DEFINITIONS;
|
|
597
|
+
}
|
|
598
|
+
resolve(context) {
|
|
599
|
+
return resolveDueStatusFromDefinitions(DEFAULT_DUE_STATUS_DEFINITIONS, context);
|
|
600
|
+
}
|
|
601
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMDefaultDueStatusProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
602
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMDefaultDueStatusProvider, providedIn: 'root' }); }
|
|
603
|
+
}
|
|
604
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMDefaultDueStatusProvider, decorators: [{
|
|
605
|
+
type: Injectable,
|
|
606
|
+
args: [{ providedIn: 'root' }]
|
|
607
|
+
}] });
|
|
608
|
+
function getDefaultDueStatusDefinitions() {
|
|
609
|
+
return DEFAULT_DUE_STATUS_DEFINITIONS;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
class AXPDueStatusProviderService {
|
|
613
|
+
constructor() {
|
|
614
|
+
this.localeService = inject(AXLocaleService);
|
|
615
|
+
this.registeredProviders = inject(AXP_DUE_STATUS_PROVIDERS, { optional: true }) ?? [];
|
|
616
|
+
this.fallbackProvider = inject(AXMDefaultDueStatusProvider);
|
|
617
|
+
}
|
|
618
|
+
getDefinitions(options) {
|
|
619
|
+
return this.selectProvider(options).getDefinitions();
|
|
620
|
+
}
|
|
621
|
+
resolveForTask(task, options) {
|
|
622
|
+
const data = task.data;
|
|
623
|
+
const context = {
|
|
624
|
+
now: new Date(),
|
|
625
|
+
dueDate: task.endDate ? new Date(task.endDate) : null,
|
|
626
|
+
hasExplicitDueDate: data?.hasExplicitDueDate === true,
|
|
627
|
+
bookmarkConsumed: data?.bookmarkConsumed === true,
|
|
628
|
+
weekStartsOn: this.resolveWeekStartsOn(),
|
|
629
|
+
};
|
|
630
|
+
const definition = this.selectProvider(options).resolve(context);
|
|
631
|
+
if (!definition) {
|
|
632
|
+
return null;
|
|
633
|
+
}
|
|
634
|
+
return {
|
|
635
|
+
name: definition.name,
|
|
636
|
+
title: definition.title,
|
|
637
|
+
color: definition.color,
|
|
638
|
+
icon: definition.icon,
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
attachDueStatusToTask(task, options) {
|
|
642
|
+
const presentation = this.resolveForTask(task, options);
|
|
643
|
+
if (!presentation) {
|
|
644
|
+
return task;
|
|
645
|
+
}
|
|
646
|
+
return {
|
|
647
|
+
...task,
|
|
648
|
+
data: {
|
|
649
|
+
...(task.data ?? {}),
|
|
650
|
+
dueStatusKey: presentation.name,
|
|
651
|
+
dueStatus: presentation,
|
|
652
|
+
},
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
selectProvider(options) {
|
|
656
|
+
const providers = [...this.registeredProviders, this.fallbackProvider].sort((a, b) => b.priority - a.priority);
|
|
657
|
+
if (!options?.workflowDefinitionId && !options?.activityType) {
|
|
658
|
+
return providers[providers.length - 1] ?? this.fallbackProvider;
|
|
659
|
+
}
|
|
660
|
+
const matched = providers.find((provider) => {
|
|
661
|
+
if (options.workflowDefinitionId && provider.key === options.workflowDefinitionId) {
|
|
662
|
+
return true;
|
|
663
|
+
}
|
|
664
|
+
return Boolean(options.activityType && provider.key === options.activityType);
|
|
665
|
+
});
|
|
666
|
+
return matched ?? providers[providers.length - 1] ?? this.fallbackProvider;
|
|
667
|
+
}
|
|
668
|
+
resolveWeekStartsOn() {
|
|
669
|
+
return this.localeService.activeProfile()?.calendar?.week?.startsOn ?? 0;
|
|
670
|
+
}
|
|
671
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDueStatusProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
672
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDueStatusProviderService, providedIn: 'root' }); }
|
|
673
|
+
}
|
|
674
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDueStatusProviderService, decorators: [{
|
|
675
|
+
type: Injectable,
|
|
676
|
+
args: [{ providedIn: 'root' }]
|
|
677
|
+
}] });
|
|
678
|
+
|
|
679
|
+
var AXMTaskBoardSettings;
|
|
680
|
+
(function (AXMTaskBoardSettings) {
|
|
681
|
+
/** User preference: show Calendar in the task board view switcher. */
|
|
682
|
+
AXMTaskBoardSettings["VisibleCalendar"] = "TaskManagement:Setting:TaskBoard.Visible.Calendar";
|
|
683
|
+
/** User preference: show Timeline in the task board view switcher. */
|
|
684
|
+
AXMTaskBoardSettings["VisibleTimeline"] = "TaskManagement:Setting:TaskBoard.Visible.Timeline";
|
|
685
|
+
/** User preference: show Table in the task board view switcher. */
|
|
686
|
+
AXMTaskBoardSettings["VisibleTable"] = "TaskManagement:Setting:TaskBoard.Visible.Table";
|
|
687
|
+
/** User preference: show Kanban in the task board view switcher. */
|
|
688
|
+
AXMTaskBoardSettings["VisibleKanban"] = "TaskManagement:Setting:TaskBoard.Visible.Kanban";
|
|
689
|
+
AXMTaskBoardSettings["CalendarLayout"] = "taskboard.view.calendarLayout";
|
|
690
|
+
AXMTaskBoardSettings["TimelineLayout"] = "taskboard.view.timelineLayout";
|
|
691
|
+
AXMTaskBoardSettings["TableLayout"] = "taskboard.view.tableLayout";
|
|
692
|
+
AXMTaskBoardSettings["ViewMode"] = "taskboard.viewMode";
|
|
693
|
+
AXMTaskBoardSettings["DetailPanel"] = "taskboard.DetailPanel";
|
|
694
|
+
AXMTaskBoardSettings["DaysCount"] = "taskboard.calendar.daysCount";
|
|
695
|
+
AXMTaskBoardSettings["CurrentDate"] = "taskboard.calendar.currentDate";
|
|
696
|
+
AXMTaskBoardSettings["SelectedPriorities"] = "taskboard.filter.selectedPriorities";
|
|
697
|
+
AXMTaskBoardSettings["SelectedDueStatusKeys"] = "taskboard.filter.selectedDueStatusKeys";
|
|
698
|
+
AXMTaskBoardSettings["ColorBy"] = "taskboard.colorBy";
|
|
699
|
+
AXMTaskBoardSettings["SelectedAssigneeIds"] = "taskboard.filter.selectedAssigneeIds";
|
|
700
|
+
AXMTaskBoardSettings["SelectedReporterIds"] = "taskboard.filter.selectedReporterIds";
|
|
701
|
+
AXMTaskBoardSettings["SelectedTaskTypeNames"] = "taskboard.filter.selectedTaskTypeNames";
|
|
702
|
+
})(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));
|
|
703
|
+
|
|
704
|
+
const NO_PRIORITY_KEY = 'no_priority';
|
|
705
|
+
class AXPTaskBoardWidgetViewComponent extends AXPLayoutBaseWidgetComponent {
|
|
706
|
+
constructor() {
|
|
707
|
+
super();
|
|
140
708
|
this.taskClick = output();
|
|
141
|
-
// Dependencies
|
|
142
709
|
this.taskBoardService = inject(AXPTaskBoardService);
|
|
143
|
-
this.
|
|
144
|
-
this.
|
|
145
|
-
|
|
710
|
+
this.taskPopoverOverlay = inject(AXMTaskBoardTaskPopoverOverlayService);
|
|
711
|
+
this.dueStatusProviderService = inject(AXPDueStatusProviderService);
|
|
712
|
+
this.settingsService = inject(AXPSettingsService);
|
|
713
|
+
this.formatService = inject(AXFormatService);
|
|
714
|
+
this.translationService = inject(AXTranslationService);
|
|
715
|
+
this.localeService = inject(AXLocaleService);
|
|
716
|
+
this.destroyRef = inject(DestroyRef);
|
|
146
717
|
this.maxItems = computed(() => this.options()?.['maxItems'] ?? 10, ...(ngDevMode ? [{ debugName: "maxItems" }] : /* istanbul ignore next */ []));
|
|
147
718
|
this.assignee = computed(() => this.options()?.['assignee'] ?? [], ...(ngDevMode ? [{ debugName: "assignee" }] : /* istanbul ignore next */ []));
|
|
148
719
|
this.selectedTaskTypes = computed(() => this.options()?.['taskTypes'] ?? [], ...(ngDevMode ? [{ debugName: "selectedTaskTypes" }] : /* istanbul ignore next */ []));
|
|
149
720
|
this.sortBy = computed(() => this.options()?.['sortBy'] ?? { title: 'Priority', name: 'priority' }, ...(ngDevMode ? [{ debugName: "sortBy" }] : /* istanbul ignore next */ []));
|
|
150
|
-
|
|
721
|
+
this.widgetColorBy = computed(() => this.options()?.['colorBy'], ...(ngDevMode ? [{ debugName: "widgetColorBy" }] : /* istanbul ignore next */ []));
|
|
722
|
+
this.globalColorBy = signal('dueDate', ...(ngDevMode ? [{ debugName: "globalColorBy" }] : /* istanbul ignore next */ []));
|
|
151
723
|
this.allTasks = signal([], ...(ngDevMode ? [{ debugName: "allTasks" }] : /* istanbul ignore next */ []));
|
|
152
|
-
this.
|
|
153
|
-
this.
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Computes a list of tasks that are filtered, sorted, and limited.
|
|
157
|
-
*/
|
|
724
|
+
this.selectedPriorities = signal(new Set([...AXPTASK_PRIORITIES, NO_PRIORITY_KEY]), ...(ngDevMode ? [{ debugName: "selectedPriorities" }] : /* istanbul ignore next */ []));
|
|
725
|
+
this.selectedDueStatuses = signal(new Set(getDefaultDueStatusDefinitions().map((item) => item.name)), ...(ngDevMode ? [{ debugName: "selectedDueStatuses" }] : /* istanbul ignore next */ []));
|
|
726
|
+
this.effectiveColorBy = computed(() => this.widgetColorBy() ?? this.globalColorBy(), ...(ngDevMode ? [{ debugName: "effectiveColorBy" }] : /* istanbul ignore next */ []));
|
|
158
727
|
this.filteredTasks = computed(() => {
|
|
159
728
|
const tasks = this.allTasks();
|
|
160
729
|
const limit = this.maxItems();
|
|
161
730
|
const selectedTypes = this.selectedTaskTypes();
|
|
162
731
|
const selectedPrioritiesSet = this.selectedPriorities();
|
|
163
|
-
|
|
732
|
+
const selectedDueStatusSet = this.selectedDueStatuses();
|
|
164
733
|
const selectedTypeNames = new Set(selectedTypes.map((t) => t.name));
|
|
165
734
|
const typeFiltered = selectedTypes.length > 0 ? tasks.filter((task) => task.provider && selectedTypeNames.has(task.provider)) : tasks;
|
|
166
|
-
// 2. Filter by selected Priorities
|
|
167
735
|
const priorityFiltered = typeFiltered.filter((task) => {
|
|
168
|
-
const priorityKey = task
|
|
736
|
+
const priorityKey = getTaskPriorityFilterKey(task);
|
|
169
737
|
return selectedPrioritiesSet.has(priorityKey);
|
|
170
738
|
});
|
|
171
|
-
|
|
172
|
-
const sorted = this.sortTasks([...
|
|
173
|
-
// 4. Limit the number of items
|
|
739
|
+
const dueStatusFiltered = priorityFiltered.filter((task) => matchesTaskDueStatusFilter(task, [...selectedDueStatusSet]));
|
|
740
|
+
const sorted = this.sortTasks([...dueStatusFiltered]);
|
|
174
741
|
return sorted.slice(0, limit);
|
|
175
742
|
}, ...(ngDevMode ? [{ debugName: "filteredTasks" }] : /* istanbul ignore next */ []));
|
|
176
|
-
/**
|
|
177
|
-
* Generates the data for the priority filter chips in the header.
|
|
178
|
-
*/
|
|
179
743
|
this.priorityBadges = computed(() => {
|
|
180
|
-
const tasks = this.
|
|
181
|
-
const
|
|
182
|
-
// 1. Filter by task type (if any are selected)
|
|
183
|
-
const selectedTypeNames = new Set(selectedTypes.map((t) => t.name));
|
|
184
|
-
const typeFiltered = selectedTypes.length > 0 ? tasks.filter((task) => task.provider && selectedTypeNames.has(task.provider)) : tasks;
|
|
185
|
-
// 2. Count priorities from the filtered list
|
|
186
|
-
const counts = [...VALID_PRIORITIES$1, NO_PRIORITY_KEY].reduce((acc, key) => {
|
|
744
|
+
const tasks = this.getTypeFilteredTasks();
|
|
745
|
+
const counts = [...AXPTASK_PRIORITIES, NO_PRIORITY_KEY].reduce((acc, key) => {
|
|
187
746
|
acc[key] = 0;
|
|
188
747
|
return acc;
|
|
189
748
|
}, {});
|
|
190
|
-
for (const task of
|
|
191
|
-
|
|
192
|
-
counts[key]++;
|
|
749
|
+
for (const task of tasks) {
|
|
750
|
+
counts[getTaskPriorityFilterKey(task)]++;
|
|
193
751
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
color: this.getBadgeColorForPriority(p),
|
|
752
|
+
const priorityBadges = AXPTASK_PRIORITIES.map((priority) => ({
|
|
753
|
+
name: priority,
|
|
754
|
+
label: priority.charAt(0).toUpperCase() + priority.slice(1),
|
|
755
|
+
count: counts[priority],
|
|
756
|
+
color: getTaskPriorityColor(priority),
|
|
200
757
|
}));
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
758
|
+
return [
|
|
759
|
+
...priorityBadges,
|
|
760
|
+
{
|
|
761
|
+
name: NO_PRIORITY_KEY,
|
|
762
|
+
label: 'No Priority',
|
|
763
|
+
count: counts[NO_PRIORITY_KEY],
|
|
764
|
+
color: 'secondary',
|
|
765
|
+
},
|
|
766
|
+
];
|
|
208
767
|
}, ...(ngDevMode ? [{ debugName: "priorityBadges" }] : /* istanbul ignore next */ []));
|
|
209
|
-
this
|
|
210
|
-
const
|
|
211
|
-
const
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
768
|
+
this.dueStatusBadges = computed(() => {
|
|
769
|
+
const tasks = this.getTypeFilteredTasks();
|
|
770
|
+
const definitions = getDefaultDueStatusDefinitions();
|
|
771
|
+
const counts = definitions.reduce((acc, definition) => {
|
|
772
|
+
acc[definition.name] = 0;
|
|
773
|
+
return acc;
|
|
774
|
+
}, {});
|
|
775
|
+
for (const task of tasks) {
|
|
776
|
+
const key = get(task.data, 'dueStatusKey');
|
|
777
|
+
if (key && key in counts) {
|
|
778
|
+
counts[key]++;
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
return definitions
|
|
782
|
+
.map((definition) => ({
|
|
783
|
+
name: definition.name,
|
|
784
|
+
label: definition.title,
|
|
785
|
+
count: counts[definition.name],
|
|
786
|
+
color: definition.color,
|
|
787
|
+
}))
|
|
788
|
+
.filter((badge) => badge.count > 0);
|
|
789
|
+
}, ...(ngDevMode ? [{ debugName: "dueStatusBadges" }] : /* istanbul ignore next */ []));
|
|
790
|
+
this.#loadTasks = effect(() => {
|
|
791
|
+
this.localeService.activeProfile().localeInfo?.code;
|
|
792
|
+
void this.reloadTasks();
|
|
793
|
+
}, ...(ngDevMode ? [{ debugName: "#loadTasks" }] : /* istanbul ignore next */ []));
|
|
794
|
+
void this.settingsService
|
|
795
|
+
.scope(AXPPlatformScope.User)
|
|
796
|
+
.get(AXMTaskBoardSettings.ColorBy)
|
|
797
|
+
.then((value) => {
|
|
798
|
+
if (value) {
|
|
799
|
+
this.globalColorBy.set(value);
|
|
800
|
+
}
|
|
801
|
+
});
|
|
802
|
+
this.taskBoardService.refresh$
|
|
803
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
804
|
+
.subscribe((data) => {
|
|
805
|
+
void this.handleBoardRefresh(data);
|
|
806
|
+
});
|
|
807
|
+
this.taskBoardService.close$
|
|
808
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
809
|
+
.subscribe((data) => {
|
|
810
|
+
const active = this.taskPopoverOverlay.getActiveTask();
|
|
811
|
+
if (!active?.provider) {
|
|
812
|
+
return;
|
|
813
|
+
}
|
|
814
|
+
if (data.provider && data.provider !== active.provider) {
|
|
815
|
+
return;
|
|
816
|
+
}
|
|
817
|
+
this.taskPopoverOverlay.close();
|
|
818
|
+
});
|
|
251
819
|
}
|
|
252
|
-
|
|
820
|
+
#loadTasks;
|
|
253
821
|
onPriorityFilterChange(priorityKey) {
|
|
254
822
|
this.selectedPriorities.update((currentSet) => {
|
|
255
823
|
const newSet = new Set(currentSet);
|
|
@@ -262,94 +830,134 @@ class AXPTaskBoardWidgetViewComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
262
830
|
return newSet;
|
|
263
831
|
});
|
|
264
832
|
}
|
|
265
|
-
|
|
833
|
+
onDueStatusFilterChange(dueStatusKey) {
|
|
834
|
+
this.selectedDueStatuses.update((currentSet) => {
|
|
835
|
+
const newSet = new Set(currentSet);
|
|
836
|
+
if (newSet.has(dueStatusKey)) {
|
|
837
|
+
newSet.delete(dueStatusKey);
|
|
838
|
+
}
|
|
839
|
+
else {
|
|
840
|
+
newSet.add(dueStatusKey);
|
|
841
|
+
}
|
|
842
|
+
return newSet;
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
async onTaskClick(task, event) {
|
|
846
|
+
const anchor = event.currentTarget;
|
|
847
|
+
if (anchor) {
|
|
848
|
+
await this.taskPopoverOverlay.open({
|
|
849
|
+
task,
|
|
850
|
+
anchor,
|
|
851
|
+
offsetX: 12,
|
|
852
|
+
offsetY: 12,
|
|
853
|
+
adaptivityEnabled: true,
|
|
854
|
+
});
|
|
855
|
+
}
|
|
266
856
|
this.taskClick.emit(task);
|
|
267
857
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.currentTask.set(task);
|
|
271
|
-
const x = event.nativeEvent.clientX;
|
|
272
|
-
const y = event.nativeEvent.clientY;
|
|
273
|
-
const element = event.nativeEvent.target;
|
|
274
|
-
this.contextMenu()?.showAt({ x, y }, element);
|
|
858
|
+
getStatusColor(task) {
|
|
859
|
+
return resolveTaskBoardStatusColor(task);
|
|
275
860
|
}
|
|
276
|
-
|
|
277
|
-
|
|
861
|
+
getAccentClass(task) {
|
|
862
|
+
const colorToken = resolveTaskBoardAccentColor(task, this.effectiveColorBy());
|
|
863
|
+
return buildTaskAccentSurfaceCssClass(colorToken);
|
|
278
864
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
865
|
+
hasExplicitDueDate(task) {
|
|
866
|
+
return get(task.data, 'hasExplicitDueDate') === true;
|
|
867
|
+
}
|
|
868
|
+
getProviderTitle(task) {
|
|
869
|
+
if (!task.provider) {
|
|
870
|
+
return null;
|
|
871
|
+
}
|
|
872
|
+
return this.taskBoardService.getProvider(task.provider)?.title ?? null;
|
|
873
|
+
}
|
|
874
|
+
getProviderIcon(task) {
|
|
875
|
+
if (!task.provider) {
|
|
876
|
+
return 'fa-light fa-layer-group';
|
|
877
|
+
}
|
|
878
|
+
return this.taskBoardService.getProvider(task.provider)?.icon ?? 'fa-light fa-layer-group';
|
|
879
|
+
}
|
|
880
|
+
getTypeFilteredTasks() {
|
|
881
|
+
const tasks = this.allTasks();
|
|
882
|
+
const selectedTypes = this.selectedTaskTypes();
|
|
883
|
+
const selectedTypeNames = new Set(selectedTypes.map((t) => t.name));
|
|
884
|
+
return selectedTypes.length > 0
|
|
885
|
+
? tasks.filter((task) => task.provider && selectedTypeNames.has(task.provider))
|
|
886
|
+
: tasks;
|
|
887
|
+
}
|
|
888
|
+
async handleBoardRefresh(data) {
|
|
889
|
+
const active = this.taskPopoverOverlay.getActiveTask();
|
|
890
|
+
if (data?.provider && active?.provider && data.provider !== active.provider) {
|
|
282
891
|
return;
|
|
283
|
-
|
|
284
|
-
|
|
892
|
+
}
|
|
893
|
+
await this.reloadTasks();
|
|
894
|
+
if (!active?.provider) {
|
|
285
895
|
return;
|
|
286
|
-
|
|
287
|
-
|
|
896
|
+
}
|
|
897
|
+
const updated = this.allTasks().find((task) => task.id === active.id);
|
|
898
|
+
if (updated) {
|
|
899
|
+
await this.taskPopoverOverlay.refreshTask({ ...updated, provider: active.provider });
|
|
288
900
|
return;
|
|
289
|
-
const actions = await provider.getActions(currentTask);
|
|
290
|
-
for (const item of actions) {
|
|
291
|
-
const t = item.title;
|
|
292
|
-
const text = typeof t === 'string'
|
|
293
|
-
? t.startsWith('@')
|
|
294
|
-
? await this.translateService.translateAsync(t)
|
|
295
|
-
: t
|
|
296
|
-
: this.translateService.resolve(t);
|
|
297
|
-
event.items.push({
|
|
298
|
-
text,
|
|
299
|
-
icon: item.icon,
|
|
300
|
-
data: {
|
|
301
|
-
command: item.command,
|
|
302
|
-
},
|
|
303
|
-
});
|
|
304
901
|
}
|
|
902
|
+
this.taskPopoverOverlay.close();
|
|
305
903
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
904
|
+
reloadTasks() {
|
|
905
|
+
const limit = this.maxItems();
|
|
906
|
+
const assignee = this.assignee();
|
|
907
|
+
const selectedTypes = this.selectedTaskTypes();
|
|
908
|
+
const typeNames = selectedTypes.map((t) => t.name);
|
|
909
|
+
return this.taskBoardService
|
|
910
|
+
.getTasks({ take: limit, assigneeIds: assignee.map((a) => a.id), types: typeNames })
|
|
911
|
+
.then(async (tasks) => {
|
|
912
|
+
const labeled = await resolveTaskBoardSchedulerLabels(tasks.items, this.translationService, this.formatService, this.settingsService);
|
|
913
|
+
const enriched = labeled.map((task) => this.dueStatusProviderService.attachDueStatusToTask(task));
|
|
914
|
+
this.allTasks.set(enriched);
|
|
915
|
+
});
|
|
916
|
+
}
|
|
917
|
+
compareByPriority(a, b) {
|
|
918
|
+
const priorityA = getTaskPriorityFilterKey(a);
|
|
919
|
+
const priorityB = getTaskPriorityFilterKey(b);
|
|
920
|
+
return TASK_PRIORITY_ORDER[priorityA] - TASK_PRIORITY_ORDER[priorityB];
|
|
921
|
+
}
|
|
922
|
+
compareByDueDate(a, b) {
|
|
923
|
+
const now = Date.now();
|
|
924
|
+
const dateA = this.hasExplicitDueDate(a) && a.endDate ? new Date(a.endDate).getTime() : null;
|
|
925
|
+
const dateB = this.hasExplicitDueDate(b) && b.endDate ? new Date(b.endDate).getTime() : null;
|
|
926
|
+
if (dateA === null && dateB === null) {
|
|
927
|
+
return 0;
|
|
310
928
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
return colorMap[priorityKey];
|
|
929
|
+
if (dateA === null) {
|
|
930
|
+
return 1;
|
|
931
|
+
}
|
|
932
|
+
if (dateB === null) {
|
|
933
|
+
return -1;
|
|
934
|
+
}
|
|
935
|
+
return dateA - dateB;
|
|
319
936
|
}
|
|
320
937
|
sortTasks(tasks) {
|
|
321
938
|
const sortBy = this.sortBy().name;
|
|
322
939
|
return tasks.sort((a, b) => {
|
|
323
940
|
if (sortBy === 'priority') {
|
|
324
941
|
const priorityCompare = this.compareByPriority(a, b);
|
|
325
|
-
if (priorityCompare !== 0)
|
|
942
|
+
if (priorityCompare !== 0) {
|
|
326
943
|
return priorityCompare;
|
|
944
|
+
}
|
|
327
945
|
return this.compareByDueDate(a, b);
|
|
328
946
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
return dateCompare;
|
|
333
|
-
return this.compareByPriority(a, b);
|
|
947
|
+
const dateCompare = this.compareByDueDate(a, b);
|
|
948
|
+
if (dateCompare !== 0) {
|
|
949
|
+
return dateCompare;
|
|
334
950
|
}
|
|
951
|
+
return this.compareByPriority(a, b);
|
|
335
952
|
});
|
|
336
953
|
}
|
|
337
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTaskBoardWidgetViewComponent, deps:
|
|
338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTaskBoardWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick" },
|
|
954
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTaskBoardWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
955
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTaskBoardWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <div class=\"ax-flex ax-gap-2 ax-flex-wrap ax-pb-2\">\n @for (badge of priorityBadges(); track badge.name) {\n @if (badge.count > 0) {\n <ax-chips\n [size]=\"'ax-sm'\"\n [color]=\"badge.color\"\n class=\"ax-cursor-pointer filter-badge\"\n [text]=\"`${badge.label} (${badge.count})`\"\n (click)=\"onPriorityFilterChange(badge.name)\"\n [look]=\"selectedPriorities().has(badge.name) ? 'solid' : 'outline'\"\n ></ax-chips>\n }\n }\n </div>\n\n <div class=\"ax-flex ax-gap-2 ax-flex-wrap ax-pb-4\">\n @for (badge of dueStatusBadges(); track badge.name) {\n <ax-chips\n [size]=\"'ax-sm'\"\n [color]=\"badge.color\"\n class=\"ax-cursor-pointer filter-badge\"\n [text]=\"(badge.label | translate | async)! + ' (' + badge.count + ')'\"\n (click)=\"onDueStatusFilterChange(badge.name)\"\n [look]=\"selectedDueStatuses().has(badge.name) ? 'solid' : 'outline'\"\n ></ax-chips>\n }\n </div>\n\n <div class=\"ax-overflow-auto ax-overflow-x-hidden ax-grow\">\n <div class=\"__list\">\n @for (task of filteredTasks(); track task.id) {\n <div class=\"__item\" (click)=\"onTaskClick(task, $event)\">\n <div class=\"__accent\" [class]=\"getAccentClass(task)\" aria-hidden=\"true\"></div>\n\n <div class=\"__content\">\n <div class=\"__header\">\n <p class=\"__title\" [title]=\"task.title\">{{ task.title }}</p>\n\n @if (task.status.title) {\n <ax-chips\n class=\"__status-chip\"\n [size]=\"'ax-sm'\"\n [look]=\"'twotone'\"\n [color]=\"getStatusColor(task)\"\n [text]=\"(task.status.title | translate | async)!\"\n ></ax-chips>\n }\n </div>\n\n <div class=\"__meta\">\n @if (getProviderTitle(task); as providerTitle) {\n <span class=\"__meta-item\" [title]=\"'@task-management:task-board.grid-headers.type' | translate | async\">\n <i [class]=\"getProviderIcon(task)\" aria-hidden=\"true\"></i>\n <span>{{ providerTitle | translate | async }}</span>\n </span>\n }\n\n @if (hasExplicitDueDate(task) && task.endDate) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.due-date' | translate | async\"\n >\n <i class=\"fa-light fa-calendar\" aria-hidden=\"true\"></i>\n <span>{{ task.endDate | format: 'datetime' : { format: 'datetime' } | async }}</span>\n </span>\n } @else if (task.createdAt) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.received' | translate | async\"\n >\n <i class=\"fa-light fa-inbox\" aria-hidden=\"true\"></i>\n <span>{{ task.createdAt | format: 'datetime' : { format: 'datetime' } | async }}</span>\n </span>\n }\n\n @if (task.reporter.fullName) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.reporter' | translate | async\"\n >\n <i class=\"fa-light fa-user-pen\" aria-hidden=\"true\"></i>\n <span>{{ task.reporter.fullName }}</span>\n </span>\n } @else if (task.assignee; as assignee) {\n @if (assignee.fullName) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.assignee' | translate | async\"\n >\n <i class=\"fa-light fa-user\" aria-hidden=\"true\"></i>\n <span>{{ assignee.fullName }}</span>\n </span>\n }\n }\n </div>\n </div>\n </div>\n } @empty {\n <axp-state-message\n icon=\"fa-light fa-clipboard-list-check\"\n [title]=\"'@dashboard:task-board.no-tasks-found.title'\"\n [description]=\"'@dashboard:task-board.no-tasks-found.description'\"\n ></axp-state-message>\n }\n </div>\n </div>\n</div>\n", styles: [".__accent.axm-task-board-accent--primary{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--secondary{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-secondary-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--success{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--warning{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--danger{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent1{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent1-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent2{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent2-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent3{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent3-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--neutral,.__accent.axm-task-board-accent--ghost{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host{display:block;width:100%;height:100%}.__list{display:flex;flex-direction:column;gap:.5rem}.__item{display:flex;cursor:pointer;align-items:stretch;overflow:hidden;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));text-align:start;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface));box-shadow:0 1px 4px rgba(var(--ax-sys-color-on-surface),.06)}.__item:active{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}.__item .__accent{width:3px;flex-shrink:0;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__item .__content{min-width:0px;flex:1 1 0%;padding:.625rem .75rem}.__item .__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.__item .__title{margin:0;min-width:0px;flex:1 1 0%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;line-height:1.25rem;font-weight:500;line-height:1.375}.__item .__status-chip{max-width:45%;flex-shrink:0;pointer-events:none}.__item .__meta{margin-top:.375rem;display:flex;flex-wrap:wrap;align-items:center;column-gap:.75rem;row-gap:.375rem;font-size:.75rem;line-height:1rem;line-height:1.25;opacity:.8}.__item .__meta-item{display:inline-flex;min-width:0px;max-width:100%;align-items:center;gap:.25rem}.__item .__meta-item i{flex-shrink:0;font-size:.75rem;line-height:1rem;opacity:.85}.__item .__meta-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-badge{transition:transform .15s ease}.filter-badge:hover{transform:translateY(-1px)}.__list>.__item{animation:slideIn .25s ease forwards;opacity:0}.__list>.__item:nth-child(1){animation-delay:.04s}.__list>.__item:nth-child(2){animation-delay:.08s}.__list>.__item:nth-child(3){animation-delay:.12s}.__list>.__item:nth-child(4){animation-delay:.16s}.__list>.__item:nth-child(5){animation-delay:.2s}.__list>.__item:nth-child(6){animation-delay:.24s}.__list>.__item:nth-child(7){animation-delay:.28s}.__list>.__item:nth-child(8){animation-delay:.32s}.__list>.__item:nth-child(9){animation-delay:.36s}.__list>.__item:nth-child(10){animation-delay:.4s}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "text", "look", "size"], outputs: ["textChange", "lookChange", "sizeChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "look"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: AXFormatPipe, name: "format" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
339
956
|
}
|
|
340
957
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTaskBoardWidgetViewComponent, decorators: [{
|
|
341
958
|
type: Component,
|
|
342
|
-
args: [{
|
|
343
|
-
|
|
344
|
-
AXFormatPipe,
|
|
345
|
-
AXChipsComponent,
|
|
346
|
-
AXButtonComponent,
|
|
347
|
-
AXContextMenuComponent,
|
|
348
|
-
AXDecoratorIconComponent,
|
|
349
|
-
AXDecoratorGenericComponent,
|
|
350
|
-
AXPStateMessageComponent,
|
|
351
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header with Priority Filter Chips -->\n <div class=\"ax-flex ax-gap-2 ax-flex-wrap ax-pb-4\">\n @for (badge of priorityBadges(); track badge.name) {\n <ng-container>\n @if (badge.count > 0) {\n <ax-chips\n [size]=\"'ax-sm'\"\n [color]=\"badge.color\"\n class=\"ax-cursor-pointer filter-badge\"\n [text]=\"`${badge.label} (${badge.count})`\"\n (click)=\"onPriorityFilterChange(badge.name)\"\n [look]=\"selectedPriorities().has(badge.name) ? 'solid' : 'outline'\"\n >\n </ax-chips>\n }\n </ng-container>\n }\n </div>\n\n <!-- Task Board -->\n <div class=\"ax-overflow-auto ax-overflow-x-hidden ax-grow\">\n <div class=\"ax-space-y-2\">\n @for (task of filteredTasks(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-clipboard-list-check\"\n [title]=\"'@dashboard:task-board.no-tasks-found.title'\"\n [description]=\"'@dashboard:task-board.no-tasks-found.description'\"\n >\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-p-3 task-item priority-{{ task.priority }}\">\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <ax-title class=\"ax-font-medium ax-truncate ax-pb-1 ax-grow min-w-0\" [title]=\"task.title\">\n {{ task.title }}\n </ax-title>\n <!-- More Options Button -->\n <ax-button look=\"link\" class=\"ax-sm\" (onClick)=\"onMoreOptionsClick(task, $event)\">\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"></ax-icon>\n </ax-button>\n </div>\n\n <!-- Metadata -->\n @if (task.endDate || task.assignee) {\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-pt-2 ax-text-xs\">\n @if (task.endDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1 due-date\">\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n <ax-subtitle>{{ task.endDate | format: 'datetime' : { format: 'datetime' } | async }}</ax-subtitle>\n </span>\n }\n @if (task.assignee) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignee.avatarUrl) {\n <img [src]=\"task.assignee.avatarUrl\" class=\"ax-w-4 ax-h-4 ax-rounded-full\" />\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n <ax-subtitle>{{ task.assignee.fullName }}</ax-subtitle>\n </span>\n }\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ax-context-menu\n #contextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n>\n</ax-context-menu>\n", styles: [":host{display:block;height:100%;width:100%}.task-item{transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px #0000000d}.task-item.priority-highest{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-400))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item.priority-lowest{border-left-color:rgb(var(--ax-sys-color-success-300))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px #0000000d}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\n"] }]
|
|
352
|
-
}], propDecorators: { taskClick: [{ type: i0.Output, args: ["taskClick"] }], contextMenu: [{ type: i0.ViewChild, args: ['contextMenu', { isSignal: true }] }] } });
|
|
959
|
+
args: [{ imports: [CommonModule, AXFormatPipe, AXChipsComponent, AXTranslationModule, AXPStateMessageComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <div class=\"ax-flex ax-gap-2 ax-flex-wrap ax-pb-2\">\n @for (badge of priorityBadges(); track badge.name) {\n @if (badge.count > 0) {\n <ax-chips\n [size]=\"'ax-sm'\"\n [color]=\"badge.color\"\n class=\"ax-cursor-pointer filter-badge\"\n [text]=\"`${badge.label} (${badge.count})`\"\n (click)=\"onPriorityFilterChange(badge.name)\"\n [look]=\"selectedPriorities().has(badge.name) ? 'solid' : 'outline'\"\n ></ax-chips>\n }\n }\n </div>\n\n <div class=\"ax-flex ax-gap-2 ax-flex-wrap ax-pb-4\">\n @for (badge of dueStatusBadges(); track badge.name) {\n <ax-chips\n [size]=\"'ax-sm'\"\n [color]=\"badge.color\"\n class=\"ax-cursor-pointer filter-badge\"\n [text]=\"(badge.label | translate | async)! + ' (' + badge.count + ')'\"\n (click)=\"onDueStatusFilterChange(badge.name)\"\n [look]=\"selectedDueStatuses().has(badge.name) ? 'solid' : 'outline'\"\n ></ax-chips>\n }\n </div>\n\n <div class=\"ax-overflow-auto ax-overflow-x-hidden ax-grow\">\n <div class=\"__list\">\n @for (task of filteredTasks(); track task.id) {\n <div class=\"__item\" (click)=\"onTaskClick(task, $event)\">\n <div class=\"__accent\" [class]=\"getAccentClass(task)\" aria-hidden=\"true\"></div>\n\n <div class=\"__content\">\n <div class=\"__header\">\n <p class=\"__title\" [title]=\"task.title\">{{ task.title }}</p>\n\n @if (task.status.title) {\n <ax-chips\n class=\"__status-chip\"\n [size]=\"'ax-sm'\"\n [look]=\"'twotone'\"\n [color]=\"getStatusColor(task)\"\n [text]=\"(task.status.title | translate | async)!\"\n ></ax-chips>\n }\n </div>\n\n <div class=\"__meta\">\n @if (getProviderTitle(task); as providerTitle) {\n <span class=\"__meta-item\" [title]=\"'@task-management:task-board.grid-headers.type' | translate | async\">\n <i [class]=\"getProviderIcon(task)\" aria-hidden=\"true\"></i>\n <span>{{ providerTitle | translate | async }}</span>\n </span>\n }\n\n @if (hasExplicitDueDate(task) && task.endDate) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.due-date' | translate | async\"\n >\n <i class=\"fa-light fa-calendar\" aria-hidden=\"true\"></i>\n <span>{{ task.endDate | format: 'datetime' : { format: 'datetime' } | async }}</span>\n </span>\n } @else if (task.createdAt) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.received' | translate | async\"\n >\n <i class=\"fa-light fa-inbox\" aria-hidden=\"true\"></i>\n <span>{{ task.createdAt | format: 'datetime' : { format: 'datetime' } | async }}</span>\n </span>\n }\n\n @if (task.reporter.fullName) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.reporter' | translate | async\"\n >\n <i class=\"fa-light fa-user-pen\" aria-hidden=\"true\"></i>\n <span>{{ task.reporter.fullName }}</span>\n </span>\n } @else if (task.assignee; as assignee) {\n @if (assignee.fullName) {\n <span\n class=\"__meta-item\"\n [title]=\"'@task-management:task-board.grid-headers.assignee' | translate | async\"\n >\n <i class=\"fa-light fa-user\" aria-hidden=\"true\"></i>\n <span>{{ assignee.fullName }}</span>\n </span>\n }\n }\n </div>\n </div>\n </div>\n } @empty {\n <axp-state-message\n icon=\"fa-light fa-clipboard-list-check\"\n [title]=\"'@dashboard:task-board.no-tasks-found.title'\"\n [description]=\"'@dashboard:task-board.no-tasks-found.description'\"\n ></axp-state-message>\n }\n </div>\n </div>\n</div>\n", styles: [".__accent.axm-task-board-accent--primary{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--secondary{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-secondary-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--success{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--warning{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--danger{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent1{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent1-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent2{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent2-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--accent3{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-accent3-surface),var(--tw-bg-opacity, 1))}.__accent.axm-task-board-accent--neutral,.__accent.axm-task-board-accent--ghost{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host{display:block;width:100%;height:100%}.__list{display:flex;flex-direction:column;gap:.5rem}.__item{display:flex;cursor:pointer;align-items:stretch;overflow:hidden;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));text-align:start;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface));box-shadow:0 1px 4px rgba(var(--ax-sys-color-on-surface),.06)}.__item:active{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}.__item .__accent{width:3px;flex-shrink:0;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__item .__content{min-width:0px;flex:1 1 0%;padding:.625rem .75rem}.__item .__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.__item .__title{margin:0;min-width:0px;flex:1 1 0%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;line-height:1.25rem;font-weight:500;line-height:1.375}.__item .__status-chip{max-width:45%;flex-shrink:0;pointer-events:none}.__item .__meta{margin-top:.375rem;display:flex;flex-wrap:wrap;align-items:center;column-gap:.75rem;row-gap:.375rem;font-size:.75rem;line-height:1rem;line-height:1.25;opacity:.8}.__item .__meta-item{display:inline-flex;min-width:0px;max-width:100%;align-items:center;gap:.25rem}.__item .__meta-item i{flex-shrink:0;font-size:.75rem;line-height:1rem;opacity:.85}.__item .__meta-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-badge{transition:transform .15s ease}.filter-badge:hover{transform:translateY(-1px)}.__list>.__item{animation:slideIn .25s ease forwards;opacity:0}.__list>.__item:nth-child(1){animation-delay:.04s}.__list>.__item:nth-child(2){animation-delay:.08s}.__list>.__item:nth-child(3){animation-delay:.12s}.__list>.__item:nth-child(4){animation-delay:.16s}.__list>.__item:nth-child(5){animation-delay:.2s}.__list>.__item:nth-child(6){animation-delay:.24s}.__list>.__item:nth-child(7){animation-delay:.28s}.__list>.__item:nth-child(8){animation-delay:.32s}.__list>.__item:nth-child(9){animation-delay:.36s}.__list>.__item:nth-child(10){animation-delay:.4s}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
960
|
+
}], ctorParameters: () => [], propDecorators: { taskClick: [{ type: i0.Output, args: ["taskClick"] }] } });
|
|
353
961
|
|
|
354
962
|
var taskBoardWidget_component = /*#__PURE__*/Object.freeze({
|
|
355
963
|
__proto__: null,
|
|
@@ -464,6 +1072,31 @@ const AXPTaskBoardWidget = {
|
|
|
464
1072
|
},
|
|
465
1073
|
visible: true,
|
|
466
1074
|
},
|
|
1075
|
+
// ====== Color By ======
|
|
1076
|
+
{
|
|
1077
|
+
name: 'colorBy',
|
|
1078
|
+
title: '@dashboard:task-board.color-by',
|
|
1079
|
+
group: AXP_APPEARANCE_PROPERTY_GROUP,
|
|
1080
|
+
schema: {
|
|
1081
|
+
dataType: 'string',
|
|
1082
|
+
interface: {
|
|
1083
|
+
name: 'colorBy',
|
|
1084
|
+
path: 'options.colorBy',
|
|
1085
|
+
type: AXPWidgetsCatalog.select,
|
|
1086
|
+
options: {
|
|
1087
|
+
valueField: 'name',
|
|
1088
|
+
textField: 'title',
|
|
1089
|
+
allowClear: true,
|
|
1090
|
+
dataSource: [
|
|
1091
|
+
{ title: 'Due Date', name: 'dueDate' },
|
|
1092
|
+
{ title: 'Priority', name: 'priority' },
|
|
1093
|
+
{ title: 'Status', name: 'status' },
|
|
1094
|
+
],
|
|
1095
|
+
},
|
|
1096
|
+
},
|
|
1097
|
+
},
|
|
1098
|
+
visible: true,
|
|
1099
|
+
},
|
|
467
1100
|
// ====== Display options ======
|
|
468
1101
|
{
|
|
469
1102
|
name: 'maxItems',
|
|
@@ -604,22 +1237,7 @@ class AXPTaskTypeDataSourceDefinition {
|
|
|
604
1237
|
type: AXPWidgetsCatalog.text,
|
|
605
1238
|
},
|
|
606
1239
|
],
|
|
607
|
-
filters: [
|
|
608
|
-
{
|
|
609
|
-
field: 'title',
|
|
610
|
-
title: 'Title',
|
|
611
|
-
operator: {
|
|
612
|
-
type: 'equal',
|
|
613
|
-
},
|
|
614
|
-
widget: {
|
|
615
|
-
type: AXPWidgetsCatalog.text,
|
|
616
|
-
},
|
|
617
|
-
filterType: {
|
|
618
|
-
advance: true,
|
|
619
|
-
inline: true,
|
|
620
|
-
},
|
|
621
|
-
},
|
|
622
|
-
],
|
|
1240
|
+
filters: [],
|
|
623
1241
|
textField: {
|
|
624
1242
|
name: 'title',
|
|
625
1243
|
title: 'Title',
|
|
@@ -666,13 +1284,18 @@ function hasTaskBoardSavedAssigneePreference(savedAssigneeIds) {
|
|
|
666
1284
|
return savedAssigneeIds !== undefined && savedAssigneeIds !== null;
|
|
667
1285
|
}
|
|
668
1286
|
/**
|
|
669
|
-
* Resolves saved assignee ids from settings. When the setting is unset (`undefined`/`null`)
|
|
670
|
-
*
|
|
1287
|
+
* Resolves saved assignee ids from settings. When the setting is unset (`undefined`/`null`):
|
|
1288
|
+
* - Users with view-all permission default to no assignee filter (all tasks).
|
|
1289
|
+
* - Everyone else defaults to the signed-in user only.
|
|
1290
|
+
* An explicit empty array means "no assignee filter".
|
|
671
1291
|
*/
|
|
672
1292
|
function resolveTaskBoardSavedAssigneeIds(sessionService, savedAssigneeIds) {
|
|
673
1293
|
if (hasTaskBoardSavedAssigneePreference(savedAssigneeIds)) {
|
|
674
1294
|
return savedAssigneeIds ?? [];
|
|
675
1295
|
}
|
|
1296
|
+
if (canViewAllTaskAssignees(sessionService)) {
|
|
1297
|
+
return [];
|
|
1298
|
+
}
|
|
676
1299
|
const currentUserId = sessionService.user?.id;
|
|
677
1300
|
return currentUserId != null ? [currentUserId] : [];
|
|
678
1301
|
}
|
|
@@ -850,14 +1473,14 @@ function createAppRoute() {
|
|
|
850
1473
|
const config = inject(AXP_ENTITY_CONFIG_TOKEN);
|
|
851
1474
|
return {
|
|
852
1475
|
path: ':app/TaskManagement/task-board',
|
|
853
|
-
canActivate: [
|
|
1476
|
+
canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],
|
|
854
1477
|
loadComponent: () => {
|
|
855
1478
|
return config.viewers.root();
|
|
856
1479
|
},
|
|
857
1480
|
children: [
|
|
858
1481
|
{
|
|
859
1482
|
path: '',
|
|
860
|
-
loadComponent: () => import('./acorex-modules-task-management-task-board.page-
|
|
1483
|
+
loadComponent: () => import('./acorex-modules-task-management-task-board.page-Brgg9wJa.mjs').then((c) => c.AXMTaskBoardPage),
|
|
861
1484
|
},
|
|
862
1485
|
],
|
|
863
1486
|
};
|
|
@@ -933,6 +1556,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
933
1556
|
}]
|
|
934
1557
|
}] });
|
|
935
1558
|
|
|
1559
|
+
function toTaskBoardHolidayDate(occasion) {
|
|
1560
|
+
return mapCalendarOccasionToHolidayDate(occasion);
|
|
1561
|
+
}
|
|
1562
|
+
|
|
936
1563
|
/**
|
|
937
1564
|
* An abstract class for a workflow task provider, which is responsible for
|
|
938
1565
|
* fetching and manipulating task data from a specific source.
|
|
@@ -992,6 +1619,10 @@ class AXPTaskPopoverComponent {
|
|
|
992
1619
|
});
|
|
993
1620
|
}
|
|
994
1621
|
}
|
|
1622
|
+
/**
|
|
1623
|
+
* Optional resolver registered by workflow-management to discover task providers on demand.
|
|
1624
|
+
*/
|
|
1625
|
+
const AXP_WORKFLOW_TASK_PROVIDER_RESOLVER = new InjectionToken('AXP_WORKFLOW_TASK_PROVIDER_RESOLVER');
|
|
995
1626
|
/**
|
|
996
1627
|
* Injection token for registering multiple workflow task providers.
|
|
997
1628
|
*/
|
|
@@ -1001,7 +1632,8 @@ class AXPTaskBoardService {
|
|
|
1001
1632
|
constructor() {
|
|
1002
1633
|
this.calendarService = inject(AXCalendarService);
|
|
1003
1634
|
this.calendarManagementService = inject(AXMCalendarManagementService);
|
|
1004
|
-
this.
|
|
1635
|
+
this.injector = inject(Injector);
|
|
1636
|
+
this.providerResolver = inject(AXP_WORKFLOW_TASK_PROVIDER_RESOLVER, { optional: true });
|
|
1005
1637
|
this.destroyRef = inject(DestroyRef);
|
|
1006
1638
|
this.eventService = inject(AXPBroadcastEventService);
|
|
1007
1639
|
/** Cached resolved providers; set after first call to resolveProviders(). */
|
|
@@ -1058,21 +1690,44 @@ class AXPTaskBoardService {
|
|
|
1058
1690
|
const ref = taskOrRef;
|
|
1059
1691
|
this.eventService.publish('task-board.open-task', ref);
|
|
1060
1692
|
}
|
|
1693
|
+
/** Clears cached workflow task providers so the next resolve re-reads DI registrations. */
|
|
1694
|
+
clearProviderCache() {
|
|
1695
|
+
this.resolvedProviders = null;
|
|
1696
|
+
}
|
|
1061
1697
|
/**
|
|
1062
|
-
* Resolves
|
|
1063
|
-
*
|
|
1698
|
+
* Resolves workflow task providers. Uses the optional workflow resolver when registered so discovery
|
|
1699
|
+
* can be re-run after workflow definitions become available (first app load before mock seed).
|
|
1064
1700
|
*/
|
|
1065
1701
|
async resolveProviders() {
|
|
1066
|
-
if (this.resolvedProviders !== null) {
|
|
1702
|
+
if (this.resolvedProviders !== null && this.resolvedProviders.length > 0) {
|
|
1067
1703
|
return this.resolvedProviders;
|
|
1068
1704
|
}
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1705
|
+
let providers = [];
|
|
1706
|
+
if (this.providerResolver) {
|
|
1707
|
+
providers = await this.providerResolver();
|
|
1708
|
+
if (providers.length === 0) {
|
|
1709
|
+
providers = await this.providerResolver({ force: true });
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
else {
|
|
1713
|
+
providers = await this.flattenProviderEntries(this.getInjectedProviderEntries());
|
|
1714
|
+
}
|
|
1715
|
+
if (providers.length > 0) {
|
|
1716
|
+
this.resolvedProviders = providers;
|
|
1717
|
+
}
|
|
1718
|
+
return providers;
|
|
1719
|
+
}
|
|
1720
|
+
getInjectedProviderEntries() {
|
|
1721
|
+
const injected = this.injector.get(AXP_WORKFLOW_TASK_PROVIDER, null, { optional: true });
|
|
1722
|
+
if (injected == null) {
|
|
1723
|
+
return [];
|
|
1724
|
+
}
|
|
1725
|
+
return Array.isArray(injected) ? injected : [injected];
|
|
1726
|
+
}
|
|
1727
|
+
async flattenProviderEntries(entries) {
|
|
1728
|
+
const resolved = await Promise.all(entries.map((entry) => Promise.resolve(entry)));
|
|
1073
1729
|
const flattened = resolved.flatMap((entry) => (Array.isArray(entry) ? entry : [entry]));
|
|
1074
|
-
|
|
1075
|
-
return this.resolvedProviders;
|
|
1730
|
+
return flattened.filter((provider) => provider != null && typeof provider.getTasks === 'function');
|
|
1076
1731
|
}
|
|
1077
1732
|
async getTaskTypes() {
|
|
1078
1733
|
return this.resolveProviders();
|
|
@@ -1163,12 +1818,8 @@ class AXPTaskBoardService {
|
|
|
1163
1818
|
return statuses.find((s) => s.key === key)?.title ?? null;
|
|
1164
1819
|
}
|
|
1165
1820
|
async getEvents(range, eventTypeIds) {
|
|
1166
|
-
const events = await this.calendarManagementService.
|
|
1167
|
-
return events.map((event) => (
|
|
1168
|
-
date: event.date,
|
|
1169
|
-
title: event.title,
|
|
1170
|
-
description: event.description,
|
|
1171
|
-
}));
|
|
1821
|
+
const events = await this.calendarManagementService.getOccasions(range, eventTypeIds);
|
|
1822
|
+
return events.map((event) => toTaskBoardHolidayDate(event));
|
|
1172
1823
|
}
|
|
1173
1824
|
async getCalendarEventTypes() {
|
|
1174
1825
|
try {
|
|
@@ -1228,22 +1879,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1228
1879
|
}]
|
|
1229
1880
|
}], ctorParameters: () => [] });
|
|
1230
1881
|
|
|
1231
|
-
/**
|
|
1232
|
-
* Returns tasks whose [startDate, endDate] overlaps the filter range (inclusive).
|
|
1233
|
-
*/
|
|
1234
|
-
function filterTasksOverlappingRange(tasks, range) {
|
|
1235
|
-
if (!range?.from || !range?.end) {
|
|
1236
|
-
return tasks;
|
|
1237
|
-
}
|
|
1238
|
-
const rangeStart = range.from.getTime();
|
|
1239
|
-
const rangeEnd = range.end.getTime();
|
|
1240
|
-
return tasks.filter((task) => {
|
|
1241
|
-
const taskStart = new Date(task.startDate).getTime();
|
|
1242
|
-
const taskEnd = new Date(task.endDate).getTime();
|
|
1243
|
-
return taskStart <= rangeEnd && taskEnd >= rangeStart;
|
|
1244
|
-
});
|
|
1245
|
-
}
|
|
1246
|
-
|
|
1247
1882
|
/** Width for a single icon-only row action column. */
|
|
1248
1883
|
const TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH = '70px';
|
|
1249
1884
|
/** Icon-only command that opens the task details popover. */
|
|
@@ -1469,7 +2104,7 @@ class AXMTaskBoardDefaultTaskPopoverComponent extends AXPTaskPopoverComponent {
|
|
|
1469
2104
|
</div>
|
|
1470
2105
|
</div>
|
|
1471
2106
|
}
|
|
1472
|
-
`, isInline: true, styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=
|
|
2107
|
+
`, isInline: true, styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__icon--priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__icon--priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__icon--priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-500)}.task-popover__info-content{flex:1;min-width:0;display:flex;align-items:center}.task-popover__info-text{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-primary);word-wrap:break-word}.task-popover__priority{text-transform:capitalize;font-weight:500}.task-popover__priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-600)}.task-popover__actions{padding:12px 20px 16px;border-top:1px solid var(--ax-sys-color-border);display:flex;flex-direction:column;gap:8px;background:var(--ax-sys-color-lighter-surface)}.task-popover__actions-group{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1473
2108
|
}
|
|
1474
2109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMTaskBoardDefaultTaskPopoverComponent, decorators: [{
|
|
1475
2110
|
type: Component,
|
|
@@ -1578,7 +2213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1578
2213
|
</div>
|
|
1579
2214
|
</div>
|
|
1580
2215
|
}
|
|
1581
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule], styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=
|
|
2216
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule], styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__icon--priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__icon--priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__icon--priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-500)}.task-popover__info-content{flex:1;min-width:0;display:flex;align-items:center}.task-popover__info-text{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-primary);word-wrap:break-word}.task-popover__priority{text-transform:capitalize;font-weight:500}.task-popover__priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-600)}.task-popover__actions{padding:12px 20px 16px;border-top:1px solid var(--ax-sys-color-border);display:flex;flex-direction:column;gap:8px;background:var(--ax-sys-color-lighter-surface)}.task-popover__actions-group{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}\n"] }]
|
|
1582
2217
|
}], ctorParameters: () => [], propDecorators: { task: [{ type: i0.Input, args: [{ isSignal: true, alias: "task", required: true }] }] } });
|
|
1583
2218
|
/**
|
|
1584
2219
|
* Resolves the popover component for a task: provider custom component or the default task popover.
|
|
@@ -1629,7 +2264,19 @@ class AXMTaskBoardTaskPopoverShellComponent {
|
|
|
1629
2264
|
this.task = input.required(...(ngDevMode ? [{ debugName: "task" }] : /* istanbul ignore next */ []));
|
|
1630
2265
|
this.bodyComponent = input.required(...(ngDevMode ? [{ debugName: "bodyComponent" }] : /* istanbul ignore next */ []));
|
|
1631
2266
|
this.requestClose = input.required(...(ngDevMode ? [{ debugName: "requestClose" }] : /* istanbul ignore next */ []));
|
|
2267
|
+
this.localeService = inject(AXLocaleService);
|
|
2268
|
+
this.formatService = inject(AXFormatService);
|
|
2269
|
+
this.settingsService = inject(AXPSettingsService);
|
|
2270
|
+
this.translationService = inject(AXTranslationService);
|
|
2271
|
+
this.i18nParams = signal({}, ...(ngDevMode ? [{ debugName: "i18nParams" }] : /* istanbul ignore next */ []));
|
|
2272
|
+
this.titleKey = computed(() => getTaskTranslationKey(this.task(), 'title'), ...(ngDevMode ? [{ debugName: "titleKey" }] : /* istanbul ignore next */ []));
|
|
1632
2273
|
this.bodyInputs = computed(() => ({ task: this.task() }), ...(ngDevMode ? [{ debugName: "bodyInputs" }] : /* istanbul ignore next */ []));
|
|
2274
|
+
this.i18nParamsEffect = effect(() => {
|
|
2275
|
+
const task = this.task();
|
|
2276
|
+
void this.localeService.activeProfile().localeInfo?.code;
|
|
2277
|
+
const raw = get(task.data, 'taskI18nParams');
|
|
2278
|
+
void formatTaskI18nParamsForTranslate(raw, this.translationService, this.formatService, this.settingsService).then((params) => this.i18nParams.set(params));
|
|
2279
|
+
}, ...(ngDevMode ? [{ debugName: "i18nParamsEffect" }] : /* istanbul ignore next */ []));
|
|
1633
2280
|
}
|
|
1634
2281
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMTaskBoardTaskPopoverShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1635
2282
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMTaskBoardTaskPopoverShellComponent, isStandalone: true, selector: "axm-task-board-task-popover-shell", inputs: { task: { classPropertyName: "task", publicName: "task", isSignal: true, isRequired: true, transformFunction: null }, bodyComponent: { classPropertyName: "bodyComponent", publicName: "bodyComponent", isSignal: true, isRequired: true, transformFunction: null }, requestClose: { classPropertyName: "requestClose", publicName: "requestClose", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
@@ -1637,7 +2284,13 @@ class AXMTaskBoardTaskPopoverShellComponent {
|
|
|
1637
2284
|
<div class="task-popover__header">
|
|
1638
2285
|
<div class="task-popover__title-section">
|
|
1639
2286
|
<div class="task-popover__title-row">
|
|
1640
|
-
<h3 class="task-popover__title"
|
|
2287
|
+
<h3 class="task-popover__title">
|
|
2288
|
+
@if (titleKey(); as key) {
|
|
2289
|
+
{{ key | translate: { params: i18nParams() } | async }}
|
|
2290
|
+
} @else {
|
|
2291
|
+
{{ task().title }}
|
|
2292
|
+
}
|
|
2293
|
+
</h3>
|
|
1641
2294
|
<button type="button" class="task-popover__close-btn" (click)="requestClose()()" aria-label="Close">
|
|
1642
2295
|
<ax-icon class="ax-icon ax-icon-close"></ax-icon>
|
|
1643
2296
|
</button>
|
|
@@ -1650,7 +2303,7 @@ class AXMTaskBoardTaskPopoverShellComponent {
|
|
|
1650
2303
|
}
|
|
1651
2304
|
</div>
|
|
1652
2305
|
</div>
|
|
1653
|
-
`, isInline: true, styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=
|
|
2306
|
+
`, isInline: true, styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__icon--priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__icon--priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__icon--priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-500)}.task-popover__info-content{flex:1;min-width:0;display:flex;align-items:center}.task-popover__info-text{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-primary);word-wrap:break-word}.task-popover__priority{text-transform:capitalize;font-weight:500}.task-popover__priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-600)}.task-popover__actions{padding:12px 20px 16px;border-top:1px solid var(--ax-sys-color-border);display:flex;flex-direction:column;gap:8px;background:var(--ax-sys-color-lighter-surface)}.task-popover__actions-group{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1654
2307
|
}
|
|
1655
2308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMTaskBoardTaskPopoverShellComponent, decorators: [{
|
|
1656
2309
|
type: Component,
|
|
@@ -1659,7 +2312,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1659
2312
|
<div class="task-popover__header">
|
|
1660
2313
|
<div class="task-popover__title-section">
|
|
1661
2314
|
<div class="task-popover__title-row">
|
|
1662
|
-
<h3 class="task-popover__title"
|
|
2315
|
+
<h3 class="task-popover__title">
|
|
2316
|
+
@if (titleKey(); as key) {
|
|
2317
|
+
{{ key | translate: { params: i18nParams() } | async }}
|
|
2318
|
+
} @else {
|
|
2319
|
+
{{ task().title }}
|
|
2320
|
+
}
|
|
2321
|
+
</h3>
|
|
1663
2322
|
<button type="button" class="task-popover__close-btn" (click)="requestClose()()" aria-label="Close">
|
|
1664
2323
|
<ax-icon class="ax-icon ax-icon-close"></ax-icon>
|
|
1665
2324
|
</button>
|
|
@@ -1672,7 +2331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1672
2331
|
}
|
|
1673
2332
|
</div>
|
|
1674
2333
|
</div>
|
|
1675
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule, AXDecoratorModule], styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=
|
|
2334
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule, AXDecoratorModule, AXTranslationModule], styles: [".task-popover{background:rgba(var(--ax-sys-color-lightest-surface));border-radius:12px;min-width:280px;max-width:420px;overflow:hidden;display:flex;flex-direction:column}.task-popover__header{padding:20px 20px 16px;border-bottom:1px solid var(--ax-sys-color-border);background:linear-gradient(to bottom,var(--ax-sys-color-lightest-surface),var(--ax-sys-color-lighter-surface))}.task-popover__title-section{display:flex;flex-direction:column;gap:8px}.task-popover__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-popover__title{font-size:18px;font-weight:600;line-height:1.4;color:var(--ax-sys-color-text-primary);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-popover__close-btn{flex-shrink:0;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ax-sys-color-text-neutral-600);transition:color .2s ease;border-radius:4px}.task-popover__close-btn:hover{color:var(--ax-sys-color-text-primary);background:var(--ax-sys-color-lighter-surface)}.task-popover__close-btn:active{background:var(--ax-sys-color-light-surface)}.task-popover__close-btn ax-icon{display:block;width:16px;height:16px}.task-popover__body{display:flex;flex-direction:column}.task-popover__description{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-secondary);margin:0;padding:0 20px 12px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.task-popover__content{padding:16px 20px;display:flex;flex-direction:column;gap:12px;flex:1}.task-popover__info-item{display:flex;align-items:flex-start;gap:12px;min-height:24px}.task-popover__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;color:var(--ax-sys-color-text-neutral-600);font-size:14px}.task-popover__icon i{display:block}.task-popover__icon--priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__icon--priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__icon--priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__icon--priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-500)}.task-popover__info-content{flex:1;min-width:0;display:flex;align-items:center}.task-popover__info-text{font-size:14px;line-height:1.5;color:var(--ax-sys-color-text-primary);word-wrap:break-word}.task-popover__priority{text-transform:capitalize;font-weight:500}.task-popover__priority[data-priority=urgent]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=normal]{color:rgb(var(--ax-sys-color-secondary-500))}.task-popover__priority[data-priority=low]{color:var(--ax-sys-color-text-neutral-600)}.task-popover__actions{padding:12px 20px 16px;border-top:1px solid var(--ax-sys-color-border);display:flex;flex-direction:column;gap:8px;background:var(--ax-sys-color-lighter-surface)}.task-popover__actions-group{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}\n"] }]
|
|
1676
2335
|
}], propDecorators: { task: [{ type: i0.Input, args: [{ isSignal: true, alias: "task", required: true }] }], bodyComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyComponent", required: true }] }], requestClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestClose", required: true }] }] } });
|
|
1677
2336
|
|
|
1678
2337
|
//#endregion
|
|
@@ -1858,13 +2517,20 @@ class AXMTaskBoardTaskPopoverOverlayService {
|
|
|
1858
2517
|
if (!target || !overlayElement) {
|
|
1859
2518
|
return;
|
|
1860
2519
|
}
|
|
1861
|
-
if (
|
|
2520
|
+
if (this.isInsideTaskPopoverInteractiveSurface(target, overlayElement, anchor)) {
|
|
1862
2521
|
return;
|
|
1863
2522
|
}
|
|
1864
2523
|
this.close();
|
|
1865
2524
|
};
|
|
1866
2525
|
this.document.addEventListener('mousedown', this.outsideClickHandler);
|
|
1867
2526
|
}
|
|
2527
|
+
/** Dropdown menus render outside the popover overlay; ignore those clicks when dismissing. */
|
|
2528
|
+
isInsideTaskPopoverInteractiveSurface(target, overlayElement, anchor) {
|
|
2529
|
+
if (anchor.contains(target) || overlayElement.contains(target)) {
|
|
2530
|
+
return true;
|
|
2531
|
+
}
|
|
2532
|
+
return Boolean(target.closest('ax-dropdown-panel, ax-button-item-list, ax-button-item, ax-dropdown-button, .ax-dropdown-panel'));
|
|
2533
|
+
}
|
|
1868
2534
|
removeDismissHandlers() {
|
|
1869
2535
|
if (this.keydownHandler) {
|
|
1870
2536
|
this.document.removeEventListener('keydown', this.keydownHandler);
|
|
@@ -1947,11 +2613,10 @@ var taskBoardShortcut_component = /*#__PURE__*/Object.freeze({
|
|
|
1947
2613
|
});
|
|
1948
2614
|
|
|
1949
2615
|
const VALID_PRIORITIES = [
|
|
1950
|
-
{ title: '
|
|
2616
|
+
{ title: 'Urgent', name: 'urgent' },
|
|
1951
2617
|
{ title: 'High', name: 'high' },
|
|
1952
|
-
{ title: '
|
|
2618
|
+
{ title: 'Normal', name: 'normal' },
|
|
1953
2619
|
{ title: 'Low', name: 'low' },
|
|
1954
|
-
{ title: 'Lowest', name: 'lowest' },
|
|
1955
2620
|
{ title: 'No Priority', name: 'no_priority' },
|
|
1956
2621
|
];
|
|
1957
2622
|
const VALID_DATE_RANGES = [
|
|
@@ -2251,179 +2916,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2251
2916
|
type: Injectable
|
|
2252
2917
|
}] });
|
|
2253
2918
|
|
|
2254
|
-
var AXMTaskBoardSettings;
|
|
2255
|
-
(function (AXMTaskBoardSettings) {
|
|
2256
|
-
/** User preference: visible modes inside Calendar part. */
|
|
2257
|
-
AXMTaskBoardSettings["VisibleCalendarModes"] = "TaskManagement:Setting:TaskBoard.VisibleModes.Calendar";
|
|
2258
|
-
/** User preference: visible modes inside Timeline part. */
|
|
2259
|
-
AXMTaskBoardSettings["VisibleTimelineModes"] = "TaskManagement:Setting:TaskBoard.VisibleModes.Timeline";
|
|
2260
|
-
/** User preference: visible modes inside Table part. */
|
|
2261
|
-
AXMTaskBoardSettings["VisibleTableModes"] = "TaskManagement:Setting:TaskBoard.VisibleModes.Table";
|
|
2262
|
-
/** User preference: visible modes inside Kanban part. */
|
|
2263
|
-
AXMTaskBoardSettings["VisibleKanbanModes"] = "TaskManagement:Setting:TaskBoard.VisibleModes.Kanban";
|
|
2264
|
-
AXMTaskBoardSettings["ViewMode"] = "taskboard.viewMode";
|
|
2265
|
-
AXMTaskBoardSettings["DetailPanel"] = "taskboard.DetailPanel";
|
|
2266
|
-
AXMTaskBoardSettings["DaysCount"] = "taskboard.calendar.daysCount";
|
|
2267
|
-
AXMTaskBoardSettings["CurrentDate"] = "taskboard.calendar.currentDate";
|
|
2268
|
-
AXMTaskBoardSettings["SelectedPriorities"] = "taskboard.filter.selectedPriorities";
|
|
2269
|
-
AXMTaskBoardSettings["SelectedAssigneeIds"] = "taskboard.filter.selectedAssigneeIds";
|
|
2270
|
-
AXMTaskBoardSettings["SelectedReporterIds"] = "taskboard.filter.selectedReporterIds";
|
|
2271
|
-
AXMTaskBoardSettings["SelectedTaskTypeNames"] = "taskboard.filter.selectedTaskTypeNames";
|
|
2272
|
-
AXMTaskBoardSettings["SelectedCalendarEventTypeIds"] = "taskboard.filter.selectedCalendarEventTypeIds";
|
|
2273
|
-
})(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));
|
|
2274
|
-
|
|
2275
|
-
//#region ---- Task Board View Mode Ids ----
|
|
2276
|
-
/** Literal union of every selectable task board mode (matches scheduler + table + kanban). */
|
|
2277
|
-
const AXM_TASK_BOARD_ALL_VIEW_MODE_IDS = [
|
|
2278
|
-
'day',
|
|
2279
|
-
'week',
|
|
2280
|
-
'month',
|
|
2281
|
-
'agenda',
|
|
2282
|
-
'timeline-day',
|
|
2283
|
-
'timeline-weekly',
|
|
2284
|
-
'timeline-month',
|
|
2285
|
-
'timeline-year',
|
|
2286
|
-
'grid',
|
|
2287
|
-
'status-grouped-grid',
|
|
2288
|
-
'kanban',
|
|
2289
|
-
];
|
|
2290
|
-
const AXM_TASK_BOARD_CALENDAR_VIEW_MODE_IDS = ['day', 'week', 'month', 'agenda'];
|
|
2291
|
-
const AXM_TASK_BOARD_TIMELINE_VIEW_MODE_IDS = [
|
|
2292
|
-
'timeline-day',
|
|
2293
|
-
'timeline-weekly',
|
|
2294
|
-
'timeline-month',
|
|
2295
|
-
'timeline-year',
|
|
2296
|
-
];
|
|
2297
|
-
const AXM_TASK_BOARD_TABLE_VIEW_MODE_IDS = ['grid', 'status-grouped-grid'];
|
|
2298
|
-
const AXM_TASK_BOARD_KANBAN_VIEW_MODE_IDS = ['kanban'];
|
|
2299
|
-
/**
|
|
2300
|
-
* Normalizes persisted setting: removes unknown ids; empty or missing falls back to full list.
|
|
2301
|
-
*/
|
|
2302
|
-
function normalizeVisibleTaskBoardViewModeIds(raw) {
|
|
2303
|
-
const allowed = new Set(AXM_TASK_BOARD_ALL_VIEW_MODE_IDS);
|
|
2304
|
-
if (!raw?.length) {
|
|
2305
|
-
return [...AXM_TASK_BOARD_ALL_VIEW_MODE_IDS];
|
|
2306
|
-
}
|
|
2307
|
-
const next = raw.filter((id) => allowed.has(id));
|
|
2308
|
-
return next.length > 0 ? next : [...AXM_TASK_BOARD_ALL_VIEW_MODE_IDS];
|
|
2309
|
-
}
|
|
2310
|
-
/**
|
|
2311
|
-
* Normalizes each part and combines them into one visible mode list.
|
|
2312
|
-
*/
|
|
2313
|
-
function normalizeVisibleTaskBoardModesByParts(params) {
|
|
2314
|
-
const calendar = normalizePart(params.calendar, AXM_TASK_BOARD_CALENDAR_VIEW_MODE_IDS);
|
|
2315
|
-
const timeline = normalizePart(params.timeline, AXM_TASK_BOARD_TIMELINE_VIEW_MODE_IDS);
|
|
2316
|
-
const table = normalizePart(params.table, AXM_TASK_BOARD_TABLE_VIEW_MODE_IDS);
|
|
2317
|
-
const kanban = normalizePart(params.kanban, AXM_TASK_BOARD_KANBAN_VIEW_MODE_IDS);
|
|
2318
|
-
return [...calendar, ...timeline, ...table, ...kanban];
|
|
2319
|
-
}
|
|
2320
|
-
function normalizePart(raw, partIds) {
|
|
2321
|
-
const allowed = new Set(partIds);
|
|
2322
|
-
// Missing value means "not configured yet" => default to all.
|
|
2323
|
-
if (raw == null) {
|
|
2324
|
-
return [...partIds];
|
|
2325
|
-
}
|
|
2326
|
-
// Explicit empty selection means "show nothing in this part".
|
|
2327
|
-
if (raw.length === 0) {
|
|
2328
|
-
return [];
|
|
2329
|
-
}
|
|
2330
|
-
const filtered = raw.filter((id) => allowed.has(id));
|
|
2331
|
-
return filtered;
|
|
2332
|
-
}
|
|
2333
|
-
//#endregion
|
|
2334
|
-
|
|
2335
2919
|
//#region ---- Imports ----
|
|
2336
2920
|
//#endregion
|
|
2337
2921
|
//#region ---- Settings Provider ----
|
|
2338
2922
|
const I18N = `@${RootConfig.config.i18n}:settings`;
|
|
2339
2923
|
class AXMSettingProvider {
|
|
2340
2924
|
async provide(context) {
|
|
2341
|
-
const calendarModeDataSource = AXM_TASK_BOARD_CALENDAR_VIEW_MODE_IDS.map((id) => ({
|
|
2342
|
-
value: id,
|
|
2343
|
-
text: `${I18N}.task-management.taskboard.parts.calendar.mode-options.${id}`,
|
|
2344
|
-
}));
|
|
2345
|
-
const timelineModeDataSource = AXM_TASK_BOARD_TIMELINE_VIEW_MODE_IDS.map((id) => ({
|
|
2346
|
-
value: id,
|
|
2347
|
-
text: `${I18N}.task-management.taskboard.parts.timeline.mode-options.${id}`,
|
|
2348
|
-
}));
|
|
2349
|
-
const tableModeDataSource = AXM_TASK_BOARD_TABLE_VIEW_MODE_IDS.map((id) => ({
|
|
2350
|
-
value: id,
|
|
2351
|
-
text: `${I18N}.task-management.taskboard.parts.table.mode-options.${id}`,
|
|
2352
|
-
}));
|
|
2353
|
-
const kanbanModeDataSource = AXM_TASK_BOARD_KANBAN_VIEW_MODE_IDS.map((id) => ({
|
|
2354
|
-
value: id,
|
|
2355
|
-
text: `${I18N}.task-management.taskboard.parts.kanban.mode-options.${id}`,
|
|
2356
|
-
}));
|
|
2357
2925
|
context
|
|
2358
2926
|
.addGroup('task-management', `${I18N}.task-management.group.nav-title`, `${I18N}.task-management.group.description`, RootConfig.module.icon, `${I18N}.task-management.group.title`, 90)
|
|
2359
2927
|
.addSection('taskboard', `${I18N}.task-management.taskboard.section.title`, `${I18N}.task-management.taskboard.section.description`)
|
|
2360
2928
|
.addSetting({
|
|
2361
|
-
key: AXMTaskBoardSettings.
|
|
2929
|
+
key: AXMTaskBoardSettings.VisibleCalendar,
|
|
2362
2930
|
title: `${I18N}.task-management.taskboard.parts.calendar.title`,
|
|
2363
2931
|
scope: 'U',
|
|
2364
2932
|
isInherited: true,
|
|
2365
|
-
defaultValue:
|
|
2366
|
-
widget: {
|
|
2367
|
-
type: AXPWidgetsList.Editors.SelectionList,
|
|
2368
|
-
options: {
|
|
2369
|
-
multiple: true,
|
|
2370
|
-
valueField: 'value',
|
|
2371
|
-
textField: 'text',
|
|
2372
|
-
dataSource: calendarModeDataSource,
|
|
2373
|
-
},
|
|
2374
|
-
},
|
|
2933
|
+
defaultValue: true,
|
|
2934
|
+
widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
|
|
2375
2935
|
description: `${I18N}.task-management.taskboard.parts.calendar.description`,
|
|
2376
2936
|
})
|
|
2377
2937
|
.addSetting({
|
|
2378
|
-
key: AXMTaskBoardSettings.
|
|
2938
|
+
key: AXMTaskBoardSettings.VisibleTimeline,
|
|
2379
2939
|
title: `${I18N}.task-management.taskboard.parts.timeline.title`,
|
|
2380
2940
|
scope: 'U',
|
|
2381
2941
|
isInherited: true,
|
|
2382
|
-
defaultValue:
|
|
2383
|
-
widget: {
|
|
2384
|
-
type: AXPWidgetsList.Editors.SelectionList,
|
|
2385
|
-
options: {
|
|
2386
|
-
multiple: true,
|
|
2387
|
-
valueField: 'value',
|
|
2388
|
-
textField: 'text',
|
|
2389
|
-
dataSource: timelineModeDataSource,
|
|
2390
|
-
},
|
|
2391
|
-
},
|
|
2942
|
+
defaultValue: true,
|
|
2943
|
+
widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
|
|
2392
2944
|
description: `${I18N}.task-management.taskboard.parts.timeline.description`,
|
|
2393
2945
|
})
|
|
2394
2946
|
.addSetting({
|
|
2395
|
-
key: AXMTaskBoardSettings.
|
|
2947
|
+
key: AXMTaskBoardSettings.VisibleTable,
|
|
2396
2948
|
title: `${I18N}.task-management.taskboard.parts.table.title`,
|
|
2397
2949
|
scope: 'U',
|
|
2398
2950
|
isInherited: true,
|
|
2399
|
-
defaultValue:
|
|
2400
|
-
widget: {
|
|
2401
|
-
type: AXPWidgetsList.Editors.SelectionList,
|
|
2402
|
-
options: {
|
|
2403
|
-
multiple: true,
|
|
2404
|
-
valueField: 'value',
|
|
2405
|
-
textField: 'text',
|
|
2406
|
-
dataSource: tableModeDataSource,
|
|
2407
|
-
},
|
|
2408
|
-
},
|
|
2951
|
+
defaultValue: true,
|
|
2952
|
+
widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
|
|
2409
2953
|
description: `${I18N}.task-management.taskboard.parts.table.description`,
|
|
2410
2954
|
})
|
|
2411
2955
|
.addSetting({
|
|
2412
|
-
key: AXMTaskBoardSettings.
|
|
2956
|
+
key: AXMTaskBoardSettings.VisibleKanban,
|
|
2413
2957
|
title: `${I18N}.task-management.taskboard.parts.kanban.title`,
|
|
2414
2958
|
scope: 'U',
|
|
2415
2959
|
isInherited: true,
|
|
2416
|
-
defaultValue:
|
|
2960
|
+
defaultValue: true,
|
|
2961
|
+
widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
|
|
2962
|
+
description: `${I18N}.task-management.taskboard.parts.kanban.description`,
|
|
2963
|
+
})
|
|
2964
|
+
.addSetting({
|
|
2965
|
+
key: AXMTaskBoardSettings.ColorBy,
|
|
2966
|
+
title: `${I18N}.task-management.taskboard.color-by.title`,
|
|
2967
|
+
scope: 'U',
|
|
2968
|
+
isInherited: true,
|
|
2969
|
+
defaultValue: 'dueDate',
|
|
2417
2970
|
widget: {
|
|
2418
|
-
type: AXPWidgetsList.Editors.
|
|
2971
|
+
type: AXPWidgetsList.Editors.SelectBox,
|
|
2419
2972
|
options: {
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2973
|
+
valueField: 'name',
|
|
2974
|
+
textField: 'title',
|
|
2975
|
+
dataSource: [
|
|
2976
|
+
{ name: 'dueDate', title: `${I18N}.task-management.taskboard.color-by.due-date` },
|
|
2977
|
+
{ name: 'priority', title: `${I18N}.task-management.taskboard.color-by.priority` },
|
|
2978
|
+
{ name: 'status', title: `${I18N}.task-management.taskboard.color-by.status` },
|
|
2979
|
+
],
|
|
2424
2980
|
},
|
|
2425
2981
|
},
|
|
2426
|
-
description: `${I18N}.task-management.taskboard.
|
|
2982
|
+
description: `${I18N}.task-management.taskboard.color-by.description`,
|
|
2427
2983
|
})
|
|
2428
2984
|
.endSection()
|
|
2429
2985
|
.endGroup();
|
|
@@ -5402,7 +5958,7 @@ async function taskAssignmentFactory(injector) {
|
|
|
5402
5958
|
individual: RootConfig.entities.taskAssignment.title,
|
|
5403
5959
|
plural: RootConfig.entities.taskAssignment.titlePlural,
|
|
5404
5960
|
searchResult: {
|
|
5405
|
-
title: '{{ assignmentRef.displayName
|
|
5961
|
+
title: '{{ context.eval("assignmentRef.displayName") + " - " + context.eval("role") }}',
|
|
5406
5962
|
description: '{{ task.title }}',
|
|
5407
5963
|
},
|
|
5408
5964
|
},
|
|
@@ -5635,7 +6191,7 @@ async function taskAssignmentFactory(injector) {
|
|
|
5635
6191
|
],
|
|
5636
6192
|
},
|
|
5637
6193
|
single: {
|
|
5638
|
-
title: '{{assignmentRef.displayName
|
|
6194
|
+
title: '{{ context.eval("assignmentRef.displayName") + " - " + context.eval("role") }}',
|
|
5639
6195
|
sections: [
|
|
5640
6196
|
{
|
|
5641
6197
|
id: 'basic-info',
|
|
@@ -5721,8 +6277,8 @@ async function timeLogFactory(injector) {
|
|
|
5721
6277
|
individual: RootConfig.entities.timeLog.title,
|
|
5722
6278
|
plural: RootConfig.entities.timeLog.titlePlural,
|
|
5723
6279
|
searchResult: {
|
|
5724
|
-
title: '{{ duration
|
|
5725
|
-
description: '{{ user.displayName
|
|
6280
|
+
title: '{{ context.eval("duration") + " hours - " + context.eval("description") }}',
|
|
6281
|
+
description: '{{ context.eval("user.displayName") + " on " + context.eval("task.title") }}',
|
|
5726
6282
|
},
|
|
5727
6283
|
},
|
|
5728
6284
|
groups: [
|
|
@@ -6112,7 +6668,7 @@ async function taskDependencyFactory(injector) {
|
|
|
6112
6668
|
plural: RootConfig.entities.taskDependency.titlePlural,
|
|
6113
6669
|
searchResult: {
|
|
6114
6670
|
title: '{{ dependencyType }}',
|
|
6115
|
-
description: '{{ task.title
|
|
6671
|
+
description: '{{ context.eval("task.title") + " depends on " + context.eval("dependsOnTask.title") }}',
|
|
6116
6672
|
},
|
|
6117
6673
|
},
|
|
6118
6674
|
plugins: [
|
|
@@ -6377,7 +6933,7 @@ async function taskContextFactory(injector) {
|
|
|
6377
6933
|
individual: RootConfig.entities.taskContext.title,
|
|
6378
6934
|
plural: RootConfig.entities.taskContext.titlePlural,
|
|
6379
6935
|
searchResult: {
|
|
6380
|
-
title: '{{ contextType
|
|
6936
|
+
title: '{{ context.eval("contextType") + ": " + context.eval("contextTitle") }}',
|
|
6381
6937
|
description: '{{ task.title }}',
|
|
6382
6938
|
},
|
|
6383
6939
|
},
|
|
@@ -6550,7 +7106,7 @@ async function taskContextFactory(injector) {
|
|
|
6550
7106
|
],
|
|
6551
7107
|
},
|
|
6552
7108
|
single: {
|
|
6553
|
-
title: '{{contextType
|
|
7109
|
+
title: '{{ context.eval("contextType") + ": " + context.eval("contextTitle") }}',
|
|
6554
7110
|
sections: [
|
|
6555
7111
|
{
|
|
6556
7112
|
id: 'basic-info',
|
|
@@ -6996,5 +7552,5 @@ var taskTemplate_entity = /*#__PURE__*/Object.freeze({
|
|
|
6996
7552
|
* Generated bundle index. Do not edit.
|
|
6997
7553
|
*/
|
|
6998
7554
|
|
|
6999
|
-
export {
|
|
7000
|
-
//# sourceMappingURL=acorex-modules-task-management-acorex-modules-task-management-
|
|
7555
|
+
export { isTaskBoardUnassignedAssigneeId as $, AXMTaskBoardSettings as A, AXPTaskBoardShortcut as B, AXPTaskBoardShortcutViewComponent as C, AXPTaskBoardWidget as D, AXPTaskBoardWidgetViewComponent as E, AXPTaskPopoverComponent as F, AXPTaskTypeDataSourceDefinition as G, AXPWorkflowTaskProvider as H, AXP_DUE_STATUS_PROVIDERS as I, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD as J, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT as K, AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY as L, AXP_WORKFLOW_TASK_PROVIDER as M, AXP_WORKFLOW_TASK_PROVIDER_RESOLVER as N, TASK_BOARD_GRID_ROW_VIEW_ACTION as O, TASK_PRIORITY_ORDER as P, buildTaskAccentCssClass as Q, RootConfig as R, buildTaskAccentSurfaceCssClass as S, TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH as T, buildTaskSurfaceCssClass as U, formatTaskI18nParamsForTranslate as V, getDefaultDueStatusDefinitions as W, getTaskDueStatusKey as X, getTaskPriorityColor as Y, getTaskPriorityFilterKey as Z, getTaskTranslationKey as _, normalizeTaskBoardAssigneeIds as a, mapEntityStatusColorForBadge as a0, matchesTaskBoardAssigneeFilter as a1, matchesTaskBoardAssigneeUserIdsFilter as a2, matchesTaskDueStatusFilter as a3, matchesTaskPriorityFilter as a4, normalizePriorityFilterKey as a5, normalizeTaskPriority as a6, resolveDefaultTaskStatusColor as a7, resolveDueStatusFromDefinitions as a8, resolveTaskBoardAccentColor as a9, resolveTaskBoardCalendarPlacement as aa, resolveTaskBoardCurrentUserAssigneeItem as ab, resolveTaskBoardSchedulingRange as ac, resolveTaskBoardStatusColor as ad, resolveTaskPopoverComponent as ae, taskAssignmentFactory as af, taskChecklistItemFactory as ag, taskContextFactory as ah, taskDependencyFactory as ai, taskFactory as aj, taskOverlapsFilterRange as ak, taskStatusFactory as al, taskTemplateFactory as am, taskTypeFactory as an, timeLogFactory as ao, AXPTaskBoardService as b, canViewAllTaskAssignees as c, AXMTaskBoardTaskPopoverOverlayService as d, TASK_BOARD_GRID_ROW_ACTION_ITEMS as e, AXPDueStatusProviderService as f, filterTasksOverlappingRange as g, hasTaskBoardSavedAssigneePreference as h, enrichTaskBoardTasks as i, resolveTaskBoardSchedulerLabels as j, AXMDefaultDueStatusProvider as k, AXMPermissionsKeys as l, AXMSearchCommandProvider as m, normalizePriorityFilterKeys as n, AXMSettingProvider as o, AXMTaskBoardDefaultTaskPopoverComponent as p, AXMTaskBoardTaskPopoverShellComponent as q, resolveTaskBoardSavedAssigneeIds as r, AXMTaskManagementEntityProvider as s, AXMTaskManagementMenuProvider as t, AXMTaskManagementModule as u, AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID as v, AXM_TASK_VIEW_ALL_PERMISSION as w, AXPDueStatusProvider as x, AXPTASK_PRIORITIES as y, AXPTaskBoardModule as z };
|
|
7556
|
+
//# sourceMappingURL=acorex-modules-task-management-acorex-modules-task-management-Bp-9vZdR.mjs.map
|