@acorex-platform/module-assessment-management-client 0.0.38 → 0.0.46

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 (76) hide show
  1. package/fesm2022/{acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-BcpbQ8TJ.mjs → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-rrUYWHvI.mjs} +787 -91
  2. package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-rrUYWHvI.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs → acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs.map → acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs.map} +1 -1
  5. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs +20 -0
  6. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs +20 -0
  8. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-question-bank-item.mjs +20 -0
  10. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-question-bank-item.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs +243 -212
  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-entities-template.mjs +774 -0
  14. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-template.mjs.map +1 -0
  15. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-B8PJe3IJ.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Pa8mdKRV.mjs} +12 -5
  16. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Pa8mdKRV.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DcRzvfKO.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DJeaqilT.mjs} +16 -2
  18. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DJeaqilT.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-pre-post.properties-DX_nB0QM.mjs +229 -0
  20. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-pre-post.properties-DX_nB0QM.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Y0FU8X-e.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BSP4UQ47.mjs} +16 -2
  22. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BSP4UQ47.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CT913OrX.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CVgepxbX.mjs} +16 -2
  24. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CVgepxbX.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-C4hxiPTX.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-8Dqdbm6i.mjs} +18 -217
  26. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-8Dqdbm6i.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BTDJAnF1.mjs +493 -0
  28. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BTDJAnF1.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog.mjs +1 -1
  30. package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs +105 -13
  31. package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-module-assessment-management-client-create-form-template.command-DLC7aazI.mjs +44 -0
  33. package/fesm2022/acorex-platform-module-assessment-management-client-create-form-template.command-DLC7aazI.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-module-assessment-management-client-design-form-template.command-Cgc9Inlz.mjs +97 -0
  35. package/fesm2022/acorex-platform-module-assessment-management-client-design-form-template.command-Cgc9Inlz.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-module-assessment-management-client-designer.page-COXTLIgc.mjs +45 -0
  37. package/fesm2022/acorex-platform-module-assessment-management-client-designer.page-COXTLIgc.mjs.map +1 -0
  38. package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs → acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs} +2 -2
  39. package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs.map → acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs.map} +1 -1
  40. package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-Cuq6_FfC.mjs +238 -0
  41. package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-Cuq6_FfC.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer.service-BTmeEOAJ.mjs +93 -0
  43. package/fesm2022/acorex-platform-module-assessment-management-client-form-template-viewer.service-BTmeEOAJ.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-module-assessment-management-client-local-entities.mjs +1 -0
  45. package/fesm2022/acorex-platform-module-assessment-management-client-local-entities.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-module-assessment-management-client-open-form-template.command-Cg2Cnp1-.mjs +55 -0
  47. package/fesm2022/acorex-platform-module-assessment-management-client-open-form-template.command-Cg2Cnp1-.mjs.map +1 -0
  48. package/fesm2022/acorex-platform-module-assessment-management-client-preview-form-template.command-CaCFGmlA.mjs +90 -0
  49. package/fesm2022/acorex-platform-module-assessment-management-client-preview-form-template.command-CaCFGmlA.mjs.map +1 -0
  50. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs → acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs} +2 -2
  51. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs.map → acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs.map} +1 -1
  52. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-yOfBbOMK.mjs → acorex-platform-module-assessment-management-client-preview-questionnaire.command-fcYcY10l.mjs} +2 -2
  53. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-yOfBbOMK.mjs.map → acorex-platform-module-assessment-management-client-preview-questionnaire.command-fcYcY10l.mjs.map} +1 -1
  54. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B9iRaSSF.mjs → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DVQZ1A-Q.mjs} +2 -2
  55. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B9iRaSSF.mjs.map → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DVQZ1A-Q.mjs.map} +1 -1
  56. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-B4JMc6ew.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-BAA879UA.mjs} +2 -2
  57. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-B4JMc6ew.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-BAA879UA.mjs.map} +1 -1
  58. package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs → acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs} +2 -2
  59. package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs.map → acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs.map} +1 -1
  60. package/fesm2022/acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs +260 -0
  61. package/fesm2022/acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs.map +1 -0
  62. package/fesm2022/acorex-platform-module-assessment-management-client-template-widget-edit.component-DpndNC_y.mjs +107 -0
  63. package/fesm2022/acorex-platform-module-assessment-management-client-template-widget-edit.component-DpndNC_y.mjs.map +1 -0
  64. package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-BUMtj_L6.mjs → acorex-platform-module-assessment-management-client-view-session-answers.command-4Y3C8W4k.mjs} +2 -2
  65. package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-BUMtj_L6.mjs.map → acorex-platform-module-assessment-management-client-view-session-answers.command-4Y3C8W4k.mjs.map} +1 -1
  66. package/fesm2022/acorex-platform-module-assessment-management-client.mjs +1 -1
  67. package/package.json +7 -3
  68. package/types/acorex-platform-module-assessment-management-client-contracts-entities-template.d.ts +5 -0
  69. package/types/acorex-platform-module-assessment-management-client-contracts.d.ts +139 -13
  70. package/types/acorex-platform-module-assessment-management-client.d.ts +3 -2
  71. package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-BcpbQ8TJ.mjs.map +0 -1
  72. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-B8PJe3IJ.mjs.map +0 -1
  73. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DcRzvfKO.mjs.map +0 -1
  74. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Y0FU8X-e.mjs.map +0 -1
  75. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CT913OrX.mjs.map +0 -1
  76. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-C4hxiPTX.mjs.map +0 -1
@@ -1,19 +1,19 @@
1
- import { AXMAssessmentManagementFeatureKeys, RootConfig, AXPSafetyRiskPermissionKeys, AXPAssessmentManagementMenuKeys, parseQuestionHintPartialFromRecord, flattenQuestionnaireOutcomeItems, normalizeQuestionnaireOutcomesValue, normalizeQuestionnaireOutcomeDisplayRules, matchesQuestionnaireOutcomeDisplayRule, normalizeQuestionCommentConfig, commentConfigForEditForm, mergeQuestionCommentConfig, normalizeQuestionHintFromEntityRow, mergeQuestionHintForViewer, normalizeQuestionHintMode, normalizeQuestionHintConfig, diffQuestionHintOverride, diffQuestionCommentOverride, toDisplaySettings, toPrintSettings, toPrePostConfig, QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY, findDuplicateOutcomeNames, QUESTIONNAIRE_OUTCOMES_PAGE_COMPONENT_KEY, resolvePrintSettings, resolvePrintPaging, getQuestionAnswerCommentStoragePath, getQuestionCommentVisibilityFlag, DEFAULT_QUESTIONNAIRE_PRINT_SETTINGS, normalizeCompletionMode, wrapPrintDocument, minifyPrintHtml, resolvePrintPlainText, parseQuestionnaireOutcomeDisplayColor, isQuestionnaireOutcomeDisplayColorHex, resolvePrintContentWidthMm } from '@acorex-platform/module-assessment-management-client/contracts';
1
+ import { AXMAssessmentManagementFeatureKeys, RootConfig, AXPSafetyRiskPermissionKeys, AXPAssessmentManagementMenuKeys, AXPContentDocumentsPermissionKeys, AXPFormTemplateManagementMenuKeys, parseQuestionHintPartialFromRecord, flattenQuestionnaireOutcomeItems, normalizeQuestionnaireOutcomesValue, normalizeQuestionnaireOutcomeDisplayRules, matchesQuestionnaireOutcomeDisplayRule, normalizeQuestionCommentConfig, commentConfigForEditForm, mergeQuestionCommentConfig, normalizeQuestionHintFromEntityRow, mergeQuestionHintForViewer, normalizeQuestionHintMode, normalizeQuestionHintConfig, diffQuestionHintOverride, diffQuestionCommentOverride, toDisplaySettings, toPrintSettings, toPrePostConfig, QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY, findDuplicateOutcomeNames, QUESTIONNAIRE_OUTCOMES_PAGE_COMPONENT_KEY, resolvePrintSettings, resolvePrintPaging, getQuestionAnswerCommentStoragePath, getQuestionCommentVisibilityFlag, DEFAULT_QUESTIONNAIRE_PRINT_SETTINGS, normalizeCompletionMode, AXMFormTemplateTypes, wrapPrintDocument, minifyPrintHtml, resolvePrintPlainText, parseQuestionnaireOutcomeDisplayColor, isQuestionnaireOutcomeDisplayColorHex, resolvePrintContentWidthMm } from '@acorex-platform/module-assessment-management-client/contracts';
2
2
  import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
3
3
  import { AXPEntityService, AXPEntityDefinitionRegistryService, AXPFileListComponent } from '@acorex-platform/framework-client/layout/entity';
4
4
  import * as i0 from '@angular/core';
5
- import { inject, Injectable, NgModule, input, output, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component, ViewEncapsulation, ElementRef, afterNextRender, ChangeDetectorRef } from '@angular/core';
6
- import { AXPSearchCommandProvider, createEntityCommandOptions, AXPStickyDirective, AX_FILE_TYPE_METADATA_SUPPORT_BY_FILE_VIEWER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
5
+ import { inject, Injectable, NgModule, input, output, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component, ViewEncapsulation, ElementRef, afterNextRender, InjectionToken, HostBinding, ChangeDetectorRef } from '@angular/core';
6
+ import { AXPSearchCommandProvider, createEntityCommandOptions, AXPStickyDirective, AX_FILE_TYPE_METADATA_SUPPORT_BY_FILE_VIEWER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';
7
7
  import { AXPCommandService, provideCommandSetups, provideQuerySetups, provideCommand } from '@acorex-platform/framework-client/runtime';
8
8
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
9
9
  import { AXPDataSelectorService, AXPPropertyViewerService, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXP_PAGE_COMPONENT_PROVIDER, AXPOutcomeResultsViewerComponent, AXPThemeLayoutBlockComponent, AXPStopwatchComponent } from '@acorex-platform/framework-client/layout/components';
10
- import { AXPExpressionEvaluatorService, AXPDeviceService, AXPBroadcastEventService, AXPContextStore, AXPDataGenerator, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
10
+ import { AXPExpressionEvaluatorService, AXPDeviceService, AXPBroadcastEventService, AXPContextStore, AXPDataGenerator, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, provideLazyProvider, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
11
11
  import { ROUTES, ActivatedRoute } from '@angular/router';
12
12
  import { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';
13
13
  import * as i1$1 from '@acorex-platform/framework-client/layout/widget-core';
14
- import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetRegistryService, AXPWidgetContainerComponent, AXPWidgetCoreService } from '@acorex-platform/framework-client/layout/widget-core';
15
- import { AXPWidgetGroupEnum, createBooleanProperty } from '@acorex-platform/framework-shared/widget-core';
16
- import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';
14
+ import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetRegistryService, AXPWidgetContainerComponent, AXPValueWidgetComponent, AXPLayoutBaseWidgetComponent, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetCoreService } from '@acorex-platform/framework-client/layout/widget-core';
15
+ import { AXPWidgetGroupEnum, createBooleanProperty, createStringProperty } from '@acorex-platform/framework-shared/widget-core';
16
+ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';
17
17
  import * as i3 from '@angular/common';
18
18
  import { CommonModule, AsyncPipe } from '@angular/common';
19
19
  import * as i1$3 from '@acorex/components/form';
@@ -24,7 +24,7 @@ import * as i2 from '@acorex/components/decorators';
24
24
  import { AXDecoratorModule } from '@acorex/components/decorators';
25
25
  import { AXToastService } from '@acorex/components/toast';
26
26
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
27
- import { cloneDeep, get, isEqual, isNil, first, defaultTo, isEmpty, isObject, set, isString } from 'lodash';
27
+ import { cloneDeep, get, isEqual, isNil, first, defaultTo, isEmpty, isObject, set, isString, sortBy } from 'lodash';
28
28
  import { AXDataSource } from '@acorex/cdk/common';
29
29
  import { AXFullScreenDirective } from '@acorex/cdk/full-screen';
30
30
  import * as i1 from '@acorex/components/button';
@@ -35,7 +35,7 @@ import { AXSwitchModule } from '@acorex/components/switch';
35
35
  import * as i5 from '@angular/forms';
36
36
  import { FormsModule } from '@angular/forms';
37
37
  import { AXPopupService } from '@acorex/components/popup';
38
- import { AXPWidgetsCatalog, containsHtmlMarkup, AXPSystemStatusType, createRandomUuid } from '@acorex-platform/framework-shared/core';
38
+ import { AXPWidgetsCatalog, containsHtmlMarkup, AXPSystemStatusType, createRandomUuid, runtimeCommandPayloadData, resolveToSurfaceClass } from '@acorex-platform/framework-shared/core';
39
39
  import { AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';
40
40
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';
41
41
  import * as i2$1 from '@acorex/components/alert';
@@ -56,6 +56,7 @@ import { AXE_ASSESSMENT_QUESTIONNAIRE_VOICE_CAPABILITY_ID, ASSESSMENT_FIND_CASE_
56
56
  import * as i1$4 from '@acorex/core/file';
57
57
  import { AX_FILE_TYPE_METADATA_PURPOSE, AXFileTypeInfoProvider, AXFileModule, provideFileTypeInfoProvider } from '@acorex/core/file';
58
58
  import { AXDialogService } from '@acorex/components/dialog';
59
+ import { AXPDesignerConnector, AXPDesignerService, AXPWidgetDesignerRendererDirective, AXPDesignerAddWidgetMiniButtonComponent } from '@acorex-platform/framework-client/layout/designer';
59
60
  import { DomSanitizer } from '@angular/platform-browser';
60
61
  import * as i3$2 from '@acorex/components/popover';
61
62
  import { AXPopoverModule } from '@acorex/components/popover';
@@ -76,6 +77,12 @@ class AXMAssessmentManagementFeatureDefinitionProvider {
76
77
  defaultValue: true,
77
78
  type: 'boolean',
78
79
  });
80
+ context.addFeature(AXMAssessmentManagementFeatureKeys.FormTemplates, {
81
+ title: '@form-template-management:module.title',
82
+ description: '@form-template-management:module.description',
83
+ defaultValue: false,
84
+ type: 'boolean',
85
+ });
79
86
  }
80
87
  }
81
88
  //#endregion
@@ -135,6 +142,17 @@ class AXMAssessmentManagementMenuProvider {
135
142
  permissions: [keys.MaintainAssessments],
136
143
  },
137
144
  },
145
+ {
146
+ name: AXPFormTemplateManagementMenuKeys.Templates,
147
+ text: '@form-template-management:templates.menus.forms.title',
148
+ path: this.entityService.withEntity(module.name, RootConfig.entities.template.name).createPath(),
149
+ icon: RootConfig.entities.template.icon,
150
+ priority: 3,
151
+ policy: {
152
+ features: [AXMAssessmentManagementFeatureKeys.FormTemplates],
153
+ permissions: [AXPContentDocumentsPermissionKeys.MaintainFormTemplates],
154
+ },
155
+ },
138
156
  ]);
139
157
  // Root under MODULES: Assessments (Cases)
140
158
  context.addItems([
@@ -236,26 +254,6 @@ var searchCommand_provider = /*#__PURE__*/Object.freeze({
236
254
  AXMAssessmentManagementSearchCommandProvider: AXMAssessmentManagementSearchCommandProvider
237
255
  });
238
256
 
239
- //#region ---- Imports ----
240
- //#endregion
241
- //#region ---- Manifest Definition ----
242
- /**
243
- * Assessment Management Module Manifest.
244
- * Defines module metadata, features, and provider references.
245
- */
246
- const AssessmentManagementManifest = {
247
- name: RootConfig.module.name,
248
- version: '1.0.0',
249
- title: RootConfig.module.title,
250
- icon: RootConfig.module.icon,
251
- i18n: RootConfig.config.i18n,
252
- type: 'domain',
253
- domain: 'assessment-learning',
254
- required: false,
255
- // Module dependencies (optional)
256
- };
257
- //#endregion
258
-
259
257
  //#region ---- Imports ----
260
258
  //#endregion
261
259
  //#region ---- Widget config ----
@@ -322,10 +320,10 @@ const AXMQuestionBankInterfaceEditorWidget = {
322
320
  ],
323
321
  components: {
324
322
  edit: {
325
- component: () => import('./acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B9iRaSSF.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
323
+ component: () => import('./acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DVQZ1A-Q.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
326
324
  },
327
325
  designer: {
328
- component: () => import('./acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B9iRaSSF.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
326
+ component: () => import('./acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DVQZ1A-Q.mjs').then((c) => c.AXMQuestionBankInterfaceEditorWidgetEditComponent),
329
327
  },
330
328
  column: {
331
329
  component: () => import('@acorex-platform/framework-client/layout/widgets').then((m) => m.AXPWidgetFieldConfiguratorWidgetColumnComponent),
@@ -756,7 +754,7 @@ class AXMQuestionnaireViewerService {
756
754
  * Open questionnaire viewer in a dialog
757
755
  */
758
756
  async open(config) {
759
- const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-B4JMc6ew.mjs');
757
+ const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-BAA879UA.mjs');
760
758
  const structure = config.structure;
761
759
  const submitHandler = config.submitHandler ??
762
760
  ((answers) => this.buildSummaryPlaceholderValues(structure, answers, {
@@ -2471,7 +2469,7 @@ class AXMQuestionnaireQuestionsBuilderComponent {
2471
2469
  }
2472
2470
  }
2473
2471
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireQuestionsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2474
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireQuestionsBuilderComponent, isStandalone: true, selector: "axm-questionnaire-questions-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, displaySettingsInput: { classPropertyName: "displaySettingsInput", publicName: "displaySettingsInput", isSignal: true, isRequired: false, transformFunction: null }, printSettingsInput: { classPropertyName: "printSettingsInput", publicName: "printSettingsInput", isSignal: true, isRequired: false, transformFunction: null }, questionnaireEntityId: { classPropertyName: "questionnaireEntityId", publicName: "questionnaireEntityId", isSignal: true, isRequired: false, transformFunction: null }, questionnaireTitle: { classPropertyName: "questionnaireTitle", publicName: "questionnaireTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fullscreenDirective", first: true, predicate: ["fullscreen"], descendants: true, isSignal: true }, { propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-questionnaire-questions-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button class=\"ax-sm\" [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \" [color]=\"'primary'\" (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \" [disabled]=\"isPreviewDisabled()\" (onClick)=\"handlePreview()\">\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \" (onClick)=\"handleFullscreen()\">\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder #standardRef class=\"block min-h-[200px]\" [value]=\"builderValue()\"\n [config]=\"standardConfig()\" [readonly]=\"readonly()\" (valueChange)=\"onBuilderValueChange($event)\" />\n</div>", styles: ["@layer properties;.axm-questionnaire-questions-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-questions-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3)}.axm-questionnaire-questions-builder .__header .__header-left,.axm-questionnaire-questions-builder .__header .__header-right{display:flex;gap:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "directive", type: AXFullScreenDirective, selector: "[axFullscreen]", outputs: ["fullscreenChange"], exportAs: ["axFullscreen"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireQuestionsBuilderComponent, isStandalone: true, selector: "axm-questionnaire-questions-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, displaySettingsInput: { classPropertyName: "displaySettingsInput", publicName: "displaySettingsInput", isSignal: true, isRequired: false, transformFunction: null }, printSettingsInput: { classPropertyName: "printSettingsInput", publicName: "printSettingsInput", isSignal: true, isRequired: false, transformFunction: null }, questionnaireEntityId: { classPropertyName: "questionnaireEntityId", publicName: "questionnaireEntityId", isSignal: true, isRequired: false, transformFunction: null }, questionnaireTitle: { classPropertyName: "questionnaireTitle", publicName: "questionnaireTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fullscreenDirective", first: true, predicate: ["fullscreen"], descendants: true, isSignal: true }, { propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-questionnaire-questions-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button class=\"ax-sm\" [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \" [color]=\"'primary'\" (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \" [disabled]=\"isPreviewDisabled()\" (onClick)=\"handlePreview()\">\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button class=\"ax-sm\" [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \" (onClick)=\"handleFullscreen()\">\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder #standardRef class=\"block min-h-[200px]\" [value]=\"builderValue()\"\n [config]=\"standardConfig()\" [readonly]=\"readonly()\" (valueChange)=\"onBuilderValueChange($event)\" />\n</div>", styles: ["@layer properties;.axm-questionnaire-questions-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-questions-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3)}.axm-questionnaire-questions-builder .__header .__header-left,.axm-questionnaire-questions-builder .__header .__header-right{display:flex;gap:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "directive", type: AXFullScreenDirective, selector: "[axFullscreen]", inputs: ["mode"], outputs: ["fullscreenChange"], exportAs: ["axFullscreen"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2475
2473
  }
2476
2474
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireQuestionsBuilderComponent, decorators: [{
2477
2475
  type: Component,
@@ -3900,7 +3898,7 @@ class AXMSaveQuestionnaireOutcomesCommand {
3900
3898
  this.translationService = inject(AXTranslationService);
3901
3899
  }
3902
3900
  async execute(input) {
3903
- const { id, outcomes } = input;
3901
+ const { id, outcomes, entity } = input;
3904
3902
  if (!id) {
3905
3903
  return {
3906
3904
  success: false,
@@ -3910,7 +3908,7 @@ class AXMSaveQuestionnaireOutcomesCommand {
3910
3908
  };
3911
3909
  }
3912
3910
  try {
3913
- const entityRef = `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`;
3911
+ const entityRef = entity ?? `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`;
3914
3912
  const dataAccessor = this.entityService.withEntity(entityRef).data();
3915
3913
  await dataAccessor.update(id, { outcomes });
3916
3914
  return { success: true, kind: 'object',
@@ -3959,6 +3957,9 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
3959
3957
  ...(ngDevMode ? [undefined, { debugName: "rootContext" }] : /* istanbul ignore next */ []));
3960
3958
  this.pageConfig = input(/* @ts-ignore */
3961
3959
  ...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
3960
+ /** Entity page `options`. `entity` is the full name to patch (`Module.Entity`). */
3961
+ this.options = input(/* @ts-ignore */
3962
+ ...(ngDevMode ? [undefined, { debugName: "options" }] : /* istanbul ignore next */ []));
3962
3963
  //#endregion
3963
3964
  //#region ---- Services ----
3964
3965
  this.commandService = inject(AXPCommandService);
@@ -4094,7 +4095,12 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
4094
4095
  },
4095
4096
  };
4096
4097
  }
4097
- const input = { id, outcomes };
4098
+ const entityOption = this.options()?.['entity'];
4099
+ const input = {
4100
+ id,
4101
+ outcomes,
4102
+ entity: typeof entityOption === 'string' ? entityOption : undefined,
4103
+ };
4098
4104
  const result = await this.commandService.execute(QUESTIONNAIRE_OUTCOMES_SAVE_COMMAND, input);
4099
4105
  const execResult = (result ?? { success: false });
4100
4106
  if (execResult.success) {
@@ -4103,8 +4109,11 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
4103
4109
  this.updateRootContextField('outcomes', outcomes);
4104
4110
  this.localContext.set(null);
4105
4111
  this.recompute();
4112
+ const entityOption = this.options()?.['entity'];
4106
4113
  this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {
4107
- name: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`,
4114
+ name: typeof entityOption === 'string'
4115
+ ? entityOption
4116
+ : `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`,
4108
4117
  });
4109
4118
  }
4110
4119
  return execResult;
@@ -4167,7 +4176,7 @@ class AXMQuestionnaireOutcomesPageComponent extends AXPPageLayoutBaseComponent {
4167
4176
  maybeLayout?.recompute?.();
4168
4177
  }
4169
4178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireOutcomesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXMQuestionnaireOutcomesPageComponent, isStandalone: true, selector: "axm-questionnaire-outcomes-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
4179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXMQuestionnaireOutcomesPageComponent, isStandalone: true, selector: "axm-questionnaire-outcomes-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
4171
4180
  {
4172
4181
  provide: AXPPageLayoutBase,
4173
4182
  useExisting: AXMQuestionnaireOutcomesPageComponent,
@@ -4205,7 +4214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
4205
4214
  },
4206
4215
  ],
4207
4216
  }]
4208
- }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], builderRef: [{ type: i0.ViewChild, args: ['builderRef', { isSignal: true }] }] } });
4217
+ }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], builderRef: [{ type: i0.ViewChild, args: ['builderRef', { isSignal: true }] }] } });
4209
4218
 
4210
4219
  var questionnaireOutcomesPage_component = /*#__PURE__*/Object.freeze({
4211
4220
  __proto__: null,
@@ -6770,7 +6779,7 @@ class AXMQuestionnaireViewerSideMenuViewComponent {
6770
6779
  return cache.has(sectionIndex) ? !cache.get(sectionIndex) : false;
6771
6780
  }
6772
6781
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6773
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireViewerSideMenuViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-side-menu-view", viewQueries: [{ propertyName: "tabRef", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(width>=40rem){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(width>=64rem){axm-questionnaire-viewer-side-menu-view{height:65vh}}axm-questionnaire-viewer-side-menu-view .__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}axm-questionnaire-viewer-side-menu-view .__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}axm-questionnaire-viewer-side-menu-view .__sidebar-drawer{height:100%;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-color:rgba(var(--ax-sys-color-surface))}axm-questionnaire-viewer-side-menu-view .__sidebar-content{height:100%;overflow-y:auto}axm-questionnaire-viewer-side-menu-view .__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-color:rgba(var(--ax-sys-color-surface))}axm-questionnaire-viewer-side-menu-view .__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1;overflow-y:auto}axm-questionnaire-viewer-side-menu-view .__sidebar-tabs ax-tab-item{margin-block:0px;padding-block:calc(var(--spacing, .25rem) * 3);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}axm-questionnaire-viewer-side-menu-view .__main-content{display:flex;max-height:83vh;min-height:0px;flex:1;flex-direction:column;overflow-x:hidden;overflow-y:auto}@media(width>=48rem){axm-questionnaire-viewer-side-menu-view .__main-content{max-height:75vh}}axm-questionnaire-viewer-side-menu-view .__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}axm-questionnaire-viewer-side-menu-view .__mobile-menu-button{margin-inline-start:calc(var(--spacing, .25rem) * -2);flex-shrink:0}axm-questionnaire-viewer-side-menu-view .__questions-list{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i1$2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDrawerDirectiveModule }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "minWidth", "maxWidth", "dblClickAction", "width", "defaultWidth"], outputs: ["axResizableChange", "minWidthChange", "maxWidthChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6782
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMQuestionnaireViewerSideMenuViewComponent, isStandalone: true, selector: "axm-questionnaire-viewer-side-menu-view", viewQueries: [{ propertyName: "tabRef", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer w-[250px]\"\n >\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (sectionIndex of vm.sectionIndicesWithVisibleContent(); track sectionIndex) {\n <ax-tab-item\n [text]=\"(vm.sections()[sectionIndex].title | translate | async) || ''\"\n (onClick)=\"handleSectionClick(sectionIndex)\"\n [active]=\"vm.currentSectionIndex() === sectionIndex\"\n [disabled]=\"isSectionDisabled(sectionIndex)\"\n >\n @if (getSectionBadgeCount(vm.sections()[sectionIndex].name) > 0) {\n <ax-badge\n [text]=\"getSectionBadgeCount(vm.sections()[sectionIndex].name).toString()\"\n [color]=\"'danger'\"\n >\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div class=\"__mobile-header-row\" [axpSticky]=\"'--stuck'\" [stickyParent]=\"parent\" [stickyOffset]=\"0\">\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n @if (vm.isSectionVisible(section)) {\n @if (stickyParent(); as parent) {\n <div\n class=\"__section-title-sticky\"\n [axpSticky]=\"'--stuck'\"\n [stickyParent]=\"parent\"\n [stickyOffset]=\"0\"\n >\n <axm-questionnaire-viewer-section-header\n [title]=\"section.title\"\n [description]=\"section.description\"\n [titleSize]=\"'lg'\"\n [marginBottom]=\"'none'\"\n >\n </axm-questionnaire-viewer-section-header>\n </div>\n }\n\n <div class=\"__page-section\">\n <div class=\"__questions-list\">\n @for (question of vm.getVisibleQuestionsInSection(section); track question.name; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\"\n >\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;axm-questionnaire-viewer-side-menu-view{display:block;min-height:0px;width:100%;overflow:hidden}@media(width>=40rem){axm-questionnaire-viewer-side-menu-view{height:100%}}@media(width>=64rem){axm-questionnaire-viewer-side-menu-view{height:65vh}}axm-questionnaire-viewer-side-menu-view .__side-menu-container{display:flex;height:100%;min-height:0px;width:100%;overflow:hidden}axm-questionnaire-viewer-side-menu-view .__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}axm-questionnaire-viewer-side-menu-view .__sidebar-drawer{height:100%;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-color:rgba(var(--ax-sys-color-surface))}axm-questionnaire-viewer-side-menu-view .__sidebar-content{height:100%;overflow-y:auto}axm-questionnaire-viewer-side-menu-view .__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);border-color:rgba(var(--ax-sys-color-surface))}axm-questionnaire-viewer-side-menu-view .__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1;overflow-y:auto}axm-questionnaire-viewer-side-menu-view .__sidebar-tabs ax-tab-item{margin-block:0px;padding-block:calc(var(--spacing, .25rem) * 3);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}axm-questionnaire-viewer-side-menu-view .__main-content{display:flex;max-height:83vh;min-height:0px;flex:1;flex-direction:column;overflow-x:hidden;overflow-y:auto}@media(width>=48rem){axm-questionnaire-viewer-side-menu-view .__main-content{max-height:75vh}}axm-questionnaire-viewer-side-menu-view .__page-section{display:flex;flex-shrink:0;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}axm-questionnaire-viewer-side-menu-view .__mobile-menu-button{margin-inline-start:calc(var(--spacing, .25rem) * -2);flex-shrink:0}axm-questionnaire-viewer-side-menu-view .__questions-list{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXMQuestionnaireViewerQuestionComponent, selector: "axm-questionnaire-viewer-question", inputs: ["question", "contextData", "sectionOrder", "questionIndex", "showQuestionNumbers", "showQuestionCounter", "currentPosition", "mode"] }, { kind: "component", type: AXMQuestionnaireViewerSectionHeaderComponent, selector: "axm-questionnaire-viewer-section-header", inputs: ["title", "description", "titleSize", "marginBottom"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "renderMode", "stacked", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i1$2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDrawerDirectiveModule }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "handles", "minWidth", "maxWidth", "minHeight", "maxHeight", "dblClickAction", "width", "defaultWidth", "height", "defaultHeight", "lockAspectRatio"], outputs: ["axResizableChange", "handlesChange", "minWidthChange", "maxWidthChange", "minHeightChange", "maxHeightChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "heightChange", "defaultHeightChange", "lockAspectRatioChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6774
6783
  }
6775
6784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, decorators: [{
6776
6785
  type: Component,
@@ -8022,19 +8031,19 @@ class AXMQuestionnaireViewerFeatureModule {
8022
8031
  provideCommandSetups([
8023
8032
  {
8024
8033
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
8025
- command: () => import('./acorex-platform-module-assessment-management-client-preview-questionnaire.command-yOfBbOMK.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
8034
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-questionnaire.command-fcYcY10l.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
8026
8035
  },
8027
8036
  {
8028
8037
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:PreviewQuestion`,
8029
- command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs').then((c) => c.PreviewQuestionCommand),
8038
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs').then((c) => c.PreviewQuestionCommand),
8030
8039
  },
8031
8040
  {
8032
8041
  key: `${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}:Preview`,
8033
- command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs').then((c) => c.PreviewQuestionCommand),
8042
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs').then((c) => c.PreviewQuestionCommand),
8034
8043
  },
8035
8044
  {
8036
8045
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
8037
- command: () => import('./acorex-platform-module-assessment-management-client-view-session-answers.command-BUMtj_L6.mjs').then((c) => c.ViewSessionAnswersCommand),
8046
+ command: () => import('./acorex-platform-module-assessment-management-client-view-session-answers.command-4Y3C8W4k.mjs').then((c) => c.ViewSessionAnswersCommand),
8038
8047
  },
8039
8048
  {
8040
8049
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:PreviewPdf`,
@@ -8042,47 +8051,47 @@ class AXMQuestionnaireViewerFeatureModule {
8042
8051
  },
8043
8052
  {
8044
8053
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
8045
- command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs').then((c) => c.FillAssessmentSessionCommand),
8054
+ command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs').then((c) => c.FillAssessmentSessionCommand),
8046
8055
  },
8047
8056
  {
8048
8057
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
8049
- command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs').then((c) => c.FillAssessmentSessionCommand),
8058
+ command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs').then((c) => c.FillAssessmentSessionCommand),
8050
8059
  },
8051
8060
  {
8052
8061
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ReviewAnswers`,
8053
- command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8062
+ command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8054
8063
  },
8055
8064
  {
8056
8065
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:ReviewAnswers`,
8057
- command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8066
+ command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8058
8067
  },
8059
8068
  {
8060
8069
  key: ASSESSMENT_FIND_CASE_FOR_VOICE_FILL_COMMAND,
8061
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMFindCaseForVoiceFillCommand),
8070
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMFindCaseForVoiceFillCommand),
8062
8071
  },
8063
8072
  {
8064
8073
  key: ASSESSMENT_START_HEADLESS_QUESTIONNAIRE_COMMAND,
8065
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMStartHeadlessQuestionnaireCommand),
8074
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMStartHeadlessQuestionnaireCommand),
8066
8075
  },
8067
8076
  {
8068
8077
  key: ASSESSMENT_NEXT_QUESTIONNAIRE_QUESTION_COMMAND,
8069
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMNextQuestionnaireQuestionCommand),
8078
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMNextQuestionnaireQuestionCommand),
8070
8079
  },
8071
8080
  {
8072
8081
  key: ASSESSMENT_APPLY_QUESTIONNAIRE_ANSWER_COMMAND,
8073
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMApplyQuestionnaireAnswerCommand),
8082
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMApplyQuestionnaireAnswerCommand),
8074
8083
  },
8075
8084
  {
8076
8085
  key: ASSESSMENT_SAVE_QUESTIONNAIRE_DRAFT_COMMAND,
8077
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMSaveQuestionnaireDraftCommand),
8086
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMSaveQuestionnaireDraftCommand),
8078
8087
  },
8079
8088
  {
8080
8089
  key: ASSESSMENT_SUBMIT_QUESTIONNAIRE_COMMAND,
8081
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMSubmitQuestionnaireCommand),
8090
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMSubmitQuestionnaireCommand),
8082
8091
  },
8083
8092
  {
8084
8093
  key: ASSESSMENT_CANCEL_QUESTIONNAIRE_COMMAND,
8085
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMCancelQuestionnaireCommand),
8094
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMCancelQuestionnaireCommand),
8086
8095
  },
8087
8096
  ]),
8088
8097
  {
@@ -8114,19 +8123,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8114
8123
  provideCommandSetups([
8115
8124
  {
8116
8125
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
8117
- command: () => import('./acorex-platform-module-assessment-management-client-preview-questionnaire.command-yOfBbOMK.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
8126
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-questionnaire.command-fcYcY10l.mjs').then((c) => c.AXPPreviewQuestionnaireCommand),
8118
8127
  },
8119
8128
  {
8120
8129
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:PreviewQuestion`,
8121
- command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs').then((c) => c.PreviewQuestionCommand),
8130
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs').then((c) => c.PreviewQuestionCommand),
8122
8131
  },
8123
8132
  {
8124
8133
  key: `${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}:Preview`,
8125
- command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-Db64SCn6.mjs').then((c) => c.PreviewQuestionCommand),
8134
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-question.command-DIRJDBFM.mjs').then((c) => c.PreviewQuestionCommand),
8126
8135
  },
8127
8136
  {
8128
8137
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
8129
- command: () => import('./acorex-platform-module-assessment-management-client-view-session-answers.command-BUMtj_L6.mjs').then((c) => c.ViewSessionAnswersCommand),
8138
+ command: () => import('./acorex-platform-module-assessment-management-client-view-session-answers.command-4Y3C8W4k.mjs').then((c) => c.ViewSessionAnswersCommand),
8130
8139
  },
8131
8140
  {
8132
8141
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:PreviewPdf`,
@@ -8134,47 +8143,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8134
8143
  },
8135
8144
  {
8136
8145
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
8137
- command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs').then((c) => c.FillAssessmentSessionCommand),
8146
+ command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs').then((c) => c.FillAssessmentSessionCommand),
8138
8147
  },
8139
8148
  {
8140
8149
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
8141
- command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-lHYKxCXo.mjs').then((c) => c.FillAssessmentSessionCommand),
8150
+ command: () => import('./acorex-platform-module-assessment-management-client-fill-assessment-session.command-DNDkEL7L.mjs').then((c) => c.FillAssessmentSessionCommand),
8142
8151
  },
8143
8152
  {
8144
8153
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ReviewAnswers`,
8145
- command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8154
+ command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8146
8155
  },
8147
8156
  {
8148
8157
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:ReviewAnswers`,
8149
- command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-si6-7hpg.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8158
+ command: () => import('./acorex-platform-module-assessment-management-client-review-assessment-session.command-Dm3i0_Oj.mjs').then((c) => c.ReviewAssessmentSessionCommand),
8150
8159
  },
8151
8160
  {
8152
8161
  key: ASSESSMENT_FIND_CASE_FOR_VOICE_FILL_COMMAND,
8153
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMFindCaseForVoiceFillCommand),
8162
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMFindCaseForVoiceFillCommand),
8154
8163
  },
8155
8164
  {
8156
8165
  key: ASSESSMENT_START_HEADLESS_QUESTIONNAIRE_COMMAND,
8157
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMStartHeadlessQuestionnaireCommand),
8166
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMStartHeadlessQuestionnaireCommand),
8158
8167
  },
8159
8168
  {
8160
8169
  key: ASSESSMENT_NEXT_QUESTIONNAIRE_QUESTION_COMMAND,
8161
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMNextQuestionnaireQuestionCommand),
8170
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMNextQuestionnaireQuestionCommand),
8162
8171
  },
8163
8172
  {
8164
8173
  key: ASSESSMENT_APPLY_QUESTIONNAIRE_ANSWER_COMMAND,
8165
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMApplyQuestionnaireAnswerCommand),
8174
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMApplyQuestionnaireAnswerCommand),
8166
8175
  },
8167
8176
  {
8168
8177
  key: ASSESSMENT_SAVE_QUESTIONNAIRE_DRAFT_COMMAND,
8169
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMSaveQuestionnaireDraftCommand),
8178
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMSaveQuestionnaireDraftCommand),
8170
8179
  },
8171
8180
  {
8172
8181
  key: ASSESSMENT_SUBMIT_QUESTIONNAIRE_COMMAND,
8173
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMSubmitQuestionnaireCommand),
8182
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMSubmitQuestionnaireCommand),
8174
8183
  },
8175
8184
  {
8176
8185
  key: ASSESSMENT_CANCEL_QUESTIONNAIRE_COMMAND,
8177
- command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-DEcHphg8.mjs').then((c) => c.AXMCancelQuestionnaireCommand),
8186
+ command: () => import('./acorex-platform-module-assessment-management-client-assessment-voice.commands-BjWPb92M.mjs').then((c) => c.AXMCancelQuestionnaireCommand),
8178
8187
  },
8179
8188
  ]),
8180
8189
  {
@@ -8324,9 +8333,601 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8324
8333
  }]
8325
8334
  }] });
8326
8335
 
8336
+ class AXPDesignerConnectorImpl extends AXPDesignerConnector {
8337
+ constructor() {
8338
+ super(...arguments);
8339
+ this.commandService = inject(AXPCommandService);
8340
+ this.entityService = inject(AXPEntityService);
8341
+ this.templateEntityService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.template.name).data();
8342
+ this.categoryEntityDataAccessor = this.entityService
8343
+ .withEntity(RootConfig.module.name, `${RootConfig.entities.template.name}Category`)
8344
+ .data();
8345
+ }
8346
+ //#region Save and load Widgets
8347
+ async save(id, content) {
8348
+ const item = await this.templateEntityService.byKey(id);
8349
+ if (item) {
8350
+ await this.templateEntityService.update(id, { template: content.json });
8351
+ return true;
8352
+ }
8353
+ else {
8354
+ throw Error("Invalid Id");
8355
+ }
8356
+ }
8357
+ async saveAs(content) {
8358
+ const entityKey = `${RootConfig.module.name}.${RootConfig.entities.template.name}`;
8359
+ const result = await this.commandService.execute('Entity:Create', {
8360
+ entity: entityKey,
8361
+ entityInfo: {
8362
+ name: RootConfig.entities.template.name,
8363
+ module: RootConfig.module.name,
8364
+ title: RootConfig.entities.template.title,
8365
+ },
8366
+ data: {
8367
+ name: AXPDataGenerator.alphanumeric(10),
8368
+ type: AXMFormTemplateTypes.Widget,
8369
+ template: content.json,
8370
+ categoryId: (await this.categoryEntityDataAccessor.query()).items[0]?.id,
8371
+ },
8372
+ options: {
8373
+ process: {
8374
+ redirect: false,
8375
+ },
8376
+ },
8377
+ });
8378
+ return !!result?.success;
8379
+ }
8380
+ async load(id) {
8381
+ const item = await this.templateEntityService.byKey(id);
8382
+ if (item) {
8383
+ return item.template;
8384
+ }
8385
+ else {
8386
+ throw Error("Invalid Id");
8387
+ }
8388
+ }
8389
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDesignerConnectorImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
8390
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDesignerConnectorImpl }); }
8391
+ }
8392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDesignerConnectorImpl, decorators: [{
8393
+ type: Injectable
8394
+ }] });
8395
+
8396
+ const AXP_TEMPLATE_WIDGET_PROVIDER = new InjectionToken('AXP_TEMPLATE_WIDGET_PROVIDER');
8397
+ class AXPTemplateWidgetProviderService {
8398
+ constructor() {
8399
+ this.popupService = inject(AXPopupService);
8400
+ this.translate = inject(AXTranslationService);
8401
+ this.providers = inject(AXP_TEMPLATE_WIDGET_PROVIDER, { optional: true });
8402
+ }
8403
+ async items(query) {
8404
+ if (Array.isArray(this.providers)) {
8405
+ const result = [];
8406
+ for (const provider of this.providers) {
8407
+ const items = await provider.items(query);
8408
+ if (items) {
8409
+ result.push(...items);
8410
+ }
8411
+ }
8412
+ return result;
8413
+ }
8414
+ else {
8415
+ return [];
8416
+ }
8417
+ }
8418
+ async get(id) {
8419
+ if (Array.isArray(this.providers)) {
8420
+ for (const provider of this.providers) {
8421
+ const node = await provider.get(id);
8422
+ if (node) {
8423
+ return node;
8424
+ }
8425
+ }
8426
+ }
8427
+ return null;
8428
+ }
8429
+ async chooseTemplate() {
8430
+ const com = await import('./acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs').then((c) => c.AXPTemplateWidgetPickerComponent);
8431
+ const widgets = await this.items({
8432
+ skip: 0,
8433
+ take: 100,
8434
+ filter: {
8435
+ field: 'type.id',
8436
+ value: 20,
8437
+ operator: {
8438
+ type: 'equal',
8439
+ },
8440
+ },
8441
+ });
8442
+ const result = await this.popupService.open(com, {
8443
+ title: await this.translate.translateAsync('@form-template-management:designer.components.template-picker.title'),
8444
+ size: 'lg',
8445
+ closeButton: true,
8446
+ data: {
8447
+ widgets: sortBy(widgets, (c) => c.title),
8448
+ },
8449
+ });
8450
+ if (result.data) {
8451
+ const selected = result.data?.widgets;
8452
+ return selected[0];
8453
+ }
8454
+ return null;
8455
+ }
8456
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8457
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetProviderService, providedIn: 'root' }); }
8458
+ }
8459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetProviderService, decorators: [{
8460
+ type: Injectable,
8461
+ args: [{ providedIn: 'root' }]
8462
+ }] });
8463
+
8464
+ class AXPTemplateWidgetViewComponent extends AXPValueWidgetComponent {
8465
+ constructor() {
8466
+ super();
8467
+ this.metaKey = '__meta__';
8468
+ this.templateProvider = inject(AXPTemplateWidgetProviderService);
8469
+ this.templateId = computed(() => this.options()['templateId'], /* @ts-ignore */
8470
+ ...(ngDevMode ? [{ debugName: "templateId" }] : /* istanbul ignore next */ []));
8471
+ this.nodes = signal([], /* @ts-ignore */
8472
+ ...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
8473
+ //
8474
+ effect(async () => {
8475
+ this.nodes.set([]);
8476
+ const value = this.getValue();
8477
+ const templateId = get(value, `${this.metaKey}.templateId`) ?? this.templateId();
8478
+ if (templateId) {
8479
+ const item = await this.templateProvider.get(templateId);
8480
+ if (item) {
8481
+ this.nodes.set(item.nodes);
8482
+ }
8483
+ }
8484
+ });
8485
+ }
8486
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8487
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTemplateWidgetViewComponent, isStandalone: true, selector: "axp-template-widget-view", usesInheritance: true, ngImport: i0, template: `
8488
+ @for (node of nodes(); track $index) {
8489
+ <ng-container axp-widget-renderer [node]="node" [parentNode]="this" [mode]="this.mode"> </ng-container>
8490
+ } @empty {
8491
+ <span class="underline decoration-dotted underline-offset-8 text-gray-400">
8492
+ {{ '@form-template-management:templates.terms.empty-template' | translate | async }}
8493
+ </span>
8494
+ }
8495
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8496
+ }
8497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetViewComponent, decorators: [{
8498
+ type: Component,
8499
+ args: [{
8500
+ selector: 'axp-template-widget-view',
8501
+ template: `
8502
+ @for (node of nodes(); track $index) {
8503
+ <ng-container axp-widget-renderer [node]="node" [parentNode]="this" [mode]="this.mode"> </ng-container>
8504
+ } @empty {
8505
+ <span class="underline decoration-dotted underline-offset-8 text-gray-400">
8506
+ {{ '@form-template-management:templates.terms.empty-template' | translate | async }}
8507
+ </span>
8508
+ }
8509
+ `,
8510
+ changeDetection: ChangeDetectionStrategy.OnPush,
8511
+ imports: [CommonModule, AXPWidgetCoreModule, AXTranslationModule],
8512
+ }]
8513
+ }], ctorParameters: () => [] });
8514
+
8515
+ var templateWidgetView_component = /*#__PURE__*/Object.freeze({
8516
+ __proto__: null,
8517
+ AXPTemplateWidgetViewComponent: AXPTemplateWidgetViewComponent
8518
+ });
8519
+
8520
+ const AXP_DESIGNER_TEMPLATE_WIDGET_CHOOSE_MENU = {
8521
+ text: 'Choose Template',
8522
+ name: 'choose',
8523
+ icon: 'fa-solid fa-folder-open',
8524
+ };
8525
+ class AXPTemplateWidgetDesignerComponent extends AXPValueWidgetComponent {
8526
+ constructor() {
8527
+ super();
8528
+ this.templateProvider = inject(AXPTemplateWidgetProviderService);
8529
+ this.designerService = inject(AXPDesignerService);
8530
+ this.templateId = computed(() => this.options()['templateId'], /* @ts-ignore */
8531
+ ...(ngDevMode ? [{ debugName: "templateId" }] : /* istanbul ignore next */ []));
8532
+ this.nodes = signal([], /* @ts-ignore */
8533
+ ...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
8534
+ this.title = signal(null, /* @ts-ignore */
8535
+ ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
8536
+ //
8537
+ effect(async () => {
8538
+ this.nodes.set([]);
8539
+ if (this.templateId()) {
8540
+ const item = await this.templateProvider.get(this.templateId());
8541
+ if (item && item.nodes?.length > 0) {
8542
+ this.title.set(item.title);
8543
+ this.nodes.set(item.nodes);
8544
+ }
8545
+ }
8546
+ });
8547
+ }
8548
+ async handleChooseWidget() {
8549
+ const result = await this.templateProvider.chooseTemplate();
8550
+ if (result) {
8551
+ this.designerService.update({
8552
+ mode: 'update',
8553
+ values: { options: { templateId: result.id } },
8554
+ widget: this.node,
8555
+ });
8556
+ }
8557
+ }
8558
+ get __class() {
8559
+ const cls = {};
8560
+ //
8561
+ cls[`w-full`] = true;
8562
+ cls[`ax-widget-outline`] = true;
8563
+ //
8564
+ cls[`block`] = true;
8565
+ return cls;
8566
+ }
8567
+ onContextMenu(context) {
8568
+ const items = [AXP_DESIGNER_TEMPLATE_WIDGET_CHOOSE_MENU];
8569
+ items[items.length - 1].break = true;
8570
+ context.items.unshift(...items);
8571
+ }
8572
+ async executeCommand(command) {
8573
+ switch (command.name) {
8574
+ case AXP_DESIGNER_TEMPLATE_WIDGET_CHOOSE_MENU.name:
8575
+ await this.handleChooseWidget();
8576
+ break;
8577
+ }
8578
+ return Promise.resolve();
8579
+ }
8580
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8581
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTemplateWidgetDesignerComponent, isStandalone: true, selector: "axp-template-widget-designer", host: { properties: { "class": "this.__class" } }, providers: [
8582
+ {
8583
+ provide: AXPLayoutBaseWidgetComponent,
8584
+ useExisting: AXPTemplateWidgetDesignerComponent,
8585
+ },
8586
+ ], usesInheritance: true, ngImport: i0, template: `
8587
+ @if (nodes().length) {
8588
+ <div class="relative block w-full pointer-events-none">
8589
+ @for (node of nodes(); track $index) {
8590
+ <ng-container
8591
+ axp-widget-designer-renderer
8592
+ [locked]="true"
8593
+ [node]="node"
8594
+ [parentNode]="this"
8595
+ [mode]="this.mode"
8596
+ >
8597
+ </ng-container>
8598
+ }
8599
+ <div
8600
+ class="absolute top-0 bottom-0 left-0 right-0 bg-blue-400 opacity-30 flex justify-center items-center z-[400]"
8601
+ >
8602
+ <span class="capitalize font-semibold text-primary-700"> {{ title() }}</span>
8603
+ </div>
8604
+ </div>
8605
+ } @else {
8606
+ <axp-designer-add-widget-mini-button
8607
+ class="flex-1 self-center place-self-end"
8608
+ (onClick)="handleChooseWidget()"
8609
+ >
8610
+ </axp-designer-add-widget-mini-button>
8611
+ }
8612
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8613
+ }
8614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetDesignerComponent, decorators: [{
8615
+ type: Component,
8616
+ args: [{
8617
+ selector: 'axp-template-widget-designer',
8618
+ template: `
8619
+ @if (nodes().length) {
8620
+ <div class="relative block w-full pointer-events-none">
8621
+ @for (node of nodes(); track $index) {
8622
+ <ng-container
8623
+ axp-widget-designer-renderer
8624
+ [locked]="true"
8625
+ [node]="node"
8626
+ [parentNode]="this"
8627
+ [mode]="this.mode"
8628
+ >
8629
+ </ng-container>
8630
+ }
8631
+ <div
8632
+ class="absolute top-0 bottom-0 left-0 right-0 bg-blue-400 opacity-30 flex justify-center items-center z-[400]"
8633
+ >
8634
+ <span class="capitalize font-semibold text-primary-700"> {{ title() }}</span>
8635
+ </div>
8636
+ </div>
8637
+ } @else {
8638
+ <axp-designer-add-widget-mini-button
8639
+ class="flex-1 self-center place-self-end"
8640
+ (onClick)="handleChooseWidget()"
8641
+ >
8642
+ </axp-designer-add-widget-mini-button>
8643
+ }
8644
+ `,
8645
+ changeDetection: ChangeDetectionStrategy.OnPush,
8646
+ imports: [
8647
+ AXPWidgetCoreModule,
8648
+ AXPWidgetDesignerRendererDirective,
8649
+ AXPDesignerAddWidgetMiniButtonComponent
8650
+ ],
8651
+ providers: [
8652
+ {
8653
+ provide: AXPLayoutBaseWidgetComponent,
8654
+ useExisting: AXPTemplateWidgetDesignerComponent,
8655
+ },
8656
+ ],
8657
+ }]
8658
+ }], ctorParameters: () => [], propDecorators: { __class: [{
8659
+ type: HostBinding,
8660
+ args: ['class']
8661
+ }] } });
8662
+
8663
+ var templateWidgetDesigner_component = /*#__PURE__*/Object.freeze({
8664
+ __proto__: null,
8665
+ AXPTemplateWidgetDesignerComponent: AXPTemplateWidgetDesignerComponent,
8666
+ AXP_DESIGNER_TEMPLATE_WIDGET_CHOOSE_MENU: AXP_DESIGNER_TEMPLATE_WIDGET_CHOOSE_MENU
8667
+ });
8668
+
8669
+ const AXPTemplateWidget = {
8670
+ name: 'template',
8671
+ title: 'Template',
8672
+ type: 'container',
8673
+ icon: 'fa-light fa-file-invoice',
8674
+ categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
8675
+ groups: [AXPWidgetGroupEnum.FormElement],
8676
+ designer: {
8677
+ canInsert: false,
8678
+ },
8679
+ properties: [
8680
+ AXP_NAME_PROPERTY,
8681
+ AXP_DATA_PATH_PROPERTY,
8682
+ createStringProperty({
8683
+ name: 'options.templateId',
8684
+ title: 'Template',
8685
+ group: AXP_BEHAVIOR_PROPERTY_GROUP,
8686
+ visible: false,
8687
+ }),
8688
+ ],
8689
+ components: {
8690
+ view: {
8691
+ component: () => Promise.resolve().then(function () { return templateWidgetView_component; }).then((c) => c.AXPTemplateWidgetViewComponent),
8692
+ },
8693
+ edit: {
8694
+ component: () => import('./acorex-platform-module-assessment-management-client-template-widget-edit.component-DpndNC_y.mjs').then((c) => c.AXPTemplateWidgetEditComponent),
8695
+ },
8696
+ print: {
8697
+ component: () => Promise.resolve().then(function () { return templateWidgetView_component; }).then((c) => c.AXPTemplateWidgetViewComponent),
8698
+ },
8699
+ designer: {
8700
+ component: () => Promise.resolve().then(function () { return templateWidgetDesigner_component; }).then((c) => c.AXPTemplateWidgetDesignerComponent),
8701
+ },
8702
+ },
8703
+ };
8704
+
8705
+ //#region ----- Imports -----
8706
+ //#endregion
8707
+ //#region ----- Component -----
8708
+ class AXPTemplateDesignerWidgetViewComponent extends AXPValueWidgetComponent {
8709
+ constructor() {
8710
+ super(...arguments);
8711
+ //#region ----- Services & Dependencies -----
8712
+ this.commandService = inject(AXPCommandService);
8713
+ //#endregion
8714
+ //#region ----- Computed Properties -----
8715
+ this.embedded = computed(() => Boolean(this.options()['embedded']), /* @ts-ignore */
8716
+ ...(ngDevMode ? [{ debugName: "embedded" }] : /* istanbul ignore next */ []));
8717
+ /** Saved records open the designer by id. Create has no id yet and designs into the form. */
8718
+ this.isSavedTemplate = computed(() => hasPersistedRecordId(this.extractValue('id')), /* @ts-ignore */
8719
+ ...(ngDevMode ? [{ debugName: "isSavedTemplate" }] : /* istanbul ignore next */ []));
8720
+ this.descriptionKey = computed(() => this.isSavedTemplate()
8721
+ ? '@form-template-management:designer.launch.saved.description'
8722
+ : '@form-template-management:designer.launch.create.description', /* @ts-ignore */
8723
+ ...(ngDevMode ? [{ debugName: "descriptionKey" }] : /* istanbul ignore next */ []));
8724
+ this.actionKey = computed(() => this.isSavedTemplate()
8725
+ ? '@form-template-management:designer.launch.saved.action'
8726
+ : '@form-template-management:designer.launch.create.action', /* @ts-ignore */
8727
+ ...(ngDevMode ? [{ debugName: "actionKey" }] : /* istanbul ignore next */ []));
8728
+ }
8729
+ //#endregion
8730
+ //#region ----- Event Handlers -----
8731
+ async handleClick() {
8732
+ if (this.embedded()) {
8733
+ const result = await this.commandService.execute('design-form-template', {
8734
+ embedded: true,
8735
+ content: this.getValue(),
8736
+ });
8737
+ const data = runtimeCommandPayloadData(result);
8738
+ if (data?.content != null) {
8739
+ this.setValue(data.content);
8740
+ }
8741
+ return;
8742
+ }
8743
+ const id = this.extractValue('id');
8744
+ await this.commandService.execute('design-form-template', {
8745
+ data: { id },
8746
+ });
8747
+ }
8748
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateDesignerWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPTemplateDesignerWidgetViewComponent, isStandalone: true, selector: "axp-template-designer-widget", usesInheritance: true, ngImport: i0, template: "<div class=\"flex w-full flex-wrap items-center justify-between gap-3\">\n <!-- ----- What opening the designer will do ----- -->\n <p class=\"m-0 min-w-0 flex-1 text-sm text-muted\">\n {{ descriptionKey() | translate | async }}\n </p>\n <ax-button\n class=\"shrink-0\"\n look=\"outline\"\n color=\"primary\"\n [text]=\"(actionKey() | translate | async) ?? ''\"\n (onClick)=\"handleClick()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8750
+ }
8751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateDesignerWidgetViewComponent, decorators: [{
8752
+ type: Component,
8753
+ args: [{ selector: 'axp-template-designer-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXDecoratorModule, AXTranslationModule, AsyncPipe], template: "<div class=\"flex w-full flex-wrap items-center justify-between gap-3\">\n <!-- ----- What opening the designer will do ----- -->\n <p class=\"m-0 min-w-0 flex-1 text-sm text-muted\">\n {{ descriptionKey() | translate | async }}\n </p>\n <ax-button\n class=\"shrink-0\"\n look=\"outline\"\n color=\"primary\"\n [text]=\"(actionKey() | translate | async) ?? ''\"\n (onClick)=\"handleClick()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button>\n</div>\n" }]
8754
+ }] });
8755
+ //#endregion
8756
+ //#region ----- Helpers -----
8757
+ function hasPersistedRecordId(id) {
8758
+ return (typeof id === 'string' && id.length > 0) || (typeof id === 'number' && !Number.isNaN(id));
8759
+ }
8760
+
8761
+ var templateDesignerWidgetView_component = /*#__PURE__*/Object.freeze({
8762
+ __proto__: null,
8763
+ AXPTemplateDesignerWidgetViewComponent: AXPTemplateDesignerWidgetViewComponent
8764
+ });
8765
+
8766
+ const AXPTemplateDesignerWidget = {
8767
+ name: "template-designer",
8768
+ title: "Template Designer",
8769
+ icon: "fa-light fa-square",
8770
+ type: 'editor',
8771
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
8772
+ properties: [
8773
+ AXP_NAME_PROPERTY,
8774
+ AXP_DATA_PATH_PROPERTY,
8775
+ ],
8776
+ components: {
8777
+ view: {
8778
+ component: () => Promise.resolve().then(function () { return templateDesignerWidgetView_component; }).then((c) => c.AXPTemplateDesignerWidgetViewComponent),
8779
+ },
8780
+ edit: {
8781
+ component: () => Promise.resolve().then(function () { return templateDesignerWidgetView_component; }).then((c) => c.AXPTemplateDesignerWidgetViewComponent),
8782
+ }
8783
+ }
8784
+ };
8785
+
8786
+ //#endregion
8787
+ //#region ---- Form Template Widgets Provider ----
8788
+ const FORM_TEMPLATE_WIDGETS = [AXPTemplateDesignerWidget, AXPTemplateWidget];
8789
+ class AXMFormTemplateManagementWidgetsProvider {
8790
+ getWidgets() {
8791
+ return FORM_TEMPLATE_WIDGETS;
8792
+ }
8793
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMFormTemplateManagementWidgetsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8794
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMFormTemplateManagementWidgetsProvider }); }
8795
+ }
8796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMFormTemplateManagementWidgetsProvider, decorators: [{
8797
+ type: Injectable
8798
+ }] });
8799
+
8800
+ class AXPFormTemplateViewerConnector {
8801
+ }
8802
+ class AXPFormTemplateViewerConnectorImpl extends AXPFormTemplateViewerConnector {
8803
+ constructor() {
8804
+ super(...arguments);
8805
+ this.entityService = inject(AXPEntityService);
8806
+ this.templateEntityService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.template.name).data();
8807
+ }
8808
+ //#region Save and load Widgets
8809
+ async submit(id, context, metadeta) {
8810
+ return Promise.resolve(true);
8811
+ }
8812
+ async load(id) {
8813
+ const item = await this.templateEntityService.byKey(id);
8814
+ if (item) {
8815
+ return item.template;
8816
+ }
8817
+ else {
8818
+ throw Error('Invalid Id');
8819
+ }
8820
+ }
8821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFormTemplateViewerConnectorImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
8822
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFormTemplateViewerConnectorImpl }); }
8823
+ }
8824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFormTemplateViewerConnectorImpl, decorators: [{
8825
+ type: Injectable
8826
+ }] });
8827
+
8828
+ class AXPTemplateWidgetProviderImpl {
8829
+ constructor() {
8830
+ this.entityService = inject(AXPEntityService);
8831
+ this.service = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.template.name).data();
8832
+ }
8833
+ async items(query) {
8834
+ const result = (await this.service.query(query)).items.map((c) => ({
8835
+ id: c.id,
8836
+ title: c.title,
8837
+ group: {
8838
+ name: c.categoryIds[0],
8839
+ order: 2,
8840
+ title: get(c, 'category.title') ?? 'Custom',
8841
+ },
8842
+ description: c.description,
8843
+ }));
8844
+ return result;
8845
+ }
8846
+ async get(id) {
8847
+ const item = await this.service.byKey(id);
8848
+ if (item) {
8849
+ const document = JSON.parse(item.template);
8850
+ const page = document?.children?.[0];
8851
+ return {
8852
+ id: item.id,
8853
+ nodes: page?.children ?? [],
8854
+ title: item.title,
8855
+ };
8856
+ }
8857
+ else {
8858
+ throw Error('Invalid Id');
8859
+ }
8860
+ }
8861
+ }
8862
+
8863
+ //#endregion
8864
+ //#region ----- Permission Definition Provider -----
8865
+ /**
8866
+ * Registers form-template capabilities into the shared Content & Documents group.
8867
+ */
8868
+ class AXMPermissionDefinitionProvider {
8869
+ async define(context) {
8870
+ const keys = AXPContentDocumentsPermissionKeys;
8871
+ const groups = AXPCommonPermissionGroupKeys;
8872
+ const P = '@common:content-documents.permissions';
8873
+ const G = '@common:permission-groups';
8874
+ context.addGroup(groups.ContentDocuments.Root, `${G}.content-documents.title`, `${G}.content-documents.description`, { order: 90 });
8875
+ context
8876
+ .addGroup(groups.ContentDocuments.FormTemplates, `${G}.content-documents-form-templates.title`, `${G}.content-documents-form-templates.description`, { parent: groups.ContentDocuments.Root, order: 30 })
8877
+ .addPermission(keys.MaintainFormTemplates, `${P}.maintain-form-templates.title`, `${P}.maintain-form-templates.description`)
8878
+ .endPermission()
8879
+ .endGroup();
8880
+ }
8881
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8882
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider }); }
8883
+ }
8884
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{
8885
+ type: Injectable
8886
+ }] });
8887
+
8888
+ class AXMSearchCommandProvider extends AXPSearchCommandProvider {
8889
+ constructor() {
8890
+ super(...arguments);
8891
+ this.commands = [
8892
+ {
8893
+ id: 'create-form-template',
8894
+ group: 'command',
8895
+ title: '@form-template-management:templates.permissions.templates.actions.create.title',
8896
+ description: '@form-template-management:templates.permissions.templates.actions.create.description',
8897
+ icon: RootConfig.entities.template.icon,
8898
+ command: {
8899
+ name: 'create-form-template',
8900
+ options: {},
8901
+ },
8902
+ },
8903
+ ];
8904
+ }
8905
+ }
8906
+
8327
8907
  //#region ---- Imports ----
8328
8908
  //#endregion
8329
8909
  //#region ---- Routes ----
8910
+ function formTemplateRoutesFactory() {
8911
+ return [
8912
+ {
8913
+ path: 'forms',
8914
+ children: [
8915
+ {
8916
+ path: 'designer',
8917
+ loadComponent: () => import('./acorex-platform-module-assessment-management-client-designer.page-COXTLIgc.mjs').then((c) => c.AXMFormTemplateManagementModuleDesignerPage),
8918
+ },
8919
+ {
8920
+ path: 'preview',
8921
+ loadComponent: () => import('@acorex-platform/framework-client/layout/designer').then((c) => c.AXPLayoutDesignerPreviewComponent),
8922
+ },
8923
+ {
8924
+ path: 'viewer',
8925
+ loadComponent: () => import('@acorex-platform/framework-client/layout/designer').then((c) => c.AXPLayoutDesignerPreviewViewerComponent),
8926
+ },
8927
+ ],
8928
+ },
8929
+ ];
8930
+ }
8330
8931
  function questionnaireViewerRoutesFactory() {
8331
8932
  const route = RootConfig.module.route ?? 'assessment-management';
8332
8933
  return [
@@ -8349,7 +8950,9 @@ function questionnaireViewerRoutesFactory() {
8349
8950
  //#region ---- Module ----
8350
8951
  class AXMAssessmentManagementModule {
8351
8952
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssessmentManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8352
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMAssessmentManagementModule, imports: [AXMAssessmentManagementFileTypeModule,
8953
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMAssessmentManagementModule, imports: [AXPWidgetsModule,
8954
+ AXPWidgetCoreModule,
8955
+ AXMAssessmentManagementFileTypeModule,
8353
8956
  AXMQuestionnaireBuilderFeatureModule,
8354
8957
  AXMQuestionnaireViewerFeatureModule] }); }
8355
8958
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssessmentManagementModule, providers: [
@@ -8358,10 +8961,32 @@ class AXMAssessmentManagementModule {
8358
8961
  multi: true,
8359
8962
  useFactory: questionnaireViewerRoutesFactory,
8360
8963
  },
8361
- // Module Manifest Provider
8362
8964
  {
8363
- provide: AXP_MODULE_MANIFEST_PROVIDER,
8364
- useValue: AssessmentManagementManifest,
8965
+ provide: ROUTES,
8966
+ multi: true,
8967
+ useFactory: formTemplateRoutesFactory,
8968
+ },
8969
+ {
8970
+ provide: AXP_WIDGET_DEFINITION_PROVIDER,
8971
+ useClass: AXMFormTemplateManagementWidgetsProvider,
8972
+ multi: true,
8973
+ },
8974
+ {
8975
+ provide: AXPDesignerConnector,
8976
+ useClass: AXPDesignerConnectorImpl,
8977
+ },
8978
+ {
8979
+ provide: AXPFormTemplateViewerConnector,
8980
+ useClass: AXPFormTemplateViewerConnectorImpl,
8981
+ },
8982
+ {
8983
+ provide: AXP_TEMPLATE_WIDGET_PROVIDER,
8984
+ useClass: AXPTemplateWidgetProviderImpl,
8985
+ multi: true,
8986
+ },
8987
+ {
8988
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
8989
+ useClass: AXMPermissionDefinitionProvider,
8365
8990
  multi: true,
8366
8991
  },
8367
8992
  // Status Providers
@@ -8382,7 +9007,32 @@ class AXMAssessmentManagementModule {
8382
9007
  provideCommand('Questionnaire:Questions:Save', () => Promise.resolve().then(function () { return saveQuestionnaireQuestions_command; }).then((m) => m.AXMSaveQuestionnaireQuestionsCommand)),
8383
9008
  provideCommand('Questionnaire:Outcomes:Save', () => Promise.resolve().then(function () { return saveQuestionnaireOutcomes_command; }).then((m) => m.AXMSaveQuestionnaireOutcomesCommand)),
8384
9009
  provideLazyProvider(AXP_SEARCH_PROVIDER, () => Promise.resolve().then(function () { return searchCommand_provider; }).then((m) => m.AXMAssessmentManagementSearchCommandProvider)),
8385
- ], imports: [AXMAssessmentManagementFileTypeModule,
9010
+ {
9011
+ provide: AXP_SEARCH_PROVIDER,
9012
+ useClass: AXMSearchCommandProvider,
9013
+ multi: true,
9014
+ },
9015
+ provideCommandSetups([
9016
+ {
9017
+ key: 'create-form-template',
9018
+ command: () => import('./acorex-platform-module-assessment-management-client-create-form-template.command-DLC7aazI.mjs').then((c) => c.AXMCreateFormTemplateCommand),
9019
+ },
9020
+ {
9021
+ key: 'open-form-template',
9022
+ command: () => import('./acorex-platform-module-assessment-management-client-open-form-template.command-Cg2Cnp1-.mjs').then((c) => c.AXMOpenFormTemplateCommand),
9023
+ },
9024
+ {
9025
+ key: `${RootConfig.module.name}.${RootConfig.entities.template.name}:Preview`,
9026
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-form-template.command-CaCFGmlA.mjs').then((c) => c.AXMPreviewFormTemplateCommand),
9027
+ },
9028
+ {
9029
+ key: 'design-form-template',
9030
+ command: () => import('./acorex-platform-module-assessment-management-client-design-form-template.command-Cgc9Inlz.mjs').then((c) => c.AXMDesignFormTemplateCommand),
9031
+ },
9032
+ ]),
9033
+ ], imports: [AXPWidgetsModule,
9034
+ AXPWidgetCoreModule,
9035
+ AXMAssessmentManagementFileTypeModule,
8386
9036
  AXMQuestionnaireBuilderFeatureModule,
8387
9037
  AXMQuestionnaireViewerFeatureModule] }); }
8388
9038
  }
@@ -8390,6 +9040,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8390
9040
  type: NgModule,
8391
9041
  args: [{
8392
9042
  imports: [
9043
+ AXPWidgetsModule,
9044
+ AXPWidgetCoreModule,
8393
9045
  AXMAssessmentManagementFileTypeModule,
8394
9046
  AXMQuestionnaireBuilderFeatureModule,
8395
9047
  AXMQuestionnaireViewerFeatureModule,
@@ -8400,10 +9052,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8400
9052
  multi: true,
8401
9053
  useFactory: questionnaireViewerRoutesFactory,
8402
9054
  },
8403
- // Module Manifest Provider
8404
9055
  {
8405
- provide: AXP_MODULE_MANIFEST_PROVIDER,
8406
- useValue: AssessmentManagementManifest,
9056
+ provide: ROUTES,
9057
+ multi: true,
9058
+ useFactory: formTemplateRoutesFactory,
9059
+ },
9060
+ {
9061
+ provide: AXP_WIDGET_DEFINITION_PROVIDER,
9062
+ useClass: AXMFormTemplateManagementWidgetsProvider,
9063
+ multi: true,
9064
+ },
9065
+ {
9066
+ provide: AXPDesignerConnector,
9067
+ useClass: AXPDesignerConnectorImpl,
9068
+ },
9069
+ {
9070
+ provide: AXPFormTemplateViewerConnector,
9071
+ useClass: AXPFormTemplateViewerConnectorImpl,
9072
+ },
9073
+ {
9074
+ provide: AXP_TEMPLATE_WIDGET_PROVIDER,
9075
+ useClass: AXPTemplateWidgetProviderImpl,
9076
+ multi: true,
9077
+ },
9078
+ {
9079
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
9080
+ useClass: AXMPermissionDefinitionProvider,
8407
9081
  multi: true,
8408
9082
  },
8409
9083
  // Status Providers
@@ -8424,6 +9098,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8424
9098
  provideCommand('Questionnaire:Questions:Save', () => Promise.resolve().then(function () { return saveQuestionnaireQuestions_command; }).then((m) => m.AXMSaveQuestionnaireQuestionsCommand)),
8425
9099
  provideCommand('Questionnaire:Outcomes:Save', () => Promise.resolve().then(function () { return saveQuestionnaireOutcomes_command; }).then((m) => m.AXMSaveQuestionnaireOutcomesCommand)),
8426
9100
  provideLazyProvider(AXP_SEARCH_PROVIDER, () => Promise.resolve().then(function () { return searchCommand_provider; }).then((m) => m.AXMAssessmentManagementSearchCommandProvider)),
9101
+ {
9102
+ provide: AXP_SEARCH_PROVIDER,
9103
+ useClass: AXMSearchCommandProvider,
9104
+ multi: true,
9105
+ },
9106
+ provideCommandSetups([
9107
+ {
9108
+ key: 'create-form-template',
9109
+ command: () => import('./acorex-platform-module-assessment-management-client-create-form-template.command-DLC7aazI.mjs').then((c) => c.AXMCreateFormTemplateCommand),
9110
+ },
9111
+ {
9112
+ key: 'open-form-template',
9113
+ command: () => import('./acorex-platform-module-assessment-management-client-open-form-template.command-Cg2Cnp1-.mjs').then((c) => c.AXMOpenFormTemplateCommand),
9114
+ },
9115
+ {
9116
+ key: `${RootConfig.module.name}.${RootConfig.entities.template.name}:Preview`,
9117
+ command: () => import('./acorex-platform-module-assessment-management-client-preview-form-template.command-CaCFGmlA.mjs').then((c) => c.AXMPreviewFormTemplateCommand),
9118
+ },
9119
+ {
9120
+ key: 'design-form-template',
9121
+ command: () => import('./acorex-platform-module-assessment-management-client-design-form-template.command-Cgc9Inlz.mjs').then((c) => c.AXMDesignFormTemplateCommand),
9122
+ },
9123
+ ]),
8427
9124
  ],
8428
9125
  }]
8429
9126
  }] });
@@ -8583,25 +9280,24 @@ function mapOutcomeDisplayToValuePresentation(display) {
8583
9280
  else if (display?.emphasis === 'bold') {
8584
9281
  classes.push('__emphasis-bold');
8585
9282
  }
9283
+ const surfaceClass = display?.color ? resolveToSurfaceClass(display.color) : undefined;
9284
+ if (surfaceClass) {
9285
+ return { classes: [...classes, surfaceClass].join(' ') };
9286
+ }
8586
9287
  if (!display?.color) {
8587
9288
  classes.push('__tone-default');
8588
9289
  return { classes: classes.join(' ') };
8589
9290
  }
8590
9291
  const parsed = parseQuestionnaireOutcomeDisplayColor(display.color);
8591
- if (!parsed) {
9292
+ if (!parsed || !isQuestionnaireOutcomeDisplayColorHex(parsed.background)) {
8592
9293
  classes.push('__tone-default');
8593
9294
  return { classes: classes.join(' ') };
8594
9295
  }
8595
- if (isQuestionnaireOutcomeDisplayColorHex(parsed.background)) {
8596
- return {
8597
- classes: classes.join(' '),
8598
- color: parsed.foreground,
8599
- backgroundColor: parsed.background,
8600
- borderColor: parsed.border,
8601
- };
8602
- }
8603
9296
  return {
8604
- classes: [...classes, parsed.foreground, parsed.background, parsed.border].join(' '),
9297
+ classes: classes.join(' '),
9298
+ color: parsed.foreground,
9299
+ backgroundColor: parsed.background,
9300
+ borderColor: parsed.border,
8605
9301
  };
8606
9302
  }
8607
9303
  function mapOutcomeRow(entry) {
@@ -9553,7 +10249,7 @@ class AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent {
9553
10249
  </ax-popover>
9554
10250
  </div>
9555
10251
  }
9556
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "titleKey", "showLabel", "linksLayout", "files", "accept", "maxFileSize", "showUploadZoneHint", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10252
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "titleKey", "showLabel", "linksLayout", "files", "accept", "maxFileSize", "showUploadZoneHint", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9557
10253
  }
9558
10254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, decorators: [{
9559
10255
  type: Component,
@@ -10590,5 +11286,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
10590
11286
  * Generated bundle index. Do not edit.
10591
11287
  */
10592
11288
 
10593
- export { AXMQuestionnaireViewerService as A, AXMQuestionnairePrintSnapshotService as a, AXMQuestionnairePrintHostComponent as b, AXMQuestionnaireViewerComponent as c, AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent as d, AXMPreQuestionnaireContentComponent as e, AXMPostQuestionnaireContentComponent as f, formatQuestionnairePreviewDialogTitle as g, AXMHeadlessQuestionnaireSessionService as h, AXMAssessmentManagementFeatureDefinitionProvider as i, AXMAssessmentManagementMenuProvider as j, AXMAssessmentManagementModule as k, AXMAssessmentManagementPermissionDefinitionProvider as l, AXMAssessmentManagementSearchCommandProvider as m, AXMQuestionnaireViewerPageComponent as n, AXMQuestionnaireViewerStandalonePageComponent as o, persistAssessmentSession as p, resolveWidgetNodeFromMetaDataDefinitionInterface as r, stripQuestionBankInterfaceMetadata as s };
10594
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-BcpbQ8TJ.mjs.map
11289
+ export { AXPFormTemplateViewerConnector as A, AXMQuestionnaireViewerService as a, AXMQuestionnairePrintSnapshotService as b, AXMQuestionnairePrintHostComponent as c, AXMQuestionnaireViewerComponent as d, AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent as e, formatQuestionnairePreviewDialogTitle as f, AXMPreQuestionnaireContentComponent as g, AXMPostQuestionnaireContentComponent as h, AXMHeadlessQuestionnaireSessionService as i, AXPTemplateWidgetProviderService as j, resolveSummaryPlaceholders as k, AXMAssessmentManagementFeatureDefinitionProvider as l, AXMAssessmentManagementMenuProvider as m, AXMAssessmentManagementModule as n, AXMAssessmentManagementPermissionDefinitionProvider as o, persistAssessmentSession as p, AXMAssessmentManagementSearchCommandProvider as q, resolveWidgetNodeFromMetaDataDefinitionInterface as r, stripQuestionBankInterfaceMetadata as s, AXMQuestionnaireViewerPageComponent as t, AXMQuestionnaireViewerStandalonePageComponent as u };
11290
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-rrUYWHvI.mjs.map