@acorex/modules 20.2.0-next.2 → 20.2.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.d.ts +1 -0
- package/common/index.d.ts +1 -8
- package/contact-management/index.d.ts +69 -2
- package/conversation/README.md +1 -1
- package/conversation/index.d.ts +180 -121
- package/data-management/index.d.ts +5 -12
- package/document-management/index.d.ts +51 -4
- package/fesm2022/{acorex-modules-application-management-module-designer.component-udoks-Ef.mjs → acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs} +7 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-udoks-Ef.mjs.map → acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +41 -41
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BxqN76H7.mjs → acorex-modules-auth-acorex-modules-auth-tDyQQDnk.mjs} +50 -49
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-tDyQQDnk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-5FbgqbVo.mjs → acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-app-chooser.component-5FbgqbVo.mjs.map → acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-blank.layout-C8NsXB9K.mjs → acorex-modules-auth-blank.layout-ZjroQcdq.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-blank.layout-C8NsXB9K.mjs.map → acorex-modules-auth-blank.layout-ZjroQcdq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CmMM4TpQ.mjs → acorex-modules-auth-login.module-D1aa1F6G.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-login.module-CmMM4TpQ.mjs.map → acorex-modules-auth-login.module-D1aa1F6G.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-eX5-7AeO.mjs → acorex-modules-auth-master.layout-CGQmSlGQ.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-master.layout-eX5-7AeO.mjs.map → acorex-modules-auth-master.layout-CGQmSlGQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-C9s-5c7F.mjs → acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-C9s-5c7F.mjs.map → acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CDrYHh1x.mjs → acorex-modules-auth-password.component-Cb3FJ1DZ.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-CDrYHh1x.mjs.map → acorex-modules-auth-password.component-Cb3FJ1DZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-r_Lh8oGN.mjs → acorex-modules-auth-password.component-CiWdX7f_.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-r_Lh8oGN.mjs.map → acorex-modules-auth-password.component-CiWdX7f_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CMdsDZud.mjs → acorex-modules-auth-routes-pae8qpX9.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CMdsDZud.mjs.map → acorex-modules-auth-routes-pae8qpX9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BdK5T-8X.mjs → acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BdK5T-8X.mjs.map → acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs → acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs.map → acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-YV9pDOnB.mjs → acorex-modules-auth-two-factor.module-DtcoHPH4.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor.module-YV9pDOnB.mjs.map → acorex-modules-auth-two-factor.module-DtcoHPH4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-KI9dYs78.mjs → acorex-modules-auth-user-sessions.component-sI6P2joA.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-user-sessions.component-KI9dYs78.mjs.map → acorex-modules-auth-user-sessions.component-sI6P2joA.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +22 -22
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-DbTj01Wz.mjs → acorex-modules-common-search-popup.component-D7Y4T3Rp.mjs} +8 -8
- package/fesm2022/{acorex-modules-common-search-popup.component-DbTj01Wz.mjs.map → acorex-modules-common-search-popup.component-D7Y4T3Rp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-D_6STmWm.mjs → acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs} +7 -7
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-D_6STmWm.mjs.map → acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +1222 -1
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-contact-management-acorex-modules-contact-management-CM72FkGM.mjs → acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs} +281 -54
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-CW0fx3v8.mjs → acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-CW0fx3v8.mjs.map → acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-address.entity-D5OGWsSx.mjs → acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-address.entity-D5OGWsSx.mjs.map → acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-Cpdd-Xwb.mjs → acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-Cpdd-Xwb.mjs.map → acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-B_gQ7mEo.mjs → acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-B_gQ7mEo.mjs.map → acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-BwYBaS8B.mjs → acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-BwYBaS8B.mjs.map → acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-CDbm4Rq3.mjs → acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-CDbm4Rq3.mjs.map → acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BpNDJPVs.mjs → acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BpNDJPVs.mjs.map → acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs.map} +1 -1
- package/fesm2022/acorex-modules-contact-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +14 -36
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1549 -1324
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +76 -75
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +140 -126
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs → acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs} +1402 -389
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs → acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs.map → acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs → acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs.map → acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CzTg3hha.mjs → acorex-modules-document-management-details-view.component-CMI2Eokj.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-details-view.component-CzTg3hha.mjs.map → acorex-modules-document-management-details-view.component-CMI2Eokj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs → acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs.map → acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-TzRLr7rb.mjs → acorex-modules-document-management-drive.component-DoGdTL3n.mjs} +11 -10
- package/fesm2022/acorex-modules-document-management-drive.component-DoGdTL3n.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs → acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs.map → acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs → acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs.map → acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs → acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs.map → acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-CWGGArxw.mjs → acorex-modules-document-management-list-view.component-C4VFnACA.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-list-view.component-CWGGArxw.mjs.map → acorex-modules-document-management-list-view.component-C4VFnACA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs → acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs.map → acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-C_J1rPak.mjs → acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-C_J1rPak.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-By_NgUX6.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-By_NgUX6.mjs.map → acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-zwCw3v1w.mjs → acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-zwCw3v1w.mjs.map → acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs → acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs} +10 -2
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs → acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs.map → acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs → acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs.map → acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs → acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs.map → acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs → acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs.map → acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs → acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs.map → acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-zz8KU2BM.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-DxSYInAR.mjs} +65 -67
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-DxSYInAR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-g5YGQjj3.mjs → acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-g5YGQjj3.mjs.map → acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-designer.page-DQorNK3f.mjs → acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs} +4 -4
- package/fesm2022/{acorex-modules-form-template-management-designer.page-DQorNK3f.mjs.map → acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BFPqDVO3.mjs → acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BFPqDVO3.mjs.map → acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-DYbrgJI7.mjs → acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-DYbrgJI7.mjs.map → acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs +224 -0
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CCL7xNSm.mjs → acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CCL7xNSm.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-XNBsmQZY.mjs → acorex-modules-form-template-management-template.entity-CQm29n5v.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-XNBsmQZY.mjs.map → acorex-modules-form-template-management-template.entity-CQm29n5v.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Bw9VbGx7.mjs → acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs} +12 -19
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs → acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs} +31 -35
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs → acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs} +5 -5
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs.map → acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs +1975 -0
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs.map +1 -0
- package/fesm2022/acorex-modules-locale-management-profiles-MJ9xFTtp.mjs +19 -0
- package/fesm2022/acorex-modules-locale-management-profiles-MJ9xFTtp.mjs.map +1 -0
- package/fesm2022/{acorex-modules-common-settings.provider-DPVsF4c9.mjs → acorex-modules-locale-management-settings.provider-PKnqTses.mjs} +6 -6
- package/fesm2022/acorex-modules-locale-management-settings.provider-PKnqTses.mjs.map +1 -0
- package/fesm2022/acorex-modules-locale-management.mjs +2 -0
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-location-management.mjs +3139 -0
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-log-management.mjs +160 -35
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +149 -123
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs → acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs.map → acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-a2JPiCy9.mjs → acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs} +5 -5
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-a2JPiCy9.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-BkfSow3s.mjs → acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-BkfSow3s.mjs.map → acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs → acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs} +15 -14
- package/fesm2022/acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-settings.provider-hlbUXugb.mjs → acorex-modules-organization-management-settings.provider-feVwZnkw.mjs} +6 -30
- package/fesm2022/acorex-modules-organization-management-settings.provider-feVwZnkw.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +128 -124
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-BOfUQDwo.mjs → acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs} +4 -4
- package/fesm2022/{acorex-modules-platform-management-list-version.component-BOfUQDwo.mjs.map → acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +91 -303
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +232 -453
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs → acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs} +4 -4
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs.map → acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DHu-kyCd.mjs → acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs} +7 -7
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DHu-kyCd.mjs.map → acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs.map} +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +24 -24
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +97 -61
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-cG4ykm2g.mjs → acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs} +12 -6
- package/fesm2022/acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CrEK2N1U.mjs → acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CrEK2N1U.mjs.map → acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +9 -7
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +5937 -0
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +43 -43
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DnSdOSmj.mjs → acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs} +60 -29
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-Bzu4j4VW.mjs → acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs} +197 -183
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/locale-management/README.md +3 -0
- package/locale-management/index.d.ts +182 -0
- package/location-management/README.md +3 -0
- package/location-management/index.d.ts +166 -0
- package/notification-management/index.d.ts +14 -5
- package/package.json +17 -5
- package/task-management/README.md +189 -0
- package/task-management/index.d.ts +320 -0
- package/workflow-management/index.d.ts +8 -3
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BxqN76H7.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-acorex-modules-common-D06CT4CO.mjs +0 -1657
- package/fesm2022/acorex-modules-common-acorex-modules-common-D06CT4CO.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-settings.provider-DPVsF4c9.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-CM72FkGM.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-TzRLr7rb.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-zz8KU2BM.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-DgH_DUIB.mjs +0 -196
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-DgH_DUIB.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-Bw9VbGx7.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-cG4ykm2g.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-DnSdOSmj.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bzu4j4VW.mjs.map +0 -1
|
@@ -22,22 +22,24 @@ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase }
|
|
|
22
22
|
import * as i7 from '@angular/common';
|
|
23
23
|
import { AsyncPipe, CommonModule } from '@angular/common';
|
|
24
24
|
import * as i0 from '@angular/core';
|
|
25
|
-
import { computed, inject, ViewEncapsulation, ChangeDetectionStrategy, Component, viewChild, input, output,
|
|
26
|
-
import * as i1$
|
|
25
|
+
import { computed, inject, signal, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, viewChild, input, output, model, untracked } from '@angular/core';
|
|
26
|
+
import * as i1$2 from '@angular/forms';
|
|
27
27
|
import { FormsModule } from '@angular/forms';
|
|
28
28
|
import { Router, ActivatedRoute, NavigationEnd, RouterModule } from '@angular/router';
|
|
29
29
|
import { filter, startWith } from 'rxjs';
|
|
30
|
-
import { A as AXPTaskBoardService, R as RootConfig } from './acorex-modules-workflow-management-acorex-modules-workflow-management-
|
|
30
|
+
import { A as AXPTaskBoardService, R as RootConfig } from './acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs';
|
|
31
31
|
import { AXFormatPipe } from '@acorex/core/format';
|
|
32
|
+
import * as i1 from '@acorex/platform/layout/builder';
|
|
33
|
+
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
32
34
|
import { AXPSettingService } from '@acorex/platform/common';
|
|
33
35
|
import { AXPPlatformScope } from '@acorex/platform/core';
|
|
34
36
|
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
|
35
37
|
import { AXSchedulerComponent } from '@acorex/components/scheduler';
|
|
36
38
|
import { AXDataSource } from '@acorex/cdk/common';
|
|
37
|
-
import * as i1 from '@acorex/components/data-table';
|
|
38
|
-
import { AXDataTableModule
|
|
39
|
-
import { isEqual } from 'lodash-es';
|
|
39
|
+
import * as i1$1 from '@acorex/components/data-table';
|
|
40
|
+
import { AXDataTableModule } from '@acorex/components/data-table';
|
|
40
41
|
import { AXKanbanComponent } from '@acorex/components/kanban';
|
|
42
|
+
import { isEqual } from 'lodash-es';
|
|
41
43
|
|
|
42
44
|
var AXMTaskBoardSettings;
|
|
43
45
|
(function (AXMTaskBoardSettings) {
|
|
@@ -132,8 +134,7 @@ const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() =
|
|
|
132
134
|
.catch((error) => console.error('Error saving calendar view category:', error));
|
|
133
135
|
},
|
|
134
136
|
setViewMode(mode) {
|
|
135
|
-
if ((mode === 'kanban' || mode === '
|
|
136
|
-
store.selectedTaskTypeName() === null) {
|
|
137
|
+
if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeName() === null) {
|
|
137
138
|
const taskTypeName = store.taskTypes()[0]?.name;
|
|
138
139
|
if (taskTypeName) {
|
|
139
140
|
patchState(store, { selectedTaskTypeName: taskTypeName });
|
|
@@ -182,7 +183,7 @@ const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() =
|
|
|
182
183
|
toggleDetailPanel() {
|
|
183
184
|
patchState(store, { detailPanel: !store.detailPanel() });
|
|
184
185
|
},
|
|
185
|
-
getStatusName(key, provider) {
|
|
186
|
+
async getStatusName(key, provider) {
|
|
186
187
|
return taskBoardService.getStatusName(key, provider);
|
|
187
188
|
},
|
|
188
189
|
/**
|
|
@@ -208,21 +209,48 @@ class AXMTaskBoardDetailPanel {
|
|
|
208
209
|
this.rootConfig = RootConfig;
|
|
209
210
|
this.vm = inject(AXMTaskBoardViewModel);
|
|
210
211
|
this.localeService = inject(AXLocaleService);
|
|
212
|
+
this.taskBoardService = inject(AXPTaskBoardService);
|
|
213
|
+
this.statusName = signal('', ...(ngDevMode ? [{ debugName: "statusName" }] : []));
|
|
214
|
+
this.extraFields = signal([], ...(ngDevMode ? [{ debugName: "extraFields" }] : []));
|
|
215
|
+
this.#selectedTaskChanged = effect(async () => {
|
|
216
|
+
const selectedTask = this.vm.selectedTask();
|
|
217
|
+
const key = selectedTask?.status.id;
|
|
218
|
+
const provider = selectedTask?.provider;
|
|
219
|
+
if (!provider)
|
|
220
|
+
return;
|
|
221
|
+
const name = await this.vm.getStatusName(key, provider);
|
|
222
|
+
if (name)
|
|
223
|
+
this.statusName.set(name);
|
|
224
|
+
}, ...(ngDevMode ? [{ debugName: "#selectedTaskChanged" }] : []));
|
|
225
|
+
this.#selectedTaskTypeChanged = effect(async () => {
|
|
226
|
+
const selectedTask = this.vm.selectedTask();
|
|
227
|
+
const selectedTaskType = this.taskBoardService.getProvider(selectedTask?.provider);
|
|
228
|
+
const extraFields = await selectedTaskType?.getExtraFields();
|
|
229
|
+
if (!extraFields) {
|
|
230
|
+
this.extraFields.set([]);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
this.extraFields.set(extraFields);
|
|
234
|
+
}, ...(ngDevMode ? [{ debugName: "#selectedTaskTypeChanged" }] : []));
|
|
211
235
|
}
|
|
236
|
+
#selectedTaskChanged;
|
|
237
|
+
#selectedTaskTypeChanged;
|
|
212
238
|
capitalizeFirstLetter(text) {
|
|
213
239
|
return String(text).charAt(0).toUpperCase() + String(text).slice(1);
|
|
214
240
|
}
|
|
215
|
-
|
|
216
|
-
if (
|
|
217
|
-
return null;
|
|
218
|
-
return this.vm.getStatusName(key, provider);
|
|
219
|
-
}
|
|
220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMTaskBoardDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
221
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMTaskBoardDetailPanel, isStandalone: true, selector: "axm-task-board-detail-panel", ngImport: i0, template: "@if (vm.isTaskSelected()) {\n @let nodeInfo = vm.selectedTask();\n <div class=\"__header\">\n <div class=\"__title\">\n <span>{{ nodeInfo?.title }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n\n <div class=\"__content\">\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.title' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n @if (nodeInfo?.description) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.description' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.description }}</div>\n </div>\n }\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.start-date' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.startDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.end-date' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.endDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n @let statusName = getStatusName(nodeInfo?.statusKey, nodeInfo?.data?.provider);\n @if (statusName) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.status' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">{{ statusName }}</div>\n </div>\n }\n @if (nodeInfo?.priority) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.priority' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\n </div>\n }\n </div>\n </div>\n </div>\n} @else {\n <div class=\"__header\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.no-task-selected' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n}\n", styles: ["axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ 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: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AXFormatPipe, name: "format" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
241
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AXMTaskBoardDetailPanel, isStandalone: true, selector: "axm-task-board-detail-panel", ngImport: i0, template: "@if (vm.isTaskSelected()) {\n @let nodeInfo = vm.selectedTask();\n <div class=\"__header\">\n <div class=\"__title\">\n <span>{{ nodeInfo?.title }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n\n <div class=\"__content\">\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.title' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n @if (nodeInfo?.description) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.description' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.description }}</div>\n </div>\n }\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.start-date' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.startDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.end-date' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.endDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.reporter' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.reporter\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n @if (nodeInfo?.assignee) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{\n 'task-board.detail-panel.assignee' | translate: { scope: rootConfig.config.i18n } | async\n }}</span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.assignee }}</div>\n </div>\n }\n @if (statusName()) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.status' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">{{ statusName() }}</div>\n </div>\n }\n @if (nodeInfo?.priority) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.priority' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\n </div>\n }\n @if (extraFields() && extraFields().length) {\n <div class=\"__row\">\n <axp-widgets-container [context]=\"nodeInfo\">\n @for (extraField of extraFields(); track extraField) {\n <div class=\"__title\">\n <span>\n {{ extraField.title | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">\n <ng-container axp-widget-renderer [node]=\"extraField.widget\" [mode]=\"'view'\"> </ng-container>\n </div>\n }\n </axp-widgets-container>\n </div>\n }\n </div>\n </div>\n </div>\n} @else {\n <div class=\"__header\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.no-task-selected' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n}\n", styles: ["axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ 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: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXFormatPipe, name: "format" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
222
243
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardDetailPanel, decorators: [{
|
|
224
245
|
type: Component,
|
|
225
|
-
args: [{ selector: 'axm-task-board-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
246
|
+
args: [{ selector: 'axm-task-board-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
247
|
+
AsyncPipe,
|
|
248
|
+
AXFormatPipe,
|
|
249
|
+
AXTranslatorPipe,
|
|
250
|
+
AXButtonComponent,
|
|
251
|
+
AXPLayoutBuilderModule,
|
|
252
|
+
AXDecoratorIconComponent,
|
|
253
|
+
], template: "@if (vm.isTaskSelected()) {\n @let nodeInfo = vm.selectedTask();\n <div class=\"__header\">\n <div class=\"__title\">\n <span>{{ nodeInfo?.title }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n\n <div class=\"__content\">\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.title' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n @if (nodeInfo?.description) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.description' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.description }}</div>\n </div>\n }\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.start-date' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.startDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.end-date' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.endDate\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.reporter' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">\n {{\n nodeInfo?.reporter\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\n | async\n }}\n </div>\n </div>\n @if (nodeInfo?.assignee) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{\n 'task-board.detail-panel.assignee' | translate: { scope: rootConfig.config.i18n } | async\n }}</span>\n </div>\n <div class=\"__content\">{{ nodeInfo?.assignee }}</div>\n </div>\n }\n @if (statusName()) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ 'task-board.detail-panel.status' | translate: { scope: rootConfig.config.i18n } | async }}</span>\n </div>\n <div class=\"__content\">{{ statusName() }}</div>\n </div>\n }\n @if (nodeInfo?.priority) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.priority' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\n </div>\n }\n @if (extraFields() && extraFields().length) {\n <div class=\"__row\">\n <axp-widgets-container [context]=\"nodeInfo\">\n @for (extraField of extraFields(); track extraField) {\n <div class=\"__title\">\n <span>\n {{ extraField.title | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <div class=\"__content\">\n <ng-container axp-widget-renderer [node]=\"extraField.widget\" [mode]=\"'view'\"> </ng-container>\n </div>\n }\n </axp-widgets-container>\n </div>\n }\n </div>\n </div>\n </div>\n} @else {\n <div class=\"__header\">\n <div class=\"__title\">\n <span>\n {{ 'task-board.detail-panel.no-task-selected' | translate: { scope: rootConfig.config.i18n } | async }}\n </span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n}\n", styles: ["axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"] }]
|
|
226
254
|
}] });
|
|
227
255
|
|
|
228
256
|
class AXMTaskBoardCalendarViewComponent {
|
|
@@ -303,90 +331,105 @@ class AXMTaskBoardCalendarViewComponent {
|
|
|
303
331
|
onTaskClickHandler(event) {
|
|
304
332
|
this.onTaskClick.emit(event.appointment);
|
|
305
333
|
}
|
|
306
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
307
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
334
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
335
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.4", type: AXMTaskBoardCalendarViewComponent, isStandalone: true, selector: "axm-task-board-calendar-view", inputs: { startingDate: { classPropertyName: "startingDate", publicName: "startingDate", isSignal: true, isRequired: false, transformFunction: null }, selectedView: { classPropertyName: "selectedView", publicName: "selectedView", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: "onTaskClick", onTaskChanged: "onTaskChanged", onMonthSlotDblClicked: "onMonthSlotDblClicked", onActionClick: "onActionClick", component: "component", onTaskRightClick: "onTaskRightClick", onRangeChanged: "onRangeChanged" }, viewQueries: [{ propertyName: "schedulerComponent", first: true, predicate: AXSchedulerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-scheduler\n [hasHeader]=\"false\"\n [hasActions]=\"true\"\n [holidays]=\"holidays\"\n [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\"\n [selectedView]=\"currentSchedulerView()\"\n [multiDayViewDaysCount]=\"vm.daysCount()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\"\n (onActionClick)=\"handleActionClick($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\"\n (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentClicked)=\"onTaskClickHandler($event)\"\n (onAppointmentRightClick)=\"onTaskRightClickHandler($event)\"\n></ax-scheduler>\n", styles: ["ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\n"], dependencies: [{ kind: "component", type: AXSchedulerComponent, selector: "ax-scheduler", inputs: ["calendar", "startingDate", "endDayHour", "startDayHour", "hasHeader", "readonly", "draggable", "hasActions", "dragStartDelay", "allowFullScreen", "multiDayViewDaysCount", "tooltipTemplate", "dataSource", "holidays", "firstDayOfWeek", "views", "selectedView"], outputs: ["selectedViewChange", "onDataLoaded", "onRangeChanged", "onSlotClicked", "onSlotDblClicked", "onSlotRightClick", "onAppointmentDrop", "onActionClick", "onAppointmentClicked", "onAppointmentDblClicked", "onAppointmentRightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
308
336
|
}
|
|
309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, decorators: [{
|
|
310
338
|
type: Component,
|
|
311
339
|
args: [{ selector: 'axm-task-board-calendar-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXSchedulerComponent], template: "<ax-scheduler\n [hasHeader]=\"false\"\n [hasActions]=\"true\"\n [holidays]=\"holidays\"\n [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\"\n [selectedView]=\"currentSchedulerView()\"\n [multiDayViewDaysCount]=\"vm.daysCount()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\"\n (onActionClick)=\"handleActionClick($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\"\n (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentClicked)=\"onTaskClickHandler($event)\"\n (onAppointmentRightClick)=\"onTaskRightClickHandler($event)\"\n></ax-scheduler>\n", styles: ["ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\n"] }]
|
|
312
340
|
}] });
|
|
313
341
|
|
|
314
342
|
class AXMTaskBoardGridViewComponent {
|
|
315
343
|
constructor() {
|
|
344
|
+
this.vm = inject(AXMTaskBoardViewModel);
|
|
316
345
|
this.localeService = inject(AXLocaleService);
|
|
317
346
|
this.calendarService = inject(AXCalendarService);
|
|
318
347
|
this.taskBoardService = inject(AXPTaskBoardService);
|
|
319
|
-
this.
|
|
320
|
-
this.statuses = input.required(...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
348
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
321
349
|
this.onTaskClick = output();
|
|
322
350
|
this.onActionClick = output();
|
|
323
|
-
this.
|
|
351
|
+
this.fetchedTasks = signal([], ...(ngDevMode ? [{ debugName: "fetchedTasks" }] : []));
|
|
352
|
+
this.columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
324
353
|
this.tasksDataSource = computed(() => {
|
|
354
|
+
const parentDataSource = this.dataSource();
|
|
325
355
|
return new AXDataSource({
|
|
326
356
|
load: async (e) => {
|
|
327
|
-
const
|
|
357
|
+
const result = await parentDataSource({ skip: e.skip, take: e.take });
|
|
358
|
+
this.fetchedTasks.set(result.items);
|
|
359
|
+
const mappedItems = result.items.map((task) => ({
|
|
328
360
|
id: task.id,
|
|
361
|
+
data: task.data,
|
|
329
362
|
title: task.title,
|
|
330
363
|
priority: task.priority,
|
|
331
364
|
description: task.description,
|
|
365
|
+
statusTitle: task.status.title,
|
|
366
|
+
reporter: task.reporter.fullName ?? '-',
|
|
367
|
+
assignee: task.assignee?.fullName ?? 'unassigned',
|
|
368
|
+
type: this.taskBoardService.getProvider(task.provider)?.title,
|
|
332
369
|
endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {
|
|
333
370
|
locale: this.localeService.activeProfile().calendar.system,
|
|
334
371
|
}),
|
|
335
372
|
startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {
|
|
336
373
|
locale: this.localeService.activeProfile().calendar.system,
|
|
337
374
|
}),
|
|
338
|
-
statusTitle: this.statuses().find((status) => status.key === task.statusKey)?.title,
|
|
339
375
|
}));
|
|
340
|
-
return {
|
|
341
|
-
items: items.slice(e.skip, e.skip + e.take),
|
|
342
|
-
total: items.length,
|
|
343
|
-
};
|
|
376
|
+
return { items: mappedItems, total: result.total };
|
|
344
377
|
},
|
|
345
378
|
pageSize: 10,
|
|
346
379
|
key: 'id',
|
|
347
380
|
byKey: async (key) => {
|
|
348
|
-
return this.
|
|
381
|
+
return this.fetchedTasks().find((task) => task.id === key);
|
|
349
382
|
},
|
|
350
383
|
});
|
|
351
384
|
}, ...(ngDevMode ? [{ debugName: "tasksDataSource" }] : []));
|
|
352
|
-
this.#
|
|
353
|
-
this.
|
|
354
|
-
|
|
355
|
-
|
|
385
|
+
this.#dataSourceChanged = effect(() => {
|
|
386
|
+
this.tasksDataSource().refresh();
|
|
387
|
+
}, ...(ngDevMode ? [{ debugName: "#dataSourceChanged" }] : []));
|
|
388
|
+
this.#providerChanged = effect(async () => {
|
|
389
|
+
const provider = this.vm.selectedTaskType();
|
|
390
|
+
if (!provider) {
|
|
391
|
+
this.columns.set([]);
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
provider.getExtraFields().then((extraFields) => {
|
|
395
|
+
if (extraFields) {
|
|
396
|
+
this.columns.set(extraFields);
|
|
397
|
+
}
|
|
356
398
|
});
|
|
357
|
-
}, ...(ngDevMode ? [{ debugName: "#
|
|
399
|
+
}, ...(ngDevMode ? [{ debugName: "#providerChanged" }] : []));
|
|
358
400
|
}
|
|
359
|
-
#
|
|
401
|
+
#dataSourceChanged;
|
|
402
|
+
#providerChanged;
|
|
360
403
|
handleRowClick(event) {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
this.onTaskClick.emit(task);
|
|
404
|
+
if (event.data) {
|
|
405
|
+
this.onTaskClick.emit(event.data);
|
|
364
406
|
}
|
|
365
407
|
}
|
|
366
408
|
onActionClickHandler(e) {
|
|
367
|
-
const task =
|
|
409
|
+
const task = e.data;
|
|
368
410
|
if (!task)
|
|
369
411
|
return;
|
|
370
412
|
this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });
|
|
371
413
|
}
|
|
372
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
373
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
414
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
415
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AXMTaskBoardGridViewComponent, isStandalone: true, selector: "axm-task-board-grid-view", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: "onTaskClick", onActionClick: "onActionClick" }, ngImport: i0, template: "<ax-data-table\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"tasksDataSource()\"\n (onRowClick)=\"handleRowClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n>\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'500px'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"reporter\" caption=\"Reporter\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"assignee\" caption=\"Assignee\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"statusTitle\" caption=\"status\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"type\" caption=\"type\" [width]=\"'150px'\"></ax-text-column>\n\n @if (columns().length) {\n <ng-container>\n @for (column of columns(); track column) {\n <axp-widget-column-renderer\n [node]=\"column.widget\"\n [caption]=\"(column.title | translate | async)!\"\n ></axp-widget-column-renderer>\n }\n </ng-container>\n }\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n</ax-data-table>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "component", type: i1$1.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
374
416
|
}
|
|
375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardGridViewComponent, decorators: [{
|
|
376
418
|
type: Component,
|
|
377
|
-
args: [{ selector: 'axm-task-board-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule], template: "<ax-data-table\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"tasksDataSource()\"\n (onRowClick)=\"handleRowClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n>\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'
|
|
419
|
+
args: [{ selector: 'axm-task-board-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPLayoutBuilderModule], template: "<ax-data-table\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"tasksDataSource()\"\n (onRowClick)=\"handleRowClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n>\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'500px'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"reporter\" caption=\"Reporter\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"assignee\" caption=\"Assignee\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"statusTitle\" caption=\"status\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"type\" caption=\"type\" [width]=\"'150px'\"></ax-text-column>\n\n @if (columns().length) {\n <ng-container>\n @for (column of columns(); track column) {\n <axp-widget-column-renderer\n [node]=\"column.widget\"\n [caption]=\"(column.title | translate | async)!\"\n ></axp-widget-column-renderer>\n }\n </ng-container>\n }\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n</ax-data-table>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"] }]
|
|
378
420
|
}] });
|
|
379
421
|
|
|
380
422
|
class AXMTaskBoardKanbanViewComponent {
|
|
381
423
|
constructor() {
|
|
424
|
+
this.vm = inject(AXMTaskBoardViewModel);
|
|
382
425
|
this.taskBoardService = inject(AXPTaskBoardService);
|
|
383
426
|
this.kanbanComponent = viewChild(AXKanbanComponent, ...(ngDevMode ? [{ debugName: "kanbanComponent" }] : []));
|
|
384
427
|
this.tasks = model.required(...(ngDevMode ? [{ debugName: "tasks" }] : []));
|
|
385
|
-
this.statuses = input.required(...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
386
428
|
this.onTaskClick = output();
|
|
387
429
|
this.onTaskChanged = output();
|
|
388
430
|
this.component = output();
|
|
389
431
|
this.onActionClick = output();
|
|
432
|
+
this.statuses = signal([], ...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
390
433
|
this.stableTasks = computed(() => this.tasks(), ...(ngDevMode ? [{ debugName: "stableTasks", equal: isEqual }] : [{ equal: isEqual }]));
|
|
391
434
|
this.kanbanTasks = computed(() => {
|
|
392
435
|
return this.stableTasks().map((task) => ({
|
|
@@ -395,16 +438,23 @@ class AXMTaskBoardKanbanViewComponent {
|
|
|
395
438
|
index: task.index,
|
|
396
439
|
cssClass: task.cssClass,
|
|
397
440
|
priority: task.priority,
|
|
398
|
-
statusKey: task.
|
|
441
|
+
statusKey: task.status.id,
|
|
399
442
|
description: task.description,
|
|
400
443
|
}));
|
|
401
444
|
}, ...(ngDevMode ? [{ debugName: "kanbanTasks" }] : []));
|
|
445
|
+
this.#providerChanged = effect(async () => {
|
|
446
|
+
const statuses = await this.vm.selectedTaskType()?.getStatuses();
|
|
447
|
+
if (statuses) {
|
|
448
|
+
this.statuses.set(statuses);
|
|
449
|
+
}
|
|
450
|
+
}, ...(ngDevMode ? [{ debugName: "#providerChanged" }] : []));
|
|
402
451
|
}
|
|
403
452
|
ngAfterViewInit() {
|
|
404
453
|
if (this.kanbanComponent()) {
|
|
405
454
|
this.component.emit(this.kanbanComponent());
|
|
406
455
|
}
|
|
407
456
|
}
|
|
457
|
+
#providerChanged;
|
|
408
458
|
onSortChanged(event) {
|
|
409
459
|
const tasks = this.tasks().map((item) => {
|
|
410
460
|
const task = event.allItems.find((t) => t.id === item.id);
|
|
@@ -429,141 +479,93 @@ class AXMTaskBoardKanbanViewComponent {
|
|
|
429
479
|
this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: task });
|
|
430
480
|
}
|
|
431
481
|
}
|
|
432
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
433
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
483
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.4", type: AXMTaskBoardKanbanViewComponent, isStandalone: true, selector: "axm-task-board-kanban-view", inputs: { tasks: { classPropertyName: "tasks", publicName: "tasks", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tasks: "tasksChange", onTaskClick: "onTaskClick", onTaskChanged: "onTaskChanged", component: "component", onActionClick: "onActionClick" }, viewQueries: [{ propertyName: "kanbanComponent", first: true, predicate: AXKanbanComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-kanban\n [hasActions]=\"true\"\n [statuses]=\"statuses()\"\n [dataSource]=\"kanbanTasks()\"\n (onItemClick)=\"handleItemClick($event)\"\n (onSortChanged)=\"onSortChanged($event)\"\n (onActionClick)=\"handleActionClick($event)\"\n></ax-kanban>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"], dependencies: [{ kind: "component", type: AXKanbanComponent, selector: "ax-kanban", inputs: ["hasActions", "dragStartDelay", "statuses", "itemTemplate", "dataSource", "keyField", "indexField", "titleField", "cssClassField", "priorityField", "statusKeyField", "descriptionField", "emptyTemplate", "headerTemplate", "footerTemplate", "contentFooterTemplate", "tooltipTemplate"], outputs: ["onSortChanged", "onItemClick", "onActionClick", "onItemDblClick", "onItemRightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
434
484
|
}
|
|
435
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, decorators: [{
|
|
436
486
|
type: Component,
|
|
437
487
|
args: [{ selector: 'axm-task-board-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXKanbanComponent], template: "<ax-kanban\n [hasActions]=\"true\"\n [statuses]=\"statuses()\"\n [dataSource]=\"kanbanTasks()\"\n (onItemClick)=\"handleItemClick($event)\"\n (onSortChanged)=\"onSortChanged($event)\"\n (onActionClick)=\"handleActionClick($event)\"\n></ax-kanban>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"] }]
|
|
438
488
|
}] });
|
|
439
489
|
|
|
440
490
|
class AXMTaskBoardStatusGroupedGridViewComponent {
|
|
441
491
|
constructor() {
|
|
492
|
+
this.vm = inject(AXMTaskBoardViewModel);
|
|
442
493
|
this.localeService = inject(AXLocaleService);
|
|
443
494
|
this.calendarService = inject(AXCalendarService);
|
|
444
|
-
this.
|
|
445
|
-
this.
|
|
446
|
-
this.statuses = input.required(...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
447
|
-
this.onTaskChanged = output();
|
|
495
|
+
this.provider = input(...(ngDevMode ? [undefined, { debugName: "provider" }] : []));
|
|
496
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
448
497
|
this.onActionClick = output();
|
|
449
498
|
this.groupedTasks = signal([], ...(ngDevMode ? [{ debugName: "groupedTasks" }] : []));
|
|
450
|
-
this.
|
|
451
|
-
this
|
|
452
|
-
|
|
499
|
+
this.allFetchedTasks = signal([], ...(ngDevMode ? [{ debugName: "allFetchedTasks" }] : []));
|
|
500
|
+
this.columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
501
|
+
this.statuses = signal([], ...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
502
|
+
this.#dataChanged = effect(async () => {
|
|
503
|
+
const parentDataSource = this.dataSource();
|
|
453
504
|
const allStatuses = this.statuses();
|
|
454
|
-
if (!
|
|
505
|
+
if (!parentDataSource || allStatuses.length === 0) {
|
|
455
506
|
this.groupedTasks.set([]);
|
|
507
|
+
this.allFetchedTasks.set([]);
|
|
456
508
|
return;
|
|
457
509
|
}
|
|
458
|
-
const
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
untracked(() => {
|
|
464
|
-
this.groupedTasks()?.forEach((group) => {
|
|
465
|
-
group.tasks.refresh();
|
|
466
|
-
});
|
|
467
|
-
});
|
|
468
|
-
}, ...(ngDevMode ? [{ debugName: "#tasksChanged" }] : []));
|
|
469
|
-
}
|
|
470
|
-
#tasksChanged;
|
|
471
|
-
createTaskDataSource(tasks) {
|
|
472
|
-
return new AXDataSource({
|
|
473
|
-
load: async (e) => {
|
|
474
|
-
const items = tasks.map((task) => ({
|
|
475
|
-
id: task.id,
|
|
476
|
-
title: task.title,
|
|
477
|
-
priority: task.priority,
|
|
478
|
-
description: task.description,
|
|
479
|
-
endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {
|
|
480
|
-
locale: this.localeService.activeProfile().calendar.system,
|
|
481
|
-
}),
|
|
482
|
-
startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {
|
|
483
|
-
locale: this.localeService.activeProfile().calendar.system,
|
|
484
|
-
}),
|
|
485
|
-
statusTitle: this.statuses().find((status) => status.key === task.statusKey)?.title,
|
|
486
|
-
}));
|
|
510
|
+
const result = await parentDataSource();
|
|
511
|
+
this.allFetchedTasks.set(result.items);
|
|
512
|
+
const allTasks = result.items;
|
|
513
|
+
const statusGroups = allStatuses.map((status) => {
|
|
514
|
+
const tasksForStatus = allTasks.filter((task) => task.status.id === status.key);
|
|
487
515
|
return {
|
|
488
|
-
|
|
489
|
-
|
|
516
|
+
statusInfo: status,
|
|
517
|
+
tasks: this.createTaskDataSourceForGroup(tasksForStatus),
|
|
490
518
|
};
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
key: 'id',
|
|
494
|
-
byKey: async (key) => {
|
|
495
|
-
return tasks.find((task) => task.id === key);
|
|
496
|
-
},
|
|
497
|
-
});
|
|
498
|
-
}
|
|
499
|
-
onActionClickHandler(e) {
|
|
500
|
-
const task = this.tasks().find((task) => task.id === e.data.id);
|
|
501
|
-
if (!task)
|
|
502
|
-
return;
|
|
503
|
-
this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });
|
|
504
|
-
}
|
|
505
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
506
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMTaskBoardStatusGroupedGridViewComponent, isStandalone: true, selector: "axm-task-board-status-grouped-grid-view", inputs: { tasks: { classPropertyName: "tasks", publicName: "tasks", isSignal: true, isRequired: true, transformFunction: null }, statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskChanged: "onTaskChanged", onActionClick: "onActionClick" }, ngImport: i0, template: "@for (group of groupedTasks(); track group) {\n <h1 class=\"ax-text-xl ax-font-bold\">{{ group.statusInfo.title }}</h1>\n <ax-data-table\n class=\"ax-h-[291px]\"\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"group.tasks\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'100%'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n </ax-data-table>\n}\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "component", type: i1.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
507
|
-
}
|
|
508
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, decorators: [{
|
|
509
|
-
type: Component,
|
|
510
|
-
args: [{ selector: 'axm-task-board-status-grouped-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule], template: "@for (group of groupedTasks(); track group) {\n <h1 class=\"ax-text-xl ax-font-bold\">{{ group.statusInfo.title }}</h1>\n <ax-data-table\n class=\"ax-h-[291px]\"\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"group.tasks\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'100%'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n </ax-data-table>\n}\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"] }]
|
|
511
|
-
}] });
|
|
512
|
-
|
|
513
|
-
class AXMTaskBoardTimeGroupedGridViewComponent {
|
|
514
|
-
constructor() {
|
|
515
|
-
this.localeService = inject(AXLocaleService);
|
|
516
|
-
this.calendarService = inject(AXCalendarService);
|
|
517
|
-
this.taskBoardService = inject(AXPTaskBoardService);
|
|
518
|
-
this.tables = viewChildren(AXDataTableComponent, ...(ngDevMode ? [{ debugName: "tables" }] : []));
|
|
519
|
-
this.tasks = input.required(...(ngDevMode ? [{ debugName: "tasks" }] : []));
|
|
520
|
-
this.statuses = input.required(...(ngDevMode ? [{ debugName: "statuses" }] : []));
|
|
521
|
-
this.onTaskChanged = output();
|
|
522
|
-
this.onActionClick = output();
|
|
523
|
-
this.groupedTasks = signal([], ...(ngDevMode ? [{ debugName: "groupedTasks" }] : []));
|
|
524
|
-
this.stableTasks = computed(() => this.tasks(), ...(ngDevMode ? [{ debugName: "stableTasks", equal: isEqual }] : [{ equal: isEqual }]));
|
|
525
|
-
this.#tasksChanged = effect(() => {
|
|
526
|
-
const allTasks = this.stableTasks();
|
|
527
|
-
const allStatuses = this.statuses();
|
|
528
|
-
if (!allTasks.length || !allStatuses.length) {
|
|
529
|
-
this.groupedTasks.set([]);
|
|
530
|
-
return;
|
|
531
|
-
}
|
|
532
|
-
const map = allStatuses.map((status) => ({
|
|
533
|
-
statusInfo: status,
|
|
534
|
-
tasks: this.createTaskDataSource(allTasks.filter((task) => task.statusKey === status.key)),
|
|
535
|
-
}));
|
|
536
|
-
this.groupedTasks.set(map);
|
|
519
|
+
});
|
|
520
|
+
this.groupedTasks.set(statusGroups);
|
|
537
521
|
untracked(() => {
|
|
538
|
-
|
|
539
|
-
|
|
522
|
+
setTimeout(() => {
|
|
523
|
+
this.groupedTasks()?.forEach((group) => {
|
|
524
|
+
group.tasks.refresh();
|
|
525
|
+
});
|
|
540
526
|
});
|
|
541
527
|
});
|
|
542
|
-
}, ...(ngDevMode ? [{ debugName: "#
|
|
528
|
+
}, ...(ngDevMode ? [{ debugName: "#dataChanged" }] : []));
|
|
529
|
+
this.#providerChanged = effect(async () => {
|
|
530
|
+
const provider = this.vm.selectedTaskType();
|
|
531
|
+
provider?.getExtraFields().then((extraFields) => {
|
|
532
|
+
if (extraFields) {
|
|
533
|
+
this.columns.set(extraFields);
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
provider?.getStatuses().then((statuses) => {
|
|
537
|
+
if (statuses) {
|
|
538
|
+
this.statuses.set(statuses);
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
}, ...(ngDevMode ? [{ debugName: "#providerChanged" }] : []));
|
|
543
542
|
}
|
|
544
|
-
#
|
|
545
|
-
|
|
543
|
+
#dataChanged;
|
|
544
|
+
#providerChanged;
|
|
545
|
+
createTaskDataSourceForGroup(tasks) {
|
|
546
546
|
return new AXDataSource({
|
|
547
547
|
load: async (e) => {
|
|
548
548
|
const items = tasks.map((task) => ({
|
|
549
549
|
id: task.id,
|
|
550
|
+
data: task.data,
|
|
550
551
|
title: task.title,
|
|
551
552
|
priority: task.priority,
|
|
552
553
|
description: task.description,
|
|
554
|
+
reporter: task.reporter.fullName ?? '-',
|
|
555
|
+
assignee: task.assignee?.fullName ?? 'unassigned',
|
|
553
556
|
endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {
|
|
554
557
|
locale: this.localeService.activeProfile().calendar.system,
|
|
555
558
|
}),
|
|
556
559
|
startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {
|
|
557
560
|
locale: this.localeService.activeProfile().calendar.system,
|
|
558
561
|
}),
|
|
559
|
-
statusTitle: this.statuses().find((status) => status.key === task.statusKey)?.title,
|
|
560
562
|
}));
|
|
561
563
|
return {
|
|
562
564
|
items: items.slice(e.skip, e.skip + e.take),
|
|
563
565
|
total: items.length,
|
|
564
566
|
};
|
|
565
567
|
},
|
|
566
|
-
pageSize:
|
|
568
|
+
pageSize: 5,
|
|
567
569
|
key: 'id',
|
|
568
570
|
byKey: async (key) => {
|
|
569
571
|
return tasks.find((task) => task.id === key);
|
|
@@ -571,17 +573,17 @@ class AXMTaskBoardTimeGroupedGridViewComponent {
|
|
|
571
573
|
});
|
|
572
574
|
}
|
|
573
575
|
onActionClickHandler(e) {
|
|
574
|
-
const task = this.
|
|
576
|
+
const task = this.allFetchedTasks().find((task) => task.id === e.data.id);
|
|
575
577
|
if (!task)
|
|
576
578
|
return;
|
|
577
579
|
this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });
|
|
578
580
|
}
|
|
579
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
581
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
582
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AXMTaskBoardStatusGroupedGridViewComponent, isStandalone: true, selector: "axm-task-board-status-grouped-grid-view", inputs: { provider: { classPropertyName: "provider", publicName: "provider", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onActionClick: "onActionClick" }, ngImport: i0, template: "@for (group of groupedTasks(); track group) {\n <h1 class=\"ax-text-xl ax-font-bold\">{{ group.statusInfo.title }}</h1>\n <ax-data-table\n class=\"ax-h-[300px]\"\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"group.tasks\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'500px'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"reporter\" caption=\"Reporter\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"assignee\" caption=\"Assignee\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n\n @for (column of columns(); track column) {\n <axp-widget-column-renderer\n [node]=\"column.widget\"\n [caption]=\"(column.title | translate | async)!\"\n ></axp-widget-column-renderer>\n }\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n </ax-data-table>\n}\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "component", type: i1$1.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
581
583
|
}
|
|
582
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
584
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, decorators: [{
|
|
583
585
|
type: Component,
|
|
584
|
-
args: [{ selector: 'axm-task-board-
|
|
586
|
+
args: [{ selector: 'axm-task-board-status-grouped-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPLayoutBuilderModule], template: "@for (group of groupedTasks(); track group) {\n <h1 class=\"ax-text-xl ax-font-bold\">{{ group.statusInfo.title }}</h1>\n <ax-data-table\n class=\"ax-h-[300px]\"\n [fetchDataMode]=\"'manual'\"\n [dataSource]=\"group.tasks\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <ax-text-column dataField=\"title\" caption=\"title\" [width]=\"'350px'\"></ax-text-column>\n <ax-text-column dataField=\"description\" caption=\"description\" [width]=\"'500px'\"></ax-text-column>\n <ax-text-column dataField=\"startDate\" caption=\"Start Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"endDate\" caption=\"Due Date\" [width]=\"'150px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"reporter\" caption=\"Reporter\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"assignee\" caption=\"Assignee\" [width]=\"'125px'\"></ax-text-column>\n <ax-text-column dataField=\"priority\" caption=\"priority\" [width]=\"'125px'\"></ax-text-column>\n\n @for (column of columns(); track column) {\n <axp-widget-column-renderer\n [node]=\"column.widget\"\n [caption]=\"(column.title | translate | async)!\"\n ></axp-widget-column-renderer>\n }\n\n <ax-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n (onItemClick)=\"onActionClickHandler($event)\"\n [items]=\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\"\n ></ax-command-column>\n </ax-data-table>\n}\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"] }]
|
|
585
587
|
}] });
|
|
586
588
|
|
|
587
589
|
class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
@@ -631,7 +633,6 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
631
633
|
case 'agenda':
|
|
632
634
|
case 'kanban':
|
|
633
635
|
case 'timeline-day':
|
|
634
|
-
case 'time-grouped-grid':
|
|
635
636
|
case 'timeline-multi-day':
|
|
636
637
|
case 'status-grouped-grid':
|
|
637
638
|
return 'Today';
|
|
@@ -645,7 +646,6 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
645
646
|
this.timeText = computed(() => {
|
|
646
647
|
if (this.vm.currentViewMode() === 'grid' ||
|
|
647
648
|
this.vm.currentViewMode() === 'kanban' ||
|
|
648
|
-
this.vm.currentViewMode() === 'time-grouped-grid' ||
|
|
649
649
|
this.vm.currentViewMode() === 'status-grouped-grid') {
|
|
650
650
|
const start = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
|
|
651
651
|
const end = start.add('day', this.vm.daysCount() - 1);
|
|
@@ -658,7 +658,6 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
658
658
|
this.calendarDepth = computed(() => {
|
|
659
659
|
if (this.vm.currentViewMode() === 'grid' ||
|
|
660
660
|
this.vm.currentViewMode() === 'kanban' ||
|
|
661
|
-
this.vm.currentViewMode() === 'time-grouped-grid' ||
|
|
662
661
|
this.vm.currentViewMode() === 'status-grouped-grid') {
|
|
663
662
|
return 'day';
|
|
664
663
|
}
|
|
@@ -667,11 +666,9 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
667
666
|
this.selectedViewMode = computed(() => {
|
|
668
667
|
const currentMode = this.vm.currentViewMode();
|
|
669
668
|
for (const category of this.menuItems()) {
|
|
670
|
-
// Check if it's a top-level item like 'kanban'
|
|
671
669
|
if (category.key === currentMode) {
|
|
672
670
|
return { key: category.key, text: category.text, icon: category.icon };
|
|
673
671
|
}
|
|
674
|
-
// Check if it's in the children
|
|
675
672
|
if (category.children) {
|
|
676
673
|
const foundChild = category.children.find((child) => child.key === currentMode);
|
|
677
674
|
if (foundChild) {
|
|
@@ -689,12 +686,14 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
689
686
|
const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;
|
|
690
687
|
let from = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
|
|
691
688
|
let end;
|
|
692
|
-
|
|
689
|
+
const currentView = this.vm.currentViewMode();
|
|
690
|
+
if (currentView === 'kanban' ||
|
|
691
|
+
currentView === 'grid' ||
|
|
692
|
+
currentView === 'status-grouped-grid' ||
|
|
693
|
+
currentView === 'agenda') {
|
|
693
694
|
end = from.add('day', this.vm.daysCount() - 1);
|
|
694
695
|
}
|
|
695
|
-
else if (
|
|
696
|
-
this.vm.currentViewMode() === 'time-grouped-grid' ||
|
|
697
|
-
this.vm.currentViewMode() === 'status-grouped-grid') {
|
|
696
|
+
else if (currentView === 'month' || currentView === 'timeline-month') {
|
|
698
697
|
from = from.startOf('month');
|
|
699
698
|
end = from.endOf('month');
|
|
700
699
|
}
|
|
@@ -706,24 +705,32 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
706
705
|
range: { from: from.date, end: end.date },
|
|
707
706
|
};
|
|
708
707
|
}, ...(ngDevMode ? [{ debugName: "filter" }] : []));
|
|
709
|
-
this.resolvedTasks = signal([], ...(ngDevMode ? [{ debugName: "resolvedTasks" }] : []));
|
|
710
|
-
this.eff = effect(async () => {
|
|
711
|
-
this.resolvedTasks.set(await this.dataSource(this.filter()));
|
|
712
|
-
}, ...(ngDevMode ? [{ debugName: "eff" }] : []));
|
|
713
708
|
this.contextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: "contextMenu" }] : []));
|
|
714
|
-
this.
|
|
709
|
+
this.schedulerDataSource = (filter) => {
|
|
710
|
+
const taskTypeProvider = this.vm.selectedTaskType();
|
|
711
|
+
const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;
|
|
712
|
+
const finalFilter = { ...this.filter(), ...filter, types: types };
|
|
713
|
+
return this.taskBoardService.getTasks(finalFilter).then((result) => result.items);
|
|
714
|
+
};
|
|
715
|
+
this.gridDataSource = (filter) => {
|
|
715
716
|
const taskTypeProvider = this.vm.selectedTaskType();
|
|
716
717
|
const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;
|
|
717
|
-
|
|
718
|
+
const finalFilter = { ...this.filter(), ...filter, types: types };
|
|
719
|
+
console.log(this.taskBoardService.getTasks(finalFilter));
|
|
720
|
+
return this.taskBoardService.getTasks(finalFilter);
|
|
718
721
|
};
|
|
719
|
-
this.
|
|
720
|
-
|
|
721
|
-
|
|
722
|
+
this.resolvedTasks = signal([], ...(ngDevMode ? [{ debugName: "resolvedTasks" }] : []));
|
|
723
|
+
this.eff = effect(async () => {
|
|
724
|
+
const viewMode = this.vm.currentViewMode();
|
|
725
|
+
if (viewMode === 'kanban') {
|
|
726
|
+
const result = await this.taskBoardService.getTasks(this.filter());
|
|
727
|
+
this.resolvedTasks.set(result.items);
|
|
728
|
+
}
|
|
729
|
+
}, ...(ngDevMode ? [{ debugName: "eff" }] : []));
|
|
722
730
|
this.rangeBasedViews = [
|
|
731
|
+
'grid',
|
|
723
732
|
'kanban',
|
|
724
733
|
'agenda',
|
|
725
|
-
'grid',
|
|
726
|
-
'time-grouped-grid',
|
|
727
734
|
'status-grouped-grid',
|
|
728
735
|
'timeline-multi-day',
|
|
729
736
|
];
|
|
@@ -789,8 +796,18 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
789
796
|
schedulerComponentChanged(component) {
|
|
790
797
|
this.schedulerComponent.set(component);
|
|
791
798
|
}
|
|
792
|
-
handleContextMenuOnOpening(event) {
|
|
793
|
-
|
|
799
|
+
async handleContextMenuOnOpening(event) {
|
|
800
|
+
const currentTask = this.currentTask();
|
|
801
|
+
if (!currentTask)
|
|
802
|
+
return;
|
|
803
|
+
const providerName = currentTask.provider;
|
|
804
|
+
if (!providerName)
|
|
805
|
+
return;
|
|
806
|
+
const provider = this.taskBoardService.getProvider(providerName);
|
|
807
|
+
if (!provider)
|
|
808
|
+
return;
|
|
809
|
+
const actions = await provider.getActions(currentTask);
|
|
810
|
+
for (const item of actions) {
|
|
794
811
|
event.items.push({
|
|
795
812
|
text: item.title,
|
|
796
813
|
icon: item.icon,
|
|
@@ -822,7 +839,7 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
822
839
|
this.schedulerComponent()?.refresh();
|
|
823
840
|
}
|
|
824
841
|
handleContextMenuItemClick(event) {
|
|
825
|
-
this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.
|
|
842
|
+
this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');
|
|
826
843
|
}
|
|
827
844
|
changeDate(forward) {
|
|
828
845
|
const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
|
|
@@ -834,16 +851,15 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
834
851
|
case 'week':
|
|
835
852
|
this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);
|
|
836
853
|
break;
|
|
854
|
+
case 'grid':
|
|
837
855
|
case 'agenda':
|
|
838
856
|
case 'kanban':
|
|
839
857
|
case 'timeline-multi-day':
|
|
840
|
-
|
|
858
|
+
case 'status-grouped-grid':
|
|
859
|
+
this.vm.setCurrentDate(date.add('day', forward ? this.vm.daysCount() : -this.vm.daysCount()).date);
|
|
841
860
|
break;
|
|
842
|
-
case 'grid':
|
|
843
861
|
case 'month':
|
|
844
862
|
case 'timeline-month':
|
|
845
|
-
case 'time-grouped-grid':
|
|
846
|
-
case 'status-grouped-grid':
|
|
847
863
|
this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);
|
|
848
864
|
break;
|
|
849
865
|
}
|
|
@@ -929,7 +945,6 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
929
945
|
}
|
|
930
946
|
}
|
|
931
947
|
else if (!this.vm.currentViewMode()) {
|
|
932
|
-
// Set a default view if none is provided or valid
|
|
933
948
|
this.vm.setViewMode('day');
|
|
934
949
|
this.vm.setCategory('calendar');
|
|
935
950
|
}
|
|
@@ -937,19 +952,19 @@ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
|
|
|
937
952
|
setActiveTask(task) {
|
|
938
953
|
this.vm.selectTask(task);
|
|
939
954
|
}
|
|
940
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
941
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
956
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AXMTaskBoardPage, isStandalone: true, selector: "ng-component", providers: [
|
|
942
957
|
{
|
|
943
958
|
provide: AXPPageLayoutBase,
|
|
944
959
|
useExisting: AXMTaskBoardPage,
|
|
945
960
|
},
|
|
946
|
-
], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true, isSignal: true }, { propertyName: "contextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix class=\"sm:ax-flex-row ax-flex-col ax-items-start\">\n <ax-button [text]=\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\">\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #dropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\n >\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n\n <div class=\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover [adaptivityEnabled]=\"true\">\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='
|
|
961
|
+
], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true, isSignal: true }, { propertyName: "contextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix class=\"sm:ax-flex-row ax-flex-col ax-items-start\">\n <ax-button [text]=\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\">\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #dropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\n >\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n\n <div class=\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover [adaptivityEnabled]=\"true\">\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='status-grouped-grid') {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(null)\"\n [text]=\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light fa-tasks\"></ax-icon></ax-prefix>\n </ax-button-item>\n } @for(item of vm.taskTypes(); track item.name) {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(item)\"\n [text]=\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon></ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-flex ax-flex-row ax-gap-2\">\n @switch(vm.currentViewMode()) { @case('kanban') {\n <axm-task-board-kanban-view\n class=\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\"\n [tasks]=\"resolvedTasks()\"\n (onTaskClick)=\"setActiveTask($event)\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-kanban-view>\n } @case('grid') {\n <axm-task-board-grid-view\n class=\"ax-h-full ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n (onTaskClick)=\"setActiveTask($event)\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-grid-view>\n } @case('status-grouped-grid') {\n <axm-task-board-status-grouped-grid-view\n class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-status-grouped-grid-view>\n } @default {\n <axm-task-board-calendar-view\n class=\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\"\n [dataSource]=\"schedulerDataSource\"\n [startingDate]=\"vm.currentDate()\"\n (onTaskClick)=\"setActiveTask($event)\"\n [selectedView]=\"vm.currentViewMode()\"\n (onActionClick)=\"handleContextMenu($event)\"\n (onTaskRightClick)=\"handleContextMenu($event)\"\n (component)=\"schedulerComponentChanged($event)\"\n (onMonthSlotDblClicked)=\"handleMonthSlotDblClicked($event)\"\n ></axm-task-board-calendar-view>\n } }\n <ax-context-menu\n #rootContextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
947
962
|
//
|
|
948
963
|
AXMenuModule }, { kind: "component", type: i2.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }, { kind: "component", type: i2.AXMenuComponent, selector: "ax-menu", inputs: ["orientation", "openOn", "closeOn", "items", "hasArrow"], outputs: ["onItemClick"] }, { kind: "component", type: i2.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.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: i3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.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: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type:
|
|
949
964
|
//
|
|
950
|
-
AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXMTaskBoardCalendarViewComponent, selector: "axm-task-board-calendar-view", inputs: ["startingDate", "selectedView", "dataSource"], outputs: ["onTaskClick", "onTaskChanged", "onMonthSlotDblClicked", "onActionClick", "component", "onTaskRightClick", "onRangeChanged"] }, { kind: "component", type: AXMTaskBoardKanbanViewComponent, selector: "axm-task-board-kanban-view", inputs: ["tasks"
|
|
965
|
+
AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXMTaskBoardCalendarViewComponent, selector: "axm-task-board-calendar-view", inputs: ["startingDate", "selectedView", "dataSource"], outputs: ["onTaskClick", "onTaskChanged", "onMonthSlotDblClicked", "onActionClick", "component", "onTaskRightClick", "onRangeChanged"] }, { kind: "component", type: AXMTaskBoardKanbanViewComponent, selector: "axm-task-board-kanban-view", inputs: ["tasks"], outputs: ["tasksChange", "onTaskClick", "onTaskChanged", "component", "onActionClick"] }, { kind: "component", type: AXMTaskBoardGridViewComponent, selector: "axm-task-board-grid-view", inputs: ["dataSource"], outputs: ["onTaskClick", "onActionClick"] }, { kind: "component", type: AXMTaskBoardStatusGroupedGridViewComponent, selector: "axm-task-board-status-grouped-grid-view", inputs: ["provider", "dataSource"], outputs: ["onActionClick"] }, { kind: "component", type: AXMTaskBoardDetailPanel, selector: "axm-task-board-detail-panel" }, { kind: "component", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXCalendarComponent, selector: "ax-calendar", inputs: ["rtl", "readonly", "value", "name", "disabled", "depth", "activeView", "minValue", "maxValue", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation", "count", "id"], outputs: ["onOptionChanged", "valueChange", "onValueChanged", "minValueChange", "maxValueChange", "onBlur", "onFocus", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick", "countChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
951
966
|
}
|
|
952
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
967
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AXMTaskBoardPage, decorators: [{
|
|
953
968
|
type: Component,
|
|
954
969
|
args: [{ imports: [
|
|
955
970
|
FormsModule,
|
|
@@ -970,7 +985,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
970
985
|
AXMTaskBoardCalendarViewComponent,
|
|
971
986
|
AXMTaskBoardKanbanViewComponent,
|
|
972
987
|
AXMTaskBoardGridViewComponent,
|
|
973
|
-
AXMTaskBoardTimeGroupedGridViewComponent,
|
|
974
988
|
AXMTaskBoardStatusGroupedGridViewComponent,
|
|
975
989
|
AXMTaskBoardDetailPanel,
|
|
976
990
|
AXDropdownPanelComponent,
|
|
@@ -981,8 +995,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
981
995
|
provide: AXPPageLayoutBase,
|
|
982
996
|
useExisting: AXMTaskBoardPage,
|
|
983
997
|
},
|
|
984
|
-
], template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix class=\"sm:ax-flex-row ax-flex-col ax-items-start\">\n <ax-button [text]=\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\">\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #dropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\n >\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n\n <div class=\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover [adaptivityEnabled]=\"true\">\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='
|
|
998
|
+
], template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix class=\"sm:ax-flex-row ax-flex-col ax-items-start\">\n <ax-button [text]=\"(t('task-board.view.' + selectedViewMode().text, { scope: 'workflow-management' }) | async)!\">\n <ax-prefix><ax-icon [icon]=\"selectedViewMode().icon\"></ax-icon></ax-prefix>\n <ax-dropdown-panel #dropdownPanel>\n <ax-menu [orientation]=\"'vertical'\" class=\"ax-menu-container\">\n @for (category of menuItems(); track category.key) {\n <ng-container>\n @if (category.children && category.children.length > 0) {\n <ax-menu-item>\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n @for (child of category.children; track child.key) {\n <ax-menu-item (onClick)=\"handleViewChange(child.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"child.icon\"></ax-icon>\n </ax-prefix>\n <ax-text\n >{{ (t('task-board.view.' + child.text, { scope: 'workflow-management' }) | async)! }}</ax-text\n >\n </ax-menu-item>\n }\n </ax-menu-item>\n } @else {\n <ax-menu-item (onClick)=\"handleViewChange(category.key,dropdownPanel)\">\n <ax-prefix>\n <ax-icon [icon]=\"category.icon\"></ax-icon>\n </ax-prefix>\n <ax-text>{{ (t('task-board.' + category.text, { scope: 'workflow-management' }) | async)! }}</ax-text>\n </ax-menu-item>\n }\n </ng-container>\n }\n </ax-menu>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n\n <div class=\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover [adaptivityEnabled]=\"true\">\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [depth]=\"calendarDepth()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n (onSlotClick)=\"handleCalendarSlotClick($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban' && vm.currentViewMode()!=='status-grouped-grid') {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(null)\"\n [text]=\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light fa-tasks\"></ax-icon></ax-prefix>\n </ax-button-item>\n } @for(item of vm.taskTypes(); track item.name) {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(item)\"\n [text]=\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon></ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-flex ax-flex-row ax-gap-2\">\n @switch(vm.currentViewMode()) { @case('kanban') {\n <axm-task-board-kanban-view\n class=\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\"\n [tasks]=\"resolvedTasks()\"\n (onTaskClick)=\"setActiveTask($event)\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-kanban-view>\n } @case('grid') {\n <axm-task-board-grid-view\n class=\"ax-h-full ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n (onTaskClick)=\"setActiveTask($event)\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-grid-view>\n } @case('status-grouped-grid') {\n <axm-task-board-status-grouped-grid-view\n class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\"\n [dataSource]=\"gridDataSource\"\n (onActionClick)=\"handleContextMenu($event)\"\n ></axm-task-board-status-grouped-grid-view>\n } @default {\n <axm-task-board-calendar-view\n class=\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\"\n [dataSource]=\"schedulerDataSource\"\n [startingDate]=\"vm.currentDate()\"\n (onTaskClick)=\"setActiveTask($event)\"\n [selectedView]=\"vm.currentViewMode()\"\n (onActionClick)=\"handleContextMenu($event)\"\n (onTaskRightClick)=\"handleContextMenu($event)\"\n (component)=\"schedulerComponentChanged($event)\"\n (onMonthSlotDblClicked)=\"handleMonthSlotDblClicked($event)\"\n ></axm-task-board-calendar-view>\n } }\n <ax-context-menu\n #rootContextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\n"] }]
|
|
985
999
|
}] });
|
|
986
1000
|
|
|
987
1001
|
export { AXMTaskBoardPage };
|
|
988
|
-
//# sourceMappingURL=acorex-modules-workflow-management-task-board.page-
|
|
1002
|
+
//# sourceMappingURL=acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs.map
|