@acorex-platform/module-assessment-management-client 0.0.57 → 0.0.58
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-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-DxRFMK3k.mjs} +1472 -160
- package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-DxRFMK3k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-CaElbuNh.mjs → acorex-platform-module-assessment-management-client-assessment-voice.commands-DGYCwZ7v.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-CaElbuNh.mjs.map → acorex-platform-module-assessment-management-client-assessment-voice.commands-DGYCwZ7v.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs +1 -11
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-template.mjs +1 -78
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-template.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DYpWu3Vx.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DYpWu3Vx.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-CUctZ-0K.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-CUctZ-0K.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-C2JJw_JJ.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-C2JJw_JJ.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-D3y_rWUI.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-D3y_rWUI.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-CVz5W0fF.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs} +3 -13
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-C01AW5NW.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs} +3 -80
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs +33 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-CMIq-DDl.mjs → acorex-platform-module-assessment-management-client-fill-assessment-session.command-DY_9qPYh.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-CMIq-DDl.mjs.map → acorex-platform-module-assessment-management-client-fill-assessment-session.command-DY_9qPYh.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer-edit.component-BlGBTznW.mjs +112 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer-edit.component-BlGBTznW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-COZcUPEj.mjs → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-CeLpGSGc.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-COZcUPEj.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-CeLpGSGc.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-CvSRpoos.mjs → acorex-platform-module-assessment-management-client-form-template-viewer.service-DoO7ZQmw.mjs} +15 -11
- package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer.service-DoO7ZQmw.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-index-er5gI6QK.mjs +68 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-index-er5gI6QK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-CmR-xFHE.mjs → acorex-platform-module-assessment-management-client-open-form-template.command-Cz23Vkyv.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-CmR-xFHE.mjs.map → acorex-platform-module-assessment-management-client-open-form-template.command-Cz23Vkyv.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-BEzE0620.mjs → acorex-platform-module-assessment-management-client-preview-form-template.command-DDQOvVpt.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-BEzE0620.mjs.map → acorex-platform-module-assessment-management-client-preview-form-template.command-DDQOvVpt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-BGT8qB1_.mjs → acorex-platform-module-assessment-management-client-preview-question.command-D4YlqMUf.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-BGT8qB1_.mjs.map → acorex-platform-module-assessment-management-client-preview-question.command-D4YlqMUf.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-duK7Tjjp.mjs → acorex-platform-module-assessment-management-client-preview-questionnaire.command-BYh-3EP9.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-duK7Tjjp.mjs.map → acorex-platform-module-assessment-management-client-preview-questionnaire.command-BYh-3EP9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B7_G_C5B.mjs → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DARYq7ZJ.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B7_G_C5B.mjs.map → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DARYq7ZJ.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DIktPLmP.mjs +69 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DIktPLmP.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-BAoqjZ7K.mjs +78 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-BAoqjZ7K.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-daQL4OD_.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-O-d2f3fv.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-daQL4OD_.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-O-d2f3fv.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-D0Rkeywu.mjs +26 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-D0Rkeywu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-related-content-viewer-page.component-CI9AlM58.mjs +315 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-related-content-viewer-page.component-CI9AlM58.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-CPeFh1m7.mjs → acorex-platform-module-assessment-management-client-review-assessment-session.command-CHeyD-AC.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-CPeFh1m7.mjs.map → acorex-platform-module-assessment-management-client-review-assessment-session.command-CHeyD-AC.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-DlpkbJCZ.mjs +117 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-DlpkbJCZ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-t67ngnrD.mjs +129 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-t67ngnrD.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-DHgNcZ60.mjs +120 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-DHgNcZ60.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs → acorex-platform-module-assessment-management-client-template-picker.component-DzboI7GV.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs.map → acorex-platform-module-assessment-management-client-template-picker.component-DzboI7GV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs → acorex-platform-module-assessment-management-client-template-widget-edit.component-3DZovs7s.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs.map → acorex-platform-module-assessment-management-client-template-widget-edit.component-3DZovs7s.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-DRFfLOCE.mjs +90 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-DRFfLOCE.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-grid.component-DENxbikr.mjs +77 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-grid.component-DENxbikr.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bcvp2Dx5.mjs +236 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bcvp2Dx5.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-column.component-B3Lx7yuD.mjs +50 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-column.component-B3Lx7yuD.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-CrvzEcSh.mjs +81 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-CrvzEcSh.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-sSky9nAq.mjs +30 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-sSky9nAq.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet.util-T-kPrzoj.mjs +423 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-test-sheet.util-T-kPrzoj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs → acorex-platform-module-assessment-management-client-view-session-answers.command-CxZirYRJ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs.map → acorex-platform-module-assessment-management-client-view-session-answers.command-CxZirYRJ.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client.mjs +1 -1
- package/i18n/en-AU/assessment-management.json +69 -0
- package/i18n/en-AU/form-template-management.json +8 -0
- package/i18n/en-US/assessment-management.json +69 -0
- package/i18n/en-US/form-template-management.json +8 -0
- package/i18n/fa-IR/assessment-management.json +69 -0
- package/i18n/fa-IR/form-template-management.json +8 -0
- package/package.json +3 -3
- package/types/acorex-platform-module-assessment-management-client-contracts.d.ts +23 -3
- package/types/acorex-platform-module-assessment-management-client.d.ts +10 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-CVz5W0fF.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-C01AW5NW.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer.service-CvSRpoos.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DIktPLmP.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/questionnaire-questions-editor-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/questionnaire-questions-editor-edit.component.html"],"sourcesContent":["import { resolveMultiLanguageString, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n toDisplaySettings,\n toPrePostConfig,\n toPrintSettings,\n type AXMAssessmentManagementQuestionnaireEntityModel,\n type QuestionnaireBuilderValue,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { isEqual } from 'lodash';\nimport { AXMQuestionnaireQuestionsBuilderComponent } from '../../questionnaire-builder/questions/builder/questionnaire-questions-builder.component';\nimport { resolvePersistedEntityId } from '../../questionnaire-builder/resolve-persisted-entity-id.util';\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-questionnaire-questions-editor',\n templateUrl: './questionnaire-questions-editor-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMQuestionnaireQuestionsBuilderComponent],\n})\nexport class AXMQuestionnaireQuestionsEditorEditComponent extends AXPValueWidgetComponent<QuestionnaireBuilderValue | null> {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n /** The builder emits a normalized value on init; that emission is not a user edit. */\n private readonly skipInitialEmit = signal(true);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly hostRecord = computed(\n () => this.contextService.snapshot() as Partial<AXMAssessmentManagementQuestionnaireEntityModel>,\n );\n\n protected readonly builderValue = computed<QuestionnaireBuilderValue | null>(() => {\n const value = this.getValue();\n return value != null && typeof value === 'object' ? value : null;\n });\n\n protected isReadonly(): boolean {\n return this.mode === 'view';\n }\n\n protected readonly prePostConfig = computed(() => toPrePostConfig(this.hostRecord()));\n\n protected readonly displaySettings = computed(() => toDisplaySettings(this.hostRecord()));\n\n protected readonly printSettings = computed(() => toPrintSettings(this.hostRecord()));\n\n protected readonly questionnaireEntityId = computed(() =>\n resolvePersistedEntityId(this.hostRecord() as Record<string, unknown>),\n );\n\n protected readonly questionnaireTitle = computed(() => {\n const title = this.hostRecord()['title'] as AXPMultiLanguageString | string | undefined;\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const resolved = resolveMultiLanguageString(title, locale).trim();\n return resolved || undefined;\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onValueChange(value: QuestionnaireBuilderValue): void {\n if (this.skipInitialEmit()) {\n this.skipInitialEmit.set(false);\n return;\n }\n if (isEqual(this.getValue() ?? null, value ?? null)) {\n return;\n }\n this.setValue(value);\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Questions builder bound to the host record field ----- -->\n<axm-questionnaire-questions-builder\n [value]=\"builderValue()\"\n [readonly]=\"isReadonly()\"\n [prePostConfig]=\"prePostConfig()\"\n [displaySettingsInput]=\"displaySettings()\"\n [printSettingsInput]=\"printSettings()\"\n [questionnaireEntityId]=\"questionnaireEntityId()\"\n [questionnaireTitle]=\"questionnaireTitle()\"\n [showHeader]=\"true\"\n (valueChange)=\"onValueChange($event)\"\n>\n</axm-questionnaire-questions-builder>\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';
|
|
2
|
+
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { signal, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
5
|
+
import { isEqual, isPlainObject } from 'lodash-es';
|
|
6
|
+
import { m as AXMQuestionnaireViewerComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-DxRFMK3k.mjs';
|
|
7
|
+
|
|
8
|
+
//#region ----- Component -----
|
|
9
|
+
class AXMQuestionnaireViewerEditComponent extends AXPValueWidgetComponent {
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region ----- Lifecycle -----
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
//#region ----- State Signals -----
|
|
15
|
+
this.structure = signal(null, /* @ts-ignore */
|
|
16
|
+
...(ngDevMode ? [{ debugName: "structure" }] : /* istanbul ignore next */ []));
|
|
17
|
+
this.initialAnswers = signal({}, /* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [{ debugName: "initialAnswers" }] : /* istanbul ignore next */ []));
|
|
19
|
+
this.viewerConfig = signal({ readonly: false }, /* @ts-ignore */
|
|
20
|
+
...(ngDevMode ? [{ debugName: "viewerConfig" }] : /* istanbul ignore next */ []));
|
|
21
|
+
this.userEdited = signal(false, /* @ts-ignore */
|
|
22
|
+
...(ngDevMode ? [{ debugName: "userEdited" }] : /* istanbul ignore next */ []));
|
|
23
|
+
effect(() => {
|
|
24
|
+
const next = parseQuestionnaireStructure(this.options()['structure']);
|
|
25
|
+
const value = this.getValue();
|
|
26
|
+
untracked(() => {
|
|
27
|
+
const structureChanged = !isEqual(next, this.structure());
|
|
28
|
+
if (structureChanged) {
|
|
29
|
+
this.structure.set(next);
|
|
30
|
+
this.userEdited.set(false);
|
|
31
|
+
}
|
|
32
|
+
if (!this.userEdited() && next) {
|
|
33
|
+
const answers = isPlainObject(value) ? { ...value } : {};
|
|
34
|
+
if (!isEqual(answers, this.initialAnswers())) {
|
|
35
|
+
this.initialAnswers.set(answers);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
super.ngOnInit();
|
|
43
|
+
this.viewerConfig.set({ readonly: this.mode === 'view' });
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region ----- Event Handlers -----
|
|
47
|
+
handleAnswers(answers) {
|
|
48
|
+
if (this.mode === 'view') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (isEqual(answers, this.initialAnswers()) || isEqual(answers, this.getValue())) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.userEdited.set(true);
|
|
55
|
+
this.setValue(answers);
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireViewerEditComponent, isStandalone: true, selector: "axm-related-questionnaire-viewer", usesInheritance: true, ngImport: i0, template: "@if (structure(); as structure) {\n <!-- ----- Related questionnaire, answers stored on this record ----- -->\n <axm-questionnaire-viewer\n [structure]=\"structure\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"initialAnswers()\"\n (answersChanged)=\"handleAnswers($event)\"\n ></axm-questionnaire-viewer>\n}\n<!-- ----- Empty state when the related record has no questions ----- -->\n@else {\n <axp-state-message\n icon=\"fa-light fa-list-check\"\n [title]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.title'\"\n [description]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.description'\"\n ></axp-state-message>\n}\n", dependencies: [{ kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerEditComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'axm-related-questionnaire-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXMQuestionnaireViewerComponent, AXPStateMessageComponent], template: "@if (structure(); as structure) {\n <!-- ----- Related questionnaire, answers stored on this record ----- -->\n <axm-questionnaire-viewer\n [structure]=\"structure\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"initialAnswers()\"\n (answersChanged)=\"handleAnswers($event)\"\n ></axm-questionnaire-viewer>\n}\n<!-- ----- Empty state when the related record has no questions ----- -->\n@else {\n <axp-state-message\n icon=\"fa-light fa-list-check\"\n [title]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.title'\"\n [description]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.description'\"\n ></axp-state-message>\n}\n" }]
|
|
63
|
+
}], ctorParameters: () => [] });
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region ----- Helpers -----
|
|
66
|
+
function parseQuestionnaireStructure(value) {
|
|
67
|
+
if (!value || typeof value !== 'object') {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const sections = value.sections;
|
|
71
|
+
if (!Array.isArray(sections) || sections.length === 0) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AXMQuestionnaireViewerEditComponent };
|
|
78
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-BAoqjZ7K.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-BAoqjZ7K.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/questionnaire-viewer-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/questionnaire-viewer-edit.component.html"],"sourcesContent":["import { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { QuestionnaireBuilderValue } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { ChangeDetectionStrategy, Component, effect, OnInit, signal, untracked } from '@angular/core';\nimport { isEqual, isPlainObject } from 'lodash-es';\nimport { AXMQuestionnaireViewerComponent } from '../../questionnaire-viewer/components/viewer-container';\nimport type { QuestionnaireViewerConfig } from '../../questionnaire-viewer/questionnaire-viewer.types';\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-related-questionnaire-viewer',\n templateUrl: './questionnaire-viewer-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMQuestionnaireViewerComponent, AXPStateMessageComponent],\n})\nexport class AXMQuestionnaireViewerEditComponent\n extends AXPValueWidgetComponent<Record<string, unknown> | null>\n implements OnInit\n{\n //#region ----- State Signals -----\n\n protected readonly structure = signal<QuestionnaireBuilderValue | null>(null);\n protected readonly initialAnswers = signal<Record<string, any>>({});\n protected readonly viewerConfig = signal<QuestionnaireViewerConfig>({ readonly: false });\n private readonly userEdited = signal(false);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const next = parseQuestionnaireStructure(this.options()['structure']);\n const value = this.getValue();\n untracked(() => {\n const structureChanged = !isEqual(next, this.structure());\n if (structureChanged) {\n this.structure.set(next);\n this.userEdited.set(false);\n }\n if (!this.userEdited() && next) {\n const answers = isPlainObject(value) ? { ...value } : {};\n if (!isEqual(answers, this.initialAnswers())) {\n this.initialAnswers.set(answers);\n }\n }\n });\n });\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.viewerConfig.set({ readonly: this.mode === 'view' });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected handleAnswers(answers: Record<string, any>): void {\n if (this.mode === 'view') {\n return;\n }\n if (isEqual(answers, this.initialAnswers()) || isEqual(answers, this.getValue())) {\n return;\n }\n this.userEdited.set(true);\n this.setValue(answers);\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction parseQuestionnaireStructure(value: unknown): QuestionnaireBuilderValue | null {\n if (!value || typeof value !== 'object') {\n return null;\n }\n const sections = (value as QuestionnaireBuilderValue).sections;\n if (!Array.isArray(sections) || sections.length === 0) {\n return null;\n }\n return value as QuestionnaireBuilderValue;\n}\n\n//#endregion\n","@if (structure(); as structure) {\n <!-- ----- Related questionnaire, answers stored on this record ----- -->\n <axm-questionnaire-viewer\n [structure]=\"structure\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"initialAnswers()\"\n (answersChanged)=\"handleAnswers($event)\"\n ></axm-questionnaire-viewer>\n}\n<!-- ----- Empty state when the related record has no questions ----- -->\n@else {\n <axp-state-message\n icon=\"fa-light fa-list-check\"\n [title]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.title'\"\n [description]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.description'\"\n ></axp-state-message>\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
2
2
|
import { AXAlertModule } from '@acorex/components/alert';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i3$1 from '@acorex/core/translation';
|
|
4
4
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
5
5
|
import * as i1 from '@acorex/components/button';
|
|
6
6
|
import { AXButtonModule } from '@acorex/components/button';
|
|
@@ -15,7 +15,7 @@ import * as i0 from '@angular/core';
|
|
|
15
15
|
import { inject, input, computed, signal, viewChild, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
16
16
|
import { first } from 'lodash';
|
|
17
17
|
import { RootConfig, resolvePrintSettings, AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY } from '@acorex-platform/module-assessment-management-client/contracts';
|
|
18
|
-
import {
|
|
18
|
+
import { h as AXMQuestionnaireViewerService, k as AXMQuestionnairePrintSnapshotService, l as AXMQuestionnairePrintHostComponent, p as persistAssessmentSession, m as AXMQuestionnaireViewerComponent, n as AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, o as AXMPreQuestionnaireContentComponent, q as AXMPostQuestionnaireContentComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-DxRFMK3k.mjs';
|
|
19
19
|
|
|
20
20
|
//#region ---- Imports ----
|
|
21
21
|
//#endregion
|
|
@@ -588,7 +588,7 @@ class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {
|
|
|
588
588
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
589
589
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireViewerPopupComponent, isStandalone: true, selector: "axm-questionnaire-viewer-popup", inputs: { structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: true, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", 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 }, submitHandler: { classPropertyName: "submitHandler", publicName: "submitHandler", isSignal: true, isRequired: false, transformFunction: null }, saveHandler: { classPropertyName: "saveHandler", publicName: "saveHandler", isSignal: true, isRequired: false, transformFunction: null }, assessmentFillContext: { classPropertyName: "assessmentFillContext", publicName: "assessmentFillContext", isSignal: true, isRequired: false, transformFunction: null }, questionnaireId: { classPropertyName: "questionnaireId", publicName: "questionnaireId", isSignal: true, isRequired: false, transformFunction: null }, printTemplateId: { classPropertyName: "printTemplateId", publicName: "printTemplateId", isSignal: true, isRequired: false, transformFunction: null }, outcomeRules: { classPropertyName: "outcomeRules", publicName: "outcomeRules", isSignal: true, isRequired: false, transformFunction: null }, storedOutcomeResults: { classPropertyName: "storedOutcomeResults", publicName: "storedOutcomeResults", isSignal: true, isRequired: false, transformFunction: null }, printTitle: { classPropertyName: "printTitle", publicName: "printTitle", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }, { propertyName: "printHost", first: true, predicate: AXMQuestionnairePrintHostComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Main content area: flow-step driven body -->\n<div class=\"__content-area flex flex-1 min-h-0 flex-col\"\n [class.overflow-hidden]=\"flowStep() === 'questions'\" [class.overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"$safeNavigationMigration(prePostConfigValue()?.pre?.content)\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit outcome results -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\" [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]=\"$safeNavigationMigration(prePostConfigValue()?.post?.summaryContent)\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content (answers snapshot before submit) -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n [showQuestionNumbers]=\"configValue()?.showQuestionNumbers ?? true\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden off-screen while in review mode) -->\n <div class=\"__questions flex flex-col flex-1 min-h-0 overflow-hidden\"\n [class.invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.size-0]=\"flowStep() === 'review'\"\n [class.overflow-hidden]=\"flowStep() === 'review'\">\n <!-- @if (showTimer()) {\n <div class=\"__header flex-shrink-0 p-4 border-b border-surface\">\n <div class=\"flex justify-between items-center\">\n <div class=\"__toolbar-meta flex items-center gap-4 text-sm\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n } -->\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content flex flex-1 min-h-0 flex-col overflow-y-auto overflow-x-hidden\">\n <axm-questionnaire-viewer #viewer [questionnaireId]=\"questionnaireIdValue()\" [structure]=\"structureValue()\"\n [config]=\"configValue()\" [initialAnswers]=\"effectiveInitialAnswers()\"></axm-questionnaire-viewer>\n </div>\n </div>\n }\n</div>\n\n<!-- Popup footer: flow action buttons -->\n@if (showFooter()) {\n<ax-footer class=\"__popup-footer flex-shrink-0 border-t px-4 py-3\">\n <!-- Footer prefix: attachments and progress -->\n <ax-prefix>\n <div class=\"flex items-center gap-4 min-w-0\">\n @if (flowStep() === 'questions') {\n <axm-questionnaire-viewer-questionnaire-attachments-footer [attachments]=\"questionnaireAttachments()\" />\n <div class=\"__footer-progress text-sm font-mono tabular-nums\" dir=\"ltr\">\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n </div>\n }\n @if (showPreviewPdfButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:sessions.actions.preview-pdf.title' | translate | async\"\n [disabled]=\"isPreviewingPdf()\" (onClick)=\"handlePreviewPdfClick()\"></ax-button>\n }\n </div>\n </ax-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <ax-suffix>\n <!-- Pre-questionnaire welcome step -->\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 <!-- Draft save (fill mode with save-and-continue) -->\n @if (showSaveButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.title' | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly()\" (onClick)=\"handleSaveClick()\"></ax-button>\n }\n <!-- Section / page navigation (paginated view modes) -->\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 <!-- Last step: optional review before submit -->\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]=\"isReadonly() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n <!-- Last step: submit when review is disabled -->\n @if (isLastStep() && !showReviewButton() && showSubmitButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n <!-- Readonly session review: jump to stored outcome results -->\n @if (showViewResultsButton()) {\n <ax-button look=\"outline\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.results' | translate | async\"\n (onClick)=\"handleViewResultsClick()\">\n <ax-icon class=\"fa-light fa-chart-simple\"></ax-icon>\n </ax-button>\n }\n <!-- Manager review decision (readonly workflow review) -->\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </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]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n <!-- Readonly session review: return to answers -->\n @if (isReadonly() && hasStoredOutcomeResults()) {\n <ax-button look=\"outline\" [color]=\"'primary'\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.answers' | translate | async\"\n (onClick)=\"flowStep.set('questions')\">\n <ax-icon class=\"fa-light fa-clipboard-list-check\"></ax-icon>\n </ax-button>\n }\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </ax-button>\n } @else if (prePostConfigValue()?.post?.summaryEnabled && !isReadonly()) {\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 </ax-suffix>\n</ax-footer>\n}\n\n<axm-questionnaire-print-host\n [structure]=\"structureValue()\"\n [questionnaireId]=\"questionnaireIdValue()\"\n [answers]=\"printAnswers()\"\n [prePostConfig]=\"prePostConfigValue()\"\n [placeholderValues]=\"storedOutcomeResultsValue() ?? submitResult()\"\n/>", styles: ["@layer properties;axm-questionnaire-viewer-popup{display:flex;height:100%;max-height:90vh;min-height:0px;width:100%;flex:1;flex-direction:column;overflow:hidden}@media(width>=64rem){axm-questionnaire-viewer-popup{max-height:75vh}}axm-questionnaire-viewer-popup .__content-area{min-height:0px}axm-questionnaire-viewer-popup .__questions{min-height:0px;overflow:hidden}axm-questionnaire-viewer-popup .__header{z-index:20;display:flex;flex-shrink:0;flex-direction:column;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface-variant));position:sticky;top:0}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4);padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 4);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-neutral-600, oklch(43.9% 0 none))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1.5)}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-600))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1;overflow:hidden}axm-questionnaire-viewer-popup .__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-popup .__content axm-questionnaire-viewer .__questionnaire-container{min-height:0px;flex:none;overflow:visible}axm-questionnaire-viewer-popup .__popup-footer{position:sticky;bottom:0;z-index:20;border-top-style:var(--tw-border-style);border-top-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-color:rgba(var(--ax-sys-color-surface))}axm-questionnaire-viewer-popup .__toolbar-meta,axm-questionnaire-viewer-popup .__footer-progress{color:rgb(var(--ax-sys-color-on-surface-variant))}axp-popup-content:has(axm-questionnaire-viewer-popup){display:flex;min-height:0px;flex-direction:column;overflow:hidden}axp-popup-content:has(axm-questionnaire-viewer-popup) axm-questionnaire-viewer-popup{min-height:0px;flex:1}axp-layout-container#axp-popup-layout:has(axm-questionnaire-viewer-popup){min-height:0px;overflow:hidden}axp-layout-container#axp-popup-layout:has(axm-questionnaire-viewer-popup) axp-page-content{min-height:0px;flex:1;overflow:hidden}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXAlertModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "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: "component", type:
|
|
590
590
|
//AXPStopwatchComponent,
|
|
591
|
-
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: "component", type: AXMQuestionnairePrintHostComponent, selector: "axm-questionnaire-print-host", inputs: ["structure", "questionnaireId", "answers", "prePostConfig", "placeholderValues", "options"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type:
|
|
591
|
+
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: "component", type: AXMQuestionnairePrintHostComponent, selector: "axm-questionnaire-print-host", inputs: ["structure", "questionnaireId", "answers", "prePostConfig", "placeholderValues", "options"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
592
592
|
}
|
|
593
593
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, decorators: [{
|
|
594
594
|
type: Component,
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
608
608
|
}], ctorParameters: () => [], propDecorators: { structure: [{ type: i0.Input, args: [{ isSignal: true, alias: "structure", required: true }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "prePostConfig", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAnswers", required: false }] }], submitHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitHandler", required: false }] }], saveHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "saveHandler", required: false }] }], assessmentFillContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "assessmentFillContext", required: false }] }], questionnaireId: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireId", required: false }] }], printTemplateId: [{ type: i0.Input, args: [{ isSignal: true, alias: "printTemplateId", required: false }] }], outcomeRules: [{ type: i0.Input, args: [{ isSignal: true, alias: "outcomeRules", required: false }] }], storedOutcomeResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "storedOutcomeResults", required: false }] }], printTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "printTitle", required: false }] }], viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], printHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMQuestionnairePrintHostComponent), { isSignal: true }] }] } });
|
|
609
609
|
|
|
610
610
|
export { AXMQuestionnaireViewerPopupComponent };
|
|
611
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-
|
|
611
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-O-d2f3fv.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-daQL4OD_.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXAlertModule } from '@acorex/components/alert';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { first } from 'lodash';\nimport {\n QuestionnaireBuilderValue,\n resolvePrintSettings,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n QuestionnaireAssessmentFillContext,\n QuestionnaireViewerConfig,\n} from '../../questionnaire-viewer.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY,\n RootConfig,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { persistAssessmentSession } from '../../utils/assessment-session-persistence.util';\nimport type { PrePostConfig, QuestionnaireOutcomeItem } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { SummaryPlaceholderValues } from '../../utils/pre-post-content.utils';\nimport { AXMQuestionnaireViewerService } from '../../questionnaire-viewer.service';\nimport { AXMQuestionnairePrintSnapshotService } from '../../print/questionnaire-print-snapshot.service';\nimport { AXMQuestionnairePrintHostComponent } from '../../print/questionnaire-print-host.component';\nimport { AXMQuestionnaireViewerComponent } from '../../components/viewer-container';\nimport { AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent } from '../../components/attachments-footer';\nimport type { QuestionnaireViewerAttachment } from '../../questionnaire-viewer.types';\nimport { AXMPreQuestionnaireContentComponent } from '../../components/pre-questionnaire-content';\nimport {\n AXMPostQuestionnaireContentComponent,\n type QuestionWithAnswer,\n} from '../../components/post-questionnaire-content';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype FlowStep = 'pre' | 'questions' | 'review' | 'summary' | 'results';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-questionnaire-viewer-popup',\n templateUrl: './questionnaire-viewer-popup.component.html',\n styleUrl: './questionnaire-viewer-popup.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n imports: [\n CommonModule,\n AXTranslationModule,\n AXAlertModule,\n AXButtonModule,\n AXDecoratorModule,\n //AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n AXMQuestionnairePrintHostComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly entityService = inject(AXPEntityService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly printSnapshot = inject(AXMQuestionnairePrintSnapshotService);\n private readonly commandService = inject(AXPCommandService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n structure = input.required<QuestionnaireBuilderValue>();\n prePostConfig = input<PrePostConfig | null>(null);\n config = input<QuestionnaireViewerConfig | undefined>(undefined);\n initialAnswers = input<Record<string, any>>({});\n submitHandler = input<\n ((answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null | void>) | undefined\n >();\n saveHandler = input<((answers: Record<string, any>) => Promise<void>) | undefined>();\n assessmentFillContext = input<QuestionnaireAssessmentFillContext | undefined>(undefined);\n questionnaireId = input<string | undefined>(undefined);\n printTemplateId = input<string | undefined>(undefined);\n outcomeRules = input<QuestionnaireOutcomeItem[] | undefined>(undefined);\n storedOutcomeResults = input<SummaryPlaceholderValues | null>(null);\n printTitle = input<string | undefined>(undefined);\n\n /** Safe accessors: popup framework may overwrite inputs with plain values. */\n protected readonly prePostConfigValue = computed(() => this.safeInputValue(this.prePostConfig));\n protected readonly structureValue = computed(() => this.safeInputValue(this.structure));\n protected readonly configValue = computed(() => this.safeInputValue(this.config));\n protected readonly initialAnswersValue = computed(() => this.safeInputValue(this.initialAnswers));\n protected readonly questionnaireIdValue = computed(() => this.safeInputValue(this.questionnaireId));\n protected readonly printTemplateIdValue = computed(() => this.safeInputValue(this.printTemplateId));\n protected readonly outcomeRulesValue = computed(() => this.safeInputValue(this.outcomeRules));\n protected readonly storedOutcomeResultsValue = computed(() => this.safeInputValue(this.storedOutcomeResults));\n protected readonly printTitleValue = computed(() => this.safeInputValue(this.printTitle));\n\n /** Readonly entry step from viewer config (popup assigns plain object on `config`). */\n protected readonly readonlyInitialFlowStep = computed((): 'questions' | 'results' => {\n const step = this.configValue()?.initialFlowStep;\n return step === 'results' ? 'results' : 'questions';\n });\n protected readonly assessmentFillContextValue = computed((): QuestionnaireAssessmentFillContext | null => {\n const raw = this.safeInputValue(this.assessmentFillContext);\n if (raw && typeof raw === 'object' && typeof (raw as QuestionnaireAssessmentFillContext).caseId === 'string') {\n return raw as QuestionnaireAssessmentFillContext;\n }\n return null;\n });\n\n protected readonly submitHandlerValue = computed(() => {\n const handler = this.safeInputValue(this.submitHandler);\n if (typeof handler === 'function') return handler;\n if (this.assessmentFillContextValue()) {\n return (answers: Record<string, unknown>) => this.persistAssessmentAnswers(answers, true);\n }\n return this.getDefaultSubmitHandler();\n });\n\n protected readonly explicitSaveHandler = computed(() => {\n const handler = this.safeInputValue(this.saveHandler);\n return typeof handler === 'function' ? handler : undefined;\n });\n\n protected readonly isReadonly = computed(() => this.configValue()?.readonly === true);\n protected readonly isPreviewMode = computed(() => this.configValue()?.previewMode === true);\n protected readonly isReviewDecisionMode = computed(() => this.configValue()?.reviewDecisionMode === true);\n protected readonly completionMode = computed(() => {\n const fromConfig = this.configValue()?.completionMode;\n if (fromConfig) {\n return fromConfig;\n }\n return this.structureValue()?.displaySettings?.completionMode ?? 'submit-only';\n });\n protected readonly showSaveButton = computed(() => {\n if (this.isReadonly() || this.completionMode() !== 'save-and-continue') {\n return false;\n }\n return !!this.assessmentFillContextValue() || !!this.explicitSaveHandler();\n });\n protected readonly showSubmitButton = computed(() => !this.isReadonly());\n\n /** Submit on questions/review; \"Finish preview\" when `previewMode` is enabled. */\n protected readonly primarySubmitActionLabel = computed(() =>\n this.isPreviewMode()\n ? '@assessment-management:questionnaires.components.questionnaire-viewer.preview.finish.title'\n : '@general:actions.submit.title',\n );\n\n /** Session row loaded for fill persistence (popup cannot use command closures). */\n protected readonly existingSession = signal<AXMAssessmentManagementAssessmentSessionEntityModel | null>(null);\n protected readonly activeSessionId = signal<string | null>(null);\n\n /** Use answers from review context when returning from review; otherwise use initial input. */\n protected readonly effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx) return this.initialAnswersValue();\n return (ctx as { answers?: Record<string, any> }).answers ?? ctx;\n });\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n /** Fallback when submitHandler is not passed (e.g. popup framework does not pass functions). */\n private getDefaultSubmitHandler(): (answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null> {\n return async (answers: Record<string, any>) => {\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId: this.questionnaireIdValue(),\n outcomeRules: this.outcomeRulesValue(),\n elapsedSeconds: this.timerElapsed(),\n });\n };\n }\n\n /**\n * First step after submit: outcomes (if enabled), else summary (if enabled), else close. Summary is always last when both are on.\n */\n protected resolvePostSubmitFirstStep(summary: SummaryPlaceholderValues | null): 'summary' | 'results' | null {\n if (!summary) return null;\n const cfg = this.prePostConfigValue();\n if (cfg?.post.showOutcomeResults === true) return 'results';\n if (cfg?.post.summaryEnabled === true) return 'summary';\n return null;\n }\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly flowStep = signal<FlowStep>('questions');\n protected readonly initialFlowApplied = signal(false);\n protected readonly reviewSnapshot = signal<QuestionWithAnswer[]>([]);\n protected readonly reviewContext = signal<Record<string, any> | null>(null);\n protected readonly submitResult = signal<SummaryPlaceholderValues | null>(null);\n protected readonly lastSubmittedAnswers = signal<Record<string, any>>({});\n protected readonly lastSubmittedQuestions = signal<Array<{ name: string; title: string; answer: any }>>([]);\n protected readonly isSubmitting = signal(false);\n protected readonly canNavigatePrevious = signal(false);\n protected readonly canNavigateNext = signal(false);\n protected readonly showNavigationButtons = signal(false);\n protected readonly isLastStep = signal(false);\n protected readonly areAllRequiredQuestionsAnswered = signal(false);\n protected readonly isPreviewingPdf = signal(false);\n\n //#endregion\n\n //#region ---- View References ----\n\n protected readonly viewer = viewChild<AXMQuestionnaireViewerComponent>('viewer');\n protected readonly printHost = viewChild(AXMQuestionnairePrintHostComponent);\n protected readonly printAnswers = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly viewerViewModel = computed(() => this.viewer()?.viewmodel);\n protected readonly totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0);\n protected readonly showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false);\n protected readonly timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit());\n protected readonly timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0);\n protected readonly answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0);\n protected readonly questionnaireAttachments = computed(\n (): QuestionnaireViewerAttachment[] => this.viewerViewModel()?.questionnaireAttachments() ?? [],\n );\n\n protected readonly showReviewButton = computed(\n () => this.isLastStep() && (this.prePostConfigValue()?.post?.reviewEnabled ?? false) && this.flowStep() === 'questions'\n );\n\n /** True when readonly view has stored outcome results to display. */\n protected readonly hasStoredOutcomeResults = computed(() => {\n const result = this.storedOutcomeResultsValue() ?? this.submitResult();\n if (!result) {\n return false;\n }\n if ((result.outcomeSections?.length ?? 0) > 0) {\n return true;\n }\n return Object.keys(result.outcomes ?? {}).length > 0;\n });\n\n /** Results navigation on any questions step (readonly session review only). */\n protected readonly showViewResultsButton = computed(\n () => this.isReadonly() && this.flowStep() === 'questions' && this.hasStoredOutcomeResults(),\n );\n\n /** Sign off / Reject on readonly manager review (questions or outcome results step). */\n protected readonly showReviewDecisionButtons = computed(\n () =>\n this.isReviewDecisionMode() &&\n this.isReadonly() &&\n (this.flowStep() === 'questions' || this.flowStep() === 'results'),\n );\n\n protected readonly showFooter = computed(() =>\n ['pre', 'questions', 'review', 'summary', 'results'].includes(this.flowStep())\n );\n\n /** Author preview only. Workflow fill and review open the same popup without `previewMode`. */\n protected readonly showPreviewPdfButton = computed(\n () =>\n this.isPreviewMode() &&\n (this.flowStep() === 'questions' || this.flowStep() === 'review'),\n );\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const cfg = this.prePostConfigValue();\n const initial = this.readonlyInitialFlowStep();\n const stored = this.storedOutcomeResultsValue();\n\n if (stored) {\n this.submitResult.set(stored);\n }\n\n if (this.initialFlowApplied()) {\n return;\n }\n\n if (initial === 'results') {\n if (!stored) {\n return;\n }\n this.flowStep.set('results');\n this.initialFlowApplied.set(true);\n return;\n }\n\n this.flowStep.set(cfg?.pre.enabled === true ? 'pre' : 'questions');\n this.initialFlowApplied.set(true);\n });\n effect(() => {\n const ctx = this.assessmentFillContextValue();\n const sessionId = ctx?.sessionId;\n if (sessionId) {\n this.activeSessionId.set(sessionId);\n void this.loadExistingSession(sessionId);\n }\n });\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Assessment persistence ----\n\n private async loadExistingSession(sessionId: string): Promise<void> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n this.existingSession.set(fromQuery);\n return;\n }\n\n const session = await sessionAccessor.byKey(sessionId);\n if (session) {\n this.existingSession.set(session);\n }\n }\n\n private async persistAssessmentAnswers(\n answers: Record<string, unknown>,\n finalize: boolean,\n ): Promise<SummaryPlaceholderValues | null> {\n const ctx = this.assessmentFillContextValue();\n const questionnaireId = this.questionnaireIdValue();\n if (!ctx || !questionnaireId) {\n return null;\n }\n\n const vm = this.viewerViewModel();\n const progressMetrics =\n vm != null\n ? {\n answeredQuestionsCount: vm.answeredQuestionsCount(),\n progressPercentage: vm.progressPercentage(),\n }\n : undefined;\n\n const result = await persistAssessmentSession({\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n caseId: ctx.caseId,\n sessionId: this.activeSessionId() ?? ctx.sessionId ?? null,\n existingSession: this.existingSession(),\n responderId: ctx.responderId,\n role: ctx.role,\n structure: this.structureValue(),\n questionnaireId,\n answers,\n finalize,\n progressMetrics,\n timeSpentSeconds: vm?.timerElapsed(),\n });\n this.activeSessionId.set(result.sessionId);\n await this.loadExistingSession(result.sessionId);\n if (finalize) {\n this.schedulePrintSnapshot(result.sessionId);\n }\n if (!finalize) {\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.form.saved.success.title'),\n content: await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.success',\n ),\n });\n return null;\n }\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId,\n elapsedSeconds: this.timerElapsed(),\n });\n }\n\n private schedulePrintSnapshot(sessionId: string): void {\n this.printAnswers.set(this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {});\n this.printSnapshot.scheduleStore({\n entityService: this.entityService,\n sessionId,\n title: this.printTitleValue()?.trim() || undefined,\n host: this.printHost(),\n answers: this.printAnswers(),\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected async handlePreviewPdfClick(): Promise<void> {\n if (this.isPreviewingPdf()) {\n return;\n }\n this.isPreviewingPdf.set(true);\n const previewWindow = typeof window !== 'undefined' ? window.open('about:blank', '_blank') : null;\n if (previewWindow) {\n try {\n previewWindow.document.title = 'Preview PDF';\n previewWindow.document.body.innerHTML =\n '<p style=\"font-family:sans-serif;padding:24px;color:#64748b\">Generating PDF…</p>';\n } catch {\n // about:blank can be briefly cross-origin in some browsers\n }\n }\n // Keep this tab visible so print widgets can paint and timers are not throttled.\n window.focus();\n try {\n const answers = this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {};\n this.printAnswers.set(answers);\n const title = this.printTitleValue()?.trim() || 'Questionnaire';\n const printHtmlGzip = await this.printSnapshot.captureHtmlGzipFromHost(this.printHost(), title, answers);\n if (!printHtmlGzip) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n ),\n });\n return;\n }\n const print = resolvePrintSettings(this.structureValue()?.printSettings);\n const fill = this.assessmentFillContextValue();\n const result = await this.commandService.execute(AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY, {\n printHtmlGzip,\n title,\n locale: this.translationService.getActiveLang?.() ?? 'en-US',\n paperSize: print.paperSize,\n orientation: print.orientation,\n watermark: print.watermark,\n sessionId: this.activeSessionId() ?? fill?.sessionId,\n caseId: fill?.caseId,\n questionnaireId: this.questionnaireIdValue(),\n printTemplateId: this.printTemplateIdValue(),\n previewWindow,\n });\n if (result?.success === false) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title:\n (typeof result.message?.text === 'string' && result.message.text.trim()) ||\n (await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n )),\n });\n }\n } catch (error: unknown) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: error instanceof Error ? error.message : 'Failed to preview assessment session PDF.',\n });\n } finally {\n this.isPreviewingPdf.set(false);\n }\n }\n\n protected handleReviewClick(): void {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(\n items.map((q) => ({\n name: q.name,\n title: q.title,\n answer: q.answer,\n question: q.question,\n sectionName: q.sectionName,\n sectionOrder: q.sectionOrder,\n sectionTitle: q.sectionTitle,\n sectionDescription: q.sectionDescription,\n })),\n );\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n\n protected async handleSaveClick(): Promise<void> {\n const viewer = this.viewer();\n if (!viewer || !this.showSaveButton()) {\n return;\n }\n this.isSubmitting.set(true);\n try {\n const result = viewer.saveDraft();\n if (result.success && result.answers) {\n const explicit = this.explicitSaveHandler();\n if (explicit) {\n await explicit(result.answers);\n } else {\n await this.persistAssessmentAnswers(result.answers, false);\n }\n this.close({\n answers: result.answers,\n questions: viewer.getQuestionsWithAnswers(),\n submitted: false,\n saved: true,\n });\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handleReviewSubmit(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handlePreviousClick(): Promise<void> {\n await this.viewer()?.navigatePrevious();\n }\n\n protected async handleNextClick(): Promise<void> {\n await this.viewer()?.navigateNext();\n }\n\n protected async handleSubmitClick(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected handleViewResultsClick(): void {\n const stored = this.storedOutcomeResultsValue();\n if (stored) {\n this.submitResult.set(stored);\n }\n this.flowStep.set('results');\n }\n\n protected handleDone(): void {\n if (this.isReadonly() && !this.isReviewDecisionMode()) {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n });\n return;\n }\n\n const answers = this.lastSubmittedAnswers();\n const questions = this.lastSubmittedQuestions();\n this.close({ answers, questions, submitted: true });\n }\n\n protected handleReviewSignOff(): void {\n this.closeWithReviewDecision('signed-off');\n }\n\n protected handleReviewReject(): void {\n this.closeWithReviewDecision('rejected');\n }\n\n private closeWithReviewDecision(decision: 'signed-off' | 'rejected'): void {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n decision,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- Main content area: flow-step driven body -->\n<div class=\"__content-area flex flex-1 min-h-0 flex-col\"\n [class.overflow-hidden]=\"flowStep() === 'questions'\" [class.overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"$safeNavigationMigration(prePostConfigValue()?.pre?.content)\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit outcome results -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\" [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]=\"$safeNavigationMigration(prePostConfigValue()?.post?.summaryContent)\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content (answers snapshot before submit) -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n [showQuestionNumbers]=\"configValue()?.showQuestionNumbers ?? true\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden off-screen while in review mode) -->\n <div class=\"__questions flex flex-col flex-1 min-h-0 overflow-hidden\"\n [class.invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.size-0]=\"flowStep() === 'review'\"\n [class.overflow-hidden]=\"flowStep() === 'review'\">\n <!-- @if (showTimer()) {\n <div class=\"__header flex-shrink-0 p-4 border-b border-surface\">\n <div class=\"flex justify-between items-center\">\n <div class=\"__toolbar-meta flex items-center gap-4 text-sm\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n } -->\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content flex flex-1 min-h-0 flex-col overflow-y-auto overflow-x-hidden\">\n <axm-questionnaire-viewer #viewer [questionnaireId]=\"questionnaireIdValue()\" [structure]=\"structureValue()\"\n [config]=\"configValue()\" [initialAnswers]=\"effectiveInitialAnswers()\"></axm-questionnaire-viewer>\n </div>\n </div>\n }\n</div>\n\n<!-- Popup footer: flow action buttons -->\n@if (showFooter()) {\n<ax-footer class=\"__popup-footer flex-shrink-0 border-t px-4 py-3\">\n <!-- Footer prefix: attachments and progress -->\n <ax-prefix>\n <div class=\"flex items-center gap-4 min-w-0\">\n @if (flowStep() === 'questions') {\n <axm-questionnaire-viewer-questionnaire-attachments-footer [attachments]=\"questionnaireAttachments()\" />\n <div class=\"__footer-progress text-sm font-mono tabular-nums\" dir=\"ltr\">\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n </div>\n }\n @if (showPreviewPdfButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:sessions.actions.preview-pdf.title' | translate | async\"\n [disabled]=\"isPreviewingPdf()\" (onClick)=\"handlePreviewPdfClick()\"></ax-button>\n }\n </div>\n </ax-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <ax-suffix>\n <!-- Pre-questionnaire welcome step -->\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 <!-- Draft save (fill mode with save-and-continue) -->\n @if (showSaveButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.title' | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly()\" (onClick)=\"handleSaveClick()\"></ax-button>\n }\n <!-- Section / page navigation (paginated view modes) -->\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 <!-- Last step: optional review before submit -->\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]=\"isReadonly() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n <!-- Last step: submit when review is disabled -->\n @if (isLastStep() && !showReviewButton() && showSubmitButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n <!-- Readonly session review: jump to stored outcome results -->\n @if (showViewResultsButton()) {\n <ax-button look=\"outline\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.results' | translate | async\"\n (onClick)=\"handleViewResultsClick()\">\n <ax-icon class=\"fa-light fa-chart-simple\"></ax-icon>\n </ax-button>\n }\n <!-- Manager review decision (readonly workflow review) -->\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </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]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n <!-- Readonly session review: return to answers -->\n @if (isReadonly() && hasStoredOutcomeResults()) {\n <ax-button look=\"outline\" [color]=\"'primary'\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.answers' | translate | async\"\n (onClick)=\"flowStep.set('questions')\">\n <ax-icon class=\"fa-light fa-clipboard-list-check\"></ax-icon>\n </ax-button>\n }\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </ax-button>\n } @else if (prePostConfigValue()?.post?.summaryEnabled && !isReadonly()) {\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 </ax-suffix>\n</ax-footer>\n}\n\n<axm-questionnaire-print-host\n [structure]=\"structureValue()\"\n [questionnaireId]=\"questionnaireIdValue()\"\n [answers]=\"printAnswers()\"\n [prePostConfig]=\"prePostConfigValue()\"\n [placeholderValues]=\"storedOutcomeResultsValue() ?? submitResult()\"\n/>"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-O-d2f3fv.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXAlertModule } from '@acorex/components/alert';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { first } from 'lodash';\nimport {\n QuestionnaireBuilderValue,\n resolvePrintSettings,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n QuestionnaireAssessmentFillContext,\n QuestionnaireViewerConfig,\n} from '../../questionnaire-viewer.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY,\n RootConfig,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { persistAssessmentSession } from '../../utils/assessment-session-persistence.util';\nimport type { PrePostConfig, QuestionnaireOutcomeItem } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { SummaryPlaceholderValues } from '../../utils/pre-post-content.utils';\nimport { AXMQuestionnaireViewerService } from '../../questionnaire-viewer.service';\nimport { AXMQuestionnairePrintSnapshotService } from '../../print/questionnaire-print-snapshot.service';\nimport { AXMQuestionnairePrintHostComponent } from '../../print/questionnaire-print-host.component';\nimport { AXMQuestionnaireViewerComponent } from '../../components/viewer-container';\nimport { AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent } from '../../components/attachments-footer';\nimport type { QuestionnaireViewerAttachment } from '../../questionnaire-viewer.types';\nimport { AXMPreQuestionnaireContentComponent } from '../../components/pre-questionnaire-content';\nimport {\n AXMPostQuestionnaireContentComponent,\n type QuestionWithAnswer,\n} from '../../components/post-questionnaire-content';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype FlowStep = 'pre' | 'questions' | 'review' | 'summary' | 'results';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-questionnaire-viewer-popup',\n templateUrl: './questionnaire-viewer-popup.component.html',\n styleUrl: './questionnaire-viewer-popup.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n imports: [\n CommonModule,\n AXTranslationModule,\n AXAlertModule,\n AXButtonModule,\n AXDecoratorModule,\n //AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n AXMQuestionnairePrintHostComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly entityService = inject(AXPEntityService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly printSnapshot = inject(AXMQuestionnairePrintSnapshotService);\n private readonly commandService = inject(AXPCommandService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n structure = input.required<QuestionnaireBuilderValue>();\n prePostConfig = input<PrePostConfig | null>(null);\n config = input<QuestionnaireViewerConfig | undefined>(undefined);\n initialAnswers = input<Record<string, any>>({});\n submitHandler = input<\n ((answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null | void>) | undefined\n >();\n saveHandler = input<((answers: Record<string, any>) => Promise<void>) | undefined>();\n assessmentFillContext = input<QuestionnaireAssessmentFillContext | undefined>(undefined);\n questionnaireId = input<string | undefined>(undefined);\n printTemplateId = input<string | undefined>(undefined);\n outcomeRules = input<QuestionnaireOutcomeItem[] | undefined>(undefined);\n storedOutcomeResults = input<SummaryPlaceholderValues | null>(null);\n printTitle = input<string | undefined>(undefined);\n\n /** Safe accessors: popup framework may overwrite inputs with plain values. */\n protected readonly prePostConfigValue = computed(() => this.safeInputValue(this.prePostConfig));\n protected readonly structureValue = computed(() => this.safeInputValue(this.structure));\n protected readonly configValue = computed(() => this.safeInputValue(this.config));\n protected readonly initialAnswersValue = computed(() => this.safeInputValue(this.initialAnswers));\n protected readonly questionnaireIdValue = computed(() => this.safeInputValue(this.questionnaireId));\n protected readonly printTemplateIdValue = computed(() => this.safeInputValue(this.printTemplateId));\n protected readonly outcomeRulesValue = computed(() => this.safeInputValue(this.outcomeRules));\n protected readonly storedOutcomeResultsValue = computed(() => this.safeInputValue(this.storedOutcomeResults));\n protected readonly printTitleValue = computed(() => this.safeInputValue(this.printTitle));\n\n /** Readonly entry step from viewer config (popup assigns plain object on `config`). */\n protected readonly readonlyInitialFlowStep = computed((): 'questions' | 'results' => {\n const step = this.configValue()?.initialFlowStep;\n return step === 'results' ? 'results' : 'questions';\n });\n protected readonly assessmentFillContextValue = computed((): QuestionnaireAssessmentFillContext | null => {\n const raw = this.safeInputValue(this.assessmentFillContext);\n if (raw && typeof raw === 'object' && typeof (raw as QuestionnaireAssessmentFillContext).caseId === 'string') {\n return raw as QuestionnaireAssessmentFillContext;\n }\n return null;\n });\n\n protected readonly submitHandlerValue = computed(() => {\n const handler = this.safeInputValue(this.submitHandler);\n if (typeof handler === 'function') return handler;\n if (this.assessmentFillContextValue()) {\n return (answers: Record<string, unknown>) => this.persistAssessmentAnswers(answers, true);\n }\n return this.getDefaultSubmitHandler();\n });\n\n protected readonly explicitSaveHandler = computed(() => {\n const handler = this.safeInputValue(this.saveHandler);\n return typeof handler === 'function' ? handler : undefined;\n });\n\n protected readonly isReadonly = computed(() => this.configValue()?.readonly === true);\n protected readonly isPreviewMode = computed(() => this.configValue()?.previewMode === true);\n protected readonly isReviewDecisionMode = computed(() => this.configValue()?.reviewDecisionMode === true);\n protected readonly completionMode = computed(() => {\n const fromConfig = this.configValue()?.completionMode;\n if (fromConfig) {\n return fromConfig;\n }\n return this.structureValue()?.displaySettings?.completionMode ?? 'submit-only';\n });\n protected readonly showSaveButton = computed(() => {\n if (this.isReadonly() || this.completionMode() !== 'save-and-continue') {\n return false;\n }\n return !!this.assessmentFillContextValue() || !!this.explicitSaveHandler();\n });\n protected readonly showSubmitButton = computed(() => !this.isReadonly());\n\n /** Submit on questions/review; \"Finish preview\" when `previewMode` is enabled. */\n protected readonly primarySubmitActionLabel = computed(() =>\n this.isPreviewMode()\n ? '@assessment-management:questionnaires.components.questionnaire-viewer.preview.finish.title'\n : '@general:actions.submit.title',\n );\n\n /** Session row loaded for fill persistence (popup cannot use command closures). */\n protected readonly existingSession = signal<AXMAssessmentManagementAssessmentSessionEntityModel | null>(null);\n protected readonly activeSessionId = signal<string | null>(null);\n\n /** Use answers from review context when returning from review; otherwise use initial input. */\n protected readonly effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx) return this.initialAnswersValue();\n return (ctx as { answers?: Record<string, any> }).answers ?? ctx;\n });\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n /** Fallback when submitHandler is not passed (e.g. popup framework does not pass functions). */\n private getDefaultSubmitHandler(): (answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null> {\n return async (answers: Record<string, any>) => {\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId: this.questionnaireIdValue(),\n outcomeRules: this.outcomeRulesValue(),\n elapsedSeconds: this.timerElapsed(),\n });\n };\n }\n\n /**\n * First step after submit: outcomes (if enabled), else summary (if enabled), else close. Summary is always last when both are on.\n */\n protected resolvePostSubmitFirstStep(summary: SummaryPlaceholderValues | null): 'summary' | 'results' | null {\n if (!summary) return null;\n const cfg = this.prePostConfigValue();\n if (cfg?.post.showOutcomeResults === true) return 'results';\n if (cfg?.post.summaryEnabled === true) return 'summary';\n return null;\n }\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly flowStep = signal<FlowStep>('questions');\n protected readonly initialFlowApplied = signal(false);\n protected readonly reviewSnapshot = signal<QuestionWithAnswer[]>([]);\n protected readonly reviewContext = signal<Record<string, any> | null>(null);\n protected readonly submitResult = signal<SummaryPlaceholderValues | null>(null);\n protected readonly lastSubmittedAnswers = signal<Record<string, any>>({});\n protected readonly lastSubmittedQuestions = signal<Array<{ name: string; title: string; answer: any }>>([]);\n protected readonly isSubmitting = signal(false);\n protected readonly canNavigatePrevious = signal(false);\n protected readonly canNavigateNext = signal(false);\n protected readonly showNavigationButtons = signal(false);\n protected readonly isLastStep = signal(false);\n protected readonly areAllRequiredQuestionsAnswered = signal(false);\n protected readonly isPreviewingPdf = signal(false);\n\n //#endregion\n\n //#region ---- View References ----\n\n protected readonly viewer = viewChild<AXMQuestionnaireViewerComponent>('viewer');\n protected readonly printHost = viewChild(AXMQuestionnairePrintHostComponent);\n protected readonly printAnswers = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly viewerViewModel = computed(() => this.viewer()?.viewmodel);\n protected readonly totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0);\n protected readonly showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false);\n protected readonly timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit());\n protected readonly timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0);\n protected readonly answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0);\n protected readonly questionnaireAttachments = computed(\n (): QuestionnaireViewerAttachment[] => this.viewerViewModel()?.questionnaireAttachments() ?? [],\n );\n\n protected readonly showReviewButton = computed(\n () => this.isLastStep() && (this.prePostConfigValue()?.post?.reviewEnabled ?? false) && this.flowStep() === 'questions'\n );\n\n /** True when readonly view has stored outcome results to display. */\n protected readonly hasStoredOutcomeResults = computed(() => {\n const result = this.storedOutcomeResultsValue() ?? this.submitResult();\n if (!result) {\n return false;\n }\n if ((result.outcomeSections?.length ?? 0) > 0) {\n return true;\n }\n return Object.keys(result.outcomes ?? {}).length > 0;\n });\n\n /** Results navigation on any questions step (readonly session review only). */\n protected readonly showViewResultsButton = computed(\n () => this.isReadonly() && this.flowStep() === 'questions' && this.hasStoredOutcomeResults(),\n );\n\n /** Sign off / Reject on readonly manager review (questions or outcome results step). */\n protected readonly showReviewDecisionButtons = computed(\n () =>\n this.isReviewDecisionMode() &&\n this.isReadonly() &&\n (this.flowStep() === 'questions' || this.flowStep() === 'results'),\n );\n\n protected readonly showFooter = computed(() =>\n ['pre', 'questions', 'review', 'summary', 'results'].includes(this.flowStep())\n );\n\n /** Author preview only. Workflow fill and review open the same popup without `previewMode`. */\n protected readonly showPreviewPdfButton = computed(\n () =>\n this.isPreviewMode() &&\n (this.flowStep() === 'questions' || this.flowStep() === 'review'),\n );\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const cfg = this.prePostConfigValue();\n const initial = this.readonlyInitialFlowStep();\n const stored = this.storedOutcomeResultsValue();\n\n if (stored) {\n this.submitResult.set(stored);\n }\n\n if (this.initialFlowApplied()) {\n return;\n }\n\n if (initial === 'results') {\n if (!stored) {\n return;\n }\n this.flowStep.set('results');\n this.initialFlowApplied.set(true);\n return;\n }\n\n this.flowStep.set(cfg?.pre.enabled === true ? 'pre' : 'questions');\n this.initialFlowApplied.set(true);\n });\n effect(() => {\n const ctx = this.assessmentFillContextValue();\n const sessionId = ctx?.sessionId;\n if (sessionId) {\n this.activeSessionId.set(sessionId);\n void this.loadExistingSession(sessionId);\n }\n });\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Assessment persistence ----\n\n private async loadExistingSession(sessionId: string): Promise<void> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n this.existingSession.set(fromQuery);\n return;\n }\n\n const session = await sessionAccessor.byKey(sessionId);\n if (session) {\n this.existingSession.set(session);\n }\n }\n\n private async persistAssessmentAnswers(\n answers: Record<string, unknown>,\n finalize: boolean,\n ): Promise<SummaryPlaceholderValues | null> {\n const ctx = this.assessmentFillContextValue();\n const questionnaireId = this.questionnaireIdValue();\n if (!ctx || !questionnaireId) {\n return null;\n }\n\n const vm = this.viewerViewModel();\n const progressMetrics =\n vm != null\n ? {\n answeredQuestionsCount: vm.answeredQuestionsCount(),\n progressPercentage: vm.progressPercentage(),\n }\n : undefined;\n\n const result = await persistAssessmentSession({\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n caseId: ctx.caseId,\n sessionId: this.activeSessionId() ?? ctx.sessionId ?? null,\n existingSession: this.existingSession(),\n responderId: ctx.responderId,\n role: ctx.role,\n structure: this.structureValue(),\n questionnaireId,\n answers,\n finalize,\n progressMetrics,\n timeSpentSeconds: vm?.timerElapsed(),\n });\n this.activeSessionId.set(result.sessionId);\n await this.loadExistingSession(result.sessionId);\n if (finalize) {\n this.schedulePrintSnapshot(result.sessionId);\n }\n if (!finalize) {\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.form.saved.success.title'),\n content: await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.success',\n ),\n });\n return null;\n }\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId,\n elapsedSeconds: this.timerElapsed(),\n });\n }\n\n private schedulePrintSnapshot(sessionId: string): void {\n this.printAnswers.set(this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {});\n this.printSnapshot.scheduleStore({\n entityService: this.entityService,\n sessionId,\n title: this.printTitleValue()?.trim() || undefined,\n host: this.printHost(),\n answers: this.printAnswers(),\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected async handlePreviewPdfClick(): Promise<void> {\n if (this.isPreviewingPdf()) {\n return;\n }\n this.isPreviewingPdf.set(true);\n const previewWindow = typeof window !== 'undefined' ? window.open('about:blank', '_blank') : null;\n if (previewWindow) {\n try {\n previewWindow.document.title = 'Preview PDF';\n previewWindow.document.body.innerHTML =\n '<p style=\"font-family:sans-serif;padding:24px;color:#64748b\">Generating PDF…</p>';\n } catch {\n // about:blank can be briefly cross-origin in some browsers\n }\n }\n // Keep this tab visible so print widgets can paint and timers are not throttled.\n window.focus();\n try {\n const answers = this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {};\n this.printAnswers.set(answers);\n const title = this.printTitleValue()?.trim() || 'Questionnaire';\n const printHtmlGzip = await this.printSnapshot.captureHtmlGzipFromHost(this.printHost(), title, answers);\n if (!printHtmlGzip) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n ),\n });\n return;\n }\n const print = resolvePrintSettings(this.structureValue()?.printSettings);\n const fill = this.assessmentFillContextValue();\n const result = await this.commandService.execute(AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY, {\n printHtmlGzip,\n title,\n locale: this.translationService.getActiveLang?.() ?? 'en-US',\n paperSize: print.paperSize,\n orientation: print.orientation,\n watermark: print.watermark,\n sessionId: this.activeSessionId() ?? fill?.sessionId,\n caseId: fill?.caseId,\n questionnaireId: this.questionnaireIdValue(),\n printTemplateId: this.printTemplateIdValue(),\n previewWindow,\n });\n if (result?.success === false) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title:\n (typeof result.message?.text === 'string' && result.message.text.trim()) ||\n (await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n )),\n });\n }\n } catch (error: unknown) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: error instanceof Error ? error.message : 'Failed to preview assessment session PDF.',\n });\n } finally {\n this.isPreviewingPdf.set(false);\n }\n }\n\n protected handleReviewClick(): void {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(\n items.map((q) => ({\n name: q.name,\n title: q.title,\n answer: q.answer,\n question: q.question,\n sectionName: q.sectionName,\n sectionOrder: q.sectionOrder,\n sectionTitle: q.sectionTitle,\n sectionDescription: q.sectionDescription,\n })),\n );\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n\n protected async handleSaveClick(): Promise<void> {\n const viewer = this.viewer();\n if (!viewer || !this.showSaveButton()) {\n return;\n }\n this.isSubmitting.set(true);\n try {\n const result = viewer.saveDraft();\n if (result.success && result.answers) {\n const explicit = this.explicitSaveHandler();\n if (explicit) {\n await explicit(result.answers);\n } else {\n await this.persistAssessmentAnswers(result.answers, false);\n }\n this.close({\n answers: result.answers,\n questions: viewer.getQuestionsWithAnswers(),\n submitted: false,\n saved: true,\n });\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handleReviewSubmit(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handlePreviousClick(): Promise<void> {\n await this.viewer()?.navigatePrevious();\n }\n\n protected async handleNextClick(): Promise<void> {\n await this.viewer()?.navigateNext();\n }\n\n protected async handleSubmitClick(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected handleViewResultsClick(): void {\n const stored = this.storedOutcomeResultsValue();\n if (stored) {\n this.submitResult.set(stored);\n }\n this.flowStep.set('results');\n }\n\n protected handleDone(): void {\n if (this.isReadonly() && !this.isReviewDecisionMode()) {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n });\n return;\n }\n\n const answers = this.lastSubmittedAnswers();\n const questions = this.lastSubmittedQuestions();\n this.close({ answers, questions, submitted: true });\n }\n\n protected handleReviewSignOff(): void {\n this.closeWithReviewDecision('signed-off');\n }\n\n protected handleReviewReject(): void {\n this.closeWithReviewDecision('rejected');\n }\n\n private closeWithReviewDecision(decision: 'signed-off' | 'rejected'): void {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n decision,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- Main content area: flow-step driven body -->\n<div class=\"__content-area flex flex-1 min-h-0 flex-col\"\n [class.overflow-hidden]=\"flowStep() === 'questions'\" [class.overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"$safeNavigationMigration(prePostConfigValue()?.pre?.content)\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit outcome results -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\" [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]=\"$safeNavigationMigration(prePostConfigValue()?.post?.summaryContent)\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content (answers snapshot before submit) -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n [showQuestionNumbers]=\"configValue()?.showQuestionNumbers ?? true\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden off-screen while in review mode) -->\n <div class=\"__questions flex flex-col flex-1 min-h-0 overflow-hidden\"\n [class.invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.size-0]=\"flowStep() === 'review'\"\n [class.overflow-hidden]=\"flowStep() === 'review'\">\n <!-- @if (showTimer()) {\n <div class=\"__header flex-shrink-0 p-4 border-b border-surface\">\n <div class=\"flex justify-between items-center\">\n <div class=\"__toolbar-meta flex items-center gap-4 text-sm\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n } -->\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content flex flex-1 min-h-0 flex-col overflow-y-auto overflow-x-hidden\">\n <axm-questionnaire-viewer #viewer [questionnaireId]=\"questionnaireIdValue()\" [structure]=\"structureValue()\"\n [config]=\"configValue()\" [initialAnswers]=\"effectiveInitialAnswers()\"></axm-questionnaire-viewer>\n </div>\n </div>\n }\n</div>\n\n<!-- Popup footer: flow action buttons -->\n@if (showFooter()) {\n<ax-footer class=\"__popup-footer flex-shrink-0 border-t px-4 py-3\">\n <!-- Footer prefix: attachments and progress -->\n <ax-prefix>\n <div class=\"flex items-center gap-4 min-w-0\">\n @if (flowStep() === 'questions') {\n <axm-questionnaire-viewer-questionnaire-attachments-footer [attachments]=\"questionnaireAttachments()\" />\n <div class=\"__footer-progress text-sm font-mono tabular-nums\" dir=\"ltr\">\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n </div>\n }\n @if (showPreviewPdfButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:sessions.actions.preview-pdf.title' | translate | async\"\n [disabled]=\"isPreviewingPdf()\" (onClick)=\"handlePreviewPdfClick()\"></ax-button>\n }\n </div>\n </ax-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <ax-suffix>\n <!-- Pre-questionnaire welcome step -->\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 <!-- Draft save (fill mode with save-and-continue) -->\n @if (showSaveButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.title' | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly()\" (onClick)=\"handleSaveClick()\"></ax-button>\n }\n <!-- Section / page navigation (paginated view modes) -->\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 <!-- Last step: optional review before submit -->\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]=\"isReadonly() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n <!-- Last step: submit when review is disabled -->\n @if (isLastStep() && !showReviewButton() && showSubmitButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n <!-- Readonly session review: jump to stored outcome results -->\n @if (showViewResultsButton()) {\n <ax-button look=\"outline\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.results' | translate | async\"\n (onClick)=\"handleViewResultsClick()\">\n <ax-icon class=\"fa-light fa-chart-simple\"></ax-icon>\n </ax-button>\n }\n <!-- Manager review decision (readonly workflow review) -->\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </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]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n <!-- Readonly session review: return to answers -->\n @if (isReadonly() && hasStoredOutcomeResults()) {\n <ax-button look=\"outline\" [color]=\"'primary'\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.answers' | translate | async\"\n (onClick)=\"flowStep.set('questions')\">\n <ax-icon class=\"fa-light fa-clipboard-list-check\"></ax-icon>\n </ax-button>\n }\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </ax-button>\n } @else if (prePostConfigValue()?.post?.summaryEnabled && !isReadonly()) {\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 </ax-suffix>\n</ax-footer>\n}\n\n<axm-questionnaire-print-host\n [structure]=\"structureValue()\"\n [questionnaireId]=\"questionnaireIdValue()\"\n [answers]=\"printAnswers()\"\n [prePostConfig]=\"prePostConfigValue()\"\n [placeholderValues]=\"storedOutcomeResultsValue() ?? submitResult()\"\n/>"],"names":["i4"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { a as FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY, Q as QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-DxRFMK3k.mjs';
|
|
4
|
+
|
|
5
|
+
class AXMRelatedContentViewerPageComponentProvider {
|
|
6
|
+
async components() {
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
key: FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY,
|
|
10
|
+
loader: () => import('./acorex-platform-module-assessment-management-client-related-content-viewer-page.component-CI9AlM58.mjs').then((module) => module.AXMRelatedContentViewerPageComponent),
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
key: QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY,
|
|
14
|
+
loader: () => import('./acorex-platform-module-assessment-management-client-related-content-viewer-page.component-CI9AlM58.mjs').then((module) => module.AXMRelatedContentViewerPageComponent),
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRelatedContentViewerPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRelatedContentViewerPageComponentProvider }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRelatedContentViewerPageComponentProvider, decorators: [{
|
|
22
|
+
type: Injectable
|
|
23
|
+
}] });
|
|
24
|
+
|
|
25
|
+
export { AXMRelatedContentViewerPageComponentProvider };
|
|
26
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-D0Rkeywu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-D0Rkeywu.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/related-content-viewer-page/related-content-viewer-page-component.provider.ts"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY,\n QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY,\n} from '../content-display.constants';\n\n@Injectable()\nexport class AXMRelatedContentViewerPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./related-content-viewer-page.component').then(\n (module) => module.AXMRelatedContentViewerPageComponent,\n ),\n },\n {\n key: QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./related-content-viewer-page.component').then(\n (module) => module.AXMRelatedContentViewerPageComponent,\n ),\n },\n ];\n }\n}\n"],"names":[],"mappings":";;;;MAWa,4CAA4C,CAAA;AACvD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,MAAM,EAAE,MACN,OAAO,0GAAyC,CAAC,CAAC,IAAI,CACpD,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CACxD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,MAAM,EAAE,MACN,OAAO,0GAAyC,CAAC,CAAC,IAAI,CACpD,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CACxD;AACJ,aAAA;SACF;IACH;8GAlBW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5C,4CAA4C,EAAA,CAAA,CAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBADxD;;;"}
|