@acorex/modules 20.7.9 → 20.7.10

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 (121) hide show
  1. package/assessment-management/index.d.ts +266 -1
  2. package/common/index.d.ts +1 -1
  3. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-5peOXPDz.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs} +846 -24
  4. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D6KO7up6.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D6KO7up6.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-DtHvmJQD.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-DtHvmJQD.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BDRkvtin.mjs → acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs} +3 -2
  12. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs.map +1 -0
  13. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-MLP74IAt.mjs → acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-MLP74IAt.mjs.map → acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs → acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs} +40 -6
  16. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs} +4 -4
  18. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BIGQMXEc.mjs → acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BIGQMXEc.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-CHA00XC0.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-CHA00XC0.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-C-AX1MiC.mjs → acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs} +3 -3
  26. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-C-AX1MiC.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BY8YfBf1.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BY8YfBf1.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-ktXkCzVb.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-ktXkCzVb.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C2soGbpn.mjs → acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C2soGbpn.mjs.map → acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs → acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs} +3 -3
  34. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs.map → acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs.map} +1 -1
  35. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  36. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs → acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs} +14 -14
  37. package/fesm2022/acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs.map +1 -0
  38. package/fesm2022/{acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs → acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs.map → acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-login.module-C7Rt6tLk.mjs → acorex-modules-auth-login.module-uUQkWCgY.mjs} +4 -4
  41. package/fesm2022/{acorex-modules-auth-login.module-C7Rt6tLk.mjs.map → acorex-modules-auth-login.module-uUQkWCgY.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-master.layout-CgD5kk65.mjs → acorex-modules-auth-master.layout-XkwT3Slv.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-master.layout-CgD5kk65.mjs.map → acorex-modules-auth-master.layout-XkwT3Slv.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs → acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs.map → acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-password.component-DmohsIxt.mjs → acorex-modules-auth-password.component-CaH-OaIv.mjs} +4 -4
  47. package/fesm2022/acorex-modules-auth-password.component-CaH-OaIv.mjs.map +1 -0
  48. package/fesm2022/{acorex-modules-auth-password.component-C6TCAUm4.mjs → acorex-modules-auth-password.component-DDFOsrkt.mjs} +3 -3
  49. package/fesm2022/acorex-modules-auth-password.component-DDFOsrkt.mjs.map +1 -0
  50. package/fesm2022/{acorex-modules-auth-routes-C3162bwa.mjs → acorex-modules-auth-routes-Cik9Y3RJ.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-auth-routes-C3162bwa.mjs.map → acorex-modules-auth-routes-Cik9Y3RJ.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs → acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs.map → acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-auth-two-factor.module-B2nPzX-3.mjs → acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-auth-two-factor.module-B2nPzX-3.mjs.map → acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs → acorex-modules-auth-user-sessions.component-MZJramlf.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs.map → acorex-modules-auth-user-sessions.component-MZJramlf.mjs.map} +1 -1
  58. package/fesm2022/acorex-modules-auth.mjs +1 -1
  59. package/fesm2022/acorex-modules-business-core.mjs +1 -1
  60. package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
  61. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs +95 -0
  62. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-calendar-management.mjs +68 -33
  64. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  65. package/fesm2022/acorex-modules-common.mjs +25 -17
  66. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  67. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  68. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  69. package/fesm2022/acorex-modules-data-management.mjs +387 -12
  70. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  71. package/fesm2022/{acorex-modules-document-management-link-dialog.component-Civ7UZb8.mjs → acorex-modules-document-management-link-dialog.component-F1DkJ4Ns.mjs} +2 -2
  72. package/fesm2022/acorex-modules-document-management-link-dialog.component-F1DkJ4Ns.mjs.map +1 -0
  73. package/fesm2022/{acorex-modules-document-management-share-dialog.component-BwUZShJg.mjs → acorex-modules-document-management-share-dialog.component-BV2JJmED.mjs} +2 -2
  74. package/fesm2022/acorex-modules-document-management-share-dialog.component-BV2JJmED.mjs.map +1 -0
  75. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-BMiCmb1k.mjs → acorex-modules-document-management-share-email-dialog.component-Dn-j0ETn.mjs} +2 -2
  76. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Dn-j0ETn.mjs.map +1 -0
  77. package/fesm2022/acorex-modules-document-management.mjs +3 -3
  78. package/fesm2022/acorex-modules-financial-core-data-source.provider-Do4rvgy4.mjs +73 -0
  79. package/fesm2022/acorex-modules-financial-core-data-source.provider-Do4rvgy4.mjs.map +1 -0
  80. package/fesm2022/acorex-modules-financial-core.mjs +4 -2
  81. package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
  82. package/fesm2022/acorex-modules-form-template-management.mjs +37 -405
  83. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  84. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs → acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs} +3 -3
  85. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs.map → acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs → acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs.map → acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs.map} +1 -1
  88. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  89. package/fesm2022/acorex-modules-locale-management.mjs +13 -355
  90. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  91. package/fesm2022/acorex-modules-location-management.mjs +140 -6
  92. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  93. package/fesm2022/acorex-modules-measurement-core.mjs +1 -1
  94. package/fesm2022/acorex-modules-measurement-core.mjs.map +1 -1
  95. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  96. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  97. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs → acorex-modules-platform-management-acorex-modules-platform-management-BAIx0BJe.mjs} +3 -3
  98. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-BAIx0BJe.mjs.map} +1 -1
  99. package/fesm2022/{acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs → acorex-modules-platform-management-menu-list.component-BxGLun0f.mjs} +2 -2
  100. package/fesm2022/{acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs.map → acorex-modules-platform-management-menu-list.component-BxGLun0f.mjs.map} +1 -1
  101. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  102. package/fesm2022/{acorex-modules-product-catalog-product.entity-CuTXUcc1.mjs → acorex-modules-product-catalog-product.entity-BXDh4Wlu.mjs} +10 -2
  103. package/fesm2022/acorex-modules-product-catalog-product.entity-BXDh4Wlu.mjs.map +1 -0
  104. package/fesm2022/acorex-modules-product-catalog.mjs +1 -1
  105. package/fesm2022/{acorex-modules-task-management-task-board.page-BUp5SQ7b.mjs → acorex-modules-task-management-task-board.page-Cgxdk78j.mjs} +3 -3
  106. package/fesm2022/acorex-modules-task-management-task-board.page-Cgxdk78j.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  108. package/form-template-management/index.d.ts +2 -12
  109. package/locale-management/index.d.ts +3 -23
  110. package/package.json +2 -2
  111. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-5peOXPDz.mjs.map +0 -1
  112. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-BDRkvtin.mjs.map +0 -1
  113. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs.map +0 -1
  115. package/fesm2022/acorex-modules-auth-password.component-C6TCAUm4.mjs.map +0 -1
  116. package/fesm2022/acorex-modules-auth-password.component-DmohsIxt.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-document-management-link-dialog.component-Civ7UZb8.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-document-management-share-dialog.component-BwUZShJg.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BMiCmb1k.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-product-catalog-product.entity-CuTXUcc1.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-task-management-task-board.page-BUp5SQ7b.mjs.map +0 -1
@@ -2,10 +2,12 @@ import * as i0 from '@angular/core';
2
2
  import { inject, Injector, Injectable, NgModule, computed, input, ChangeDetectionStrategy, Component, ViewEncapsulation, signal, effect, output, viewChild } from '@angular/core';
3
3
  import { AXPEntityService, AXMEntityCrudServiceImpl, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
4
4
  import { AXPSearchCommandProvider, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
5
- import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
5
+ import { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER, AXPSessionService } from '@acorex/platform/auth';
6
6
  import { AXPDeviceService, AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex/platform/core';
7
+ import { ROUTES, ActivatedRoute, Router } from '@angular/router';
8
+ import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
7
9
  import * as i1 from '@acorex/platform/layout/widget-core';
8
- import { AXPWidgetGroupEnum, AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, createStringProperty, createSelectProperty, createBooleanProperty, AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetContainerComponent, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';
10
+ import { AXPWidgetGroupEnum, AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, createStringProperty, createSelectProperty, createBooleanProperty, AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetContainerComponent, AXPValueWidgetComponent, AXPWidgetCoreService, AXPWidgetCoreContextStore } from '@acorex/platform/layout/widget-core';
9
11
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_READONLY_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DISABLED_PROPERTY } from '@acorex/platform/layout/widgets';
10
12
  import * as i3$1 from '@angular/common';
11
13
  import { CommonModule } from '@angular/common';
@@ -13,7 +15,7 @@ import * as i1$4 from '@acorex/components/form';
13
15
  import { AXFormModule } from '@acorex/components/form';
14
16
  import * as i4 from '@acorex/core/translation';
15
17
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
16
- import { AXPStateMessageComponent } from '@acorex/platform/layout/components';
18
+ import { AXPStateMessageComponent, AXPStopwatchComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
17
19
  import * as i2 from '@acorex/components/decorators';
18
20
  import { AXDecoratorModule } from '@acorex/components/decorators';
19
21
  import { AXToastService } from '@acorex/components/toast';
@@ -30,6 +32,7 @@ import { AXTabsModule } from '@acorex/components/tabs';
30
32
  import * as i1$3 from '@acorex/components/button';
31
33
  import { AXButtonModule } from '@acorex/components/button';
32
34
  import { provideCommandSetups } from '@acorex/platform/runtime';
35
+ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
33
36
 
34
37
  //#region ---- Root Configuration ----
35
38
  const config = { i18n: 'assessment-management' };
@@ -37,6 +40,7 @@ const RootConfig = {
37
40
  config,
38
41
  module: {
39
42
  module: 'assessment-management',
43
+ route: 'assessment-management',
40
44
  name: 'AssessmentManagement',
41
45
  title: '@assessment-management:module.title',
42
46
  icon: 'fa-light fa-clipboard-list-check',
@@ -81,13 +85,13 @@ class AXMAssessmentManagementEntityProvider {
81
85
  if (moduleName === RootConfig.module.name) {
82
86
  switch (entityName) {
83
87
  case RootConfig.entities.questionBankItem.name:
84
- return (await import('./acorex-modules-assessment-management-question-bank-item.entity-BIGQMXEc.mjs')).factory(this.injector);
88
+ return (await import('./acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs')).factory(this.injector);
85
89
  case RootConfig.entities.questionnaire.name:
86
- return (await import('./acorex-modules-assessment-management-questionnaire.entity-C2soGbpn.mjs')).factory(this.injector);
90
+ return (await import('./acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs')).factory(this.injector);
87
91
  case RootConfig.entities.assessmentCase.name:
88
- return (await import('./acorex-modules-assessment-management-assessment-case.entity-BDRkvtin.mjs')).factory(this.injector);
92
+ return (await import('./acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs')).factory(this.injector);
89
93
  case RootConfig.entities.assessmentSession.name:
90
- return (await import('./acorex-modules-assessment-management-assessment-session.entity-MLP74IAt.mjs')).factory(this.injector);
94
+ return (await import('./acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs')).factory(this.injector);
91
95
  }
92
96
  }
93
97
  return null;
@@ -522,13 +526,13 @@ const AXMQuestionnaireBuilderWidget = {
522
526
  ],
523
527
  components: {
524
528
  view: {
525
- component: () => import('./acorex-modules-assessment-management-questionnaire-builder-view.component-CHA00XC0.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetViewComponent),
529
+ component: () => import('./acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetViewComponent),
526
530
  },
527
531
  edit: {
528
- component: () => import('./acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),
532
+ component: () => import('./acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),
529
533
  },
530
534
  print: {
531
- component: () => import('./acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),
535
+ component: () => import('./acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),
532
536
  },
533
537
  },
534
538
  };
@@ -675,16 +679,16 @@ const AXMAnswersViewerWidget = {
675
679
  ],
676
680
  components: {
677
681
  designer: {
678
- component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs').then((c) => c.AXMAnswersViewerWidgetEditComponent),
682
+ component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs').then((c) => c.AXMAnswersViewerWidgetEditComponent),
679
683
  },
680
684
  view: {
681
- component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-view.component-DtHvmJQD.mjs').then((c) => c.AXMAnswersViewerWidgetViewComponent),
685
+ component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs').then((c) => c.AXMAnswersViewerWidgetViewComponent),
682
686
  },
683
687
  edit: {
684
- component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs').then((c) => c.AXMAnswersViewerWidgetEditComponent),
688
+ component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs').then((c) => c.AXMAnswersViewerWidgetEditComponent),
685
689
  },
686
690
  column: {
687
- component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-column.component-D6KO7up6.mjs').then((c) => c.AXMAnswersViewerWidgetColumnComponent),
691
+ component: () => import('./acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs').then((c) => c.AXMAnswersViewerWidgetColumnComponent),
688
692
  },
689
693
  },
690
694
  };
@@ -3049,19 +3053,19 @@ class AXMQuestionnaireViewerFeatureModule {
3049
3053
  provideCommandSetups([
3050
3054
  {
3051
3055
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
3052
- command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs').then((c) => c.PreviewQuestionnaireCommand),
3056
+ command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs').then((c) => c.PreviewQuestionnaireCommand),
3053
3057
  },
3054
3058
  {
3055
3059
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
3056
- command: () => import('./acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs').then((c) => c.ViewSessionAnswersCommand),
3060
+ command: () => import('./acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs').then((c) => c.ViewSessionAnswersCommand),
3057
3061
  },
3058
3062
  {
3059
3063
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
3060
- command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs').then((c) => c.FillAssessmentSessionCommand),
3064
+ command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs').then((c) => c.FillAssessmentSessionCommand),
3061
3065
  },
3062
3066
  {
3063
3067
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
3064
- command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs').then((c) => c.FillAssessmentSessionCommand),
3068
+ command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs').then((c) => c.FillAssessmentSessionCommand),
3065
3069
  },
3066
3070
  ]),
3067
3071
  ], imports: [AXPWidgetCoreModule.forChild({
@@ -3097,19 +3101,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3097
3101
  provideCommandSetups([
3098
3102
  {
3099
3103
  key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,
3100
- command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs').then((c) => c.PreviewQuestionnaireCommand),
3104
+ command: () => import('./acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs').then((c) => c.PreviewQuestionnaireCommand),
3101
3105
  },
3102
3106
  {
3103
3107
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,
3104
- command: () => import('./acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs').then((c) => c.ViewSessionAnswersCommand),
3108
+ command: () => import('./acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs').then((c) => c.ViewSessionAnswersCommand),
3105
3109
  },
3106
3110
  {
3107
3111
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,
3108
- command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs').then((c) => c.FillAssessmentSessionCommand),
3112
+ command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs').then((c) => c.FillAssessmentSessionCommand),
3109
3113
  },
3110
3114
  {
3111
3115
  key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,
3112
- command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs').then((c) => c.FillAssessmentSessionCommand),
3116
+ command: () => import('./acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs').then((c) => c.FillAssessmentSessionCommand),
3113
3117
  },
3114
3118
  ]),
3115
3119
  ],
@@ -3118,6 +3122,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3118
3122
 
3119
3123
  //#region ---- Imports ----
3120
3124
  //#endregion
3125
+ //#region ---- Routes ----
3126
+ function questionnaireViewerRoutesFactory() {
3127
+ const route = RootConfig.module.route ?? 'assessment-management';
3128
+ return [
3129
+ {
3130
+ path: `:app/${route}/questionnaire/fill/:caseId`,
3131
+ canActivate: [AXPAuthGuard],
3132
+ loadComponent: () => AXPRootLayoutComponent,
3133
+ children: [
3134
+ {
3135
+ path: '',
3136
+ loadComponent: () => Promise.resolve().then(function () { return questionnaireViewerPage_component; }).then((c) => c.AXMQuestionnaireViewerPageComponent),
3137
+ data: { reuse: false },
3138
+ },
3139
+ ],
3140
+ },
3141
+ ];
3142
+ }
3143
+ //#endregion
3121
3144
  //#region ---- Module ----
3122
3145
  class AXMAssessmentManagementModule {
3123
3146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMAssessmentManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -3127,6 +3150,11 @@ class AXMAssessmentManagementModule {
3127
3150
  AXMAssessmentSessionEntityModule,
3128
3151
  AXMQuestionnaireViewerFeatureModule] }); }
3129
3152
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMAssessmentManagementModule, providers: [
3153
+ {
3154
+ provide: ROUTES,
3155
+ multi: true,
3156
+ useFactory: questionnaireViewerRoutesFactory,
3157
+ },
3130
3158
  // Module Manifest Provider
3131
3159
  {
3132
3160
  provide: AXP_MODULE_MANIFEST_PROVIDER,
@@ -3159,6 +3187,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3159
3187
  AXMQuestionnaireViewerFeatureModule,
3160
3188
  ],
3161
3189
  providers: [
3190
+ {
3191
+ provide: ROUTES,
3192
+ multi: true,
3193
+ useFactory: questionnaireViewerRoutesFactory,
3194
+ },
3162
3195
  // Module Manifest Provider
3163
3196
  {
3164
3197
  provide: AXP_MODULE_MANIFEST_PROVIDER,
@@ -3190,9 +3223,798 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3190
3223
  //#region ---- Types ----
3191
3224
  //#endregion
3192
3225
 
3226
+ //#region ---- Imports ----
3227
+ //#endregion
3228
+ //#region ---- Component ----
3229
+ class AXMQuestionnaireViewerPageComponent extends AXPPageLayoutBaseComponent {
3230
+ //#endregion
3231
+ //#region ---- Page Layout Overrides ----
3232
+ async getPageTitle() {
3233
+ return this.translateService.translateAsync('@assessment-management:cases.actions.fill-assessment.title');
3234
+ }
3235
+ getPageBreadcrumbs() {
3236
+ return [
3237
+ {
3238
+ title: '@assessment-management:cases.entities.assessment-case.plural',
3239
+ command: { name: 'navigate', options: { path: this.getCasesListPath() } },
3240
+ },
3241
+ { title: '@assessment-management:cases.actions.fill-assessment.title' },
3242
+ ];
3243
+ }
3244
+ async getBackButton() {
3245
+ const title = await this.translateService.translateAsync('@assessment-management:cases.entities.assessment-case.plural');
3246
+ return { title };
3247
+ }
3248
+ onBackButtonClick() {
3249
+ this.router.navigateByUrl(this.getCasesListPath());
3250
+ }
3251
+ //#endregion
3252
+ //#region ---- Lifecycle ----
3253
+ constructor() {
3254
+ super();
3255
+ //#region ---- Services & Dependencies ----
3256
+ this.route = inject(ActivatedRoute);
3257
+ this.router = inject(Router);
3258
+ this.caseService = inject(AXMAssessmentCaseService);
3259
+ this.questionnaireService = inject(AXMQuestionnaireService);
3260
+ this.assessmentSessionService = inject(AXMAssessmentSessionService);
3261
+ this.authSession = inject(AXPSessionService);
3262
+ //#endregion
3263
+ //#region ---- State ----
3264
+ this.structure = signal(null, ...(ngDevMode ? [{ debugName: "structure" }] : []));
3265
+ this.initialAnswers = signal({}, ...(ngDevMode ? [{ debugName: "initialAnswers" }] : []));
3266
+ this.viewerConfig = signal({ readonly: false }, ...(ngDevMode ? [{ debugName: "viewerConfig" }] : []));
3267
+ this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
3268
+ this.loadError = signal(null, ...(ngDevMode ? [{ debugName: "loadError" }] : []));
3269
+ this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: "isSubmitting" }] : []));
3270
+ this.currentSessionId = signal(null, ...(ngDevMode ? [{ debugName: "currentSessionId" }] : []));
3271
+ //#endregion
3272
+ //#region ---- View References ----
3273
+ this.questionnaireViewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: "questionnaireViewer" }] : []));
3274
+ //#endregion
3275
+ //#region ---- Computed ----
3276
+ this.viewerViewModel = computed(() => this.questionnaireViewer()?.viewmodel, ...(ngDevMode ? [{ debugName: "viewerViewModel" }] : []));
3277
+ this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "totalQuestionsCount" }] : []));
3278
+ this.totalSectionsCount = computed(() => this.viewerViewModel()?.totalSectionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "totalSectionsCount" }] : []));
3279
+ this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: "showTimer" }] : []));
3280
+ this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: "timerTimeLimit" }] : []));
3281
+ this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: "timerElapsed" }] : []));
3282
+ this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: "showProgressBar" }] : []));
3283
+ this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "answeredQuestionsCount" }] : []));
3284
+ this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: "isReadonly" }] : []));
3285
+ this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: "canNavigatePrevious" }] : []));
3286
+ this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: "canNavigateNext" }] : []));
3287
+ this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: "showNavigationButtons" }] : []));
3288
+ this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: "isLastStep" }] : []));
3289
+ this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: "areAllRequiredQuestionsAnswered" }] : []));
3290
+ effect(() => {
3291
+ const viewer = this.questionnaireViewer();
3292
+ if (viewer) {
3293
+ const vm = viewer.viewmodel;
3294
+ this.canNavigatePrevious.set(vm.canNavigatePrevious());
3295
+ this.canNavigateNext.set(vm.canNavigateNext());
3296
+ const viewMode = viewer.viewMode;
3297
+ this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');
3298
+ this.isLastStep.set(viewer.isLastStep);
3299
+ this.areAllRequiredQuestionsAnswered.set(viewer.areAllRequiredQuestionsAnswered);
3300
+ }
3301
+ });
3302
+ }
3303
+ async ngOnInit() {
3304
+ await super.ngOnInit();
3305
+ await this.loadData();
3306
+ }
3307
+ //#endregion
3308
+ //#region ---- Data Loading ----
3309
+ async loadData() {
3310
+ const caseId = this.route.snapshot.paramMap.get('caseId') ?? this.route.parent?.snapshot.paramMap.get('caseId');
3311
+ if (!caseId) {
3312
+ this.loadError.set('Case ID is required');
3313
+ this.isLoading.set(false);
3314
+ return;
3315
+ }
3316
+ this.isLoading.set(true);
3317
+ this.loadError.set(null);
3318
+ try {
3319
+ const assessmentCase = await this.caseService.getOne(caseId);
3320
+ if (!assessmentCase) {
3321
+ this.loadError.set('Assessment case not found');
3322
+ this.isLoading.set(false);
3323
+ return;
3324
+ }
3325
+ const questionnaire = await this.questionnaireService.getOne(assessmentCase.questionnaireId);
3326
+ if (!questionnaire?.structure?.sections?.length) {
3327
+ this.loadError.set('Questionnaire or structure not found');
3328
+ this.isLoading.set(false);
3329
+ return;
3330
+ }
3331
+ let answers = {};
3332
+ const existingSessionId = this.route.snapshot.queryParamMap.get('sessionId') ??
3333
+ this.route.parent?.snapshot.queryParamMap.get('sessionId');
3334
+ if (existingSessionId) {
3335
+ const session = await this.assessmentSessionService.getOne(existingSessionId);
3336
+ if (session?.answers) {
3337
+ answers = session.answers;
3338
+ this.currentSessionId.set(existingSessionId);
3339
+ }
3340
+ }
3341
+ this.structure.set(questionnaire.structure);
3342
+ this.initialAnswers.set(answers);
3343
+ this.viewerConfig.set({ readonly: false });
3344
+ }
3345
+ catch (err) {
3346
+ this.loadError.set(err?.message ?? 'Failed to load questionnaire');
3347
+ }
3348
+ finally {
3349
+ this.isLoading.set(false);
3350
+ }
3351
+ }
3352
+ //#endregion
3353
+ //#region ---- Helpers ----
3354
+ getCasesListPath() {
3355
+ const app = this.authSession.application?.name ?? 'demo';
3356
+ return `/${app}/m/assessment-management/e/AssessmentCase/list`;
3357
+ }
3358
+ calculateProgress(structure, answers) {
3359
+ if (!structure?.sections?.length)
3360
+ return { answeredQuestionsCount: 0, progressPercentage: 0 };
3361
+ let answered = 0;
3362
+ let total = 0;
3363
+ for (const section of structure.sections) {
3364
+ if (!section.items?.length)
3365
+ continue;
3366
+ for (const item of section.items) {
3367
+ total++;
3368
+ const answerPath = item.id ? `answers.${item.id}` : null;
3369
+ const value = answerPath ? get(answers, answerPath) : null;
3370
+ const isEmpty = value === null ||
3371
+ value === undefined ||
3372
+ value === '' ||
3373
+ (Array.isArray(value) && value.length === 0) ||
3374
+ (typeof value === 'object' && value !== null && Object.keys(value).length === 0);
3375
+ if (!isEmpty)
3376
+ answered++;
3377
+ }
3378
+ }
3379
+ const progressPercentage = total > 0 ? Math.round((answered / total) * 100) : 0;
3380
+ return { answeredQuestionsCount: answered, progressPercentage };
3381
+ }
3382
+ //#endregion
3383
+ //#region ---- Event Handlers ----
3384
+ handleAnswersChanged(_answers) { }
3385
+ async handlePreviousClick() {
3386
+ await this.questionnaireViewer()?.navigatePrevious();
3387
+ }
3388
+ async handleNextClick() {
3389
+ await this.questionnaireViewer()?.navigateNext();
3390
+ }
3391
+ async handleSubmitClick() {
3392
+ const viewer = this.questionnaireViewer();
3393
+ if (!viewer)
3394
+ return;
3395
+ this.isSubmitting.set(true);
3396
+ try {
3397
+ const result = await viewer.submit();
3398
+ if (result.success && result.answers) {
3399
+ const caseIdVal = this.route.snapshot.paramMap.get('caseId') ?? this.route.parent?.snapshot.paramMap.get('caseId');
3400
+ const structureVal = this.structure();
3401
+ if (!caseIdVal || !structureVal)
3402
+ return;
3403
+ const { answeredQuestionsCount, progressPercentage } = this.calculateProgress(structureVal, result.answers);
3404
+ const responderId = this.authSession.user?.id;
3405
+ if (!responderId) {
3406
+ this.toastService.show({
3407
+ color: 'danger',
3408
+ title: await this.translateService.translateAsync('@general:messages.generic.error.title'),
3409
+ content: await this.translateService.translateAsync('@general:messages.generic.error.description'),
3410
+ });
3411
+ return;
3412
+ }
3413
+ const now = new Date();
3414
+ const sessionIdVal = this.currentSessionId();
3415
+ const role = 'responder';
3416
+ const sessionData = {
3417
+ caseId: caseIdVal,
3418
+ responderId,
3419
+ role,
3420
+ answers: result.answers,
3421
+ progressPercentage,
3422
+ answeredQuestionsCount,
3423
+ lastSavedAt: now,
3424
+ };
3425
+ if (sessionIdVal) {
3426
+ await this.assessmentSessionService.updateOne(sessionIdVal, sessionData);
3427
+ this.toastService.show({
3428
+ color: 'success',
3429
+ title: await this.translateService.translateAsync('@general:messages.form.saved.success.title'),
3430
+ content: await this.translateService.translateAsync('@general:messages.form.saved.success.description'),
3431
+ });
3432
+ }
3433
+ else {
3434
+ const newSessionData = {
3435
+ ...sessionData,
3436
+ startedAt: now,
3437
+ };
3438
+ await this.assessmentSessionService.insertOne(newSessionData);
3439
+ this.toastService.show({
3440
+ color: 'success',
3441
+ title: await this.translateService.translateAsync('@assessment-management:sessions.states.submitted'),
3442
+ content: '',
3443
+ });
3444
+ }
3445
+ await this.router.navigateByUrl(this.getCasesListPath());
3446
+ }
3447
+ }
3448
+ finally {
3449
+ this.isSubmitting.set(false);
3450
+ }
3451
+ }
3452
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3453
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMQuestionnaireViewerPageComponent, isStandalone: true, selector: "axm-questionnaire-viewer-page", host: { classAttribute: "axm-questionnaire-viewer-page" }, providers: [
3454
+ AXPWidgetCoreService,
3455
+ AXPWidgetCoreContextStore,
3456
+ { provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent },
3457
+ ], viewQueries: [{ propertyName: "questionnaireViewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
3458
+ <axp-page-layout>
3459
+ <axp-page-content class="ax-overflow-auto">
3460
+ @if (isLoading()) {
3461
+ <div class="ax-flex ax-items-center ax-justify-center ax-min-h-[200px]">
3462
+ <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>
3463
+ </div>
3464
+ } @else if (loadError()) {
3465
+ <div class="ax-p-4 ax-text-error-600">
3466
+ {{ loadError() }}
3467
+ </div>
3468
+ } @else if (structure()) {
3469
+ <div class="__main-container ax-h-full ax-flex ax-flex-col">
3470
+ <div class="__header">
3471
+ <div class="__header-top">
3472
+ <div class="__header-meta">
3473
+ @if (totalQuestionsCount() > 0) {
3474
+ <span class="__meta-item">
3475
+ <i class="fa-light fa-list-check"></i>
3476
+ <span>{{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
3477
+ </span>
3478
+ }
3479
+ @if (totalSectionsCount() > 0) {
3480
+ <span class="__meta-item">
3481
+ <i class="fa-light fa-folder"></i>
3482
+ <span>{{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>
3483
+ </span>
3484
+ }
3485
+ </div>
3486
+ @if (showTimer()) {
3487
+ <div class="__header-timer">
3488
+ <axp-stopwatch
3489
+ [mode]="'count-down'"
3490
+ [timeLimit]="timerTimeLimit()"
3491
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
3492
+ [autoStart]="true"
3493
+ [showControls]="false"
3494
+ [value]="timerElapsed()"
3495
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
3496
+ >
3497
+ </axp-stopwatch>
3498
+ </div>
3499
+ }
3500
+ </div>
3501
+ </div>
3502
+
3503
+ <div class="__content-wrapper">
3504
+ <axm-questionnaire-viewer
3505
+ #viewer
3506
+ [structure]="structure()!"
3507
+ [config]="viewerConfig()"
3508
+ [initialAnswers]="initialAnswers()"
3509
+ (answersChanged)="handleAnswersChanged($event)"
3510
+ >
3511
+ </axm-questionnaire-viewer>
3512
+ </div>
3513
+
3514
+ <div class="__footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-p-4 ax-border-t">
3515
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums">
3516
+ @if (viewerViewModel() && showProgressBar()) {
3517
+ {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
3518
+ }
3519
+ </div>
3520
+ <div class="ax-flex ax-gap-2">
3521
+ @if (showNavigationButtons()) {
3522
+ <ax-button
3523
+ look="solid"
3524
+ [disabled]="!canNavigatePrevious()"
3525
+ [text]="'@general:actions.previous.title' | translate | async"
3526
+ (onClick)="handlePreviousClick()"
3527
+ ></ax-button>
3528
+ @if (!isLastStep()) {
3529
+ <ax-button
3530
+ look="solid"
3531
+ color="primary"
3532
+ [disabled]="!canNavigateNext()"
3533
+ [text]="'@general:actions.next.title' | translate | async"
3534
+ (onClick)="handleNextClick()"
3535
+ ></ax-button>
3536
+ }
3537
+ }
3538
+ @if (isLastStep()) {
3539
+ <ax-button
3540
+ look="solid"
3541
+ color="primary"
3542
+ [text]="'@general:actions.submit.title' | translate | async"
3543
+ [disabled]="isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()"
3544
+ (onClick)="handleSubmitClick()"
3545
+ ></ax-button>
3546
+ }
3547
+ </div>
3548
+ </div>
3549
+ </div>
3550
+ }
3551
+ </axp-page-content>
3552
+ </axp-page-layout>
3553
+ `, isInline: true, styles: ["axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXPStopwatchComponent, selector: "axp-stopwatch", inputs: ["mode", "timeLimit", "format", "autoStart", "showControls", "value"], outputs: ["valueChange", "timeUp"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3554
+ }
3555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, decorators: [{
3556
+ type: Component,
3557
+ args: [{ selector: 'axm-questionnaire-viewer-page', template: `
3558
+ <axp-page-layout>
3559
+ <axp-page-content class="ax-overflow-auto">
3560
+ @if (isLoading()) {
3561
+ <div class="ax-flex ax-items-center ax-justify-center ax-min-h-[200px]">
3562
+ <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>
3563
+ </div>
3564
+ } @else if (loadError()) {
3565
+ <div class="ax-p-4 ax-text-error-600">
3566
+ {{ loadError() }}
3567
+ </div>
3568
+ } @else if (structure()) {
3569
+ <div class="__main-container ax-h-full ax-flex ax-flex-col">
3570
+ <div class="__header">
3571
+ <div class="__header-top">
3572
+ <div class="__header-meta">
3573
+ @if (totalQuestionsCount() > 0) {
3574
+ <span class="__meta-item">
3575
+ <i class="fa-light fa-list-check"></i>
3576
+ <span>{{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
3577
+ </span>
3578
+ }
3579
+ @if (totalSectionsCount() > 0) {
3580
+ <span class="__meta-item">
3581
+ <i class="fa-light fa-folder"></i>
3582
+ <span>{{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>
3583
+ </span>
3584
+ }
3585
+ </div>
3586
+ @if (showTimer()) {
3587
+ <div class="__header-timer">
3588
+ <axp-stopwatch
3589
+ [mode]="'count-down'"
3590
+ [timeLimit]="timerTimeLimit()"
3591
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
3592
+ [autoStart]="true"
3593
+ [showControls]="false"
3594
+ [value]="timerElapsed()"
3595
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
3596
+ >
3597
+ </axp-stopwatch>
3598
+ </div>
3599
+ }
3600
+ </div>
3601
+ </div>
3602
+
3603
+ <div class="__content-wrapper">
3604
+ <axm-questionnaire-viewer
3605
+ #viewer
3606
+ [structure]="structure()!"
3607
+ [config]="viewerConfig()"
3608
+ [initialAnswers]="initialAnswers()"
3609
+ (answersChanged)="handleAnswersChanged($event)"
3610
+ >
3611
+ </axm-questionnaire-viewer>
3612
+ </div>
3613
+
3614
+ <div class="__footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-p-4 ax-border-t">
3615
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums">
3616
+ @if (viewerViewModel() && showProgressBar()) {
3617
+ {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
3618
+ }
3619
+ </div>
3620
+ <div class="ax-flex ax-gap-2">
3621
+ @if (showNavigationButtons()) {
3622
+ <ax-button
3623
+ look="solid"
3624
+ [disabled]="!canNavigatePrevious()"
3625
+ [text]="'@general:actions.previous.title' | translate | async"
3626
+ (onClick)="handlePreviousClick()"
3627
+ ></ax-button>
3628
+ @if (!isLastStep()) {
3629
+ <ax-button
3630
+ look="solid"
3631
+ color="primary"
3632
+ [disabled]="!canNavigateNext()"
3633
+ [text]="'@general:actions.next.title' | translate | async"
3634
+ (onClick)="handleNextClick()"
3635
+ ></ax-button>
3636
+ }
3637
+ }
3638
+ @if (isLastStep()) {
3639
+ <ax-button
3640
+ look="solid"
3641
+ color="primary"
3642
+ [text]="'@general:actions.submit.title' | translate | async"
3643
+ [disabled]="isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()"
3644
+ (onClick)="handleSubmitClick()"
3645
+ ></ax-button>
3646
+ }
3647
+ </div>
3648
+ </div>
3649
+ </div>
3650
+ }
3651
+ </axp-page-content>
3652
+ </axp-page-layout>
3653
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
3654
+ CommonModule,
3655
+ AXButtonModule,
3656
+ AXDecoratorModule,
3657
+ AXTranslationModule,
3658
+ AXPWidgetCoreModule,
3659
+ AXMQuestionnaireViewerComponent,
3660
+ AXPStopwatchComponent,
3661
+ AXPPageLayoutComponent,
3662
+ AXPThemeLayoutBlockComponent,
3663
+ ], providers: [
3664
+ AXPWidgetCoreService,
3665
+ AXPWidgetCoreContextStore,
3666
+ { provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent },
3667
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-page' }, styles: ["axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\n"] }]
3668
+ }], ctorParameters: () => [], propDecorators: { questionnaireViewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });
3669
+
3670
+ var questionnaireViewerPage_component = /*#__PURE__*/Object.freeze({
3671
+ __proto__: null,
3672
+ AXMQuestionnaireViewerPageComponent: AXMQuestionnaireViewerPageComponent
3673
+ });
3674
+
3675
+ //#region ---- Imports ----
3676
+ //#endregion
3677
+ //#region ---- Component ----
3678
+ /**
3679
+ * Standalone questionnaire viewer page for external access (e.g. shareable links).
3680
+ * Renders full-screen without app shell (no sidebar, no main header).
3681
+ */
3682
+ class AXMQuestionnaireViewerStandalonePageComponent {
3683
+ //#endregion
3684
+ //#region ---- Lifecycle ----
3685
+ constructor() {
3686
+ //#region ---- Services & Dependencies ----
3687
+ this.route = inject(ActivatedRoute);
3688
+ this.sessionService = inject(AXMAssessmentSessionService);
3689
+ this.caseService = inject(AXMAssessmentCaseService);
3690
+ this.questionnaireService = inject(AXMQuestionnaireService);
3691
+ //#endregion
3692
+ //#region ---- State ----
3693
+ this.structure = signal(null, ...(ngDevMode ? [{ debugName: "structure" }] : []));
3694
+ this.initialAnswers = signal({}, ...(ngDevMode ? [{ debugName: "initialAnswers" }] : []));
3695
+ this.viewerConfig = signal({ readonly: false }, ...(ngDevMode ? [{ debugName: "viewerConfig" }] : []));
3696
+ this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
3697
+ this.loadError = signal(null, ...(ngDevMode ? [{ debugName: "loadError" }] : []));
3698
+ this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: "isSubmitting" }] : []));
3699
+ //#endregion
3700
+ //#region ---- View References ----
3701
+ this.questionnaireViewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: "questionnaireViewer" }] : []));
3702
+ //#endregion
3703
+ //#region ---- Computed ----
3704
+ this.viewerViewModel = computed(() => this.questionnaireViewer()?.viewmodel, ...(ngDevMode ? [{ debugName: "viewerViewModel" }] : []));
3705
+ this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "totalQuestionsCount" }] : []));
3706
+ this.totalSectionsCount = computed(() => this.viewerViewModel()?.totalSectionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "totalSectionsCount" }] : []));
3707
+ this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: "showTimer" }] : []));
3708
+ this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: "timerTimeLimit" }] : []));
3709
+ this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: "timerElapsed" }] : []));
3710
+ this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: "showProgressBar" }] : []));
3711
+ this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "answeredQuestionsCount" }] : []));
3712
+ this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: "isReadonly" }] : []));
3713
+ this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: "canNavigatePrevious" }] : []));
3714
+ this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: "canNavigateNext" }] : []));
3715
+ this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: "showNavigationButtons" }] : []));
3716
+ this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: "isLastStep" }] : []));
3717
+ this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: "areAllRequiredQuestionsAnswered" }] : []));
3718
+ effect(() => {
3719
+ const viewer = this.questionnaireViewer();
3720
+ if (viewer) {
3721
+ const vm = viewer.viewmodel;
3722
+ this.canNavigatePrevious.set(vm.canNavigatePrevious());
3723
+ this.canNavigateNext.set(vm.canNavigateNext());
3724
+ const viewMode = viewer.viewMode;
3725
+ this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');
3726
+ this.isLastStep.set(viewer.isLastStep);
3727
+ this.areAllRequiredQuestionsAnswered.set(viewer.areAllRequiredQuestionsAnswered);
3728
+ }
3729
+ });
3730
+ }
3731
+ ngOnInit() {
3732
+ this.loadData();
3733
+ }
3734
+ //#endregion
3735
+ //#region ---- Data Loading ----
3736
+ async loadData() {
3737
+ const sessionId = this.route.snapshot.paramMap.get('sessionId') ?? this.route.parent?.snapshot.paramMap.get('sessionId');
3738
+ if (!sessionId) {
3739
+ this.loadError.set('Session ID is required');
3740
+ this.isLoading.set(false);
3741
+ return;
3742
+ }
3743
+ this.isLoading.set(true);
3744
+ this.loadError.set(null);
3745
+ try {
3746
+ const session = await this.sessionService.getOne(sessionId);
3747
+ if (!session) {
3748
+ this.loadError.set('Session not found');
3749
+ this.isLoading.set(false);
3750
+ return;
3751
+ }
3752
+ const caseId = session.caseId;
3753
+ const assessmentCase = await this.caseService.getOne(caseId);
3754
+ if (!assessmentCase) {
3755
+ this.loadError.set('Assessment case not found');
3756
+ this.isLoading.set(false);
3757
+ return;
3758
+ }
3759
+ const questionnaire = await this.questionnaireService.getOne(assessmentCase.questionnaireId);
3760
+ if (!questionnaire?.structure?.sections?.length) {
3761
+ this.loadError.set('Questionnaire or structure not found');
3762
+ this.isLoading.set(false);
3763
+ return;
3764
+ }
3765
+ const answers = session.answers ?? {};
3766
+ this.structure.set(questionnaire.structure);
3767
+ this.initialAnswers.set(answers);
3768
+ this.viewerConfig.set({ readonly: false });
3769
+ }
3770
+ catch (err) {
3771
+ this.loadError.set(err?.message ?? 'Failed to load questionnaire');
3772
+ }
3773
+ finally {
3774
+ this.isLoading.set(false);
3775
+ }
3776
+ }
3777
+ //#endregion
3778
+ //#region ---- Event Handlers ----
3779
+ handleAnswersChanged(_answers) { }
3780
+ async handlePreviousClick() {
3781
+ await this.questionnaireViewer()?.navigatePrevious();
3782
+ }
3783
+ async handleNextClick() {
3784
+ await this.questionnaireViewer()?.navigateNext();
3785
+ }
3786
+ async handleSubmitClick() {
3787
+ const viewer = this.questionnaireViewer();
3788
+ if (!viewer)
3789
+ return;
3790
+ this.isSubmitting.set(true);
3791
+ try {
3792
+ const result = await viewer.submit();
3793
+ if (result.success && result.answers) {
3794
+ const sessionId = this.route.snapshot.paramMap.get('sessionId') ?? this.route.parent?.snapshot.paramMap.get('sessionId');
3795
+ if (sessionId) {
3796
+ const session = await this.sessionService.getOne(sessionId);
3797
+ if (session) {
3798
+ await this.sessionService.updateOne(sessionId, {
3799
+ ...session,
3800
+ answers: result.answers,
3801
+ lastSavedAt: new Date(),
3802
+ });
3803
+ }
3804
+ }
3805
+ }
3806
+ }
3807
+ finally {
3808
+ this.isSubmitting.set(false);
3809
+ }
3810
+ }
3811
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerStandalonePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMQuestionnaireViewerStandalonePageComponent, isStandalone: true, selector: "axm-questionnaire-viewer-standalone-page", host: { classAttribute: "axm-questionnaire-viewer-standalone-page" }, providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], viewQueries: [{ propertyName: "questionnaireViewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: `
3813
+ <div class="__standalone ax-min-h-screen ax-flex ax-flex-col ax-bg-neutral-50">
3814
+ @if (isLoading()) {
3815
+ <div class="ax-flex ax-items-center ax-justify-center ax-flex-1 ax-min-h-[200px]">
3816
+ <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>
3817
+ </div>
3818
+ } @else if (loadError()) {
3819
+ <div class="ax-p-6 ax-text-error-600 ax-text-center">
3820
+ {{ loadError() }}
3821
+ </div>
3822
+ } @else if (structure()) {
3823
+ <div class="__main-container ax-flex-1 ax-flex ax-flex-col ax-max-w-4xl ax-mx-auto ax-w-full ax-p-4">
3824
+ <div class="__header ax-mb-4">
3825
+ <div class="__header-top ax-flex ax-justify-between ax-items-center ax-gap-4">
3826
+ <div class="__header-meta ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600">
3827
+ @if (totalQuestionsCount() > 0) {
3828
+ <span class="__meta-item ax-flex ax-items-center ax-gap-1.5">
3829
+ <i class="fa-light fa-list-check ax-text-primary-600"></i>
3830
+ <span>{{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
3831
+ </span>
3832
+ }
3833
+ @if (totalSectionsCount() > 0) {
3834
+ <span class="__meta-item ax-flex ax-items-center ax-gap-1.5">
3835
+ <i class="fa-light fa-folder ax-text-primary-600"></i>
3836
+ <span>{{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>
3837
+ </span>
3838
+ }
3839
+ </div>
3840
+ @if (showTimer()) {
3841
+ <div class="__header-timer">
3842
+ <axp-stopwatch
3843
+ [mode]="'count-down'"
3844
+ [timeLimit]="timerTimeLimit()"
3845
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
3846
+ [autoStart]="true"
3847
+ [showControls]="false"
3848
+ [value]="timerElapsed()"
3849
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
3850
+ >
3851
+ </axp-stopwatch>
3852
+ </div>
3853
+ }
3854
+ </div>
3855
+ </div>
3856
+
3857
+ <div class="__content-wrapper ax-flex-1 ax-min-h-0">
3858
+ <axm-questionnaire-viewer
3859
+ #viewer
3860
+ [structure]="structure()!"
3861
+ [config]="viewerConfig()"
3862
+ [initialAnswers]="initialAnswers()"
3863
+ (answersChanged)="handleAnswersChanged($event)"
3864
+ >
3865
+ </axm-questionnaire-viewer>
3866
+ </div>
3867
+
3868
+ <div class="__footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-border-t ax-border-neutral-200">
3869
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600">
3870
+ @if (viewerViewModel() && showProgressBar()) {
3871
+ {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
3872
+ }
3873
+ </div>
3874
+ <div class="ax-flex ax-gap-2">
3875
+ @if (showNavigationButtons()) {
3876
+ <ax-button
3877
+ look="solid"
3878
+ [disabled]="!canNavigatePrevious()"
3879
+ [text]="'@general:actions.previous.title' | translate | async"
3880
+ (onClick)="handlePreviousClick()"
3881
+ ></ax-button>
3882
+ @if (!isLastStep()) {
3883
+ <ax-button
3884
+ look="solid"
3885
+ color="primary"
3886
+ [disabled]="!canNavigateNext()"
3887
+ [text]="'@general:actions.next.title' | translate | async"
3888
+ (onClick)="handleNextClick()"
3889
+ ></ax-button>
3890
+ }
3891
+ }
3892
+ @if (isLastStep()) {
3893
+ <ax-button
3894
+ look="solid"
3895
+ color="primary"
3896
+ [text]="'@general:actions.submit.title' | translate | async"
3897
+ [disabled]="isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()"
3898
+ (onClick)="handleSubmitClick()"
3899
+ ></ax-button>
3900
+ }
3901
+ </div>
3902
+ </div>
3903
+ </div>
3904
+ }
3905
+ </div>
3906
+ `, isInline: true, styles: ["axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXPStopwatchComponent, selector: "axp-stopwatch", inputs: ["mode", "timeLimit", "format", "autoStart", "showControls", "value"], outputs: ["valueChange", "timeUp"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3907
+ }
3908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerStandalonePageComponent, decorators: [{
3909
+ type: Component,
3910
+ args: [{ selector: 'axm-questionnaire-viewer-standalone-page', template: `
3911
+ <div class="__standalone ax-min-h-screen ax-flex ax-flex-col ax-bg-neutral-50">
3912
+ @if (isLoading()) {
3913
+ <div class="ax-flex ax-items-center ax-justify-center ax-flex-1 ax-min-h-[200px]">
3914
+ <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>
3915
+ </div>
3916
+ } @else if (loadError()) {
3917
+ <div class="ax-p-6 ax-text-error-600 ax-text-center">
3918
+ {{ loadError() }}
3919
+ </div>
3920
+ } @else if (structure()) {
3921
+ <div class="__main-container ax-flex-1 ax-flex ax-flex-col ax-max-w-4xl ax-mx-auto ax-w-full ax-p-4">
3922
+ <div class="__header ax-mb-4">
3923
+ <div class="__header-top ax-flex ax-justify-between ax-items-center ax-gap-4">
3924
+ <div class="__header-meta ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600">
3925
+ @if (totalQuestionsCount() > 0) {
3926
+ <span class="__meta-item ax-flex ax-items-center ax-gap-1.5">
3927
+ <i class="fa-light fa-list-check ax-text-primary-600"></i>
3928
+ <span>{{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
3929
+ </span>
3930
+ }
3931
+ @if (totalSectionsCount() > 0) {
3932
+ <span class="__meta-item ax-flex ax-items-center ax-gap-1.5">
3933
+ <i class="fa-light fa-folder ax-text-primary-600"></i>
3934
+ <span>{{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>
3935
+ </span>
3936
+ }
3937
+ </div>
3938
+ @if (showTimer()) {
3939
+ <div class="__header-timer">
3940
+ <axp-stopwatch
3941
+ [mode]="'count-down'"
3942
+ [timeLimit]="timerTimeLimit()"
3943
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
3944
+ [autoStart]="true"
3945
+ [showControls]="false"
3946
+ [value]="timerElapsed()"
3947
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
3948
+ >
3949
+ </axp-stopwatch>
3950
+ </div>
3951
+ }
3952
+ </div>
3953
+ </div>
3954
+
3955
+ <div class="__content-wrapper ax-flex-1 ax-min-h-0">
3956
+ <axm-questionnaire-viewer
3957
+ #viewer
3958
+ [structure]="structure()!"
3959
+ [config]="viewerConfig()"
3960
+ [initialAnswers]="initialAnswers()"
3961
+ (answersChanged)="handleAnswersChanged($event)"
3962
+ >
3963
+ </axm-questionnaire-viewer>
3964
+ </div>
3965
+
3966
+ <div class="__footer ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-border-t ax-border-neutral-200">
3967
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600">
3968
+ @if (viewerViewModel() && showProgressBar()) {
3969
+ {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}
3970
+ }
3971
+ </div>
3972
+ <div class="ax-flex ax-gap-2">
3973
+ @if (showNavigationButtons()) {
3974
+ <ax-button
3975
+ look="solid"
3976
+ [disabled]="!canNavigatePrevious()"
3977
+ [text]="'@general:actions.previous.title' | translate | async"
3978
+ (onClick)="handlePreviousClick()"
3979
+ ></ax-button>
3980
+ @if (!isLastStep()) {
3981
+ <ax-button
3982
+ look="solid"
3983
+ color="primary"
3984
+ [disabled]="!canNavigateNext()"
3985
+ [text]="'@general:actions.next.title' | translate | async"
3986
+ (onClick)="handleNextClick()"
3987
+ ></ax-button>
3988
+ }
3989
+ }
3990
+ @if (isLastStep()) {
3991
+ <ax-button
3992
+ look="solid"
3993
+ color="primary"
3994
+ [text]="'@general:actions.submit.title' | translate | async"
3995
+ [disabled]="isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()"
3996
+ (onClick)="handleSubmitClick()"
3997
+ ></ax-button>
3998
+ }
3999
+ </div>
4000
+ </div>
4001
+ </div>
4002
+ }
4003
+ </div>
4004
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4005
+ CommonModule,
4006
+ AXButtonModule,
4007
+ AXDecoratorModule,
4008
+ AXTranslationModule,
4009
+ AXPWidgetCoreModule,
4010
+ AXMQuestionnaireViewerComponent,
4011
+ AXPStopwatchComponent,
4012
+ ], providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-standalone-page' }, styles: ["axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\n"] }]
4013
+ }], ctorParameters: () => [], propDecorators: { questionnaireViewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });
4014
+
3193
4015
  /**
3194
4016
  * Generated bundle index. Do not edit.
3195
4017
  */
3196
4018
 
3197
- export { AXMQuestionnaireService as A, RootConfig as R, AXMAssessmentSessionService as a, AXMAssessmentCaseService as b, AXMQuestionBankItemService as c, AXMQuestionnaireViewerComponent as d, AXMAssessmentManagementEntityProvider as e, AXMAssessmentManagementFeatureDefinitionProvider as f, AXMAssessmentManagementFeatureKeys as g, AXMAssessmentManagementMenuProvider as h, AXPAssessmentManagementMenuKeys as i, AXMAssessmentManagementPermissionDefinitionProvider as j, AXMAssessmentManagementPermissionKeys as k, AXMAssessmentManagementSearchCommandProvider as l, AXMAssessmentManagementModule as m, AXMQuestionBankItemServiceImpl as n, AXMQuestionnaireServiceImpl as o, AXMAssessmentCaseServiceImpl as p, AXMAssessmentSessionServiceImpl as q };
3198
- //# sourceMappingURL=acorex-modules-assessment-management-acorex-modules-assessment-management-5peOXPDz.mjs.map
4019
+ export { AXMQuestionnaireService as A, RootConfig as R, AXMAssessmentSessionService as a, AXMAssessmentCaseService as b, AXMQuestionBankItemService as c, AXMQuestionnaireViewerComponent as d, AXMAssessmentManagementEntityProvider as e, AXMAssessmentManagementFeatureDefinitionProvider as f, AXMAssessmentManagementFeatureKeys as g, AXMAssessmentManagementMenuProvider as h, AXPAssessmentManagementMenuKeys as i, AXMAssessmentManagementPermissionDefinitionProvider as j, AXMAssessmentManagementPermissionKeys as k, AXMAssessmentManagementSearchCommandProvider as l, AXMAssessmentManagementModule as m, AXMQuestionBankItemServiceImpl as n, AXMQuestionnaireServiceImpl as o, AXMAssessmentCaseServiceImpl as p, AXMAssessmentSessionServiceImpl as q, AXMQuestionnaireViewerPageComponent as r, AXMQuestionnaireViewerStandalonePageComponent as s };
4020
+ //# sourceMappingURL=acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map