@acorex/modules 21.0.0-next.5 → 21.0.0-next.8
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 +1 -0
- package/business-core/README.md +44 -1
- package/calendar-management/index.d.ts +6 -7
- package/document-management/index.d.ts +1544 -174
- package/fesm2022/acorex-modules-application-management.mjs +2 -0
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs} +23 -23
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs.map → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs} +4 -4
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs.map → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs → acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs} +95 -51
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs → acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs} +6 -6
- package/fesm2022/acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs → acorex-modules-auth-login.module-DLWlieUn.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs.map → acorex-modules-auth-login.module-DLWlieUn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs → acorex-modules-auth-master.layout-BzV1eUvM.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs.map → acorex-modules-auth-master.layout-BzV1eUvM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs.map → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs → acorex-modules-auth-password.component-BR2qrph-.mjs} +9 -9
- package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs.map → acorex-modules-auth-password.component-BR2qrph-.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs +563 -0
- package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs → acorex-modules-auth-routes-BRQJ6Mx_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs.map → acorex-modules-auth-routes-BRQJ6Mx_.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs +58 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs.map → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs.map → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs.map → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs → acorex-modules-business-core-business-status.entity-BYUneIcN.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-business-status.entity-BYUneIcN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs → acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-industry.entity-bwgPAZDk.mjs → acorex-modules-business-core-industry.entity-CGNfgpMs.mjs} +2 -2
- package/fesm2022/acorex-modules-business-core-industry.entity-CGNfgpMs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs → acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs} +2 -1
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core.mjs +4 -4
- package/fesm2022/acorex-modules-calendar-management.mjs +46 -74
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +6 -3
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs → acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs} +2 -1
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs → acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs} +2 -1
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs.map → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs.map → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs.map → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs} +7 -7
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs.map → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs.map → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs.map → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs.map → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs.map → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs.map → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs.map → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs.map → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +9329 -1
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-financial-core.mjs +7 -5
- package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs +59 -0
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs +59 -0
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs +381 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs → acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs} +1 -2
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs → acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs} +11 -3
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs +62 -0
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +115 -36
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs → acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs → acorex-modules-learning-management-course.entity-BN8XHAPz.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-course.entity-BN8XHAPz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-skill.entity-CK93JIPg.mjs → acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs} +2 -1
- package/fesm2022/acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs → acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-training.entity-KfxtUHEK.mjs → acorex-modules-learning-management-training.entity-DHGSlVR3.mjs} +2 -2
- package/fesm2022/acorex-modules-learning-management-training.entity-DHGSlVR3.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +5 -5
- package/fesm2022/acorex-modules-notification-management.mjs +34 -16
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management.mjs +4 -0
- package/fesm2022/acorex-modules-order-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs → acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-m7QrOTgN.mjs → acorex-modules-organization-management-position.entity-vbmjSfyb.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-position.entity-vbmjSfyb.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +2 -2
- package/fesm2022/{acorex-modules-person-management-person.entity-DWfnmtVe.mjs → acorex-modules-person-management-person.entity-BnliZw-K.mjs} +35 -33
- package/fesm2022/acorex-modules-person-management-person.entity-BnliZw-K.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs} +4 -2
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs → acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs} +3 -3
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/{acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs → acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs → acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs.map +1 -0
- package/fesm2022/{acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs → acorex-modules-product-catalog-product.entity--aXivZUd.mjs} +2 -1
- package/fesm2022/acorex-modules-product-catalog-product.entity--aXivZUd.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog.mjs +3 -3
- package/fesm2022/acorex-modules-project-management.mjs +32 -1
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs → acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs} +9 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +2 -2
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +3 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs} +18 -18
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs.map → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs.map → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs.map → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +3 -0
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs +2246 -0
- package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +21 -8
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +2 -0
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +2074 -28
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/human-capital-management/index.d.ts +4 -1
- package/package.json +2 -2
- package/task-management/index.d.ts +32 -5
- package/workflow-management/index.d.ts +530 -8
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs +0 -226
- package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs +0 -109
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-industry.entity-bwgPAZDk.mjs.map +0 -1
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs +0 -8995
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs +0 -388
- package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-skill.entity-CK93JIPg.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-training.entity-KfxtUHEK.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-m7QrOTgN.mjs.map +0 -1
- package/fesm2022/acorex-modules-person-management-person.entity-DWfnmtVe.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs.map +0 -1
- package/fesm2022/acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs +0 -1364
- package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs.map +0 -1
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import * as i2$1 from '@acorex/components/button';
|
|
2
|
-
import { AXButtonModule } from '@acorex/components/button';
|
|
3
|
-
import * as i9 from '@acorex/components/check-box';
|
|
4
|
-
import { AXCheckBoxModule } from '@acorex/components/check-box';
|
|
5
|
-
import * as i1$2 from '@acorex/components/decorators';
|
|
6
|
-
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
7
|
-
import { AXDialogService } from '@acorex/components/dialog';
|
|
8
|
-
import * as i1$1 from '@acorex/components/form';
|
|
9
|
-
import { AXFormModule, AXFormComponent } from '@acorex/components/form';
|
|
10
|
-
import * as i7 from '@acorex/components/label';
|
|
11
|
-
import { AXLabelModule } from '@acorex/components/label';
|
|
12
|
-
import * as i2$2 from '@acorex/components/loading';
|
|
13
|
-
import { AXLoadingModule } from '@acorex/components/loading';
|
|
14
|
-
import * as i5 from '@acorex/components/password-box';
|
|
15
|
-
import { AXPasswordBoxModule } from '@acorex/components/password-box';
|
|
16
|
-
import * as i4 from '@acorex/components/text-box';
|
|
17
|
-
import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
18
|
-
import * as i5$1 from '@acorex/core/translation';
|
|
19
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
|
20
|
-
import * as i1 from '@angular/common';
|
|
21
|
-
import { CommonModule } from '@angular/common';
|
|
22
|
-
import * as i0 from '@angular/core';
|
|
23
|
-
import { inject, ViewChild, Component } from '@angular/core';
|
|
24
|
-
import { RouterModule, ActivatedRoute, Router } from '@angular/router';
|
|
25
|
-
import { AXToastService } from '@acorex/components/toast';
|
|
26
|
-
import { AXValidationModule } from '@acorex/core/validation';
|
|
27
|
-
import { AXPSessionService } from '@acorex/platform/auth';
|
|
28
|
-
import { AXPHomePageService } from '@acorex/platform/common';
|
|
29
|
-
import * as i2 from '@angular/forms';
|
|
30
|
-
import { FormsModule } from '@angular/forms';
|
|
31
|
-
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
32
|
-
import { A as AXM_AUTH_CONFIG_TOKEN, a as AXMAuthenticationTypes } from './acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs';
|
|
33
|
-
|
|
34
|
-
const MODULES = [
|
|
35
|
-
CommonModule,
|
|
36
|
-
FormsModule,
|
|
37
|
-
AXFormModule,
|
|
38
|
-
AXTextBoxModule,
|
|
39
|
-
AXPasswordBoxModule,
|
|
40
|
-
AXButtonModule,
|
|
41
|
-
AXLabelModule,
|
|
42
|
-
AXDecoratorModule,
|
|
43
|
-
AXCheckBoxModule,
|
|
44
|
-
AXTranslationModule,
|
|
45
|
-
AXTranslationModule,
|
|
46
|
-
AXLoadingModule,
|
|
47
|
-
RouterModule,
|
|
48
|
-
AXValidationModule,
|
|
49
|
-
];
|
|
50
|
-
class AXPLoginPasswordComponent {
|
|
51
|
-
constructor() {
|
|
52
|
-
this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
|
|
53
|
-
this.v1 = '';
|
|
54
|
-
this.v2 = '';
|
|
55
|
-
this.isLoading$ = new BehaviorSubject(false);
|
|
56
|
-
this.isExternalLoading$ = new BehaviorSubject(false);
|
|
57
|
-
this.submitText = 'signin.submit';
|
|
58
|
-
this.dialogService = inject(AXDialogService);
|
|
59
|
-
this.sessionService = inject(AXPSessionService);
|
|
60
|
-
this.activateRoute = inject(ActivatedRoute);
|
|
61
|
-
this.homePageService = inject(AXPHomePageService);
|
|
62
|
-
this.toastService = inject(AXToastService);
|
|
63
|
-
this.router = inject(Router);
|
|
64
|
-
this.isKeepLogin = false;
|
|
65
|
-
}
|
|
66
|
-
// Computed property to check if external providers exist
|
|
67
|
-
get hasExternalProviders() {
|
|
68
|
-
return !!(this.configs?.externalProviders && Object.keys(this.configs.externalProviders).length > 0);
|
|
69
|
-
}
|
|
70
|
-
ngOnInit() {
|
|
71
|
-
this.l2 = 'password';
|
|
72
|
-
switch (this.configs.type) {
|
|
73
|
-
case AXMAuthenticationTypes.EmailPassword:
|
|
74
|
-
this.l1 = 'email';
|
|
75
|
-
break;
|
|
76
|
-
case AXMAuthenticationTypes.MobilePassword:
|
|
77
|
-
this.l1 = 'mobile';
|
|
78
|
-
break;
|
|
79
|
-
case AXMAuthenticationTypes.UsernameEmailPassword:
|
|
80
|
-
this.l1 = 'username-email';
|
|
81
|
-
break;
|
|
82
|
-
case AXMAuthenticationTypes.UsernamePassword:
|
|
83
|
-
default:
|
|
84
|
-
this.l1 = 'username';
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
handleForgotOnClick() {
|
|
88
|
-
this.router.navigate(['/auth/forgot']);
|
|
89
|
-
}
|
|
90
|
-
handleRegisterOnClick() {
|
|
91
|
-
this.router.navigate([this.configs.signup?.url || '/auth/register']);
|
|
92
|
-
}
|
|
93
|
-
handleLoginClick() {
|
|
94
|
-
this.sessionService.setStrategy(this.configs.defaultStrategyName || 'user-pass');
|
|
95
|
-
const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];
|
|
96
|
-
this.form.validate().then(async (form) => {
|
|
97
|
-
console.log(this.configs.defaultStrategyName);
|
|
98
|
-
if (form.result) {
|
|
99
|
-
this.isLoading$.next(true);
|
|
100
|
-
this.submitText = 'processing';
|
|
101
|
-
this.submitText = 'redirecting';
|
|
102
|
-
try {
|
|
103
|
-
const strategy = this.sessionService.getSessionData()?.strategy;
|
|
104
|
-
if (!strategy) {
|
|
105
|
-
throw new Error('Strategy not found');
|
|
106
|
-
}
|
|
107
|
-
await this.sessionService.signin({
|
|
108
|
-
strategy: strategy,
|
|
109
|
-
username: this.v1,
|
|
110
|
-
password: this.v2,
|
|
111
|
-
});
|
|
112
|
-
await this.sessionService.signInComplete();
|
|
113
|
-
// Check authentication status before navigation
|
|
114
|
-
const isAuthenticated = await firstValueFrom(this.sessionService.isAuthenticated$);
|
|
115
|
-
if (!isAuthenticated) {
|
|
116
|
-
throw new Error('Authentication failed after signin');
|
|
117
|
-
}
|
|
118
|
-
const currentApplication = await firstValueFrom(this.sessionService.application$);
|
|
119
|
-
if (!currentApplication) {
|
|
120
|
-
if (this.sessionService.tenant?.id == null) {
|
|
121
|
-
this.router.navigate(['/auth/account/tenant-chooser']);
|
|
122
|
-
}
|
|
123
|
-
else if (this.sessionService.application?.id == null) {
|
|
124
|
-
this.router.navigate(['/auth/account/app-chooser']);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else if (redirectUrl) {
|
|
128
|
-
this.router.navigate([redirectUrl]);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
await this.homePageService.navigateTo();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
let errorMsg = error?.error?.error_description ||
|
|
136
|
-
error?.error?.error ||
|
|
137
|
-
error?.message ||
|
|
138
|
-
'An error occurred during sign in.';
|
|
139
|
-
if (typeof errorMsg === 'object') {
|
|
140
|
-
// اگر شیء بود، سعی کن یک فیلد message یا description را نمایش بدهی
|
|
141
|
-
errorMsg = errorMsg.message || errorMsg.error_description || JSON.stringify(errorMsg);
|
|
142
|
-
}
|
|
143
|
-
this.toastService.show({
|
|
144
|
-
color: 'danger',
|
|
145
|
-
content: errorMsg,
|
|
146
|
-
timeOut: 5000,
|
|
147
|
-
});
|
|
148
|
-
console.log({ error });
|
|
149
|
-
this.submitText = 'signin.submit';
|
|
150
|
-
this.v2 = null;
|
|
151
|
-
this.isLoading$.next(false);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
async handleExternalSignIn(provider) {
|
|
157
|
-
this.sessionService.setStrategy(provider);
|
|
158
|
-
try {
|
|
159
|
-
this.isExternalLoading$.next(true);
|
|
160
|
-
// Get provider configuration (optional, for validation)
|
|
161
|
-
const providerConfig = this.configs?.externalProviders?.[provider];
|
|
162
|
-
if (!providerConfig) {
|
|
163
|
-
throw new Error(`Provider '${provider}' is not configured`);
|
|
164
|
-
}
|
|
165
|
-
await this.sessionService.signin({ strategy: provider });
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
console.error(`${provider} sign-in error:`, error);
|
|
169
|
-
// Optionally show an error message to the user here
|
|
170
|
-
}
|
|
171
|
-
finally {
|
|
172
|
-
this.isExternalLoading$.next(false);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Generates a code challenge for PKCE (Proof Key for Code Exchange)
|
|
177
|
-
*/
|
|
178
|
-
async generateCodeChallenge(codeVerifier) {
|
|
179
|
-
// Create SHA256 hash of the code verifier
|
|
180
|
-
const hash = await this.sha256(codeVerifier);
|
|
181
|
-
// Base64url encode the hash
|
|
182
|
-
return this.base64UrlEncode(hash);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Generates a random string for code verifier
|
|
186
|
-
*/
|
|
187
|
-
generateRandomString(length) {
|
|
188
|
-
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
|
|
189
|
-
let text = '';
|
|
190
|
-
for (let i = 0; i < length; i++) {
|
|
191
|
-
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
192
|
-
}
|
|
193
|
-
return text;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Creates SHA256 hash of the input string using Web Crypto API
|
|
197
|
-
*/
|
|
198
|
-
async sha256(str) {
|
|
199
|
-
const encoder = new TextEncoder();
|
|
200
|
-
const data = encoder.encode(str);
|
|
201
|
-
return await crypto.subtle.digest('SHA-256', data);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Base64url encodes an ArrayBuffer
|
|
205
|
-
*/
|
|
206
|
-
base64UrlEncode(buffer) {
|
|
207
|
-
const bytes = new Uint8Array(buffer);
|
|
208
|
-
let binary = '';
|
|
209
|
-
for (let i = 0; i < bytes.byteLength; i++) {
|
|
210
|
-
binary += String.fromCharCode(bytes[i]);
|
|
211
|
-
}
|
|
212
|
-
return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
213
|
-
}
|
|
214
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPLoginPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPLoginPasswordComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: AXFormComponent, descendants: true }], ngImport: i0, template: "<ng-container *translate=\"let t\">\n <div class=\"ax-text-center ax-mb-4\">\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\n {{ '@auth:signin.title' | translate | async }}\n </h1>\n <p class=\"ax-text-base ax-text-neutral-600\">\n {{ '@auth:signin.hint' | translate | async }}\n </p>\n </div>\n <div class=\"ax-w-80 lg:ax-w-96\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\n <ax-form-field>\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\n <ax-text-box [name]=\"'username'\" id=\"username\" [autoComplete]=\"'username'\" [(value)]=\"v1\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\n <ax-password-box [name]=\"'password'\" id=\"password\" [autoComplete]=\"'current-password'\" [(value)]=\"v2\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <ax-check-box [(ngModel)]=\"isKeepLogin\">\n <ax-label class=\"ax-mb-0\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\n </ax-check-box>\n <ax-button\n color=\"primary\"\n class=\"ax-sm\"\n id=\"forgot-password\"\n [text]=\"'@auth:forgot.password' | translate | async\"\n look=\"blank\"\n (onClick)=\"handleForgotOnClick()\"\n >\n </ax-button>\n </div>\n </div>\n <ax-button\n color=\"primary\"\n class=\"ax-mt-6 ax-w-full\"\n id=\"submit-login\"\n [text]=\"'@auth:signin.submit' | translate | async\"\n (onClick)=\"handleLoginClick()\"\n [disabled]=\"isLoading$ | async\"\n [type]=\"'submit'\"\n >\n @if (isLoading$ | async) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n @if (hasExternalProviders || configs.signup?.enable) {\n <div class=\"ax-heading ax-heading-center !ax-my-8\">\n <span>{{ '@auth:signin.or' | translate | async }}</span>\n </div>\n }\n <div class=\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\">\n @if (configs.externalProviders?.['google']) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n text=\"{{ '@auth:authentication.with-google' | translate | async }}\"\n [color]=\"'default'\"\n id=\"google\"\n (onClick)=\"handleExternalSignIn('google')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-google fa-lg ax-text-danger-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['apple']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-apple' | translate | async }}\"\n [color]=\"'default'\"\n id=\"apple\"\n (onClick)=\"handleExternalSignIn('apple')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-apple fa-xl\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['microsoft']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-microsoft' | translate | async }}\"\n [color]=\"'default'\"\n id=\"microsoft\"\n (onClick)=\"handleExternalSignIn('microsoft')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-microsoft fa-lg text-blue-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n </div>\n </ax-form>\n @if (configs.signup?.enable) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n id=\"register\"\n (onClick)=\"handleRegisterOnClick()\"\n text=\"{{ '@auth:register' | translate | async }}\"\n [color]=\"'default'\"\n >\n </ax-button>\n }\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i1$1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i1$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i5.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$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: AXLabelModule }, { kind: "component", type: i7.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i9.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }] }); }
|
|
216
|
-
}
|
|
217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPLoginPasswordComponent, decorators: [{
|
|
218
|
-
type: Component,
|
|
219
|
-
args: [{ imports: [...MODULES], template: "<ng-container *translate=\"let t\">\n <div class=\"ax-text-center ax-mb-4\">\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\n {{ '@auth:signin.title' | translate | async }}\n </h1>\n <p class=\"ax-text-base ax-text-neutral-600\">\n {{ '@auth:signin.hint' | translate | async }}\n </p>\n </div>\n <div class=\"ax-w-80 lg:ax-w-96\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\n <ax-form-field>\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\n <ax-text-box [name]=\"'username'\" id=\"username\" [autoComplete]=\"'username'\" [(value)]=\"v1\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\n <ax-password-box [name]=\"'password'\" id=\"password\" [autoComplete]=\"'current-password'\" [(value)]=\"v2\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <ax-check-box [(ngModel)]=\"isKeepLogin\">\n <ax-label class=\"ax-mb-0\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\n </ax-check-box>\n <ax-button\n color=\"primary\"\n class=\"ax-sm\"\n id=\"forgot-password\"\n [text]=\"'@auth:forgot.password' | translate | async\"\n look=\"blank\"\n (onClick)=\"handleForgotOnClick()\"\n >\n </ax-button>\n </div>\n </div>\n <ax-button\n color=\"primary\"\n class=\"ax-mt-6 ax-w-full\"\n id=\"submit-login\"\n [text]=\"'@auth:signin.submit' | translate | async\"\n (onClick)=\"handleLoginClick()\"\n [disabled]=\"isLoading$ | async\"\n [type]=\"'submit'\"\n >\n @if (isLoading$ | async) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n @if (hasExternalProviders || configs.signup?.enable) {\n <div class=\"ax-heading ax-heading-center !ax-my-8\">\n <span>{{ '@auth:signin.or' | translate | async }}</span>\n </div>\n }\n <div class=\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\">\n @if (configs.externalProviders?.['google']) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n text=\"{{ '@auth:authentication.with-google' | translate | async }}\"\n [color]=\"'default'\"\n id=\"google\"\n (onClick)=\"handleExternalSignIn('google')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-google fa-lg ax-text-danger-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['apple']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-apple' | translate | async }}\"\n [color]=\"'default'\"\n id=\"apple\"\n (onClick)=\"handleExternalSignIn('apple')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-apple fa-xl\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['microsoft']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-microsoft' | translate | async }}\"\n [color]=\"'default'\"\n id=\"microsoft\"\n (onClick)=\"handleExternalSignIn('microsoft')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-microsoft fa-lg text-blue-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n </div>\n </ax-form>\n @if (configs.signup?.enable) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n id=\"register\"\n (onClick)=\"handleRegisterOnClick()\"\n text=\"{{ '@auth:register' | translate | async }}\"\n [color]=\"'default'\"\n >\n </ax-button>\n }\n </div>\n</ng-container>\n" }]
|
|
220
|
-
}], propDecorators: { form: [{
|
|
221
|
-
type: ViewChild,
|
|
222
|
-
args: [AXFormComponent]
|
|
223
|
-
}] } });
|
|
224
|
-
|
|
225
|
-
export { AXPLoginPasswordComponent };
|
|
226
|
-
//# sourceMappingURL=acorex-modules-auth-password.component-DKG8o8k8.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-auth-password.component-DKG8o8k8.mjs","sources":["../tmp-esm2022/auth/lib/pages/login/password/password.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject, firstValueFrom } from 'rxjs';\nimport { AXMAuthenticationTypes, AXM_AUTH_CONFIG_TOKEN } from '../../../auth.config';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/form\";\nimport * as i4 from \"@acorex/components/text-box\";\nimport * as i5 from \"@acorex/components/password-box\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/label\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/check-box\";\nimport * as i10 from \"@acorex/core/translation\";\nimport * as i11 from \"@acorex/components/loading\";\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n AXTranslationModule,\n AXLoadingModule,\n RouterModule,\n AXValidationModule,\n];\nexport class AXPLoginPasswordComponent {\n constructor() {\n this.configs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.v1 = '';\n this.v2 = '';\n this.isLoading$ = new BehaviorSubject(false);\n this.isExternalLoading$ = new BehaviorSubject(false);\n this.submitText = 'signin.submit';\n this.dialogService = inject(AXDialogService);\n this.sessionService = inject(AXPSessionService);\n this.activateRoute = inject(ActivatedRoute);\n this.homePageService = inject(AXPHomePageService);\n this.toastService = inject(AXToastService);\n this.router = inject(Router);\n this.isKeepLogin = false;\n }\n // Computed property to check if external providers exist\n get hasExternalProviders() {\n return !!(this.configs?.externalProviders && Object.keys(this.configs.externalProviders).length > 0);\n }\n ngOnInit() {\n this.l2 = 'password';\n switch (this.configs.type) {\n case AXMAuthenticationTypes.EmailPassword:\n this.l1 = 'email';\n break;\n case AXMAuthenticationTypes.MobilePassword:\n this.l1 = 'mobile';\n break;\n case AXMAuthenticationTypes.UsernameEmailPassword:\n this.l1 = 'username-email';\n break;\n case AXMAuthenticationTypes.UsernamePassword:\n default:\n this.l1 = 'username';\n }\n }\n handleForgotOnClick() {\n this.router.navigate(['/auth/forgot']);\n }\n handleRegisterOnClick() {\n this.router.navigate([this.configs.signup?.url || '/auth/register']);\n }\n handleLoginClick() {\n this.sessionService.setStrategy(this.configs.defaultStrategyName || 'user-pass');\n const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];\n this.form.validate().then(async (form) => {\n console.log(this.configs.defaultStrategyName);\n if (form.result) {\n this.isLoading$.next(true);\n this.submitText = 'processing';\n this.submitText = 'redirecting';\n try {\n const strategy = this.sessionService.getSessionData()?.strategy;\n if (!strategy) {\n throw new Error('Strategy not found');\n }\n await this.sessionService.signin({\n strategy: strategy,\n username: this.v1,\n password: this.v2,\n });\n await this.sessionService.signInComplete();\n // Check authentication status before navigation\n const isAuthenticated = await firstValueFrom(this.sessionService.isAuthenticated$);\n if (!isAuthenticated) {\n throw new Error('Authentication failed after signin');\n }\n const currentApplication = await firstValueFrom(this.sessionService.application$);\n if (!currentApplication) {\n if (this.sessionService.tenant?.id == null) {\n this.router.navigate(['/auth/account/tenant-chooser']);\n }\n else if (this.sessionService.application?.id == null) {\n this.router.navigate(['/auth/account/app-chooser']);\n }\n }\n else if (redirectUrl) {\n this.router.navigate([redirectUrl]);\n }\n else {\n await this.homePageService.navigateTo();\n }\n }\n catch (error) {\n let errorMsg = error?.error?.error_description ||\n error?.error?.error ||\n error?.message ||\n 'An error occurred during sign in.';\n if (typeof errorMsg === 'object') {\n // اگر شیء بود، سعی کن یک فیلد message یا description را نمایش بدهی\n errorMsg = errorMsg.message || errorMsg.error_description || JSON.stringify(errorMsg);\n }\n this.toastService.show({\n color: 'danger',\n content: errorMsg,\n timeOut: 5000,\n });\n console.log({ error });\n this.submitText = 'signin.submit';\n this.v2 = null;\n this.isLoading$.next(false);\n }\n }\n });\n }\n async handleExternalSignIn(provider) {\n this.sessionService.setStrategy(provider);\n try {\n this.isExternalLoading$.next(true);\n // Get provider configuration (optional, for validation)\n const providerConfig = this.configs?.externalProviders?.[provider];\n if (!providerConfig) {\n throw new Error(`Provider '${provider}' is not configured`);\n }\n await this.sessionService.signin({ strategy: provider });\n }\n catch (error) {\n console.error(`${provider} sign-in error:`, error);\n // Optionally show an error message to the user here\n }\n finally {\n this.isExternalLoading$.next(false);\n }\n }\n /**\n * Generates a code challenge for PKCE (Proof Key for Code Exchange)\n */\n async generateCodeChallenge(codeVerifier) {\n // Create SHA256 hash of the code verifier\n const hash = await this.sha256(codeVerifier);\n // Base64url encode the hash\n return this.base64UrlEncode(hash);\n }\n /**\n * Generates a random string for code verifier\n */\n generateRandomString(length) {\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n let text = '';\n for (let i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n }\n /**\n * Creates SHA256 hash of the input string using Web Crypto API\n */\n async sha256(str) {\n const encoder = new TextEncoder();\n const data = encoder.encode(str);\n return await crypto.subtle.digest('SHA-256', data);\n }\n /**\n * Base64url encodes an ArrayBuffer\n */\n base64UrlEncode(buffer) {\n const bytes = new Uint8Array(buffer);\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLoginPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPLoginPasswordComponent, isStandalone: true, selector: \"ng-component\", viewQueries: [{ propertyName: \"form\", first: true, predicate: AXFormComponent, descendants: true }], ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ '@auth:signin.title' | translate | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ '@auth:signin.hint' | translate | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" id=\\\"username\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" id=\\\"password\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n id=\\\"forgot-password\\\"\\n [text]=\\\"'@auth:forgot.password' | translate | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n id=\\\"submit-login\\\"\\n [text]=\\\"'@auth:signin.submit' | translate | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if (hasExternalProviders || configs.signup?.enable) {\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ '@auth:signin.or' | translate | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if (configs.externalProviders?.['google']) {\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n text=\\\"{{ '@auth:authentication.with-google' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"google\\\"\\n (onClick)=\\\"handleExternalSignIn('google')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n @if (configs.externalProviders?.['apple']) {\\n <ax-button\\n text=\\\"{{ '@auth:authentication.with-apple' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"apple\\\"\\n (onClick)=\\\"handleExternalSignIn('apple')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n @if (configs.externalProviders?.['microsoft']) {\\n <ax-button\\n text=\\\"{{ '@auth:authentication.with-microsoft' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"microsoft\\\"\\n (onClick)=\\\"handleExternalSignIn('microsoft')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-microsoft fa-lg text-blue-500\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if (configs.signup?.enable) {\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n id=\\\"register\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ '@auth:register' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n</ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i3.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i3.AXFormComponent, selector: \"ax-form\", inputs: [\"disabled\", \"readonly\", \"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i3.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i4.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXPasswordBoxModule }, { kind: \"component\", type: i5.AXPasswordBoxComponent, selector: \"ax-password-box\", inputs: [\"readonly\", \"disabled\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"autoComplete\", \"showToggleButton\", \"class\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.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: AXLabelModule }, { kind: \"component\", type: i7.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i9.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i10.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i11.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: AXValidationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i10.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLoginPasswordComponent, decorators: [{\n type: Component,\n args: [{ imports: [...MODULES], template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ '@auth:signin.title' | translate | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ '@auth:signin.hint' | translate | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" id=\\\"username\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" id=\\\"password\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n id=\\\"forgot-password\\\"\\n [text]=\\\"'@auth:forgot.password' | translate | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n id=\\\"submit-login\\\"\\n [text]=\\\"'@auth:signin.submit' | translate | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if (hasExternalProviders || configs.signup?.enable) {\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ '@auth:signin.or' | translate | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if (configs.externalProviders?.['google']) {\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n text=\\\"{{ '@auth:authentication.with-google' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"google\\\"\\n (onClick)=\\\"handleExternalSignIn('google')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n @if (configs.externalProviders?.['apple']) {\\n <ax-button\\n text=\\\"{{ '@auth:authentication.with-apple' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"apple\\\"\\n (onClick)=\\\"handleExternalSignIn('apple')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n @if (configs.externalProviders?.['microsoft']) {\\n <ax-button\\n text=\\\"{{ '@auth:authentication.with-microsoft' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n id=\\\"microsoft\\\"\\n (onClick)=\\\"handleExternalSignIn('microsoft')\\\"\\n [disabled]=\\\"isExternalLoading$ | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-microsoft fa-lg text-blue-500\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-loading *ngIf=\\\"isExternalLoading$ | async\\\"></ax-loading>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if (configs.signup?.enable) {\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n id=\\\"register\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ '@auth:register' | translate | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n</ng-container>\\n\" }]\n }], propDecorators: { form: [{\n type: ViewChild,\n args: [AXFormComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9wYWdlcy9sb2dpbi9wYXNzd29yZC9wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2xvZ2luL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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QyxPQUFPLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxNQUFtQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQzsrR0F2TFUseUJBQXlCO21HQUF6Qix5QkFBeUIsOEdBa0J6QixlQUFlLGdEQzVENUIsdW1KQXlIQSwyQ0RuR0UsWUFBWSxrSUFDWixXQUFXLDhWQUNYLFlBQVkseWRBQ1osZUFBZSxxYkFDZixtQkFBbUIsK1pBQ25CLGNBQWMsNlhBQ2QsYUFBYSxnS0FDYixpQkFBaUIsc1ZBQ2pCLGdCQUFnQiwwUkFDaEIsbUJBQW1CLCtHQUVuQixlQUFlLCtLQUNmLFlBQVksOEJBQ1osa0JBQWtCOzs0RkFPUCx5QkFBeUI7a0JBSnJDLFNBQVM7OEJBRUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQzs7c0JBb0JwQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYRm9ybUNvbXBvbmVudCwgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBhc3N3b3JkQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Bhc3N3b3JkLWJveCc7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBIb21lUGFnZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTUF1dGhDb25maWdzLCBBWE1BdXRoZW50aWNhdGlvblR5cGVzLCBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9hdXRoLmNvbmZpZyc7XG5jb25zdCBNT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBBWEZvcm1Nb2R1bGUsXG4gIEFYVGV4dEJveE1vZHVsZSxcbiAgQVhQYXNzd29yZEJveE1vZHVsZSxcbiAgQVhCdXR0b25Nb2R1bGUsXG4gIEFYTGFiZWxNb2R1bGUsXG4gIEFYRGVjb3JhdG9yTW9kdWxlLFxuICBBWENoZWNrQm94TW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWExvYWRpbmdNb2R1bGUsXG4gIFJvdXRlck1vZHVsZSxcbiAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9naW5QYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBjb25maWdzOiBBWE1BdXRoQ29uZmlncyA9IGluamVjdDxBWE1BdXRoQ29uZmlncz4oQVhNX0FVVEhfQ09ORklHX1RPS0VOKTtcbiAgcHJvdGVjdGVkIGwxITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbDIhOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHYxID0gJyc7XG4gIHByb3RlY3RlZCB2Mjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzRXh0ZXJuYWxMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHN1Ym1pdFRleHQgPSAnc2lnbmluLnN1Ym1pdCc7XG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhY3RpdmF0ZVJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBob21lUGFnZVNlcnZpY2UgPSBpbmplY3QoQVhQSG9tZVBhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoQVhGb3JtQ29tcG9uZW50KVxuICBwcml2YXRlIGZvcm0hOiBBWEZvcm1Db21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBwcm90ZWN0ZWQgaXNLZWVwTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBDb21wdXRlZCBwcm9wZXJ0eSB0byBjaGVjayBpZiBleHRlcm5hbCBwcm92aWRlcnMgZXhpc3RcbiAgcHJvdGVjdGVkIGdldCBoYXNFeHRlcm5hbFByb3ZpZGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jb25maWdzPy5leHRlcm5hbFByb3ZpZGVycyAmJiBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ3MuZXh0ZXJuYWxQcm92aWRlcnMpLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sMiA9ICdwYXNzd29yZCc7XG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZ3MudHlwZSkge1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLkVtYWlsUGFzc3dvcmQ6XG4gICAgICAgIHRoaXMubDEgPSAnZW1haWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQVhNQXV0aGVudGljYXRpb25UeXBlcy5Nb2JpbGVQYXNzd29yZDpcbiAgICAgICAgdGhpcy5sMSA9ICdtb2JpbGUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQVhNQXV0aGVudGljYXRpb25UeXBlcy5Vc2VybmFtZUVtYWlsUGFzc3dvcmQ6XG4gICAgICAgIHRoaXMubDEgPSAndXNlcm5hbWUtZW1haWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQVhNQXV0aGVudGljYXRpb25UeXBlcy5Vc2VybmFtZVBhc3N3b3JkOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5sMSA9ICd1c2VybmFtZSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZvcmdvdE9uQ2xpY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9mb3Jnb3QnXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVnaXN0ZXJPbkNsaWNrKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmNvbmZpZ3Muc2lnbnVwPy51cmwgfHwgJy9hdXRoL3JlZ2lzdGVyJ10pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUxvZ2luQ2xpY2soKSB7XG4gICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRTdHJhdGVneSh0aGlzLmNvbmZpZ3MuZGVmYXVsdFN0cmF0ZWd5TmFtZSB8fCAndXNlci1wYXNzJyk7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSB0aGlzLmFjdGl2YXRlUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3JlZGlyZWN0VXJsJ107XG4gICAgdGhpcy5mb3JtLnZhbGlkYXRlKCkudGhlbihhc3luYyAoZm9ybSkgPT4ge1xuICAgICAgY29uc29sZS5sb2codGhpcy5jb25maWdzLmRlZmF1bHRTdHJhdGVneU5hbWUpO1xuXG4gICAgICBpZiAoZm9ybS5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc3VibWl0VGV4dCA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gJ3JlZGlyZWN0aW5nJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0U2Vzc2lvbkRhdGEoKT8uc3RyYXRlZ3k7XG4gICAgICAgICAgaWYgKCFzdHJhdGVneSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJhdGVneSBub3QgZm91bmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXNzaW9uU2VydmljZS5zaWduaW4oe1xuICAgICAgICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5LFxuICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMudjEsXG4gICAgICAgICAgICBwYXNzd29yZDogdGhpcy52MiEsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXNzaW9uU2VydmljZS5zaWduSW5Db21wbGV0ZSgpO1xuXG4gICAgICAgICAgLy8gQ2hlY2sgYXV0aGVudGljYXRpb24gc3RhdHVzIGJlZm9yZSBuYXZpZ2F0aW9uXG4gICAgICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXNzaW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkKTtcblxuICAgICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dGhlbnRpY2F0aW9uIGZhaWxlZCBhZnRlciBzaWduaW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY3VycmVudEFwcGxpY2F0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbiQpO1xuICAgICAgICAgIGlmICghY3VycmVudEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ/LmlkID09IG51bGwpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9hY2NvdW50L3RlbmFudC1jaG9vc2VyJ10pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5pZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC9hcHAtY2hvb3NlciddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHJlZGlyZWN0VXJsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RVcmxdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ob21lUGFnZVNlcnZpY2UubmF2aWdhdGVUbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgIGxldCBlcnJvck1zZyA9XG4gICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yX2Rlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yIHx8XG4gICAgICAgICAgICBlcnJvcj8ubWVzc2FnZSB8fFxuICAgICAgICAgICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzaWduIGluLic7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGVycm9yTXNnID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgLy8g2Kfar9ixINi024zYoSDYqNmI2K/YjCDYs9i524wg2qnZhiDbjNqpINmB24zZhNivIG1lc3NhZ2Ug24zYpyBkZXNjcmlwdGlvbiDYsdinINmG2YXYp9uM2LQg2KjYr9mH24xcbiAgICAgICAgICAgIGVycm9yTXNnID0gZXJyb3JNc2cubWVzc2FnZSB8fCBlcnJvck1zZy5lcnJvcl9kZXNjcmlwdGlvbiB8fCBKU09OLnN0cmluZ2lmeShlcnJvck1zZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICBjb250ZW50OiBlcnJvck1zZyxcbiAgICAgICAgICAgIHRpbWVPdXQ6IDUwMDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc29sZS5sb2coeyBlcnJvciB9KTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdFRleHQgPSAnc2lnbmluLnN1Ym1pdCc7XG4gICAgICAgICAgdGhpcy52MiA9IG51bGw7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXh0ZXJuYWxTaWduSW4ocHJvdmlkZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0U3RyYXRlZ3kocHJvdmlkZXIpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzRXh0ZXJuYWxMb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICAvLyBHZXQgcHJvdmlkZXIgY29uZmlndXJhdGlvbiAob3B0aW9uYWwsIGZvciB2YWxpZGF0aW9uKVxuICAgICAgY29uc3QgcHJvdmlkZXJDb25maWcgPSB0aGlzLmNvbmZpZ3M/LmV4dGVybmFsUHJvdmlkZXJzPy5bcHJvdmlkZXJdO1xuICAgICAgaWYgKCFwcm92aWRlckNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVyICcke3Byb3ZpZGVyfScgaXMgbm90IGNvbmZpZ3VyZWRgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5zZXNzaW9uU2VydmljZS5zaWduaW4oeyBzdHJhdGVneTogcHJvdmlkZXIgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7cHJvdmlkZXJ9IHNpZ24taW4gZXJyb3I6YCwgZXJyb3IpO1xuICAgICAgLy8gT3B0aW9uYWxseSBzaG93IGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIHVzZXIgaGVyZVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzRXh0ZXJuYWxMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgY29kZSBjaGFsbGVuZ2UgZm9yIFBLQ0UgKFByb29mIEtleSBmb3IgQ29kZSBFeGNoYW5nZSlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBDcmVhdGUgU0hBMjU2IGhhc2ggb2YgdGhlIGNvZGUgdmVyaWZpZXJcbiAgICBjb25zdCBoYXNoID0gYXdhaXQgdGhpcy5zaGEyNTYoY29kZVZlcmlmaWVyKTtcbiAgICAvLyBCYXNlNjR1cmwgZW5jb2RlIHRoZSBoYXNoXG4gICAgcmV0dXJuIHRoaXMuYmFzZTY0VXJsRW5jb2RlKGhhc2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJhbmRvbSBzdHJpbmcgZm9yIGNvZGUgdmVyaWZpZXJcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVSYW5kb21TdHJpbmcobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBvc3NpYmxlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LS5ffic7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0ZXh0ICs9IHBvc3NpYmxlLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBwb3NzaWJsZS5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBTSEEyNTYgaGFzaCBvZiB0aGUgaW5wdXQgc3RyaW5nIHVzaW5nIFdlYiBDcnlwdG8gQVBJXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNoYTI1NihzdHI6IHN0cmluZyk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHN0cik7XG4gICAgcmV0dXJuIGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQmFzZTY0dXJsIGVuY29kZXMgYW4gQXJyYXlCdWZmZXJcbiAgICovXG4gIHByaXZhdGUgYmFzZTY0VXJsRW5jb2RlKGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgICBsZXQgYmluYXJ5ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5ieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ0b2EoYmluYXJ5KS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89L2csICcnKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LXRleHQtY2VudGVyIGF4LW1iLTRcIj5cbiAgICA8aDEgY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bCBheC1tYi0yXCI+XG4gICAgICB7eyAnQGF1dGg6c2lnbmluLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgPC9oMT5cbiAgICA8cCBjbGFzcz1cImF4LXRleHQtYmFzZSBheC10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICB7eyAnQGF1dGg6c2lnbmluLmhpbnQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtdy04MCBsZzpheC13LTk2XCI+XG4gICAgPGF4LWZvcm0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNlwiPlxuICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICA8YXgtbGFiZWw+e3sgJ0BhdXRoOnVzZXJuYW1lLWVtYWlsJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8YXgtdGV4dC1ib3ggW25hbWVdPVwiJ3VzZXJuYW1lJ1wiIGlkPVwidXNlcm5hbWVcIiBbYXV0b0NvbXBsZXRlXT1cIid1c2VybmFtZSdcIiBbKHZhbHVlKV09XCJ2MVwiPlxuICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBydWxlPVwicmVxdWlyZWRcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxheC1sYWJlbD57eyAnQGF1dGg6cGFzc3dvcmQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2F4LWxhYmVsPlxuICAgICAgICAgIDxheC1wYXNzd29yZC1ib3ggW25hbWVdPVwiJ3Bhc3N3b3JkJ1wiIGlkPVwicGFzc3dvcmRcIiBbYXV0b0NvbXBsZXRlXT1cIidjdXJyZW50LXBhc3N3b3JkJ1wiIFsodmFsdWUpXT1cInYyXCI+XG4gICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgIDwvYXgtcGFzc3dvcmQtYm94PlxuICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8YXgtY2hlY2stYm94IFsobmdNb2RlbCldPVwiaXNLZWVwTG9naW5cIj5cbiAgICAgICAgICAgIDxheC1sYWJlbCBjbGFzcz1cImF4LW1iLTBcIj57eyAnQGF1dGg6c2lnbmluLnJlbWVtYmVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1zbVwiXG4gICAgICAgICAgICBpZD1cImZvcmdvdC1wYXNzd29yZFwiXG4gICAgICAgICAgICBbdGV4dF09XCInQGF1dGg6Zm9yZ290LnBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgIGxvb2s9XCJibGFua1wiXG4gICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVGb3Jnb3RPbkNsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxheC1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgY2xhc3M9XCJheC1tdC02IGF4LXctZnVsbFwiXG4gICAgICAgIGlkPVwic3VibWl0LWxvZ2luXCJcbiAgICAgICAgW3RleHRdPVwiJ0BhdXRoOnNpZ25pbi5zdWJtaXQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVMb2dpbkNsaWNrKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgW3R5cGVdPVwiJ3N1Ym1pdCdcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGlzTG9hZGluZyQgfCBhc3luYykge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgfVxuICAgICAgPC9heC1idXR0b24+XG4gICAgICBAaWYgKGhhc0V4dGVybmFsUHJvdmlkZXJzIHx8IGNvbmZpZ3Muc2lnbnVwPy5lbmFibGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWhlYWRpbmcgYXgtaGVhZGluZy1jZW50ZXIgIWF4LW15LThcIj5cbiAgICAgICAgICA8c3Bhbj57eyAnQGF1dGg6c2lnbmluLm9yJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGxnOmF4LWZsZXgtcm93IGF4LWp1c3RpZnktYmV0d2VlbiBheC1tdC02XCI+XG4gICAgICAgIEBpZiAoY29uZmlncy5leHRlcm5hbFByb3ZpZGVycz8uWydnb29nbGUnXSkge1xuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsIGF4LW10LTJcIlxuICAgICAgICAgICAgdGV4dD1cInt7ICdAYXV0aDphdXRoZW50aWNhdGlvbi53aXRoLWdvb2dsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIGlkPVwiZ29vZ2xlXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUV4dGVybmFsU2lnbkluKCdnb29nbGUnKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFeHRlcm5hbExvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtYnJhbmRzIGZhLWdvb2dsZSBmYS1sZyBheC10ZXh0LWRhbmdlci01MDBcIj48L2k+XG4gICAgICAgICAgICAgIDwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWxvYWRpbmcgKm5nSWY9XCJpc0V4dGVybmFsTG9hZGluZyQgfCBhc3luY1wiPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGNvbmZpZ3MuZXh0ZXJuYWxQcm92aWRlcnM/LlsnYXBwbGUnXSkge1xuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIHRleHQ9XCJ7eyAnQGF1dGg6YXV0aGVudGljYXRpb24ud2l0aC1hcHBsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIGlkPVwiYXBwbGVcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlRXh0ZXJuYWxTaWduSW4oJ2FwcGxlJylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRXh0ZXJuYWxMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWJyYW5kcyBmYS1hcHBsZSBmYS14bFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cImlzRXh0ZXJuYWxMb2FkaW5nJCB8IGFzeW5jXCI+PC9heC1sb2FkaW5nPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29uZmlncy5leHRlcm5hbFByb3ZpZGVycz8uWydtaWNyb3NvZnQnXSkge1xuICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgIHRleHQ9XCJ7eyAnQGF1dGg6YXV0aGVudGljYXRpb24ud2l0aC1taWNyb3NvZnQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cIlxuICAgICAgICAgICAgW2NvbG9yXT1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICBpZD1cIm1pY3Jvc29mdFwiXG4gICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVFeHRlcm5hbFNpZ25JbignbWljcm9zb2Z0JylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRXh0ZXJuYWxMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWJyYW5kcyBmYS1taWNyb3NvZnQgZmEtbGcgdGV4dC1ibHVlLTUwMFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cImlzRXh0ZXJuYWxMb2FkaW5nJCB8IGFzeW5jXCI+PC9heC1sb2FkaW5nPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0+XG4gICAgQGlmIChjb25maWdzLnNpZ251cD8uZW5hYmxlKSB7XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsIGF4LW10LTJcIlxuICAgICAgICBpZD1cInJlZ2lzdGVyXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlUmVnaXN0ZXJPbkNsaWNrKClcIlxuICAgICAgICB0ZXh0PVwie3sgJ0BhdXRoOnJlZ2lzdGVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XCJcbiAgICAgICAgW2NvbG9yXT1cIidkZWZhdWx0J1wiXG4gICAgICA+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0="],"names":["i3","i6","i8","i10","i11"],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ViewEncapsulation, Component } from '@angular/core';
|
|
3
|
-
import * as i3 from '@acorex/components/avatar';
|
|
4
|
-
import { AXAvatarModule } from '@acorex/components/avatar';
|
|
5
|
-
import * as i2$1 from '@acorex/components/button';
|
|
6
|
-
import { AXButtonModule } from '@acorex/components/button';
|
|
7
|
-
import { AXCheckBoxModule } from '@acorex/components/check-box';
|
|
8
|
-
import * as i1 from '@acorex/components/decorators';
|
|
9
|
-
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
10
|
-
import { AXFormModule } from '@acorex/components/form';
|
|
11
|
-
import { AXImageModule } from '@acorex/components/image';
|
|
12
|
-
import { AXLabelModule } from '@acorex/components/label';
|
|
13
|
-
import * as i2$2 from '@acorex/components/loading';
|
|
14
|
-
import { AXLoadingModule } from '@acorex/components/loading';
|
|
15
|
-
import * as i7 from '@acorex/components/search-box';
|
|
16
|
-
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
17
|
-
import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
18
|
-
import * as i5 from '@acorex/core/translation';
|
|
19
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
|
20
|
-
import { AXPSessionService, AXPAuthStrategyRegistryService } from '@acorex/platform/auth';
|
|
21
|
-
import { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';
|
|
22
|
-
import { AXPLogoComponent, AXPUserAvatarComponent } from '@acorex/platform/layout/components';
|
|
23
|
-
import * as i1$1 from '@angular/common';
|
|
24
|
-
import { CommonModule } from '@angular/common';
|
|
25
|
-
import * as i2 from '@angular/forms';
|
|
26
|
-
import { FormsModule } from '@angular/forms';
|
|
27
|
-
import { Router } from '@angular/router';
|
|
28
|
-
import { Subscription, first } from 'rxjs';
|
|
29
|
-
import { AXPIconLogoConfig } from '@acorex/platform/core';
|
|
30
|
-
|
|
31
|
-
class AXPAuthTenantChooserComponent {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.router = inject(Router);
|
|
34
|
-
this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
|
|
35
|
-
this.sessionService = inject(AXPSessionService);
|
|
36
|
-
this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
37
|
-
this.strategyName = this.sessionService.getSessionData()?.strategy;
|
|
38
|
-
this.strategy = this.authStrategyRegistry.get(this.strategyName);
|
|
39
|
-
this.defaultLogo = new AXPIconLogoConfig('fa-solid fa-building', 'neutral-500');
|
|
40
|
-
this.subscription = new Subscription();
|
|
41
|
-
this.user = this.sessionService.user;
|
|
42
|
-
this.searchValue = '';
|
|
43
|
-
this.showAll = false;
|
|
44
|
-
this.selectedTenant = null;
|
|
45
|
-
this.displayedTenants = [];
|
|
46
|
-
}
|
|
47
|
-
async handleChooseTenant(item) {
|
|
48
|
-
this.selectedTenant = item;
|
|
49
|
-
if (this.strategy) {
|
|
50
|
-
const updateContext = {
|
|
51
|
-
tenant: item,
|
|
52
|
-
user: this.user,
|
|
53
|
-
};
|
|
54
|
-
await this.sessionService.updateToken(updateContext);
|
|
55
|
-
}
|
|
56
|
-
return this.router.navigate(['/auth/account/app-chooser']);
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.sessionService.tenants$.pipe(first()).subscribe((tenants) => {
|
|
60
|
-
this.displayedTenants = tenants.slice(0, 4);
|
|
61
|
-
this.allTenants = tenants;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
filterTenants(tenants) {
|
|
65
|
-
return tenants.filter((tenant) => tenant.title.toLowerCase().includes(this.searchValue.toLowerCase()));
|
|
66
|
-
}
|
|
67
|
-
handleSearch(event) {
|
|
68
|
-
if (event != undefined) {
|
|
69
|
-
this.searchValue = event;
|
|
70
|
-
this.displayedTenants = this.filterTenants(this.allTenants);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
showAllTenants() {
|
|
74
|
-
this.showAll = !this.showAll;
|
|
75
|
-
this.displayedTenants = this.filterTenants(this.showAll ? this.allTenants : this.allTenants.slice(0, 4));
|
|
76
|
-
}
|
|
77
|
-
async handleSignout() {
|
|
78
|
-
await this.sessionService.signout();
|
|
79
|
-
this.router.navigate(['/auth/login']);
|
|
80
|
-
}
|
|
81
|
-
ngOnDestroy() {
|
|
82
|
-
this.subscription.unsubscribe();
|
|
83
|
-
}
|
|
84
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPAuthTenantChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPAuthTenantChooserComponent, isStandalone: true, selector: "axp-auth-tenant-chooser", ngImport: i0, template: "<main *translate=\"let t\"\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-lightest md:ax-bg-default\">\n <section>\n <axp-logo [source]=\"platformConfig.logo?.full\" [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 lg:ax-w-[45vw] xl:ax-w-[25vw] ax-w-[90vw]\">\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if (user?.avatar) {\n <!-- <ax-image [src]=\"user?.avatar\"></ax-image> -->\n <axp-user-avatar [size]=\"72\" [userId]=\"user?.id!\"></axp-user-avatar>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ '@auth:welcome.message' | translate | async }}, {{ user?.title }}</h2>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ '@auth:tenant-chooser.description' | translate | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @if (allTenants && allTenants.length > 4) {\n <ax-search-box [placeholder]=\"'@general:search.title' | translate | async\" [ngModel]=\"searchValue\"\n (ngModelChange)=\"handleSearch($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n @for (tenant of displayedTenants; track $index) {\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-center ax-cursor-pointer\"\n (click)=\"handleChooseTenant(tenant)\">\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <axp-logo [source]=\"tenant.logo ?? defaultLogo\" [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo>\n </div>\n <span class=\"md:ax-text-base ax-text-sm ax-text-start\">{{ tenant.title }} </span>\n </div>\n @if (tenant.name === selectedTenant?.name) {\n <ax-loading></ax-loading>\n } @else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n }\n </div>\n @if (allTenants && allTenants.length > 4) {\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button (onClick)=\"showAllTenants()\" class=\"ax-w-full\" look=\"outline\" [text]=\"\n showAll\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"></ax-button>\n </div>\n }\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </section>\n</main>", styles: [":host{display:contents}.gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));background-clip:text;-webkit-text-fill-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$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: AXLabelModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "shape", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPAuthTenantChooserComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'axp-auth-tenant-chooser', imports: [
|
|
90
|
-
CommonModule,
|
|
91
|
-
FormsModule,
|
|
92
|
-
AXFormModule,
|
|
93
|
-
AXTextBoxModule,
|
|
94
|
-
AXButtonModule,
|
|
95
|
-
AXLabelModule,
|
|
96
|
-
AXCheckBoxModule,
|
|
97
|
-
AXAvatarModule,
|
|
98
|
-
AXImageModule,
|
|
99
|
-
AXDecoratorModule,
|
|
100
|
-
AXPLogoComponent,
|
|
101
|
-
AXLoadingModule,
|
|
102
|
-
AXTranslationModule,
|
|
103
|
-
AXSearchBoxModule,
|
|
104
|
-
AXPUserAvatarComponent,
|
|
105
|
-
], encapsulation: ViewEncapsulation.None, template: "<main *translate=\"let t\"\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-lightest md:ax-bg-default\">\n <section>\n <axp-logo [source]=\"platformConfig.logo?.full\" [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 lg:ax-w-[45vw] xl:ax-w-[25vw] ax-w-[90vw]\">\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if (user?.avatar) {\n <!-- <ax-image [src]=\"user?.avatar\"></ax-image> -->\n <axp-user-avatar [size]=\"72\" [userId]=\"user?.id!\"></axp-user-avatar>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ '@auth:welcome.message' | translate | async }}, {{ user?.title }}</h2>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ '@auth:tenant-chooser.description' | translate | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @if (allTenants && allTenants.length > 4) {\n <ax-search-box [placeholder]=\"'@general:search.title' | translate | async\" [ngModel]=\"searchValue\"\n (ngModelChange)=\"handleSearch($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n @for (tenant of displayedTenants; track $index) {\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-center ax-cursor-pointer\"\n (click)=\"handleChooseTenant(tenant)\">\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <axp-logo [source]=\"tenant.logo ?? defaultLogo\" [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo>\n </div>\n <span class=\"md:ax-text-base ax-text-sm ax-text-start\">{{ tenant.title }} </span>\n </div>\n @if (tenant.name === selectedTenant?.name) {\n <ax-loading></ax-loading>\n } @else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n }\n </div>\n @if (allTenants && allTenants.length > 4) {\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button (onClick)=\"showAllTenants()\" class=\"ax-w-full\" look=\"outline\" [text]=\"\n showAll\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"></ax-button>\n </div>\n }\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </section>\n</main>", styles: [":host{display:contents}.gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));background-clip:text;-webkit-text-fill-color:transparent}\n"] }]
|
|
106
|
-
}] });
|
|
107
|
-
|
|
108
|
-
export { AXPAuthTenantChooserComponent };
|
|
109
|
-
//# sourceMappingURL=acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs.map
|