@acorex/modules 20.2.4-next.9 → 20.3.0-next.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/application-management/index.d.ts +49 -1
- package/calendar-management/index.d.ts +19 -1
- package/common/index.d.ts +50 -0
- package/contact-management/index.d.ts +40 -4
- package/content-management/index.d.ts +20 -2
- package/conversation/index.d.ts +34 -16
- package/dashboard-management/index.d.ts +11 -4
- package/data-management/index.d.ts +20 -2
- package/document-management/index.d.ts +36 -6
- package/fesm2022/acorex-modules-application-management.mjs +483 -286
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BbO_ea5W.mjs → acorex-modules-auth-acorex-modules-auth-BTi7qTvr.mjs} +29 -12
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BTi7qTvr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-y0HLrwJM.mjs → acorex-modules-auth-app-chooser.component-s4LYKAc7.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-y0HLrwJM.mjs.map → acorex-modules-auth-app-chooser.component-s4LYKAc7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-1U_5UgDs.mjs → acorex-modules-auth-login.module-DetWdAgo.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-1U_5UgDs.mjs.map → acorex-modules-auth-login.module-DetWdAgo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DGsAGhOH.mjs → acorex-modules-auth-master.layout-BJRB1Vns.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-DGsAGhOH.mjs.map → acorex-modules-auth-master.layout-BJRB1Vns.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CPHBV5bA.mjs → acorex-modules-auth-oauth-callback.component-DKHJoF3X.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CPHBV5bA.mjs.map → acorex-modules-auth-oauth-callback.component-DKHJoF3X.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CF3ReHyw.mjs → acorex-modules-auth-password.component-B_vA7-vu.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CF3ReHyw.mjs.map → acorex-modules-auth-password.component-B_vA7-vu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-C85NgQxA.mjs → acorex-modules-auth-password.component-WUrm5Y6i.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-C85NgQxA.mjs.map → acorex-modules-auth-password.component-WUrm5Y6i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-BJh0Fwpy.mjs → acorex-modules-auth-routes-CYf17elA.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BJh0Fwpy.mjs.map → acorex-modules-auth-routes-CYf17elA.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-show-profile-command-DjvX7n9K.mjs +53 -0
- package/fesm2022/acorex-modules-auth-show-profile-command-DjvX7n9K.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-Bsh2_A5L.mjs → acorex-modules-auth-two-factor.module-CeJGeuid.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-Bsh2_A5L.mjs.map → acorex-modules-auth-two-factor.module-CeJGeuid.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-ChMkstLg.mjs → acorex-modules-auth-user-sessions.component-D0jQEJcC.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-ChMkstLg.mjs.map → acorex-modules-auth-user-sessions.component-D0jQEJcC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +92 -29
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs → acorex-modules-common-manage-extra-properties.command-7prqQhV5.mjs} +15 -12
- package/fesm2022/acorex-modules-common-manage-extra-properties.command-7prqQhV5.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +106 -8
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-contact-management.mjs +280 -122
- package/fesm2022/acorex-modules-contact-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +555 -490
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +315 -252
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/{acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs → acorex-modules-customer-management-acorex-modules-customer-management-BHs4rrB8.mjs} +12 -12
- package/fesm2022/{acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs.map → acorex-modules-customer-management-acorex-modules-customer-management-BHs4rrB8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-activity.entity-By32mnXN.mjs → acorex-modules-customer-management-activity.entity-D_9Nut_6.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-activity.entity-By32mnXN.mjs.map → acorex-modules-customer-management-activity.entity-D_9Nut_6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs → acorex-modules-customer-management-customer-segment.entity-swBR8-dJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs.map → acorex-modules-customer-management-customer-segment.entity-swBR8-dJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs → acorex-modules-customer-management-customer-type.entity-GmfdE2Ex.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs.map → acorex-modules-customer-management-customer-type.entity-GmfdE2Ex.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer.entity-rUNC9glL.mjs → acorex-modules-customer-management-customer.entity-Bld5nRai.mjs} +23 -23
- package/fesm2022/acorex-modules-customer-management-customer.entity-Bld5nRai.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs → acorex-modules-customer-management-deal-contact-role.entity-Ci_ymO_w.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs.map → acorex-modules-customer-management-deal-contact-role.entity-Ci_ymO_w.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs → acorex-modules-customer-management-lead.entity-BcQvYHnL.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs.map → acorex-modules-customer-management-lead.entity-BcQvYHnL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs → acorex-modules-customer-management-lifecycle-stage.entity-DSZyAv5_.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs.map → acorex-modules-customer-management-lifecycle-stage.entity-DSZyAv5_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs → acorex-modules-customer-management-opportunity-stage.entity-BpwLN_fw.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs.map → acorex-modules-customer-management-opportunity-stage.entity-BpwLN_fw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs → acorex-modules-customer-management-opportunity.entity-DaiL4951.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs.map → acorex-modules-customer-management-opportunity.entity-DaiL4951.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs → acorex-modules-customer-management-sales-pipeline.entity-DP_w8V9E.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs.map → acorex-modules-customer-management-sales-pipeline.entity-DP_w8V9E.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs → acorex-modules-customer-management-sales-territory.entity-BJNrmMO3.mjs} +2 -2
- package/fesm2022/{acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs.map → acorex-modules-customer-management-sales-territory.entity-BJNrmMO3.mjs.map} +1 -1
- package/fesm2022/acorex-modules-customer-management.mjs +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +182 -54
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +93 -28
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-CiVbcZ81.mjs → acorex-modules-document-management-acorex-modules-document-management-BV6piYsz.mjs} +1037 -926
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BV6piYsz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-iRZU056o.mjs → acorex-modules-document-management-attachment-widget.component-DVXmIiQt.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-iRZU056o.mjs.map → acorex-modules-document-management-attachment-widget.component-DVXmIiQt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DCoD73F7.mjs → acorex-modules-document-management-create-folder-dialog.component-CiT3wteQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DCoD73F7.mjs.map → acorex-modules-document-management-create-folder-dialog.component-CiT3wteQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-D0JuVG8v.mjs → acorex-modules-document-management-details-view.component-BXUpaDZO.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-D0JuVG8v.mjs.map → acorex-modules-document-management-details-view.component-BXUpaDZO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-B-VnHqr3.mjs → acorex-modules-document-management-document-signature-popup.component-D3GahdPn.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-B-VnHqr3.mjs.map → acorex-modules-document-management-document-signature-popup.component-D3GahdPn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BdIU8PXg.mjs → acorex-modules-document-management-drive-choose.component-Bbms4LAS.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BdIU8PXg.mjs.map → acorex-modules-document-management-drive-choose.component-Bbms4LAS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DGQD1adR.mjs → acorex-modules-document-management-drive.component-DfHDC5o7.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-DGQD1adR.mjs.map → acorex-modules-document-management-drive.component-DfHDC5o7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-Ch9CAOwx.mjs → acorex-modules-document-management-large-icons-view.component-BPmfNI3J.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-Ch9CAOwx.mjs.map → acorex-modules-document-management-large-icons-view.component-BPmfNI3J.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DgGef-W5.mjs → acorex-modules-document-management-large-tiles-view.component-6fjTzrwf.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DgGef-W5.mjs.map → acorex-modules-document-management-large-tiles-view.component-6fjTzrwf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-DK6IZdC0.mjs → acorex-modules-document-management-list-view.component-DeBNY8Aj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-DK6IZdC0.mjs.map → acorex-modules-document-management-list-view.component-DeBNY8Aj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BV7PYxuz.mjs → acorex-modules-document-management-permission-definition.provider-Bn-umdXX.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BV7PYxuz.mjs.map → acorex-modules-document-management-permission-definition.provider-Bn-umdXX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C37tOs99.mjs → acorex-modules-document-management-rename-node-dialog.component-LRFo58Xg.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C37tOs99.mjs.map → acorex-modules-document-management-rename-node-dialog.component-LRFo58Xg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D0NHNq4W.mjs → acorex-modules-document-management-small-icons-view.component-BlQ3EhiJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D0NHNq4W.mjs.map → acorex-modules-document-management-small-icons-view.component-BlQ3EhiJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DLNbw_y5.mjs → acorex-modules-document-management-small-tiles-view.component-BM2Uj_Wz.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DLNbw_y5.mjs.map → acorex-modules-document-management-small-tiles-view.component-BM2Uj_Wz.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs → acorex-modules-help-desk-acorex-modules-help-desk-C4s1EVQy.mjs} +123 -49
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-C4s1EVQy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs → acorex-modules-help-desk-capture-screen.component-BLZbJmw1.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs.map → acorex-modules-help-desk-capture-screen.component-BLZbJmw1.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-By3qopAk.mjs +1519 -0
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-By3qopAk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-DfVvf8Fg.mjs → acorex-modules-human-capital-management-employee-skill.entity-DRUHGUnT.mjs} +17 -17
- package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DRUHGUnT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-ByBqfKiF.mjs → acorex-modules-human-capital-management-employee.entity-Cn9GnmJE.mjs} +37 -15
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-Cn9GnmJE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DZ8ubvD6.mjs → acorex-modules-human-capital-management-employment-type.entity-BveY2th_.mjs} +11 -10
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-BveY2th_.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CIm3XrTb.mjs +267 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CIm3XrTb.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-COan6Cnw.mjs +95 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-COan6Cnw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BtIVnv-C.mjs → acorex-modules-human-capital-management-position-assignment.entity-BJw9jR1o.mjs} +14 -14
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BJw9jR1o.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-DFCE3zcH.mjs → acorex-modules-human-capital-management-skill-level.entity-CZe8y_hA.mjs} +10 -10
- package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-CZe8y_hA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-DPeTwYH4.mjs → acorex-modules-human-capital-management-skill.entity-CDXB7zyy.mjs} +8 -8
- package/fesm2022/acorex-modules-human-capital-management-skill.entity-CDXB7zyy.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +120 -13
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +125 -57
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +440 -164
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management-meeting-schedule.entity-D-RQ-D3d.mjs +155 -0
- package/fesm2022/acorex-modules-meeting-management-meeting-schedule.entity-D-RQ-D3d.mjs.map +1 -0
- package/fesm2022/acorex-modules-meeting-management.mjs +654 -620
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +835 -795
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-BshJoI7_.mjs → acorex-modules-party-management-acorex-modules-party-management-DzhGLAZb.mjs} +373 -230
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-DzhGLAZb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-party-management-industry.entity-CoMI4imz.mjs → acorex-modules-party-management-industry.entity-sLrAmADa.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-industry.entity-CoMI4imz.mjs.map → acorex-modules-party-management-industry.entity-sLrAmADa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-D-VpvXeU.mjs → acorex-modules-party-management-party-identifier-type.entity-WL-tJlK7.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-D-VpvXeU.mjs.map → acorex-modules-party-management-party-identifier-type.entity-WL-tJlK7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BcXi9BM0.mjs → acorex-modules-party-management-party-identifier.entity-BGJdllN8.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BcXi9BM0.mjs.map → acorex-modules-party-management-party-identifier.entity-BGJdllN8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-B-gMK84C.mjs → acorex-modules-party-management-party-relationship.entity-Bhqgy4-Y.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-B-gMK84C.mjs.map → acorex-modules-party-management-party-relationship.entity-Bhqgy4-Y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-OV4XUnfD.mjs → acorex-modules-party-management-party-role.entity-BpPCL3GG.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-role.entity-OV4XUnfD.mjs.map → acorex-modules-party-management-party-role.entity-BpPCL3GG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party.entity-Cwd9EqB4.mjs → acorex-modules-party-management-party.entity-v-YrPNOP.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party.entity-Cwd9EqB4.mjs.map → acorex-modules-party-management-party.entity-v-YrPNOP.mjs.map} +1 -1
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +444 -397
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management-email-jsa.command-DC3Zbfdn.mjs +115 -0
- package/fesm2022/acorex-modules-project-management-email-jsa.command-DC3Zbfdn.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-CJKR5FZw.mjs +113 -0
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-CJKR5FZw.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management-setup-jsa.command-Cztc8TDy.mjs +94 -0
- package/fesm2022/acorex-modules-project-management-setup-jsa.command-Cztc8TDy.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-b28tr2kE.mjs +77 -0
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-b28tr2kE.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management.mjs +1416 -279
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +83 -15
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +4 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-Je2Y8X62.mjs → acorex-modules-task-management-task-board.page-CaypEYjP.mjs} +3 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-Je2Y8X62.mjs.map → acorex-modules-task-management-task-board.page-CaypEYjP.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +3254 -3069
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +1 -1
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/help-desk/index.d.ts +32 -14
- package/human-capital-management/index.d.ts +150 -2
- package/locale-management/index.d.ts +27 -3
- package/location-management/index.d.ts +20 -2
- package/log-management/index.d.ts +8 -1
- package/meeting-management/index.d.ts +47 -20
- package/notification-management/index.d.ts +48 -36
- package/package.json +5 -5
- package/party-management/index.d.ts +43 -1
- package/platform-management/index.d.ts +33 -21
- package/project-management/index.d.ts +156 -3
- package/report-management/index.d.ts +14 -2
- package/task-management/index.d.ts +56 -2
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BbO_ea5W.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer.entity-rUNC9glL.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-CiVbcZ81.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-D4A3ZYFq.mjs +0 -723
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-D4A3ZYFq.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DfVvf8Fg.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-ByBqfKiF.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-DZ8ubvD6.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BtIVnv-C.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-DFCE3zcH.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-skill.entity-DPeTwYH4.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BshJoI7_.mjs.map +0 -1
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injector,
|
|
3
|
-
import * as
|
|
2
|
+
import { Injectable, NgModule, inject, Injector, input, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { createAllQueryView, AXPEntityQueryType, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
|
|
7
|
+
import { AXMEntityCrudServiceImpl, entityMasterCrudActions, entityMasterRecordActions, AXPEntityService, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
|
8
8
|
import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
|
|
9
9
|
import * as i1 from '@angular/router';
|
|
10
10
|
import { RouterModule } from '@angular/router';
|
|
11
11
|
import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
|
|
12
|
-
import * as
|
|
12
|
+
import * as i3$1 from '@acorex/core/translation';
|
|
13
13
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
14
14
|
import { AXPSystemActionType } from '@acorex/platform/core';
|
|
15
15
|
import { AXBadgeModule } from '@acorex/components/badge';
|
|
16
|
-
import * as
|
|
16
|
+
import * as i2 from '@acorex/components/button';
|
|
17
17
|
import { AXButtonModule } from '@acorex/components/button';
|
|
18
|
-
import * as
|
|
18
|
+
import * as i3 from '@acorex/components/decorators';
|
|
19
19
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
20
|
-
import * as
|
|
20
|
+
import * as i2$1 from '@acorex/components/loading';
|
|
21
21
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
22
22
|
import { AXFormatModule } from '@acorex/core/format';
|
|
23
|
-
import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
|
|
24
23
|
import { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
|
|
24
|
+
import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
|
|
25
25
|
|
|
26
26
|
const config = {
|
|
27
27
|
i18n: 'contact-management',
|
|
@@ -55,88 +55,6 @@ const RootConfig = {
|
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
class AXMContactManagementEntityProvider {
|
|
59
|
-
constructor() {
|
|
60
|
-
this.injector = inject(Injector);
|
|
61
|
-
}
|
|
62
|
-
preload() {
|
|
63
|
-
const module = RootConfig.module.name;
|
|
64
|
-
return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
|
|
65
|
-
module: module,
|
|
66
|
-
entity: entity.name,
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
async get(moduleName, entityName) {
|
|
70
|
-
if (moduleName == RootConfig.module.name) {
|
|
71
|
-
switch (entityName) {
|
|
72
|
-
case RootConfig.entities.contactMethodType.name:
|
|
73
|
-
return (await Promise.resolve().then(function () { return contactMethodType_entity; })).contactMethodTypeFactory(this.injector);
|
|
74
|
-
case RootConfig.entities.contactMethod.name:
|
|
75
|
-
return (await import('./acorex-modules-contact-management-contact-method.entity-DR6V9Nox.mjs')).contactMethodFactory(this.injector);
|
|
76
|
-
case RootConfig.entities.emergencyContact.name:
|
|
77
|
-
return (await import('./acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs')).emergencyContactFactory(this.injector);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider }); }
|
|
84
|
-
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, decorators: [{
|
|
86
|
-
type: Injectable
|
|
87
|
-
}] });
|
|
88
|
-
|
|
89
|
-
class AXMContactManagementMenuProvider {
|
|
90
|
-
constructor() {
|
|
91
|
-
this.entityService = inject(AXPEntityService);
|
|
92
|
-
this.sessionService = inject(AXPSessionService);
|
|
93
|
-
}
|
|
94
|
-
async provide(context) {
|
|
95
|
-
const module = RootConfig.module;
|
|
96
|
-
context.addItems([
|
|
97
|
-
{
|
|
98
|
-
priority: 9002,
|
|
99
|
-
text: '@contact-management:root-menu',
|
|
100
|
-
icon: module.icon,
|
|
101
|
-
children: [
|
|
102
|
-
{
|
|
103
|
-
text: '@contact-management:contact-method-type.plural-title',
|
|
104
|
-
path: this.entityService.createPath(module.name, RootConfig.entities.contactMethodType.name),
|
|
105
|
-
icon: RootConfig.entities.contactMethodType.icon,
|
|
106
|
-
priority: 5,
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
text: ``,
|
|
110
|
-
type: 'break',
|
|
111
|
-
priority: 10,
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
text: '@contact-management:emergency-contact.plural-title',
|
|
115
|
-
path: this.entityService.createPath(module.name, RootConfig.entities.emergencyContact.name),
|
|
116
|
-
icon: RootConfig.entities.emergencyContact.icon,
|
|
117
|
-
priority: 12,
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
text: '@contact-management:emergency-contact.page.title',
|
|
121
|
-
path: `${this.sessionService.application?.name}/emergency-contacts`,
|
|
122
|
-
icon: 'fa-light fa-phone-rotary',
|
|
123
|
-
priority: 13,
|
|
124
|
-
},
|
|
125
|
-
],
|
|
126
|
-
},
|
|
127
|
-
]);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
class AXMContactManagementSearchCommandProvider extends AXPSearchCommandProvider {
|
|
132
|
-
constructor() {
|
|
133
|
-
super(...arguments);
|
|
134
|
-
this.commands = [
|
|
135
|
-
// Commands will be added here following the correct pattern
|
|
136
|
-
];
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
58
|
class AXMContactMethodTypeService extends AXMEntityCrudServiceImpl {
|
|
141
59
|
}
|
|
142
60
|
class AXMContactMethodTypeServiceImpl extends AXMContactMethodTypeService {
|
|
@@ -378,9 +296,172 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
378
296
|
type: Injectable
|
|
379
297
|
}], ctorParameters: () => [] });
|
|
380
298
|
|
|
299
|
+
class AXMContactMethodTypeEntityModule {
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
301
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeEntityModule }); }
|
|
302
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeEntityModule, providers: [
|
|
303
|
+
{
|
|
304
|
+
provide: AXMContactMethodTypeService,
|
|
305
|
+
useClass: AXMContactMethodTypeServiceImpl,
|
|
306
|
+
},
|
|
307
|
+
] }); }
|
|
308
|
+
}
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodTypeEntityModule, decorators: [{
|
|
310
|
+
type: NgModule,
|
|
311
|
+
args: [{
|
|
312
|
+
imports: [],
|
|
313
|
+
exports: [],
|
|
314
|
+
declarations: [],
|
|
315
|
+
providers: [
|
|
316
|
+
{
|
|
317
|
+
provide: AXMContactMethodTypeService,
|
|
318
|
+
useClass: AXMContactMethodTypeServiceImpl,
|
|
319
|
+
},
|
|
320
|
+
],
|
|
321
|
+
}]
|
|
322
|
+
}] });
|
|
323
|
+
|
|
324
|
+
class AXMContactMethodEntityModule {
|
|
325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
326
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodEntityModule }); }
|
|
327
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodEntityModule, providers: [
|
|
328
|
+
{
|
|
329
|
+
provide: AXMContactMethodService,
|
|
330
|
+
useClass: AXMContactMethodServiceImpl,
|
|
331
|
+
},
|
|
332
|
+
] }); }
|
|
333
|
+
}
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactMethodEntityModule, decorators: [{
|
|
335
|
+
type: NgModule,
|
|
336
|
+
args: [{
|
|
337
|
+
imports: [],
|
|
338
|
+
exports: [],
|
|
339
|
+
declarations: [],
|
|
340
|
+
providers: [
|
|
341
|
+
{
|
|
342
|
+
provide: AXMContactMethodService,
|
|
343
|
+
useClass: AXMContactMethodServiceImpl,
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
}]
|
|
347
|
+
}] });
|
|
348
|
+
|
|
349
|
+
class AXMEmergencyContactEntityModule {
|
|
350
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
351
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactEntityModule }); }
|
|
352
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactEntityModule, providers: [
|
|
353
|
+
{
|
|
354
|
+
provide: AXMEmergencyContactService,
|
|
355
|
+
useClass: AXMEmergencyContactServiceImpl,
|
|
356
|
+
},
|
|
357
|
+
] }); }
|
|
358
|
+
}
|
|
359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactEntityModule, decorators: [{
|
|
360
|
+
type: NgModule,
|
|
361
|
+
args: [{
|
|
362
|
+
imports: [],
|
|
363
|
+
exports: [],
|
|
364
|
+
declarations: [],
|
|
365
|
+
providers: [
|
|
366
|
+
{
|
|
367
|
+
provide: AXMEmergencyContactService,
|
|
368
|
+
useClass: AXMEmergencyContactServiceImpl,
|
|
369
|
+
},
|
|
370
|
+
],
|
|
371
|
+
}]
|
|
372
|
+
}] });
|
|
373
|
+
|
|
374
|
+
// Entity Services
|
|
375
|
+
|
|
376
|
+
class AXMContactManagementEntityProvider {
|
|
377
|
+
constructor() {
|
|
378
|
+
this.injector = inject(Injector);
|
|
379
|
+
}
|
|
380
|
+
preload() {
|
|
381
|
+
const module = RootConfig.module.name;
|
|
382
|
+
return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
|
|
383
|
+
module: module,
|
|
384
|
+
entity: entity.name,
|
|
385
|
+
}));
|
|
386
|
+
}
|
|
387
|
+
async get(moduleName, entityName) {
|
|
388
|
+
if (moduleName == RootConfig.module.name) {
|
|
389
|
+
switch (entityName) {
|
|
390
|
+
case RootConfig.entities.contactMethodType.name:
|
|
391
|
+
return (await Promise.resolve().then(function () { return contactMethodType_entity; })).contactMethodTypeFactory(this.injector);
|
|
392
|
+
case RootConfig.entities.contactMethod.name:
|
|
393
|
+
return (await import('./acorex-modules-contact-management-contact-method.entity-DR6V9Nox.mjs')).contactMethodFactory(this.injector);
|
|
394
|
+
case RootConfig.entities.emergencyContact.name:
|
|
395
|
+
return (await import('./acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs')).emergencyContactFactory(this.injector);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return null;
|
|
399
|
+
}
|
|
400
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
401
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider }); }
|
|
402
|
+
}
|
|
403
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementEntityProvider, decorators: [{
|
|
404
|
+
type: Injectable
|
|
405
|
+
}] });
|
|
406
|
+
|
|
407
|
+
class AXMContactManagementMenuProvider {
|
|
408
|
+
constructor() {
|
|
409
|
+
this.entityService = inject(AXPEntityService);
|
|
410
|
+
this.sessionService = inject(AXPSessionService);
|
|
411
|
+
}
|
|
412
|
+
async provide(context) {
|
|
413
|
+
const module = RootConfig.module;
|
|
414
|
+
context.addItems([
|
|
415
|
+
{
|
|
416
|
+
priority: 9002,
|
|
417
|
+
text: '@contact-management:root-menu',
|
|
418
|
+
icon: module.icon,
|
|
419
|
+
children: [
|
|
420
|
+
{
|
|
421
|
+
text: '@contact-management:contact-method-type.plural-title',
|
|
422
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.contactMethodType.name),
|
|
423
|
+
icon: RootConfig.entities.contactMethodType.icon,
|
|
424
|
+
priority: 5,
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
text: ``,
|
|
428
|
+
type: 'break',
|
|
429
|
+
priority: 10,
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
text: '@contact-management:emergency-contact.plural-title',
|
|
433
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.emergencyContact.name),
|
|
434
|
+
icon: RootConfig.entities.emergencyContact.icon,
|
|
435
|
+
priority: 12,
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
text: '@contact-management:emergency-contact.page.title',
|
|
439
|
+
path: `${this.sessionService.application?.name}/emergency-contacts`,
|
|
440
|
+
icon: 'fa-light fa-phone-rotary',
|
|
441
|
+
priority: 13,
|
|
442
|
+
},
|
|
443
|
+
],
|
|
444
|
+
},
|
|
445
|
+
]);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
class AXMContactManagementSearchCommandProvider extends AXPSearchCommandProvider {
|
|
450
|
+
constructor() {
|
|
451
|
+
super(...arguments);
|
|
452
|
+
this.commands = [
|
|
453
|
+
// Commands will be added here following the correct pattern
|
|
454
|
+
];
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
381
458
|
class AXMContactManagementModule {
|
|
382
459
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
383
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, imports: [CommonModule,
|
|
460
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, imports: [CommonModule,
|
|
461
|
+
// Entity Modules
|
|
462
|
+
AXMContactMethodTypeEntityModule,
|
|
463
|
+
AXMContactMethodEntityModule,
|
|
464
|
+
AXMEmergencyContactEntityModule, i1.RouterModule] }); }
|
|
384
465
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMContactManagementModule, providers: [
|
|
385
466
|
// Entity Provider
|
|
386
467
|
{
|
|
@@ -410,20 +491,11 @@ class AXMContactManagementModule {
|
|
|
410
491
|
},
|
|
411
492
|
multi: true,
|
|
412
493
|
},
|
|
413
|
-
// Entity Services
|
|
414
|
-
{
|
|
415
|
-
provide: AXMContactMethodTypeService,
|
|
416
|
-
useClass: AXMContactMethodTypeServiceImpl,
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
provide: AXMContactMethodService,
|
|
420
|
-
useClass: AXMContactMethodServiceImpl,
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
provide: AXMEmergencyContactService,
|
|
424
|
-
useClass: AXMEmergencyContactServiceImpl,
|
|
425
|
-
},
|
|
426
494
|
], imports: [CommonModule,
|
|
495
|
+
// Entity Modules
|
|
496
|
+
AXMContactMethodTypeEntityModule,
|
|
497
|
+
AXMContactMethodEntityModule,
|
|
498
|
+
AXMEmergencyContactEntityModule,
|
|
427
499
|
RouterModule.forChild([{
|
|
428
500
|
path: ':app/emergency-contacts',
|
|
429
501
|
component: AXPRootLayoutComponent,
|
|
@@ -441,6 +513,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
441
513
|
args: [{
|
|
442
514
|
imports: [
|
|
443
515
|
CommonModule,
|
|
516
|
+
// Entity Modules
|
|
517
|
+
AXMContactMethodTypeEntityModule,
|
|
518
|
+
AXMContactMethodEntityModule,
|
|
519
|
+
AXMEmergencyContactEntityModule,
|
|
444
520
|
RouterModule.forChild([{
|
|
445
521
|
path: ':app/emergency-contacts',
|
|
446
522
|
component: AXPRootLayoutComponent,
|
|
@@ -482,19 +558,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
482
558
|
},
|
|
483
559
|
multi: true,
|
|
484
560
|
},
|
|
485
|
-
// Entity Services
|
|
486
|
-
{
|
|
487
|
-
provide: AXMContactMethodTypeService,
|
|
488
|
-
useClass: AXMContactMethodTypeServiceImpl,
|
|
489
|
-
},
|
|
490
|
-
{
|
|
491
|
-
provide: AXMContactMethodService,
|
|
492
|
-
useClass: AXMContactMethodServiceImpl,
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
provide: AXMEmergencyContactService,
|
|
496
|
-
useClass: AXMEmergencyContactServiceImpl,
|
|
497
|
-
},
|
|
498
561
|
],
|
|
499
562
|
}]
|
|
500
563
|
}] });
|
|
@@ -558,6 +621,100 @@ var permissionDefinition_provider = /*#__PURE__*/Object.freeze({
|
|
|
558
621
|
AXMPermissionDefinitionProvider: AXMPermissionDefinitionProvider
|
|
559
622
|
});
|
|
560
623
|
|
|
624
|
+
class AXMEmergencyContactItemComponent {
|
|
625
|
+
constructor() {
|
|
626
|
+
this.contact = input.required(...(ngDevMode ? [{ debugName: "contact" }] : []));
|
|
627
|
+
this.expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
|
|
628
|
+
this.categoryIcon = computed(() => {
|
|
629
|
+
const c = this.contact()?.categories?.[0];
|
|
630
|
+
return c?.icon ?? 'fa-light fa-circle-info';
|
|
631
|
+
}, ...(ngDevMode ? [{ debugName: "categoryIcon" }] : []));
|
|
632
|
+
this.categoryColor = computed(() => {
|
|
633
|
+
const c = this.contact()?.categories?.[0];
|
|
634
|
+
return c?.color ?? 'fa-light fa-circle-info';
|
|
635
|
+
}, ...(ngDevMode ? [{ debugName: "categoryColor" }] : []));
|
|
636
|
+
this.messageDisabled = computed(() => {
|
|
637
|
+
const c = this.contact();
|
|
638
|
+
const smsNumber = c.textNumber || c.phoneNumber;
|
|
639
|
+
return !(c.isTextCapable && !!smsNumber);
|
|
640
|
+
}, ...(ngDevMode ? [{ debugName: "messageDisabled" }] : []));
|
|
641
|
+
this.callDisabled = computed(() => !this.contact().phoneNumber, ...(ngDevMode ? [{ debugName: "callDisabled" }] : []));
|
|
642
|
+
this.coverageText = computed(() => {
|
|
643
|
+
const c = this.contact();
|
|
644
|
+
const coverage = [];
|
|
645
|
+
if (c.isNational)
|
|
646
|
+
coverage.push('National');
|
|
647
|
+
if (c.isRegional)
|
|
648
|
+
coverage.push('Regional');
|
|
649
|
+
if (c.isLocal)
|
|
650
|
+
coverage.push('Local');
|
|
651
|
+
return coverage.join(', ');
|
|
652
|
+
}, ...(ngDevMode ? [{ debugName: "coverageText" }] : []));
|
|
653
|
+
this.capabilitiesText = computed(() => {
|
|
654
|
+
const c = this.contact();
|
|
655
|
+
const caps = [];
|
|
656
|
+
if (c.isTextCapable)
|
|
657
|
+
caps.push('Text');
|
|
658
|
+
if (c.isVideoCallCapable)
|
|
659
|
+
caps.push('Video');
|
|
660
|
+
if (!caps.length)
|
|
661
|
+
return 'Voice Only';
|
|
662
|
+
return caps.join(' ');
|
|
663
|
+
}, ...(ngDevMode ? [{ debugName: "capabilitiesText" }] : []));
|
|
664
|
+
}
|
|
665
|
+
toggleExpanded() {
|
|
666
|
+
this.expanded.update((v) => !v);
|
|
667
|
+
}
|
|
668
|
+
handleCall() {
|
|
669
|
+
const number = this.contact().phoneNumber;
|
|
670
|
+
if (number) {
|
|
671
|
+
window.open(`tel:${number}`, '_self');
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
handleText() {
|
|
675
|
+
const c = this.contact();
|
|
676
|
+
const smsNumber = c.textNumber || c.phoneNumber;
|
|
677
|
+
if (c.isTextCapable && smsNumber) {
|
|
678
|
+
window.open(`sms:${smsNumber}`, '_self');
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
visitWebsite() {
|
|
682
|
+
const url = this.contact().website;
|
|
683
|
+
if (url) {
|
|
684
|
+
window.open(url, '_blank');
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
async copyInfo() {
|
|
688
|
+
const c = this.contact();
|
|
689
|
+
const info = {
|
|
690
|
+
name: c.name,
|
|
691
|
+
phone: c.phoneNumber,
|
|
692
|
+
text: c.textNumber,
|
|
693
|
+
email: c.email,
|
|
694
|
+
website: c.website,
|
|
695
|
+
availability: c.availability,
|
|
696
|
+
coverage: this.coverageText(),
|
|
697
|
+
capabilities: this.capabilitiesText(),
|
|
698
|
+
};
|
|
699
|
+
try {
|
|
700
|
+
if (navigator?.clipboard) {
|
|
701
|
+
await navigator.clipboard.writeText(JSON.stringify(info, null, 2));
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
catch {
|
|
705
|
+
// ignore
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
709
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMEmergencyContactItemComponent, isStandalone: true, selector: "axm-emergency-contact-item", inputs: { contact: { classPropertyName: "contact", publicName: "contact", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "\"ax-block ax-rounded-lg ax-border ax-lightest-surface dark:ax-darker-surface ax-shadow-sm\"" } }, ngImport: i0, template: "<div class=\"ax-space-y-3 ax-py-4\">\n <!-- Header -->\n <div class=\"ax-flex ax-items-center ax-justify-center ax-gap-3 ax-flex-col\">\n <div class=\"ax-flex ax-items-start ax-gap-3 ax-min-w-0 ax-px-4 ax-w-full\">\n <div\n class=\"ax-flex ax-border ax-items-center ax-justify-center ax-w-10 ax-h-10 ax-rounded-md ax-lighter-surface dark:ax-surface\"\n >\n <ax-icon [icon]=\"categoryIcon()\" [style.color]=\"categoryColor()\"></ax-icon>\n </div>\n <div class=\"ax-min-w-0\">\n <div class=\"ax-text-lg ax-font-semibold ax-text-default ax-truncate\">{{ contact().name }}</div>\n @if (contact().shortName) {\n <div class=\"ax-text-sm ax-text-muted ax-truncate\">{{ contact().shortName }}</div>\n }\n </div>\n </div>\n <div class=\"ax-w-full ax-border-t ax-border-lighter dark:ax-border-darker\"></div>\n <div class=\"ax-flex ax-items-center ax-justify-between ax-sm ax-w-full ax-px-4\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button [look]=\"'blank'\" (onClick)=\"handleText()\" [disabled]=\"messageDisabled()\">\n <ax-icon icon=\"fa-light fa-message\" class=\"ax-text-primary\"></ax-icon>\n </ax-button>\n <ax-button [look]=\"'blank'\" (onClick)=\"handleCall()\" [disabled]=\"callDisabled()\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n </ax-button>\n </div>\n <ax-button [look]=\"'blank'\" [text]=\"'More details'\" (onClick)=\"toggleExpanded()\">\n <ax-icon [icon]=\"expanded() ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Details -->\n @if (expanded()) {\n <div class=\"ax-px-6 ax-border-t ax-space-y-4 ax-pt-4 ax-border-lighter dark:ax-border-darker\">\n <!-- Rowed details; only render when data exists -->\n <div class=\"ax-grid ax-grid-cols-1 ax-gap-3\">\n <div class=\"ax-flex ax-items-center ax-gap-2\" *ngIf=\"true\">\n <ax-icon icon=\"fa-light fa-building\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Company Name</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().name }}</div>\n </div>\n\n @if (contact().phoneNumber || contact().shortName) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Phone</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">\n {{ contact().shortName || contact().phoneNumber }}\n </div>\n </div>\n }\n\n @if (contact().email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Email</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().email }}</div>\n </div>\n }\n\n @if (contact().website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Website</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-right\">\n <a class=\"ax-text-accent ax-hover:underline\" [href]=\"contact().website\" target=\"_blank\">{{\n contact().website\n }}</a>\n </div>\n </div>\n }\n\n @if (coverageText()) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-location-dot\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Coverage</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ coverageText() }}</div>\n </div>\n }\n\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-wand-magic-sparkles\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Capabilities</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ capabilitiesText() }}</div>\n </div>\n\n @if (contact().availability) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-clock\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Availability</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().availability }}</div>\n </div>\n }\n\n @if (contact().lastVerified) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-badge-check\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Last Verified</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">\n {{ contact().lastVerified | date }}\n </div>\n </div>\n }\n </div>\n\n <!-- Footer actions -->\n <div class=\"ax-flex ax-justify-end ax-gap-2\">\n <ax-button [look]=\"'blank'\" (onClick)=\"copyInfo()\" [text]=\"'Copy Info'\">\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n @if (contact().website) {\n <ax-button [look]=\"'blank'\" [text]=\"'Check Website'\" (onClick)=\"visitWebsite()\">\n <ax-icon icon=\"fa-light fa-arrow-up-right-from-square\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.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: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
710
|
+
}
|
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactItemComponent, decorators: [{
|
|
712
|
+
type: Component,
|
|
713
|
+
args: [{ selector: 'axm-emergency-contact-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXButtonModule, AXDecoratorModule], host: {
|
|
714
|
+
'[class]': '"ax-block ax-rounded-lg ax-border ax-lightest-surface dark:ax-darker-surface ax-shadow-sm"',
|
|
715
|
+
}, template: "<div class=\"ax-space-y-3 ax-py-4\">\n <!-- Header -->\n <div class=\"ax-flex ax-items-center ax-justify-center ax-gap-3 ax-flex-col\">\n <div class=\"ax-flex ax-items-start ax-gap-3 ax-min-w-0 ax-px-4 ax-w-full\">\n <div\n class=\"ax-flex ax-border ax-items-center ax-justify-center ax-w-10 ax-h-10 ax-rounded-md ax-lighter-surface dark:ax-surface\"\n >\n <ax-icon [icon]=\"categoryIcon()\" [style.color]=\"categoryColor()\"></ax-icon>\n </div>\n <div class=\"ax-min-w-0\">\n <div class=\"ax-text-lg ax-font-semibold ax-text-default ax-truncate\">{{ contact().name }}</div>\n @if (contact().shortName) {\n <div class=\"ax-text-sm ax-text-muted ax-truncate\">{{ contact().shortName }}</div>\n }\n </div>\n </div>\n <div class=\"ax-w-full ax-border-t ax-border-lighter dark:ax-border-darker\"></div>\n <div class=\"ax-flex ax-items-center ax-justify-between ax-sm ax-w-full ax-px-4\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-button [look]=\"'blank'\" (onClick)=\"handleText()\" [disabled]=\"messageDisabled()\">\n <ax-icon icon=\"fa-light fa-message\" class=\"ax-text-primary\"></ax-icon>\n </ax-button>\n <ax-button [look]=\"'blank'\" (onClick)=\"handleCall()\" [disabled]=\"callDisabled()\">\n <ax-icon icon=\"fa-light fa-phone\" class=\"ax-text-primary\"></ax-icon>\n </ax-button>\n </div>\n <ax-button [look]=\"'blank'\" [text]=\"'More details'\" (onClick)=\"toggleExpanded()\">\n <ax-icon [icon]=\"expanded() ? 'fa-light fa-chevron-up' : 'fa-light fa-chevron-down'\"></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- Details -->\n @if (expanded()) {\n <div class=\"ax-px-6 ax-border-t ax-space-y-4 ax-pt-4 ax-border-lighter dark:ax-border-darker\">\n <!-- Rowed details; only render when data exists -->\n <div class=\"ax-grid ax-grid-cols-1 ax-gap-3\">\n <div class=\"ax-flex ax-items-center ax-gap-2\" *ngIf=\"true\">\n <ax-icon icon=\"fa-light fa-building\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Company Name</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().name }}</div>\n </div>\n\n @if (contact().phoneNumber || contact().shortName) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-phone\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Phone</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">\n {{ contact().shortName || contact().phoneNumber }}\n </div>\n </div>\n }\n\n @if (contact().email) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-envelope\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Email</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().email }}</div>\n </div>\n }\n\n @if (contact().website) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-globe\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Website</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-right\">\n <a class=\"ax-text-accent ax-hover:underline\" [href]=\"contact().website\" target=\"_blank\">{{\n contact().website\n }}</a>\n </div>\n </div>\n }\n\n @if (coverageText()) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-location-dot\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Coverage</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ coverageText() }}</div>\n </div>\n }\n\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-wand-magic-sparkles\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Capabilities</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ capabilitiesText() }}</div>\n </div>\n\n @if (contact().availability) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-clock\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Availability</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">{{ contact().availability }}</div>\n </div>\n }\n\n @if (contact().lastVerified) {\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <ax-icon icon=\"fa-light fa-badge-check\"></ax-icon>\n <div class=\"ax-text-sm ax-text-muted\">Last Verified</div>\n <div class=\"ax-flex-1 ax-text-sm ax-text-default ax-text-right\">\n {{ contact().lastVerified | date }}\n </div>\n </div>\n }\n </div>\n\n <!-- Footer actions -->\n <div class=\"ax-flex ax-justify-end ax-gap-2\">\n <ax-button [look]=\"'blank'\" (onClick)=\"copyInfo()\" [text]=\"'Copy Info'\">\n <ax-icon icon=\"fa-light fa-copy\"></ax-icon>\n </ax-button>\n @if (contact().website) {\n <ax-button [look]=\"'blank'\" [text]=\"'Check Website'\" (onClick)=\"visitWebsite()\">\n <ax-icon icon=\"fa-light fa-arrow-up-right-from-square\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n }\n</div>\n" }]
|
|
716
|
+
}] });
|
|
717
|
+
|
|
561
718
|
class AXMEmergencyContactsPageComponent extends AXPPageLayoutBaseComponent {
|
|
562
719
|
constructor() {
|
|
563
720
|
super(...arguments);
|
|
@@ -757,7 +914,7 @@ class AXMEmergencyContactsPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
757
914
|
provide: AXPPageLayoutBase,
|
|
758
915
|
useExisting: AXMEmergencyContactsPageComponent,
|
|
759
916
|
},
|
|
760
|
-
], 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 }); }
|
|
917
|
+
], 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 <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\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 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 dashboardContacts(); track contact.id) {\n <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\n }\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-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 displayContacts(); track contact.id) {\n <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\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: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.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: "component", type: AXMEmergencyContactItemComponent, selector: "axm-emergency-contact-item", inputs: ["contact"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
761
918
|
}
|
|
762
919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEmergencyContactsPageComponent, decorators: [{
|
|
763
920
|
type: Component,
|
|
@@ -771,14 +928,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
771
928
|
AXFormatModule,
|
|
772
929
|
AXPPageLayoutComponent,
|
|
773
930
|
AXPThemeLayoutBlockComponent,
|
|
931
|
+
AXMEmergencyContactItemComponent,
|
|
774
932
|
], host: {
|
|
775
|
-
'(window:resize)': 'onResize()'
|
|
933
|
+
'(window:resize)': 'onResize()',
|
|
776
934
|
}, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
777
935
|
{
|
|
778
936
|
provide: AXPPageLayoutBase,
|
|
779
937
|
useExisting: AXMEmergencyContactsPageComponent,
|
|
780
938
|
},
|
|
781
|
-
], 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"] }]
|
|
939
|
+
], 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 <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\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 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 dashboardContacts(); track contact.id) {\n <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\n }\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-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 displayContacts(); track contact.id) {\n <axm-emergency-contact-item [contact]=\"contact\"></axm-emergency-contact-item>\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"] }]
|
|
782
940
|
}] });
|
|
783
941
|
|
|
784
942
|
var emergencyContactsPage_component = /*#__PURE__*/Object.freeze({
|
|
@@ -790,5 +948,5 @@ var emergencyContactsPage_component = /*#__PURE__*/Object.freeze({
|
|
|
790
948
|
* Generated bundle index. Do not edit.
|
|
791
949
|
*/
|
|
792
950
|
|
|
793
|
-
export { AXMContactManagementEntityProvider, AXMContactManagementMenuProvider, AXMContactManagementModule, AXMContactManagementSearchCommandProvider, AXMContactMethodService, AXMContactMethodServiceImpl, AXMContactMethodTypeService, AXMContactMethodTypeServiceImpl, AXMEmergencyContactService, AXMEmergencyContactServiceImpl, AXMEmergencyContactsPageComponent, AXMPermissionDefinitionProvider, RootConfig, contactMethodTypeFactory };
|
|
951
|
+
export { AXMContactManagementEntityProvider, AXMContactManagementMenuProvider, AXMContactManagementModule, AXMContactManagementSearchCommandProvider, AXMContactMethodEntityModule, AXMContactMethodService, AXMContactMethodServiceImpl, AXMContactMethodTypeEntityModule, AXMContactMethodTypeService, AXMContactMethodTypeServiceImpl, AXMEmergencyContactEntityModule, AXMEmergencyContactItemComponent, AXMEmergencyContactService, AXMEmergencyContactServiceImpl, AXMEmergencyContactsPageComponent, AXMPermissionDefinitionProvider, RootConfig, contactMethodTypeFactory };
|
|
794
952
|
//# sourceMappingURL=acorex-modules-contact-management.mjs.map
|