@acorex-platform/module-assessment-management-client 0.0.70 → 1.0.2

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.
Files changed (96) hide show
  1. package/fesm2022/{acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs} +84 -77
  2. package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-42ZcOY2C.mjs → acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-D5gUv0HJ.mjs} +4 -4
  4. package/fesm2022/acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-D5gUv0HJ.mjs.map +1 -0
  5. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-6Hw6NQgS.mjs → acorex-platform-module-assessment-management-client-assessment-voice.commands-C05ceRIS.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-6Hw6NQgS.mjs.map → acorex-platform-module-assessment-management-client-assessment-voice.commands-C05ceRIS.mjs.map} +1 -1
  7. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs +10 -0
  8. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs +1 -1
  10. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs +12 -2
  12. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-CgUoWW8B.mjs} +6 -6
  14. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-CgUoWW8B.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-GDJX71dY.mjs} +6 -2
  16. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-GDJX71dY.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-tP9SU7u8.mjs} +3 -3
  18. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-tP9SU7u8.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-features.keys-BVOMWggD.mjs +9 -0
  20. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-features.keys-BVOMWggD.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-BSXs6_z8.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-BSXs6_z8.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-a63MvFoX.mjs} +8 -4
  24. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-a63MvFoX.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-DWRFJCah.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-DWRFJCah.mjs.map} +1 -1
  27. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog.mjs +1 -1
  28. package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs +207 -1
  29. package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs.map +1 -1
  30. package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-BOzXBvS2.mjs → acorex-platform-module-assessment-management-client-fill-assessment-session.command-xJKBN_ld.mjs} +18 -7
  31. package/fesm2022/acorex-platform-module-assessment-management-client-fill-assessment-session.command-xJKBN_ld.mjs.map +1 -0
  32. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BU6YLe8q.mjs → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BJR4IfPd.mjs} +2 -2
  33. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BU6YLe8q.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BJR4IfPd.mjs.map} +1 -1
  34. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-CZre8wPB.mjs → acorex-platform-module-assessment-management-client-form-template-viewer.service-R-ggiWLO.mjs} +3 -3
  35. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-CZre8wPB.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer.service-R-ggiWLO.mjs.map} +1 -1
  36. package/fesm2022/{acorex-platform-module-assessment-management-client-index-BmODQqQ4.mjs → acorex-platform-module-assessment-management-client-index-BZtiVD2e.mjs} +2 -2
  37. package/fesm2022/{acorex-platform-module-assessment-management-client-index-BmODQqQ4.mjs.map → acorex-platform-module-assessment-management-client-index-BZtiVD2e.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-C9BMiyDb.mjs → acorex-platform-module-assessment-management-client-open-form-template.command-C4081c1C.mjs} +3 -3
  39. package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-C9BMiyDb.mjs.map → acorex-platform-module-assessment-management-client-open-form-template.command-C4081c1C.mjs.map} +1 -1
  40. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-L5NxVqdE.mjs → acorex-platform-module-assessment-management-client-preview-form-template.command-CBmZ-Bmy.mjs} +2 -2
  41. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-L5NxVqdE.mjs.map → acorex-platform-module-assessment-management-client-preview-form-template.command-CBmZ-Bmy.mjs.map} +1 -1
  42. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-7GuqlVX4.mjs → acorex-platform-module-assessment-management-client-preview-question.command-DVnUPcnM.mjs} +2 -2
  43. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-7GuqlVX4.mjs.map → acorex-platform-module-assessment-management-client-preview-question.command-DVnUPcnM.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-ChtB6q9D.mjs → acorex-platform-module-assessment-management-client-preview-questionnaire.command-ZDwi_ANo.mjs} +3 -2
  45. package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-ZDwi_ANo.mjs.map +1 -0
  46. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-Iwdbc86Q.mjs → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-xVopqBXb.mjs} +2 -2
  47. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-Iwdbc86Q.mjs.map → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-xVopqBXb.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-Q6Wu81xW.mjs → acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-CzBwueq5.mjs} +2 -2
  49. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-Q6Wu81xW.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-CzBwueq5.mjs.map} +1 -1
  50. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CaKML07K.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-dQVv8Byi.mjs} +2 -2
  51. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CaKML07K.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-dQVv8Byi.mjs.map} +1 -1
  52. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-xDX86cTn.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-C7NKQ3JK.mjs} +8 -5
  53. package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-C7NKQ3JK.mjs.map +1 -0
  54. package/fesm2022/{acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-CiMERtrE.mjs → acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-C30AdJgp.mjs} +2 -2
  55. package/fesm2022/{acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-CiMERtrE.mjs.map → acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-C30AdJgp.mjs.map} +1 -1
  56. package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-CfqUtmMt.mjs → acorex-platform-module-assessment-management-client-review-assessment-session.command-CUgxOyhV.mjs} +5 -5
  57. package/fesm2022/acorex-platform-module-assessment-management-client-review-assessment-session.command-CUgxOyhV.mjs.map +1 -0
  58. package/fesm2022/{acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-BZxwRr8J.mjs → acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-D4XOgSLK.mjs} +3 -3
  59. package/fesm2022/{acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-BZxwRr8J.mjs.map → acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-D4XOgSLK.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-hrtJQmvG.mjs → acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-HMUwV7JV.mjs} +2 -2
  61. package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-hrtJQmvG.mjs.map → acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-HMUwV7JV.mjs.map} +1 -1
  62. package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CMUmrNac.mjs → acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-qxFtVjPL.mjs} +2 -2
  63. package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CMUmrNac.mjs.map → acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-qxFtVjPL.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-BhW_Wn7N.mjs → acorex-platform-module-assessment-management-client-template-widget-edit.component-ToNSOrm0.mjs} +2 -2
  65. package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-BhW_Wn7N.mjs.map → acorex-platform-module-assessment-management-client-template-widget-edit.component-ToNSOrm0.mjs.map} +1 -1
  66. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-Dkaw3T8R.mjs → acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-IrGyg6gp.mjs} +2 -2
  67. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-Dkaw3T8R.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-IrGyg6gp.mjs.map} +1 -1
  68. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-grid.component-BCRIENMA.mjs → acorex-platform-module-assessment-management-client-test-sheet-grid.component-YuI3fd0M.mjs} +3 -3
  69. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-grid.component-BCRIENMA.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-grid.component-YuI3fd0M.mjs.map} +1 -1
  70. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CFu_CQ91.mjs → acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bj3yQcnK.mjs} +3 -3
  71. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CFu_CQ91.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bj3yQcnK.mjs.map} +1 -1
  72. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DdC83GV8.mjs → acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-jiWQ9kKS.mjs} +3 -3
  73. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DdC83GV8.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-jiWQ9kKS.mjs.map} +1 -1
  74. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-OQZIzcjG.mjs → acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-DKTfJTSJ.mjs} +3 -3
  75. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-OQZIzcjG.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-DKTfJTSJ.mjs.map} +1 -1
  76. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs → acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs} +2 -2
  77. package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs.map → acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs.map} +1 -1
  78. package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-YoUUyJ4j.mjs → acorex-platform-module-assessment-management-client-view-session-answers.command-Dkv_lnpQ.mjs} +6 -6
  79. package/fesm2022/acorex-platform-module-assessment-management-client-view-session-answers.command-Dkv_lnpQ.mjs.map +1 -0
  80. package/fesm2022/acorex-platform-module-assessment-management-client.mjs +1 -1
  81. package/i18n/en-AU/assessment-management.json +9 -2
  82. package/i18n/en-US/assessment-management.json +9 -2
  83. package/i18n/fa-IR/assessment-management.json +8 -1
  84. package/package.json +3 -3
  85. package/types/acorex-platform-module-assessment-management-client-contracts.d.ts +38 -3
  86. package/types/acorex-platform-module-assessment-management-client.d.ts +4 -0
  87. package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs.map +0 -1
  88. package/fesm2022/acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-42ZcOY2C.mjs.map +0 -1
  89. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs.map +0 -1
  90. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs.map +0 -1
  91. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-module-assessment-management-client-fill-assessment-session.command-BOzXBvS2.mjs.map +0 -1
  93. package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-ChtB6q9D.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-xDX86cTn.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-module-assessment-management-client-review-assessment-session.command-CfqUtmMt.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-module-assessment-management-client-view-session-answers.command-YoUUyJ4j.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-review-assessment-session.command-CUgxOyhV.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/commands/review-assessment-session.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, type AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { RootConfig, toPersistedAnswers } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { openAssessmentSessionAnswersReviewDecision } from '../utils/assessment-session-answers-view.util';\nimport type { AXMQuestionnaireViewerServiceResult } from '../questionnaire-viewer.service';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\nexport type ReviewAssessmentSessionOutcome = 'SignedOff' | 'Rejected' | 'Cancelled';\n\nexport interface ReviewAssessmentSessionCommandInput {\n caseId: string;\n sessionId?: string;\n title?: AXPMultiLanguageString | string;\n showAs?: 'popup';\n}\n\nexport interface ReviewAssessmentSessionCommandOutput {\n caseId: string;\n sessionId: string;\n answers: Record<string, unknown>;\n questions: AXMQuestionnaireViewerServiceResult['questions'];\n}\n\ntype ReviewAssessmentSessionCommandInvocation = ReviewAssessmentSessionCommandInput & {\n data?: Record<string, unknown>;\n options?: Partial<ReviewAssessmentSessionCommandInput>;\n};\n\n//#endregion\n\n//#region ---- Review Assessment Session Command ----\n\n/**\n * Opens a readonly answers viewer with Sign off / Reject for workflow manager review.\n */\n@Injectable()\nexport class ReviewAssessmentSessionCommand\n implements AXPCommand<ReviewAssessmentSessionCommandInput, ReviewAssessmentSessionCommandOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: ReviewAssessmentSessionCommandInvocation,\n ): AXPCommandExecuteResultPromise<ReviewAssessmentSessionCommandOutput> {\n try {\n const caseId = this.resolveCaseId(input);\n const sessionId = this.resolveSessionId(input);\n\n if (!caseId) {\n return {\n success: false,\n message: { text: '@assessment-management:commands.review-assessment-session.errors.case-id-required' },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:commands.review-assessment-session.errors.case-not-found',\n { params: { caseId } },\n ),\n },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n let session: AXMAssessmentManagementAssessmentSessionEntityModel | null = null;\n if (sessionId) {\n session = await this.loadSession(sessionId, input);\n } else {\n session = await this.findLatestSession(caseId);\n }\n\n if (!session) {\n return {\n success: false,\n message: { text: '@assessment-management:commands.review-assessment-session.errors.session-not-found' },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const resolvedSessionId = session.id;\n const viewerTitle = await this.resolveViewerTitle(input.title, assessmentCase.title);\n\n const popupResult = await openAssessmentSessionAnswersReviewDecision(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n { title: viewerTitle },\n );\n\n const outcome = this.resolveOutcome(popupResult);\n const answers = defaultTo(get(popupResult, 'answers'), {}) as Record<string, unknown>;\n const questions = defaultTo(get(popupResult, 'questions'), []);\n\n return { success: true, kind: 'object',\n data: {\n caseId,\n sessionId: resolvedSessionId,\n answers,\n questions,\n },\n metadata: { outcome },\n };\n } catch (error: unknown) {\n const fallback = await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n const message = error instanceof Error ? error.message : fallback;\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:commands.review-assessment-session.errors.failed',\n { params: { message } },\n ),\n },\n metadata: { outcome: 'Cancelled' },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Resolution helpers ----\n\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n private resolveSessionId(input: ReviewAssessmentSessionCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, 'options.sessionId'),\n ];\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n return null;\n }\n\n private resolveCaseId(input: ReviewAssessmentSessionCommandInvocation): string | null {\n const candidates = [get(input, 'caseId'), get(input, 'options.caseId'), get(input, 'options.caseId')];\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n return null;\n }\n\n private async loadSession(\n sessionId: string,\n input: ReviewAssessmentSessionCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: toPersistedAnswers(get(row, 'answers')),\n };\n }\n\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 return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\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 sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n private async resolveViewerTitle(\n inputTitle: AXPMultiLanguageString | string | undefined,\n caseTitle: string | undefined,\n ): Promise<string> {\n const explicit = this.normalizeTitle(inputTitle);\n if (explicit) {\n return explicit;\n }\n\n const fromCase = this.normalizeTitle(caseTitle);\n if (fromCase) {\n return fromCase;\n }\n\n const reviewTitleKey = '@assessment-management:sessions.actions.review-answers.title';\n const reviewTitleBase = await this.translationService.translateAsync(reviewTitleKey);\n return reviewTitleBase || 'Review answers';\n }\n\n private normalizeTitle(value: AXPMultiLanguageString | string | undefined | null | false): string {\n if (value == null || value === false) {\n return '';\n }\n if (typeof value === 'string') {\n return value.trim();\n }\n const locale = this.translationService.getActiveLang();\n return resolveMultiLanguageString(value, locale).trim();\n }\n\n private resolveOutcome(result: AXMQuestionnaireViewerServiceResult | null | undefined): ReviewAssessmentSessionOutcome {\n if (result?.decision === 'signed-off') {\n return 'SignedOff';\n }\n if (result?.decision === 'rejected') {\n return 'Rejected';\n }\n return 'Cancelled';\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ import { AXTranslationService } from '@acorex/core/translation';
5
5
  import * as i0 from '@angular/core';
6
6
  import { inject, Injectable } from '@angular/core';
7
7
  import { isPlainObject } from 'lodash-es';
8
- import { A as AXMFormTemplateViewerService } from './acorex-platform-module-assessment-management-client-form-template-viewer.service-CZre8wPB.mjs';
9
- import { c as AXMRelatedContentRecordService, d as readRelatedRecordId, e as FORM_TEMPLATE_VIEWER_FIELD, f as FORM_TEMPLATE_VIEWER_SOURCE_FIELD } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
8
+ import { A as AXMFormTemplateViewerService } from './acorex-platform-module-assessment-management-client-form-template-viewer.service-R-ggiWLO.mjs';
9
+ import { c as AXMRelatedContentRecordService, d as readRelatedRecordId, e as FORM_TEMPLATE_VIEWER_FIELD, f as FORM_TEMPLATE_VIEWER_SOURCE_FIELD } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
10
10
 
11
11
  //#endregion
12
12
  //#region ----- Command -----
@@ -114,4 +114,4 @@ function resolveInput(input) {
114
114
  }
115
115
 
116
116
  export { ShowFormTemplateViewerPopupCommand };
117
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-BZxwRr8J.mjs.map
117
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-D4XOgSLK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-BZxwRr8J.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/form-template-viewer/show-form-template-viewer-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { isPlainObject } from 'lodash-es';\nimport { AXMFormTemplateViewerService } from '../../form-template/viewer/form-template-viewer.service';\nimport { FORM_TEMPLATE_VIEWER_FIELD, FORM_TEMPLATE_VIEWER_SOURCE_FIELD } from '../content-display.constants';\nimport { readRelatedRecordId } from '../content-display.util';\nimport { AXMRelatedContentRecordService } from '../related-content-record.service';\n\n//#region ----- Types -----\n\nexport interface ShowFormTemplateViewerPopupInput {\n entity: string;\n id: string;\n field?: string;\n path: string;\n sourceField?: string;\n targetEntity: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the form stored on the related record and saves the filled context on this record.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowFormTemplateViewerPopupCommand implements AXPCommand<ShowFormTemplateViewerPopupInput, unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly formViewer = inject(AXMFormTemplateViewerService);\n private readonly records = inject(AXMRelatedContentRecordService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowFormTemplateViewerPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim() ?? '';\n const id = readRelatedRecordId(evaluated.id);\n const path = evaluated.path?.trim() ?? '';\n const targetEntity = evaluated.targetEntity?.trim() ?? '';\n const field = evaluated.field?.trim() || FORM_TEMPLATE_VIEWER_FIELD;\n const sourceField = evaluated.sourceField?.trim() || FORM_TEMPLATE_VIEWER_SOURCE_FIELD;\n\n if (!entity || !id || !path || !targetEntity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const host = await this.records.find(entity, id);\n if (!host) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const relatedId = readRelatedRecordId(host[path]);\n const template = relatedId ? await this.records.readFormTemplate(targetEntity, relatedId, sourceField) : null;\n if (template == null || template === '') {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@form-template-management:templates.viewer.messages.missing-template',\n ),\n },\n };\n }\n\n const current = host[field];\n const opened = await this.formViewer.open({\n template: typeof template === 'string' ? template : JSON.stringify(template),\n title: evaluated.title,\n context: isPlainObject(current) ? (current as Record<string, unknown>) : {},\n });\n if (typeof opened === 'string' || opened.cancelled) {\n return { success: false };\n }\n\n await this.entityService.withEntity(entity).data().update(id, { [field]: opened.context } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: opened.context },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowFormTemplateViewerPopupInput | undefined): ShowFormTemplateViewerPopupInput {\n const raw = (input ?? {}) as ShowFormTemplateViewerPopupInput & {\n options?: Partial<ShowFormTemplateViewerPopupInput>;\n data?: Partial<ShowFormTemplateViewerPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n path: options.path ?? raw.path ?? '',\n sourceField: options.sourceField ?? raw.sourceField,\n targetEntity: options.targetEntity ?? raw.targetEntity ?? '',\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-D4XOgSLK.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/form-template-viewer/show-form-template-viewer-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { isPlainObject } from 'lodash-es';\nimport { AXMFormTemplateViewerService } from '../../form-template/viewer/form-template-viewer.service';\nimport { FORM_TEMPLATE_VIEWER_FIELD, FORM_TEMPLATE_VIEWER_SOURCE_FIELD } from '../content-display.constants';\nimport { readRelatedRecordId } from '../content-display.util';\nimport { AXMRelatedContentRecordService } from '../related-content-record.service';\n\n//#region ----- Types -----\n\nexport interface ShowFormTemplateViewerPopupInput {\n entity: string;\n id: string;\n field?: string;\n path: string;\n sourceField?: string;\n targetEntity: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the form stored on the related record and saves the filled context on this record.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowFormTemplateViewerPopupCommand implements AXPCommand<ShowFormTemplateViewerPopupInput, unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly formViewer = inject(AXMFormTemplateViewerService);\n private readonly records = inject(AXMRelatedContentRecordService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowFormTemplateViewerPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim() ?? '';\n const id = readRelatedRecordId(evaluated.id);\n const path = evaluated.path?.trim() ?? '';\n const targetEntity = evaluated.targetEntity?.trim() ?? '';\n const field = evaluated.field?.trim() || FORM_TEMPLATE_VIEWER_FIELD;\n const sourceField = evaluated.sourceField?.trim() || FORM_TEMPLATE_VIEWER_SOURCE_FIELD;\n\n if (!entity || !id || !path || !targetEntity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const host = await this.records.find(entity, id);\n if (!host) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const relatedId = readRelatedRecordId(host[path]);\n const template = relatedId ? await this.records.readFormTemplate(targetEntity, relatedId, sourceField) : null;\n if (template == null || template === '') {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@form-template-management:templates.viewer.messages.missing-template',\n ),\n },\n };\n }\n\n const current = host[field];\n const opened = await this.formViewer.open({\n template: typeof template === 'string' ? template : JSON.stringify(template),\n title: evaluated.title,\n context: isPlainObject(current) ? (current as Record<string, unknown>) : {},\n });\n if (typeof opened === 'string' || opened.cancelled) {\n return { success: false };\n }\n\n await this.entityService.withEntity(entity).data().update(id, { [field]: opened.context } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: opened.context },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowFormTemplateViewerPopupInput | undefined): ShowFormTemplateViewerPopupInput {\n const raw = (input ?? {}) as ShowFormTemplateViewerPopupInput & {\n options?: Partial<ShowFormTemplateViewerPopupInput>;\n data?: Partial<ShowFormTemplateViewerPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n path: options.path ?? raw.path ?? '',\n sourceField: options.sourceField ?? raw.sourceField,\n targetEntity: options.targetEntity ?? raw.targetEntity ?? '',\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;;;AAwBA;AAEA;AAEA;;AAEG;MAEU,kCAAkC,CAAA;AAD/C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACjD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AA+EjE,IAAA;;;IAzEC,MAAM,OAAO,CAAC,KAAmD,EAAA;AAC/D,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;QAC7C,MAAM,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACzC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,0BAA0B;QACnE,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,iCAAiC;AAEtF,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5C,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,oCAAoC,CAAC;AACzF,qBAAA;iBACF;YACH;YAEA,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;YAC7G,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACvC,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAChD,sEAAsE,CACvE;AACF,qBAAA;iBACF;YACH;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACxC,gBAAA,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC5E,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAI,OAAmC,GAAG,EAAE;AAC5E,aAAA,CAAC;YACF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AAClD,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;YAC3B;YAEA,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAW,CAAC;AACnG,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/E,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,kCAAkC,CAAC;AACvF,iBAAA;aACF;QACH;AAAE,QAAA,MAAM;YACN,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6CAA6C,CAAC;AAClG,iBAAA;aACF;QACH;IACF;8GAnFW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,cADrB,MAAM,EAAA,CAAA,CAAA;;2FACnB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAyFlC;AAEA;AAEA,SAAS,YAAY,CAAC,KAAmD,EAAA;AACvE,IAAA,MAAM,GAAG,IAAI,KAAK,IAAI,EAAE,CAGvB;AACD,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE;AACjC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE;IAC3B,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;AAC1C,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE;AACzC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;QACjC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE;AACpC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;QACnD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE;AAC5D,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;KAClC;AACH;;"}
@@ -5,7 +5,7 @@ import { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';
5
5
  import { AXTranslationService } from '@acorex/core/translation';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable } from '@angular/core';
8
- import { b as QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
8
+ import { b as QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
9
9
 
10
10
  //#endregion
11
11
  //#region ----- Command -----
@@ -126,4 +126,4 @@ function resolveInput(input) {
126
126
  }
127
127
 
128
128
  export { ShowQuestionnaireQuestionsPopupCommand };
129
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-hrtJQmvG.mjs.map
129
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-HMUwV7JV.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-hrtJQmvG.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/show-questionnaire-questions-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET } from '../content-display.constants';\n\n//#region ----- Types -----\n\nexport interface ShowQuestionnaireQuestionsPopupInput {\n entity: string;\n id: string;\n field?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the questionnaire questions builder in a dialog and saves the field on submit.\n * Used when the questionnaire plugin display includes `popup`.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowQuestionnaireQuestionsPopupCommand\n implements AXPCommand<ShowQuestionnaireQuestionsPopupInput, unknown>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowQuestionnaireQuestionsPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim();\n const id = evaluated.id != null ? String(evaluated.id).trim() : '';\n const field = evaluated.field?.trim() || 'questions';\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const dataAccessor = this.entityService.withEntity(entity).data();\n const currentRecord = (await dataAccessor.byKey(id)) as Record<string, unknown> | null;\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const dialogTitle =\n evaluated.title?.trim() ||\n (await this.translationService.translateAsync(\n '@assessment-management:questionnaires.entities.questionnaire.fields.questions.title',\n ));\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPRuntimeCommandResult>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentRecord[field] ?? null,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n flex.formField('', (fieldBuilder) => {\n fieldBuilder.path(field).setShowLabel(false).customWidget(QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET, {});\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { success: false };\n }\n const questions = context[field];\n await dataAccessor.update(id, { [field]: questions } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: questions },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n });\n })\n .show();\n\n return (\n result ?? {\n success: false,\n }\n );\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowQuestionnaireQuestionsPopupInput | undefined): ShowQuestionnaireQuestionsPopupInput {\n const raw = (input ?? {}) as ShowQuestionnaireQuestionsPopupInput & {\n options?: Partial<ShowQuestionnaireQuestionsPopupInput>;\n data?: Partial<ShowQuestionnaireQuestionsPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-HMUwV7JV.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/show-questionnaire-questions-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET } from '../content-display.constants';\n\n//#region ----- Types -----\n\nexport interface ShowQuestionnaireQuestionsPopupInput {\n entity: string;\n id: string;\n field?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the questionnaire questions builder in a dialog and saves the field on submit.\n * Used when the questionnaire plugin display includes `popup`.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowQuestionnaireQuestionsPopupCommand\n implements AXPCommand<ShowQuestionnaireQuestionsPopupInput, unknown>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityService = inject(AXPEntityService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowQuestionnaireQuestionsPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim();\n const id = evaluated.id != null ? String(evaluated.id).trim() : '';\n const field = evaluated.field?.trim() || 'questions';\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const dataAccessor = this.entityService.withEntity(entity).data();\n const currentRecord = (await dataAccessor.byKey(id)) as Record<string, unknown> | null;\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const dialogTitle =\n evaluated.title?.trim() ||\n (await this.translationService.translateAsync(\n '@assessment-management:questionnaires.entities.questionnaire.fields.questions.title',\n ));\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPRuntimeCommandResult>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentRecord[field] ?? null,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n flex.formField('', (fieldBuilder) => {\n fieldBuilder.path(field).setShowLabel(false).customWidget(QUESTIONNAIRE_QUESTIONS_EDITOR_WIDGET, {});\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { success: false };\n }\n const questions = context[field];\n await dataAccessor.update(id, { [field]: questions } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: questions },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n });\n })\n .show();\n\n return (\n result ?? {\n success: false,\n }\n );\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowQuestionnaireQuestionsPopupInput | undefined): ShowQuestionnaireQuestionsPopupInput {\n const raw = (input ?? {}) as ShowQuestionnaireQuestionsPopupInput & {\n options?: Partial<ShowQuestionnaireQuestionsPopupInput>;\n data?: Partial<ShowQuestionnaireQuestionsPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { AXTranslationService } from '@acorex/core/translation';
5
5
  import * as i0 from '@angular/core';
6
6
  import { inject, Injectable } from '@angular/core';
7
7
  import { isPlainObject } from 'lodash-es';
8
- import { h as AXMQuestionnaireViewerService, c as AXMRelatedContentRecordService, d as readRelatedRecordId, i as QUESTIONNAIRE_VIEWER_FIELD, j as QUESTIONNAIRE_VIEWER_SOURCE_FIELD } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
8
+ import { h as AXMQuestionnaireViewerService, c as AXMRelatedContentRecordService, d as readRelatedRecordId, i as QUESTIONNAIRE_VIEWER_FIELD, j as QUESTIONNAIRE_VIEWER_SOURCE_FIELD } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
9
9
 
10
10
  //#endregion
11
11
  //#region ----- Command -----
@@ -117,4 +117,4 @@ function resolveInput(input) {
117
117
  }
118
118
 
119
119
  export { ShowQuestionnaireViewerPopupCommand };
120
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CMUmrNac.mjs.map
120
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-qxFtVjPL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CMUmrNac.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/show-questionnaire-viewer-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { QuestionnaireBuilderValue } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { isPlainObject } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../../questionnaire-viewer/questionnaire-viewer.service';\nimport { QUESTIONNAIRE_VIEWER_FIELD, QUESTIONNAIRE_VIEWER_SOURCE_FIELD } from '../content-display.constants';\nimport { readRelatedRecordId } from '../content-display.util';\nimport { AXMRelatedContentRecordService } from '../related-content-record.service';\n\n//#region ----- Types -----\n\nexport interface ShowQuestionnaireViewerPopupInput {\n entity: string;\n id: string;\n field?: string;\n path: string;\n sourceField?: string;\n targetEntity: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the questionnaire stored on the related record and saves answers on this record.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowQuestionnaireViewerPopupCommand implements AXPCommand<ShowQuestionnaireViewerPopupInput, unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly questionnaireViewer = inject(AXMQuestionnaireViewerService);\n private readonly records = inject(AXMRelatedContentRecordService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowQuestionnaireViewerPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim() ?? '';\n const id = readRelatedRecordId(evaluated.id);\n const path = evaluated.path?.trim() ?? '';\n const targetEntity = evaluated.targetEntity?.trim() ?? '';\n const field = evaluated.field?.trim() || QUESTIONNAIRE_VIEWER_FIELD;\n const sourceField = evaluated.sourceField?.trim() || QUESTIONNAIRE_VIEWER_SOURCE_FIELD;\n\n if (!entity || !id || !path || !targetEntity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const host = await this.records.find(entity, id);\n if (!host) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const relatedId = readRelatedRecordId(host[path]);\n const structure = relatedId\n ? ((await this.records.readQuestionnaireStructure(\n targetEntity,\n relatedId,\n sourceField,\n )) as QuestionnaireBuilderValue | null)\n : null;\n if (!structure?.sections?.length) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.empty.description',\n ),\n },\n };\n }\n\n const current = host[field];\n const title =\n evaluated.title?.trim() ||\n (await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.section-title',\n ));\n const opened = await this.questionnaireViewer.open({\n title,\n structure,\n initialAnswers: isPlainObject(current) ? (current as Record<string, any>) : {},\n });\n if (!opened || (!opened.submitted && !opened.saved)) {\n return { success: false };\n }\n\n await this.entityService.withEntity(entity).data().update(id, { [field]: opened.answers } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: opened.answers },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowQuestionnaireViewerPopupInput | undefined): ShowQuestionnaireViewerPopupInput {\n const raw = (input ?? {}) as ShowQuestionnaireViewerPopupInput & {\n options?: Partial<ShowQuestionnaireViewerPopupInput>;\n data?: Partial<ShowQuestionnaireViewerPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n path: options.path ?? raw.path ?? '',\n sourceField: options.sourceField ?? raw.sourceField,\n targetEntity: options.targetEntity ?? raw.targetEntity ?? '',\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-qxFtVjPL.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/show-questionnaire-viewer-popup.command.ts"],"sourcesContent":["import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { QuestionnaireBuilderValue } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { isPlainObject } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../../questionnaire-viewer/questionnaire-viewer.service';\nimport { QUESTIONNAIRE_VIEWER_FIELD, QUESTIONNAIRE_VIEWER_SOURCE_FIELD } from '../content-display.constants';\nimport { readRelatedRecordId } from '../content-display.util';\nimport { AXMRelatedContentRecordService } from '../related-content-record.service';\n\n//#region ----- Types -----\n\nexport interface ShowQuestionnaireViewerPopupInput {\n entity: string;\n id: string;\n field?: string;\n path: string;\n sourceField?: string;\n targetEntity: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the questionnaire stored on the related record and saves answers on this record.\n */\n@Injectable({ providedIn: 'root' })\nexport class ShowQuestionnaireViewerPopupCommand implements AXPCommand<ShowQuestionnaireViewerPopupInput, unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly questionnaireViewer = inject(AXMQuestionnaireViewerService);\n private readonly records = inject(AXMRelatedContentRecordService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ----- Command Handling -----\n\n async execute(input: ShowQuestionnaireViewerPopupInput | undefined): AXPCommandExecuteResultPromise<unknown> {\n const evaluated = resolveInput(input);\n const entity = evaluated.entity?.trim() ?? '';\n const id = readRelatedRecordId(evaluated.id);\n const path = evaluated.path?.trim() ?? '';\n const targetEntity = evaluated.targetEntity?.trim() ?? '';\n const field = evaluated.field?.trim() || QUESTIONNAIRE_VIEWER_FIELD;\n const sourceField = evaluated.sourceField?.trim() || QUESTIONNAIRE_VIEWER_SOURCE_FIELD;\n\n if (!entity || !id || !path || !targetEntity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const host = await this.records.find(entity, id);\n if (!host) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const relatedId = readRelatedRecordId(host[path]);\n const structure = relatedId\n ? ((await this.records.readQuestionnaireStructure(\n targetEntity,\n relatedId,\n sourceField,\n )) as QuestionnaireBuilderValue | null)\n : null;\n if (!structure?.sections?.length) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.empty.description',\n ),\n },\n };\n }\n\n const current = host[field];\n const title =\n evaluated.title?.trim() ||\n (await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.section-title',\n ));\n const opened = await this.questionnaireViewer.open({\n title,\n structure,\n initialAnswers: isPlainObject(current) ? (current as Record<string, any>) : {},\n });\n if (!opened || (!opened.submitted && !opened.saved)) {\n return { success: false };\n }\n\n await this.entityService.withEntity(entity).data().update(id, { [field]: opened.answers } as never);\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, { name: entity });\n return {\n success: true,\n kind: 'object',\n data: { id, [field]: opened.answers },\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveInput(input: ShowQuestionnaireViewerPopupInput | undefined): ShowQuestionnaireViewerPopupInput {\n const raw = (input ?? {}) as ShowQuestionnaireViewerPopupInput & {\n options?: Partial<ShowQuestionnaireViewerPopupInput>;\n data?: Partial<ShowQuestionnaireViewerPopupInput> & { id?: string };\n };\n const options = raw.options ?? {};\n const data = raw.data ?? {};\n return {\n entity: options.entity ?? raw.entity ?? '',\n id: options.id ?? raw.id ?? data.id ?? '',\n field: options.field ?? raw.field,\n path: options.path ?? raw.path ?? '',\n sourceField: options.sourceField ?? raw.sourceField,\n targetEntity: options.targetEntity ?? raw.targetEntity ?? '',\n title: options.title ?? raw.title,\n };\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;;AAyBA;AAEA;AAEA;;AAEG;MAEU,mCAAmC,CAAA;AADhD,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC3D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AA0FjE,IAAA;;;IApFC,MAAM,OAAO,CAAC,KAAoD,EAAA;AAChE,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;QAC7C,MAAM,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACzC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,0BAA0B;QACnE,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,iCAAiC;AAEtF,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5C,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,oCAAoC,CAAC;AACzF,qBAAA;iBACF;YACH;YAEA,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG;AAChB,mBAAI,MAAM,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAC7C,YAAY,EACZ,SAAS,EACT,WAAW,CACZ;kBACD,IAAI;AACR,YAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAChC,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAChD,yFAAyF,CAC1F;AACF,qBAAA;iBACF;YACH;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,MAAM,KAAK,GACT,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;iBACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAC3C,qFAAqF,CACtF,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBACjD,KAAK;gBACL,SAAS;AACT,gBAAA,cAAc,EAAE,aAAa,CAAC,OAAO,CAAC,GAAI,OAA+B,GAAG,EAAE;AAC/E,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACnD,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;YAC3B;YAEA,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAW,CAAC;AACnG,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/E,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,kCAAkC,CAAC;AACvF,iBAAA;aACF;QACH;AAAE,QAAA,MAAM;YACN,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6CAA6C,CAAC;AAClG,iBAAA;aACF;QACH;IACF;8GA9FW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cADtB,MAAM,EAAA,CAAA,CAAA;;2FACnB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAoGlC;AAEA;AAEA,SAAS,YAAY,CAAC,KAAoD,EAAA;AACxE,IAAA,MAAM,GAAG,IAAI,KAAK,IAAI,EAAE,CAGvB;AACD,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE;AACjC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE;IAC3B,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;AAC1C,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE;AACzC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;QACjC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE;AACpC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;QACnD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE;AAC5D,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;KAClC;AACH;;"}
@@ -3,7 +3,7 @@ import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
3
3
  import { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, computed, signal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
6
- import { u as AXPTemplateWidgetProviderService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
6
+ import { u as AXPTemplateWidgetProviderService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
7
7
 
8
8
  class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {
9
9
  // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
104
104
  }], ctorParameters: () => [] });
105
105
 
106
106
  export { AXPTemplateWidgetEditComponent };
107
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-widget-edit.component-BhW_Wn7N.mjs.map
107
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-widget-edit.component-ToNSOrm0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-template-widget-edit.component-BhW_Wn7N.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/widgets/template/template-widget-edit.component.ts"],"sourcesContent":["import type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPTemplateWidgetProviderService } from '../../components/template-picker/template.provider';\n\n@Component({\n selector: 'axp-template-widget-edit',\n template: `\n @for (node of nodes(); track $index) {\n <ng-container axp-widget-renderer\n [node]=\"node\"\n [parentNode]=\"this\"\n [mode]=\"this.mode\">\n </ng-container>\n }\n <!-- @if(nodes().length>0) {\n <ng-container>\n \n </ng-container> -->\n <!-- @if(showRemove())\n {\n <div\n class=\"text-danger-500 hover:text-danger-800 mt-2 text-xs cursor-pointer\"\n (click)=\"handleRemoveClick()\"\n >\n {{ '@form-template-management:templates.terms.remove-template' | translate | async }}\n </div>\n }\n } \n @else {\n <span\n class=\"underline decoration-dotted underline-offset-8 hover:text-primary-500 cursor-pointer\"\n (click)=\"handleSelectClick()\"\n >\n {{ '@form-template-management:templates.terms.choose-template' | translate | async }}\n </span>\n } -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPWidgetCoreModule, AXTranslationModule]\n})\nexport class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {\n private metaKey = '__meta__';\n\n private templateProvider = inject(AXPTemplateWidgetProviderService);\n protected templateId = computed<string>(() => this.options()['templateId'] as string);\n protected nodes = signal<AXPWidgetNode[]>([]);\n // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);\n\n\n // protected showRemove = computed(() => {\n // return this.allowRemove() && this.parent?.config.name != 'template';\n // });\n\n constructor() {\n super();\n //\n effect(\n async () => {\n this.nodes.set([]);\n const templateId = this.templateId();\n if (templateId) {\n const item = await this.templateProvider.get(templateId);\n if (item) {\n this.nodes.set(item.nodes);\n }\n }\n }\n );\n }\n\n //TODO: make a new widget to handle select widget in edit mode\n // protected async handleSelectClick() {\n // const result = await this.templateProvider.chooseTemplate();\n // if (result) {\n // this.setOptions({ templateId: result.id });\n // const value = this.getValue() ?? {};\n // set(value, this.metaKey, { templateId: result.id });\n // this.setValue(value);\n // }\n // }\n\n // protected async handleRemoveClick() {\n // this.setOptions({ templateId: null });\n // this.setValue(null);\n // }\n}\n"],"names":[],"mappings":";;;;;;;AA4CM,MAAO,8BAA+B,SAAQ,uBAAuB,CAAA;;;;;AAazE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAbD,IAAA,CAAA,OAAO,GAAG,UAAU;AAEpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAW;uFAAC;QAC3E,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,EAAE;kFAAC;;QAW3C,MAAM,CACJ,YAAW;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5B;YACF;AACF,QAAA,CAAC,CACF;IACH;8GA5BW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,mBAAmB,uQAAE,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEvC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB;AACnD,iBAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-template-widget-edit.component-ToNSOrm0.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/widgets/template/template-widget-edit.component.ts"],"sourcesContent":["import type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPTemplateWidgetProviderService } from '../../components/template-picker/template.provider';\n\n@Component({\n selector: 'axp-template-widget-edit',\n template: `\n @for (node of nodes(); track $index) {\n <ng-container axp-widget-renderer\n [node]=\"node\"\n [parentNode]=\"this\"\n [mode]=\"this.mode\">\n </ng-container>\n }\n <!-- @if(nodes().length>0) {\n <ng-container>\n \n </ng-container> -->\n <!-- @if(showRemove())\n {\n <div\n class=\"text-danger-500 hover:text-danger-800 mt-2 text-xs cursor-pointer\"\n (click)=\"handleRemoveClick()\"\n >\n {{ '@form-template-management:templates.terms.remove-template' | translate | async }}\n </div>\n }\n } \n @else {\n <span\n class=\"underline decoration-dotted underline-offset-8 hover:text-primary-500 cursor-pointer\"\n (click)=\"handleSelectClick()\"\n >\n {{ '@form-template-management:templates.terms.choose-template' | translate | async }}\n </span>\n } -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPWidgetCoreModule, AXTranslationModule]\n})\nexport class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {\n private metaKey = '__meta__';\n\n private templateProvider = inject(AXPTemplateWidgetProviderService);\n protected templateId = computed<string>(() => this.options()['templateId'] as string);\n protected nodes = signal<AXPWidgetNode[]>([]);\n // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);\n\n\n // protected showRemove = computed(() => {\n // return this.allowRemove() && this.parent?.config.name != 'template';\n // });\n\n constructor() {\n super();\n //\n effect(\n async () => {\n this.nodes.set([]);\n const templateId = this.templateId();\n if (templateId) {\n const item = await this.templateProvider.get(templateId);\n if (item) {\n this.nodes.set(item.nodes);\n }\n }\n }\n );\n }\n\n //TODO: make a new widget to handle select widget in edit mode\n // protected async handleSelectClick() {\n // const result = await this.templateProvider.chooseTemplate();\n // if (result) {\n // this.setOptions({ templateId: result.id });\n // const value = this.getValue() ?? {};\n // set(value, this.metaKey, { templateId: result.id });\n // this.setValue(value);\n // }\n // }\n\n // protected async handleRemoveClick() {\n // this.setOptions({ templateId: null });\n // this.setValue(null);\n // }\n}\n"],"names":[],"mappings":";;;;;;;AA4CM,MAAO,8BAA+B,SAAQ,uBAAuB,CAAA;;;;;AAazE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAbD,IAAA,CAAA,OAAO,GAAG,UAAU;AAEpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAW;uFAAC;QAC3E,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,EAAE;kFAAC;;QAW3C,MAAM,CACJ,YAAW;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5B;YACF;AACF,QAAA,CAAC,CACF;IACH;8GA5BW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,mBAAmB,uQAAE,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEvC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB;AACnD,iBAAA;;;"}
@@ -10,7 +10,7 @@ import { AsyncPipe } from '@angular/common';
10
10
  import * as i0 from '@angular/core';
11
11
  import { computed, signal, model, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
12
12
  import { isEqual } from 'lodash-es';
13
- import { g as testSheetChoiceId } from './acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs';
13
+ import { g as testSheetChoiceId } from './acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs';
14
14
 
15
15
  //#region ----- Imports -----
16
16
  //#endregion
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
87
87
  }], propDecorators: { widgetConfigModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "widgetConfigModel", required: false }] }, { type: i0.Output, args: ["widgetConfigModelChange"] }] } });
88
88
 
89
89
  export { AXMTestSheetCellTypeWidgetEditComponent };
90
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-Dkaw3T8R.mjs.map
90
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-IrGyg6gp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-Dkaw3T8R.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-cell-type-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-cell-type-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetFieldConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport { testSheetChoiceId } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-cell-type-widget-edit',\n templateUrl: './test-sheet-cell-type-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXFormModule, AXLabelModule, AXTranslationModule, AXPWidgetFieldConfiguratorComponent],\n host: {\n class: 'block w-full min-w-0',\n '[class.hidden]': '!showCellType()',\n },\n})\nexport class AXMTestSheetCellTypeWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n //#region ----- Constants -----\n\n protected readonly cellTypeLabel = '@assessment-management:widgets.test-sheet.columns.widget';\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n /** Static columns are authored text. Only an input column picks a cell widget. */\n protected readonly showCellType = computed(() => {\n this.contextService.changeEvent();\n const parent = this.parentPath();\n if (!parent) {\n return false;\n }\n return testSheetChoiceId(this.contextService.getValue(`${parent}.role`)) !== 'static';\n });\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isInitialized = signal(false);\n\n protected readonly widgetConfigModel = model<AXPWidgetNode>({ type: '', options: {} });\n\n //#endregion\n\n //#region ----- Effects -----\n\n private readonly syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n if (value && value.type) {\n const currentModel = untracked(() => this.widgetConfigModel());\n if (!isEqual(value, currentModel)) {\n untracked(() => {\n this.widgetConfigModel.set(value);\n this.isInitialized.set(true);\n });\n }\n return;\n }\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private readonly syncConfiguratorToValue = effect(() => {\n const modelValue = this.widgetConfigModel();\n if (!untracked(() => this.isInitialized()) || !modelValue?.type) {\n return;\n }\n const currentValue = untracked(() => this.getValue());\n if (!isEqual(modelValue, currentValue)) {\n untracked(() => {\n this.setValue(modelValue);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Cell type only when the column is an input ----- -->\n@if (showCellType()) {\n <ax-form-field>\n <ax-label>{{ cellTypeLabel | translate | async }}</ax-label>\n <!-- --------------------------------------------------------------- -->\n <!-- ----- Widget picker after the current cell widget has loaded ----- -->\n @if (isInitialized()) {\n <axp-widget-field-configurator\n [(widget)]=\"widgetConfigModel\"\n [label]=\"cellTypeLabel\"\n [readonly]=\"isReadonly()\"\n ></axp-widget-field-configurator>\n }\n </ax-form-field>\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-IrGyg6gp.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-cell-type-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-cell-type-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetFieldConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport { testSheetChoiceId } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-cell-type-widget-edit',\n templateUrl: './test-sheet-cell-type-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXFormModule, AXLabelModule, AXTranslationModule, AXPWidgetFieldConfiguratorComponent],\n host: {\n class: 'block w-full min-w-0',\n '[class.hidden]': '!showCellType()',\n },\n})\nexport class AXMTestSheetCellTypeWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n //#region ----- Constants -----\n\n protected readonly cellTypeLabel = '@assessment-management:widgets.test-sheet.columns.widget';\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n /** Static columns are authored text. Only an input column picks a cell widget. */\n protected readonly showCellType = computed(() => {\n this.contextService.changeEvent();\n const parent = this.parentPath();\n if (!parent) {\n return false;\n }\n return testSheetChoiceId(this.contextService.getValue(`${parent}.role`)) !== 'static';\n });\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isInitialized = signal(false);\n\n protected readonly widgetConfigModel = model<AXPWidgetNode>({ type: '', options: {} });\n\n //#endregion\n\n //#region ----- Effects -----\n\n private readonly syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n if (value && value.type) {\n const currentModel = untracked(() => this.widgetConfigModel());\n if (!isEqual(value, currentModel)) {\n untracked(() => {\n this.widgetConfigModel.set(value);\n this.isInitialized.set(true);\n });\n }\n return;\n }\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private readonly syncConfiguratorToValue = effect(() => {\n const modelValue = this.widgetConfigModel();\n if (!untracked(() => this.isInitialized()) || !modelValue?.type) {\n return;\n }\n const currentValue = untracked(() => this.getValue());\n if (!isEqual(modelValue, currentValue)) {\n untracked(() => {\n this.setValue(modelValue);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Cell type only when the column is an input ----- -->\n@if (showCellType()) {\n <ax-form-field>\n <ax-label>{{ cellTypeLabel | translate | async }}</ax-label>\n <!-- --------------------------------------------------------------- -->\n <!-- ----- Widget picker after the current cell widget has loaded ----- -->\n @if (isInitialized()) {\n <axp-widget-field-configurator\n [(widget)]=\"widgetConfigModel\"\n [label]=\"cellTypeLabel\"\n [readonly]=\"isReadonly()\"\n ></axp-widget-field-configurator>\n }\n </ax-form-field>\n}\n"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ import { AXPSpreadsheetComponent } from '@acorex-platform/framework-client/layou
4
4
  import { AsyncPipe } from '@angular/common';
5
5
  import * as i0 from '@angular/core';
6
6
  import { input, model, output, computed, ChangeDetectionStrategy, Component } from '@angular/core';
7
- import { x as AXM_TEST_SHEET_ROW_GROUP_PATH } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
8
- import { t as toTestSheetSpreadsheetColumns, c as toTestSheetRowWidgets, d as testSheetHasRowGroups } from './acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs';
7
+ import { x as AXM_TEST_SHEET_ROW_GROUP_PATH } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
8
+ import { t as toTestSheetSpreadsheetColumns, c as toTestSheetRowWidgets, d as testSheetHasRowGroups } from './acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs';
9
9
 
10
10
  //#region ----- Imports -----
11
11
  //#endregion
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
74
74
  }], propDecorators: { definition: [{ type: i0.Input, args: [{ isSignal: true, alias: "definition", required: true }] }], rowsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowsInput", required: false }] }], rowsModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowsModel", required: false }] }, { type: i0.Output, args: ["rowsModelChange"] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], sheetChange: [{ type: i0.Output, args: ["sheetChange"] }] } });
75
75
 
76
76
  export { AXMTestSheetGridComponent as A };
77
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-grid.component-BCRIENMA.mjs.map
77
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-grid.component-YuI3fd0M.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-grid.component-BCRIENMA.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-grid.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-grid.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSpreadsheetComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\n\nimport { AXM_TEST_SHEET_ROW_GROUP_PATH, type AXMTestSheetDefinition } from './test-sheet.types';\nimport { testSheetHasRowGroups, toTestSheetRowWidgets, toTestSheetSpreadsheetColumns } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-grid',\n templateUrl: './test-sheet-grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule, AXPSpreadsheetComponent],\n})\nexport class AXMTestSheetGridComponent {\n //#region ----- Inputs -----\n\n definition = input.required<AXMTestSheetDefinition>();\n\n /** Fixed-mode rows. */\n rowsInput = input<Record<string, unknown>[]>([]);\n\n /** Repeated-mode rows. */\n rowsModel = model<Record<string, unknown>[]>([]);\n\n readonly = input(false);\n\n //#endregion\n\n //#region ----- Outputs -----\n\n sheetChange = output<Record<string, unknown>[]>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly rowInputs = computed(() => this.definition().layout === 'row-inputs');\n\n protected readonly sheetDir = computed(() => {\n const direction = this.definition().direction;\n if (direction) {\n return direction;\n }\n return this.rowInputs() ? 'rtl' : null;\n });\n\n protected readonly columns = computed(() => toTestSheetSpreadsheetColumns(this.definition()));\n\n protected readonly rowWidgets = computed(() => toTestSheetRowWidgets(this.definition()));\n\n protected readonly spreadsheetRowMode = computed(() =>\n this.definition().rowMode === 'repeated' ? 'dynamic' : 'fixed',\n );\n\n protected readonly rowGroupPath = computed(() =>\n testSheetHasRowGroups(this.definition()) ? AXM_TEST_SHEET_ROW_GROUP_PATH : null,\n );\n\n protected readonly sheetTitle = computed(() => {\n if (this.rowInputs()) {\n return this.definition().rowHeaderTitle ?? '';\n }\n return this.rowGroupPath() ? '@assessment-management:widgets.test-sheet.group-header' : '';\n });\n\n protected readonly showRowHeader = computed(\n () => this.rowInputs() || this.definition().rowMode === 'repeated',\n );\n\n protected readonly rowTitlePath = computed(() => (this.rowInputs() ? 'title' : null));\n\n protected readonly allowRowChanges = computed(\n () => this.definition().rowMode === 'repeated' && !this.readonly(),\n );\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSheetChange(rows: Record<string, unknown>[]): void {\n this.sheetChange.emit(rows);\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (columns().length === 0) {\n <!-- ----- Prompt when the question has no columns yet ----- -->\n <p class=\"text-sm text-neutral-500 py-2\">\n {{ '@assessment-management:widgets.test-sheet.empty-sheet' | translate | async }}\n </p>\n}\n<!-- ----- Spreadsheet bound to the authored columns and row mode ----- -->\n@else {\n <div [attr.dir]=\"sheetDir()\">\n <axp-spreadsheet\n [title]=\"sheetTitle()\"\n [columns]=\"columns()\"\n [rowWidgets]=\"rowWidgets()\"\n [rowMode]=\"spreadsheetRowMode()\"\n [rowsInput]=\"rowsInput()\"\n [(rowsModel)]=\"rowsModel\"\n [readonly]=\"readonly()\"\n [showRowHeader]=\"showRowHeader()\"\n [rowTitlePath]=\"rowTitlePath()\"\n [rowGroupPath]=\"rowGroupPath()\"\n [allowAddRows]=\"allowRowChanges()\"\n [allowRemoveRows]=\"allowRowChanges()\"\n [showCellActions]=\"false\"\n emptyCellPlaceholder=\"–\"\n (spreadsheetChange)=\"onSheetChange($event)\"\n />\n </div>\n}\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-grid.component-YuI3fd0M.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-grid.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-grid.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSpreadsheetComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\n\nimport { AXM_TEST_SHEET_ROW_GROUP_PATH, type AXMTestSheetDefinition } from './test-sheet.types';\nimport { testSheetHasRowGroups, toTestSheetRowWidgets, toTestSheetSpreadsheetColumns } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-grid',\n templateUrl: './test-sheet-grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule, AXPSpreadsheetComponent],\n})\nexport class AXMTestSheetGridComponent {\n //#region ----- Inputs -----\n\n definition = input.required<AXMTestSheetDefinition>();\n\n /** Fixed-mode rows. */\n rowsInput = input<Record<string, unknown>[]>([]);\n\n /** Repeated-mode rows. */\n rowsModel = model<Record<string, unknown>[]>([]);\n\n readonly = input(false);\n\n //#endregion\n\n //#region ----- Outputs -----\n\n sheetChange = output<Record<string, unknown>[]>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly rowInputs = computed(() => this.definition().layout === 'row-inputs');\n\n protected readonly sheetDir = computed(() => {\n const direction = this.definition().direction;\n if (direction) {\n return direction;\n }\n return this.rowInputs() ? 'rtl' : null;\n });\n\n protected readonly columns = computed(() => toTestSheetSpreadsheetColumns(this.definition()));\n\n protected readonly rowWidgets = computed(() => toTestSheetRowWidgets(this.definition()));\n\n protected readonly spreadsheetRowMode = computed(() =>\n this.definition().rowMode === 'repeated' ? 'dynamic' : 'fixed',\n );\n\n protected readonly rowGroupPath = computed(() =>\n testSheetHasRowGroups(this.definition()) ? AXM_TEST_SHEET_ROW_GROUP_PATH : null,\n );\n\n protected readonly sheetTitle = computed(() => {\n if (this.rowInputs()) {\n return this.definition().rowHeaderTitle ?? '';\n }\n return this.rowGroupPath() ? '@assessment-management:widgets.test-sheet.group-header' : '';\n });\n\n protected readonly showRowHeader = computed(\n () => this.rowInputs() || this.definition().rowMode === 'repeated',\n );\n\n protected readonly rowTitlePath = computed(() => (this.rowInputs() ? 'title' : null));\n\n protected readonly allowRowChanges = computed(\n () => this.definition().rowMode === 'repeated' && !this.readonly(),\n );\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSheetChange(rows: Record<string, unknown>[]): void {\n this.sheetChange.emit(rows);\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (columns().length === 0) {\n <!-- ----- Prompt when the question has no columns yet ----- -->\n <p class=\"text-sm text-neutral-500 py-2\">\n {{ '@assessment-management:widgets.test-sheet.empty-sheet' | translate | async }}\n </p>\n}\n<!-- ----- Spreadsheet bound to the authored columns and row mode ----- -->\n@else {\n <div [attr.dir]=\"sheetDir()\">\n <axp-spreadsheet\n [title]=\"sheetTitle()\"\n [columns]=\"columns()\"\n [rowWidgets]=\"rowWidgets()\"\n [rowMode]=\"spreadsheetRowMode()\"\n [rowsInput]=\"rowsInput()\"\n [(rowsModel)]=\"rowsModel\"\n [readonly]=\"readonly()\"\n [showRowHeader]=\"showRowHeader()\"\n [rowTitlePath]=\"rowTitlePath()\"\n [rowGroupPath]=\"rowGroupPath()\"\n [allowAddRows]=\"allowRowChanges()\"\n [allowRemoveRows]=\"allowRowChanges()\"\n [showCellActions]=\"false\"\n emptyCellPlaceholder=\"–\"\n (spreadsheetChange)=\"onSheetChange($event)\"\n />\n </div>\n}\n"],"names":["i1"],"mappings":"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"}
@@ -7,8 +7,8 @@ import * as i0 from '@angular/core';
7
7
  import { computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
8
8
  import { isEqual } from 'lodash-es';
9
9
  import { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';
10
- import { z as AXM_TEST_SHEET_CELL_TYPE_WIDGET } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-sm_OxV_k.mjs';
11
- import { g as testSheetChoiceId, h as assignTestSheetItemNames, i as ensureTestSheetColumnWidgets } from './acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs';
10
+ import { z as AXM_TEST_SHEET_CELL_TYPE_WIDGET } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-5wbq3eEn.mjs';
11
+ import { g as testSheetChoiceId, h as assignTestSheetItemNames, i as ensureTestSheetColumnWidgets } from './acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs';
12
12
 
13
13
  //#region ----- Constants -----
14
14
  const ID_VALUE = objectKeyValueTransforms('id');
@@ -233,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
233
233
  }], ctorParameters: () => [] });
234
234
 
235
235
  export { AXMTestSheetSchemaWidgetEditComponent };
236
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CFu_CQ91.mjs.map
236
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bj3yQcnK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CFu_CQ91.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema.layout.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema-widget-edit.component.html"],"sourcesContent":["import { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\n\nimport { AXM_TEST_SHEET_CELL_TYPE_WIDGET } from './test-sheet.types';\n\n//#region ----- Constants -----\n\nconst ID_VALUE = objectKeyValueTransforms('id');\n\nconst ROW_MODE_ITEMS = [\n { id: 'fixed', title: '@assessment-management:widgets.test-sheet.row-mode.fixed' },\n { id: 'repeated', title: '@assessment-management:widgets.test-sheet.row-mode.repeated' },\n];\n\nconst COLUMN_ROLE_ITEMS = [\n { id: 'static', title: '@assessment-management:widgets.test-sheet.columns.static' },\n { id: 'input', title: '@assessment-management:widgets.test-sheet.columns.input' },\n];\n\nconst COLUMN_DEFAULT_ITEM = {\n name: '',\n title: '',\n groupTitle: '',\n role: 'input',\n widget: { type: 'text-editor', options: {} },\n};\n\nconst ROW_DEFAULT_ITEM = {\n name: '',\n groupTitle: '',\n cells: {},\n};\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMTestSheetSchemaStaticColumn {\n name: string;\n title: string;\n}\n\n//#endregion\n\n//#region ----- Layout -----\n\nexport function buildTestSheetRowModeNode(disabled: boolean): AXPWidgetNode {\n return labeledField('@assessment-management:widgets.test-sheet.row-mode.title', {\n type: 'select-editor',\n name: 'rowMode',\n path: 'rowMode',\n valueTransforms: ID_VALUE,\n options: {\n disabled,\n valueField: 'id',\n textField: 'title',\n dataSource: ROW_MODE_ITEMS,\n },\n }, 'fill');\n}\n\nexport function buildTestSheetColumnsNode(disabled: boolean): AXPWidgetNode {\n return repeaterNode('columns', disabled, COLUMN_DEFAULT_ITEM, [\n cardLayout([\n fieldRow([\n labeledField('@assessment-management:widgets.test-sheet.columns.name', textField('title', disabled), 'half'),\n labeledField(\n '@assessment-management:widgets.test-sheet.columns.group-title',\n textField('groupTitle', disabled),\n 'half',\n ),\n ]),\n labeledField(\n '@assessment-management:widgets.test-sheet.columns.role',\n selectField('role', COLUMN_ROLE_ITEMS, disabled),\n 'fill',\n ),\n {\n type: AXM_TEST_SHEET_CELL_TYPE_WIDGET,\n name: 'widget',\n path: 'widget',\n options: { readonly: disabled },\n },\n ]),\n ]);\n}\n\nexport function buildTestSheetRowsNode(\n disabled: boolean,\n staticColumns: AXMTestSheetSchemaStaticColumn[],\n): AXPWidgetNode {\n return repeaterNode('rows', disabled, ROW_DEFAULT_ITEM, [\n cardLayout([\n labeledField(\n '@assessment-management:widgets.test-sheet.rows.group-title',\n textField('groupTitle', disabled),\n 'fill',\n ),\n ...staticColumns.map((column) =>\n labeledField(column.title, textField(`cells.${column.name}`, disabled), 'fill'),\n ),\n ]),\n ]);\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction repeaterNode(\n path: 'columns' | 'rows',\n disabled: boolean,\n defaultItem: Record<string, unknown>,\n children: AXPWidgetNode[],\n): AXPWidgetNode {\n return {\n type: 'repeater-layout',\n name: path,\n path,\n options: {\n hasControls: true,\n allowReorder: !disabled,\n disabled,\n defaultItem,\n },\n children,\n };\n}\n\n/** Rounded card. This is the repeater row root. */\nfunction cardLayout(children: AXPWidgetNode[]): AXPWidgetNode {\n return {\n type: 'flex-layout',\n options: {\n flexDirection: 'column',\n flexWrap: 'nowrap',\n alignItems: 'stretch',\n gap: '12px',\n width: '100%',\n spacing: { padding: '12px', margin: '0' },\n border: {\n width: '1px',\n style: 'solid',\n radius: '0.5rem',\n color: 'rgb(var(--ax-sys-color-border-lighter-surface))',\n },\n },\n children,\n };\n}\n\nfunction fieldRow(children: AXPWidgetNode[]): AXPWidgetNode {\n return {\n type: 'flex-layout',\n options: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n alignItems: 'flex-start',\n gap: '12px',\n width: '100%',\n },\n children,\n };\n}\n\nfunction labeledField(\n label: string,\n editor: AXPWidgetNode,\n size: 'half' | 'fill',\n): AXPWidgetNode {\n const box =\n size === 'half'\n ? { width: 'calc(50% - 6px)', minWidth: '12rem' }\n : { width: '100%', minWidth: '0' };\n return {\n type: 'form-field',\n options: {\n label,\n showLabel: true,\n ...box,\n },\n children: [editor],\n };\n}\n\nfunction textField(path: string, disabled: boolean): AXPWidgetNode {\n return {\n type: 'text-editor',\n name: path,\n path,\n options: { disabled },\n };\n}\n\nfunction selectField(\n path: string,\n dataSource: { id: string; title: string }[],\n disabled: boolean,\n): AXPWidgetNode {\n return {\n type: 'select-editor',\n name: path,\n path,\n valueTransforms: ID_VALUE,\n options: {\n disabled,\n valueField: 'id',\n textField: 'title',\n dataSource,\n },\n };\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport {\n buildTestSheetColumnsNode,\n buildTestSheetRowModeNode,\n buildTestSheetRowsNode,\n type AXMTestSheetSchemaStaticColumn,\n} from './test-sheet-schema.layout';\nimport type { AXMTestSheetDefinition } from './test-sheet.types';\nimport { assignTestSheetItemNames, ensureTestSheetColumnWidgets, testSheetChoiceId } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-schema-widget-edit',\n templateUrl: './test-sheet-schema-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule, AXPWidgetCoreModule],\n})\nexport class AXMTestSheetSchemaWidgetEditComponent extends AXPValueWidgetComponent<AXMTestSheetDefinition | null> {\n //#region ----- Computed Properties -----\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n protected readonly rowModeNode = computed(() => buildTestSheetRowModeNode(this.isReadonly()));\n\n protected readonly columnsNode = computed(() => buildTestSheetColumnsNode(this.isReadonly()));\n\n protected readonly showFixedRows = computed(\n () => testSheetChoiceId(this.getValue()?.rowMode) !== 'repeated',\n );\n\n protected readonly staticColumns = computed(\n () => {\n const columns = this.getValue()?.columns;\n if (!Array.isArray(columns)) {\n return [] as AXMTestSheetSchemaStaticColumn[];\n }\n return columns\n .filter(\n (column) =>\n typeof column?.name === 'string' &&\n column.name.trim().length > 0 &&\n testSheetChoiceId(column.role) === 'static',\n )\n .map((column) => ({\n name: column.name.trim(),\n title: typeof column.title === 'string' && column.title.trim() ? column.title.trim() : column.name.trim(),\n }));\n },\n { equal: isEqual },\n );\n\n protected readonly rowsNode = computed(() => buildTestSheetRowsNode(this.isReadonly(), this.staticColumns()));\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n this.contextService.changeEvent();\n this.assignMissingNames();\n });\n }\n\n //#endregion\n\n //#region ----- Schema Updates -----\n\n /**\n * Repeater rows start without a column or row key.\n * Names are assigned once so static cells and answers keep a stable path.\n * Input columns that only have a legacy widget type get a widget node for the configurator.\n */\n private assignMissingNames(): void {\n const value = this.getValue();\n if (!value || typeof value !== 'object') {\n return;\n }\n const namedColumns = Array.isArray(value.columns) ? assignTestSheetItemNames(value.columns, 'col') : null;\n const columns = namedColumns ? ensureTestSheetColumnWidgets(namedColumns.items) : null;\n const rows = Array.isArray(value.rows) ? assignTestSheetItemNames(value.rows, 'row') : null;\n const columnsChanged = !!namedColumns?.changed || !!columns?.changed;\n if (!columnsChanged && !rows?.changed) {\n return;\n }\n this.setValue({\n ...value,\n ...(columnsChanged && columns ? { columns: columns.items } : {}),\n ...(rows?.changed ? { rows: rows.items } : {}),\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"flex flex-col gap-4\">\n <!-- ----- Row mode: fixed template or respondent-added rows ----- -->\n <ng-container axp-widget-renderer [node]=\"rowModeNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n\n <!-- ----- Columns: each repeater row is a bordered flex card ----- -->\n <section class=\"flex flex-col gap-2\">\n <h3 class=\"text-sm font-medium\">\n {{ '@assessment-management:widgets.test-sheet.columns.title' | translate | async }}\n </h3>\n <ng-container axp-widget-renderer [node]=\"columnsNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n </section>\n\n <!-- ----- Fixed rows and the merged title that can span them ----- -->\n @if (showFixedRows()) {\n <section class=\"flex flex-col gap-2\">\n <h3 class=\"text-sm font-medium\">\n {{ '@assessment-management:widgets.test-sheet.rows.title' | translate | async }}\n </h3>\n <ng-container axp-widget-renderer [node]=\"rowsNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n </section>\n }\n</div>\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-Bj3yQcnK.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema.layout.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-schema-widget-edit.component.html"],"sourcesContent":["import { objectKeyValueTransforms } from '@acorex-platform/framework-client/core';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\n\nimport { AXM_TEST_SHEET_CELL_TYPE_WIDGET } from './test-sheet.types';\n\n//#region ----- Constants -----\n\nconst ID_VALUE = objectKeyValueTransforms('id');\n\nconst ROW_MODE_ITEMS = [\n { id: 'fixed', title: '@assessment-management:widgets.test-sheet.row-mode.fixed' },\n { id: 'repeated', title: '@assessment-management:widgets.test-sheet.row-mode.repeated' },\n];\n\nconst COLUMN_ROLE_ITEMS = [\n { id: 'static', title: '@assessment-management:widgets.test-sheet.columns.static' },\n { id: 'input', title: '@assessment-management:widgets.test-sheet.columns.input' },\n];\n\nconst COLUMN_DEFAULT_ITEM = {\n name: '',\n title: '',\n groupTitle: '',\n role: 'input',\n widget: { type: 'text-editor', options: {} },\n};\n\nconst ROW_DEFAULT_ITEM = {\n name: '',\n groupTitle: '',\n cells: {},\n};\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMTestSheetSchemaStaticColumn {\n name: string;\n title: string;\n}\n\n//#endregion\n\n//#region ----- Layout -----\n\nexport function buildTestSheetRowModeNode(disabled: boolean): AXPWidgetNode {\n return labeledField('@assessment-management:widgets.test-sheet.row-mode.title', {\n type: 'select-editor',\n name: 'rowMode',\n path: 'rowMode',\n valueTransforms: ID_VALUE,\n options: {\n disabled,\n valueField: 'id',\n textField: 'title',\n dataSource: ROW_MODE_ITEMS,\n },\n }, 'fill');\n}\n\nexport function buildTestSheetColumnsNode(disabled: boolean): AXPWidgetNode {\n return repeaterNode('columns', disabled, COLUMN_DEFAULT_ITEM, [\n cardLayout([\n fieldRow([\n labeledField('@assessment-management:widgets.test-sheet.columns.name', textField('title', disabled), 'half'),\n labeledField(\n '@assessment-management:widgets.test-sheet.columns.group-title',\n textField('groupTitle', disabled),\n 'half',\n ),\n ]),\n labeledField(\n '@assessment-management:widgets.test-sheet.columns.role',\n selectField('role', COLUMN_ROLE_ITEMS, disabled),\n 'fill',\n ),\n {\n type: AXM_TEST_SHEET_CELL_TYPE_WIDGET,\n name: 'widget',\n path: 'widget',\n options: { readonly: disabled },\n },\n ]),\n ]);\n}\n\nexport function buildTestSheetRowsNode(\n disabled: boolean,\n staticColumns: AXMTestSheetSchemaStaticColumn[],\n): AXPWidgetNode {\n return repeaterNode('rows', disabled, ROW_DEFAULT_ITEM, [\n cardLayout([\n labeledField(\n '@assessment-management:widgets.test-sheet.rows.group-title',\n textField('groupTitle', disabled),\n 'fill',\n ),\n ...staticColumns.map((column) =>\n labeledField(column.title, textField(`cells.${column.name}`, disabled), 'fill'),\n ),\n ]),\n ]);\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction repeaterNode(\n path: 'columns' | 'rows',\n disabled: boolean,\n defaultItem: Record<string, unknown>,\n children: AXPWidgetNode[],\n): AXPWidgetNode {\n return {\n type: 'repeater-layout',\n name: path,\n path,\n options: {\n hasControls: true,\n allowReorder: !disabled,\n disabled,\n defaultItem,\n },\n children,\n };\n}\n\n/** Rounded card. This is the repeater row root. */\nfunction cardLayout(children: AXPWidgetNode[]): AXPWidgetNode {\n return {\n type: 'flex-layout',\n options: {\n flexDirection: 'column',\n flexWrap: 'nowrap',\n alignItems: 'stretch',\n gap: '12px',\n width: '100%',\n spacing: { padding: '12px', margin: '0' },\n border: {\n width: '1px',\n style: 'solid',\n radius: '0.5rem',\n color: 'rgb(var(--ax-sys-color-border-lighter-surface))',\n },\n },\n children,\n };\n}\n\nfunction fieldRow(children: AXPWidgetNode[]): AXPWidgetNode {\n return {\n type: 'flex-layout',\n options: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n alignItems: 'flex-start',\n gap: '12px',\n width: '100%',\n },\n children,\n };\n}\n\nfunction labeledField(\n label: string,\n editor: AXPWidgetNode,\n size: 'half' | 'fill',\n): AXPWidgetNode {\n const box =\n size === 'half'\n ? { width: 'calc(50% - 6px)', minWidth: '12rem' }\n : { width: '100%', minWidth: '0' };\n return {\n type: 'form-field',\n options: {\n label,\n showLabel: true,\n ...box,\n },\n children: [editor],\n };\n}\n\nfunction textField(path: string, disabled: boolean): AXPWidgetNode {\n return {\n type: 'text-editor',\n name: path,\n path,\n options: { disabled },\n };\n}\n\nfunction selectField(\n path: string,\n dataSource: { id: string; title: string }[],\n disabled: boolean,\n): AXPWidgetNode {\n return {\n type: 'select-editor',\n name: path,\n path,\n valueTransforms: ID_VALUE,\n options: {\n disabled,\n valueField: 'id',\n textField: 'title',\n dataSource,\n },\n };\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport {\n buildTestSheetColumnsNode,\n buildTestSheetRowModeNode,\n buildTestSheetRowsNode,\n type AXMTestSheetSchemaStaticColumn,\n} from './test-sheet-schema.layout';\nimport type { AXMTestSheetDefinition } from './test-sheet.types';\nimport { assignTestSheetItemNames, ensureTestSheetColumnWidgets, testSheetChoiceId } from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-schema-widget-edit',\n templateUrl: './test-sheet-schema-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule, AXPWidgetCoreModule],\n})\nexport class AXMTestSheetSchemaWidgetEditComponent extends AXPValueWidgetComponent<AXMTestSheetDefinition | null> {\n //#region ----- Computed Properties -----\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n protected readonly rowModeNode = computed(() => buildTestSheetRowModeNode(this.isReadonly()));\n\n protected readonly columnsNode = computed(() => buildTestSheetColumnsNode(this.isReadonly()));\n\n protected readonly showFixedRows = computed(\n () => testSheetChoiceId(this.getValue()?.rowMode) !== 'repeated',\n );\n\n protected readonly staticColumns = computed(\n () => {\n const columns = this.getValue()?.columns;\n if (!Array.isArray(columns)) {\n return [] as AXMTestSheetSchemaStaticColumn[];\n }\n return columns\n .filter(\n (column) =>\n typeof column?.name === 'string' &&\n column.name.trim().length > 0 &&\n testSheetChoiceId(column.role) === 'static',\n )\n .map((column) => ({\n name: column.name.trim(),\n title: typeof column.title === 'string' && column.title.trim() ? column.title.trim() : column.name.trim(),\n }));\n },\n { equal: isEqual },\n );\n\n protected readonly rowsNode = computed(() => buildTestSheetRowsNode(this.isReadonly(), this.staticColumns()));\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n this.contextService.changeEvent();\n this.assignMissingNames();\n });\n }\n\n //#endregion\n\n //#region ----- Schema Updates -----\n\n /**\n * Repeater rows start without a column or row key.\n * Names are assigned once so static cells and answers keep a stable path.\n * Input columns that only have a legacy widget type get a widget node for the configurator.\n */\n private assignMissingNames(): void {\n const value = this.getValue();\n if (!value || typeof value !== 'object') {\n return;\n }\n const namedColumns = Array.isArray(value.columns) ? assignTestSheetItemNames(value.columns, 'col') : null;\n const columns = namedColumns ? ensureTestSheetColumnWidgets(namedColumns.items) : null;\n const rows = Array.isArray(value.rows) ? assignTestSheetItemNames(value.rows, 'row') : null;\n const columnsChanged = !!namedColumns?.changed || !!columns?.changed;\n if (!columnsChanged && !rows?.changed) {\n return;\n }\n this.setValue({\n ...value,\n ...(columnsChanged && columns ? { columns: columns.items } : {}),\n ...(rows?.changed ? { rows: rows.items } : {}),\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"flex flex-col gap-4\">\n <!-- ----- Row mode: fixed template or respondent-added rows ----- -->\n <ng-container axp-widget-renderer [node]=\"rowModeNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n\n <!-- ----- Columns: each repeater row is a bordered flex card ----- -->\n <section class=\"flex flex-col gap-2\">\n <h3 class=\"text-sm font-medium\">\n {{ '@assessment-management:widgets.test-sheet.columns.title' | translate | async }}\n </h3>\n <ng-container axp-widget-renderer [node]=\"columnsNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n </section>\n\n <!-- ----- Fixed rows and the merged title that can span them ----- -->\n @if (showFixedRows()) {\n <section class=\"flex flex-col gap-2\">\n <h3 class=\"text-sm font-medium\">\n {{ '@assessment-management:widgets.test-sheet.rows.title' | translate | async }}\n </h3>\n <ng-container axp-widget-renderer [node]=\"rowsNode()\" [parentNode]=\"this\" [mode]=\"'edit'\"></ng-container>\n </section>\n }\n</div>\n"],"names":["i2"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layou
2
2
  import * as i0 from '@angular/core';
3
3
  import { model, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { isEqual } from 'lodash-es';
5
- import { A as AXMTestSheetGridComponent } from './acorex-platform-module-assessment-management-client-test-sheet-grid.component-BCRIENMA.mjs';
6
- import { n as normalizeTestSheetDefinition, a as buildRepeatedTestSheetRows, b as buildFixedTestSheetRows, e as applyTestSheetComputations, f as toStoredTestSheetAnswer } from './acorex-platform-module-assessment-management-client-test-sheet.util-CPbgWk5E.mjs';
5
+ import { A as AXMTestSheetGridComponent } from './acorex-platform-module-assessment-management-client-test-sheet-grid.component-YuI3fd0M.mjs';
6
+ import { n as normalizeTestSheetDefinition, a as buildRepeatedTestSheetRows, b as buildFixedTestSheetRows, e as applyTestSheetComputations, f as toStoredTestSheetAnswer } from './acorex-platform-module-assessment-management-client-test-sheet.util-Dtmdv9Za.mjs';
7
7
 
8
8
  //#region ----- Imports -----
9
9
  //#endregion
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
78
78
  }], ctorParameters: () => [], propDecorators: { repeatedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "repeatedRows", required: false }] }, { type: i0.Output, args: ["repeatedRowsChange"] }] } });
79
79
 
80
80
  export { AXMTestSheetWidgetEditComponent };
81
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DdC83GV8.mjs.map
81
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-jiWQ9kKS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DdC83GV8.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport { AXMTestSheetGridComponent } from './test-sheet-grid.component';\nimport type { AXMTestSheetDefinition } from './test-sheet.types';\nimport {\n applyTestSheetComputations,\n buildFixedTestSheetRows,\n buildRepeatedTestSheetRows,\n normalizeTestSheetDefinition,\n toStoredTestSheetAnswer,\n} from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-widget-edit',\n templateUrl: './test-sheet-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMTestSheetGridComponent],\n})\nexport class AXMTestSheetWidgetEditComponent extends AXPValueWidgetComponent<Record<string, unknown>[] | null> {\n //#region ----- State Signals -----\n\n protected readonly repeatedRows = model<Record<string, unknown>[]>([]);\n\n /** Fixed-mode rows. Stops tracking the saved answer after the first edit so the grid is not rebuilt. */\n protected readonly fixedRows = signal<Record<string, unknown>[]>([]);\n\n private answerTouched = false;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly definition = computed<AXMTestSheetDefinition>(() =>\n normalizeTestSheetDefinition(this.options()['sheet']),\n );\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const definition = this.definition();\n const value = this.getValue();\n if (this.answerTouched) {\n return;\n }\n untracked(() => {\n if (definition.rowMode === 'repeated') {\n const next = buildRepeatedTestSheetRows(value);\n if (!isEqual(next, this.repeatedRows())) {\n this.repeatedRows.set(next);\n }\n return;\n }\n const next = buildFixedTestSheetRows(definition, value);\n if (!isEqual(next, this.fixedRows())) {\n this.fixedRows.set(next);\n }\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSheetChange(rows: Record<string, unknown>[]): void {\n if (this.isReadonly()) {\n return;\n }\n this.answerTouched = true;\n const next = applyTestSheetComputations(rows, this.definition());\n if (next !== rows) {\n if (this.definition().rowMode === 'repeated') {\n this.repeatedRows.set(next);\n } else {\n this.fixedRows.set(next);\n }\n }\n const stored = toStoredTestSheetAnswer(next, this.definition());\n const current = this.getValue() ?? null;\n if (!isEqual(stored, current)) {\n this.setValue(stored);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<axm-test-sheet-grid\n [definition]=\"definition()\"\n [rowsInput]=\"fixedRows()\"\n [(rowsModel)]=\"repeatedRows\"\n [readonly]=\"isReadonly()\"\n (sheetChange)=\"onSheetChange($event)\"\n/>\n"],"names":[],"mappings":";;;;;;;AAAA;AAgBA;AAEA;AAQM,MAAO,+BAAgC,SAAQ,uBAAyD,CAAA;;;AAwB5G,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;QAtBU,IAAA,CAAA,YAAY,GAAG,KAAK,CAA4B,EAAE;yFAAC;;QAGnD,IAAA,CAAA,SAAS,GAAG,MAAM,CAA4B,EAAE;sFAAC;QAE5D,IAAA,CAAA,aAAa,GAAG,KAAK;;;AAMV,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAyB,MAC/D,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;uFACtD;AAEkB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI;uFAAC;QAQjF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB;YACF;YACA,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;AACrC,oBAAA,MAAM,IAAI,GAAG,0BAA0B,CAAC,KAAK,CAAC;oBAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AACvC,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC7B;oBACA;gBACF;gBACA,MAAM,IAAI,GAAG,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC;gBACvD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACpC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;;AAMU,IAAA,aAAa,CAAC,IAA+B,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,MAAM,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAChE,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;QACF;QACA,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI;QACvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB;IACF;8GAtEW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B5C,wMAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiBY,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAExB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,mBAErB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,wMAAA,EAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-jiWQ9kKS.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-widget-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/test-sheet/test-sheet-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\nimport { AXMTestSheetGridComponent } from './test-sheet-grid.component';\nimport type { AXMTestSheetDefinition } from './test-sheet.types';\nimport {\n applyTestSheetComputations,\n buildFixedTestSheetRows,\n buildRepeatedTestSheetRows,\n normalizeTestSheetDefinition,\n toStoredTestSheetAnswer,\n} from './test-sheet.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-test-sheet-widget-edit',\n templateUrl: './test-sheet-widget-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMTestSheetGridComponent],\n})\nexport class AXMTestSheetWidgetEditComponent extends AXPValueWidgetComponent<Record<string, unknown>[] | null> {\n //#region ----- State Signals -----\n\n protected readonly repeatedRows = model<Record<string, unknown>[]>([]);\n\n /** Fixed-mode rows. Stops tracking the saved answer after the first edit so the grid is not rebuilt. */\n protected readonly fixedRows = signal<Record<string, unknown>[]>([]);\n\n private answerTouched = false;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly definition = computed<AXMTestSheetDefinition>(() =>\n normalizeTestSheetDefinition(this.options()['sheet']),\n );\n\n protected readonly isReadonly = computed(() => this.options()['readonly'] === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const definition = this.definition();\n const value = this.getValue();\n if (this.answerTouched) {\n return;\n }\n untracked(() => {\n if (definition.rowMode === 'repeated') {\n const next = buildRepeatedTestSheetRows(value);\n if (!isEqual(next, this.repeatedRows())) {\n this.repeatedRows.set(next);\n }\n return;\n }\n const next = buildFixedTestSheetRows(definition, value);\n if (!isEqual(next, this.fixedRows())) {\n this.fixedRows.set(next);\n }\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSheetChange(rows: Record<string, unknown>[]): void {\n if (this.isReadonly()) {\n return;\n }\n this.answerTouched = true;\n const next = applyTestSheetComputations(rows, this.definition());\n if (next !== rows) {\n if (this.definition().rowMode === 'repeated') {\n this.repeatedRows.set(next);\n } else {\n this.fixedRows.set(next);\n }\n }\n const stored = toStoredTestSheetAnswer(next, this.definition());\n const current = this.getValue() ?? null;\n if (!isEqual(stored, current)) {\n this.setValue(stored);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<axm-test-sheet-grid\n [definition]=\"definition()\"\n [rowsInput]=\"fixedRows()\"\n [(rowsModel)]=\"repeatedRows\"\n [readonly]=\"isReadonly()\"\n (sheetChange)=\"onSheetChange($event)\"\n/>\n"],"names":[],"mappings":"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"}