@acorex/modules 20.2.0-next.4 → 20.2.0
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/contact-management/index.d.ts +21 -163
- package/content-management/index.d.ts +59 -2
- package/conversation/index.d.ts +77 -68
- package/dashboard-management/index.d.ts +7 -4
- package/data-management/index.d.ts +66 -10
- package/document-management/index.d.ts +51 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs → acorex-modules-application-management-module-designer.component-BitSGI0F.mjs} +7 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CsZjqUAj.mjs.map → acorex-modules-application-management-module-designer.component-BitSGI0F.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-tDyQQDnk.mjs → acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs} +47 -47
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-tDyQQDnk.mjs.map → acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs → acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-app-chooser.component-yu1DJZKN.mjs.map → acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-blank.layout-ZjroQcdq.mjs → acorex-modules-auth-blank.layout-D0KDl_qd.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-blank.layout-ZjroQcdq.mjs.map → acorex-modules-auth-blank.layout-D0KDl_qd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-D1aa1F6G.mjs → acorex-modules-auth-login.module-BHRC357P.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-login.module-D1aa1F6G.mjs.map → acorex-modules-auth-login.module-BHRC357P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CGQmSlGQ.mjs → acorex-modules-auth-master.layout-DAYMmpBW.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-master.layout-CGQmSlGQ.mjs.map → acorex-modules-auth-master.layout-DAYMmpBW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs → acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-m9YiJ4e9.mjs.map → acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Cb3FJ1DZ.mjs → acorex-modules-auth-password.component-BJpxtJYh.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-Cb3FJ1DZ.mjs.map → acorex-modules-auth-password.component-BJpxtJYh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CiWdX7f_.mjs → acorex-modules-auth-password.component-NAY46d_2.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-CiWdX7f_.mjs.map → acorex-modules-auth-password.component-NAY46d_2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-pae8qpX9.mjs → acorex-modules-auth-routes-hvqL2dCH.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-pae8qpX9.mjs.map → acorex-modules-auth-routes-hvqL2dCH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs → acorex-modules-auth-tenant-chooser.component-Cy94co3S.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Bk0l3XoV.mjs.map → acorex-modules-auth-tenant-chooser.component-Cy94co3S.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs → acorex-modules-auth-two-factor-code.component-CAbntIoR.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-DDEIajiI.mjs.map → acorex-modules-auth-two-factor-code.component-CAbntIoR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DtcoHPH4.mjs → acorex-modules-auth-two-factor.module-kPuT8yUw.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor.module-DtcoHPH4.mjs.map → acorex-modules-auth-two-factor.module-kPuT8yUw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sI6P2joA.mjs → acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sI6P2joA.mjs.map → acorex-modules-auth-user-sessions.component-Chx_jTSJ.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-D7Y4T3Rp.mjs → acorex-modules-common-search-popup.component-39U0-TIj.mjs} +4 -4
- package/fesm2022/{acorex-modules-common-search-popup.component-D7Y4T3Rp.mjs.map → acorex-modules-common-search-popup.component-39U0-TIj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs → acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs} +4 -4
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-ceEtE6qB.mjs.map → acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +72 -49
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs +863 -0
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs → acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs} +2 -35
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs → acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-DjOm8qQb.mjs.map → acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs → acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-BQyjzPR8.mjs.map → acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs.map} +1 -1
- package/fesm2022/acorex-modules-contact-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +823 -14
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +161 -99
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +246 -142
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +516 -50
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs → acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs} +1132 -191
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs → acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-NaY7Mn95.mjs.map → acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs → acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-epxEuBU5.mjs.map → acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CMI2Eokj.mjs → acorex-modules-document-management-details-view.component-v1VroVv-.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-details-view.component-CMI2Eokj.mjs.map → acorex-modules-document-management-details-view.component-v1VroVv-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs +123 -0
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs +105 -0
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs → acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DBKgwm70.mjs.map → acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DoGdTL3n.mjs → acorex-modules-document-management-drive.component-D5OwpnAP.mjs} +40 -17
- package/fesm2022/acorex-modules-document-management-drive.component-D5OwpnAP.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs → acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BRsTSoln.mjs.map → acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs → acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CpYeYyR5.mjs.map → acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs → acorex-modules-document-management-link-dialog.component-DKOod11R.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-ZteosW8O.mjs.map → acorex-modules-document-management-link-dialog.component-DKOod11R.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-C4VFnACA.mjs → acorex-modules-document-management-list-view.component-RaW67V7O.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-list-view.component-C4VFnACA.mjs.map → acorex-modules-document-management-list-view.component-RaW67V7O.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs → acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs → acorex-modules-document-management-meta-selector-widget-column.component-CBAE1KZM.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-OXeS0kW8.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-CBAE1KZM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-B9Eqa6j0.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-BdVSGb3M.mjs.map → acorex-modules-document-management-meta-selector-widget-designer.component-B9Eqa6j0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs → acorex-modules-document-management-meta-selector-widget-view.component-BPBqDMwP.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-B-Vos30P.mjs.map → acorex-modules-document-management-meta-selector-widget-view.component-BPBqDMwP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs → acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Bc7rbWwN.mjs.map → acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs → acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DWUVMrVt.mjs.map → acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs → acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CkyuEAwV.mjs.map → acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs → acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DXjcTOny.mjs.map → acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs → acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CCirsfoz.mjs.map → acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs → acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-58KZSQC4.mjs.map → acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.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-DxSYInAR.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs} +56 -56
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-DxSYInAR.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs → acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DeCfvNqF.mjs.map → acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs → acorex-modules-form-template-management-designer.page-CarisHH5.mjs} +4 -4
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BsjFGFOD.mjs.map → acorex-modules-form-template-management-designer.page-CarisHH5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs → acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CsjgxSgC.mjs.map → acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs → acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-_BIGyRt8.mjs.map → acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs → acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BCg756yD.mjs.map → acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs → acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-DkqRsXMq.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-CQm29n5v.mjs → acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-CQm29n5v.mjs.map → acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs → acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs} +5 -5
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DW2Z5EcJ.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/acorex-modules-identifier-management.mjs +512 -0
- package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -0
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs → acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs} +36 -36
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-a_wcGVPh.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs → acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs} +5 -5
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CsahsE-E.mjs.map → acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/{acorex-modules-locale-management-settings.provider-PKnqTses.mjs → acorex-modules-locale-management-settings.provider-ClVIqYIL.mjs} +2 -2
- package/fesm2022/{acorex-modules-locale-management-settings.provider-PKnqTses.mjs.map → acorex-modules-locale-management-settings.provider-ClVIqYIL.mjs.map} +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +1974 -1
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +56 -43
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +198 -10
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +158 -100
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs → acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CzIIXsRJ.mjs.map → acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs → acorex-modules-organization-management-org-chart-configuration.page-kVFv0xZ0.mjs} +5 -5
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-XXAEpYNo.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-kVFv0xZ0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs → acorex-modules-organization-management-org-chart-configuration.service-7I15ZQGa.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CIveMQUH.mjs.map → acorex-modules-organization-management-org-chart-configuration.service-7I15ZQGa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs} +12 -12
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-UqJ1VOJ-.mjs.map → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +265 -122
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs +714 -0
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs → acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs} +238 -136
- package/fesm2022/acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs +470 -0
- package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs → acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs} +174 -218
- package/fesm2022/acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs → acorex-modules-party-management-party-role.entity-C5BeakjX.mjs} +157 -162
- package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs +538 -0
- package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-permission-definition.provider-DwMPgZkB.mjs +59 -0
- package/fesm2022/acorex-modules-party-management-permission-definition.provider-DwMPgZkB.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +2 -0
- package/fesm2022/acorex-modules-party-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs +93 -0
- package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs → acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs} +4 -4
- package/fesm2022/{acorex-modules-platform-management-list-version.component-wqhq6ek4.mjs.map → acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +483 -2129
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +43 -43
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs → acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs} +4 -4
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CFNtnshF.mjs.map → acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs → acorex-modules-report-management-report-runner-root-page.component-BIUto_c9.mjs} +8 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BIUto_c9.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +279 -35
- 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 +60 -60
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs → acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BhF5x-8D.mjs.map → acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs → acorex-modules-settings-management-setting-view.component-D5pKY0Ag.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-Do_gNJ2t.mjs.map → acorex-modules-settings-management-setting-view.component-D5pKY0Ag.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +196 -153
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- 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 +44 -44
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs → acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs} +13 -13
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DC7jdoqZ.mjs.map → acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs → acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs} +20 -20
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-Bv2GAPaN.mjs.map → acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/identifier-management/README.md +269 -0
- package/identifier-management/index.d.ts +271 -0
- package/locale-management/index.d.ts +22 -1
- package/location-management/index.d.ts +4 -1
- package/notification-management/index.d.ts +9 -5
- package/package.json +13 -5
- package/party-management/README.md +177 -0
- package/party-management/index.d.ts +86 -0
- package/platform-management/index.d.ts +2 -140
- package/report-management/index.d.ts +481 -35
- package/task-management/index.d.ts +4 -4
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs +0 -2600
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-Co0tt3cj.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-address-type.entity-DQZwgXki.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs +0 -781
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-CFfRywsB.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-Ci93_mb9.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-CqdXpqLN.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-BsF9p0GK.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DXGX-riG.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-DoGdTL3n.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D5Csi3A3.mjs.map +0 -1
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs +0 -1975
- package/fesm2022/acorex-modules-locale-management-acorex-modules-locale-management-CfaOC6U5.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CbfJ_7Da.mjs.map +0 -1
package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs
ADDED
|
@@ -0,0 +1,863 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injector, Injectable, NgModule, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i5 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
|
|
6
|
+
import { AXPSearchCommandProvider, createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
|
|
7
|
+
import { AXPEntityService, AXMEntityCrudServiceImpl, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
|
8
|
+
import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
|
|
9
|
+
import * as i1 from '@angular/router';
|
|
10
|
+
import { RouterModule } from '@angular/router';
|
|
11
|
+
import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
|
|
12
|
+
import * as i4 from '@acorex/core/translation';
|
|
13
|
+
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
14
|
+
import { AXPSystemActionType } from '@acorex/platform/core';
|
|
15
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
16
|
+
import * as i1$1 from '@acorex/components/button';
|
|
17
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
18
|
+
import * as i2 from '@acorex/components/decorators';
|
|
19
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
20
|
+
import * as i3 from '@acorex/components/loading';
|
|
21
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
22
|
+
import { AXFormatModule } from '@acorex/core/format';
|
|
23
|
+
import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
|
|
24
|
+
import { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
|
|
25
|
+
|
|
26
|
+
const config = {
|
|
27
|
+
i18n: 'contact-management',
|
|
28
|
+
};
|
|
29
|
+
const RootConfig = {
|
|
30
|
+
config,
|
|
31
|
+
module: {
|
|
32
|
+
name: 'ContactManagement',
|
|
33
|
+
title: '@contact-management:module-name',
|
|
34
|
+
icon: 'fa-light fa-address-book',
|
|
35
|
+
},
|
|
36
|
+
entities: {
|
|
37
|
+
contactMethodType: {
|
|
38
|
+
name: 'ContactMethodType',
|
|
39
|
+
title: '@contact-management:contact-method-type.individual-title',
|
|
40
|
+
titlePlural: '@contact-management:contact-method-type.plural-title',
|
|
41
|
+
icon: 'fa-light fa-list',
|
|
42
|
+
},
|
|
43
|
+
contactMethod: {
|
|
44
|
+
name: 'ContactMethod',
|
|
45
|
+
title: '@contact-management:contact-method.individual-title',
|
|
46
|
+
titlePlural: '@contact-management:contact-method.plural-title',
|
|
47
|
+
icon: 'fa-light fa-phone',
|
|
48
|
+
},
|
|
49
|
+
emergencyContactCategory: {
|
|
50
|
+
name: 'EmergencyContactCategory',
|
|
51
|
+
title: '@contact-management:emergency-contact-category.individual-title',
|
|
52
|
+
titlePlural: '@contact-management:emergency-contact-category.plural-title',
|
|
53
|
+
icon: 'fa-light fa-shield-halved',
|
|
54
|
+
},
|
|
55
|
+
emergencyContact: {
|
|
56
|
+
name: 'EmergencyContact',
|
|
57
|
+
title: '@contact-management:emergency-contact.individual-title',
|
|
58
|
+
titlePlural: '@contact-management:emergency-contact.plural-title',
|
|
59
|
+
icon: 'fa-light fa-siren',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
class AXMContactManagementEntityProvider {
|
|
65
|
+
constructor() {
|
|
66
|
+
this.injector = inject(Injector);
|
|
67
|
+
}
|
|
68
|
+
preload() {
|
|
69
|
+
const module = RootConfig.module.name;
|
|
70
|
+
return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
|
|
71
|
+
module: module,
|
|
72
|
+
entity: entity.name,
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
async get(moduleName, entityName) {
|
|
76
|
+
if (moduleName == RootConfig.module.name) {
|
|
77
|
+
switch (entityName) {
|
|
78
|
+
case RootConfig.entities.contactMethodType.name:
|
|
79
|
+
return (await Promise.resolve().then(function () { return contactMethodType_entity; })).contactMethodTypeFactory(this.injector);
|
|
80
|
+
case RootConfig.entities.contactMethod.name:
|
|
81
|
+
return (await import('./acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs')).contactMethodFactory(this.injector);
|
|
82
|
+
case RootConfig.entities.emergencyContactCategory.name:
|
|
83
|
+
return (await import('./acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs')).emergencyContactCategoryFactory(this.injector);
|
|
84
|
+
case RootConfig.entities.emergencyContact.name:
|
|
85
|
+
return (await import('./acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs')).emergencyContactFactory(this.injector);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
91
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider }); }
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, decorators: [{
|
|
94
|
+
type: Injectable
|
|
95
|
+
}] });
|
|
96
|
+
|
|
97
|
+
class AXMContactManagementMenuProvider {
|
|
98
|
+
constructor() {
|
|
99
|
+
this.entityService = inject(AXPEntityService);
|
|
100
|
+
this.sessionService = inject(AXPSessionService);
|
|
101
|
+
}
|
|
102
|
+
async provide(context) {
|
|
103
|
+
const module = RootConfig.module;
|
|
104
|
+
context.addItems([
|
|
105
|
+
{
|
|
106
|
+
priority: 9002,
|
|
107
|
+
text: '@contact-management:root-menu',
|
|
108
|
+
icon: module.icon,
|
|
109
|
+
children: [
|
|
110
|
+
{
|
|
111
|
+
text: '@contact-management:contact-method-type.plural-title',
|
|
112
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.contactMethodType.name),
|
|
113
|
+
icon: RootConfig.entities.contactMethodType.icon,
|
|
114
|
+
priority: 5,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
text: ``,
|
|
118
|
+
type: 'break',
|
|
119
|
+
priority: 10,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
text: '@contact-management:emergency-contact-category.plural-title',
|
|
123
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.emergencyContactCategory.name),
|
|
124
|
+
icon: RootConfig.entities.emergencyContactCategory.icon,
|
|
125
|
+
priority: 11,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
text: '@contact-management:emergency-contact.plural-title',
|
|
129
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.emergencyContact.name),
|
|
130
|
+
icon: RootConfig.entities.emergencyContact.icon,
|
|
131
|
+
priority: 12,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
text: '@contact-management:emergency-contact.page.title',
|
|
135
|
+
path: `${this.sessionService.application?.name}/emergency-contacts`,
|
|
136
|
+
icon: 'fa-light fa-phone-rotary',
|
|
137
|
+
priority: 13,
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
class AXMContactManagementSearchCommandProvider extends AXPSearchCommandProvider {
|
|
146
|
+
constructor() {
|
|
147
|
+
super(...arguments);
|
|
148
|
+
this.commands = [
|
|
149
|
+
// Commands will be added here following the correct pattern
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
class AXMContactMethodTypeService extends AXMEntityCrudServiceImpl {
|
|
155
|
+
}
|
|
156
|
+
class AXMContactMethodTypeServiceImpl extends AXMContactMethodTypeService {
|
|
157
|
+
constructor() {
|
|
158
|
+
super(`${RootConfig.module.name}.${RootConfig.entities.contactMethodType.name}`);
|
|
159
|
+
}
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeServiceImpl }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeServiceImpl, decorators: [{
|
|
164
|
+
type: Injectable
|
|
165
|
+
}], ctorParameters: () => [] });
|
|
166
|
+
|
|
167
|
+
async function contactMethodTypeFactory(injector) {
|
|
168
|
+
const dataService = injector.get(AXMContactMethodTypeService);
|
|
169
|
+
const i18n = RootConfig.config.i18n;
|
|
170
|
+
const entityDef = {
|
|
171
|
+
module: RootConfig.module.name,
|
|
172
|
+
name: RootConfig.entities.contactMethodType.name,
|
|
173
|
+
source: '',
|
|
174
|
+
title: RootConfig.entities.contactMethodType.title,
|
|
175
|
+
formats: {
|
|
176
|
+
individual: RootConfig.entities.contactMethodType.title,
|
|
177
|
+
plural: RootConfig.entities.contactMethodType.titlePlural,
|
|
178
|
+
searchResult: {
|
|
179
|
+
title: '{{ title }}',
|
|
180
|
+
description: RootConfig.module.title,
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
groups: [
|
|
184
|
+
{
|
|
185
|
+
id: 'basic-info',
|
|
186
|
+
title: '@general:terms.basic-info',
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: 'validation',
|
|
190
|
+
title: '@general:terms.validation',
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
id: 'settings',
|
|
194
|
+
title: '@general:terms.settings',
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
properties: [
|
|
198
|
+
{
|
|
199
|
+
name: 'title',
|
|
200
|
+
title: '@general:terms.title',
|
|
201
|
+
groupId: 'basic-info',
|
|
202
|
+
options: {
|
|
203
|
+
sort: { enabled: true },
|
|
204
|
+
filter: { advance: { enabled: true }, inline: { enabled: true } },
|
|
205
|
+
},
|
|
206
|
+
schema: {
|
|
207
|
+
dataType: 'string',
|
|
208
|
+
interface: { type: AXPWidgetsCatalog.text },
|
|
209
|
+
},
|
|
210
|
+
validations: [{ rule: 'required' }],
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: 'validationRegex',
|
|
214
|
+
title: '@general:terms.validation-regex',
|
|
215
|
+
groupId: 'validation',
|
|
216
|
+
options: {
|
|
217
|
+
sort: { enabled: false },
|
|
218
|
+
filter: { advance: { enabled: false }, inline: { enabled: false } },
|
|
219
|
+
},
|
|
220
|
+
schema: {
|
|
221
|
+
dataType: 'string',
|
|
222
|
+
interface: {
|
|
223
|
+
type: AXPWidgetsCatalog.text,
|
|
224
|
+
options: {
|
|
225
|
+
placeholder: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$'
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'placeholder',
|
|
232
|
+
title: '@general:terms.placeholder',
|
|
233
|
+
groupId: 'validation',
|
|
234
|
+
options: {
|
|
235
|
+
sort: { enabled: false },
|
|
236
|
+
filter: { advance: { enabled: false }, inline: { enabled: false } },
|
|
237
|
+
},
|
|
238
|
+
schema: {
|
|
239
|
+
dataType: 'string',
|
|
240
|
+
interface: {
|
|
241
|
+
type: AXPWidgetsCatalog.text,
|
|
242
|
+
options: {
|
|
243
|
+
placeholder: 'user@example.com'
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: 'isActive',
|
|
250
|
+
title: '@general:terms.status.options.active',
|
|
251
|
+
groupId: 'settings',
|
|
252
|
+
options: {
|
|
253
|
+
sort: { enabled: true },
|
|
254
|
+
filter: { advance: { enabled: true }, inline: { enabled: true } },
|
|
255
|
+
},
|
|
256
|
+
schema: {
|
|
257
|
+
dataType: 'boolean',
|
|
258
|
+
interface: { type: AXPWidgetsCatalog.toggle },
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
columns: [
|
|
263
|
+
{ name: 'title' },
|
|
264
|
+
{ name: 'validationRegex' },
|
|
265
|
+
{ name: 'placeholder' },
|
|
266
|
+
{ name: 'isActive' }
|
|
267
|
+
],
|
|
268
|
+
commands: {
|
|
269
|
+
create: {
|
|
270
|
+
execute: async (data) => {
|
|
271
|
+
const res = await dataService.insertOne(data);
|
|
272
|
+
return { id: res };
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
delete: {
|
|
276
|
+
execute: async (id) => {
|
|
277
|
+
return await dataService.deleteOne(id);
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
update: {
|
|
281
|
+
execute: async (data) => {
|
|
282
|
+
return await dataService.updateOne(data.id, data);
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
queries: {
|
|
287
|
+
byKey: {
|
|
288
|
+
execute: async (id) => {
|
|
289
|
+
return await dataService.getOne(id);
|
|
290
|
+
},
|
|
291
|
+
type: AXPEntityQueryType.Single,
|
|
292
|
+
},
|
|
293
|
+
list: {
|
|
294
|
+
execute: async (e) => {
|
|
295
|
+
return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
|
|
296
|
+
},
|
|
297
|
+
type: AXPEntityQueryType.List,
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
interfaces: {
|
|
301
|
+
master: {
|
|
302
|
+
create: {
|
|
303
|
+
sections: [
|
|
304
|
+
{ id: 'basic-info' },
|
|
305
|
+
{ id: 'validation' },
|
|
306
|
+
{ id: 'settings' }
|
|
307
|
+
],
|
|
308
|
+
properties: [
|
|
309
|
+
{ name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
|
|
310
|
+
{ name: 'validationRegex', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
|
|
311
|
+
{ name: 'placeholder', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
|
|
312
|
+
{ name: 'isActive', layout: { positions: { lg: { colSpan: 3, order: 4 } } } },
|
|
313
|
+
],
|
|
314
|
+
},
|
|
315
|
+
update: {
|
|
316
|
+
sections: [
|
|
317
|
+
{ id: 'basic-info' },
|
|
318
|
+
{ id: 'validation' },
|
|
319
|
+
{ id: 'settings' }
|
|
320
|
+
],
|
|
321
|
+
properties: [
|
|
322
|
+
{ name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
|
|
323
|
+
{ name: 'validationRegex', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
|
|
324
|
+
{ name: 'placeholder', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
|
|
325
|
+
{ name: 'isActive', layout: { positions: { lg: { colSpan: 3, order: 4 } } } },
|
|
326
|
+
],
|
|
327
|
+
},
|
|
328
|
+
single: {
|
|
329
|
+
title: '{{title}}',
|
|
330
|
+
sections: [
|
|
331
|
+
{ id: 'basic-info' },
|
|
332
|
+
{ id: 'validation' },
|
|
333
|
+
{ id: 'settings' }
|
|
334
|
+
],
|
|
335
|
+
properties: [
|
|
336
|
+
{ name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
|
|
337
|
+
{ name: 'validationRegex', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
|
|
338
|
+
{ name: 'placeholder', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
|
|
339
|
+
{ name: 'isActive', layout: { positions: { lg: { colSpan: 3, order: 4 } } } },
|
|
340
|
+
],
|
|
341
|
+
actions: [],
|
|
342
|
+
},
|
|
343
|
+
list: {
|
|
344
|
+
actions: [
|
|
345
|
+
{
|
|
346
|
+
title: '@general:actions.create.title',
|
|
347
|
+
command: 'create-entity',
|
|
348
|
+
priority: 'primary',
|
|
349
|
+
type: 'create',
|
|
350
|
+
scope: AXPEntityCommandScope.TypeLevel,
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
title: '@general:actions.delete-items.title',
|
|
354
|
+
command: 'delete-entity',
|
|
355
|
+
priority: 'primary',
|
|
356
|
+
type: 'delete',
|
|
357
|
+
scope: AXPEntityCommandScope.Selected,
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
title: '@general:actions.view.title',
|
|
361
|
+
command: 'open-entity',
|
|
362
|
+
priority: 'secondary',
|
|
363
|
+
type: 'view',
|
|
364
|
+
scope: AXPEntityCommandScope.Individual,
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
title: '@general:actions.delete.title',
|
|
368
|
+
command: 'delete-entity',
|
|
369
|
+
priority: 'secondary',
|
|
370
|
+
type: 'delete',
|
|
371
|
+
scope: AXPEntityCommandScope.Individual,
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
},
|
|
378
|
+
};
|
|
379
|
+
return entityDef;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
var contactMethodType_entity = /*#__PURE__*/Object.freeze({
|
|
383
|
+
__proto__: null,
|
|
384
|
+
contactMethodTypeFactory: contactMethodTypeFactory
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
class AXMContactMethodService extends AXMEntityCrudServiceImpl {
|
|
388
|
+
}
|
|
389
|
+
class AXMContactMethodServiceImpl extends AXMContactMethodService {
|
|
390
|
+
constructor() {
|
|
391
|
+
super(`${RootConfig.module.name}.${RootConfig.entities.contactMethod.name}`);
|
|
392
|
+
}
|
|
393
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
394
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodServiceImpl }); }
|
|
395
|
+
}
|
|
396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodServiceImpl, decorators: [{
|
|
397
|
+
type: Injectable
|
|
398
|
+
}], ctorParameters: () => [] });
|
|
399
|
+
|
|
400
|
+
// Note: contact-method.entity.ts will reference contactMethodType lookup
|
|
401
|
+
|
|
402
|
+
class AXMEmergencyContactCategoryService extends AXMEntityCrudServiceImpl {
|
|
403
|
+
}
|
|
404
|
+
class AXMEmergencyContactCategoryServiceImpl extends AXMEmergencyContactCategoryService {
|
|
405
|
+
constructor() {
|
|
406
|
+
super(`${RootConfig.module.name}.${RootConfig.entities.emergencyContactCategory.name}`);
|
|
407
|
+
}
|
|
408
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactCategoryServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
409
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactCategoryServiceImpl }); }
|
|
410
|
+
}
|
|
411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactCategoryServiceImpl, decorators: [{
|
|
412
|
+
type: Injectable
|
|
413
|
+
}], ctorParameters: () => [] });
|
|
414
|
+
|
|
415
|
+
class AXMEmergencyContactService extends AXMEntityCrudServiceImpl {
|
|
416
|
+
}
|
|
417
|
+
class AXMEmergencyContactServiceImpl extends AXMEmergencyContactService {
|
|
418
|
+
constructor() {
|
|
419
|
+
super(`${RootConfig.module.name}.${RootConfig.entities.emergencyContact.name}`);
|
|
420
|
+
}
|
|
421
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
422
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactServiceImpl }); }
|
|
423
|
+
}
|
|
424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactServiceImpl, decorators: [{
|
|
425
|
+
type: Injectable
|
|
426
|
+
}], ctorParameters: () => [] });
|
|
427
|
+
|
|
428
|
+
class AXMContactManagementModule {
|
|
429
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
430
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, imports: [CommonModule, i1.RouterModule] }); }
|
|
431
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, providers: [
|
|
432
|
+
// Entity Provider
|
|
433
|
+
{
|
|
434
|
+
provide: AXP_ENTITY_DEFINITION_LOADER,
|
|
435
|
+
useClass: AXMContactManagementEntityProvider,
|
|
436
|
+
multi: true,
|
|
437
|
+
},
|
|
438
|
+
// Menu Provider
|
|
439
|
+
{
|
|
440
|
+
provide: AXP_MENU_PROVIDER,
|
|
441
|
+
useClass: AXMContactManagementMenuProvider,
|
|
442
|
+
multi: true,
|
|
443
|
+
},
|
|
444
|
+
// Search Command Provider
|
|
445
|
+
{
|
|
446
|
+
provide: AXP_SEARCH_PROVIDER,
|
|
447
|
+
useClass: AXMContactManagementSearchCommandProvider,
|
|
448
|
+
multi: true,
|
|
449
|
+
},
|
|
450
|
+
// Permission Provider
|
|
451
|
+
{
|
|
452
|
+
provide: AXP_PERMISSION_DEFINITION_PROVIDER,
|
|
453
|
+
useFactory: async () => {
|
|
454
|
+
const injector = inject(Injector);
|
|
455
|
+
const provider = (await Promise.resolve().then(function () { return permissionDefinition_provider; })).AXMPermissionDefinitionProvider;
|
|
456
|
+
return new provider(injector);
|
|
457
|
+
},
|
|
458
|
+
multi: true,
|
|
459
|
+
},
|
|
460
|
+
// Entity Services
|
|
461
|
+
{
|
|
462
|
+
provide: AXMContactMethodTypeService,
|
|
463
|
+
useClass: AXMContactMethodTypeServiceImpl,
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
provide: AXMContactMethodService,
|
|
467
|
+
useClass: AXMContactMethodServiceImpl,
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
provide: AXMEmergencyContactCategoryService,
|
|
471
|
+
useClass: AXMEmergencyContactCategoryServiceImpl,
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
provide: AXMEmergencyContactService,
|
|
475
|
+
useClass: AXMEmergencyContactServiceImpl,
|
|
476
|
+
},
|
|
477
|
+
], imports: [CommonModule,
|
|
478
|
+
RouterModule.forChild([{
|
|
479
|
+
path: ':app/emergency-contacts',
|
|
480
|
+
component: AXPRootLayoutComponent,
|
|
481
|
+
children: [
|
|
482
|
+
{
|
|
483
|
+
path: '',
|
|
484
|
+
loadComponent: () => Promise.resolve().then(function () { return emergencyContactsPage_component; }).then(m => m.AXMEmergencyContactsPageComponent)
|
|
485
|
+
}
|
|
486
|
+
]
|
|
487
|
+
}
|
|
488
|
+
])] }); }
|
|
489
|
+
}
|
|
490
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, decorators: [{
|
|
491
|
+
type: NgModule,
|
|
492
|
+
args: [{
|
|
493
|
+
imports: [
|
|
494
|
+
CommonModule,
|
|
495
|
+
RouterModule.forChild([{
|
|
496
|
+
path: ':app/emergency-contacts',
|
|
497
|
+
component: AXPRootLayoutComponent,
|
|
498
|
+
children: [
|
|
499
|
+
{
|
|
500
|
+
path: '',
|
|
501
|
+
loadComponent: () => Promise.resolve().then(function () { return emergencyContactsPage_component; }).then(m => m.AXMEmergencyContactsPageComponent)
|
|
502
|
+
}
|
|
503
|
+
]
|
|
504
|
+
}
|
|
505
|
+
]),
|
|
506
|
+
],
|
|
507
|
+
providers: [
|
|
508
|
+
// Entity Provider
|
|
509
|
+
{
|
|
510
|
+
provide: AXP_ENTITY_DEFINITION_LOADER,
|
|
511
|
+
useClass: AXMContactManagementEntityProvider,
|
|
512
|
+
multi: true,
|
|
513
|
+
},
|
|
514
|
+
// Menu Provider
|
|
515
|
+
{
|
|
516
|
+
provide: AXP_MENU_PROVIDER,
|
|
517
|
+
useClass: AXMContactManagementMenuProvider,
|
|
518
|
+
multi: true,
|
|
519
|
+
},
|
|
520
|
+
// Search Command Provider
|
|
521
|
+
{
|
|
522
|
+
provide: AXP_SEARCH_PROVIDER,
|
|
523
|
+
useClass: AXMContactManagementSearchCommandProvider,
|
|
524
|
+
multi: true,
|
|
525
|
+
},
|
|
526
|
+
// Permission Provider
|
|
527
|
+
{
|
|
528
|
+
provide: AXP_PERMISSION_DEFINITION_PROVIDER,
|
|
529
|
+
useFactory: async () => {
|
|
530
|
+
const injector = inject(Injector);
|
|
531
|
+
const provider = (await Promise.resolve().then(function () { return permissionDefinition_provider; })).AXMPermissionDefinitionProvider;
|
|
532
|
+
return new provider(injector);
|
|
533
|
+
},
|
|
534
|
+
multi: true,
|
|
535
|
+
},
|
|
536
|
+
// Entity Services
|
|
537
|
+
{
|
|
538
|
+
provide: AXMContactMethodTypeService,
|
|
539
|
+
useClass: AXMContactMethodTypeServiceImpl,
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
provide: AXMContactMethodService,
|
|
543
|
+
useClass: AXMContactMethodServiceImpl,
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
provide: AXMEmergencyContactCategoryService,
|
|
547
|
+
useClass: AXMEmergencyContactCategoryServiceImpl,
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
provide: AXMEmergencyContactService,
|
|
551
|
+
useClass: AXMEmergencyContactServiceImpl,
|
|
552
|
+
},
|
|
553
|
+
],
|
|
554
|
+
}]
|
|
555
|
+
}] });
|
|
556
|
+
|
|
557
|
+
const moduleKey = RootConfig.module.name;
|
|
558
|
+
const entitiesKey = RootConfig.entities;
|
|
559
|
+
const manageKey = AXPSystemActionType.Manage;
|
|
560
|
+
const viewKey = AXPSystemActionType.View;
|
|
561
|
+
const updateKey = AXPSystemActionType.Update;
|
|
562
|
+
const deleteKey = AXPSystemActionType.Delete;
|
|
563
|
+
const createKey = AXPSystemActionType.Create;
|
|
564
|
+
const AXMPermissionsKeys = {
|
|
565
|
+
ContactManagement: {
|
|
566
|
+
Management: `${moduleKey}:${manageKey}`,
|
|
567
|
+
ContactMethodTypes: {
|
|
568
|
+
Management: `${moduleKey}:${entitiesKey.contactMethodType.name}:${manageKey}`,
|
|
569
|
+
View: `${moduleKey}:${entitiesKey.contactMethodType.name}:${viewKey}`,
|
|
570
|
+
Edit: `${moduleKey}:${entitiesKey.contactMethodType.name}:${updateKey}`,
|
|
571
|
+
Delete: `${moduleKey}:${entitiesKey.contactMethodType.name}:${deleteKey}`,
|
|
572
|
+
Create: `${moduleKey}:${entitiesKey.contactMethodType.name}:${createKey}`,
|
|
573
|
+
},
|
|
574
|
+
EmergencyContactCategories: {
|
|
575
|
+
Management: `${moduleKey}:${entitiesKey.emergencyContactCategory.name}:${manageKey}`,
|
|
576
|
+
View: `${moduleKey}:${entitiesKey.emergencyContactCategory.name}:${viewKey}`,
|
|
577
|
+
Edit: `${moduleKey}:${entitiesKey.emergencyContactCategory.name}:${updateKey}`,
|
|
578
|
+
Delete: `${moduleKey}:${entitiesKey.emergencyContactCategory.name}:${deleteKey}`,
|
|
579
|
+
Create: `${moduleKey}:${entitiesKey.emergencyContactCategory.name}:${createKey}`,
|
|
580
|
+
},
|
|
581
|
+
EmergencyContacts: {
|
|
582
|
+
Management: `${moduleKey}:${entitiesKey.emergencyContact.name}:${manageKey}`,
|
|
583
|
+
View: `${moduleKey}:${entitiesKey.emergencyContact.name}:${viewKey}`,
|
|
584
|
+
Edit: `${moduleKey}:${entitiesKey.emergencyContact.name}:${updateKey}`,
|
|
585
|
+
Delete: `${moduleKey}:${entitiesKey.emergencyContact.name}:${deleteKey}`,
|
|
586
|
+
Create: `${moduleKey}:${entitiesKey.emergencyContact.name}:${createKey}`,
|
|
587
|
+
},
|
|
588
|
+
},
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
class AXMPermissionDefinitionProvider {
|
|
592
|
+
constructor(injector) {
|
|
593
|
+
this.injector = injector;
|
|
594
|
+
this.translateService = this.injector.get(AXTranslationService);
|
|
595
|
+
}
|
|
596
|
+
async define(context) {
|
|
597
|
+
const trans = async (key) => await this.translateService.translateAsync(key);
|
|
598
|
+
const keys = AXMPermissionsKeys.ContactManagement;
|
|
599
|
+
context.addGroup(keys.Management, await trans(RootConfig.module.title))
|
|
600
|
+
// Contact Method Types Management
|
|
601
|
+
.addPermission(keys.ContactMethodTypes.Management, await trans(RootConfig.entities.contactMethodType.title))
|
|
602
|
+
.addChild(keys.ContactMethodTypes.View, await trans('@general:actions.view.permission'))
|
|
603
|
+
.addChild(keys.ContactMethodTypes.Edit, await trans('@general:actions.edit.permission'))
|
|
604
|
+
.addChild(keys.ContactMethodTypes.Delete, await trans('@general:actions.delete.permission'))
|
|
605
|
+
.addChild(keys.ContactMethodTypes.Create, await trans('@general:actions.create.permission'))
|
|
606
|
+
.endPermission()
|
|
607
|
+
// Emergency Contact Categories Management
|
|
608
|
+
.addPermission(keys.EmergencyContactCategories.Management, await trans(RootConfig.entities.emergencyContactCategory.title))
|
|
609
|
+
.addChild(keys.EmergencyContactCategories.View, await trans('@general:actions.view.permission'))
|
|
610
|
+
.addChild(keys.EmergencyContactCategories.Edit, await trans('@general:actions.edit.permission'))
|
|
611
|
+
.addChild(keys.EmergencyContactCategories.Delete, await trans('@general:actions.delete.permission'))
|
|
612
|
+
.addChild(keys.EmergencyContactCategories.Create, await trans('@general:actions.create.permission'))
|
|
613
|
+
.endPermission()
|
|
614
|
+
// Emergency Contacts Management
|
|
615
|
+
.addPermission(keys.EmergencyContacts.Management, await trans(RootConfig.entities.emergencyContact.title))
|
|
616
|
+
.addChild(keys.EmergencyContacts.View, await trans('@general:actions.view.permission'))
|
|
617
|
+
.addChild(keys.EmergencyContacts.Edit, await trans('@general:actions.edit.permission'))
|
|
618
|
+
.addChild(keys.EmergencyContacts.Delete, await trans('@general:actions.delete.permission'))
|
|
619
|
+
.addChild(keys.EmergencyContacts.Create, await trans('@general:actions.create.permission'))
|
|
620
|
+
.endPermission()
|
|
621
|
+
.endGroup();
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
var permissionDefinition_provider = /*#__PURE__*/Object.freeze({
|
|
626
|
+
__proto__: null,
|
|
627
|
+
AXMPermissionDefinitionProvider: AXMPermissionDefinitionProvider
|
|
628
|
+
});
|
|
629
|
+
|
|
630
|
+
class AXMEmergencyContactsPageComponent extends AXPPageLayoutBaseComponent {
|
|
631
|
+
constructor() {
|
|
632
|
+
super(...arguments);
|
|
633
|
+
//#region ---- Services & Dependencies ----
|
|
634
|
+
this.emergencyContactService = inject(AXMEmergencyContactService);
|
|
635
|
+
//#endregion
|
|
636
|
+
//#region ---- Class Properties ----
|
|
637
|
+
this.allContacts = signal([], ...(ngDevMode ? [{ debugName: "allContacts" }] : []));
|
|
638
|
+
this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
639
|
+
this.isLargeScreen = signal(true, ...(ngDevMode ? [{ debugName: "isLargeScreen" }] : []));
|
|
640
|
+
this.expandedContactIds = signal(new Set(), ...(ngDevMode ? [{ debugName: "expandedContactIds" }] : []));
|
|
641
|
+
//#endregion
|
|
642
|
+
//#region ---- Computed Properties ----
|
|
643
|
+
this.quickDialContacts = computed(() => this.allContacts()
|
|
644
|
+
.filter((contact) => contact.isQuickDial && contact.isActive)
|
|
645
|
+
.sort((a, b) => (a.priority || 0) - (b.priority || 0)), ...(ngDevMode ? [{ debugName: "quickDialContacts" }] : []));
|
|
646
|
+
this.dashboardContacts = computed(() => this.allContacts()
|
|
647
|
+
.filter((contact) => contact.showOnDashboard && contact.isActive && !contact.isQuickDial)
|
|
648
|
+
.sort((a, b) => (a.priority || 0) - (b.priority || 0)), ...(ngDevMode ? [{ debugName: "dashboardContacts" }] : []));
|
|
649
|
+
this.allActiveContacts = computed(() => this.allContacts()
|
|
650
|
+
.filter((contact) => contact.isActive)
|
|
651
|
+
.sort((a, b) => (a.priority || 0) - (b.priority || 0)), ...(ngDevMode ? [{ debugName: "allActiveContacts" }] : []));
|
|
652
|
+
// Fallback: show all contacts if filtered lists are empty
|
|
653
|
+
this.displayContacts = computed(() => {
|
|
654
|
+
const allContacts = this.allContacts();
|
|
655
|
+
// If we have contacts but none are marked as active, show all
|
|
656
|
+
if (allContacts.length > 0 && this.allActiveContacts().length === 0) {
|
|
657
|
+
return allContacts.sort((a, b) => (a.priority || 0) - (b.priority || 0));
|
|
658
|
+
}
|
|
659
|
+
return this.allActiveContacts();
|
|
660
|
+
}, ...(ngDevMode ? [{ debugName: "displayContacts" }] : []));
|
|
661
|
+
}
|
|
662
|
+
//#endregion
|
|
663
|
+
onResize() {
|
|
664
|
+
this.checkScreenSize();
|
|
665
|
+
}
|
|
666
|
+
checkScreenSize() {
|
|
667
|
+
this.isLargeScreen.set(window.innerWidth >= 768);
|
|
668
|
+
}
|
|
669
|
+
//#region ---- Lifecycle Methods ----
|
|
670
|
+
async ngOnInit() {
|
|
671
|
+
super.ngOnInit();
|
|
672
|
+
this.checkScreenSize();
|
|
673
|
+
await this.loadEmergencyContacts();
|
|
674
|
+
}
|
|
675
|
+
//#endregion
|
|
676
|
+
//#region ---- Data Loading ----
|
|
677
|
+
async loadEmergencyContacts() {
|
|
678
|
+
this.loading.set(true);
|
|
679
|
+
try {
|
|
680
|
+
const result = await this.emergencyContactService.query({
|
|
681
|
+
skip: 0,
|
|
682
|
+
take: 1000,
|
|
683
|
+
sort: [{ field: 'priority', dir: 'asc' }],
|
|
684
|
+
});
|
|
685
|
+
this.allContacts.set(result.items);
|
|
686
|
+
}
|
|
687
|
+
catch (error) {
|
|
688
|
+
console.error('Failed to load emergency contacts:', error);
|
|
689
|
+
}
|
|
690
|
+
finally {
|
|
691
|
+
this.loading.set(false);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
//#endregion
|
|
695
|
+
//#region ---- UI Handlers ----
|
|
696
|
+
toggleExpanded(contactId) {
|
|
697
|
+
this.expandedContactIds.update((current) => {
|
|
698
|
+
const next = new Set(current);
|
|
699
|
+
if (next.has(contactId)) {
|
|
700
|
+
next.delete(contactId);
|
|
701
|
+
}
|
|
702
|
+
else {
|
|
703
|
+
next.add(contactId);
|
|
704
|
+
}
|
|
705
|
+
return next;
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
isExpanded(contactId) {
|
|
709
|
+
return this.expandedContactIds().has(contactId);
|
|
710
|
+
}
|
|
711
|
+
handleCallContact(contact) {
|
|
712
|
+
if (contact.phoneNumber) {
|
|
713
|
+
window.open(`tel:${contact.phoneNumber}`, '_self');
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
handleTextContact(contact) {
|
|
717
|
+
const textNumber = contact.textNumber || contact.phoneNumber;
|
|
718
|
+
if (textNumber) {
|
|
719
|
+
window.open(`sms:${textNumber}`, '_self');
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
handleVisitWebsite(contact) {
|
|
723
|
+
if (contact.website) {
|
|
724
|
+
window.open(contact.website, '_blank');
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
async handleCopyNumber(contact) {
|
|
728
|
+
if (contact.phoneNumber && navigator.clipboard) {
|
|
729
|
+
try {
|
|
730
|
+
await navigator.clipboard.writeText(contact.phoneNumber);
|
|
731
|
+
// You could add a toast notification here
|
|
732
|
+
}
|
|
733
|
+
catch (error) {
|
|
734
|
+
console.error('Failed to copy number:', error);
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
handleRefresh() {
|
|
739
|
+
this.loadEmergencyContacts();
|
|
740
|
+
}
|
|
741
|
+
getPrimaryAction(contact) {
|
|
742
|
+
if (contact.isTextCapable && !!contact.textNumber && !contact.requiresConfirmation) {
|
|
743
|
+
return 'text';
|
|
744
|
+
}
|
|
745
|
+
return 'call';
|
|
746
|
+
}
|
|
747
|
+
performPrimaryAction(contact) {
|
|
748
|
+
const action = this.getPrimaryAction(contact);
|
|
749
|
+
if (action === 'text') {
|
|
750
|
+
this.handleTextContact(contact);
|
|
751
|
+
}
|
|
752
|
+
else {
|
|
753
|
+
this.handleCallContact(contact);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
getPrimaryActionLabel(contact) {
|
|
757
|
+
return this.getPrimaryAction(contact) === 'text' ? 'Text Now' : 'Call Now';
|
|
758
|
+
}
|
|
759
|
+
getPrimaryActionColor(contact) {
|
|
760
|
+
return this.getPrimaryAction(contact) === 'text' ? 'primary' : 'danger';
|
|
761
|
+
}
|
|
762
|
+
//#endregion
|
|
763
|
+
//#region ---- Utility Methods ----
|
|
764
|
+
getCoverageText(contact) {
|
|
765
|
+
const coverage = [];
|
|
766
|
+
if (contact.isNational)
|
|
767
|
+
coverage.push('National');
|
|
768
|
+
if (contact.isRegional)
|
|
769
|
+
coverage.push('Regional');
|
|
770
|
+
if (contact.isLocal)
|
|
771
|
+
coverage.push('Local');
|
|
772
|
+
return coverage.join(', ') || 'Unknown';
|
|
773
|
+
}
|
|
774
|
+
getCapabilitiesText(contact) {
|
|
775
|
+
const capabilities = [];
|
|
776
|
+
if (contact.isTextCapable)
|
|
777
|
+
capabilities.push('Text');
|
|
778
|
+
if (contact.isVideoCallCapable)
|
|
779
|
+
capabilities.push('Video');
|
|
780
|
+
return capabilities.join(', ') || 'Voice Only';
|
|
781
|
+
}
|
|
782
|
+
getPriorityColor(priority) {
|
|
783
|
+
if (priority <= 1)
|
|
784
|
+
return 'danger';
|
|
785
|
+
if (priority <= 3)
|
|
786
|
+
return 'warning';
|
|
787
|
+
if (priority <= 5)
|
|
788
|
+
return 'primary';
|
|
789
|
+
return 'secondary';
|
|
790
|
+
}
|
|
791
|
+
//#endregion
|
|
792
|
+
//#region ---- Page Metadata Overrides ----
|
|
793
|
+
async getPageTitle() {
|
|
794
|
+
return 'Emergency Contacts & Quick Dial';
|
|
795
|
+
}
|
|
796
|
+
async getPageDescription() {
|
|
797
|
+
return 'Access emergency contacts and important numbers quickly';
|
|
798
|
+
}
|
|
799
|
+
async getPageBreadcrumbs() {
|
|
800
|
+
return [
|
|
801
|
+
{
|
|
802
|
+
title: 'Contact Management',
|
|
803
|
+
},
|
|
804
|
+
];
|
|
805
|
+
}
|
|
806
|
+
async getSecondaryMenuItems() {
|
|
807
|
+
return [
|
|
808
|
+
{
|
|
809
|
+
title: 'Refresh',
|
|
810
|
+
icon: 'fa-light fa-refresh',
|
|
811
|
+
color: 'secondary',
|
|
812
|
+
command: {
|
|
813
|
+
name: 'refresh',
|
|
814
|
+
},
|
|
815
|
+
},
|
|
816
|
+
];
|
|
817
|
+
}
|
|
818
|
+
async execute(command) {
|
|
819
|
+
if (command.name === 'refresh') {
|
|
820
|
+
this.handleRefresh();
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactsPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
824
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMEmergencyContactsPageComponent, isStandalone: true, selector: "axm-emergency-contacts-page", host: { listeners: { "window:resize": "onResize()" } }, providers: [
|
|
825
|
+
{
|
|
826
|
+
provide: AXPPageLayoutBase,
|
|
827
|
+
useExisting: AXMEmergencyContactsPageComponent,
|
|
828
|
+
},
|
|
829
|
+
], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-content>\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-py-8\">\n <ax-loading>Loading emergency contacts...</ax-loading>\n </div>\n } @else {\n <div class=\"ax-space-y-6 ax-p-4\">\n <!-- Quick Dial Section -->\n @if (quickDialContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone-rotary\" class=\"ax-text-danger\"></ax-icon>\n Quick Dial\n </h2>\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 lg:ax-grid-cols-3 xl:ax-grid-cols-4 ax-gap-4\">\n @for (contact of quickDialContacts(); track contact.id) {\n <div\n class=\"emergency-contact-quick-dial ax-p-4 ax-rounded-lg ax-border ax-bg-light\"\n [style.--priority-color]=\"'var(--ax-sys-color-' + getPriorityColor(contact.priority) + ')' + ''\"\n >\n <!-- Compact Header with Primary Action -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-truncate ax-text-default\">\n {{ contact.name }}\n </h3>\n @if (contact.shortName) {\n <p class=\"ax-text-sm ax-text-muted ax-truncate\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [size]=\"'small'\"\n [look]=\"'filled'\"\n [text]=\"getPrimaryActionLabel(contact)\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible Details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-pt-3 ax-space-y-3\">\n <!-- Primary Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary ax-w-4\"></ax-icon>\n <span class=\"contact-info-text ax-text-sm ax-font-mono ax-flex-1\">{{\n contact.phoneNumber\n }}</span>\n <ax-button\n [color]=\"'secondary'\"\n [size]=\"'small'\"\n [look]=\"'ghost'\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n\n <!-- Capabilities -->\n <div class=\"contact-info-text ax-flex ax-items-center ax-gap-2 ax-text-xs ax-text-muted\">\n <ax-icon icon=\"fa-light fa-info-circle\" class=\"ax-w-4\"></ax-icon>\n <span>{{ getCapabilitiesText(contact) }}</span>\n </div>\n\n <!-- Availability -->\n @if (contact.availability) {\n <div class=\"contact-info-text ax-flex ax-items-center ax-gap-2 ax-text-xs ax-text-muted\">\n <ax-icon icon=\"fa-light fa-clock\" class=\"ax-w-4\"></ax-icon>\n <span class=\"ax-truncate\">{{ contact.availability }}</span>\n </div>\n }\n\n @if (contact.requiresConfirmation) {\n <div class=\"ax-p-2 ax-rounded ax-bg-warning-50 ax-border ax-border-warning-200\">\n <p class=\"ax-text-xs ax-text-warning-800 ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-triangle-exclamation\"></ax-icon>\n This contact requires confirmation before calling\n </p>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Dashboard Contacts Section -->\n @if (dashboardContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-tachometer-alt\" class=\"ax-text-primary\"></ax-icon>\n All Emergency Contacts\n </h2>\n <div>\n <div class=\"ax-space-y-4\">\n @for (contact of dashboardContacts(); track contact.id) {\n <div class=\"emergency-contact-detailed ax-p-4 ax-rounded-lg ax-border ax-bg-light\">\n <!-- Compact header -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-mb-3 ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-xl ax-font-semibold ax-text-default\">{{ contact.name }}</h3>\n @if (contact.shortName) {\n <p class=\"ax-text-muted\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [look]=\"'filled'\"\n [size]=\"'small'\"\n [text]=\"getPrimaryActionLabel(contact)\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible Details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-grid ax-grid-cols-1 lg:ax-grid-cols-3 ax-gap-4 ax-items-start\">\n <!-- Contact Info -->\n <div class=\"lg:ax-col-span-2\">\n @if (contact.description) {\n <p class=\"ax-text-muted ax-mb-4\">{{ contact.description }}</p>\n }\n\n <!-- Contact Methods Grid -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 ax-gap-3 ax-mb-4\">\n <!-- Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.phoneNumber }}</span>\n </div>\n\n <!-- Text Number -->\n @if (contact.textNumber) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-message\" class=\"ax-text-secondary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.textNumber }}</span>\n </div>\n }\n\n <!-- Email -->\n @if (contact.email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\" class=\"ax-text-info\"></ax-icon>\n <span>{{ contact.email }}</span>\n </div>\n }\n\n <!-- Website -->\n @if (contact.website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\" class=\"ax-text-accent\"></ax-icon>\n <a [href]=\"contact.website\" target=\"_blank\" class=\"ax-text-accent ax-hover:underline\">\n Website\n </a>\n </div>\n }\n </div>\n\n <!-- Coverage & Capabilities -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-3 ax-gap-3 ax-text-sm\">\n <div>\n <strong class=\"ax-text-muted\">Coverage:</strong>\n <p>{{ getCoverageText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Capabilities:</strong>\n <p>{{ getCapabilitiesText(contact) }}</p>\n </div>\n @if (contact.availability) {\n <div>\n <strong class=\"ax-text-muted\">Availability:</strong>\n <p>{{ contact.availability }}</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Secondary actions and meta -->\n <div class=\"ax-flex ax-flex-col ax-gap-3\">\n <!-- Secondary Actions -->\n <div class=\"ax-flex ax-gap-2\">\n @if (contact.website) {\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleVisitWebsite(contact)\"\n >\n <ax-icon icon=\"fa-light fa-external-link\"></ax-icon>\n </ax-button>\n }\n\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n\n <!-- Warnings -->\n @if (contact.requiresConfirmation) {\n <div class=\"ax-p-3 ax-rounded ax-bg-warning-50 ax-border ax-border-warning-200\">\n <p class=\"ax-text-xs ax-text-warning-800 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-triangle-exclamation\"></ax-icon>\n This contact requires confirmation before calling\n </p>\n </div>\n }\n\n @if (contact.lastVerified) {\n <div class=\"ax-text-xs ax-text-muted\">\n <strong>Last Verified:</strong>\n <p>{{ contact.lastVerified | date }}</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Fallback: Show all contacts if no filtered contacts are available -->\n @if (quickDialContacts().length === 0 && dashboardContacts().length === 0 && displayContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-list\" class=\"ax-text-info\"></ax-icon>\n All Emergency Contacts\n </h2>\n <div class=\"ax-space-y-4\">\n @for (contact of displayContacts(); track contact.id) {\n <div class=\"emergency-contact-detailed ax-p-4 ax-rounded-lg ax-border ax-bg-light\">\n <!-- Compact header -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-mb-3 ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-xl ax-font-semibold ax-text-default\">{{ contact.name }}</h3>\n @if (contact.shortName) {\n <p class=\"ax-text-muted\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [look]=\"'filled'\"\n [size]=\"'small'\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n {{ getPrimaryActionLabel(contact) }}\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-grid ax-grid-cols-1 lg:ax-grid-cols-3 ax-gap-4 ax-items-start\">\n <!-- Contact Info -->\n <div class=\"lg:ax-col-span-2\">\n @if (contact.description) {\n <p class=\"ax-text-muted ax-mb-4\">{{ contact.description }}</p>\n }\n\n <!-- Contact Methods Grid -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 ax-gap-3 ax-mb-4\">\n <!-- Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.phoneNumber }}</span>\n </div>\n\n <!-- Email -->\n @if (contact.email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\" class=\"ax-text-info\"></ax-icon>\n <span>{{ contact.email }}</span>\n </div>\n }\n\n <!-- Website -->\n @if (contact.website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\" class=\"ax-text-accent\"></ax-icon>\n <a [href]=\"contact.website\" target=\"_blank\" class=\"ax-text-accent ax-hover:underline\">\n Website\n </a>\n </div>\n }\n </div>\n\n <!-- Status Info -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-3 ax-gap-3 ax-text-sm\">\n <div>\n <strong class=\"ax-text-muted\">Coverage:</strong>\n <p>{{ getCoverageText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Capabilities:</strong>\n <p>{{ getCapabilitiesText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Status:</strong>\n <p class=\"ax-flex ax-items-center ax-gap-1\">\n <span [class]=\"contact.isActive ? 'ax-text-success' : 'ax-text-danger'\">\n {{ contact.isActive ? 'Active' : 'Inactive' }}\n </span>\n @if (contact.isVerified) {\n <ax-icon icon=\"fa-light fa-check-circle\" class=\"ax-text-success\"></ax-icon>\n }\n </p>\n </div>\n </div>\n </div>\n\n <!-- Secondary Actions -->\n <div class=\"ax-flex ax-gap-2\">\n @if (contact.website) {\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleVisitWebsite(contact)\"\n >\n <ax-icon icon=\"fa-light fa-external-link\"></ax-icon>\n </ax-button>\n }\n\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- No Contacts State -->\n @if (allContacts().length === 0 && !loading()) {\n <div class=\"ax-text-center ax-py-12\">\n <ax-icon icon=\"fa-light fa-phone-slash\" class=\"ax-text-6xl ax-text-muted ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-text-muted ax-mb-2\">No emergency contacts available</h3>\n </div>\n }\n </div>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-emergency-contacts-page{display:block;width:100%;height:100%}axm-emergency-contacts-page .ax-space-y-6.ax-p-4{max-width:1200px;margin:0 auto;padding-left:1rem;padding-right:1rem}@media (min-width: 768px){axm-emergency-contacts-page .ax-space-y-6.ax-p-4{padding-left:1.5rem;padding-right:1.5rem}}axm-emergency-contacts-page h2{margin-bottom:1.25rem;color:var(--ax-sys-color-primary);border-bottom:1px solid var(--ax-sys-color-border);padding-bottom:.5rem}axm-emergency-contacts-page h2 ax-icon{margin-right:.5rem}@media (min-width: 768px){axm-emergency-contacts-page h2 ax-icon{margin-right:.75rem}}axm-emergency-contacts-page .emergency-contact-quick-dial{position:relative;--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);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;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));animation-duration:.2s;border:1px solid var(--ax-sys-color-outline-variant);min-height:140px}axm-emergency-contacts-page .emergency-contact-quick-dial:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transform:translateY(-2px);border-color:var(--priority-color, var(--ax-sys-color-primary))}axm-emergency-contacts-page .emergency-contact-quick-dial h3{color:var(--ax-sys-color-on-surface);margin-bottom:.125rem;font-size:1rem;line-height:1.5rem;font-weight:600}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-quick-dial h3{font-size:1.125rem;line-height:1.75rem}}axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{font-size:.75rem;line-height:1rem;font-weight:500}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{font-size:.875rem;line-height:1.25rem}}axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{min-height:30px}axm-emergency-contacts-page .emergency-contact-detailed{--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);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;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));animation-duration:.2s;border:1px solid var(--ax-sys-color-outline-variant)}axm-emergency-contacts-page .emergency-contact-detailed:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transform:translateY(-1px);border-color:var(--ax-sys-color-primary)}axm-emergency-contacts-page .emergency-contact-detailed h3{color:var(--ax-sys-color-on-surface);font-size:1.125rem;line-height:1.75rem;font-weight:600}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-detailed h3{font-size:1.25rem;line-height:1.75rem}}axm-emergency-contacts-page .emergency-contact-detailed ax-icon{flex-shrink:0}@media (min-width: 640px){axm-emergency-contacts-page .emergency-contact-detailed .ax-grid-cols-1.sm\\\\:ax-grid-cols-2>div{min-width:0px}}@media (min-width: 1024px){axm-emergency-contacts-page .emergency-contact-detailed .ax-flex.ax-flex-col.ax-gap-3{position:-webkit-sticky;position:sticky;top:1rem}}axm-emergency-contacts-page ax-loading{margin-left:auto;margin-right:auto}axm-emergency-contacts-page .ax-text-center.ax-py-12 ax-icon{margin-left:auto;margin-right:auto;display:block}axm-emergency-contacts-page ax-badge[data-color=danger]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-danger-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=warning]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-warning-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=primary]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=secondary]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-secondary-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-secondary-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-secondary-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page .ax-bg-warning-50 ax-icon{flex-shrink:0}axm-emergency-contacts-page .ax-font-mono{letter-spacing:.025em}@media (min-width: 640px){axm-emergency-contacts-page axp-layout-content .ax-gap-4{gap:1.5rem}}axm-emergency-contacts-page ax-button{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}axm-emergency-contacts-page ax-button:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}axm-emergency-contacts-page ax-button:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}axm-emergency-contacts-page ax-button[data-color=danger]{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-button[data-color=danger]:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-icon.ax-w-4{height:1rem}axm-emergency-contacts-page ax-icon.ax-text-6xl{height:6rem;width:6rem}@media (max-width: 640px){axm-emergency-contacts-page .ax-grid-cols-1 .ax-gap-3{gap:.5rem}axm-emergency-contacts-page .emergency-contact-quick-dial .contact-info-text{font-size:.75rem;line-height:1rem}}@media print{axm-emergency-contacts-page .emergency-contact-quick-dial,axm-emergency-contacts-page .emergency-contact-detailed{break-inside:avoid;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-button{display:none}axm-emergency-contacts-page .ax-bg-warning-50{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}}@media (prefers-contrast: high){axm-emergency-contacts-page .emergency-contact-quick-dial,axm-emergency-contacts-page .emergency-contact-detailed{border-width:2px}axm-emergency-contacts-page ax-badge{border-width:2px}}@media (prefers-reduced-motion: reduce){axm-emergency-contacts-page *{transition-property:none}axm-emergency-contacts-page ax-button:hover,axm-emergency-contacts-page .emergency-contact-quick-dial:hover{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXFormatModule }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: 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: "pipe", type: i5.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
830
|
+
}
|
|
831
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactsPageComponent, decorators: [{
|
|
832
|
+
type: Component,
|
|
833
|
+
args: [{ selector: 'axm-emergency-contacts-page', imports: [
|
|
834
|
+
CommonModule,
|
|
835
|
+
AXButtonModule,
|
|
836
|
+
AXDecoratorModule,
|
|
837
|
+
AXLoadingModule,
|
|
838
|
+
AXBadgeModule,
|
|
839
|
+
AXTranslationModule,
|
|
840
|
+
AXFormatModule,
|
|
841
|
+
AXPPageLayoutComponent,
|
|
842
|
+
AXPThemeLayoutBlockComponent,
|
|
843
|
+
], host: {
|
|
844
|
+
'(window:resize)': 'onResize()'
|
|
845
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
846
|
+
{
|
|
847
|
+
provide: AXPPageLayoutBase,
|
|
848
|
+
useExisting: AXMEmergencyContactsPageComponent,
|
|
849
|
+
},
|
|
850
|
+
], template: "<axp-page-layout *translate=\"let t\">\n <axp-page-content>\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-py-8\">\n <ax-loading>Loading emergency contacts...</ax-loading>\n </div>\n } @else {\n <div class=\"ax-space-y-6 ax-p-4\">\n <!-- Quick Dial Section -->\n @if (quickDialContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone-rotary\" class=\"ax-text-danger\"></ax-icon>\n Quick Dial\n </h2>\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 lg:ax-grid-cols-3 xl:ax-grid-cols-4 ax-gap-4\">\n @for (contact of quickDialContacts(); track contact.id) {\n <div\n class=\"emergency-contact-quick-dial ax-p-4 ax-rounded-lg ax-border ax-bg-light\"\n [style.--priority-color]=\"'var(--ax-sys-color-' + getPriorityColor(contact.priority) + ')' + ''\"\n >\n <!-- Compact Header with Primary Action -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-truncate ax-text-default\">\n {{ contact.name }}\n </h3>\n @if (contact.shortName) {\n <p class=\"ax-text-sm ax-text-muted ax-truncate\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [size]=\"'small'\"\n [look]=\"'filled'\"\n [text]=\"getPrimaryActionLabel(contact)\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible Details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-pt-3 ax-space-y-3\">\n <!-- Primary Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary ax-w-4\"></ax-icon>\n <span class=\"contact-info-text ax-text-sm ax-font-mono ax-flex-1\">{{\n contact.phoneNumber\n }}</span>\n <ax-button\n [color]=\"'secondary'\"\n [size]=\"'small'\"\n [look]=\"'ghost'\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n\n <!-- Capabilities -->\n <div class=\"contact-info-text ax-flex ax-items-center ax-gap-2 ax-text-xs ax-text-muted\">\n <ax-icon icon=\"fa-light fa-info-circle\" class=\"ax-w-4\"></ax-icon>\n <span>{{ getCapabilitiesText(contact) }}</span>\n </div>\n\n <!-- Availability -->\n @if (contact.availability) {\n <div class=\"contact-info-text ax-flex ax-items-center ax-gap-2 ax-text-xs ax-text-muted\">\n <ax-icon icon=\"fa-light fa-clock\" class=\"ax-w-4\"></ax-icon>\n <span class=\"ax-truncate\">{{ contact.availability }}</span>\n </div>\n }\n\n @if (contact.requiresConfirmation) {\n <div class=\"ax-p-2 ax-rounded ax-bg-warning-50 ax-border ax-border-warning-200\">\n <p class=\"ax-text-xs ax-text-warning-800 ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-triangle-exclamation\"></ax-icon>\n This contact requires confirmation before calling\n </p>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Dashboard Contacts Section -->\n @if (dashboardContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-tachometer-alt\" class=\"ax-text-primary\"></ax-icon>\n All Emergency Contacts\n </h2>\n <div>\n <div class=\"ax-space-y-4\">\n @for (contact of dashboardContacts(); track contact.id) {\n <div class=\"emergency-contact-detailed ax-p-4 ax-rounded-lg ax-border ax-bg-light\">\n <!-- Compact header -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-mb-3 ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-xl ax-font-semibold ax-text-default\">{{ contact.name }}</h3>\n @if (contact.shortName) {\n <p class=\"ax-text-muted\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [look]=\"'filled'\"\n [size]=\"'small'\"\n [text]=\"getPrimaryActionLabel(contact)\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible Details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-grid ax-grid-cols-1 lg:ax-grid-cols-3 ax-gap-4 ax-items-start\">\n <!-- Contact Info -->\n <div class=\"lg:ax-col-span-2\">\n @if (contact.description) {\n <p class=\"ax-text-muted ax-mb-4\">{{ contact.description }}</p>\n }\n\n <!-- Contact Methods Grid -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 ax-gap-3 ax-mb-4\">\n <!-- Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.phoneNumber }}</span>\n </div>\n\n <!-- Text Number -->\n @if (contact.textNumber) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-message\" class=\"ax-text-secondary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.textNumber }}</span>\n </div>\n }\n\n <!-- Email -->\n @if (contact.email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\" class=\"ax-text-info\"></ax-icon>\n <span>{{ contact.email }}</span>\n </div>\n }\n\n <!-- Website -->\n @if (contact.website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\" class=\"ax-text-accent\"></ax-icon>\n <a [href]=\"contact.website\" target=\"_blank\" class=\"ax-text-accent ax-hover:underline\">\n Website\n </a>\n </div>\n }\n </div>\n\n <!-- Coverage & Capabilities -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-3 ax-gap-3 ax-text-sm\">\n <div>\n <strong class=\"ax-text-muted\">Coverage:</strong>\n <p>{{ getCoverageText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Capabilities:</strong>\n <p>{{ getCapabilitiesText(contact) }}</p>\n </div>\n @if (contact.availability) {\n <div>\n <strong class=\"ax-text-muted\">Availability:</strong>\n <p>{{ contact.availability }}</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Secondary actions and meta -->\n <div class=\"ax-flex ax-flex-col ax-gap-3\">\n <!-- Secondary Actions -->\n <div class=\"ax-flex ax-gap-2\">\n @if (contact.website) {\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleVisitWebsite(contact)\"\n >\n <ax-icon icon=\"fa-light fa-external-link\"></ax-icon>\n </ax-button>\n }\n\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n\n <!-- Warnings -->\n @if (contact.requiresConfirmation) {\n <div class=\"ax-p-3 ax-rounded ax-bg-warning-50 ax-border ax-border-warning-200\">\n <p class=\"ax-text-xs ax-text-warning-800 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-triangle-exclamation\"></ax-icon>\n This contact requires confirmation before calling\n </p>\n </div>\n }\n\n @if (contact.lastVerified) {\n <div class=\"ax-text-xs ax-text-muted\">\n <strong>Last Verified:</strong>\n <p>{{ contact.lastVerified | date }}</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Fallback: Show all contacts if no filtered contacts are available -->\n @if (quickDialContacts().length === 0 && dashboardContacts().length === 0 && displayContacts().length > 0) {\n <div class=\"ax-mb-8\">\n <h2 class=\"ax-text-2xl ax-font-semibold ax-mb-4 ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-list\" class=\"ax-text-info\"></ax-icon>\n All Emergency Contacts\n </h2>\n <div class=\"ax-space-y-4\">\n @for (contact of displayContacts(); track contact.id) {\n <div class=\"emergency-contact-detailed ax-p-4 ax-rounded-lg ax-border ax-bg-light\">\n <!-- Compact header -->\n <div class=\"ax-flex ax-items-start ax-justify-between ax-mb-3 ax-gap-3\">\n <div class=\"ax-flex-1 ax-min-w-0\">\n <h3 class=\"ax-text-xl ax-font-semibold ax-text-default\">{{ contact.name }}</h3>\n @if (contact.shortName) {\n <p class=\"ax-text-muted\">{{ contact.shortName }}</p>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button\n [color]=\"getPrimaryActionColor(contact)\"\n [look]=\"'filled'\"\n [size]=\"'small'\"\n (onClick)=\"performPrimaryAction(contact)\"\n >\n <ax-icon\n [icon]=\"getPrimaryAction(contact) === 'text' ? 'fa-light fa-message' : 'fa-light fa-phone'\"\n ></ax-icon>\n {{ getPrimaryActionLabel(contact) }}\n </ax-button>\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n (onClick)=\"toggleExpanded(contact.id)\"\n >\n <ax-icon\n [icon]=\"isExpanded(contact.id) ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"\n ></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Collapsible details -->\n @if (isExpanded(contact.id)) {\n <div class=\"ax-grid ax-grid-cols-1 lg:ax-grid-cols-3 ax-gap-4 ax-items-start\">\n <!-- Contact Info -->\n <div class=\"lg:ax-col-span-2\">\n @if (contact.description) {\n <p class=\"ax-text-muted ax-mb-4\">{{ contact.description }}</p>\n }\n\n <!-- Contact Methods Grid -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 ax-gap-3 ax-mb-4\">\n <!-- Phone -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n <span class=\"ax-font-mono\">{{ contact.phoneNumber }}</span>\n </div>\n\n <!-- Email -->\n @if (contact.email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\" class=\"ax-text-info\"></ax-icon>\n <span>{{ contact.email }}</span>\n </div>\n }\n\n <!-- Website -->\n @if (contact.website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\" class=\"ax-text-accent\"></ax-icon>\n <a [href]=\"contact.website\" target=\"_blank\" class=\"ax-text-accent ax-hover:underline\">\n Website\n </a>\n </div>\n }\n </div>\n\n <!-- Status Info -->\n <div class=\"ax-grid ax-grid-cols-1 sm:ax-grid-cols-3 ax-gap-3 ax-text-sm\">\n <div>\n <strong class=\"ax-text-muted\">Coverage:</strong>\n <p>{{ getCoverageText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Capabilities:</strong>\n <p>{{ getCapabilitiesText(contact) }}</p>\n </div>\n <div>\n <strong class=\"ax-text-muted\">Status:</strong>\n <p class=\"ax-flex ax-items-center ax-gap-1\">\n <span [class]=\"contact.isActive ? 'ax-text-success' : 'ax-text-danger'\">\n {{ contact.isActive ? 'Active' : 'Inactive' }}\n </span>\n @if (contact.isVerified) {\n <ax-icon icon=\"fa-light fa-check-circle\" class=\"ax-text-success\"></ax-icon>\n }\n </p>\n </div>\n </div>\n </div>\n\n <!-- Secondary Actions -->\n <div class=\"ax-flex ax-gap-2\">\n @if (contact.website) {\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleVisitWebsite(contact)\"\n >\n <ax-icon icon=\"fa-light fa-external-link\"></ax-icon>\n </ax-button>\n }\n\n <ax-button\n [color]=\"'secondary'\"\n [look]=\"'ghost'\"\n [size]=\"'small'\"\n class=\"ax-flex-1\"\n (onClick)=\"handleCopyNumber(contact)\"\n >\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- No Contacts State -->\n @if (allContacts().length === 0 && !loading()) {\n <div class=\"ax-text-center ax-py-12\">\n <ax-icon icon=\"fa-light fa-phone-slash\" class=\"ax-text-6xl ax-text-muted ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-text-muted ax-mb-2\">No emergency contacts available</h3>\n </div>\n }\n </div>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-emergency-contacts-page{display:block;width:100%;height:100%}axm-emergency-contacts-page .ax-space-y-6.ax-p-4{max-width:1200px;margin:0 auto;padding-left:1rem;padding-right:1rem}@media (min-width: 768px){axm-emergency-contacts-page .ax-space-y-6.ax-p-4{padding-left:1.5rem;padding-right:1.5rem}}axm-emergency-contacts-page h2{margin-bottom:1.25rem;color:var(--ax-sys-color-primary);border-bottom:1px solid var(--ax-sys-color-border);padding-bottom:.5rem}axm-emergency-contacts-page h2 ax-icon{margin-right:.5rem}@media (min-width: 768px){axm-emergency-contacts-page h2 ax-icon{margin-right:.75rem}}axm-emergency-contacts-page .emergency-contact-quick-dial{position:relative;--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);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;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));animation-duration:.2s;border:1px solid var(--ax-sys-color-outline-variant);min-height:140px}axm-emergency-contacts-page .emergency-contact-quick-dial:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transform:translateY(-2px);border-color:var(--priority-color, var(--ax-sys-color-primary))}axm-emergency-contacts-page .emergency-contact-quick-dial h3{color:var(--ax-sys-color-on-surface);margin-bottom:.125rem;font-size:1rem;line-height:1.5rem;font-weight:600}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-quick-dial h3{font-size:1.125rem;line-height:1.75rem}}axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{font-size:.75rem;line-height:1rem;font-weight:500}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{font-size:.875rem;line-height:1.25rem}}axm-emergency-contacts-page .emergency-contact-quick-dial .ax-button{min-height:30px}axm-emergency-contacts-page .emergency-contact-detailed{--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);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;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));animation-duration:.2s;border:1px solid var(--ax-sys-color-outline-variant)}axm-emergency-contacts-page .emergency-contact-detailed:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transform:translateY(-1px);border-color:var(--ax-sys-color-primary)}axm-emergency-contacts-page .emergency-contact-detailed h3{color:var(--ax-sys-color-on-surface);font-size:1.125rem;line-height:1.75rem;font-weight:600}@media (min-width: 768px){axm-emergency-contacts-page .emergency-contact-detailed h3{font-size:1.25rem;line-height:1.75rem}}axm-emergency-contacts-page .emergency-contact-detailed ax-icon{flex-shrink:0}@media (min-width: 640px){axm-emergency-contacts-page .emergency-contact-detailed .ax-grid-cols-1.sm\\\\:ax-grid-cols-2>div{min-width:0px}}@media (min-width: 1024px){axm-emergency-contacts-page .emergency-contact-detailed .ax-flex.ax-flex-col.ax-gap-3{position:-webkit-sticky;position:sticky;top:1rem}}axm-emergency-contacts-page ax-loading{margin-left:auto;margin-right:auto}axm-emergency-contacts-page .ax-text-center.ax-py-12 ax-icon{margin-left:auto;margin-right:auto;display:block}axm-emergency-contacts-page ax-badge[data-color=danger]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-danger-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=warning]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-warning-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=primary]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page ax-badge[data-color=secondary]{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-secondary-200),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-secondary-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-secondary-800),var(--tw-text-opacity, 1))}axm-emergency-contacts-page .ax-bg-warning-50 ax-icon{flex-shrink:0}axm-emergency-contacts-page .ax-font-mono{letter-spacing:.025em}@media (min-width: 640px){axm-emergency-contacts-page axp-layout-content .ax-gap-4{gap:1.5rem}}axm-emergency-contacts-page ax-button{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}axm-emergency-contacts-page ax-button:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}axm-emergency-contacts-page ax-button:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}axm-emergency-contacts-page ax-button[data-color=danger]{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-button[data-color=danger]:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-icon.ax-w-4{height:1rem}axm-emergency-contacts-page ax-icon.ax-text-6xl{height:6rem;width:6rem}@media (max-width: 640px){axm-emergency-contacts-page .ax-grid-cols-1 .ax-gap-3{gap:.5rem}axm-emergency-contacts-page .emergency-contact-quick-dial .contact-info-text{font-size:.75rem;line-height:1rem}}@media print{axm-emergency-contacts-page .emergency-contact-quick-dial,axm-emergency-contacts-page .emergency-contact-detailed{break-inside:avoid;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-emergency-contacts-page ax-button{display:none}axm-emergency-contacts-page .ax-bg-warning-50{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}}@media (prefers-contrast: high){axm-emergency-contacts-page .emergency-contact-quick-dial,axm-emergency-contacts-page .emergency-contact-detailed{border-width:2px}axm-emergency-contacts-page ax-badge{border-width:2px}}@media (prefers-reduced-motion: reduce){axm-emergency-contacts-page *{transition-property:none}axm-emergency-contacts-page ax-button:hover,axm-emergency-contacts-page .emergency-contact-quick-dial:hover{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}\n"] }]
|
|
851
|
+
}] });
|
|
852
|
+
|
|
853
|
+
var emergencyContactsPage_component = /*#__PURE__*/Object.freeze({
|
|
854
|
+
__proto__: null,
|
|
855
|
+
AXMEmergencyContactsPageComponent: AXMEmergencyContactsPageComponent
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
/**
|
|
859
|
+
* Generated bundle index. Do not edit.
|
|
860
|
+
*/
|
|
861
|
+
|
|
862
|
+
export { AXMContactMethodService as A, RootConfig as R, AXMEmergencyContactCategoryService as a, AXMEmergencyContactService as b, AXMContactManagementModule as c, AXMContactManagementEntityProvider as d, AXMContactManagementMenuProvider as e, AXMContactManagementSearchCommandProvider as f, AXMPermissionDefinitionProvider as g, contactMethodTypeFactory as h, AXMContactMethodTypeService as i, AXMContactMethodTypeServiceImpl as j, AXMContactMethodServiceImpl as k, AXMEmergencyContactServiceImpl as l, AXMEmergencyContactsPageComponent as m };
|
|
863
|
+
//# sourceMappingURL=acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs.map
|