@acorex/modules 21.0.0-next.70 → 21.0.0-next.71
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/fesm2022/acorex-modules-ai-management.mjs +7 -11
- package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BnfSTevp.mjs} +654 -496
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-BnfSTevp.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs → acorex-modules-assessment-management-assessment-case.entity-BWMbcZFT.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs.map → acorex-modules-assessment-management-assessment-case.entity-BWMbcZFT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-B42XNJUV.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-B42XNJUV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs → acorex-modules-assessment-management-assessment-session.entity-osEWRiw1.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs.map → acorex-modules-assessment-management-assessment-session.entity-osEWRiw1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs → acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs} +3 -3
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs → acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs.map → acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs} +18 -9
- package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs → acorex-modules-assessment-management-question-bank-item.entity-DZBQOgAg.mjs} +3 -2
- package/fesm2022/acorex-modules-assessment-management-question-bank-item.entity-DZBQOgAg.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BMv-XkZk.mjs} +19 -5
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BMv-XkZk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs → acorex-modules-assessment-management-questionnaire.entity-BGkWU83k.mjs} +4 -2
- package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-BGkWU83k.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs → acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs.map → acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs → acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs.map → acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BUuEzfsI.mjs → acorex-modules-auth-acorex-modules-auth-BKMD5v6t.mjs} +17 -13
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BKMD5v6t.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DnmLfX5x.mjs → acorex-modules-auth-app-chooser.component-DTlzE1Rd.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DnmLfX5x.mjs.map → acorex-modules-auth-app-chooser.component-DTlzE1Rd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-D1-POhQk.mjs → acorex-modules-auth-login.module-DSQfhKUZ.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-D1-POhQk.mjs.map → acorex-modules-auth-login.module-DSQfhKUZ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-master.layout-BDM5XtcM.mjs +25 -0
- package/fesm2022/acorex-modules-auth-master.layout-BDM5XtcM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BhfFPeWT.mjs → acorex-modules-auth-oauth-callback.component-C4Q78fuo.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BhfFPeWT.mjs.map → acorex-modules-auth-oauth-callback.component-C4Q78fuo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BMVSHYy7.mjs → acorex-modules-auth-password.component-C_55t9er.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BMVSHYy7.mjs.map → acorex-modules-auth-password.component-C_55t9er.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Cm8DsDvu.mjs → acorex-modules-auth-password.component-VwEsbfR1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-Cm8DsDvu.mjs.map → acorex-modules-auth-password.component-VwEsbfR1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-B85OzgW1.mjs → acorex-modules-auth-routes-prPiMAL6.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-B85OzgW1.mjs.map → acorex-modules-auth-routes-prPiMAL6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D6_rL2WP.mjs → acorex-modules-auth-tenant-chooser.component-DVyI9cGU.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D6_rL2WP.mjs.map → acorex-modules-auth-tenant-chooser.component-DVyI9cGU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DfyDQIw-.mjs → acorex-modules-auth-two-factor.module-C7vZrBHK.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DfyDQIw-.mjs.map → acorex-modules-auth-two-factor.module-C7vZrBHK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-gJSHI_eh.mjs → acorex-modules-auth-user-sessions.component-ChF8OYdd.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-gJSHI_eh.mjs.map → acorex-modules-auth-user-sessions.component-ChF8OYdd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-common.mjs +462 -5
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-content-management-acorex-modules-content-management-txpooXrE.mjs → acorex-modules-content-management-acorex-modules-content-management-Bc_tCoHa.mjs} +6 -6
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-Bc_tCoHa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-content-management-permission-definition.provider-D9woYm2m.mjs → acorex-modules-content-management-permission-definition.provider-2-_i1Kxd.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-permission-definition.provider-D9woYm2m.mjs.map → acorex-modules-content-management-permission-definition.provider-2-_i1Kxd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-CQa1h31v.mjs → acorex-modules-content-management-template-content-editor-widget-edit.component-BdNwhaJ8.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-CQa1h31v.mjs.map → acorex-modules-content-management-template-content-editor-widget-edit.component-BdNwhaJ8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-DzM4oMNV.mjs → acorex-modules-content-management-template-content-editor-widget-view.component-Cwnqyt0U.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-DzM4oMNV.mjs.map → acorex-modules-content-management-template-content-editor-widget-view.component-Cwnqyt0U.mjs.map} +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-DYW31fEm.mjs → acorex-modules-conversation-acorex-modules-conversation-B1ijk48q.mjs} +640 -219
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-B1ijk48q.mjs.map +1 -0
- package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Mlan0ADR.mjs +329 -0
- package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Mlan0ADR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-comments-page.component-CNqL-HdS.mjs → acorex-modules-conversation-comments-page.component--Q5RxEyI.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-CNqL-HdS.mjs.map → acorex-modules-conversation-comments-page.component--Q5RxEyI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CuYYEqhb.mjs → acorex-modules-conversation-send-assist-chat-message.command--_hCn9Et.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CuYYEqhb.mjs.map → acorex-modules-conversation-send-assist-chat-message.command--_hCn9Et.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BKwrZJDs.mjs → acorex-modules-conversation-start-assist-chat.command-BE1BPjj2.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BKwrZJDs.mjs.map → acorex-modules-conversation-start-assist-chat.command-BE1BPjj2.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DJMJFziT.mjs} +50 -18
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DJMJFziT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-index-Bhm8mAON.mjs → acorex-modules-dashboard-management-index-DoTVg9ro.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-index-Bhm8mAON.mjs.map → acorex-modules-dashboard-management-index-DoTVg9ro.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-DrKulwY-.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-C1lNgBrC.mjs} +189 -49
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-C1lNgBrC.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-TavX6h7z.mjs → acorex-modules-human-capital-management-approve-leave-request.command-CDBhDXr8.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-TavX6h7z.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-CDBhDXr8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-ZEmi88vf.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-pz0IOxa3.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-ZEmi88vf.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-pz0IOxa3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DzIMYIhe.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-Czwdu-nH.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DzIMYIhe.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-Czwdu-nH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-CrVU_3Jv.mjs → acorex-modules-human-capital-management-employee.entity-ZTRqQfRv.mjs} +21 -17
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-ZTRqQfRv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BeiaEsNZ.mjs → acorex-modules-human-capital-management-employment-type.entity-BIIc7EpP.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BeiaEsNZ.mjs.map → acorex-modules-human-capital-management-employment-type.entity-BIIc7EpP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-QeY6lcUY.mjs → acorex-modules-human-capital-management-leave-request.entity-Bmv7oLAr.mjs} +19 -24
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-Bmv7oLAr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D7B3adkZ.mjs → acorex-modules-human-capital-management-leave-type.entity-OwdxjYKk.mjs} +10 -4
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-OwdxjYKk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event-type.entity-Dim-8hT7.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-C_XVrmZt.mjs} +19 -74
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-C_XVrmZt.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-event.entity-3HtYOKrY.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-BwLAEtqA.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-BwLAEtqA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Byxt921P.mjs → acorex-modules-human-capital-management-position-assignment.entity-DdMmiGbn.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Byxt921P.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-DdMmiGbn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CAvjZTG9.mjs → acorex-modules-human-capital-management-reject-leave-request.command-Bdwwkcs3.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CAvjZTG9.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-Bdwwkcs3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BeWrsQo8.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-Cq-aA79w.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BeWrsQo8.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-Cq-aA79w.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-Cx9TRMlY.mjs +230 -0
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-Cx9TRMlY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bz2SZcmm.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DjepuAcu.mjs} +9 -14
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DjepuAcu.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +2 -2
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dj9u0VEL.mjs → acorex-modules-settings-management-acorex-modules-settings-management-BfbVV7di.mjs} +5 -5
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dj9u0VEL.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-BfbVV7di.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DpRn1jAo.mjs → acorex-modules-settings-management-permission-definition.provider-BBb5hqkc.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DpRn1jAo.mjs.map → acorex-modules-settings-management-permission-definition.provider-BBb5hqkc.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-C9wPgm_P.mjs → acorex-modules-settings-management-setting-page.component-Dn8CYgux.mjs} +4 -4
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-C9wPgm_P.mjs.map → acorex-modules-settings-management-setting-page.component-Dn8CYgux.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-BQ69Bx8C.mjs → acorex-modules-settings-management-setting-view.component-B5jpPo9k.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-BQ69Bx8C.mjs.map → acorex-modules-settings-management-setting-view.component-B5jpPo9k.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-CxheG2ry.mjs → acorex-modules-workflow-management-index-CztICioV.mjs} +64 -4
- package/fesm2022/acorex-modules-workflow-management-index-CztICioV.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-Cpi0Pq3n.mjs +79 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-Cpi0Pq3n.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-RbwX6Nd_.mjs +466 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-RbwX6Nd_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-definition.entity-DISpkWE4.mjs → acorex-modules-workflow-management-workflow-definition.entity-BfACGpo4.mjs} +2 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-BfACGpo4.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +175 -29
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-ai-management.d.ts +2 -2
- package/types/acorex-modules-assessment-management.d.ts +214 -188
- package/types/acorex-modules-common.d.ts +13 -3
- package/types/acorex-modules-conversation.d.ts +22 -11
- package/types/acorex-modules-dashboard-management.d.ts +14 -2
- package/types/acorex-modules-document-management.d.ts +6 -0
- package/types/acorex-modules-human-capital-management.d.ts +28 -14
- package/types/acorex-modules-report-management.d.ts +3 -0
- package/types/acorex-modules-workflow-management.d.ts +18 -11
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BUuEzfsI.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-DMP4RC6L.mjs +0 -25
- package/fesm2022/acorex-modules-auth-master.layout-DMP4RC6L.mjs.map +0 -1
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-txpooXrE.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DYW31fEm.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DQlE8l4c.mjs +0 -329
- package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DQlE8l4c.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-DrKulwY-.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-CrVU_3Jv.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-QeY6lcUY.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-D7B3adkZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-Dim-8hT7.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-3HtYOKrY.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bz2SZcmm.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-CxheG2ry.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-DISpkWE4.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injector, Injectable, NgModule, input, output, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component, ViewEncapsulation, ElementRef, afterNextRender } from '@angular/core';
|
|
3
3
|
import { AXPCommonMenuKeys } from '@acorex/modules/common';
|
|
4
|
-
import { AXPEntityService, AXPEntityDefinitionRegistryService, AXPEntityEventsKeys, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
|
5
|
-
import { AXPSearchCommandProvider, createEntityCommandOptions,
|
|
4
|
+
import { AXPEntityService, AXPEntityDefinitionRegistryService, AXPEntityEventsKeys, AXPFileListComponent, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
|
5
|
+
import { AXPSearchCommandProvider, createEntityCommandOptions, AXPStickyDirective, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXPSystemStatusType } from '@acorex/platform/common';
|
|
6
6
|
import { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER, AXPSessionService } from '@acorex/platform/auth';
|
|
7
7
|
import { AXPDataSelectorService, AXPPropertyViewerService, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXP_PAGE_COMPONENT_PROVIDER, AXPOutcomeResultsViewerComponent, AXPThemeLayoutBlockComponent, AXPStopwatchComponent } from '@acorex/platform/layout/components';
|
|
8
8
|
import { AXPCommandService, provideCommandSetups, provideCommand } from '@acorex/platform/runtime';
|
|
@@ -48,6 +48,8 @@ import * as i3$1 from '@acorex/components/drawer';
|
|
|
48
48
|
import { AXDrawerModule } from '@acorex/components/drawer';
|
|
49
49
|
import * as i1$2 from '@acorex/components/tabs';
|
|
50
50
|
import { AXTabsComponent, AXTabsModule } from '@acorex/components/tabs';
|
|
51
|
+
import * as i3$2 from '@acorex/components/popover';
|
|
52
|
+
import { AXPopoverModule } from '@acorex/components/popover';
|
|
51
53
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
52
54
|
|
|
53
55
|
//#region ---- Root Configuration ----
|
|
@@ -101,13 +103,13 @@ class AXMAssessmentManagementEntityProvider {
|
|
|
101
103
|
if (moduleName === RootConfig.module.name) {
|
|
102
104
|
switch (entityName) {
|
|
103
105
|
case RootConfig.entities.questionBankItem.name:
|
|
104
|
-
return (await import('./acorex-modules-assessment-management-question-bank-item.entity-
|
|
106
|
+
return (await import('./acorex-modules-assessment-management-question-bank-item.entity-DZBQOgAg.mjs')).factory(this.injector);
|
|
105
107
|
case RootConfig.entities.questionnaire.name:
|
|
106
|
-
return (await import('./acorex-modules-assessment-management-questionnaire.entity-
|
|
108
|
+
return (await import('./acorex-modules-assessment-management-questionnaire.entity-BGkWU83k.mjs')).factory();
|
|
107
109
|
case RootConfig.entities.assessmentCase.name:
|
|
108
|
-
return (await import('./acorex-modules-assessment-management-assessment-case.entity-
|
|
110
|
+
return (await import('./acorex-modules-assessment-management-assessment-case.entity-BWMbcZFT.mjs')).factory(this.injector);
|
|
109
111
|
case RootConfig.entities.assessmentSession.name:
|
|
110
|
-
return (await import('./acorex-modules-assessment-management-assessment-session.entity-
|
|
112
|
+
return (await import('./acorex-modules-assessment-management-assessment-session.entity-osEWRiw1.mjs')).factory(this.injector);
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
return null;
|
|
@@ -430,10 +432,10 @@ const AXMQuestionBankInterfaceEditorWidget = {
|
|
|
430
432
|
],
|
|
431
433
|
components: {
|
|
432
434
|
edit: {
|
|
433
|
-
component: () => import('./acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-
|
|
435
|
+
component: () => import('./acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
|
|
434
436
|
},
|
|
435
437
|
designer: {
|
|
436
|
-
component: () => import('./acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-
|
|
438
|
+
component: () => import('./acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BvqEePUh.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
|
|
437
439
|
},
|
|
438
440
|
column: {
|
|
439
441
|
component: () => import('@acorex/platform/layout/widgets').then((m) => m.AXPWidgetFieldConfiguratorWidgetColumnComponent),
|
|
@@ -762,224 +764,6 @@ function parseQuestionHintPartialFromRecord(row) {
|
|
|
762
764
|
}
|
|
763
765
|
//#endregion
|
|
764
766
|
|
|
765
|
-
//#region ---- Imports ----
|
|
766
|
-
/**
|
|
767
|
-
* Answer map key for a questionnaire item (matches viewer session).
|
|
768
|
-
*/
|
|
769
|
-
function getQuestionnaireItemAnswerKey(item) {
|
|
770
|
-
return typeof item.name === 'string' ? item.name.trim() : '';
|
|
771
|
-
}
|
|
772
|
-
/**
|
|
773
|
-
* Storage key for answers — matches viewer `answerKey` fallback when item name is empty.
|
|
774
|
-
*/
|
|
775
|
-
function resolveQuestionnaireItemAnswerStorageKey(item, itemIndex) {
|
|
776
|
-
const fromName = getQuestionnaireItemAnswerKey(item);
|
|
777
|
-
if (fromName) {
|
|
778
|
-
return fromName;
|
|
779
|
-
}
|
|
780
|
-
const legacyId = typeof item.id === 'string' ? item.id.trim() : '';
|
|
781
|
-
return legacyId || `item-${itemIndex}`;
|
|
782
|
-
}
|
|
783
|
-
//#endregion
|
|
784
|
-
//#region ---- Utility Functions ----
|
|
785
|
-
/**
|
|
786
|
-
* True only when the item is statically required (boolean true), not expression-based.
|
|
787
|
-
*/
|
|
788
|
-
function isQuestionnaireItemStaticallyRequired(isRequired) {
|
|
789
|
-
return isRequired === true;
|
|
790
|
-
}
|
|
791
|
-
/**
|
|
792
|
-
* True when the UI should indicate required (static true or non-empty expression).
|
|
793
|
-
*/
|
|
794
|
-
function isQuestionnaireItemRequiredForDisplay(isRequired) {
|
|
795
|
-
if (isRequired === true) {
|
|
796
|
-
return true;
|
|
797
|
-
}
|
|
798
|
-
if (typeof isRequired === 'string' && isRequired.trim() !== '') {
|
|
799
|
-
return true;
|
|
800
|
-
}
|
|
801
|
-
return false;
|
|
802
|
-
}
|
|
803
|
-
function getQuestionnaireItemRequiredBadgeMode(isRequired) {
|
|
804
|
-
if (isRequired === true) {
|
|
805
|
-
return 'required';
|
|
806
|
-
}
|
|
807
|
-
if (typeof isRequired === 'string') {
|
|
808
|
-
const t = isRequired.trim();
|
|
809
|
-
if (!t) {
|
|
810
|
-
return 'optional';
|
|
811
|
-
}
|
|
812
|
-
const tl = t.toLowerCase();
|
|
813
|
-
if (tl === 'true' || tl === '1') {
|
|
814
|
-
return 'required';
|
|
815
|
-
}
|
|
816
|
-
if (tl === 'false' || tl === '0') {
|
|
817
|
-
return 'optional';
|
|
818
|
-
}
|
|
819
|
-
return 'conditional';
|
|
820
|
-
}
|
|
821
|
-
return 'optional';
|
|
822
|
-
}
|
|
823
|
-
function getQuestionnaireItemVisibilityBadgeMode(isVisible) {
|
|
824
|
-
if (isVisible === false) {
|
|
825
|
-
return 'hidden';
|
|
826
|
-
}
|
|
827
|
-
if (isVisible === true || isVisible === undefined || isVisible === null) {
|
|
828
|
-
return 'visible';
|
|
829
|
-
}
|
|
830
|
-
if (typeof isVisible === 'string') {
|
|
831
|
-
const t = isVisible.trim();
|
|
832
|
-
if (!t) {
|
|
833
|
-
return 'visible';
|
|
834
|
-
}
|
|
835
|
-
const tl = t.toLowerCase();
|
|
836
|
-
if (tl === 'true' || tl === '1') {
|
|
837
|
-
return 'visible';
|
|
838
|
-
}
|
|
839
|
-
if (tl === 'false' || tl === '0') {
|
|
840
|
-
return 'hidden';
|
|
841
|
-
}
|
|
842
|
-
return 'conditional';
|
|
843
|
-
}
|
|
844
|
-
return 'visible';
|
|
845
|
-
}
|
|
846
|
-
/**
|
|
847
|
-
* Convert raw value to builder state
|
|
848
|
-
*/
|
|
849
|
-
function convertValueToState(value) {
|
|
850
|
-
// Handle null/undefined or empty sections
|
|
851
|
-
if (!value || !value.sections || value.sections.length === 0) {
|
|
852
|
-
// Always return at least one default section
|
|
853
|
-
const defaultSection = createDefaultSection();
|
|
854
|
-
defaultSection.order = 0;
|
|
855
|
-
return {
|
|
856
|
-
sections: [defaultSection],
|
|
857
|
-
displaySettings: value?.displaySettings,
|
|
858
|
-
};
|
|
859
|
-
}
|
|
860
|
-
// Handle structure (sections with nested items)
|
|
861
|
-
return {
|
|
862
|
-
sections: value.sections.map((section, sectionIndex) => {
|
|
863
|
-
const legacy = section;
|
|
864
|
-
const sectionName = (typeof section.name === 'string' && section.name.trim()) ||
|
|
865
|
-
(typeof legacy.id === 'string' && legacy.id.trim()) ||
|
|
866
|
-
`section-${sectionIndex}`;
|
|
867
|
-
return {
|
|
868
|
-
name: sectionName,
|
|
869
|
-
title: section.title,
|
|
870
|
-
description: section.description,
|
|
871
|
-
order: section.order ?? sectionIndex,
|
|
872
|
-
tags: section.tags,
|
|
873
|
-
isVisible: section.isVisible,
|
|
874
|
-
items: (section.items || []).map((item, itemIndex) => {
|
|
875
|
-
const itemLegacy = item;
|
|
876
|
-
const itemName = (typeof item.name === 'string' && item.name.trim()) ||
|
|
877
|
-
(typeof itemLegacy.id === 'string' && itemLegacy.id.trim()) ||
|
|
878
|
-
`item-${itemIndex}`;
|
|
879
|
-
return {
|
|
880
|
-
name: itemName,
|
|
881
|
-
questionBankItemId: item.questionBankItemId,
|
|
882
|
-
order: item.order ?? itemIndex,
|
|
883
|
-
isRequired: item.isRequired,
|
|
884
|
-
isVisible: item.isVisible,
|
|
885
|
-
interfaceOverride: item.interfaceOverride,
|
|
886
|
-
hint: parseQuestionHintPartialFromRecord(item),
|
|
887
|
-
comment: item.comment,
|
|
888
|
-
tags: item.tags,
|
|
889
|
-
isNewlyAdded: false,
|
|
890
|
-
};
|
|
891
|
-
}),
|
|
892
|
-
isNewlyAdded: false,
|
|
893
|
-
};
|
|
894
|
-
}),
|
|
895
|
-
displaySettings: value.displaySettings,
|
|
896
|
-
};
|
|
897
|
-
}
|
|
898
|
-
/**
|
|
899
|
-
* Convert builder state to value for persistence
|
|
900
|
-
*/
|
|
901
|
-
function convertStateToValue(state, existingValue) {
|
|
902
|
-
const result = {
|
|
903
|
-
sections: state.sections.map((section) => {
|
|
904
|
-
return {
|
|
905
|
-
name: section.name,
|
|
906
|
-
title: section.title,
|
|
907
|
-
description: section.description,
|
|
908
|
-
order: section.order,
|
|
909
|
-
tags: section.tags,
|
|
910
|
-
isVisible: section.isVisible,
|
|
911
|
-
items: section.items.map((item) => ({
|
|
912
|
-
name: item.name,
|
|
913
|
-
questionBankItemId: item.questionBankItemId,
|
|
914
|
-
order: item.order,
|
|
915
|
-
isRequired: item.isRequired,
|
|
916
|
-
isVisible: item.isVisible,
|
|
917
|
-
interfaceOverride: item.interfaceOverride,
|
|
918
|
-
hint: item.hint,
|
|
919
|
-
comment: item.comment,
|
|
920
|
-
tags: item.tags,
|
|
921
|
-
})),
|
|
922
|
-
};
|
|
923
|
-
}),
|
|
924
|
-
};
|
|
925
|
-
// Preserve displaySettings from state first, then from existing value if state doesn't have it
|
|
926
|
-
if (state.displaySettings) {
|
|
927
|
-
result.displaySettings = state.displaySettings;
|
|
928
|
-
}
|
|
929
|
-
else if (existingValue?.displaySettings) {
|
|
930
|
-
result.displaySettings = existingValue.displaySettings;
|
|
931
|
-
}
|
|
932
|
-
return result;
|
|
933
|
-
}
|
|
934
|
-
/**
|
|
935
|
-
* Create a default section
|
|
936
|
-
*/
|
|
937
|
-
function createDefaultSection() {
|
|
938
|
-
const name = `section-${Date.now()}`;
|
|
939
|
-
return {
|
|
940
|
-
name,
|
|
941
|
-
title: 'New Section',
|
|
942
|
-
description: undefined,
|
|
943
|
-
order: 0,
|
|
944
|
-
isVisible: undefined,
|
|
945
|
-
items: [],
|
|
946
|
-
isNewlyAdded: true,
|
|
947
|
-
};
|
|
948
|
-
}
|
|
949
|
-
/**
|
|
950
|
-
* All questionnaire item names currently in the structure (for uniqueness when allocating new names).
|
|
951
|
-
*/
|
|
952
|
-
function collectQuestionnaireItemNames(sections) {
|
|
953
|
-
const set = new Set();
|
|
954
|
-
for (const sec of sections) {
|
|
955
|
-
for (const it of sec.items) {
|
|
956
|
-
if (it.name)
|
|
957
|
-
set.add(it.name);
|
|
958
|
-
}
|
|
959
|
-
}
|
|
960
|
-
return set;
|
|
961
|
-
}
|
|
962
|
-
/**
|
|
963
|
-
* Allocates the next user-friendly name (`q1`, `q2`, …) not present in `used`.
|
|
964
|
-
* Increments from the highest existing `q<number>` name, then skips collisions.
|
|
965
|
-
*/
|
|
966
|
-
function allocateNextQuestionItemName(used) {
|
|
967
|
-
let maxQ = 0;
|
|
968
|
-
for (const id of used) {
|
|
969
|
-
const m = /^q(\d+)$/i.exec(id.trim());
|
|
970
|
-
if (m)
|
|
971
|
-
maxQ = Math.max(maxQ, parseInt(m[1], 10));
|
|
972
|
-
}
|
|
973
|
-
let n = maxQ + 1;
|
|
974
|
-
let candidate = `q${n}`;
|
|
975
|
-
while (used.has(candidate)) {
|
|
976
|
-
n++;
|
|
977
|
-
candidate = `q${n}`;
|
|
978
|
-
}
|
|
979
|
-
return candidate;
|
|
980
|
-
}
|
|
981
|
-
//#endregion
|
|
982
|
-
|
|
983
767
|
//#region ---- Imports ----
|
|
984
768
|
const DEFAULT_PRE_QUESTIONNAIRE_CONFIG = { enabled: false };
|
|
985
769
|
const DEFAULT_POST_QUESTIONNAIRE_CONFIG = {
|
|
@@ -1205,51 +989,269 @@ function normalizeViewMode(value) {
|
|
|
1205
989
|
if (typeof value === 'string' && VIEW_MODE_VALUES.includes(value)) {
|
|
1206
990
|
return value;
|
|
1207
991
|
}
|
|
1208
|
-
if (value != null && typeof value === 'object' && 'id' in value && typeof value.id === 'string') {
|
|
1209
|
-
return normalizeViewMode(value.id);
|
|
992
|
+
if (value != null && typeof value === 'object' && 'id' in value && typeof value.id === 'string') {
|
|
993
|
+
return normalizeViewMode(value.id);
|
|
994
|
+
}
|
|
995
|
+
return 'single-page';
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Coerces stored validation strategy (string or SelectBox `{ id }`) to a known value.
|
|
999
|
+
*/
|
|
1000
|
+
function normalizeValidationStrategy$1(value) {
|
|
1001
|
+
if (typeof value === 'string' && VALIDATION_STRATEGY_VALUES.includes(value)) {
|
|
1002
|
+
return value;
|
|
1003
|
+
}
|
|
1004
|
+
if (value != null && typeof value === 'object' && 'id' in value && typeof value.id === 'string') {
|
|
1005
|
+
return normalizeValidationStrategy$1(value.id);
|
|
1006
|
+
}
|
|
1007
|
+
return 'step';
|
|
1008
|
+
}
|
|
1009
|
+
/**
|
|
1010
|
+
* Coerces stored completion mode (string or SelectBox `{ id }`) to a known value.
|
|
1011
|
+
*/
|
|
1012
|
+
function normalizeCompletionMode(value) {
|
|
1013
|
+
if (typeof value === 'string' && COMPLETION_MODE_VALUES.includes(value)) {
|
|
1014
|
+
return value;
|
|
1015
|
+
}
|
|
1016
|
+
if (value != null && typeof value === 'object' && 'id' in value && typeof value.id === 'string') {
|
|
1017
|
+
return normalizeCompletionMode(value.id);
|
|
1018
|
+
}
|
|
1019
|
+
return 'submit-only';
|
|
1020
|
+
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Maps entity `display` to {@link QuestionnaireDisplaySettings} (defaults when omitted).
|
|
1023
|
+
*/
|
|
1024
|
+
function toDisplaySettings(q) {
|
|
1025
|
+
if (!q) {
|
|
1026
|
+
return null;
|
|
1027
|
+
}
|
|
1028
|
+
const d = { ...DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY, ...q.display };
|
|
1029
|
+
return {
|
|
1030
|
+
viewMode: normalizeViewMode(d.viewMode),
|
|
1031
|
+
showProgressBar: d.showProgressBar ?? true,
|
|
1032
|
+
showTimer: d.showTimer ?? false,
|
|
1033
|
+
showQuestionNumbers: d.showQuestionNumbers ?? true,
|
|
1034
|
+
validationStrategy: normalizeValidationStrategy$1(d.validationStrategy),
|
|
1035
|
+
completionMode: normalizeCompletionMode(d.completionMode),
|
|
1036
|
+
};
|
|
1037
|
+
}
|
|
1038
|
+
//#endregion
|
|
1039
|
+
|
|
1040
|
+
//#region ---- Imports ----
|
|
1041
|
+
/**
|
|
1042
|
+
* Answer map key for a questionnaire item (matches viewer session).
|
|
1043
|
+
*/
|
|
1044
|
+
function getQuestionnaireItemAnswerKey(item) {
|
|
1045
|
+
return typeof item.name === 'string' ? item.name.trim() : '';
|
|
1046
|
+
}
|
|
1047
|
+
/**
|
|
1048
|
+
* Storage key for answers — matches viewer `answerKey` fallback when item name is empty.
|
|
1049
|
+
*/
|
|
1050
|
+
function resolveQuestionnaireItemAnswerStorageKey(item, itemIndex) {
|
|
1051
|
+
const fromName = getQuestionnaireItemAnswerKey(item);
|
|
1052
|
+
if (fromName) {
|
|
1053
|
+
return fromName;
|
|
1054
|
+
}
|
|
1055
|
+
const legacyId = typeof item.id === 'string' ? item.id.trim() : '';
|
|
1056
|
+
return legacyId || `item-${itemIndex}`;
|
|
1057
|
+
}
|
|
1058
|
+
//#endregion
|
|
1059
|
+
//#region ---- Utility Functions ----
|
|
1060
|
+
/**
|
|
1061
|
+
* True only when the item is statically required (boolean true), not expression-based.
|
|
1062
|
+
*/
|
|
1063
|
+
function isQuestionnaireItemStaticallyRequired(isRequired) {
|
|
1064
|
+
return isRequired === true;
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* True when the UI should indicate required (static true or non-empty expression).
|
|
1068
|
+
*/
|
|
1069
|
+
function isQuestionnaireItemRequiredForDisplay(isRequired) {
|
|
1070
|
+
if (isRequired === true) {
|
|
1071
|
+
return true;
|
|
1072
|
+
}
|
|
1073
|
+
if (typeof isRequired === 'string' && isRequired.trim() !== '') {
|
|
1074
|
+
return true;
|
|
1075
|
+
}
|
|
1076
|
+
return false;
|
|
1077
|
+
}
|
|
1078
|
+
function getQuestionnaireItemRequiredBadgeMode(isRequired) {
|
|
1079
|
+
if (isRequired === true) {
|
|
1080
|
+
return 'required';
|
|
1081
|
+
}
|
|
1082
|
+
if (typeof isRequired === 'string') {
|
|
1083
|
+
const t = isRequired.trim();
|
|
1084
|
+
if (!t) {
|
|
1085
|
+
return 'optional';
|
|
1086
|
+
}
|
|
1087
|
+
const tl = t.toLowerCase();
|
|
1088
|
+
if (tl === 'true' || tl === '1') {
|
|
1089
|
+
return 'required';
|
|
1090
|
+
}
|
|
1091
|
+
if (tl === 'false' || tl === '0') {
|
|
1092
|
+
return 'optional';
|
|
1093
|
+
}
|
|
1094
|
+
return 'conditional';
|
|
1095
|
+
}
|
|
1096
|
+
return 'optional';
|
|
1097
|
+
}
|
|
1098
|
+
function getQuestionnaireItemVisibilityBadgeMode(isVisible) {
|
|
1099
|
+
if (isVisible === false) {
|
|
1100
|
+
return 'hidden';
|
|
1101
|
+
}
|
|
1102
|
+
if (isVisible === true || isVisible === undefined || isVisible === null) {
|
|
1103
|
+
return 'visible';
|
|
1104
|
+
}
|
|
1105
|
+
if (typeof isVisible === 'string') {
|
|
1106
|
+
const t = isVisible.trim();
|
|
1107
|
+
if (!t) {
|
|
1108
|
+
return 'visible';
|
|
1109
|
+
}
|
|
1110
|
+
const tl = t.toLowerCase();
|
|
1111
|
+
if (tl === 'true' || tl === '1') {
|
|
1112
|
+
return 'visible';
|
|
1113
|
+
}
|
|
1114
|
+
if (tl === 'false' || tl === '0') {
|
|
1115
|
+
return 'hidden';
|
|
1116
|
+
}
|
|
1117
|
+
return 'conditional';
|
|
1118
|
+
}
|
|
1119
|
+
return 'visible';
|
|
1120
|
+
}
|
|
1121
|
+
/**
|
|
1122
|
+
* Convert raw value to builder state
|
|
1123
|
+
*/
|
|
1124
|
+
function convertValueToState(value) {
|
|
1125
|
+
// Handle null/undefined or empty sections
|
|
1126
|
+
if (!value || !value.sections || value.sections.length === 0) {
|
|
1127
|
+
// Always return at least one default section
|
|
1128
|
+
const defaultSection = createDefaultSection();
|
|
1129
|
+
defaultSection.order = 0;
|
|
1130
|
+
return {
|
|
1131
|
+
sections: [defaultSection],
|
|
1132
|
+
displaySettings: value?.displaySettings,
|
|
1133
|
+
};
|
|
1134
|
+
}
|
|
1135
|
+
// Handle structure (sections with nested items)
|
|
1136
|
+
return {
|
|
1137
|
+
sections: value.sections.map((section, sectionIndex) => {
|
|
1138
|
+
const legacy = section;
|
|
1139
|
+
const sectionName = (typeof section.name === 'string' && section.name.trim()) ||
|
|
1140
|
+
(typeof legacy.id === 'string' && legacy.id.trim()) ||
|
|
1141
|
+
`section-${sectionIndex}`;
|
|
1142
|
+
return {
|
|
1143
|
+
name: sectionName,
|
|
1144
|
+
title: section.title,
|
|
1145
|
+
description: section.description,
|
|
1146
|
+
order: section.order ?? sectionIndex,
|
|
1147
|
+
tags: section.tags,
|
|
1148
|
+
isVisible: section.isVisible,
|
|
1149
|
+
items: (section.items || []).map((item, itemIndex) => {
|
|
1150
|
+
const itemLegacy = item;
|
|
1151
|
+
const itemName = (typeof item.name === 'string' && item.name.trim()) ||
|
|
1152
|
+
(typeof itemLegacy.id === 'string' && itemLegacy.id.trim()) ||
|
|
1153
|
+
`item-${itemIndex}`;
|
|
1154
|
+
return {
|
|
1155
|
+
name: itemName,
|
|
1156
|
+
questionBankItemId: item.questionBankItemId,
|
|
1157
|
+
order: item.order ?? itemIndex,
|
|
1158
|
+
isRequired: item.isRequired,
|
|
1159
|
+
isVisible: item.isVisible,
|
|
1160
|
+
interfaceOverride: item.interfaceOverride,
|
|
1161
|
+
hint: parseQuestionHintPartialFromRecord(item),
|
|
1162
|
+
comment: item.comment,
|
|
1163
|
+
tags: item.tags,
|
|
1164
|
+
isNewlyAdded: false,
|
|
1165
|
+
};
|
|
1166
|
+
}),
|
|
1167
|
+
isNewlyAdded: false,
|
|
1168
|
+
};
|
|
1169
|
+
}),
|
|
1170
|
+
displaySettings: value.displaySettings,
|
|
1171
|
+
};
|
|
1172
|
+
}
|
|
1173
|
+
/**
|
|
1174
|
+
* Convert builder state to value for persistence
|
|
1175
|
+
*/
|
|
1176
|
+
function convertStateToValue(state, existingValue) {
|
|
1177
|
+
const result = {
|
|
1178
|
+
sections: state.sections.map((section) => {
|
|
1179
|
+
return {
|
|
1180
|
+
name: section.name,
|
|
1181
|
+
title: section.title,
|
|
1182
|
+
description: section.description,
|
|
1183
|
+
order: section.order,
|
|
1184
|
+
tags: section.tags,
|
|
1185
|
+
isVisible: section.isVisible,
|
|
1186
|
+
items: section.items.map((item) => ({
|
|
1187
|
+
name: item.name,
|
|
1188
|
+
questionBankItemId: item.questionBankItemId,
|
|
1189
|
+
order: item.order,
|
|
1190
|
+
isRequired: item.isRequired,
|
|
1191
|
+
isVisible: item.isVisible,
|
|
1192
|
+
interfaceOverride: item.interfaceOverride,
|
|
1193
|
+
hint: item.hint,
|
|
1194
|
+
comment: item.comment,
|
|
1195
|
+
tags: item.tags,
|
|
1196
|
+
})),
|
|
1197
|
+
};
|
|
1198
|
+
}),
|
|
1199
|
+
};
|
|
1200
|
+
// Preserve displaySettings from state first, then from existing value if state doesn't have it
|
|
1201
|
+
if (state.displaySettings) {
|
|
1202
|
+
result.displaySettings = state.displaySettings;
|
|
1203
|
+
}
|
|
1204
|
+
else if (existingValue?.displaySettings) {
|
|
1205
|
+
result.displaySettings = existingValue.displaySettings;
|
|
1210
1206
|
}
|
|
1211
|
-
return
|
|
1207
|
+
return result;
|
|
1212
1208
|
}
|
|
1213
1209
|
/**
|
|
1214
|
-
*
|
|
1210
|
+
* Create a default section
|
|
1215
1211
|
*/
|
|
1216
|
-
function
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1212
|
+
function createDefaultSection() {
|
|
1213
|
+
const name = `section-${Date.now()}`;
|
|
1214
|
+
return {
|
|
1215
|
+
name,
|
|
1216
|
+
title: 'New Section',
|
|
1217
|
+
description: undefined,
|
|
1218
|
+
order: 0,
|
|
1219
|
+
isVisible: undefined,
|
|
1220
|
+
items: [],
|
|
1221
|
+
isNewlyAdded: true,
|
|
1222
|
+
};
|
|
1224
1223
|
}
|
|
1225
1224
|
/**
|
|
1226
|
-
*
|
|
1225
|
+
* All questionnaire item names currently in the structure (for uniqueness when allocating new names).
|
|
1227
1226
|
*/
|
|
1228
|
-
function
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1227
|
+
function collectQuestionnaireItemNames(sections) {
|
|
1228
|
+
const set = new Set();
|
|
1229
|
+
for (const sec of sections) {
|
|
1230
|
+
for (const it of sec.items) {
|
|
1231
|
+
if (it.name)
|
|
1232
|
+
set.add(it.name);
|
|
1233
|
+
}
|
|
1234
1234
|
}
|
|
1235
|
-
return
|
|
1235
|
+
return set;
|
|
1236
1236
|
}
|
|
1237
1237
|
/**
|
|
1238
|
-
*
|
|
1238
|
+
* Allocates the next user-friendly name (`q1`, `q2`, …) not present in `used`.
|
|
1239
|
+
* Increments from the highest existing `q<number>` name, then skips collisions.
|
|
1239
1240
|
*/
|
|
1240
|
-
function
|
|
1241
|
-
|
|
1242
|
-
|
|
1241
|
+
function allocateNextQuestionItemName(used) {
|
|
1242
|
+
let maxQ = 0;
|
|
1243
|
+
for (const id of used) {
|
|
1244
|
+
const m = /^q(\d+)$/i.exec(id.trim());
|
|
1245
|
+
if (m)
|
|
1246
|
+
maxQ = Math.max(maxQ, parseInt(m[1], 10));
|
|
1243
1247
|
}
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
completionMode: normalizeCompletionMode(d.completionMode),
|
|
1252
|
-
};
|
|
1248
|
+
let n = maxQ + 1;
|
|
1249
|
+
let candidate = `q${n}`;
|
|
1250
|
+
while (used.has(candidate)) {
|
|
1251
|
+
n++;
|
|
1252
|
+
candidate = `q${n}`;
|
|
1253
|
+
}
|
|
1254
|
+
return candidate;
|
|
1253
1255
|
}
|
|
1254
1256
|
//#endregion
|
|
1255
1257
|
|
|
@@ -1376,7 +1378,7 @@ class AXMQuestionnaireViewerService {
|
|
|
1376
1378
|
* Open questionnaire viewer in a dialog
|
|
1377
1379
|
*/
|
|
1378
1380
|
async open(config) {
|
|
1379
|
-
const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-modules-assessment-management-questionnaire-viewer-popup.component-
|
|
1381
|
+
const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-modules-assessment-management-questionnaire-viewer-popup.component-BMv-XkZk.mjs');
|
|
1380
1382
|
const structure = config.structure;
|
|
1381
1383
|
const submitHandler = config.submitHandler ??
|
|
1382
1384
|
((answers) => this.buildSummaryPlaceholderValues(structure, answers, {
|
|
@@ -1892,6 +1894,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1892
1894
|
}]
|
|
1893
1895
|
}] });
|
|
1894
1896
|
|
|
1897
|
+
//#region ---- Preview dialog title ----
|
|
1898
|
+
/**
|
|
1899
|
+
* Formats popup title as `Preview: {questionnaire name}` when a name is available.
|
|
1900
|
+
*/
|
|
1901
|
+
function formatQuestionnairePreviewDialogTitle(previewLabel, questionnaireName) {
|
|
1902
|
+
const base = previewLabel.trim() || 'Preview';
|
|
1903
|
+
const name = questionnaireName?.trim();
|
|
1904
|
+
return name ? `${base}: ${name}` : base;
|
|
1905
|
+
}
|
|
1906
|
+
//#endregion
|
|
1907
|
+
|
|
1895
1908
|
//#region ---- Imports ----
|
|
1896
1909
|
//#endregion
|
|
1897
1910
|
//#region ---- Groups ----
|
|
@@ -2208,6 +2221,8 @@ class AXMQuestionnaireQuestionsBuilderComponent {
|
|
|
2208
2221
|
* Persisted questionnaire id (e.g. from entity form) — enables questionnaire outcomes in preview.
|
|
2209
2222
|
*/
|
|
2210
2223
|
this.questionnaireEntityId = input(undefined, ...(ngDevMode ? [{ debugName: "questionnaireEntityId" }] : /* istanbul ignore next */ []));
|
|
2224
|
+
/** Questionnaire display name for preview dialog title (`Preview: {name}`). */
|
|
2225
|
+
this.questionnaireTitle = input(undefined, ...(ngDevMode ? [{ debugName: "questionnaireTitle" }] : /* istanbul ignore next */ []));
|
|
2211
2226
|
/**
|
|
2212
2227
|
* Value change event
|
|
2213
2228
|
*/
|
|
@@ -3009,7 +3024,8 @@ class AXMQuestionnaireQuestionsBuilderComponent {
|
|
|
3009
3024
|
const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);
|
|
3010
3025
|
// Always use the current displaySettings from the computed property to ensure preview uses latest settings
|
|
3011
3026
|
currentValue.displaySettings = this.displaySettings();
|
|
3012
|
-
const
|
|
3027
|
+
const previewTitleBase = (await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title')) || 'Preview';
|
|
3028
|
+
const previewTitle = formatQuestionnairePreviewDialogTitle(previewTitleBase, this.questionnaireTitle());
|
|
3013
3029
|
const result = await this.questionnaireViewerService.open({
|
|
3014
3030
|
title: previewTitle,
|
|
3015
3031
|
structure: currentValue,
|
|
@@ -3035,7 +3051,7 @@ class AXMQuestionnaireQuestionsBuilderComponent {
|
|
|
3035
3051
|
}
|
|
3036
3052
|
}
|
|
3037
3053
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireQuestionsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3038
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireQuestionsBuilderComponent, isStandalone: true, selector: "axm-questionnaire-questions-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, displaySettingsInput: { classPropertyName: "displaySettingsInput", publicName: "displaySettingsInput", isSignal: true, isRequired: false, transformFunction: null }, questionnaireEntityId: { classPropertyName: "questionnaireEntityId", publicName: "questionnaireEntityId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fullscreenDirective", first: true, predicate: ["fullscreen"], descendants: true, isSignal: true }, { propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-questionnaire-questions-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button class=\"ax-sm\" [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \" [color]=\"'primary'\" (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \" [disabled]=\"isPreviewDisabled()\" (onClick)=\"handlePreview()\">\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \" (onClick)=\"handleFullscreen()\">\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder #standardRef class=\"ax-block ax-min-h-[200px]\" [value]=\"builderValue()\"\n [config]=\"standardConfig()\" [readonly]=\"readonly()\" (valueChange)=\"onBuilderValueChange($event)\" />\n</div>", styles: [".axm-questionnaire-questions-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-questions-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-questions-builder .__header .__header-left,.axm-questionnaire-questions-builder .__header .__header-right{display:flex;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "directive", type: AXFullScreenDirective, selector: "[axFullscreen]", outputs: ["fullscreenChange"], exportAs: ["axFullscreen"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3054
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireQuestionsBuilderComponent, isStandalone: true, selector: "axm-questionnaire-questions-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, displaySettingsInput: { classPropertyName: "displaySettingsInput", publicName: "displaySettingsInput", isSignal: true, isRequired: false, transformFunction: null }, questionnaireEntityId: { classPropertyName: "questionnaireEntityId", publicName: "questionnaireEntityId", isSignal: true, isRequired: false, transformFunction: null }, questionnaireTitle: { classPropertyName: "questionnaireTitle", publicName: "questionnaireTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fullscreenDirective", first: true, predicate: ["fullscreen"], descendants: true, isSignal: true }, { propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-questionnaire-questions-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button class=\"ax-sm\" [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \" [color]=\"'primary'\" (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \" [disabled]=\"isPreviewDisabled()\" (onClick)=\"handlePreview()\">\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \" (onClick)=\"handleFullscreen()\">\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder #standardRef class=\"ax-block ax-min-h-[200px]\" [value]=\"builderValue()\"\n [config]=\"standardConfig()\" [readonly]=\"readonly()\" (valueChange)=\"onBuilderValueChange($event)\" />\n</div>", styles: [".axm-questionnaire-questions-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-questions-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-questions-builder .__header .__header-left,.axm-questionnaire-questions-builder .__header .__header-right{display:flex;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "directive", type: AXFullScreenDirective, selector: "[axFullscreen]", outputs: ["fullscreenChange"], exportAs: ["axFullscreen"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3039
3055
|
}
|
|
3040
3056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireQuestionsBuilderComponent, decorators: [{
|
|
3041
3057
|
type: Component,
|
|
@@ -3052,7 +3068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3052
3068
|
AXPStandardSectionItemsBuilderComponent,
|
|
3053
3069
|
AXFullScreenDirective,
|
|
3054
3070
|
], template: "<div class=\"axm-questionnaire-questions-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button class=\"ax-sm\" [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \" [color]=\"'primary'\" (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \" [disabled]=\"isPreviewDisabled()\" (onClick)=\"handlePreview()\">\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \" (onClick)=\"handleFullscreen()\">\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder #standardRef class=\"ax-block ax-min-h-[200px]\" [value]=\"builderValue()\"\n [config]=\"standardConfig()\" [readonly]=\"readonly()\" (valueChange)=\"onBuilderValueChange($event)\" />\n</div>", styles: [".axm-questionnaire-questions-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-questions-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-questions-builder .__header .__header-left,.axm-questionnaire-questions-builder .__header .__header-right{display:flex;gap:.5rem}\n"] }]
|
|
3055
|
-
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "prePostConfig", required: false }] }], showHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHeader", required: false }] }], displaySettingsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "displaySettingsInput", required: false }] }], questionnaireEntityId: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireEntityId", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }], standardRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPStandardSectionItemsBuilderComponent), { isSignal: true }] }] } });
|
|
3071
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "prePostConfig", required: false }] }], showHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHeader", required: false }] }], displaySettingsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "displaySettingsInput", required: false }] }], questionnaireEntityId: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireEntityId", required: false }] }], questionnaireTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireTitle", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }], standardRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPStandardSectionItemsBuilderComponent), { isSignal: true }] }] } });
|
|
3056
3072
|
|
|
3057
3073
|
/** Component key for the questionnaire Questions page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */
|
|
3058
3074
|
const QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY = 'questionnaire-questions-page';
|
|
@@ -3176,7 +3192,8 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3176
3192
|
* Root/API `questions` often differs from the normalized object emitted by the builder (defaults, ordering, derived fields), which would otherwise keep `isDirty` true on load and after discard/save.
|
|
3177
3193
|
*/
|
|
3178
3194
|
this.questionsBaselinePendingReconcile = signal(false, ...(ngDevMode ? [{ debugName: "questionsBaselinePendingReconcile" }] : /* istanbul ignore next */ []));
|
|
3179
|
-
|
|
3195
|
+
/** Avoid naming `isDirty` — collides with {@link AXPContextStore.isDirty} on injected stores. */
|
|
3196
|
+
this.hasUnsavedChanges = signal(false, ...(ngDevMode ? [{ debugName: "hasUnsavedChanges" }] : /* istanbul ignore next */ []));
|
|
3180
3197
|
//#endregion
|
|
3181
3198
|
//#region ---- Computed State ----
|
|
3182
3199
|
/** Current context: prefer local updates so edits are preserved. */
|
|
@@ -3201,6 +3218,13 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3201
3218
|
const ctx = this.context();
|
|
3202
3219
|
return resolvePersistedEntityId(ctx);
|
|
3203
3220
|
}, ...(ngDevMode ? [{ debugName: "questionnaireEntityId" }] : /* istanbul ignore next */ []));
|
|
3221
|
+
/** Resolved questionnaire name for preview popup title. */
|
|
3222
|
+
this.questionnaireDisplayTitle = computed(() => {
|
|
3223
|
+
const title = this.context()['title'];
|
|
3224
|
+
const locale = this.translateService.getActiveLang?.() ?? 'en-US';
|
|
3225
|
+
const resolved = resolveMultiLanguageString(title, locale).trim();
|
|
3226
|
+
return resolved || undefined;
|
|
3227
|
+
}, ...(ngDevMode ? [{ debugName: "questionnaireDisplayTitle" }] : /* istanbul ignore next */ []));
|
|
3204
3228
|
let previousRootId = undefined;
|
|
3205
3229
|
effect(() => {
|
|
3206
3230
|
const ctx = this.rootContext();
|
|
@@ -3210,7 +3234,7 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3210
3234
|
this.localContext.set(null);
|
|
3211
3235
|
const rootQuestions = ctx?.['questions'];
|
|
3212
3236
|
this.baselineQuestions.set(this.cloneQuestions(rootQuestions));
|
|
3213
|
-
this.
|
|
3237
|
+
this.hasUnsavedChanges.set(false);
|
|
3214
3238
|
this.questionsBaselinePendingReconcile.set(true);
|
|
3215
3239
|
}
|
|
3216
3240
|
});
|
|
@@ -3260,7 +3284,7 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3260
3284
|
zone: 'footer',
|
|
3261
3285
|
priority: 'secondary',
|
|
3262
3286
|
color: 'default',
|
|
3263
|
-
visible: this.
|
|
3287
|
+
visible: this.hasUnsavedChanges(),
|
|
3264
3288
|
command: {
|
|
3265
3289
|
name: QUESTIONNAIRE_QUESTIONS_DISCARD_COMMAND,
|
|
3266
3290
|
options: {},
|
|
@@ -3272,7 +3296,7 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3272
3296
|
zone: 'footer',
|
|
3273
3297
|
priority: 'primary',
|
|
3274
3298
|
color: 'primary',
|
|
3275
|
-
visible: this.
|
|
3299
|
+
visible: this.hasUnsavedChanges(),
|
|
3276
3300
|
command: {
|
|
3277
3301
|
name: QUESTIONNAIRE_QUESTIONS_SAVE_COMMAND,
|
|
3278
3302
|
options: {},
|
|
@@ -3286,7 +3310,7 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3286
3310
|
if (command.name === QUESTIONNAIRE_QUESTIONS_DISCARD_COMMAND) {
|
|
3287
3311
|
this.ignoreNextValueChange.set(true);
|
|
3288
3312
|
this.localContext.set(null);
|
|
3289
|
-
this.
|
|
3313
|
+
this.hasUnsavedChanges.set(false);
|
|
3290
3314
|
this.questionsBaselinePendingReconcile.set(true);
|
|
3291
3315
|
this.recompute();
|
|
3292
3316
|
return;
|
|
@@ -3327,7 +3351,7 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3327
3351
|
const savedQuestions = questions ?? { sections: [] };
|
|
3328
3352
|
this.baselineQuestions.set(this.cloneQuestions(savedQuestions));
|
|
3329
3353
|
this.localContext.set(null);
|
|
3330
|
-
this.
|
|
3354
|
+
this.hasUnsavedChanges.set(false);
|
|
3331
3355
|
this.questionsBaselinePendingReconcile.set(true);
|
|
3332
3356
|
this.recompute();
|
|
3333
3357
|
this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {
|
|
@@ -3351,26 +3375,26 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3351
3375
|
const aligned = current ?? value;
|
|
3352
3376
|
this.baselineQuestions.set(this.cloneQuestions(aligned ?? undefined));
|
|
3353
3377
|
this.questionsBaselinePendingReconcile.set(false);
|
|
3354
|
-
this.
|
|
3378
|
+
this.hasUnsavedChanges.set(false);
|
|
3355
3379
|
}
|
|
3356
3380
|
return;
|
|
3357
3381
|
}
|
|
3358
3382
|
const base = this.localContext() ?? this.rootContext() ?? {};
|
|
3359
3383
|
if (this.questionsBaselinePendingReconcile() && this.localContext() == null) {
|
|
3360
3384
|
this.baselineQuestions.set(this.cloneQuestions(value));
|
|
3361
|
-
this.
|
|
3385
|
+
this.hasUnsavedChanges.set(false);
|
|
3362
3386
|
this.questionsBaselinePendingReconcile.set(false);
|
|
3363
3387
|
this.localContext.set({ ...base, questions: value });
|
|
3364
|
-
this.contextStore.update('questions', value);
|
|
3388
|
+
this.contextStore.update('questions', value, { origin: 'system' });
|
|
3365
3389
|
this.recompute();
|
|
3366
3390
|
return;
|
|
3367
3391
|
}
|
|
3368
3392
|
const nextContext = { ...base, questions: value };
|
|
3369
3393
|
this.localContext.set(nextContext);
|
|
3370
|
-
this.contextStore.update('questions', value);
|
|
3394
|
+
this.contextStore.update('questions', value, { origin: 'user' });
|
|
3371
3395
|
const baseline = this.baselineQuestions();
|
|
3372
3396
|
const dirty = !this.areQuestionsEqual(baseline, value);
|
|
3373
|
-
this.
|
|
3397
|
+
this.hasUnsavedChanges.set(dirty);
|
|
3374
3398
|
this.recompute();
|
|
3375
3399
|
}
|
|
3376
3400
|
//#endregion
|
|
@@ -3414,11 +3438,12 @@ class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent
|
|
|
3414
3438
|
[prePostConfig]="prePostConfig()"
|
|
3415
3439
|
[displaySettingsInput]="entityDisplaySettings()"
|
|
3416
3440
|
[questionnaireEntityId]="questionnaireEntityId()"
|
|
3441
|
+
[questionnaireTitle]="questionnaireDisplayTitle()"
|
|
3417
3442
|
[showHeader]="false"
|
|
3418
3443
|
(valueChange)="onQuestionsChange($event)"
|
|
3419
3444
|
>
|
|
3420
3445
|
</axm-questionnaire-questions-builder>
|
|
3421
|
-
`, isInline: true, dependencies: [{ kind: "component", type: AXMQuestionnaireQuestionsBuilderComponent, selector: "axm-questionnaire-questions-builder", inputs: ["value", "readonly", "prePostConfig", "showHeader", "displaySettingsInput", "questionnaireEntityId"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3446
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AXMQuestionnaireQuestionsBuilderComponent, selector: "axm-questionnaire-questions-builder", inputs: ["value", "readonly", "prePostConfig", "showHeader", "displaySettingsInput", "questionnaireEntityId", "questionnaireTitle"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3422
3447
|
}
|
|
3423
3448
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireQuestionsPageComponent, decorators: [{
|
|
3424
3449
|
type: Component,
|
|
@@ -3433,6 +3458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3433
3458
|
[prePostConfig]="prePostConfig()"
|
|
3434
3459
|
[displaySettingsInput]="entityDisplaySettings()"
|
|
3435
3460
|
[questionnaireEntityId]="questionnaireEntityId()"
|
|
3461
|
+
[questionnaireTitle]="questionnaireDisplayTitle()"
|
|
3436
3462
|
[showHeader]="false"
|
|
3437
3463
|
(valueChange)="onQuestionsChange($event)"
|
|
3438
3464
|
>
|
|
@@ -3985,10 +4011,6 @@ class AXMQuestionnaireOutcomesBuilderComponent {
|
|
|
3985
4011
|
this.externalBuilderValue = signal({ sections: [] }, ...(ngDevMode ? [{ debugName: "externalBuilderValue" }] : /* istanbul ignore next */ []));
|
|
3986
4012
|
/** Skips one `[value]` input sync per local commit echo from the page. */
|
|
3987
4013
|
this.externalSyncSkipCount = 0;
|
|
3988
|
-
//#endregion
|
|
3989
|
-
//#region ---- Computed ----
|
|
3990
|
-
/** Whether the underlying section-items builder has unsaved edits. */
|
|
3991
|
-
this.isDirty = computed(() => this.standardRef()?.isDirty() ?? false, ...(ngDevMode ? [{ debugName: "isDirty" }] : /* istanbul ignore next */ []));
|
|
3992
4014
|
this.standardConfig = computed(() => ({
|
|
3993
4015
|
showSectionTechnicalName: true,
|
|
3994
4016
|
minSectionCount: 1,
|
|
@@ -4020,6 +4042,12 @@ class AXMQuestionnaireOutcomesBuilderComponent {
|
|
|
4020
4042
|
});
|
|
4021
4043
|
}
|
|
4022
4044
|
//#endregion
|
|
4045
|
+
//#region ---- Computed ----
|
|
4046
|
+
/** Whether the underlying section-items builder has unsaved edits. */
|
|
4047
|
+
hasUnsavedChanges() {
|
|
4048
|
+
return this.standardRef()?.isDirty() ?? false;
|
|
4049
|
+
}
|
|
4050
|
+
//#endregion
|
|
4023
4051
|
//#region ---- Public API ----
|
|
4024
4052
|
/** Page header command: delegates to standard builder add-section dialog. */
|
|
4025
4053
|
async addSection() {
|
|
@@ -4492,8 +4520,8 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
4492
4520
|
const ctx = this.context();
|
|
4493
4521
|
return normalizeQuestionnaireOutcomesValue(ctx['outcomes']);
|
|
4494
4522
|
}, ...(ngDevMode ? [{ debugName: "outcomesValue" }] : /* istanbul ignore next */ []));
|
|
4495
|
-
/** Dirty state owned by
|
|
4496
|
-
this.
|
|
4523
|
+
/** Dirty state owned by the hosted builder (not named `isDirty` — collides with {@link AXPContextStore.isDirty}). */
|
|
4524
|
+
this.hasUnsavedChanges = computed(() => this.builderRef()?.hasUnsavedChanges() ?? false, ...(ngDevMode ? [{ debugName: "hasUnsavedChanges" }] : /* istanbul ignore next */ []));
|
|
4497
4525
|
let previousRootId = undefined;
|
|
4498
4526
|
effect(() => {
|
|
4499
4527
|
const ctx = this.rootContext();
|
|
@@ -4504,7 +4532,7 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
4504
4532
|
}
|
|
4505
4533
|
});
|
|
4506
4534
|
effect(() => {
|
|
4507
|
-
this.builderRef()?.
|
|
4535
|
+
this.builderRef()?.hasUnsavedChanges();
|
|
4508
4536
|
untracked(() => this.recompute());
|
|
4509
4537
|
});
|
|
4510
4538
|
}
|
|
@@ -4531,7 +4559,7 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
4531
4559
|
zone: 'footer',
|
|
4532
4560
|
priority: 'secondary',
|
|
4533
4561
|
color: 'default',
|
|
4534
|
-
visible: this.
|
|
4562
|
+
visible: this.hasUnsavedChanges(),
|
|
4535
4563
|
command: {
|
|
4536
4564
|
name: QUESTIONNAIRE_OUTCOMES_DISCARD_COMMAND,
|
|
4537
4565
|
options: {},
|
|
@@ -4543,7 +4571,7 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
4543
4571
|
zone: 'footer',
|
|
4544
4572
|
priority: 'primary',
|
|
4545
4573
|
color: 'primary',
|
|
4546
|
-
visible: this.
|
|
4574
|
+
visible: this.hasUnsavedChanges(),
|
|
4547
4575
|
command: {
|
|
4548
4576
|
name: QUESTIONNAIRE_OUTCOMES_SAVE_COMMAND,
|
|
4549
4577
|
options: {},
|
|
@@ -4617,7 +4645,8 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
4617
4645
|
}
|
|
4618
4646
|
const base = this.localContext() ?? this.rootContext() ?? {};
|
|
4619
4647
|
this.localContext.set({ ...base, outcomes: value });
|
|
4620
|
-
|
|
4648
|
+
// Builder owns dirty state; keep shared context in sync without marking the entity form dirty.
|
|
4649
|
+
this.contextStore.update('outcomes', value, { origin: 'system' });
|
|
4621
4650
|
this.recompute();
|
|
4622
4651
|
}
|
|
4623
4652
|
//#endregion
|
|
@@ -4716,6 +4745,55 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
4716
4745
|
//#region ---- Questionnaire builder feature exports ----
|
|
4717
4746
|
//#endregion
|
|
4718
4747
|
|
|
4748
|
+
//#region ---- Imports ----
|
|
4749
|
+
//#endregion
|
|
4750
|
+
//#region ---- Normalization ----
|
|
4751
|
+
/**
|
|
4752
|
+
* Normalize entity attachments (string[] or file list items) to viewer attachment list.
|
|
4753
|
+
* Prefers `source.kind === 'fileId'` over row `id` (row id is often a client UUID, not storage id).
|
|
4754
|
+
*/
|
|
4755
|
+
function normalizeQuestionnaireViewerAttachments(raw) {
|
|
4756
|
+
if (raw == null)
|
|
4757
|
+
return [];
|
|
4758
|
+
if (!Array.isArray(raw))
|
|
4759
|
+
return [];
|
|
4760
|
+
return raw
|
|
4761
|
+
.map((item) => {
|
|
4762
|
+
if (typeof item === 'string') {
|
|
4763
|
+
return { id: item, name: undefined };
|
|
4764
|
+
}
|
|
4765
|
+
if (!item || typeof item !== 'object') {
|
|
4766
|
+
return null;
|
|
4767
|
+
}
|
|
4768
|
+
const row = item;
|
|
4769
|
+
if (row.status === 'deleted') {
|
|
4770
|
+
return null;
|
|
4771
|
+
}
|
|
4772
|
+
const src = row.source;
|
|
4773
|
+
if (src?.kind === 'fileId' && typeof src.value === 'string' && src.value.trim()) {
|
|
4774
|
+
return { id: src.value, name: typeof row.name === 'string' ? row.name : undefined };
|
|
4775
|
+
}
|
|
4776
|
+
if (typeof row.id === 'string' && row.id.trim()) {
|
|
4777
|
+
return { id: row.id, name: typeof row.name === 'string' ? row.name : undefined };
|
|
4778
|
+
}
|
|
4779
|
+
return null;
|
|
4780
|
+
})
|
|
4781
|
+
.filter((a) => a != null);
|
|
4782
|
+
}
|
|
4783
|
+
/**
|
|
4784
|
+
* Map viewer attachments to `AXPFileListItem` for `axp-file-list` (links look).
|
|
4785
|
+
*/
|
|
4786
|
+
function questionnaireViewerAttachmentsToFileListItems(attachments) {
|
|
4787
|
+
return attachments.map((att) => ({
|
|
4788
|
+
id: att.id,
|
|
4789
|
+
name: att.name ?? att.id,
|
|
4790
|
+
status: 'attached',
|
|
4791
|
+
source: { kind: 'fileId', value: att.id },
|
|
4792
|
+
readOnly: true,
|
|
4793
|
+
}));
|
|
4794
|
+
}
|
|
4795
|
+
//#endregion
|
|
4796
|
+
|
|
4719
4797
|
//#region ---- Imports ----
|
|
4720
4798
|
//#endregion
|
|
4721
4799
|
/** Guards concurrent `refreshVisibility` runs; incremented on each refresh. */
|
|
@@ -4749,33 +4827,6 @@ function normalizeValidationStrategy(value) {
|
|
|
4749
4827
|
return 'step';
|
|
4750
4828
|
}
|
|
4751
4829
|
//#region ---- Helpers ----
|
|
4752
|
-
/**
|
|
4753
|
-
* Normalize question bank attachments (string[] or AXPFileListItem[]) to viewer attachment list.
|
|
4754
|
-
*/
|
|
4755
|
-
function normalizeAttachments(raw) {
|
|
4756
|
-
if (raw == null)
|
|
4757
|
-
return [];
|
|
4758
|
-
if (!Array.isArray(raw))
|
|
4759
|
-
return [];
|
|
4760
|
-
return raw
|
|
4761
|
-
.map((item) => {
|
|
4762
|
-
if (typeof item === 'string')
|
|
4763
|
-
return { id: item, name: undefined };
|
|
4764
|
-
if (item && typeof item === 'object' && 'id' in item && typeof item.id === 'string') {
|
|
4765
|
-
const obj = item;
|
|
4766
|
-
return { id: obj.id, name: typeof obj.name === 'string' ? obj.name : undefined };
|
|
4767
|
-
}
|
|
4768
|
-
if (item && typeof item === 'object' && 'source' in item) {
|
|
4769
|
-
const src = item.source;
|
|
4770
|
-
if (src?.kind === 'fileId' && typeof src.value === 'string') {
|
|
4771
|
-
const name = item.name;
|
|
4772
|
-
return { id: src.value, name: typeof name === 'string' ? name : undefined };
|
|
4773
|
-
}
|
|
4774
|
-
}
|
|
4775
|
-
return null;
|
|
4776
|
-
})
|
|
4777
|
-
.filter((a) => a != null);
|
|
4778
|
-
}
|
|
4779
4830
|
function resolvedCommentPolicyForBuilderItem(item, questionDetails) {
|
|
4780
4831
|
const bank = normalizeQuestionCommentConfig(questionDetails?.comment);
|
|
4781
4832
|
const override = item.comment;
|
|
@@ -4858,6 +4909,10 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
4858
4909
|
const data = store.questionnaireData();
|
|
4859
4910
|
return data?.sections || [];
|
|
4860
4911
|
}),
|
|
4912
|
+
questionnaireAttachments: computed(() => {
|
|
4913
|
+
const data = store.questionnaireData();
|
|
4914
|
+
return data?.attachments ?? [];
|
|
4915
|
+
}),
|
|
4861
4916
|
/** Section indices that have at least one visible question (for side-menu tabs, etc.). */
|
|
4862
4917
|
sectionIndicesWithVisibleContent: computed(() => {
|
|
4863
4918
|
const data = store.questionnaireData();
|
|
@@ -5341,7 +5396,7 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
5341
5396
|
},
|
|
5342
5397
|
//#endregion
|
|
5343
5398
|
//#region ---- Data Loading ----
|
|
5344
|
-
async loadQuestionnaire(id, initialAnswers, config) {
|
|
5399
|
+
async loadQuestionnaire(id, initialAnswers, config, structureDisplaySettings) {
|
|
5345
5400
|
patchState(store, { isLoading: true, error: null, config: config || null });
|
|
5346
5401
|
try {
|
|
5347
5402
|
const questionnaire = await entityService
|
|
@@ -5352,6 +5407,7 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
5352
5407
|
throw new Error('Questionnaire not found');
|
|
5353
5408
|
}
|
|
5354
5409
|
const structure = questionnaire.questions || { sections: [] };
|
|
5410
|
+
const displaySettings = structureDisplaySettings ?? toDisplaySettings(questionnaire) ?? undefined;
|
|
5355
5411
|
const sectionsWithQuestions = await Promise.all(structure.sections.map(async (section, sectionIndex) => {
|
|
5356
5412
|
const sectionName = persistedSectionName(section, sectionIndex);
|
|
5357
5413
|
const questions = await Promise.all(section.items.map(async (item, itemIndex) => {
|
|
@@ -5395,7 +5451,7 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
5395
5451
|
},
|
|
5396
5452
|
};
|
|
5397
5453
|
}
|
|
5398
|
-
const attachments =
|
|
5454
|
+
const attachments = normalizeQuestionnaireViewerAttachments(questionDetails?.['attachments']);
|
|
5399
5455
|
return {
|
|
5400
5456
|
name: persistedItemName(item, itemIndex),
|
|
5401
5457
|
questionBankItemId: item.questionBankItemId,
|
|
@@ -5434,12 +5490,18 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
5434
5490
|
questions: questions.sort((a, b) => a.order - b.order),
|
|
5435
5491
|
};
|
|
5436
5492
|
}));
|
|
5493
|
+
const questionnaireAttachments = normalizeQuestionnaireViewerAttachments(questionnaire.attachments);
|
|
5437
5494
|
patchState(store, {
|
|
5495
|
+
structure: {
|
|
5496
|
+
sections: structure.sections ?? [],
|
|
5497
|
+
displaySettings,
|
|
5498
|
+
},
|
|
5438
5499
|
questionnaireData: {
|
|
5439
5500
|
id: questionnaire.id,
|
|
5440
5501
|
title: questionnaire.title,
|
|
5441
5502
|
description: questionnaire.description,
|
|
5442
5503
|
type: questionnaire.type,
|
|
5504
|
+
attachments: questionnaireAttachments.length > 0 ? questionnaireAttachments : undefined,
|
|
5443
5505
|
sections: sectionsWithQuestions.sort((a, b) => a.order - b.order),
|
|
5444
5506
|
},
|
|
5445
5507
|
isLoading: false,
|
|
@@ -5541,7 +5603,7 @@ const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({
|
|
|
5541
5603
|
difficulty: undefined,
|
|
5542
5604
|
interface: widgetInterface,
|
|
5543
5605
|
};
|
|
5544
|
-
const attachmentsLoadStructure =
|
|
5606
|
+
const attachmentsLoadStructure = normalizeQuestionnaireViewerAttachments(questionDetails?.['attachments']);
|
|
5545
5607
|
return {
|
|
5546
5608
|
name: persistedItemName(item, itemIndex),
|
|
5547
5609
|
questionBankItemId: item.questionBankItemId,
|
|
@@ -6366,7 +6428,6 @@ class AXMQuestionnaireViewerQuestionComponent {
|
|
|
6366
6428
|
/** Exposed for template `@if (containsHtmlMarkup(...))`. */
|
|
6367
6429
|
this.containsHtmlMarkup = containsHtmlMarkup;
|
|
6368
6430
|
this.vm = inject(AXMQuestionnaireViewerViewModel, { optional: true });
|
|
6369
|
-
this.fileStorageService = inject(AXPFileStorageService, { optional: true });
|
|
6370
6431
|
//#endregion
|
|
6371
6432
|
//#region ---- Inputs ----
|
|
6372
6433
|
this.question = input.required(...(ngDevMode ? [{ debugName: "question" }] : /* istanbul ignore next */ []));
|
|
@@ -6450,6 +6511,7 @@ class AXMQuestionnaireViewerQuestionComponent {
|
|
|
6450
6511
|
const q = this.question();
|
|
6451
6512
|
return q?.attachments ?? [];
|
|
6452
6513
|
}, ...(ngDevMode ? [{ debugName: "questionAttachments" }] : /* istanbul ignore next */ []));
|
|
6514
|
+
this.questionAttachmentFiles = computed(() => questionnaireViewerAttachmentsToFileListItems(this.questionAttachments()), ...(ngDevMode ? [{ debugName: "questionAttachmentFiles" }] : /* istanbul ignore next */ []));
|
|
6453
6515
|
/**
|
|
6454
6516
|
* Storage path for respondent comment text (`answers.comments.<questionItemName>`).
|
|
6455
6517
|
*/
|
|
@@ -6485,54 +6547,6 @@ class AXMQuestionnaireViewerQuestionComponent {
|
|
|
6485
6547
|
const next = e.value ?? '';
|
|
6486
6548
|
cs.update(path, next);
|
|
6487
6549
|
}
|
|
6488
|
-
/**
|
|
6489
|
-
* Open/download attachment using the same approach as axp-file-list (file-uploader):
|
|
6490
|
-
* - If storage returns a URL: use an anchor with href + target _blank + programmatic click.
|
|
6491
|
-
* - If storage returns binary only: create object URL from blob and trigger download.
|
|
6492
|
-
* Avoids window.open() which can open an empty tab when url is undefined.
|
|
6493
|
-
*/
|
|
6494
|
-
async openAttachment(event, att) {
|
|
6495
|
-
event.preventDefault();
|
|
6496
|
-
if (!this.fileStorageService || !att?.id)
|
|
6497
|
-
return;
|
|
6498
|
-
try {
|
|
6499
|
-
const info = await this.fileStorageService.getInfo(att.id);
|
|
6500
|
-
const fileName = att.name ?? info.name ?? 'download';
|
|
6501
|
-
if (info && info.binary instanceof Blob) {
|
|
6502
|
-
const blob = info.binary;
|
|
6503
|
-
this.triggerDownload(blob, fileName);
|
|
6504
|
-
return;
|
|
6505
|
-
}
|
|
6506
|
-
if (info && typeof info.url === 'string' && info.url) {
|
|
6507
|
-
const url = info.url;
|
|
6508
|
-
const link = document.createElement('a');
|
|
6509
|
-
link.href = url;
|
|
6510
|
-
link.download = fileName;
|
|
6511
|
-
link.target = '_blank';
|
|
6512
|
-
link.rel = 'noopener noreferrer';
|
|
6513
|
-
document.body.appendChild(link);
|
|
6514
|
-
link.click();
|
|
6515
|
-
document.body.removeChild(link);
|
|
6516
|
-
return;
|
|
6517
|
-
}
|
|
6518
|
-
}
|
|
6519
|
-
catch (err) {
|
|
6520
|
-
console.error('[QuestionnaireViewerQuestion] Error opening attachment:', att.id, err);
|
|
6521
|
-
}
|
|
6522
|
-
}
|
|
6523
|
-
/**
|
|
6524
|
-
* Trigger file download from blob (same as file-list triggerDownload).
|
|
6525
|
-
*/
|
|
6526
|
-
triggerDownload(blob, fileName) {
|
|
6527
|
-
const url = URL.createObjectURL(blob);
|
|
6528
|
-
const link = document.createElement('a');
|
|
6529
|
-
link.href = url;
|
|
6530
|
-
link.download = fileName;
|
|
6531
|
-
document.body.appendChild(link);
|
|
6532
|
-
link.click();
|
|
6533
|
-
document.body.removeChild(link);
|
|
6534
|
-
URL.revokeObjectURL(url);
|
|
6535
|
-
}
|
|
6536
6550
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerQuestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6537
6551
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerQuestionComponent, isStandalone: true, selector: "axm-questionnaire-viewer-question", inputs: { question: { classPropertyName: "question", publicName: "question", isSignal: true, isRequired: true, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: true, isRequired: false, transformFunction: null }, sectionOrder: { classPropertyName: "sectionOrder", publicName: "sectionOrder", isSignal: true, isRequired: true, transformFunction: null }, questionIndex: { classPropertyName: "questionIndex", publicName: "questionIndex", isSignal: true, isRequired: true, transformFunction: null }, showQuestionNumbers: { classPropertyName: "showQuestionNumbers", publicName: "showQuestionNumbers", isSignal: true, isRequired: false, transformFunction: null }, showQuestionCounter: { classPropertyName: "showQuestionCounter", publicName: "showQuestionCounter", isSignal: true, isRequired: false, transformFunction: null }, currentPosition: { classPropertyName: "currentPosition", publicName: "currentPosition", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6538
6552
|
<div class="__question-item" [class.__answered]="isAnswered()" [class.__view-mode]="effectiveMode() === 'view'">
|
|
@@ -6640,28 +6654,16 @@ class AXMQuestionnaireViewerQuestionComponent {
|
|
|
6640
6654
|
}
|
|
6641
6655
|
|
|
6642
6656
|
@if (questionAttachments().length > 0) {
|
|
6643
|
-
<
|
|
6644
|
-
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
>
|
|
6651
|
-
<ul class="__attachments-list">
|
|
6652
|
-
@for (att of questionAttachments(); track att.id) {
|
|
6653
|
-
<li>
|
|
6654
|
-
<a class="__attachment-link" href="#" (click)="openAttachment($event, att)" role="button">
|
|
6655
|
-
<i class="fa-light fa-paperclip"></i>
|
|
6656
|
-
{{ att.name || att.id }}
|
|
6657
|
-
</a>
|
|
6658
|
-
</li>
|
|
6659
|
-
}
|
|
6660
|
-
</ul>
|
|
6661
|
-
</div>
|
|
6657
|
+
<axp-file-list
|
|
6658
|
+
[files]="questionAttachmentFiles()"
|
|
6659
|
+
look="links"
|
|
6660
|
+
linksLayout="inline"
|
|
6661
|
+
[readonly]="true"
|
|
6662
|
+
titleKey="@assessment-management:questionnaires.components.questionnaire-viewer.attachments.title"
|
|
6663
|
+
/>
|
|
6662
6664
|
}
|
|
6663
6665
|
</div>
|
|
6664
|
-
`, isInline: true, styles: ["axm-questionnaire-viewer-question{display:block}axm-questionnaire-viewer-question .__question-item{display:flex;flex-direction:column;gap:.25rem;padding:1rem;text-align:start;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}axm-questionnaire-viewer-question .__question-item.__answered{border-radius:.5rem;background:rgba(var(--ax-sys-color-primary-surface),.14)}axm-questionnaire-viewer-question .__question-item.__answered:not(.__view-mode){border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1))}axm-questionnaire-viewer-question .__question-item .__question-header{display:flex;width:100%;min-width:0px;align-items:flex-start;justify-content:space-between;gap:1rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right{display:flex;min-width:0px;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block{min-width:0px;flex:1 1 0%;text-align:start}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title{margin:0;min-width:0px;flex:1 1 0%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block h3.__question-title{font-weight:500}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich{width:100%;max-width:100%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich li{margin-block:.125rem;padding-inline-start:.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul ul{list-style-type:circle;margin-block:.25rem 0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title.__question-title--rich{font-weight:400}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-success-lighter-surface));color:rgb(var(--ax-sys-color-on-success-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-warning-lighter-surface));color:rgb(var(--ax-sys-color-on-warning-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-note{font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-note p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-note p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-note ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note li{margin-block:.125rem}axm-questionnaire-viewer-question .__question-item .__question-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-widget{text-align:start}axm-questionnaire-viewer-question .__question-item .__question-widget>*{margin-bottom:0}axm-questionnaire-viewer-question .__question-item .__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;color:rgb(var(--ax-sys-color-on-surface-variant));--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment{display:flex;width:100%;flex-direction:column;gap:.25rem}axm-questionnaire-viewer-question .__question-item .__question-comment ax-text-area{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment--readonly{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment-text{margin:0;width:100%;font-size:.875rem;line-height:1.25rem;white-space:pre-wrap;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment-label{font-size:.875rem;line-height:1.25rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-comment-required{color:rgb(var(--ax-sys-color-danger-600))}axm-questionnaire-viewer-question .__question-item .__attachments{border-top-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding-top:.75rem}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-label{margin-inline-end:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-list{margin:0;margin-top:.25rem;list-style-type:none;padding-left:0}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-list li{margin-top:.25rem}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-list li .__attachment-link{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;line-height:1.25rem;text-decoration-line:underline;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;color:rgb(var(--ax-sys-color-primary-dark-surface))}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-list li .__attachment-link:hover{opacity:.9}axm-questionnaire-viewer-question .__question-item .__attachments .__attachments-list li .__attachment-link i{flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXAlertModule }, { kind: "component", type: i2$1.AXAlertComponent, selector: "ax-alert", inputs: ["color", "timeOut"], outputs: ["colorChange", "onClosed", "timeOutChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i4$1.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXSafePipe, name: "safe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6666
|
+
`, isInline: true, styles: ["axm-questionnaire-viewer-question{display:block}axm-questionnaire-viewer-question .__question-item{display:flex;flex-direction:column;gap:.25rem;padding:1rem;text-align:start;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-questionnaire-viewer-question .__question-item:hover{background:rgba(var(--ax-sys-color-primary-surface),.08);border-color:rgba(var(--ax-sys-color-primary-surface),.14)}axm-questionnaire-viewer-question .__question-item.__answered{background:rgba(var(--ax-sys-color-primary-surface),.14);border-color:rgba(var(--ax-sys-color-primary-surface),.5)}axm-questionnaire-viewer-question .__question-item .__question-header{display:flex;width:100%;min-width:0px;align-items:flex-start;justify-content:space-between;gap:1rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right{display:flex;min-width:0px;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block{min-width:0px;flex:1 1 0%;text-align:start}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title{margin:0;min-width:0px;flex:1 1 0%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block h3.__question-title{font-weight:500}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich{width:100%;max-width:100%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich li{margin-block:.125rem;padding-inline-start:.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul ul{list-style-type:circle;margin-block:.25rem 0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title.__question-title--rich{font-weight:400}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-success-lighter-surface));color:rgb(var(--ax-sys-color-on-success-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-warning-lighter-surface));color:rgb(var(--ax-sys-color-on-warning-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-note{font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-note p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-note p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-note ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note li{margin-block:.125rem}axm-questionnaire-viewer-question .__question-item .__question-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-widget{text-align:start}axm-questionnaire-viewer-question .__question-item .__question-widget>*{margin-bottom:0}axm-questionnaire-viewer-question .__question-item .__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;color:rgb(var(--ax-sys-color-on-surface-variant));--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment{display:flex;width:100%;flex-direction:column;gap:.25rem}axm-questionnaire-viewer-question .__question-item .__question-comment ax-text-area{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment--readonly{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment-text{margin:0;width:100%;font-size:.875rem;line-height:1.25rem;white-space:pre-wrap;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment-label{font-size:.875rem;line-height:1.25rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-comment-required{color:rgb(var(--ax-sys-color-danger-600))}axm-questionnaire-viewer-question .__question-item axp-file-list.--look-links.--links-inline{display:block;padding-top:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXAlertModule }, { kind: "component", type: i2$1.AXAlertComponent, selector: "ax-alert", inputs: ["color", "timeOut"], outputs: ["colorChange", "onClosed", "timeOutChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i4$1.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "titleKey", "showLabel", "linksLayout", "files", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXSafePipe, name: "safe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6665
6667
|
}
|
|
6666
6668
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerQuestionComponent, decorators: [{
|
|
6667
6669
|
type: Component,
|
|
@@ -6771,25 +6773,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6771
6773
|
}
|
|
6772
6774
|
|
|
6773
6775
|
@if (questionAttachments().length > 0) {
|
|
6774
|
-
<
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
>
|
|
6782
|
-
<ul class="__attachments-list">
|
|
6783
|
-
@for (att of questionAttachments(); track att.id) {
|
|
6784
|
-
<li>
|
|
6785
|
-
<a class="__attachment-link" href="#" (click)="openAttachment($event, att)" role="button">
|
|
6786
|
-
<i class="fa-light fa-paperclip"></i>
|
|
6787
|
-
{{ att.name || att.id }}
|
|
6788
|
-
</a>
|
|
6789
|
-
</li>
|
|
6790
|
-
}
|
|
6791
|
-
</ul>
|
|
6792
|
-
</div>
|
|
6776
|
+
<axp-file-list
|
|
6777
|
+
[files]="questionAttachmentFiles()"
|
|
6778
|
+
look="links"
|
|
6779
|
+
linksLayout="inline"
|
|
6780
|
+
[readonly]="true"
|
|
6781
|
+
titleKey="@assessment-management:questionnaires.components.questionnaire-viewer.attachments.title"
|
|
6782
|
+
/>
|
|
6793
6783
|
}
|
|
6794
6784
|
</div>
|
|
6795
6785
|
`, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
@@ -6802,7 +6792,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6802
6792
|
AXTextAreaModule,
|
|
6803
6793
|
AXFormModule,
|
|
6804
6794
|
FormsModule,
|
|
6805
|
-
|
|
6795
|
+
AXPFileListComponent,
|
|
6796
|
+
], encapsulation: ViewEncapsulation.None, styles: ["axm-questionnaire-viewer-question{display:block}axm-questionnaire-viewer-question .__question-item{display:flex;flex-direction:column;gap:.25rem;padding:1rem;text-align:start;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}axm-questionnaire-viewer-question .__question-item:hover{background:rgba(var(--ax-sys-color-primary-surface),.08);border-color:rgba(var(--ax-sys-color-primary-surface),.14)}axm-questionnaire-viewer-question .__question-item.__answered{background:rgba(var(--ax-sys-color-primary-surface),.14);border-color:rgba(var(--ax-sys-color-primary-surface),.5)}axm-questionnaire-viewer-question .__question-item .__question-header{display:flex;width:100%;min-width:0px;align-items:flex-start;justify-content:space-between;gap:1rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-left .__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right{display:flex;min-width:0px;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block{min-width:0px;flex:1 1 0%;text-align:start}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title{margin:0;min-width:0px;flex:1 1 0%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block h3.__question-title{font-weight:500}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich{width:100%;max-width:100%;text-align:start;font-size:1rem;line-height:1.5rem;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich li{margin-block:.125rem;padding-inline-start:.25rem}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title--rich ul ul{list-style-type:circle;margin-block:.25rem 0}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__question-title-block .__question-title.__question-title--rich{font-weight:400}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-success-lighter-surface));color:rgb(var(--ax-sys-color-on-success-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-header .__question-header-right .__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;background-color:rgb(var(--ax-sys-color-warning-lighter-surface));color:rgb(var(--ax-sys-color-on-warning-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-note{font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-note p{margin:0}axm-questionnaire-viewer-question .__question-item .__question-note p:first-child{margin-top:0}axm-questionnaire-viewer-question .__question-item .__question-note ul{list-style-type:disc;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note ol{list-style-type:decimal;list-style-position:outside;margin-block:.375rem 0;padding-inline-start:1.25rem}axm-questionnaire-viewer-question .__question-item .__question-note li{margin-block:.125rem}axm-questionnaire-viewer-question .__question-item .__question-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-widget{text-align:start}axm-questionnaire-viewer-question .__question-item .__question-widget>*{margin-bottom:0}axm-questionnaire-viewer-question .__question-item .__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;color:rgb(var(--ax-sys-color-on-surface-variant));--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment{display:flex;width:100%;flex-direction:column;gap:.25rem}axm-questionnaire-viewer-question .__question-item .__question-comment ax-text-area{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment--readonly{margin-top:.5rem}axm-questionnaire-viewer-question .__question-item .__question-comment-text{margin:0;width:100%;font-size:.875rem;line-height:1.25rem;white-space:pre-wrap;color:rgb(var(--ax-sys-color-on-surface))}axm-questionnaire-viewer-question .__question-item .__question-comment-label{font-size:.875rem;line-height:1.25rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-question .__question-item .__question-comment-required{color:rgb(var(--ax-sys-color-danger-600))}axm-questionnaire-viewer-question .__question-item axp-file-list.--look-links.--links-inline{display:block;padding-top:.75rem}\n"] }]
|
|
6806
6797
|
}], propDecorators: { question: [{ type: i0.Input, args: [{ isSignal: true, alias: "question", required: true }] }], contextData: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextData", required: false }] }], sectionOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionOrder", required: true }] }], questionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionIndex", required: true }] }], showQuestionNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "showQuestionNumbers", required: false }] }], showQuestionCounter: [{ type: i0.Input, args: [{ isSignal: true, alias: "showQuestionCounter", required: false }] }], currentPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPosition", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] } });
|
|
6807
6798
|
|
|
6808
6799
|
//#region ---- Imports ----
|
|
@@ -6898,35 +6889,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6898
6889
|
* Displays all sections and questions on a single page
|
|
6899
6890
|
*/
|
|
6900
6891
|
class AXMQuestionnaireViewerSinglePageViewComponent {
|
|
6901
|
-
//#endregion
|
|
6902
|
-
//#region ---- Sticky parent initialization ----
|
|
6903
6892
|
constructor() {
|
|
6904
6893
|
//#region ---- Services & Dependencies ----
|
|
6905
6894
|
this.vm = inject(AXMQuestionnaireViewerViewModel);
|
|
6906
|
-
this.host = inject((ElementRef));
|
|
6907
|
-
this.stickyParent = signal(null, ...(ngDevMode ? [{ debugName: "stickyParent" }] : /* istanbul ignore next */ []));
|
|
6908
|
-
afterNextRender(() => {
|
|
6909
|
-
this.stickyParent.set(this.findScrollParent(this.host.nativeElement));
|
|
6910
|
-
});
|
|
6911
|
-
}
|
|
6912
|
-
findScrollParent(from) {
|
|
6913
|
-
let node = from?.parentElement ?? null;
|
|
6914
|
-
while (node) {
|
|
6915
|
-
const { overflowY } = getComputedStyle(node);
|
|
6916
|
-
if (overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay') {
|
|
6917
|
-
return node;
|
|
6918
|
-
}
|
|
6919
|
-
node = node.parentElement;
|
|
6920
|
-
}
|
|
6921
|
-
return null;
|
|
6922
6895
|
}
|
|
6923
6896
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerSinglePageViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6924
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerSinglePageViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-single-page-view", ngImport: i0, template: "@for (section of vm.sections(); track section.name) {\n
|
|
6897
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerSinglePageViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-single-page-view", ngImport: i0, template: "<div #viewerScroll class=\"__viewer-scroll\">\n @for (section of vm.sections(); track section.name) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__single-page-section\">\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"viewerScroll\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'md'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["axm-questionnaire-viewer-single-page-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-single-page-view .__single-page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem}axm-questionnaire-viewer-single-page-view .__questions-list{display:flex;flex-direction:column;gap:.5rem;padding-left:1rem;padding-right:1rem;padding-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6925
6898
|
}
|
|
6926
6899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerSinglePageViewComponent, decorators: [{
|
|
6927
6900
|
type: Component,
|
|
6928
|
-
args: [{ selector: 'axm-questionnaire-viewer-single-page-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPStickyDirective, AXMQuestionnaireViewerQuestionComponent, AXMQuestionnaireViewerSectionHeaderComponent], template: "@for (section of vm.sections(); track section.name) {\n
|
|
6929
|
-
}]
|
|
6901
|
+
args: [{ selector: 'axm-questionnaire-viewer-single-page-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPStickyDirective, AXMQuestionnaireViewerQuestionComponent, AXMQuestionnaireViewerSectionHeaderComponent], template: "<div #viewerScroll class=\"__viewer-scroll\">\n @for (section of vm.sections(); track section.name) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__single-page-section\">\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"viewerScroll\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'md'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["axm-questionnaire-viewer-single-page-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-single-page-view .__single-page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem}axm-questionnaire-viewer-single-page-view .__questions-list{display:flex;flex-direction:column;gap:.5rem;padding-left:1rem;padding-right:1rem;padding-bottom:1rem}\n"] }]
|
|
6902
|
+
}] });
|
|
6930
6903
|
|
|
6931
6904
|
//#region ---- Imports ----
|
|
6932
6905
|
//#endregion
|
|
@@ -6936,34 +6909,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6936
6909
|
* Displays one section (group) per page
|
|
6937
6910
|
*/
|
|
6938
6911
|
class AXMQuestionnaireViewerPagePerGroupViewComponent {
|
|
6939
|
-
//#endregion
|
|
6940
6912
|
constructor() {
|
|
6941
6913
|
//#region ---- Services & Dependencies ----
|
|
6942
6914
|
this.vm = inject(AXMQuestionnaireViewerViewModel);
|
|
6943
|
-
this.host = inject((ElementRef));
|
|
6944
|
-
this.stickyParent = signal(null, ...(ngDevMode ? [{ debugName: "stickyParent" }] : /* istanbul ignore next */ []));
|
|
6945
|
-
afterNextRender(() => {
|
|
6946
|
-
this.stickyParent.set(this.findScrollParent(this.host.nativeElement));
|
|
6947
|
-
});
|
|
6948
|
-
}
|
|
6949
|
-
findScrollParent(from) {
|
|
6950
|
-
let node = from?.parentElement ?? null;
|
|
6951
|
-
while (node) {
|
|
6952
|
-
const { overflowY } = getComputedStyle(node);
|
|
6953
|
-
if (overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay') {
|
|
6954
|
-
return node;
|
|
6955
|
-
}
|
|
6956
|
-
node = node.parentElement;
|
|
6957
|
-
}
|
|
6958
|
-
return null;
|
|
6959
6915
|
}
|
|
6960
6916
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerPagePerGroupViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerPagePerGroupViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-page-per-group-view", ngImport: i0, template: "@if (vm.currentSection(); as section) {\n
|
|
6917
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerPagePerGroupViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-page-per-group-view", ngImport: i0, template: "<div #viewerScroll class=\"__viewer-scroll\">\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__page-group-section\">\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"viewerScroll\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["axm-questionnaire-viewer-page-per-group-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-page-per-group-view .__page-group-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding-left:1rem;padding-right:1rem;padding-bottom:1rem}axm-questionnaire-viewer-page-per-group-view .__navigation{display:flex;align-items:center;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}\n"], dependencies: [{ kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6962
6918
|
}
|
|
6963
6919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerPagePerGroupViewComponent, decorators: [{
|
|
6964
6920
|
type: Component,
|
|
6965
|
-
args: [{ selector: 'axm-questionnaire-viewer-page-per-group-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPStickyDirective, AXMQuestionnaireViewerQuestionComponent, AXMQuestionnaireViewerSectionHeaderComponent], template: "@if (vm.currentSection(); as section) {\n
|
|
6966
|
-
}]
|
|
6921
|
+
args: [{ selector: 'axm-questionnaire-viewer-page-per-group-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPStickyDirective, AXMQuestionnaireViewerQuestionComponent, AXMQuestionnaireViewerSectionHeaderComponent], template: "<div #viewerScroll class=\"__viewer-scroll\">\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__page-group-section\">\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"viewerScroll\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["axm-questionnaire-viewer-page-per-group-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-page-per-group-view .__page-group-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding-left:1rem;padding-right:1rem;padding-bottom:1rem}axm-questionnaire-viewer-page-per-group-view .__navigation{display:flex;align-items:center;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}\n"] }]
|
|
6922
|
+
}] });
|
|
6967
6923
|
|
|
6968
6924
|
//#region ---- Imports ----
|
|
6969
6925
|
//#endregion
|
|
@@ -6985,6 +6941,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6985
6941
|
args: [{ selector: 'axm-questionnaire-viewer-page-per-question-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXMQuestionnaireViewerQuestionComponent, AXMQuestionnaireViewerSectionHeaderComponent], template: "@if (vm.currentQuestion(); as question) {\n <div class=\"__page-question\">\n @if (vm.currentSection(); as currentSection) {\n <axm-questionnaire-viewer-section-header\n [title]=\"currentSection.title\"\n [description]=\"currentSection.description\"\n [titleSize]=\"'md'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n }\n\n <axm-questionnaire-viewer-question\n class=\"ax-mt-8\"\n [question]=\"question\"\n [sectionOrder]=\"vm.currentSectionIndex() + 1\"\n [questionIndex]=\"vm.currentQuestionIndex() + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"vm.showQuestionCounter()\"\n [currentPosition]=\"vm.currentQuestionPosition()\"\n >\n </axm-questionnaire-viewer-question>\n </div>\n}\n", styles: ["axm-questionnaire-viewer-page-per-question-view{display:flex;flex-direction:column;gap:1rem;padding:1rem;flex-shrink:0;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}\n"] }]
|
|
6986
6942
|
}] });
|
|
6987
6943
|
|
|
6944
|
+
//#endregion
|
|
6945
|
+
//#region ---- Scroll parent resolution ----
|
|
6946
|
+
/**
|
|
6947
|
+
* Resolves the scroll container for questionnaire viewer sticky section headers so
|
|
6948
|
+
* `axpSticky` listens to the same element as `position: sticky`.
|
|
6949
|
+
*/
|
|
6950
|
+
function resolveQuestionnaireViewerStickyScrollParent(host, options = {}) {
|
|
6951
|
+
const stickySelector = options.stickySelector ?? '.__section-title-sticky, .__mobile-header-row';
|
|
6952
|
+
const preferred = options.preferredSelector
|
|
6953
|
+
? host.querySelector(options.preferredSelector)
|
|
6954
|
+
: null;
|
|
6955
|
+
const stickyEl = host.querySelector(stickySelector);
|
|
6956
|
+
if (preferred && isScrollContainer(preferred)) {
|
|
6957
|
+
return preferred;
|
|
6958
|
+
}
|
|
6959
|
+
const overflowingAncestor = findOverflowingScrollParent(stickyEl ?? preferred ?? host);
|
|
6960
|
+
return overflowingAncestor ?? preferred ?? findScrollParent(host);
|
|
6961
|
+
}
|
|
6962
|
+
/**
|
|
6963
|
+
* Updates a sticky scroll-parent signal when layout or questionnaire content changes.
|
|
6964
|
+
*/
|
|
6965
|
+
function bindQuestionnaireViewerStickyScrollParent(host, stickyParent, options = {}) {
|
|
6966
|
+
const next = resolveQuestionnaireViewerStickyScrollParent(host, options);
|
|
6967
|
+
if (next !== stickyParent()) {
|
|
6968
|
+
stickyParent.set(next);
|
|
6969
|
+
}
|
|
6970
|
+
}
|
|
6971
|
+
function isScrollContainer(element) {
|
|
6972
|
+
const { overflowY } = getComputedStyle(element);
|
|
6973
|
+
return overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay';
|
|
6974
|
+
}
|
|
6975
|
+
function isActiveScrollContainer(element) {
|
|
6976
|
+
return isScrollContainer(element) && element.scrollHeight > element.clientHeight;
|
|
6977
|
+
}
|
|
6978
|
+
function findOverflowingScrollParent(from) {
|
|
6979
|
+
let node = from?.parentElement ?? null;
|
|
6980
|
+
while (node) {
|
|
6981
|
+
if (isActiveScrollContainer(node)) {
|
|
6982
|
+
return node;
|
|
6983
|
+
}
|
|
6984
|
+
node = node.parentElement;
|
|
6985
|
+
}
|
|
6986
|
+
return null;
|
|
6987
|
+
}
|
|
6988
|
+
function findScrollParent(from) {
|
|
6989
|
+
let node = from?.parentElement ?? null;
|
|
6990
|
+
while (node) {
|
|
6991
|
+
const { overflowY } = getComputedStyle(node);
|
|
6992
|
+
if (overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay') {
|
|
6993
|
+
return node;
|
|
6994
|
+
}
|
|
6995
|
+
node = node.parentElement;
|
|
6996
|
+
}
|
|
6997
|
+
return null;
|
|
6998
|
+
}
|
|
6999
|
+
//#endregion
|
|
7000
|
+
|
|
6988
7001
|
//#region ---- Imports ----
|
|
6989
7002
|
//#endregion
|
|
6990
7003
|
//#region ---- Component ----
|
|
@@ -7004,14 +7017,20 @@ class AXMQuestionnaireViewerSideMenuViewComponent {
|
|
|
7004
7017
|
this.sectionNavigabilityCache = signal(new Map(), ...(ngDevMode ? [{ debugName: "sectionNavigabilityCache" }] : /* istanbul ignore next */ []));
|
|
7005
7018
|
this.stickyParent = signal(null, ...(ngDevMode ? [{ debugName: "stickyParent" }] : /* istanbul ignore next */ []));
|
|
7006
7019
|
this.tabRef = viewChild(AXTabsComponent, ...(ngDevMode ? [{ debugName: "tabRef" }] : /* istanbul ignore next */ []));
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
}
|
|
7020
|
+
const refreshStickyParent = () => {
|
|
7021
|
+
bindQuestionnaireViewerStickyScrollParent(this.host.nativeElement, this.stickyParent, {
|
|
7022
|
+
preferredSelector: '.__main-content',
|
|
7023
|
+
});
|
|
7024
|
+
};
|
|
7025
|
+
afterNextRender(() => refreshStickyParent());
|
|
7012
7026
|
effect(() => {
|
|
7013
7027
|
this.tabRef()?.select(this.vm.currentSectionIndex());
|
|
7014
7028
|
});
|
|
7029
|
+
effect(() => {
|
|
7030
|
+
this.vm.currentSection();
|
|
7031
|
+
this.vm.questionnaireData();
|
|
7032
|
+
untracked(() => queueMicrotask(refreshStickyParent));
|
|
7033
|
+
});
|
|
7015
7034
|
// Update navigability cache when validation state changes
|
|
7016
7035
|
effect(async () => {
|
|
7017
7036
|
const sections = this.vm.sections();
|
|
@@ -7084,19 +7103,8 @@ class AXMQuestionnaireViewerSideMenuViewComponent {
|
|
|
7084
7103
|
const cache = this.sectionNavigabilityCache();
|
|
7085
7104
|
return cache.has(sectionIndex) ? !cache.get(sectionIndex) : false;
|
|
7086
7105
|
}
|
|
7087
|
-
findScrollParent(from) {
|
|
7088
|
-
let node = from?.parentElement ?? null;
|
|
7089
|
-
while (node) {
|
|
7090
|
-
const { overflowY } = getComputedStyle(node);
|
|
7091
|
-
if (overflowY === 'auto' || overflowY === 'scroll' || overflowY === 'overlay') {
|
|
7092
|
-
return node;
|
|
7093
|
-
}
|
|
7094
|
-
node = node.parentElement;
|
|
7095
|
-
}
|
|
7096
|
-
return null;
|
|
7097
|
-
}
|
|
7098
7106
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7099
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerSideMenuViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-side-menu-view", viewQueries: [{ propertyName: "tabRef", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__page-section\">\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(min-width:640px){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(min-width:1024px){axm-questionnaire-viewer-side-menu-view{height:65vh}}.__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0;padding-top:.75rem;padding-bottom:.75rem;font-weight:600}.__main-content{display:flex;max-height:83vh;min-height:0px;flex:1 1 0%;flex-direction:column;overflow-y:auto}@media(min-width:768px){.__main-content{max-height:75vh}}.__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding:1rem}.__page-section .__section-title-sticky{position:sticky;top:0;z-index:10;isolation:isolate;min-width:0px;align-self:stretch;border-bottom-width:1px;padding-top:.5rem;padding-bottom:.5rem;transition:padding-block .28s cubic-bezier(.33,1,.68,1),border-color .22s ease-out}.__page-section .__section-title-sticky:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;box-shadow:none;transition:inset-inline .28s cubic-bezier(.22,1,.36,1),box-shadow .28s cubic-bezier(.33,1,.68,1)}@media(prefers-reduced-motion:reduce){.__page-section .__section-title-sticky{transition-duration:1ms;transition-timing-function:linear}.__page-section .__section-title-sticky:before{transition-duration:1ms;transition-timing-function:linear}}.__page-section .__section-title-sticky.--stuck{border-bottom-width:1px;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__page-section .__section-title-sticky.--stuck:before{inset-inline:-1rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-header-row{position:sticky;top:0;z-index:10;isolation:isolate;display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;border-bottom-width:1px;padding:.5rem 1rem;transition:padding-block .28s cubic-bezier(.33,1,.68,1),border-color .22s ease-out}.__mobile-header-row:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;box-shadow:none;transition:inset-inline .28s cubic-bezier(.22,1,.36,1),box-shadow .28s cubic-bezier(.33,1,.68,1)}.__mobile-header-row.--stuck{border-bottom-width:1px;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__mobile-header-row.--stuck:before{inset-inline:-1rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-menu-button{margin-inline-start:-.5rem;flex-shrink:0}.__questions-list{display:flex;flex-direction:column;gap:1rem}\n"], dependencies: [{ kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i1$2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDrawerDirectiveModule }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "minWidth", "maxWidth", "dblClickAction", "width", "defaultWidth"], outputs: ["axResizableChange", "minWidthChange", "maxWidthChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerSideMenuViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-side-menu-view", viewQueries: [{ propertyName: "tabRef", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(min-width:640px){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(min-width:1024px){axm-questionnaire-viewer-side-menu-view{height:65vh}}.__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0;padding-top:.75rem;padding-bottom:.75rem;font-weight:600}.__main-content{display:flex;max-height:83vh;min-height:0px;flex:1 1 0%;flex-direction:column;overflow-y:auto;overflow-x:hidden}@media(min-width:768px){.__main-content{max-height:75vh}}.__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding:1rem}.__mobile-menu-button{margin-inline-start:-.5rem;flex-shrink:0}.__questions-list{display:flex;flex-direction:column;gap:1rem}\n"], dependencies: [{ kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i1$2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDrawerDirectiveModule }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "minWidth", "maxWidth", "dblClickAction", "width", "defaultWidth"], outputs: ["axResizableChange", "minWidthChange", "maxWidthChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7100
7108
|
}
|
|
7101
7109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, decorators: [{
|
|
7102
7110
|
type: Component,
|
|
@@ -7113,7 +7121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7113
7121
|
AXPStickyDirective,
|
|
7114
7122
|
AsyncPipe,
|
|
7115
7123
|
AXTranslationModule,
|
|
7116
|
-
], template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n <div class=\"__page-section\">\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(min-width:640px){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(min-width:1024px){axm-questionnaire-viewer-side-menu-view{height:65vh}}.__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0;padding-top:.75rem;padding-bottom:.75rem;font-weight:600}.__main-content{display:flex;max-height:83vh;min-height:0px;flex:1 1 0%;flex-direction:column;overflow-y:auto}@media(min-width:768px){.__main-content{max-height:75vh}}.__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding:1rem}.__page-section .__section-title-sticky{position:sticky;top:0;z-index:10;isolation:isolate;min-width:0px;align-self:stretch;border-bottom-width:1px;padding-top:.5rem;padding-bottom:.5rem;transition:padding-block .28s cubic-bezier(.33,1,.68,1),border-color .22s ease-out}.__page-section .__section-title-sticky:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;box-shadow:none;transition:inset-inline .28s cubic-bezier(.22,1,.36,1),box-shadow .28s cubic-bezier(.33,1,.68,1)}@media(prefers-reduced-motion:reduce){.__page-section .__section-title-sticky{transition-duration:1ms;transition-timing-function:linear}.__page-section .__section-title-sticky:before{transition-duration:1ms;transition-timing-function:linear}}.__page-section .__section-title-sticky.--stuck{border-bottom-width:1px;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__page-section .__section-title-sticky.--stuck:before{inset-inline:-1rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-header-row{position:sticky;top:0;z-index:10;isolation:isolate;display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;border-bottom-width:1px;padding:.5rem 1rem;transition:padding-block .28s cubic-bezier(.33,1,.68,1),border-color .22s ease-out}.__mobile-header-row:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;box-shadow:none;transition:inset-inline .28s cubic-bezier(.22,1,.36,1),box-shadow .28s cubic-bezier(.33,1,.68,1)}.__mobile-header-row.--stuck{border-bottom-width:1px;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__mobile-header-row.--stuck:before{inset-inline:-1rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-menu-button{margin-inline-start:-.5rem;flex-shrink:0}.__questions-list{display:flex;flex-direction:column;gap:1rem}\n"] }]
|
|
7124
|
+
], template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(min-width:640px){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(min-width:1024px){axm-questionnaire-viewer-side-menu-view{height:65vh}}.__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0;padding-top:.75rem;padding-bottom:.75rem;font-weight:600}.__main-content{display:flex;max-height:83vh;min-height:0px;flex:1 1 0%;flex-direction:column;overflow-y:auto;overflow-x:hidden}@media(min-width:768px){.__main-content{max-height:75vh}}.__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:1rem;padding:1rem}.__mobile-menu-button{margin-inline-start:-.5rem;flex-shrink:0}.__questions-list{display:flex;flex-direction:column;gap:1rem}\n"] }]
|
|
7117
7125
|
}], ctorParameters: () => [], propDecorators: { tabRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXTabsComponent), { isSignal: true }] }] } });
|
|
7118
7126
|
|
|
7119
7127
|
//#region ---- Imports ----
|
|
@@ -7198,7 +7206,7 @@ class AXMQuestionnaireViewerComponent {
|
|
|
7198
7206
|
const config = this.config();
|
|
7199
7207
|
const initialAnswers = this.initialAnswers();
|
|
7200
7208
|
if (id) {
|
|
7201
|
-
this.vm.loadQuestionnaire(id, initialAnswers, config);
|
|
7209
|
+
void this.vm.loadQuestionnaire(id, initialAnswers, config, structure?.displaySettings);
|
|
7202
7210
|
}
|
|
7203
7211
|
else if (structure) {
|
|
7204
7212
|
if (structure.sections && structure.sections.length > 0) {
|
|
@@ -7361,7 +7369,7 @@ class AXMQuestionnaireViewerComponent {
|
|
|
7361
7369
|
this.answersChanged.emit(answers);
|
|
7362
7370
|
}
|
|
7363
7371
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerComponent, isStandalone: true, selector: "axm-questionnaire-viewer", inputs: { questionnaireId: { classPropertyName: "questionnaireId", publicName: "questionnaireId", isSignal: true, isRequired: false, transformFunction: null }, structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, initialAnswers: { classPropertyName: "initialAnswers", publicName: "initialAnswers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { answersChanged: "answersChanged", questionAnswered: "questionAnswered" }, host: { classAttribute: "axm-questionnaire-viewer" }, providers: [AXMQuestionnaireViewerViewModel], viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, isSignal: true }, { propertyName: "widgetContainer", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<axp-widgets-container #widgetContainer [attr.dir]=\"layoutDirection()\" [context]=\"{}\"\n (onContextChanged)=\"handleContextChanged()\">\n @if (vm.isLoading()) {\n <div class=\"__loading\">\n <axp-state-message icon=\"fa-light fa-spinner fa-spin\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\"\n [description]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.error()) {\n <div class=\"__error\">\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\"\n [description]=\"vm.error() || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.questionnaireData()) {\n <div class=\"__questionnaire-container\">\n <ax-form #form>\n @if (vm.viewMode() === 'single-page') {\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\n } @else if (vm.viewMode() === 'page-per-group') {\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\n } @else if (vm.viewMode() === 'page-per-question') {\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\n } @else if (vm.viewMode() === 'side-menu') {\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\n }\n </ax-form>\n </div>\n }\n</axp-widgets-container>\n", styles: [".axm-questionnaire-viewer{display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer
|
|
7372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerComponent, isStandalone: true, selector: "axm-questionnaire-viewer", inputs: { questionnaireId: { classPropertyName: "questionnaireId", publicName: "questionnaireId", isSignal: true, isRequired: false, transformFunction: null }, structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, initialAnswers: { classPropertyName: "initialAnswers", publicName: "initialAnswers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { answersChanged: "answersChanged", questionAnswered: "questionAnswered" }, host: { classAttribute: "axm-questionnaire-viewer" }, providers: [AXMQuestionnaireViewerViewModel], viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, isSignal: true }, { propertyName: "widgetContainer", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<axp-widgets-container #widgetContainer [attr.dir]=\"layoutDirection()\" [context]=\"{}\"\n (onContextChanged)=\"handleContextChanged()\">\n @if (vm.isLoading()) {\n <div class=\"__loading\">\n <axp-state-message icon=\"fa-light fa-spinner fa-spin\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\"\n [description]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.error()) {\n <div class=\"__error\">\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\"\n [description]=\"vm.error() || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.questionnaireData()) {\n <div class=\"__questionnaire-container\">\n <ax-form #form>\n @if (vm.viewMode() === 'single-page') {\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\n } @else if (vm.viewMode() === 'page-per-group') {\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\n } @else if (vm.viewMode() === 'page-per-question') {\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\n } @else if (vm.viewMode() === 'side-menu') {\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\n }\n </ax-form>\n </div>\n }\n</axp-widgets-container>\n", styles: [".axm-questionnaire-viewer{display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer axp-widgets-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer .__loading,.axm-questionnaire-viewer .__error{display:flex;height:100%;align-items:center;justify-content:center}.axm-questionnaire-viewer .__questionnaire-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}.axm-questionnaire-viewer ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}\n", ".__section-title-sticky,.__mobile-header-row{position:sticky;top:0;z-index:10;isolation:isolate;min-width:0px;align-self:stretch;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section-title-sticky:before,.__mobile-header-row:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;background-color:rgb(var(--ax-sys-color-lightest-surface));border-bottom:1px solid transparent;box-shadow:none;transition:box-shadow .2s ease-out,border-color .2s ease-out}@media(prefers-reduced-motion:reduce){.__section-title-sticky:before,.__mobile-header-row:before{transition-duration:1ms}}.__section-title-sticky:after,.__mobile-header-row:after{content:\"\";position:absolute;bottom:0;left:1rem;right:1rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-surface));pointer-events:none;opacity:1;transition:opacity .2s ease-out}@media(prefers-reduced-motion:reduce){.__section-title-sticky:after,.__mobile-header-row:after{transition-duration:1ms}}.__section-title-sticky.--stuck:after,.__mobile-header-row.--stuck:after{opacity:0}.__section-title-sticky.--stuck:before,.__mobile-header-row.--stuck:before{border-bottom-color:rgb(var(--ax-sys-color-border-surface));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-header-row{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem}.__section-title-sticky,.__mobile-header-row{padding-left:1rem;padding-right:1rem}.__section-title-sticky.--stuck:before,.__mobile-header-row.--stuck:before{inset-inline:-1rem}.__viewer-scroll{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow-y:auto;overflow-x:hidden;max-height:83vh}@media(min-width:768px){.__viewer-scroll{max-height:75vh}}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll){display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll) .__questionnaire-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll) ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__content:has(.__viewer-scroll){overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll){display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll) .__questionnaire-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll) ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content:has(.__viewer-scroll){overflow:hidden}axm-questionnaire-viewer-single-page-view,axm-questionnaire-viewer-page-per-group-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "look"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1$3.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "component", type:
|
|
7365
7373
|
// View components
|
|
7366
7374
|
AXMQuestionnaireViewerSinglePageViewComponent, selector: "axm-questionnaire-viewer-single-page-view" }, { kind: "component", type: AXMQuestionnaireViewerPagePerGroupViewComponent, selector: "axm-questionnaire-viewer-page-per-group-view" }, { kind: "component", type: AXMQuestionnaireViewerPagePerQuestionViewComponent, selector: "axm-questionnaire-viewer-page-per-question-view" }, { kind: "component", type: AXMQuestionnaireViewerSideMenuViewComponent, selector: "axm-questionnaire-viewer-side-menu-view" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7367
7375
|
}
|
|
@@ -7381,7 +7389,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7381
7389
|
AXMQuestionnaireViewerSideMenuViewComponent,
|
|
7382
7390
|
], providers: [AXMQuestionnaireViewerViewModel], encapsulation: ViewEncapsulation.None, host: {
|
|
7383
7391
|
class: 'axm-questionnaire-viewer',
|
|
7384
|
-
}, template: "<axp-widgets-container #widgetContainer [attr.dir]=\"layoutDirection()\" [context]=\"{}\"\n (onContextChanged)=\"handleContextChanged()\">\n @if (vm.isLoading()) {\n <div class=\"__loading\">\n <axp-state-message icon=\"fa-light fa-spinner fa-spin\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\"\n [description]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.error()) {\n <div class=\"__error\">\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\"\n [description]=\"vm.error() || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.questionnaireData()) {\n <div class=\"__questionnaire-container\">\n <ax-form #form>\n @if (vm.viewMode() === 'single-page') {\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\n } @else if (vm.viewMode() === 'page-per-group') {\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\n } @else if (vm.viewMode() === 'page-per-question') {\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\n } @else if (vm.viewMode() === 'side-menu') {\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\n }\n </ax-form>\n </div>\n }\n</axp-widgets-container>\n", styles: [".axm-questionnaire-viewer{display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer
|
|
7392
|
+
}, template: "<axp-widgets-container #widgetContainer [attr.dir]=\"layoutDirection()\" [context]=\"{}\"\n (onContextChanged)=\"handleContextChanged()\">\n @if (vm.isLoading()) {\n <div class=\"__loading\">\n <axp-state-message icon=\"fa-light fa-spinner fa-spin\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\"\n [description]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.error()) {\n <div class=\"__error\">\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\"\n [description]=\"vm.error() || ''\">\n </axp-state-message>\n </div>\n } @else if (vm.questionnaireData()) {\n <div class=\"__questionnaire-container\">\n <ax-form #form>\n @if (vm.viewMode() === 'single-page') {\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\n } @else if (vm.viewMode() === 'page-per-group') {\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\n } @else if (vm.viewMode() === 'page-per-question') {\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\n } @else if (vm.viewMode() === 'side-menu') {\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\n }\n </ax-form>\n </div>\n }\n</axp-widgets-container>\n", styles: [".axm-questionnaire-viewer{display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer axp-widgets-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column}.axm-questionnaire-viewer .__loading,.axm-questionnaire-viewer .__error{display:flex;height:100%;align-items:center;justify-content:center}.axm-questionnaire-viewer .__questionnaire-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}.axm-questionnaire-viewer ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}\n", ".__section-title-sticky,.__mobile-header-row{position:sticky;top:0;z-index:10;isolation:isolate;min-width:0px;align-self:stretch;border-style:none;padding-top:.75rem;padding-bottom:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section-title-sticky:before,.__mobile-header-row:before{content:\"\";position:absolute;z-index:-1;inset-block:0;inset-inline:0;pointer-events:none;background-color:rgb(var(--ax-sys-color-lightest-surface));border-bottom:1px solid transparent;box-shadow:none;transition:box-shadow .2s ease-out,border-color .2s ease-out}@media(prefers-reduced-motion:reduce){.__section-title-sticky:before,.__mobile-header-row:before{transition-duration:1ms}}.__section-title-sticky:after,.__mobile-header-row:after{content:\"\";position:absolute;bottom:0;left:1rem;right:1rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-surface));pointer-events:none;opacity:1;transition:opacity .2s ease-out}@media(prefers-reduced-motion:reduce){.__section-title-sticky:after,.__mobile-header-row:after{transition-duration:1ms}}.__section-title-sticky.--stuck:after,.__mobile-header-row.--stuck:after{opacity:0}.__section-title-sticky.--stuck:before,.__mobile-header-row.--stuck:before{border-bottom-color:rgb(var(--ax-sys-color-border-surface));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.__mobile-header-row{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem}.__section-title-sticky,.__mobile-header-row{padding-left:1rem;padding-right:1rem}.__section-title-sticky.--stuck:before,.__mobile-header-row.--stuck:before{inset-inline:-1rem}.__viewer-scroll{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow-y:auto;overflow-x:hidden;max-height:83vh}@media(min-width:768px){.__viewer-scroll{max-height:75vh}}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll){display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll) .__questionnaire-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__content axm-questionnaire-viewer:has(.__viewer-scroll) ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__content:has(.__viewer-scroll){overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll){display:flex;height:100%;max-height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll) .__questionnaire-container{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer:has(.__viewer-scroll) ax-form{display:flex;height:100%;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content:has(.__viewer-scroll){overflow:hidden}axm-questionnaire-viewer-single-page-view,axm-questionnaire-viewer-page-per-group-view{display:flex;height:100%;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}\n"] }]
|
|
7385
7393
|
}], ctorParameters: () => [], propDecorators: { questionnaireId: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireId", required: false }] }], structure: [{ type: i0.Input, args: [{ isSignal: true, alias: "structure", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAnswers", required: false }] }], answersChanged: [{ type: i0.Output, args: ["answersChanged"] }], questionAnswered: [{ type: i0.Output, args: ["questionAnswered"] }], form: [{ type: i0.ViewChild, args: ['form', { isSignal: true }] }], widgetContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPWidgetContainerComponent), { isSignal: true }] }] } });
|
|
7386
7394
|
|
|
7387
7395
|
//#region ---- Imports ----
|
|
@@ -7592,35 +7600,35 @@ class AXMQuestionnaireViewerFeatureModule {
|
|
|
7592
7600
|
provideCommandSetups([
|
|
7593
7601
|
{
|
|
7594
7602
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
|
|
7595
|
-
command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-
|
|
7603
|
+
command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
|
|
7596
7604
|
},
|
|
7597
7605
|
{
|
|
7598
7606
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:PreviewQuestion`,
|
|
7599
|
-
command: () => import('./acorex-modules-assessment-management-preview-question.command-
|
|
7607
|
+
command: () => import('./acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs').then((c) => c.PreviewQuestionCommand),
|
|
7600
7608
|
},
|
|
7601
7609
|
{
|
|
7602
7610
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}:Preview`,
|
|
7603
|
-
command: () => import('./acorex-modules-assessment-management-preview-question.command-
|
|
7611
|
+
command: () => import('./acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs').then((c) => c.PreviewQuestionCommand),
|
|
7604
7612
|
},
|
|
7605
7613
|
{
|
|
7606
7614
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
|
|
7607
|
-
command: () => import('./acorex-modules-assessment-management-view-session-answers.command-
|
|
7615
|
+
command: () => import('./acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs').then((c) => c.ViewSessionAnswersCommand),
|
|
7608
7616
|
},
|
|
7609
7617
|
{
|
|
7610
7618
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
|
|
7611
|
-
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-
|
|
7619
|
+
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs').then((c) => c.FillAssessmentSessionCommand),
|
|
7612
7620
|
},
|
|
7613
7621
|
{
|
|
7614
7622
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
|
|
7615
|
-
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-
|
|
7623
|
+
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs').then((c) => c.FillAssessmentSessionCommand),
|
|
7616
7624
|
},
|
|
7617
7625
|
{
|
|
7618
7626
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ReviewAnswers`,
|
|
7619
|
-
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-
|
|
7627
|
+
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs').then((c) => c.ReviewAssessmentSessionCommand),
|
|
7620
7628
|
},
|
|
7621
7629
|
{
|
|
7622
7630
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:ReviewAnswers`,
|
|
7623
|
-
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-
|
|
7631
|
+
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs').then((c) => c.ReviewAssessmentSessionCommand),
|
|
7624
7632
|
},
|
|
7625
7633
|
]),
|
|
7626
7634
|
], imports: [AXPWidgetCoreModule,
|
|
@@ -7647,35 +7655,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7647
7655
|
provideCommandSetups([
|
|
7648
7656
|
{
|
|
7649
7657
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
|
|
7650
|
-
command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-
|
|
7658
|
+
command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-BUUnlr7g.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
|
|
7651
7659
|
},
|
|
7652
7660
|
{
|
|
7653
7661
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:PreviewQuestion`,
|
|
7654
|
-
command: () => import('./acorex-modules-assessment-management-preview-question.command-
|
|
7662
|
+
command: () => import('./acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs').then((c) => c.PreviewQuestionCommand),
|
|
7655
7663
|
},
|
|
7656
7664
|
{
|
|
7657
7665
|
key: `${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}:Preview`,
|
|
7658
|
-
command: () => import('./acorex-modules-assessment-management-preview-question.command-
|
|
7666
|
+
command: () => import('./acorex-modules-assessment-management-preview-question.command-B0kZz-BV.mjs').then((c) => c.PreviewQuestionCommand),
|
|
7659
7667
|
},
|
|
7660
7668
|
{
|
|
7661
7669
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
|
|
7662
|
-
command: () => import('./acorex-modules-assessment-management-view-session-answers.command-
|
|
7670
|
+
command: () => import('./acorex-modules-assessment-management-view-session-answers.command-2LB7JKZx.mjs').then((c) => c.ViewSessionAnswersCommand),
|
|
7663
7671
|
},
|
|
7664
7672
|
{
|
|
7665
7673
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
|
|
7666
|
-
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-
|
|
7674
|
+
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs').then((c) => c.FillAssessmentSessionCommand),
|
|
7667
7675
|
},
|
|
7668
7676
|
{
|
|
7669
7677
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
|
|
7670
|
-
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-
|
|
7678
|
+
command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-DIUV6Az-.mjs').then((c) => c.FillAssessmentSessionCommand),
|
|
7671
7679
|
},
|
|
7672
7680
|
{
|
|
7673
7681
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ReviewAnswers`,
|
|
7674
|
-
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-
|
|
7682
|
+
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs').then((c) => c.ReviewAssessmentSessionCommand),
|
|
7675
7683
|
},
|
|
7676
7684
|
{
|
|
7677
7685
|
key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:ReviewAnswers`,
|
|
7678
|
-
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-
|
|
7686
|
+
command: () => import('./acorex-modules-assessment-management-review-assessment-session.command-Bqi7YO0X.mjs').then((c) => c.ReviewAssessmentSessionCommand),
|
|
7679
7687
|
},
|
|
7680
7688
|
]),
|
|
7681
7689
|
],
|
|
@@ -7905,6 +7913,128 @@ async function persistAssessmentSession(input) {
|
|
|
7905
7913
|
}
|
|
7906
7914
|
//#endregion
|
|
7907
7915
|
|
|
7916
|
+
//#region ---- Imports ----
|
|
7917
|
+
//#endregion
|
|
7918
|
+
//#region ---- Component ----
|
|
7919
|
+
/**
|
|
7920
|
+
* Footer control for questionnaire-level reference documents (popover list).
|
|
7921
|
+
*/
|
|
7922
|
+
class AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent {
|
|
7923
|
+
constructor() {
|
|
7924
|
+
//#region ---- Inputs ----
|
|
7925
|
+
this.attachments = input.required(...(ngDevMode ? [{ debugName: "attachments" }] : /* istanbul ignore next */ []));
|
|
7926
|
+
//#endregion
|
|
7927
|
+
//#region ---- Computed ----
|
|
7928
|
+
this.files = computed(() => questionnaireViewerAttachmentsToFileListItems(this.attachments()), ...(ngDevMode ? [{ debugName: "files" }] : /* istanbul ignore next */ []));
|
|
7929
|
+
}
|
|
7930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7931
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, isStandalone: true, selector: "axm-questionnaire-viewer-questionnaire-attachments-footer", inputs: { attachments: { classPropertyName: "attachments", publicName: "attachments", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "axm-questionnaire-viewer-questionnaire-attachments-footer" }, ngImport: i0, template: `
|
|
7932
|
+
@if (attachments().length > 0) {
|
|
7933
|
+
<div class="__questionnaire-attachments-footer">
|
|
7934
|
+
<span #trigger class="__trigger">
|
|
7935
|
+
<ax-button
|
|
7936
|
+
look="link"
|
|
7937
|
+
color="primary"
|
|
7938
|
+
[text]="
|
|
7939
|
+
'@assessment-management:questionnaires.components.questionnaire-viewer.questionnaire-attachments.footer-action.title'
|
|
7940
|
+
| translate
|
|
7941
|
+
| async
|
|
7942
|
+
"
|
|
7943
|
+
>
|
|
7944
|
+
<ax-icon><i class="fa-light fa-paperclip"></i></ax-icon>
|
|
7945
|
+
</ax-button>
|
|
7946
|
+
</span>
|
|
7947
|
+
|
|
7948
|
+
<ax-popover [target]="trigger" [openOn]="'toggle'" [closeOn]="'clickOut'" [offsetY]="8">
|
|
7949
|
+
<div
|
|
7950
|
+
class="axm-questionnaire-viewer-attachments-popover ax-lightest-surface ax-min-w-[17.5rem] ax-max-w-[26rem] ax-overflow-hidden"
|
|
7951
|
+
>
|
|
7952
|
+
<div class="ax-border-b ax-border-surface ax-px-4 ax-py-3">
|
|
7953
|
+
<h3 class="ax-m-0 ax-text-sm ax-font-semibold ax-leading-normal ax-text-on-lightest-surface">
|
|
7954
|
+
{{
|
|
7955
|
+
'@assessment-management:questionnaires.components.questionnaire-viewer.questionnaire-attachments.title'
|
|
7956
|
+
| translate
|
|
7957
|
+
| async
|
|
7958
|
+
}}
|
|
7959
|
+
</h3>
|
|
7960
|
+
</div>
|
|
7961
|
+
<div class="ax-max-h-64 ax-overflow-y-auto ax-px-3 ax-py-3" style="max-height: max(30dvh, 12rem)">
|
|
7962
|
+
<axp-file-list
|
|
7963
|
+
[files]="files()"
|
|
7964
|
+
look="links"
|
|
7965
|
+
linksLayout="menu"
|
|
7966
|
+
[showLabel]="false"
|
|
7967
|
+
[readonly]="true"
|
|
7968
|
+
/>
|
|
7969
|
+
</div>
|
|
7970
|
+
</div>
|
|
7971
|
+
</ax-popover>
|
|
7972
|
+
</div>
|
|
7973
|
+
}
|
|
7974
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "titleKey", "showLabel", "linksLayout", "files", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7975
|
+
}
|
|
7976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, decorators: [{
|
|
7977
|
+
type: Component,
|
|
7978
|
+
args: [{
|
|
7979
|
+
selector: 'axm-questionnaire-viewer-questionnaire-attachments-footer',
|
|
7980
|
+
template: `
|
|
7981
|
+
@if (attachments().length > 0) {
|
|
7982
|
+
<div class="__questionnaire-attachments-footer">
|
|
7983
|
+
<span #trigger class="__trigger">
|
|
7984
|
+
<ax-button
|
|
7985
|
+
look="link"
|
|
7986
|
+
color="primary"
|
|
7987
|
+
[text]="
|
|
7988
|
+
'@assessment-management:questionnaires.components.questionnaire-viewer.questionnaire-attachments.footer-action.title'
|
|
7989
|
+
| translate
|
|
7990
|
+
| async
|
|
7991
|
+
"
|
|
7992
|
+
>
|
|
7993
|
+
<ax-icon><i class="fa-light fa-paperclip"></i></ax-icon>
|
|
7994
|
+
</ax-button>
|
|
7995
|
+
</span>
|
|
7996
|
+
|
|
7997
|
+
<ax-popover [target]="trigger" [openOn]="'toggle'" [closeOn]="'clickOut'" [offsetY]="8">
|
|
7998
|
+
<div
|
|
7999
|
+
class="axm-questionnaire-viewer-attachments-popover ax-lightest-surface ax-min-w-[17.5rem] ax-max-w-[26rem] ax-overflow-hidden"
|
|
8000
|
+
>
|
|
8001
|
+
<div class="ax-border-b ax-border-surface ax-px-4 ax-py-3">
|
|
8002
|
+
<h3 class="ax-m-0 ax-text-sm ax-font-semibold ax-leading-normal ax-text-on-lightest-surface">
|
|
8003
|
+
{{
|
|
8004
|
+
'@assessment-management:questionnaires.components.questionnaire-viewer.questionnaire-attachments.title'
|
|
8005
|
+
| translate
|
|
8006
|
+
| async
|
|
8007
|
+
}}
|
|
8008
|
+
</h3>
|
|
8009
|
+
</div>
|
|
8010
|
+
<div class="ax-max-h-64 ax-overflow-y-auto ax-px-3 ax-py-3" style="max-height: max(30dvh, 12rem)">
|
|
8011
|
+
<axp-file-list
|
|
8012
|
+
[files]="files()"
|
|
8013
|
+
look="links"
|
|
8014
|
+
linksLayout="menu"
|
|
8015
|
+
[showLabel]="false"
|
|
8016
|
+
[readonly]="true"
|
|
8017
|
+
/>
|
|
8018
|
+
</div>
|
|
8019
|
+
</div>
|
|
8020
|
+
</ax-popover>
|
|
8021
|
+
</div>
|
|
8022
|
+
}
|
|
8023
|
+
`,
|
|
8024
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8025
|
+
imports: [
|
|
8026
|
+
AsyncPipe,
|
|
8027
|
+
AXTranslationModule,
|
|
8028
|
+
AXButtonModule,
|
|
8029
|
+
AXDecoratorModule,
|
|
8030
|
+
AXPopoverModule,
|
|
8031
|
+
AXPFileListComponent,
|
|
8032
|
+
],
|
|
8033
|
+
encapsulation: ViewEncapsulation.None,
|
|
8034
|
+
host: { class: 'axm-questionnaire-viewer-questionnaire-attachments-footer' },
|
|
8035
|
+
}]
|
|
8036
|
+
}], propDecorators: { attachments: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachments", required: true }] }] } });
|
|
8037
|
+
|
|
7908
8038
|
//#region ---- Imports ----
|
|
7909
8039
|
//#endregion
|
|
7910
8040
|
//#region ---- Component ----
|
|
@@ -8432,6 +8562,13 @@ class AXMQuestionnaireViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
8432
8562
|
this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: "timerElapsed" }] : /* istanbul ignore next */ []));
|
|
8433
8563
|
this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: "showProgressBar" }] : /* istanbul ignore next */ []));
|
|
8434
8564
|
this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "answeredQuestionsCount" }] : /* istanbul ignore next */ []));
|
|
8565
|
+
this.questionnaireAttachments = computed(() => {
|
|
8566
|
+
const fromViewer = this.viewerViewModel()?.questionnaireAttachments();
|
|
8567
|
+
if (fromViewer && fromViewer.length > 0) {
|
|
8568
|
+
return fromViewer;
|
|
8569
|
+
}
|
|
8570
|
+
return normalizeQuestionnaireViewerAttachments(this.questionnaire()?.attachments);
|
|
8571
|
+
}, ...(ngDevMode ? [{ debugName: "questionnaireAttachments" }] : /* istanbul ignore next */ []));
|
|
8435
8572
|
this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: "isReadonly" }] : /* istanbul ignore next */ []));
|
|
8436
8573
|
this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfig()?.post?.reviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: "showReviewButton" }] : /* istanbul ignore next */ []));
|
|
8437
8574
|
/** Use answers from review context when returning from review; otherwise use initial answers. */
|
|
@@ -8685,9 +8822,9 @@ class AXMQuestionnaireViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
8685
8822
|
this.router.navigateByUrl(this.getCasesListPath());
|
|
8686
8823
|
}
|
|
8687
8824
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8688
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerPageComponent, isStandalone: true, selector: "axm-questionnaire-viewer-page", host: { classAttribute: "axm-questionnaire-viewer-page" }, providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }], viewQueries: [{ propertyName: "viewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Page shell layout -->\n<axp-page-layout>\n <!-- Main content area -->\n <axp-page-content class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\"\n [class.ax-overflow-hidden]=\"flowStep() === 'questions'\" [class.ax-overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Loading state -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async\n }}</span>\n </div>\n }\n <!-- Error state -->\n @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n }\n <!-- Content state -->\n @else if (structure()) {\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"prePostConfig()?.pre?.content\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit results content -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Post-submit summary content -->\n @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content mode=\"summary\" [summaryContent]=\"prePostConfig()?.post?.summaryContent\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden while in review mode) -->\n <div class=\"__questions ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\"\n [class.ax-invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\">\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden\">\n <axm-questionnaire-viewer
|
|
8825
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMQuestionnaireViewerPageComponent, isStandalone: true, selector: "axm-questionnaire-viewer-page", host: { classAttribute: "axm-questionnaire-viewer-page" }, providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }], viewQueries: [{ propertyName: "viewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Page shell layout -->\n<axp-page-layout>\n <!-- Main content area -->\n <axp-page-content class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\"\n [class.ax-overflow-hidden]=\"flowStep() === 'questions'\" [class.ax-overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Loading state -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async\n }}</span>\n </div>\n }\n <!-- Error state -->\n @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n }\n <!-- Content state -->\n @else if (structure()) {\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"prePostConfig()?.pre?.content\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit results content -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Post-submit summary content -->\n @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content mode=\"summary\" [summaryContent]=\"prePostConfig()?.post?.summaryContent\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden while in review mode) -->\n <div class=\"__questions ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\"\n [class.ax-invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\">\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden\">\n <axm-questionnaire-viewer\n #viewer\n [questionnaireId]=\"questionnaire()?.id\"\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n (answersChanged)=\"handleAnswersChanged($event)\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n }\n </axp-page-content>\n\n <!-- Footer actions (only when content is ready) -->\n @if (structure() && !isLoading() && !loadError()) {\n <axp-page-footer class=\"--animated\">\n <!-- Footer prefix: progress indicator -->\n <axp-layout-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-min-w-0\">\n <axm-questionnaire-viewer-questionnaire-attachments-footer\n [attachments]=\"questionnaireAttachments()\"\n />\n <div class=\"__footer-progress ax-text-sm ax-font-mono ax-tabular-nums\" dir=\"ltr\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n </div>\n }\n <!-- @if (showTimer()) {\n <axp-stopwatch [mode]=\"timerTimeLimit() ? 'count-down' : 'count-up'\" [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\" [autoStart]=\"true\"\n [showControls]=\"false\" [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"></axp-stopwatch>\n } -->\n </axp-layout-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <axp-layout-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n }\n <!-- Question step actions -->\n @else if (flowStep() === 'questions') {\n <!-- Question navigation buttons -->\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\"\n [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\"\n [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n\n <!-- Final-step actions -->\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\"\n [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\"\n [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n }\n <!-- Review step actions -->\n @else if (flowStep() === 'review') {\n <ax-button look=\"outline\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n @if (prePostConfig()?.post?.summaryEnabled) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.next.title' | translate | async\"\n (onClick)=\"flowStep.set('summary')\"></ax-button>\n } @else {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n }\n <!-- Summary step action -->\n @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n </axp-layout-suffix>\n </axp-page-footer>\n }\n</axp-page-layout>", styles: ["axm-questionnaire-viewer-page .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-page .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));position:sticky;top:0;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-page .__content axm-questionnaire-viewer{display:flex;height:auto;max-height:none;min-height:0px;width:100%;max-width:100%;flex:none;flex-direction:column}axm-questionnaire-viewer-page .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-page .__toolbar-meta{color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-page .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type:
|
|
8689
8826
|
//AXPStopwatchComponent,
|
|
8690
|
-
AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXMPreQuestionnaireContentComponent, selector: "axm-pre-questionnaire-content", inputs: ["content"] }, { kind: "component", type: AXMPostQuestionnaireContentComponent, selector: "axm-post-questionnaire-content", inputs: ["mode", "questionsWithAnswers", "reviewContext", "summaryContent", "placeholderValues", "locale", "showQuestionNumbers"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8827
|
+
AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, selector: "axm-questionnaire-viewer-questionnaire-attachments-footer", inputs: ["attachments"] }, { kind: "component", type: AXMPreQuestionnaireContentComponent, selector: "axm-pre-questionnaire-content", inputs: ["content"] }, { kind: "component", type: AXMPostQuestionnaireContentComponent, selector: "axm-post-questionnaire-content", inputs: ["mode", "questionsWithAnswers", "reviewContext", "summaryContent", "placeholderValues", "locale", "showQuestionNumbers"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8691
8828
|
}
|
|
8692
8829
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, decorators: [{
|
|
8693
8830
|
type: Component,
|
|
@@ -8699,9 +8836,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8699
8836
|
AXPThemeLayoutBlockComponent,
|
|
8700
8837
|
//AXPStopwatchComponent,
|
|
8701
8838
|
AXMQuestionnaireViewerComponent,
|
|
8839
|
+
AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent,
|
|
8702
8840
|
AXMPreQuestionnaireContentComponent,
|
|
8703
8841
|
AXMPostQuestionnaireContentComponent,
|
|
8704
|
-
], providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-page' }, template: "<!-- Page shell layout -->\n<axp-page-layout>\n <!-- Main content area -->\n <axp-page-content class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\"\n [class.ax-overflow-hidden]=\"flowStep() === 'questions'\" [class.ax-overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Loading state -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async\n }}</span>\n </div>\n }\n <!-- Error state -->\n @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n }\n <!-- Content state -->\n @else if (structure()) {\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"prePostConfig()?.pre?.content\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit results content -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Post-submit summary content -->\n @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content mode=\"summary\" [summaryContent]=\"prePostConfig()?.post?.summaryContent\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden while in review mode) -->\n <div class=\"__questions ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\"\n [class.ax-invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\">\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden\">\n <axm-questionnaire-viewer
|
|
8842
|
+
], providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-page' }, template: "<!-- Page shell layout -->\n<axp-page-layout>\n <!-- Main content area -->\n <axp-page-content class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\"\n [class.ax-overflow-hidden]=\"flowStep() === 'questions'\" [class.ax-overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Loading state -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async\n }}</span>\n </div>\n }\n <!-- Error state -->\n @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n }\n <!-- Content state -->\n @else if (structure()) {\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"prePostConfig()?.pre?.content\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit results content -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Post-submit summary content -->\n @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content mode=\"summary\" [summaryContent]=\"prePostConfig()?.post?.summaryContent\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden while in review mode) -->\n <div class=\"__questions ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\"\n [class.ax-invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\">\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden\">\n <axm-questionnaire-viewer\n #viewer\n [questionnaireId]=\"questionnaire()?.id\"\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n (answersChanged)=\"handleAnswersChanged($event)\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n }\n </axp-page-content>\n\n <!-- Footer actions (only when content is ready) -->\n @if (structure() && !isLoading() && !loadError()) {\n <axp-page-footer class=\"--animated\">\n <!-- Footer prefix: progress indicator -->\n <axp-layout-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-min-w-0\">\n <axm-questionnaire-viewer-questionnaire-attachments-footer\n [attachments]=\"questionnaireAttachments()\"\n />\n <div class=\"__footer-progress ax-text-sm ax-font-mono ax-tabular-nums\" dir=\"ltr\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n </div>\n }\n <!-- @if (showTimer()) {\n <axp-stopwatch [mode]=\"timerTimeLimit() ? 'count-down' : 'count-up'\" [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\" [autoStart]=\"true\"\n [showControls]=\"false\" [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"></axp-stopwatch>\n } -->\n </axp-layout-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <axp-layout-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n }\n <!-- Question step actions -->\n @else if (flowStep() === 'questions') {\n <!-- Question navigation buttons -->\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\"\n [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\"\n [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n\n <!-- Final-step actions -->\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\"\n [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\"\n [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n }\n <!-- Review step actions -->\n @else if (flowStep() === 'review') {\n <ax-button look=\"outline\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n @if (prePostConfig()?.post?.summaryEnabled) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.next.title' | translate | async\"\n (onClick)=\"flowStep.set('summary')\"></ax-button>\n } @else {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n }\n <!-- Summary step action -->\n @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n </axp-layout-suffix>\n </axp-page-footer>\n }\n</axp-page-layout>", styles: ["axm-questionnaire-viewer-page .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-page .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));position:sticky;top:0;color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-page .__content axm-questionnaire-viewer{display:flex;height:auto;max-height:none;min-height:0px;width:100%;max-width:100%;flex:none;flex-direction:column}axm-questionnaire-viewer-page .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-page .__toolbar-meta{color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-page .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}\n"] }]
|
|
8705
8843
|
}], ctorParameters: () => [], propDecorators: { viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });
|
|
8706
8844
|
|
|
8707
8845
|
var questionnaireViewerPage_component = /*#__PURE__*/Object.freeze({
|
|
@@ -8753,6 +8891,13 @@ class AXMQuestionnaireViewerStandalonePageComponent {
|
|
|
8753
8891
|
this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: "timerElapsed" }] : /* istanbul ignore next */ []));
|
|
8754
8892
|
this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: "showProgressBar" }] : /* istanbul ignore next */ []));
|
|
8755
8893
|
this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "answeredQuestionsCount" }] : /* istanbul ignore next */ []));
|
|
8894
|
+
this.questionnaireAttachments = computed(() => {
|
|
8895
|
+
const fromViewer = this.viewerViewModel()?.questionnaireAttachments();
|
|
8896
|
+
if (fromViewer && fromViewer.length > 0) {
|
|
8897
|
+
return fromViewer;
|
|
8898
|
+
}
|
|
8899
|
+
return normalizeQuestionnaireViewerAttachments(this.questionnaire()?.attachments);
|
|
8900
|
+
}, ...(ngDevMode ? [{ debugName: "questionnaireAttachments" }] : /* istanbul ignore next */ []));
|
|
8756
8901
|
this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: "isReadonly" }] : /* istanbul ignore next */ []));
|
|
8757
8902
|
this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfig()?.post?.reviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: "showReviewButton" }] : /* istanbul ignore next */ []));
|
|
8758
8903
|
/** Use answers from review context when returning from review; otherwise use initial answers. */
|
|
@@ -9028,6 +9173,7 @@ class AXMQuestionnaireViewerStandalonePageComponent {
|
|
|
9028
9173
|
<div class="__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden">
|
|
9029
9174
|
<axm-questionnaire-viewer
|
|
9030
9175
|
#viewer
|
|
9176
|
+
[questionnaireId]="questionnaire()?.id"
|
|
9031
9177
|
[structure]="structure()!"
|
|
9032
9178
|
[config]="viewerConfig()"
|
|
9033
9179
|
[initialAnswers]="effectiveInitialAnswers()"
|
|
@@ -9041,10 +9187,15 @@ class AXMQuestionnaireViewerStandalonePageComponent {
|
|
|
9041
9187
|
<ax-footer class="__standalone-footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-px-4 ax-border-t ax-border-surface ax-lightest-surface">
|
|
9042
9188
|
<ax-prefix>
|
|
9043
9189
|
@if (flowStep() === 'questions') {
|
|
9044
|
-
<div class="
|
|
9045
|
-
|
|
9046
|
-
|
|
9047
|
-
|
|
9190
|
+
<div class="ax-flex ax-items-center ax-gap-4 ax-min-w-0">
|
|
9191
|
+
<axm-questionnaire-viewer-questionnaire-attachments-footer
|
|
9192
|
+
[attachments]="questionnaireAttachments()"
|
|
9193
|
+
/>
|
|
9194
|
+
<div class="__footer-progress ax-text-sm ax-font-mono ax-tabular-nums" dir="ltr">
|
|
9195
|
+
@if (showProgressBar()) {
|
|
9196
|
+
{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
|
|
9197
|
+
}
|
|
9198
|
+
</div>
|
|
9048
9199
|
</div>
|
|
9049
9200
|
}
|
|
9050
9201
|
</ax-prefix>
|
|
@@ -9080,7 +9231,7 @@ class AXMQuestionnaireViewerStandalonePageComponent {
|
|
|
9080
9231
|
</ax-footer>
|
|
9081
9232
|
}
|
|
9082
9233
|
</div>
|
|
9083
|
-
`, isInline: true, styles: ["axm-questionnaire-viewer-standalone-page{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__body{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content-area{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));color:rgb(var(--ax-sys-color-on-surface-variant));position:sticky;top:0}axm-questionnaire-viewer-standalone-page .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-standalone-page .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer{display:flex;height:auto;max-height:none;min-height:0px;width:100%;max-width:100%;flex:none;flex-direction:column}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-standalone-page .__toolbar-meta{color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-standalone-page .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXPStopwatchComponent, selector: "axp-stopwatch", inputs: ["mode", "timeLimit", "format", "autoStart", "showControls", "value"], outputs: ["valueChange", "timeUp"] }, { kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXMPreQuestionnaireContentComponent, selector: "axm-pre-questionnaire-content", inputs: ["content"] }, { kind: "component", type: AXMPostQuestionnaireContentComponent, selector: "axm-post-questionnaire-content", inputs: ["mode", "questionsWithAnswers", "reviewContext", "summaryContent", "placeholderValues", "locale", "showQuestionNumbers"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9234
|
+
`, isInline: true, styles: ["axm-questionnaire-viewer-standalone-page{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__body{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content-area{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));color:rgb(var(--ax-sys-color-on-surface-variant));position:sticky;top:0}axm-questionnaire-viewer-standalone-page .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-standalone-page .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer{display:flex;height:auto;max-height:none;min-height:0px;width:100%;max-width:100%;flex:none;flex-direction:column}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-standalone-page .__toolbar-meta{color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-standalone-page .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXPStopwatchComponent, selector: "axp-stopwatch", inputs: ["mode", "timeLimit", "format", "autoStart", "showControls", "value"], outputs: ["valueChange", "timeUp"] }, { kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, selector: "axm-questionnaire-viewer-questionnaire-attachments-footer", inputs: ["attachments"] }, { kind: "component", type: AXMPreQuestionnaireContentComponent, selector: "axm-pre-questionnaire-content", inputs: ["content"] }, { kind: "component", type: AXMPostQuestionnaireContentComponent, selector: "axm-post-questionnaire-content", inputs: ["mode", "questionsWithAnswers", "reviewContext", "summaryContent", "placeholderValues", "locale", "showQuestionNumbers"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9084
9235
|
}
|
|
9085
9236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMQuestionnaireViewerStandalonePageComponent, decorators: [{
|
|
9086
9237
|
type: Component,
|
|
@@ -9148,6 +9299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9148
9299
|
<div class="__content ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-y-auto ax-overflow-x-hidden">
|
|
9149
9300
|
<axm-questionnaire-viewer
|
|
9150
9301
|
#viewer
|
|
9302
|
+
[questionnaireId]="questionnaire()?.id"
|
|
9151
9303
|
[structure]="structure()!"
|
|
9152
9304
|
[config]="viewerConfig()"
|
|
9153
9305
|
[initialAnswers]="effectiveInitialAnswers()"
|
|
@@ -9161,10 +9313,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9161
9313
|
<ax-footer class="__standalone-footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-px-4 ax-border-t ax-border-surface ax-lightest-surface">
|
|
9162
9314
|
<ax-prefix>
|
|
9163
9315
|
@if (flowStep() === 'questions') {
|
|
9164
|
-
<div class="
|
|
9165
|
-
|
|
9166
|
-
|
|
9167
|
-
|
|
9316
|
+
<div class="ax-flex ax-items-center ax-gap-4 ax-min-w-0">
|
|
9317
|
+
<axm-questionnaire-viewer-questionnaire-attachments-footer
|
|
9318
|
+
[attachments]="questionnaireAttachments()"
|
|
9319
|
+
/>
|
|
9320
|
+
<div class="__footer-progress ax-text-sm ax-font-mono ax-tabular-nums" dir="ltr">
|
|
9321
|
+
@if (showProgressBar()) {
|
|
9322
|
+
{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
|
|
9323
|
+
}
|
|
9324
|
+
</div>
|
|
9168
9325
|
</div>
|
|
9169
9326
|
}
|
|
9170
9327
|
</ax-prefix>
|
|
@@ -9208,6 +9365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9208
9365
|
AXPWidgetCoreModule,
|
|
9209
9366
|
AXPStopwatchComponent,
|
|
9210
9367
|
AXMQuestionnaireViewerComponent,
|
|
9368
|
+
AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent,
|
|
9211
9369
|
AXMPreQuestionnaireContentComponent,
|
|
9212
9370
|
AXMPostQuestionnaireContentComponent,
|
|
9213
9371
|
], providers: [AXPWidgetCoreService, AXPContextStore], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-standalone-page' }, styles: ["axm-questionnaire-viewer-standalone-page{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__body{display:flex;min-height:0px;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content-area{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-standalone-page .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));color:rgb(var(--ax-sys-color-on-surface-variant));position:sticky;top:0}axm-questionnaire-viewer-standalone-page .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-standalone-page .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-standalone-page .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer{display:flex;height:auto;max-height:none;min-height:0px;width:100%;max-width:100%;flex:none;flex-direction:column}axm-questionnaire-viewer-standalone-page .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-standalone-page .__toolbar-meta{color:rgb(var(--ax-sys-color-on-surface-variant))}axm-questionnaire-viewer-standalone-page .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}\n"] }]
|
|
@@ -9217,5 +9375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9217
9375
|
* Generated bundle index. Do not edit.
|
|
9218
9376
|
*/
|
|
9219
9377
|
|
|
9220
|
-
export { AXMQuestionnaireViewerService as A,
|
|
9221
|
-
//# sourceMappingURL=acorex-modules-assessment-management-acorex-modules-assessment-management-
|
|
9378
|
+
export { AXMQuestionnaireViewerService as A, DEFAULT_QUESTION_COMMENT_CONFIG as B, DEFAULT_QUESTION_HINT_CONFIG as C, DEFAULT_POST_QUESTIONNAIRE_CONFIG as D, diffQuestionCommentOverride as E, diffQuestionHintOverride as F, findDuplicateOutcomeNames as G, flattenQuestionnaireOutcomeItems as H, getQuestionAnswerCommentStoragePath as I, isQuestionnaireOutcomeDisplayColorHex as J, matchesQuestionnaireOutcomeDisplayRule as K, mergeQuestionCommentConfig as L, mergeQuestionHintForViewer as M, normalizeQuestionCommentConfig as N, normalizeQuestionHintConfig as O, normalizeQuestionHintFromEntityRow as P, QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY as Q, RootConfig as R, normalizeQuestionHintMode as S, normalizeQuestionnaireOutcomeDisplayRules as T, normalizeQuestionnaireOutcomesValue as U, normalizeValidationStrategy$1 as V, normalizeViewMode as W, parseQuestionHintPartialFromRecord as X, parseQuestionnaireOutcomeDisplayColor as Y, readHintFieldsFromRecord as Z, QUESTIONNAIRE_OUTCOMES_PAGE_COMPONENT_KEY as a, AXMQuestionnaireViewerComponent as b, AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent as c, AXMPreQuestionnaireContentComponent as d, AXMPostQuestionnaireContentComponent as e, formatQuestionnairePreviewDialogTitle as f, toDisplaySettings as g, AXMAssessmentManagementEntityProvider as h, AXMAssessmentManagementFeatureDefinitionProvider as i, AXMAssessmentManagementFeatureKeys as j, AXMAssessmentManagementMenuProvider as k, AXMAssessmentManagementModule as l, AXMAssessmentManagementPermissionDefinitionProvider as m, normalizeCompletionMode as n, AXMAssessmentManagementPermissionKeys as o, persistAssessmentSession as p, AXMAssessmentManagementSearchCommandProvider as q, resolveWidgetNodeFromMetaDataDefinitionInterface as r, stripQuestionBankInterfaceMetadata as s, toPrePostConfig as t, AXMQuestionnaireViewerPageComponent as u, AXMQuestionnaireViewerStandalonePageComponent as v, AXPAssessmentManagementMenuKeys as w, DEFAULT_PRE_QUESTIONNAIRE_CONFIG as x, DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY as y, DEFAULT_QUESTIONNAIRE_OUTCOMES as z };
|
|
9379
|
+
//# sourceMappingURL=acorex-modules-assessment-management-acorex-modules-assessment-management-BnfSTevp.mjs.map
|