@acorex/modules 21.0.0-next.70 → 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.
Files changed (448) hide show
  1. package/fesm2022/acorex-modules-ai-management.mjs +108 -16
  2. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-D7bHX4-0.mjs} +665 -496
  4. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-D7bHX4-0.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs → acorex-modules-assessment-management-assessment-case.entity-Cpbj5sCP.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs.map → acorex-modules-assessment-management-assessment-case.entity-Cpbj5sCP.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-ALsxM0ww.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-ALsxM0ww.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs → acorex-modules-assessment-management-assessment-session.entity-CMW7wsoN.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CMW7wsoN.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs → acorex-modules-assessment-management-fill-assessment-session.command-C-dGKO7p.mjs} +3 -3
  12. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-C-dGKO7p.mjs.map +1 -0
  13. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs → acorex-modules-assessment-management-preview-question.command-CBewUZSF.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs.map → acorex-modules-assessment-management-preview-question.command-CBewUZSF.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs → acorex-modules-assessment-management-preview-questionnaire.command-DlwBZ7mO.mjs} +18 -9
  16. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-DlwBZ7mO.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BEhxeR8A.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BEhxeR8A.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs → acorex-modules-assessment-management-question-bank-item.entity-CfCWKqN5.mjs} +3 -2
  20. package/fesm2022/acorex-modules-assessment-management-question-bank-item.entity-CfCWKqN5.mjs.map +1 -0
  21. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-C03wF6Oy.mjs} +19 -5
  22. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-C03wF6Oy.mjs.map +1 -0
  23. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs → acorex-modules-assessment-management-questionnaire.entity-CPMGkhGu.mjs} +4 -2
  24. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-CPMGkhGu.mjs.map +1 -0
  25. package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs → acorex-modules-assessment-management-review-assessment-session.command-XK3IK3MH.mjs} +3 -3
  26. package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs.map → acorex-modules-assessment-management-review-assessment-session.command-XK3IK3MH.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs → acorex-modules-assessment-management-view-session-answers.command-BPoF0v9C.mjs} +3 -3
  28. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BPoF0v9C.mjs.map} +1 -1
  29. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  30. 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
  31. 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
  32. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-Bf9nJTkD.mjs → acorex-modules-asset-management-asset-system-assignment.entity-B0sf4MzL.mjs} +2 -2
  33. 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
  34. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-Cbzu3bqC.mjs → acorex-modules-asset-management-asset-system-type.entity-Cpcgr3KS.mjs} +2 -2
  35. 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
  36. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DA7dO3eE.mjs → acorex-modules-asset-management-asset-system.entity-CEuEjyuQ.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DA7dO3eE.mjs.map → acorex-modules-asset-management-asset-system.entity-CEuEjyuQ.mjs.map} +1 -1
  38. 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
  39. 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
  40. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BNz1Zfox.mjs → acorex-modules-asset-management-asset-type-section.entity-CK0dAIU4.mjs} +2 -2
  41. 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
  42. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-D_bBxBKI.mjs → acorex-modules-asset-management-asset-type.entity-DexywYoA.mjs} +2 -2
  43. 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
  44. package/fesm2022/{acorex-modules-asset-management-asset.entity-Cf_H7edH.mjs → acorex-modules-asset-management-asset.entity-BNj3kuHC.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-asset-management-asset.entity-Cf_H7edH.mjs.map → acorex-modules-asset-management-asset.entity-BNj3kuHC.mjs.map} +1 -1
  46. package/fesm2022/acorex-modules-asset-management.mjs +1 -1
  47. package/fesm2022/acorex-modules-auth-acorex-modules-auth-JEkso4J7.mjs +1580 -0
  48. package/fesm2022/acorex-modules-auth-acorex-modules-auth-JEkso4J7.mjs.map +1 -0
  49. package/fesm2022/{acorex-modules-auth-app-chooser.component-DnmLfX5x.mjs → acorex-modules-auth-app-chooser.component-MjGWaBI0.mjs} +5 -6
  50. package/fesm2022/acorex-modules-auth-app-chooser.component-MjGWaBI0.mjs.map +1 -0
  51. package/fesm2022/acorex-modules-auth-change-password.command-Ctyw3WfE.mjs +32 -0
  52. package/fesm2022/acorex-modules-auth-change-password.command-Ctyw3WfE.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-auth-change-photo.command-_vxTFH0X.mjs +32 -0
  54. package/fesm2022/acorex-modules-auth-change-photo.command-_vxTFH0X.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-auth-edit-signature.command-CcTJJwAX.mjs +32 -0
  56. package/fesm2022/acorex-modules-auth-edit-signature.command-CcTJJwAX.mjs.map +1 -0
  57. package/fesm2022/{acorex-modules-auth-login.module-D1-POhQk.mjs → acorex-modules-auth-login.module-FJxkiTeX.mjs} +4 -4
  58. package/fesm2022/{acorex-modules-auth-login.module-D1-POhQk.mjs.map → acorex-modules-auth-login.module-FJxkiTeX.mjs.map} +1 -1
  59. package/fesm2022/acorex-modules-auth-master.layout-B4Vpqg2F.mjs +25 -0
  60. package/fesm2022/acorex-modules-auth-master.layout-B4Vpqg2F.mjs.map +1 -0
  61. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BhfFPeWT.mjs → acorex-modules-auth-oauth-callback.component-It5tkYuf.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BhfFPeWT.mjs.map → acorex-modules-auth-oauth-callback.component-It5tkYuf.mjs.map} +1 -1
  63. package/fesm2022/{acorex-modules-auth-user-sessions.component-gJSHI_eh.mjs → acorex-modules-auth-open-sessions.command-Qik0eKUR.mjs} +32 -7
  64. package/fesm2022/acorex-modules-auth-open-sessions.command-Qik0eKUR.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-auth-password.component-BMVSHYy7.mjs → acorex-modules-auth-password.component-B2BIaXZ_.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-auth-password.component-BMVSHYy7.mjs.map → acorex-modules-auth-password.component-B2BIaXZ_.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-auth-password.component-Cm8DsDvu.mjs → acorex-modules-auth-password.component-BRnlp4j1.mjs} +6 -6
  68. package/fesm2022/{acorex-modules-auth-password.component-Cm8DsDvu.mjs.map → acorex-modules-auth-password.component-BRnlp4j1.mjs.map} +1 -1
  69. package/fesm2022/acorex-modules-auth-profile-activity-chart.component-CmtkTEI5.mjs +177 -0
  70. package/fesm2022/acorex-modules-auth-profile-activity-chart.component-CmtkTEI5.mjs.map +1 -0
  71. package/fesm2022/acorex-modules-auth-profile-coming-soon.command-DBbFbzAx.mjs +31 -0
  72. package/fesm2022/acorex-modules-auth-profile-coming-soon.command-DBbFbzAx.mjs.map +1 -0
  73. package/fesm2022/acorex-modules-auth-profile-delete-account-danger-zone.component-62K4A_lM.mjs +78 -0
  74. package/fesm2022/acorex-modules-auth-profile-delete-account-danger-zone.component-62K4A_lM.mjs.map +1 -0
  75. package/fesm2022/acorex-modules-auth-profile-page-component.provider-Dz9yFSnA.mjs +27 -0
  76. package/fesm2022/acorex-modules-auth-profile-page-component.provider-Dz9yFSnA.mjs.map +1 -0
  77. package/fesm2022/acorex-modules-auth-profile-page.component-BGkPr1_o.mjs +370 -0
  78. package/fesm2022/acorex-modules-auth-profile-page.component-BGkPr1_o.mjs.map +1 -0
  79. package/fesm2022/{acorex-modules-auth-routes-B85OzgW1.mjs → acorex-modules-auth-routes-D6PLdcTC.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-auth-routes-B85OzgW1.mjs.map → acorex-modules-auth-routes-D6PLdcTC.mjs.map} +1 -1
  81. package/fesm2022/acorex-modules-auth-signout-command-IUSkq50M.mjs +24 -0
  82. package/fesm2022/acorex-modules-auth-signout-command-IUSkq50M.mjs.map +1 -0
  83. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D6_rL2WP.mjs → acorex-modules-auth-tenant-chooser.component-qGfNSQ6H.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D6_rL2WP.mjs.map → acorex-modules-auth-tenant-chooser.component-qGfNSQ6H.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-auth-two-factor.module-DfyDQIw-.mjs → acorex-modules-auth-two-factor.module-DcvqZOIq.mjs} +2 -2
  86. package/fesm2022/{acorex-modules-auth-two-factor.module-DfyDQIw-.mjs.map → acorex-modules-auth-two-factor.module-DcvqZOIq.mjs.map} +1 -1
  87. package/fesm2022/acorex-modules-auth.mjs +1 -1
  88. package/fesm2022/acorex-modules-business-core.mjs +2 -2
  89. package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
  90. package/fesm2022/acorex-modules-calendar-management-datasource.provider-CnxTy81J.mjs +225 -0
  91. package/fesm2022/acorex-modules-calendar-management-datasource.provider-CnxTy81J.mjs.map +1 -0
  92. package/fesm2022/acorex-modules-calendar-management.mjs +481 -392
  93. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  94. package/fesm2022/acorex-modules-common.mjs +524 -30
  95. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  96. package/fesm2022/{acorex-modules-content-management-acorex-modules-content-management-txpooXrE.mjs → acorex-modules-content-management-acorex-modules-content-management-Bc_tCoHa.mjs} +6 -6
  97. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-Bc_tCoHa.mjs.map +1 -0
  98. package/fesm2022/{acorex-modules-content-management-permission-definition.provider-D9woYm2m.mjs → acorex-modules-content-management-permission-definition.provider-2-_i1Kxd.mjs} +2 -2
  99. package/fesm2022/{acorex-modules-content-management-permission-definition.provider-D9woYm2m.mjs.map → acorex-modules-content-management-permission-definition.provider-2-_i1Kxd.mjs.map} +1 -1
  100. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-CQa1h31v.mjs → acorex-modules-content-management-template-content-editor-widget-edit.component-BdNwhaJ8.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-CQa1h31v.mjs.map → acorex-modules-content-management-template-content-editor-widget-edit.component-BdNwhaJ8.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-DzM4oMNV.mjs → acorex-modules-content-management-template-content-editor-widget-view.component-Cwnqyt0U.mjs} +2 -2
  103. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-DzM4oMNV.mjs.map → acorex-modules-content-management-template-content-editor-widget-view.component-Cwnqyt0U.mjs.map} +1 -1
  104. package/fesm2022/acorex-modules-content-management.mjs +1 -1
  105. package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-DYW31fEm.mjs → acorex-modules-conversation-acorex-modules-conversation-BX09r8Xj.mjs} +801 -237
  106. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-BX09r8Xj.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-hMiSfvL2.mjs +329 -0
  108. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-hMiSfvL2.mjs.map +1 -0
  109. package/fesm2022/{acorex-modules-conversation-comments-page.component-CNqL-HdS.mjs → acorex-modules-conversation-comments-page.component-BJu6CoNR.mjs} +18 -6
  110. package/fesm2022/acorex-modules-conversation-comments-page.component-BJu6CoNR.mjs.map +1 -0
  111. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CuYYEqhb.mjs → acorex-modules-conversation-send-assist-chat-message.command-B471NQRh.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CuYYEqhb.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-B471NQRh.mjs.map} +1 -1
  113. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BKwrZJDs.mjs → acorex-modules-conversation-start-assist-chat.command-CasClVbR.mjs} +2 -2
  114. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BKwrZJDs.mjs.map → acorex-modules-conversation-start-assist-chat.command-CasClVbR.mjs.map} +1 -1
  115. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  116. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-9MoalNjW.mjs} +53 -21
  117. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-9MoalNjW.mjs.map +1 -0
  118. package/fesm2022/{acorex-modules-dashboard-management-index-Bhm8mAON.mjs → acorex-modules-dashboard-management-index-Dsu3Yw8O.mjs} +2 -2
  119. package/fesm2022/{acorex-modules-dashboard-management-index-Bhm8mAON.mjs.map → acorex-modules-dashboard-management-index-Dsu3Yw8O.mjs.map} +1 -1
  120. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  121. package/fesm2022/{acorex-modules-data-management-index-DEm_BsbE.mjs → acorex-modules-data-management-index-CxVSgxTM.mjs} +4 -1
  122. package/fesm2022/acorex-modules-data-management-index-CxVSgxTM.mjs.map +1 -0
  123. package/fesm2022/acorex-modules-data-management.mjs +2 -2
  124. package/fesm2022/acorex-modules-document-management.mjs +7 -4
  125. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  126. package/fesm2022/acorex-modules-financial-core.mjs +7 -7
  127. package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
  128. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-DrKulwY-.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-Cb7_mEJt.mjs} +237 -52
  129. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Cb7_mEJt.mjs.map +1 -0
  130. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-TavX6h7z.mjs → acorex-modules-human-capital-management-approve-leave-request.command-wO2u1IKg.mjs} +2 -2
  131. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-TavX6h7z.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-wO2u1IKg.mjs.map} +1 -1
  132. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-ZEmi88vf.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BDesaehJ.mjs} +2 -2
  133. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-ZEmi88vf.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BDesaehJ.mjs.map} +1 -1
  134. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DzIMYIhe.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-D8u45bHk.mjs} +2 -2
  135. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DzIMYIhe.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-D8u45bHk.mjs.map} +1 -1
  136. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-CrVU_3Jv.mjs → acorex-modules-human-capital-management-employee.entity-sq1G--OE.mjs} +22 -18
  137. package/fesm2022/acorex-modules-human-capital-management-employee.entity-sq1G--OE.mjs.map +1 -0
  138. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BeiaEsNZ.mjs → acorex-modules-human-capital-management-employment-type.entity-qgNm-AAZ.mjs} +2 -2
  139. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BeiaEsNZ.mjs.map → acorex-modules-human-capital-management-employment-type.entity-qgNm-AAZ.mjs.map} +1 -1
  140. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-QeY6lcUY.mjs → acorex-modules-human-capital-management-leave-request.entity-DcdYnwyN.mjs} +19 -24
  141. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-DcdYnwyN.mjs.map +1 -0
  142. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D7B3adkZ.mjs → acorex-modules-human-capital-management-leave-type.entity-Dr5YHs8p.mjs} +10 -4
  143. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-Dr5YHs8p.mjs.map +1 -0
  144. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-Dim-8hT7.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-Bni4vgt5.mjs} +19 -74
  145. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-Bni4vgt5.mjs.map +1 -0
  146. package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event.entity-3HtYOKrY.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-ds4Iq82f.mjs} +6 -6
  147. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-ds4Iq82f.mjs.map +1 -0
  148. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Byxt921P.mjs → acorex-modules-human-capital-management-position-assignment.entity-CalDJQrD.mjs} +2 -2
  149. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Byxt921P.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-CalDJQrD.mjs.map} +1 -1
  150. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CAvjZTG9.mjs → acorex-modules-human-capital-management-reject-leave-request.command-CshyWVLH.mjs} +2 -2
  151. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CAvjZTG9.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-CshyWVLH.mjs.map} +1 -1
  152. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BeWrsQo8.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-BENxT4Qg.mjs} +2 -2
  153. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BeWrsQo8.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-BENxT4Qg.mjs.map} +1 -1
  154. package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-DjkzwxHN.mjs +242 -0
  155. package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-DjkzwxHN.mjs.map +1 -0
  156. package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bz2SZcmm.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-x8J2kneo.mjs} +9 -14
  157. package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-x8J2kneo.mjs.map +1 -0
  158. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  159. package/fesm2022/{acorex-modules-learning-management-course.entity-DUUgeikJ.mjs → acorex-modules-learning-management-course.entity-BG6TaQk4.mjs} +4 -4
  160. package/fesm2022/acorex-modules-learning-management-course.entity-BG6TaQk4.mjs.map +1 -0
  161. package/fesm2022/{acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs → acorex-modules-learning-management-enrollment.entity-DjpUDcLv.mjs} +5 -5
  162. package/fesm2022/acorex-modules-learning-management-enrollment.entity-DjpUDcLv.mjs.map +1 -0
  163. package/fesm2022/{acorex-modules-learning-management-learning-path.entity-Zo--bDto.mjs → acorex-modules-learning-management-learning-path.entity-C2S0VVeq.mjs} +2 -2
  164. package/fesm2022/acorex-modules-learning-management-learning-path.entity-C2S0VVeq.mjs.map +1 -0
  165. package/fesm2022/{acorex-modules-learning-management-skill.entity-VXkLbaD4.mjs → acorex-modules-learning-management-skill.entity-DAM-_nuT.mjs} +2 -2
  166. package/fesm2022/acorex-modules-learning-management-skill.entity-DAM-_nuT.mjs.map +1 -0
  167. package/fesm2022/{acorex-modules-learning-management-training.entity-C4KDv1uh.mjs → acorex-modules-learning-management-training.entity-THsY3DiM.mjs} +4 -4
  168. package/fesm2022/acorex-modules-learning-management-training.entity-THsY3DiM.mjs.map +1 -0
  169. package/fesm2022/acorex-modules-learning-management.mjs +5 -5
  170. package/fesm2022/{acorex-modules-locale-management-profiles-BOveGIcE.mjs → acorex-modules-locale-management-profiles-BYZa_Ti0.mjs} +23 -8
  171. package/fesm2022/acorex-modules-locale-management-profiles-BYZa_Ti0.mjs.map +1 -0
  172. package/fesm2022/acorex-modules-locale-management.mjs +31 -15
  173. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  174. package/fesm2022/acorex-modules-location-management.mjs +4 -4
  175. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  176. package/fesm2022/{acorex-modules-maintenance-management-acorex-modules-maintenance-management-DiM2aFgg.mjs → acorex-modules-maintenance-management-acorex-modules-maintenance-management-Xyu3jpEh.mjs} +14 -14
  177. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-Xyu3jpEh.mjs.map +1 -0
  178. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-BCMeHmxS.mjs → acorex-modules-maintenance-management-failure-effect.entity-CYQ3ExC3.mjs} +2 -2
  179. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-BCMeHmxS.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-CYQ3ExC3.mjs.map} +1 -1
  180. 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
  181. 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
  182. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-BJs4KhkU.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-vqX88zIA.mjs} +2 -2
  183. 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
  184. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-rw24sQxb.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-CpefPKAY.mjs} +2 -2
  185. 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
  186. 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
  187. 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
  188. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DCIAzSYQ.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-BRssxEl6.mjs} +2 -2
  189. 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
  190. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-DlXr6A4i.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-YyBWG00N.mjs} +2 -2
  191. 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
  192. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4J3um7j.mjs → acorex-modules-maintenance-management-failure-register.entity-CH-C6Q7m.mjs} +2 -2
  193. 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
  194. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-C-spQtYx.mjs → acorex-modules-maintenance-management-failure-severity.entity-BMoUEcVC.mjs} +2 -2
  195. 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
  196. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-Huahnjhd.mjs → acorex-modules-maintenance-management-maintenance-template.entity-CBayAtRD.mjs} +2 -2
  197. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-Huahnjhd.mjs.map → acorex-modules-maintenance-management-maintenance-template.entity-CBayAtRD.mjs.map} +1 -1
  198. package/fesm2022/{acorex-modules-maintenance-management-work-order-list-command-1YsWctqu.mjs → acorex-modules-maintenance-management-work-order-list-command-mMZGiG3q.mjs} +2 -2
  199. 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
  200. package/fesm2022/acorex-modules-maintenance-management.mjs +1 -1
  201. package/fesm2022/acorex-modules-measurement-core.mjs +4 -4
  202. package/fesm2022/acorex-modules-measurement-core.mjs.map +1 -1
  203. package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-BSf1wd6j.mjs +3836 -0
  204. package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-BSf1wd6j.mjs.map +1 -0
  205. package/fesm2022/acorex-modules-notification-management-notification-page.component-ATFOFL7C.mjs +548 -0
  206. package/fesm2022/acorex-modules-notification-management-notification-page.component-ATFOFL7C.mjs.map +1 -0
  207. package/fesm2022/acorex-modules-notification-management.mjs +1 -3590
  208. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  209. 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
  210. package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-63BpszqL.mjs.map +1 -0
  211. package/fesm2022/{acorex-modules-order-management-entity.provider-DVHBXOCD.mjs → acorex-modules-order-management-entity.provider-DGwVhM91.mjs} +3 -3
  212. package/fesm2022/{acorex-modules-order-management-entity.provider-DVHBXOCD.mjs.map → acorex-modules-order-management-entity.provider-DGwVhM91.mjs.map} +1 -1
  213. package/fesm2022/{acorex-modules-order-management-member-order-line.entity-DZJ90WHI.mjs → acorex-modules-order-management-member-order-line.entity-Czu7qE7i.mjs} +2 -2
  214. package/fesm2022/acorex-modules-order-management-member-order-line.entity-Czu7qE7i.mjs.map +1 -0
  215. package/fesm2022/acorex-modules-order-management.mjs +2 -2
  216. 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
  217. 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
  218. 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
  219. 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
  220. 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
  221. 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
  222. 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
  223. 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
  224. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CBjAC9Ip.mjs → acorex-modules-organization-management-business-unit.entity-BkeFPaIT.mjs} +2 -2
  225. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CBjAC9Ip.mjs.map → acorex-modules-organization-management-business-unit.entity-BkeFPaIT.mjs.map} +1 -1
  226. package/fesm2022/{acorex-modules-organization-management-chart.entity-CaY_5LGN.mjs → acorex-modules-organization-management-chart.entity-bWx4IFSv.mjs} +2 -2
  227. package/fesm2022/{acorex-modules-organization-management-chart.entity-CaY_5LGN.mjs.map → acorex-modules-organization-management-chart.entity-bWx4IFSv.mjs.map} +1 -1
  228. package/fesm2022/{acorex-modules-organization-management-company.entity-BUBhqyCn.mjs → acorex-modules-organization-management-company.entity-yPUVhIzy.mjs} +2 -2
  229. package/fesm2022/{acorex-modules-organization-management-company.entity-BUBhqyCn.mjs.map → acorex-modules-organization-management-company.entity-yPUVhIzy.mjs.map} +1 -1
  230. package/fesm2022/{acorex-modules-organization-management-entity.provider-BZsy_wi6.mjs → acorex-modules-organization-management-entity.provider-IhJwnzd-.mjs} +15 -15
  231. package/fesm2022/{acorex-modules-organization-management-entity.provider-BZsy_wi6.mjs.map → acorex-modules-organization-management-entity.provider-IhJwnzd-.mjs.map} +1 -1
  232. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-CEO1nSFP.mjs → acorex-modules-organization-management-feature-definition.provider-B5yqFa4Z.mjs} +2 -2
  233. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-CEO1nSFP.mjs.map → acorex-modules-organization-management-feature-definition.provider-B5yqFa4Z.mjs.map} +1 -1
  234. 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
  235. 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
  236. 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
  237. package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-EEWB5VUq.mjs.map +1 -0
  238. 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
  239. package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-L2GmFRra.mjs.map +1 -0
  240. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-BoM49wYi.mjs → acorex-modules-organization-management-job-definition.entity-CDXsJADe.mjs} +2 -2
  241. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-BoM49wYi.mjs.map → acorex-modules-organization-management-job-definition.entity-CDXsJADe.mjs.map} +1 -1
  242. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DbQG79uR.mjs → acorex-modules-organization-management-job-level.datasource-C84zFgVo.mjs} +2 -2
  243. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DbQG79uR.mjs.map → acorex-modules-organization-management-job-level.datasource-C84zFgVo.mjs.map} +1 -1
  244. package/fesm2022/{acorex-modules-organization-management-job-level.entity-XO-NsBG-.mjs → acorex-modules-organization-management-job-level.entity-BqjP04k-.mjs} +2 -2
  245. 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
  246. package/fesm2022/{acorex-modules-organization-management-menu.provider-DXW6aUIX.mjs → acorex-modules-organization-management-menu.provider-ChR3Rh4W.mjs} +2 -2
  247. package/fesm2022/{acorex-modules-organization-management-menu.provider-DXW6aUIX.mjs.map → acorex-modules-organization-management-menu.provider-ChR3Rh4W.mjs.map} +1 -1
  248. 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
  249. 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
  250. 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
  251. 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
  252. 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
  253. 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
  254. 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
  255. 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
  256. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CuPEM-_N.mjs → acorex-modules-organization-management-org-chart.page-BzKPjJwY.mjs} +2 -2
  257. 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
  258. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-BNthP0QV.mjs → acorex-modules-organization-management-permission-definition.provider-DShSa-Wp.mjs} +2 -2
  259. 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
  260. package/fesm2022/{acorex-modules-organization-management-position.entity-Cja3CYmL.mjs → acorex-modules-organization-management-position.entity-DyF02saN.mjs} +2 -2
  261. package/fesm2022/{acorex-modules-organization-management-position.entity-Cja3CYmL.mjs.map → acorex-modules-organization-management-position.entity-DyF02saN.mjs.map} +1 -1
  262. 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
  263. 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
  264. 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
  265. 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
  266. 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
  267. 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
  268. 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
  269. 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
  270. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-nJuP6fA0.mjs → acorex-modules-organization-management-responsibilities-matrix.component-CBfTsRx4.mjs} +2 -2
  271. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-nJuP6fA0.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-CBfTsRx4.mjs.map} +1 -1
  272. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CvvzIjvE.mjs → acorex-modules-organization-management-responsibility-level.entity-BAm1en5A.mjs} +2 -2
  273. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CvvzIjvE.mjs.map → acorex-modules-organization-management-responsibility-level.entity-BAm1en5A.mjs.map} +1 -1
  274. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-Cc0Ou-hc.mjs → acorex-modules-organization-management-responsibility.entity-DTCMbqNy.mjs} +2 -2
  275. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-Cc0Ou-hc.mjs.map → acorex-modules-organization-management-responsibility.entity-DTCMbqNy.mjs.map} +1 -1
  276. package/fesm2022/{acorex-modules-organization-management-settings.provider-C33ZatCD.mjs → acorex-modules-organization-management-settings.provider-C6op-yff.mjs} +2 -2
  277. package/fesm2022/{acorex-modules-organization-management-settings.provider-C33ZatCD.mjs.map → acorex-modules-organization-management-settings.provider-C6op-yff.mjs.map} +1 -1
  278. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-DGuF5ux1.mjs → acorex-modules-organization-management-team-business-unit.entity-B4Wra1YB.mjs} +3 -3
  279. package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-B4Wra1YB.mjs.map +1 -0
  280. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-BMXkNavp.mjs → acorex-modules-organization-management-team-member-role.entity-CVH2m8uw.mjs} +2 -2
  281. 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
  282. package/fesm2022/{acorex-modules-organization-management-team-member.entity-Deem7M3N.mjs → acorex-modules-organization-management-team-member.entity-By97LISn.mjs} +3 -3
  283. package/fesm2022/acorex-modules-organization-management-team-member.entity-By97LISn.mjs.map +1 -0
  284. package/fesm2022/{acorex-modules-organization-management-team.entity-CNmpaJ3F.mjs → acorex-modules-organization-management-team.entity-Cezsw5Vq.mjs} +2 -2
  285. package/fesm2022/{acorex-modules-organization-management-team.entity-CNmpaJ3F.mjs.map → acorex-modules-organization-management-team.entity-Cezsw5Vq.mjs.map} +1 -1
  286. package/fesm2022/acorex-modules-organization-management.mjs +1 -1
  287. package/fesm2022/acorex-modules-person-core.mjs +1 -1
  288. package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
  289. package/fesm2022/acorex-modules-platform-dev-tools.mjs +3 -3
  290. package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
  291. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs → acorex-modules-platform-management-acorex-modules-platform-management-LJBIjN39.mjs} +5 -5
  292. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-LJBIjN39.mjs.map +1 -0
  293. package/fesm2022/{acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs → acorex-modules-platform-management-menu-list.component-SXuHsuj0.mjs} +3 -3
  294. 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
  295. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  296. package/fesm2022/acorex-modules-procurement-management.mjs +2 -2
  297. package/fesm2022/acorex-modules-procurement-management.mjs.map +1 -1
  298. package/fesm2022/{acorex-modules-product-catalog-product-sku.entity-C3ynevYI.mjs → acorex-modules-product-catalog-product-sku.entity-DNgCnDtL.mjs} +2 -2
  299. package/fesm2022/acorex-modules-product-catalog-product-sku.entity-DNgCnDtL.mjs.map +1 -0
  300. package/fesm2022/{acorex-modules-product-catalog-product.entity-BbB7GAg7.mjs → acorex-modules-product-catalog-product.entity-CBwSFTL2.mjs} +2 -2
  301. package/fesm2022/acorex-modules-product-catalog-product.entity-CBwSFTL2.mjs.map +1 -0
  302. package/fesm2022/acorex-modules-product-catalog.mjs +2 -2
  303. package/fesm2022/acorex-modules-report-management.mjs +7 -7
  304. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  305. package/fesm2022/{acorex-modules-reservation-management-acorex-modules-reservation-management-BoUiTlmu.mjs → acorex-modules-reservation-management-acorex-modules-reservation-management-D7YtuAbZ.mjs} +7 -7
  306. 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
  307. 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
  308. 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
  309. 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
  310. 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
  311. package/fesm2022/{acorex-modules-reservation-management-reservation-status-transition.entity-CQ85ZAGF.mjs → acorex-modules-reservation-management-reservation-status-transition.entity-CrwUrIrC.mjs} +2 -2
  312. 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
  313. package/fesm2022/acorex-modules-reservation-management.mjs +1 -1
  314. package/fesm2022/acorex-modules-security-management.mjs +4 -4
  315. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  316. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dj9u0VEL.mjs → acorex-modules-settings-management-acorex-modules-settings-management-O8kBegUF.mjs} +136 -65
  317. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-O8kBegUF.mjs.map +1 -0
  318. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DpRn1jAo.mjs → acorex-modules-settings-management-permission-definition.provider-CU7SEx6v.mjs} +2 -2
  319. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DpRn1jAo.mjs.map → acorex-modules-settings-management-permission-definition.provider-CU7SEx6v.mjs.map} +1 -1
  320. package/fesm2022/{acorex-modules-settings-management-setting-page.component-C9wPgm_P.mjs → acorex-modules-settings-management-setting-page.component-D8_cjOzW.mjs} +181 -19
  321. package/fesm2022/acorex-modules-settings-management-setting-page.component-D8_cjOzW.mjs.map +1 -0
  322. package/fesm2022/{acorex-modules-settings-management-setting-view.component-BQ69Bx8C.mjs → acorex-modules-settings-management-setting-view.component-DIvERzMC.mjs} +65 -17
  323. package/fesm2022/acorex-modules-settings-management-setting-view.component-DIvERzMC.mjs.map +1 -0
  324. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  325. package/fesm2022/acorex-modules-subscription-management.mjs +2 -2
  326. package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
  327. 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
  328. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-Bp-9vZdR.mjs.map +1 -0
  329. package/fesm2022/acorex-modules-task-management-task-board.page-Brgg9wJa.mjs +3368 -0
  330. package/fesm2022/acorex-modules-task-management-task-board.page-Brgg9wJa.mjs.map +1 -0
  331. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  332. package/fesm2022/acorex-modules-tenant-management.mjs +2 -2
  333. package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
  334. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-gXP-srRO.mjs +5600 -0
  335. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-gXP-srRO.mjs.map +1 -0
  336. 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
  337. 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
  338. package/fesm2022/{acorex-modules-workflow-management-activity-definition.entity-B3DkgDQb.mjs → acorex-modules-workflow-management-activity-definition.entity-BlK-sL_3.mjs} +2 -2
  339. 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
  340. package/fesm2022/{acorex-modules-workflow-management-automation.entity-BigK8yE2.mjs → acorex-modules-workflow-management-automation.entity-C9q24TPu.mjs} +3 -3
  341. package/fesm2022/acorex-modules-workflow-management-automation.entity-C9q24TPu.mjs.map +1 -0
  342. package/fesm2022/{acorex-modules-workflow-management-index-1B7oRAKX.mjs → acorex-modules-workflow-management-index-BFdyFvcu.mjs} +8 -5
  343. package/fesm2022/acorex-modules-workflow-management-index-BFdyFvcu.mjs.map +1 -0
  344. package/fesm2022/{acorex-modules-workflow-management-index-DC_9M9dk.mjs → acorex-modules-workflow-management-index-BbVGViSE.mjs} +7 -163
  345. package/fesm2022/acorex-modules-workflow-management-index-BbVGViSE.mjs.map +1 -0
  346. package/fesm2022/{acorex-modules-workflow-management-index-34UZrsxw.mjs → acorex-modules-workflow-management-index-Bq5tBgif.mjs} +2 -2
  347. package/fesm2022/{acorex-modules-workflow-management-index-34UZrsxw.mjs.map → acorex-modules-workflow-management-index-Bq5tBgif.mjs.map} +1 -1
  348. package/fesm2022/{acorex-modules-workflow-management-index-CxheG2ry.mjs → acorex-modules-workflow-management-index-CIV7Abnc.mjs} +115 -7
  349. package/fesm2022/acorex-modules-workflow-management-index-CIV7Abnc.mjs.map +1 -0
  350. 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
  351. 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
  352. package/fesm2022/acorex-modules-workflow-management-workflow-activity-instance-rows.utils-L8W4ogSI.mjs +172 -0
  353. package/fesm2022/acorex-modules-workflow-management-workflow-activity-instance-rows.utils-L8W4ogSI.mjs.map +1 -0
  354. package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-CPOQZxsq.mjs +79 -0
  355. package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-CPOQZxsq.mjs.map +1 -0
  356. package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CqF3z8Xq.mjs +466 -0
  357. package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CqF3z8Xq.mjs.map +1 -0
  358. package/fesm2022/{acorex-modules-workflow-management-workflow-definition.entity-DISpkWE4.mjs → acorex-modules-workflow-management-workflow-definition.entity-BbnGGXZs.mjs} +3 -2
  359. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-BbnGGXZs.mjs.map +1 -0
  360. package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs → acorex-modules-workflow-management-workflow-instance.entity-Ci6c4VoI.mjs} +3 -3
  361. package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs.map → acorex-modules-workflow-management-workflow-instance.entity-Ci6c4VoI.mjs.map} +1 -1
  362. package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-CJ0cRwUE.mjs +579 -0
  363. package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-CJ0cRwUE.mjs.map +1 -0
  364. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CHv2_W75.mjs +285 -0
  365. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CHv2_W75.mjs.map +1 -0
  366. package/fesm2022/acorex-modules-workflow-management.mjs +1 -5212
  367. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  368. package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs +42 -0
  369. package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs.map +1 -0
  370. package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs +70 -0
  371. package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs.map +1 -0
  372. package/fesm2022/acorex-modules-workplacesafety-management.mjs +1229 -67
  373. package/fesm2022/acorex-modules-workplacesafety-management.mjs.map +1 -1
  374. package/package.json +2 -2
  375. package/types/acorex-modules-ai-management.d.ts +23 -4
  376. package/types/acorex-modules-assessment-management.d.ts +214 -188
  377. package/types/acorex-modules-asset-management.d.ts +1 -0
  378. package/types/acorex-modules-calendar-management.d.ts +61 -33
  379. package/types/acorex-modules-common.d.ts +14 -4
  380. package/types/acorex-modules-conversation.d.ts +59 -14
  381. package/types/acorex-modules-dashboard-management.d.ts +14 -2
  382. package/types/acorex-modules-document-management.d.ts +8 -0
  383. package/types/acorex-modules-human-capital-management.d.ts +28 -14
  384. package/types/acorex-modules-notification-management.d.ts +32 -3
  385. package/types/acorex-modules-report-management.d.ts +3 -0
  386. package/types/acorex-modules-settings-management.d.ts +12 -2
  387. package/types/acorex-modules-task-management.d.ts +196 -47
  388. package/types/acorex-modules-workflow-management.d.ts +41 -39
  389. package/types/acorex-modules-workplacesafety-management.d.ts +124 -4
  390. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs.map +0 -1
  391. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs.map +0 -1
  392. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs.map +0 -1
  393. package/fesm2022/acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs.map +0 -1
  394. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs.map +0 -1
  395. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs.map +0 -1
  396. package/fesm2022/acorex-modules-auth-acorex-modules-auth-BUuEzfsI.mjs +0 -803
  397. package/fesm2022/acorex-modules-auth-acorex-modules-auth-BUuEzfsI.mjs.map +0 -1
  398. package/fesm2022/acorex-modules-auth-app-chooser.component-DnmLfX5x.mjs.map +0 -1
  399. package/fesm2022/acorex-modules-auth-master.layout-DMP4RC6L.mjs +0 -25
  400. package/fesm2022/acorex-modules-auth-master.layout-DMP4RC6L.mjs.map +0 -1
  401. package/fesm2022/acorex-modules-auth-user-sessions.component-gJSHI_eh.mjs.map +0 -1
  402. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs +0 -95
  403. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs.map +0 -1
  404. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-txpooXrE.mjs.map +0 -1
  405. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DYW31fEm.mjs.map +0 -1
  406. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DQlE8l4c.mjs +0 -329
  407. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DQlE8l4c.mjs.map +0 -1
  408. package/fesm2022/acorex-modules-conversation-comments-page.component-CNqL-HdS.mjs.map +0 -1
  409. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs.map +0 -1
  410. package/fesm2022/acorex-modules-data-management-index-DEm_BsbE.mjs.map +0 -1
  411. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-DrKulwY-.mjs.map +0 -1
  412. package/fesm2022/acorex-modules-human-capital-management-employee.entity-CrVU_3Jv.mjs.map +0 -1
  413. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-QeY6lcUY.mjs.map +0 -1
  414. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-D7B3adkZ.mjs.map +0 -1
  415. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-Dim-8hT7.mjs.map +0 -1
  416. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-3HtYOKrY.mjs.map +0 -1
  417. package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bz2SZcmm.mjs.map +0 -1
  418. package/fesm2022/acorex-modules-learning-management-course.entity-DUUgeikJ.mjs.map +0 -1
  419. package/fesm2022/acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs.map +0 -1
  420. package/fesm2022/acorex-modules-learning-management-learning-path.entity-Zo--bDto.mjs.map +0 -1
  421. package/fesm2022/acorex-modules-learning-management-skill.entity-VXkLbaD4.mjs.map +0 -1
  422. package/fesm2022/acorex-modules-learning-management-training.entity-C4KDv1uh.mjs.map +0 -1
  423. package/fesm2022/acorex-modules-locale-management-profiles-BOveGIcE.mjs.map +0 -1
  424. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-DiM2aFgg.mjs.map +0 -1
  425. package/fesm2022/acorex-modules-notification-management-notification-page.component-6YOiGgKm.mjs +0 -858
  426. package/fesm2022/acorex-modules-notification-management-notification-page.component-6YOiGgKm.mjs.map +0 -1
  427. package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-DGtHoqqj.mjs.map +0 -1
  428. package/fesm2022/acorex-modules-order-management-member-order-line.entity-DZJ90WHI.mjs.map +0 -1
  429. package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-aWZO09Xw.mjs.map +0 -1
  430. package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-DJcFhQM9.mjs.map +0 -1
  431. package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-DGuF5ux1.mjs.map +0 -1
  432. package/fesm2022/acorex-modules-organization-management-team-member.entity-Deem7M3N.mjs.map +0 -1
  433. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs.map +0 -1
  434. package/fesm2022/acorex-modules-product-catalog-product-sku.entity-C3ynevYI.mjs.map +0 -1
  435. package/fesm2022/acorex-modules-product-catalog-product.entity-BbB7GAg7.mjs.map +0 -1
  436. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-Dj9u0VEL.mjs.map +0 -1
  437. package/fesm2022/acorex-modules-settings-management-setting-page.component-C9wPgm_P.mjs.map +0 -1
  438. package/fesm2022/acorex-modules-settings-management-setting-view.component-BQ69Bx8C.mjs.map +0 -1
  439. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-BB7eeaYX.mjs.map +0 -1
  440. package/fesm2022/acorex-modules-task-management-task-board.page-BmUIngWk.mjs +0 -2284
  441. package/fesm2022/acorex-modules-task-management-task-board.page-BmUIngWk.mjs.map +0 -1
  442. package/fesm2022/acorex-modules-workflow-management-automation.entity-BigK8yE2.mjs.map +0 -1
  443. package/fesm2022/acorex-modules-workflow-management-index-1B7oRAKX.mjs.map +0 -1
  444. package/fesm2022/acorex-modules-workflow-management-index-CxheG2ry.mjs.map +0 -1
  445. package/fesm2022/acorex-modules-workflow-management-index-DC_9M9dk.mjs.map +0 -1
  446. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-DISpkWE4.mjs.map +0 -1
  447. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-B4hEv2-a.mjs +0 -255
  448. 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 { output, inject, viewChild, computed, signal, effect, ChangeDetectionStrategy, Component, NgModule, InjectionToken, DestroyRef, Injectable, input, ViewEncapsulation, ElementRef, Injector } from '@angular/core';
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, AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
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 * as i2 from '@acorex/components/decorators';
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 VALID_PRIORITIES$1 = ['highest', 'high', 'medium', 'low', 'lowest'];
127
- const NO_PRIORITY_KEY = 'no_priority';
128
- const PRIORITY_ORDER = {
129
- highest: 0,
127
+ const AXPTASK_PRIORITIES = ['urgent', 'high', 'normal', 'low'];
128
+ const TASK_PRIORITY_ORDER = {
129
+ urgent: 0,
130
130
  high: 1,
131
- medium: 2,
131
+ normal: 2,
132
132
  low: 3,
133
- lowest: 4,
134
- no_priority: 5,
133
+ no_priority: 4,
135
134
  };
136
- class AXPTaskBoardWidgetViewComponent extends AXPLayoutBaseWidgetComponent {
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
- // Outputs
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.translateService = inject(AXTranslationService);
144
- this.contextMenu = viewChild('contextMenu', ...(ngDevMode ? [{ debugName: "contextMenu" }] : /* istanbul ignore next */ []));
145
- // Configuration options
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
- // --- STATE AND DATA SIGNALS ---
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.currentTask = signal(null, ...(ngDevMode ? [{ debugName: "currentTask" }] : /* istanbul ignore next */ []));
153
- this.selectedPriorities = signal(new Set([...VALID_PRIORITIES$1, NO_PRIORITY_KEY]), ...(ngDevMode ? [{ debugName: "selectedPriorities" }] : /* istanbul ignore next */ []));
154
- // --- COMPUTED SIGNALS FOR UI ---
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
- // 1. Filter by Task Type (if any are selected)
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.priority || NO_PRIORITY_KEY;
736
+ const priorityKey = getTaskPriorityFilterKey(task);
169
737
  return selectedPrioritiesSet.has(priorityKey);
170
738
  });
171
- // 3. Sort the filtered tasks
172
- const sorted = this.sortTasks([...priorityFiltered]);
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.allTasks();
181
- const selectedTypes = this.selectedTaskTypes();
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 typeFiltered) {
191
- const key = task.priority || NO_PRIORITY_KEY;
192
- counts[key]++;
749
+ for (const task of tasks) {
750
+ counts[getTaskPriorityFilterKey(task)]++;
193
751
  }
194
- // 3. Build badge models
195
- const priorityBadges = VALID_PRIORITIES$1.map((p) => ({
196
- name: p,
197
- label: p.charAt(0).toUpperCase() + p.slice(1),
198
- count: counts[p],
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
- const noPriorityBadge = {
202
- name: NO_PRIORITY_KEY,
203
- label: 'No Priority',
204
- count: counts[NO_PRIORITY_KEY],
205
- color: this.getBadgeColorForPriority(NO_PRIORITY_KEY),
206
- };
207
- return [...priorityBadges, noPriorityBadge];
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.#getTasks = effect(() => {
210
- const limit = this.maxItems();
211
- const assignee = this.assignee();
212
- const selectedTypes = this.selectedTaskTypes();
213
- const typeNames = selectedTypes.map((t) => t.name);
214
- this.taskBoardService
215
- .getTasks({ take: limit, assigneeIds: assignee.map((a) => a.id), types: typeNames })
216
- .then((tasks) => {
217
- this.allTasks.set(tasks.items);
218
- });
219
- }, ...(ngDevMode ? [{ debugName: "#getTasks" }] : /* istanbul ignore next */ []));
220
- }
221
- #getTasks;
222
- // --- SORTING COMPARATOR METHODS ---
223
- /**
224
- * Compares two tasks based on their priority.
225
- */
226
- compareByPriority(a, b) {
227
- const priorityA = a.priority || NO_PRIORITY_KEY;
228
- const priorityB = b.priority || NO_PRIORITY_KEY;
229
- return PRIORITY_ORDER[priorityA] - PRIORITY_ORDER[priorityB];
230
- }
231
- /**
232
- * Compares two tasks based on their due date.
233
- */
234
- compareByDueDate(a, b) {
235
- const now = new Date().getTime();
236
- const dateA = a.endDate ? new Date(a.endDate).getTime() : null;
237
- const dateB = b.endDate ? new Date(b.endDate).getTime() : null;
238
- if (dateA === null && dateB === null)
239
- return 0;
240
- if (dateA === null)
241
- return 1;
242
- if (dateB === null)
243
- return -1;
244
- const aIsInFuture = dateA >= now;
245
- const bIsInFuture = dateB >= now;
246
- if (aIsInFuture && !bIsInFuture)
247
- return -1;
248
- if (!aIsInFuture && bIsInFuture)
249
- return 1;
250
- return aIsInFuture ? dateA - dateB : dateB - dateA;
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
- // --- EVENT HANDLERS ---
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
- onTaskClick(task) {
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
- onMoreOptionsClick(task, event) {
269
- event.nativeEvent.stopPropagation();
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
- handleContextMenuItemClick(event) {
277
- this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');
861
+ getAccentClass(task) {
862
+ const colorToken = resolveTaskBoardAccentColor(task, this.effectiveColorBy());
863
+ return buildTaskAccentSurfaceCssClass(colorToken);
278
864
  }
279
- async handleContextMenuOnOpening(event) {
280
- const currentTask = this.currentTask();
281
- if (!currentTask)
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
- const providerName = currentTask.provider;
284
- if (!providerName)
892
+ }
893
+ await this.reloadTasks();
894
+ if (!active?.provider) {
285
895
  return;
286
- const provider = this.taskBoardService.getProvider(providerName);
287
- if (!provider)
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
- // --- FORMATTING & UTILITY METHODS ---
307
- getBadgeColorForPriority(priorityKey) {
308
- if (priorityKey === NO_PRIORITY_KEY) {
309
- return 'secondary';
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
- const colorMap = {
312
- highest: 'danger',
313
- high: 'danger',
314
- medium: 'warning',
315
- low: 'success',
316
- lowest: 'success',
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
- else {
330
- const dateCompare = this.compareByDueDate(a, b);
331
- if (dateCompare !== 0)
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: null, target: i0.ɵɵFactoryTarget.Component }); }
338
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTaskBoardWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "text", "look", "size"], outputs: ["textChange", "lookChange", "sizeChange"] }, { kind: "component", type: 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: AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "closeOnRouteChange", "items", "target"], outputs: ["onItemClick", "onOpening", "onClose"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: 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: "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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: [{ standalone: true, imports: [
343
- CommonModule,
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
- * defaults to the signed-in user. An explicit empty array means "no assignee filter".
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: [AXPAuthGuard],
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-BmUIngWk.mjs').then((c) => c.AXMTaskBoardPage),
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.providers = inject(AXP_WORKFLOW_TASK_PROVIDER, { optional: true });
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 the providers array: if elements are Promises, awaits them and returns the resolved list.
1063
- * Result is cached for subsequent sync access (e.g. getProvider).
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
- const raw = this.providers ?? [];
1070
- const resolved = await Promise.all(raw.map((p) => Promise.resolve(p)));
1071
- // Each DI entry can be either a single provider or an array of providers (or Promises of them).
1072
- // Flatten one level so factories that return arrays of providers are supported.
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
- this.resolvedProviders = flattened.filter((p) => p != null && typeof p.getTasks === 'function');
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.getEvents(range, eventTypeIds);
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=highest]{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=medium]{color:var(--ax-sys-color-info)}.task-popover__icon--priority[data-priority=low],.task-popover__icon--priority[data-priority=lowest]{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=highest]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=medium]{color:var(--ax-sys-color-info)}.task-popover__priority[data-priority=low],.task-popover__priority[data-priority=lowest]{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 }); }
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=highest]{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=medium]{color:var(--ax-sys-color-info)}.task-popover__icon--priority[data-priority=low],.task-popover__icon--priority[data-priority=lowest]{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=highest]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=medium]{color:var(--ax-sys-color-info)}.task-popover__priority[data-priority=low],.task-popover__priority[data-priority=lowest]{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"] }]
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" [title]="task().title">{{ task().title }}</h3>
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=highest]{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=medium]{color:var(--ax-sys-color-info)}.task-popover__icon--priority[data-priority=low],.task-popover__icon--priority[data-priority=lowest]{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=highest]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=medium]{color:var(--ax-sys-color-info)}.task-popover__priority[data-priority=low],.task-popover__priority[data-priority=lowest]{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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
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" [title]="task().title">{{ task().title }}</h3>
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=highest]{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=medium]{color:var(--ax-sys-color-info)}.task-popover__icon--priority[data-priority=low],.task-popover__icon--priority[data-priority=lowest]{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=highest]{color:var(--ax-sys-color-danger)}.task-popover__priority[data-priority=high]{color:var(--ax-sys-color-warning)}.task-popover__priority[data-priority=medium]{color:var(--ax-sys-color-info)}.task-popover__priority[data-priority=low],.task-popover__priority[data-priority=lowest]{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"] }]
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 (anchor.contains(target) || overlayElement.contains(target)) {
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: 'Highest', name: 'highest' },
2616
+ { title: 'Urgent', name: 'urgent' },
1951
2617
  { title: 'High', name: 'high' },
1952
- { title: 'Medium', name: 'medium' },
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.VisibleCalendarModes,
2929
+ key: AXMTaskBoardSettings.VisibleCalendar,
2362
2930
  title: `${I18N}.task-management.taskboard.parts.calendar.title`,
2363
2931
  scope: 'U',
2364
2932
  isInherited: true,
2365
- defaultValue: [...AXM_TASK_BOARD_CALENDAR_VIEW_MODE_IDS],
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.VisibleTimelineModes,
2938
+ key: AXMTaskBoardSettings.VisibleTimeline,
2379
2939
  title: `${I18N}.task-management.taskboard.parts.timeline.title`,
2380
2940
  scope: 'U',
2381
2941
  isInherited: true,
2382
- defaultValue: [...AXM_TASK_BOARD_TIMELINE_VIEW_MODE_IDS],
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.VisibleTableModes,
2947
+ key: AXMTaskBoardSettings.VisibleTable,
2396
2948
  title: `${I18N}.task-management.taskboard.parts.table.title`,
2397
2949
  scope: 'U',
2398
2950
  isInherited: true,
2399
- defaultValue: [...AXM_TASK_BOARD_TABLE_VIEW_MODE_IDS],
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.VisibleKanbanModes,
2956
+ key: AXMTaskBoardSettings.VisibleKanban,
2413
2957
  title: `${I18N}.task-management.taskboard.parts.kanban.title`,
2414
2958
  scope: 'U',
2415
2959
  isInherited: true,
2416
- defaultValue: [...AXM_TASK_BOARD_KANBAN_VIEW_MODE_IDS],
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.SelectionList,
2971
+ type: AXPWidgetsList.Editors.SelectBox,
2419
2972
  options: {
2420
- multiple: true,
2421
- valueField: 'value',
2422
- textField: 'text',
2423
- dataSource: kanbanModeDataSource,
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.parts.kanban.description`,
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 }} - {{ role }}',
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}} - {{role}}',
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 }} hours - {{ description }}',
5725
- description: '{{ user.displayName }} on {{ task.title }}',
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 }} depends on {{ dependsOnTask.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 }}: {{ contextTitle }}',
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}}: {{contextTitle}}',
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 { AXM_TASK_BOARD_ALL_VIEW_MODE_IDS as A, AXPTaskTypeDataSourceDefinition as B, AXPWorkflowTaskProvider as C, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD as D, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT as E, AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY as F, AXP_WORKFLOW_TASK_PROVIDER as G, TASK_BOARD_GRID_ROW_VIEW_ACTION as H, isTaskBoardUnassignedAssigneeId as I, matchesTaskBoardAssigneeFilter as J, matchesTaskBoardAssigneeUserIdsFilter as K, resolveTaskBoardCurrentUserAssigneeItem as L, resolveTaskPopoverComponent as M, taskAssignmentFactory as N, taskChecklistItemFactory as O, taskContextFactory as P, taskDependencyFactory as Q, RootConfig as R, taskFactory as S, TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH as T, taskStatusFactory as U, taskTemplateFactory as V, taskTypeFactory as W, timeLogFactory as X, AXMTaskBoardSettings as a, normalizeVisibleTaskBoardModesByParts as b, canViewAllTaskAssignees as c, AXPTaskBoardService as d, AXMTaskBoardTaskPopoverOverlayService as e, TASK_BOARD_GRID_ROW_ACTION_ITEMS as f, filterTasksOverlappingRange as g, hasTaskBoardSavedAssigneePreference as h, AXMPermissionsKeys as i, AXMSearchCommandProvider as j, AXMSettingProvider as k, AXMTaskBoardDefaultTaskPopoverComponent as l, AXMTaskBoardTaskPopoverShellComponent as m, normalizeTaskBoardAssigneeIds as n, AXMTaskManagementEntityProvider as o, AXMTaskManagementMenuProvider as p, AXMTaskManagementModule as q, resolveTaskBoardSavedAssigneeIds as r, AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID as s, AXM_TASK_VIEW_ALL_PERMISSION as t, AXPTaskBoardModule as u, AXPTaskBoardShortcut as v, AXPTaskBoardShortcutViewComponent as w, AXPTaskBoardWidget as x, AXPTaskBoardWidgetViewComponent as y, AXPTaskPopoverComponent as z };
7000
- //# sourceMappingURL=acorex-modules-task-management-acorex-modules-task-management-BB7eeaYX.mjs.map
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