@acorex/modules 20.7.13 → 20.7.15

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 (194) hide show
  1. package/application-management/index.d.ts +1 -1
  2. package/assessment-management/README.md +11 -0
  3. package/assessment-management/index.d.ts +122 -24
  4. package/auth/index.d.ts +1 -1
  5. package/common/index.d.ts +9 -3
  6. package/contact-core/index.d.ts +90 -0
  7. package/content-management/index.d.ts +2 -2
  8. package/data-management/index.d.ts +215 -19
  9. package/document-management/index.d.ts +167 -374
  10. package/fesm2022/acorex-modules-application-management.mjs +3 -3
  11. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  12. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs} +950 -468
  13. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs.map +1 -0
  14. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs.map} +1 -1
  16. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs → acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs} +3 -3
  21. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs.map +1 -0
  22. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs.map → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs → acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs} +32 -33
  25. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs.map +1 -0
  26. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs → acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs} +24 -8
  27. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs} +20 -4
  31. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs} +3 -3
  33. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs.map +1 -0
  34. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs → acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs} +11 -5
  35. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs.map +1 -0
  36. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs +392 -0
  37. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map +1 -0
  38. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs} +21 -6
  39. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map +1 -0
  40. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs → acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs} +138 -23
  41. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs.map +1 -0
  42. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs} +3 -3
  43. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs.map} +1 -1
  44. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  45. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs → acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs} +18 -18
  46. package/fesm2022/acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs.map +1 -0
  47. package/fesm2022/{acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs.map → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-auth-login.module-uUQkWCgY.mjs → acorex-modules-auth-login.module-CI_lkyb7.mjs} +4 -4
  50. package/fesm2022/{acorex-modules-auth-login.module-uUQkWCgY.mjs.map → acorex-modules-auth-login.module-CI_lkyb7.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-auth-master.layout-XkwT3Slv.mjs → acorex-modules-auth-master.layout-CdY380qS.mjs} +5 -4
  52. package/fesm2022/acorex-modules-auth-master.layout-CdY380qS.mjs.map +1 -0
  53. package/fesm2022/{acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs.map → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-auth-password.component-CaH-OaIv.mjs → acorex-modules-auth-password.component-CefISnvd.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-auth-password.component-CaH-OaIv.mjs.map → acorex-modules-auth-password.component-CefISnvd.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-auth-password.component-DDFOsrkt.mjs → acorex-modules-auth-password.component-Dw_v_EFQ.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-auth-password.component-DDFOsrkt.mjs.map → acorex-modules-auth-password.component-Dw_v_EFQ.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-auth-routes-Cik9Y3RJ.mjs → acorex-modules-auth-routes-CwcJHbAi.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-auth-routes-Cik9Y3RJ.mjs.map → acorex-modules-auth-routes-CwcJHbAi.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs.map → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs.map} +1 -1
  63. package/fesm2022/{acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs} +2 -2
  64. package/fesm2022/{acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs.map → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs.map} +1 -1
  65. package/fesm2022/{acorex-modules-auth-user-sessions.component-MZJramlf.mjs → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-auth-user-sessions.component-MZJramlf.mjs.map → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs.map} +1 -1
  67. package/fesm2022/acorex-modules-auth.mjs +1 -1
  68. package/fesm2022/acorex-modules-calendar-management.mjs +4 -3
  69. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  70. package/fesm2022/acorex-modules-common.mjs +77 -36
  71. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  72. package/fesm2022/acorex-modules-contact-core-emergency-service.entity-Cro3bM4G.mjs +318 -0
  73. package/fesm2022/acorex-modules-contact-core-emergency-service.entity-Cro3bM4G.mjs.map +1 -0
  74. package/fesm2022/acorex-modules-contact-core.mjs +247 -0
  75. package/fesm2022/acorex-modules-contact-core.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-content-management.mjs +66 -19
  77. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  78. package/fesm2022/acorex-modules-data-management.mjs +1009 -501
  79. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  80. package/fesm2022/{acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs → acorex-modules-document-management-drive-choose.component-BOeZ9mpL.mjs} +3 -7
  81. package/fesm2022/acorex-modules-document-management-drive-choose.component-BOeZ9mpL.mjs.map +1 -0
  82. package/fesm2022/acorex-modules-document-management.mjs +688 -2991
  83. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  84. package/fesm2022/acorex-modules-health-core-allergy-type.entity-BaZ4OhHW.mjs +65 -0
  85. package/fesm2022/acorex-modules-health-core-allergy-type.entity-BaZ4OhHW.mjs.map +1 -0
  86. package/fesm2022/acorex-modules-health-core-blood-type.entity-Cu-UIgw4.mjs +120 -0
  87. package/fesm2022/acorex-modules-health-core-blood-type.entity-Cu-UIgw4.mjs.map +1 -0
  88. package/fesm2022/acorex-modules-health-core-body-part.entity-Dc2SIiB3.mjs +65 -0
  89. package/fesm2022/acorex-modules-health-core-body-part.entity-Dc2SIiB3.mjs.map +1 -0
  90. package/fesm2022/acorex-modules-health-core-chronic-condition-type.entity-B-9j3pNB.mjs +65 -0
  91. package/fesm2022/acorex-modules-health-core-chronic-condition-type.entity-B-9j3pNB.mjs.map +1 -0
  92. package/fesm2022/acorex-modules-health-core-disability-status.entity-hs3vA3zZ.mjs +120 -0
  93. package/fesm2022/acorex-modules-health-core-disability-status.entity-hs3vA3zZ.mjs.map +1 -0
  94. package/fesm2022/acorex-modules-health-core-injury-type.entity-BUA1VsE_.mjs +65 -0
  95. package/fesm2022/acorex-modules-health-core-injury-type.entity-BUA1VsE_.mjs.map +1 -0
  96. package/fesm2022/acorex-modules-health-core-vaccination-type.entity-DBdFkwx6.mjs +65 -0
  97. package/fesm2022/acorex-modules-health-core-vaccination-type.entity-DBdFkwx6.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-health-core.mjs +487 -0
  99. package/fesm2022/acorex-modules-health-core.mjs.map +1 -0
  100. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs → acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs} +4 -5
  101. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs.map → acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs → acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs} +2 -2
  103. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs.map → acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs.map} +1 -1
  104. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  105. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs → acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs} +2 -2
  106. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs.map +1 -0
  107. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs → acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs} +6 -2
  108. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-human-capital-management.mjs +351 -696
  110. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  111. package/fesm2022/acorex-modules-locale-management.mjs +13 -6
  112. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  113. package/fesm2022/acorex-modules-notification-management.mjs +4 -4
  114. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  115. package/fesm2022/acorex-modules-person-core-education-level.entity-BiXdPA-Z.mjs +120 -0
  116. package/fesm2022/acorex-modules-person-core-education-level.entity-BiXdPA-Z.mjs.map +1 -0
  117. package/fesm2022/acorex-modules-person-core-marital-status.entity-j6sMTtTS.mjs +120 -0
  118. package/fesm2022/acorex-modules-person-core-marital-status.entity-j6sMTtTS.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-person-core-person-identifier-type.entity-BIFiRZ2d.mjs +191 -0
  120. package/fesm2022/acorex-modules-person-core-person-identifier-type.entity-BIFiRZ2d.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-person-core-person-relationship-type.entity-2qysKjU5.mjs +119 -0
  122. package/fesm2022/acorex-modules-person-core-person-relationship-type.entity-2qysKjU5.mjs.map +1 -0
  123. package/fesm2022/acorex-modules-person-core-religion.entity-Czb5aHb6.mjs +120 -0
  124. package/fesm2022/acorex-modules-person-core-religion.entity-Czb5aHb6.mjs.map +1 -0
  125. package/fesm2022/acorex-modules-person-core.mjs +466 -0
  126. package/fesm2022/acorex-modules-person-core.mjs.map +1 -0
  127. package/fesm2022/{acorex-modules-person-management-person-identifier.entity-CI8u0Ro6.mjs → acorex-modules-person-management-person-identifier.entity-HBmiUahC.mjs} +4 -3
  128. package/fesm2022/acorex-modules-person-management-person-identifier.entity-HBmiUahC.mjs.map +1 -0
  129. package/fesm2022/{acorex-modules-person-management-person-relationship.entity-DK3mYVFv.mjs → acorex-modules-person-management-person-relationship.entity-DbcXasEe.mjs} +4 -3
  130. package/fesm2022/acorex-modules-person-management-person-relationship.entity-DbcXasEe.mjs.map +1 -0
  131. package/fesm2022/acorex-modules-person-management.mjs +11 -259
  132. package/fesm2022/acorex-modules-person-management.mjs.map +1 -1
  133. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs} +6 -6
  134. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs.map} +1 -1
  135. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs} +2 -2
  136. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs.map → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs.map} +1 -1
  137. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs} +2 -2
  138. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs.map → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs.map} +1 -1
  139. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs} +2 -2
  140. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs.map → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs.map} +1 -1
  141. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  142. package/fesm2022/acorex-modules-system-insight.mjs +4 -3
  143. package/fesm2022/acorex-modules-system-insight.mjs.map +1 -1
  144. package/fesm2022/{acorex-modules-task-management-task-board.page-Cgxdk78j.mjs → acorex-modules-task-management-task-board.page-BOOY3qla.mjs} +53 -60
  145. package/fesm2022/acorex-modules-task-management-task-board.page-BOOY3qla.mjs.map +1 -0
  146. package/fesm2022/acorex-modules-task-management.mjs +39 -11
  147. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  148. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs +258 -0
  149. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs.map +1 -0
  150. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs +371 -0
  151. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs.map +1 -0
  152. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs +313 -0
  153. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs.map +1 -0
  154. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-BF9xYEkf.mjs +345 -0
  155. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-BF9xYEkf.mjs.map +1 -0
  156. package/fesm2022/acorex-modules-workflow-management.mjs +733 -2521
  157. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  158. package/health-core/index.d.ts +156 -0
  159. package/help-desk/index.d.ts +1 -1
  160. package/human-capital-management/index.d.ts +19 -79
  161. package/locale-management/index.d.ts +1 -1
  162. package/notification-management/index.d.ts +1 -1
  163. package/package.json +24 -12
  164. package/person-core/index.d.ts +132 -0
  165. package/person-management/index.d.ts +1 -25
  166. package/task-management/index.d.ts +12 -1
  167. package/workflow-management/index.d.ts +239 -265
  168. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map +0 -1
  169. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs.map +0 -1
  170. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs.map +0 -1
  171. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs.map +0 -1
  172. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs.map +0 -1
  173. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs.map +0 -1
  174. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs.map +0 -1
  175. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs +0 -416
  176. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs.map +0 -1
  177. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map +0 -1
  178. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs.map +0 -1
  179. package/fesm2022/acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs.map +0 -1
  180. package/fesm2022/acorex-modules-auth-master.layout-XkwT3Slv.mjs.map +0 -1
  181. package/fesm2022/acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs.map +0 -1
  182. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs +0 -381
  183. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs.map +0 -1
  184. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs.map +0 -1
  185. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +0 -1
  186. package/fesm2022/acorex-modules-person-management-person-identifier-type.entity-VchCczk-.mjs +0 -498
  187. package/fesm2022/acorex-modules-person-management-person-identifier-type.entity-VchCczk-.mjs.map +0 -1
  188. package/fesm2022/acorex-modules-person-management-person-identifier.entity-CI8u0Ro6.mjs.map +0 -1
  189. package/fesm2022/acorex-modules-person-management-person-relationship.entity-DK3mYVFv.mjs.map +0 -1
  190. package/fesm2022/acorex-modules-task-management-task-board.page-Cgxdk78j.mjs.map +0 -1
  191. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs +0 -296
  192. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map +0 -1
  193. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs +0 -469
  194. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs.map +0 -1
@@ -0,0 +1,392 @@
1
+ import { AXBasePageComponent } from '@acorex/components/page';
2
+ import * as i4 from '@acorex/core/translation';
3
+ import { AXTranslationModule } from '@acorex/core/translation';
4
+ import * as i1 from '@acorex/components/button';
5
+ import { AXButtonModule } from '@acorex/components/button';
6
+ import * as i2 from '@acorex/components/decorators';
7
+ import { AXDecoratorModule } from '@acorex/components/decorators';
8
+ import { AXPStopwatchComponent } from '@acorex/platform/layout/components';
9
+ import * as i3 from '@angular/common';
10
+ import { CommonModule } from '@angular/common';
11
+ import * as i0 from '@angular/core';
12
+ import { input, computed, signal, viewChild, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
13
+ import { d as AXMQuestionnaireViewerComponent, e as AXMPreQuestionnaireContentComponent, f as AXMPostQuestionnaireContentComponent } from './acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs';
14
+
15
+ //#region ---- Imports ----
16
+ //#endregion
17
+ //#region ---- Component ----
18
+ class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {
19
+ safeInputValue(inputOrValue) {
20
+ return typeof inputOrValue === 'function' ? inputOrValue() : inputOrValue;
21
+ }
22
+ /** Fallback when submitHandler is not passed (e.g. popup framework does not pass functions). */
23
+ getDefaultSubmitHandler() {
24
+ const structure = this.structureValue();
25
+ const prePost = this.prePostConfigValue();
26
+ const totalQuestions = structure?.sections?.reduce((s, sec) => s + (sec.items?.length ?? 0), 0) ?? 0;
27
+ const passingScore = prePost?.passingScore;
28
+ return async (answers) => {
29
+ const answeredCount = Object.keys(answers).filter((k) => {
30
+ const v = answers[k];
31
+ return v != null && v !== '' && !(Array.isArray(v) && v.length === 0);
32
+ }).length;
33
+ const progressPercentage = totalQuestions > 0 ? Math.round((answeredCount / totalQuestions) * 100) : 0;
34
+ const passFail = passingScore != null ? (progressPercentage >= passingScore ? 'Pass' : 'Fail') : undefined;
35
+ return { score: progressPercentage, passFail, totalQuestions, answeredCount };
36
+ };
37
+ }
38
+ //#endregion
39
+ //#region ---- Lifecycle ----
40
+ constructor() {
41
+ super();
42
+ //#region ---- Inputs ----
43
+ this.structure = input.required(...(ngDevMode ? [{ debugName: "structure" }] : []));
44
+ this.prePostConfig = input(null, ...(ngDevMode ? [{ debugName: "prePostConfig" }] : []));
45
+ this.config = input(undefined, ...(ngDevMode ? [{ debugName: "config" }] : []));
46
+ this.initialAnswers = input({}, ...(ngDevMode ? [{ debugName: "initialAnswers" }] : []));
47
+ this.submitHandler = input(...(ngDevMode ? [undefined, { debugName: "submitHandler" }] : []));
48
+ /** Safe accessors: popup framework may overwrite inputs with plain values. */
49
+ this.prePostConfigValue = computed(() => this.safeInputValue(this.prePostConfig), ...(ngDevMode ? [{ debugName: "prePostConfigValue" }] : []));
50
+ this.structureValue = computed(() => this.safeInputValue(this.structure), ...(ngDevMode ? [{ debugName: "structureValue" }] : []));
51
+ this.configValue = computed(() => this.safeInputValue(this.config), ...(ngDevMode ? [{ debugName: "configValue" }] : []));
52
+ this.initialAnswersValue = computed(() => this.safeInputValue(this.initialAnswers), ...(ngDevMode ? [{ debugName: "initialAnswersValue" }] : []));
53
+ this.submitHandlerValue = computed(() => {
54
+ const handler = this.safeInputValue(this.submitHandler);
55
+ if (typeof handler === 'function')
56
+ return handler;
57
+ return this.getDefaultSubmitHandler();
58
+ }, ...(ngDevMode ? [{ debugName: "submitHandlerValue" }] : []));
59
+ /** Use answers from review context when returning from review; otherwise use initial input. */
60
+ this.effectiveInitialAnswers = computed(() => {
61
+ const ctx = this.reviewContext();
62
+ if (!ctx)
63
+ return this.initialAnswersValue();
64
+ return ctx.answers ?? ctx;
65
+ }, ...(ngDevMode ? [{ debugName: "effectiveInitialAnswers" }] : []));
66
+ //#endregion
67
+ //#region ---- State ----
68
+ this.flowStep = signal('questions', ...(ngDevMode ? [{ debugName: "flowStep" }] : []));
69
+ this.reviewSnapshot = signal([], ...(ngDevMode ? [{ debugName: "reviewSnapshot" }] : []));
70
+ this.reviewContext = signal(null, ...(ngDevMode ? [{ debugName: "reviewContext" }] : []));
71
+ this.submitResult = signal(null, ...(ngDevMode ? [{ debugName: "submitResult" }] : []));
72
+ this.lastSubmittedAnswers = signal({}, ...(ngDevMode ? [{ debugName: "lastSubmittedAnswers" }] : []));
73
+ this.lastSubmittedQuestions = signal([], ...(ngDevMode ? [{ debugName: "lastSubmittedQuestions" }] : []));
74
+ this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: "isSubmitting" }] : []));
75
+ this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: "canNavigatePrevious" }] : []));
76
+ this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: "canNavigateNext" }] : []));
77
+ this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: "showNavigationButtons" }] : []));
78
+ this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: "isLastStep" }] : []));
79
+ this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: "areAllRequiredQuestionsAnswered" }] : []));
80
+ //#endregion
81
+ //#region ---- View References ----
82
+ this.viewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: "viewer" }] : []));
83
+ //#endregion
84
+ //#region ---- Computed ----
85
+ this.viewerViewModel = computed(() => this.viewer()?.viewmodel, ...(ngDevMode ? [{ debugName: "viewerViewModel" }] : []));
86
+ this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "totalQuestionsCount" }] : []));
87
+ this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: "showTimer" }] : []));
88
+ this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: "timerTimeLimit" }] : []));
89
+ this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: "timerElapsed" }] : []));
90
+ this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: "answeredQuestionsCount" }] : []));
91
+ this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfigValue()?.postReviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: "showReviewButton" }] : []));
92
+ effect(() => {
93
+ const cfg = this.prePostConfigValue();
94
+ this.flowStep.set(cfg?.preEnabled === true ? 'pre' : 'questions');
95
+ });
96
+ effect(() => {
97
+ const v = this.viewer();
98
+ if (v) {
99
+ const vm = v.viewmodel;
100
+ this.canNavigatePrevious.set(vm.canNavigatePrevious());
101
+ this.canNavigateNext.set(vm.canNavigateNext());
102
+ const viewMode = v.viewMode;
103
+ this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');
104
+ this.isLastStep.set(v.isLastStep);
105
+ this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);
106
+ }
107
+ });
108
+ }
109
+ //#endregion
110
+ //#region ---- Event Handlers ----
111
+ handleReviewClick() {
112
+ const viewer = this.viewer();
113
+ const items = viewer?.getQuestionsWithAnswers() ?? [];
114
+ const context = viewer?.getReviewContext() ?? null;
115
+ this.reviewSnapshot.set(items.map((q) => ({ questionId: q.questionId, title: q.title, answer: q.answer, question: q.question })));
116
+ this.reviewContext.set(context);
117
+ this.flowStep.set('review');
118
+ }
119
+ async handleReviewSubmit() {
120
+ const viewer = this.viewer();
121
+ const handler = this.submitHandlerValue();
122
+ if (!viewer || !handler)
123
+ return;
124
+ this.isSubmitting.set(true);
125
+ try {
126
+ const result = await viewer.submit();
127
+ if (result.success && result.answers) {
128
+ const summary = await handler(result.answers);
129
+ const questions = viewer.getQuestionsWithAnswers();
130
+ this.submitResult.set(summary ?? null);
131
+ this.lastSubmittedAnswers.set(result.answers);
132
+ this.lastSubmittedQuestions.set(questions);
133
+ if ((this.prePostConfigValue()?.postSummaryEnabled ?? false) && summary) {
134
+ this.flowStep.set('summary');
135
+ }
136
+ else {
137
+ this.close({ answers: result.answers, questions, submitted: true });
138
+ }
139
+ }
140
+ }
141
+ finally {
142
+ this.isSubmitting.set(false);
143
+ }
144
+ }
145
+ async handlePreviousClick() {
146
+ await this.viewer()?.navigatePrevious();
147
+ }
148
+ async handleNextClick() {
149
+ await this.viewer()?.navigateNext();
150
+ }
151
+ async handleSubmitClick() {
152
+ const viewer = this.viewer();
153
+ const handler = this.submitHandlerValue();
154
+ if (!viewer || !handler)
155
+ return;
156
+ this.isSubmitting.set(true);
157
+ try {
158
+ const result = await viewer.submit();
159
+ if (result.success && result.answers) {
160
+ const summary = await handler(result.answers);
161
+ const questions = viewer.getQuestionsWithAnswers();
162
+ this.submitResult.set(summary ?? null);
163
+ this.lastSubmittedAnswers.set(result.answers);
164
+ this.lastSubmittedQuestions.set(questions);
165
+ if (this.prePostConfigValue()?.postSummaryEnabled && summary) {
166
+ this.flowStep.set('summary');
167
+ }
168
+ else {
169
+ this.close({ answers: result.answers, questions, submitted: true });
170
+ }
171
+ }
172
+ }
173
+ finally {
174
+ this.isSubmitting.set(false);
175
+ }
176
+ }
177
+ handleDone() {
178
+ const answers = this.lastSubmittedAnswers();
179
+ const questions = this.lastSubmittedQuestions();
180
+ this.close({ answers, questions, submitted: true });
181
+ }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMQuestionnaireViewerPopupComponent, isStandalone: true, selector: "axm-questionnaire-viewer-popup", inputs: { structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: true, transformFunction: null }, prePostConfig: { classPropertyName: "prePostConfig", publicName: "prePostConfig", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, initialAnswers: { classPropertyName: "initialAnswers", publicName: "initialAnswers", isSignal: true, isRequired: false, transformFunction: null }, submitHandler: { classPropertyName: "submitHandler", publicName: "submitHandler", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
184
+ <div class="__main-container ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden">
185
+ <div class="__content-area ax-flex-1 ax-min-h-0 ax-overflow-auto">
186
+ @if (flowStep() === 'pre') {
187
+ <axm-pre-questionnaire-content
188
+ [content]="prePostConfigValue()?.preContent"
189
+ ></axm-pre-questionnaire-content>
190
+ } @else if (flowStep() === 'summary') {
191
+ <axm-post-questionnaire-content
192
+ mode="summary"
193
+ [summaryContent]="prePostConfigValue()?.postSummaryContent"
194
+ [placeholderValues]="submitResult()"
195
+ ></axm-post-questionnaire-content>
196
+ } @else {
197
+ @if (flowStep() === 'review') {
198
+ <axm-post-questionnaire-content
199
+ mode="review"
200
+ [questionsWithAnswers]="reviewSnapshot()"
201
+ [reviewContext]="reviewContext()"
202
+ ></axm-post-questionnaire-content>
203
+ }
204
+ <div
205
+ class="__questions ax-flex ax-flex-col ax-min-h-full"
206
+ [class.ax-invisible]="flowStep() === 'review'"
207
+ [style.position]="flowStep() === 'review' ? 'fixed' : null"
208
+ [style.left]="flowStep() === 'review' ? '-9999px' : null"
209
+ [class.ax-size-0]="flowStep() === 'review'"
210
+ [class.ax-overflow-hidden]="flowStep() === 'review'"
211
+ >
212
+ <div class="__header ax-p-4 ax-border-b">
213
+ <div class="ax-flex ax-justify-between ax-items-center">
214
+ <div class="ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600">
215
+ @if (totalQuestionsCount() > 0) {
216
+ <span><i class="fa-light fa-list-check"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
217
+ }
218
+ @if (showTimer()) {
219
+ <axp-stopwatch
220
+ [mode]="'count-down'"
221
+ [timeLimit]="timerTimeLimit()"
222
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
223
+ [autoStart]="true"
224
+ [showControls]="false"
225
+ [value]="timerElapsed()"
226
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
227
+ ></axp-stopwatch>
228
+ }
229
+ </div>
230
+ </div>
231
+ </div>
232
+ <div class="__content ax-flex-1 ax-min-h-0">
233
+ <axm-questionnaire-viewer
234
+ #viewer
235
+ [structure]="structureValue()"
236
+ [config]="configValue()"
237
+ [initialAnswers]="effectiveInitialAnswers()"
238
+ ></axm-questionnaire-viewer>
239
+ </div>
240
+ </div>
241
+ }
242
+ </div>
243
+ @if (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary') {
244
+ <ax-footer class="ax-flex-shrink-0 ax-border-t ax-border-neutral-200 ax-px-4 ax-py-3">
245
+ <ax-prefix>
246
+ @if (flowStep() === 'questions') {
247
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600">{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}</div>
248
+ }
249
+ </ax-prefix>
250
+ <ax-suffix>
251
+ @if (flowStep() === 'pre') {
252
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async" (onClick)="flowStep.set('questions')"></ax-button>
253
+ } @else if (flowStep() === 'questions') {
254
+ @if (showNavigationButtons()) {
255
+ <ax-button look="solid" [disabled]="!canNavigatePrevious()" [text]="'@general:actions.previous.title' | translate | async" (onClick)="handlePreviousClick()"></ax-button>
256
+ @if (!isLastStep()) {
257
+ <ax-button look="solid" color="primary" [disabled]="!canNavigateNext()" [text]="'@general:actions.next.title' | translate | async" (onClick)="handleNextClick()"></ax-button>
258
+ }
259
+ }
260
+ @if (isLastStep() && showReviewButton()) {
261
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async" [disabled]="!areAllRequiredQuestionsAnswered()" (onClick)="handleReviewClick()"></ax-button>
262
+ }
263
+ @if (isLastStep() && !showReviewButton()) {
264
+ <ax-button look="solid" color="primary" [text]="'@general:actions.submit.title' | translate | async" [disabled]="isSubmitting() || !areAllRequiredQuestionsAnswered()" (onClick)="handleSubmitClick()"></ax-button>
265
+ }
266
+ } @else if (flowStep() === 'review') {
267
+ <ax-button look="outline" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async" (onClick)="flowStep.set('questions')"></ax-button>
268
+ <ax-button look="solid" color="primary" [text]="'@general:actions.submit.title' | translate | async" [disabled]="isSubmitting()" (onClick)="handleReviewSubmit()"></ax-button>
269
+ } @else if (flowStep() === 'summary') {
270
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async" (onClick)="handleDone()"></ax-button>
271
+ }
272
+ </ax-suffix>
273
+ </ax-footer>
274
+ }
275
+ </div>
276
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXPStopwatchComponent, selector: "axp-stopwatch", inputs: ["mode", "timeLimit", "format", "autoStart", "showControls", "value"], outputs: ["valueChange", "timeUp"] }, { kind: "component", type: AXMQuestionnaireViewerComponent, selector: "axm-questionnaire-viewer", inputs: ["questionnaireId", "structure", "config", "initialAnswers"], outputs: ["answersChanged", "questionAnswered"] }, { kind: "component", type: AXMPreQuestionnaireContentComponent, selector: "axm-pre-questionnaire-content", inputs: ["content", "locale"] }, { kind: "component", type: AXMPostQuestionnaireContentComponent, selector: "axm-post-questionnaire-content", inputs: ["mode", "questionsWithAnswers", "reviewContext", "summaryContent", "placeholderValues", "locale"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
277
+ }
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, decorators: [{
279
+ type: Component,
280
+ args: [{
281
+ selector: 'axm-questionnaire-viewer-popup',
282
+ template: `
283
+ <div class="__main-container ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden">
284
+ <div class="__content-area ax-flex-1 ax-min-h-0 ax-overflow-auto">
285
+ @if (flowStep() === 'pre') {
286
+ <axm-pre-questionnaire-content
287
+ [content]="prePostConfigValue()?.preContent"
288
+ ></axm-pre-questionnaire-content>
289
+ } @else if (flowStep() === 'summary') {
290
+ <axm-post-questionnaire-content
291
+ mode="summary"
292
+ [summaryContent]="prePostConfigValue()?.postSummaryContent"
293
+ [placeholderValues]="submitResult()"
294
+ ></axm-post-questionnaire-content>
295
+ } @else {
296
+ @if (flowStep() === 'review') {
297
+ <axm-post-questionnaire-content
298
+ mode="review"
299
+ [questionsWithAnswers]="reviewSnapshot()"
300
+ [reviewContext]="reviewContext()"
301
+ ></axm-post-questionnaire-content>
302
+ }
303
+ <div
304
+ class="__questions ax-flex ax-flex-col ax-min-h-full"
305
+ [class.ax-invisible]="flowStep() === 'review'"
306
+ [style.position]="flowStep() === 'review' ? 'fixed' : null"
307
+ [style.left]="flowStep() === 'review' ? '-9999px' : null"
308
+ [class.ax-size-0]="flowStep() === 'review'"
309
+ [class.ax-overflow-hidden]="flowStep() === 'review'"
310
+ >
311
+ <div class="__header ax-p-4 ax-border-b">
312
+ <div class="ax-flex ax-justify-between ax-items-center">
313
+ <div class="ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600">
314
+ @if (totalQuestionsCount() > 0) {
315
+ <span><i class="fa-light fa-list-check"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>
316
+ }
317
+ @if (showTimer()) {
318
+ <axp-stopwatch
319
+ [mode]="'count-down'"
320
+ [timeLimit]="timerTimeLimit()"
321
+ [format]="timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'"
322
+ [autoStart]="true"
323
+ [showControls]="false"
324
+ [value]="timerElapsed()"
325
+ (valueChange)="viewerViewModel()!.updateTimerElapsed($event)"
326
+ ></axp-stopwatch>
327
+ }
328
+ </div>
329
+ </div>
330
+ </div>
331
+ <div class="__content ax-flex-1 ax-min-h-0">
332
+ <axm-questionnaire-viewer
333
+ #viewer
334
+ [structure]="structureValue()"
335
+ [config]="configValue()"
336
+ [initialAnswers]="effectiveInitialAnswers()"
337
+ ></axm-questionnaire-viewer>
338
+ </div>
339
+ </div>
340
+ }
341
+ </div>
342
+ @if (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary') {
343
+ <ax-footer class="ax-flex-shrink-0 ax-border-t ax-border-neutral-200 ax-px-4 ax-py-3">
344
+ <ax-prefix>
345
+ @if (flowStep() === 'questions') {
346
+ <div class="ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600">{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}</div>
347
+ }
348
+ </ax-prefix>
349
+ <ax-suffix>
350
+ @if (flowStep() === 'pre') {
351
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async" (onClick)="flowStep.set('questions')"></ax-button>
352
+ } @else if (flowStep() === 'questions') {
353
+ @if (showNavigationButtons()) {
354
+ <ax-button look="solid" [disabled]="!canNavigatePrevious()" [text]="'@general:actions.previous.title' | translate | async" (onClick)="handlePreviousClick()"></ax-button>
355
+ @if (!isLastStep()) {
356
+ <ax-button look="solid" color="primary" [disabled]="!canNavigateNext()" [text]="'@general:actions.next.title' | translate | async" (onClick)="handleNextClick()"></ax-button>
357
+ }
358
+ }
359
+ @if (isLastStep() && showReviewButton()) {
360
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async" [disabled]="!areAllRequiredQuestionsAnswered()" (onClick)="handleReviewClick()"></ax-button>
361
+ }
362
+ @if (isLastStep() && !showReviewButton()) {
363
+ <ax-button look="solid" color="primary" [text]="'@general:actions.submit.title' | translate | async" [disabled]="isSubmitting() || !areAllRequiredQuestionsAnswered()" (onClick)="handleSubmitClick()"></ax-button>
364
+ }
365
+ } @else if (flowStep() === 'review') {
366
+ <ax-button look="outline" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async" (onClick)="flowStep.set('questions')"></ax-button>
367
+ <ax-button look="solid" color="primary" [text]="'@general:actions.submit.title' | translate | async" [disabled]="isSubmitting()" (onClick)="handleReviewSubmit()"></ax-button>
368
+ } @else if (flowStep() === 'summary') {
369
+ <ax-button look="solid" color="primary" [text]="'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async" (onClick)="handleDone()"></ax-button>
370
+ }
371
+ </ax-suffix>
372
+ </ax-footer>
373
+ }
374
+ </div>
375
+ `,
376
+ changeDetection: ChangeDetectionStrategy.OnPush,
377
+ imports: [
378
+ CommonModule,
379
+ AXTranslationModule,
380
+ AXButtonModule,
381
+ AXDecoratorModule,
382
+ AXPStopwatchComponent,
383
+ AXMQuestionnaireViewerComponent,
384
+ AXMPreQuestionnaireContentComponent,
385
+ AXMPostQuestionnaireContentComponent,
386
+ ],
387
+ encapsulation: ViewEncapsulation.None,
388
+ }]
389
+ }], ctorParameters: () => [], propDecorators: { structure: [{ type: i0.Input, args: [{ isSignal: true, alias: "structure", required: true }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "prePostConfig", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAnswers", required: false }] }], submitHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitHandler", required: false }] }], viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });
390
+
391
+ export { AXMQuestionnaireViewerPopupComponent };
392
+ //# sourceMappingURL=acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs","sources":["../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer-popup.component.js"],"sourcesContent":["//#region ---- Imports ----\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPStopwatchComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXMQuestionnaireViewerComponent } from './questionnaire-viewer.component';\nimport { AXMPreQuestionnaireContentComponent } from './components/pre-questionnaire-content';\nimport { AXMPostQuestionnaireContentComponent, } from './components/post-questionnaire-content';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\nexport class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {\n safeInputValue(inputOrValue) {\n return typeof inputOrValue === 'function' ? inputOrValue() : inputOrValue;\n }\n /** Fallback when submitHandler is not passed (e.g. popup framework does not pass functions). */\n getDefaultSubmitHandler() {\n const structure = this.structureValue();\n const prePost = this.prePostConfigValue();\n const totalQuestions = structure?.sections?.reduce((s, sec) => s + (sec.items?.length ?? 0), 0) ?? 0;\n const passingScore = prePost?.passingScore;\n return async (answers) => {\n const answeredCount = Object.keys(answers).filter((k) => {\n const v = answers[k];\n return v != null && v !== '' && !(Array.isArray(v) && v.length === 0);\n }).length;\n const progressPercentage = totalQuestions > 0 ? Math.round((answeredCount / totalQuestions) * 100) : 0;\n const passFail = passingScore != null ? (progressPercentage >= passingScore ? 'Pass' : 'Fail') : undefined;\n return { score: progressPercentage, passFail, totalQuestions, answeredCount };\n };\n }\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n super();\n //#region ---- Inputs ----\n this.structure = input.required(...(ngDevMode ? [{ debugName: \"structure\" }] : []));\n this.prePostConfig = input(null, ...(ngDevMode ? [{ debugName: \"prePostConfig\" }] : []));\n this.config = input(undefined, ...(ngDevMode ? [{ debugName: \"config\" }] : []));\n this.initialAnswers = input({}, ...(ngDevMode ? [{ debugName: \"initialAnswers\" }] : []));\n this.submitHandler = input(...(ngDevMode ? [undefined, { debugName: \"submitHandler\" }] : []));\n /** Safe accessors: popup framework may overwrite inputs with plain values. */\n this.prePostConfigValue = computed(() => this.safeInputValue(this.prePostConfig), ...(ngDevMode ? [{ debugName: \"prePostConfigValue\" }] : []));\n this.structureValue = computed(() => this.safeInputValue(this.structure), ...(ngDevMode ? [{ debugName: \"structureValue\" }] : []));\n this.configValue = computed(() => this.safeInputValue(this.config), ...(ngDevMode ? [{ debugName: \"configValue\" }] : []));\n this.initialAnswersValue = computed(() => this.safeInputValue(this.initialAnswers), ...(ngDevMode ? [{ debugName: \"initialAnswersValue\" }] : []));\n this.submitHandlerValue = computed(() => {\n const handler = this.safeInputValue(this.submitHandler);\n if (typeof handler === 'function')\n return handler;\n return this.getDefaultSubmitHandler();\n }, ...(ngDevMode ? [{ debugName: \"submitHandlerValue\" }] : []));\n /** Use answers from review context when returning from review; otherwise use initial input. */\n this.effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx)\n return this.initialAnswersValue();\n return ctx.answers ?? ctx;\n }, ...(ngDevMode ? [{ debugName: \"effectiveInitialAnswers\" }] : []));\n //#endregion\n //#region ---- State ----\n this.flowStep = signal('questions', ...(ngDevMode ? [{ debugName: \"flowStep\" }] : []));\n this.reviewSnapshot = signal([], ...(ngDevMode ? [{ debugName: \"reviewSnapshot\" }] : []));\n this.reviewContext = signal(null, ...(ngDevMode ? [{ debugName: \"reviewContext\" }] : []));\n this.submitResult = signal(null, ...(ngDevMode ? [{ debugName: \"submitResult\" }] : []));\n this.lastSubmittedAnswers = signal({}, ...(ngDevMode ? [{ debugName: \"lastSubmittedAnswers\" }] : []));\n this.lastSubmittedQuestions = signal([], ...(ngDevMode ? [{ debugName: \"lastSubmittedQuestions\" }] : []));\n this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: \"isSubmitting\" }] : []));\n this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigatePrevious\" }] : []));\n this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigateNext\" }] : []));\n this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: \"showNavigationButtons\" }] : []));\n this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: \"isLastStep\" }] : []));\n this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: \"areAllRequiredQuestionsAnswered\" }] : []));\n //#endregion\n //#region ---- View References ----\n this.viewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: \"viewer\" }] : []));\n //#endregion\n //#region ---- Computed ----\n this.viewerViewModel = computed(() => this.viewer()?.viewmodel, ...(ngDevMode ? [{ debugName: \"viewerViewModel\" }] : []));\n this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"totalQuestionsCount\" }] : []));\n this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: \"showTimer\" }] : []));\n this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: \"timerTimeLimit\" }] : []));\n this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: \"timerElapsed\" }] : []));\n this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"answeredQuestionsCount\" }] : []));\n this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfigValue()?.postReviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: \"showReviewButton\" }] : []));\n effect(() => {\n const cfg = this.prePostConfigValue();\n this.flowStep.set(cfg?.preEnabled === true ? 'pre' : 'questions');\n });\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleReviewClick() {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(items.map((q) => ({ questionId: q.questionId, title: q.title, answer: q.answer, question: q.question })));\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n async handleReviewSubmit() {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n if ((this.prePostConfigValue()?.postSummaryEnabled ?? false) && summary) {\n this.flowStep.set('summary');\n }\n else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n async handlePreviousClick() {\n await this.viewer()?.navigatePrevious();\n }\n async handleNextClick() {\n await this.viewer()?.navigateNext();\n }\n async handleSubmitClick() {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n if (this.prePostConfigValue()?.postSummaryEnabled && summary) {\n this.flowStep.set('summary');\n }\n else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n handleDone() {\n const answers = this.lastSubmittedAnswers();\n const questions = this.lastSubmittedQuestions();\n this.close({ answers, questions, submitted: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerPopupComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-popup\", inputs: { structure: { classPropertyName: \"structure\", publicName: \"structure\", isSignal: true, isRequired: true, transformFunction: null }, prePostConfig: { classPropertyName: \"prePostConfig\", publicName: \"prePostConfig\", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: true, isRequired: false, transformFunction: null }, initialAnswers: { classPropertyName: \"initialAnswers\", publicName: \"initialAnswers\", isSignal: true, isRequired: false, transformFunction: null }, submitHandler: { classPropertyName: \"submitHandler\", publicName: \"submitHandler\", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: \"viewer\", first: true, predicate: [\"viewer\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <div class=\"__main-container ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\">\n <div class=\"__content-area ax-flex-1 ax-min-h-0 ax-overflow-auto\">\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfigValue()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfigValue()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structureValue()\"\n [config]=\"configValue()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n </div>\n @if (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary') {\n <ax-footer class=\"ax-flex-shrink-0 ax-border-t ax-border-neutral-200 ax-px-4 ax-py-3\">\n <ax-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}</div>\n }\n </ax-prefix>\n <ax-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </ax-suffix>\n </ax-footer>\n }\n </div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXPStopwatchComponent, selector: \"axp-stopwatch\", inputs: [\"mode\", \"timeLimit\", \"format\", \"autoStart\", \"showControls\", \"value\"], outputs: [\"valueChange\", \"timeUp\"] }, { kind: \"component\", type: AXMQuestionnaireViewerComponent, selector: \"axm-questionnaire-viewer\", inputs: [\"questionnaireId\", \"structure\", \"config\", \"initialAnswers\"], outputs: [\"answersChanged\", \"questionAnswered\"] }, { kind: \"component\", type: AXMPreQuestionnaireContentComponent, selector: \"axm-pre-questionnaire-content\", inputs: [\"content\", \"locale\"] }, { kind: \"component\", type: AXMPostQuestionnaireContentComponent, selector: \"axm-post-questionnaire-content\", inputs: [\"mode\", \"questionsWithAnswers\", \"reviewContext\", \"summaryContent\", \"placeholderValues\", \"locale\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPopupComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-questionnaire-viewer-popup',\n template: `\n <div class=\"__main-container ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-overflow-hidden\">\n <div class=\"__content-area ax-flex-1 ax-min-h-0 ax-overflow-auto\">\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfigValue()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfigValue()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structureValue()\"\n [config]=\"configValue()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n </div>\n @if (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary') {\n <ax-footer class=\"ax-flex-shrink-0 ax-border-t ax-border-neutral-200 ax-px-4 ax-py-3\">\n <ax-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">{{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}</div>\n }\n </ax-prefix>\n <ax-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </ax-suffix>\n </ax-footer>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXButtonModule,\n AXDecoratorModule,\n AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n }]\n }], ctorParameters: () => [], propDecorators: { structure: [{ type: i0.Input, args: [{ isSignal: true, alias: \"structure\", required: true }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: \"prePostConfig\", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: \"config\", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: \"initialAnswers\", required: false }] }], submitHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: \"submitHandler\", required: false }] }], viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXItcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RixPQUFPLEVBQ0wsb0NBQW9DLEdBRXJDLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQVFqRCxZQUFZO0FBRVosaUNBQWlDO0FBK0dqQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsbUJBQW1CO0lBNkJuRSxjQUFjLENBQUksWUFBMkI7UUFDbkQsT0FBTyxPQUFPLFlBQVksS0FBSyxVQUFV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QU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0F6TFUsb0NBQW9DO21HQUFwQyxvQ0FBb0MsZzZCQTNHckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZGVCwyREFHQyxZQUFZLDhCQUNaLG1CQUFtQiw4QkFDbkIsY0FBYyw2WEFDZCxpQkFBaUIsc1BBQ2pCLHFCQUFxQiw2S0FDckIsK0JBQStCLDRMQUMvQixtQ0FBbUMseUdBQ25DLG9DQUFvQzs7NEZBSTNCLG9DQUFvQztrQkE3R2hELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RlQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsK0JBQStCO3dCQUMvQixtQ0FBbUM7d0JBQ25DLG9DQUFvQztxQkFDckM7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzJsQkF3RXdFLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYUFN0b3B3YXRjaENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS1idWlsZGVyL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlVmlld2VyQ29uZmlnIH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFByZVBvc3RDb25maWcgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXMgfSBmcm9tICcuL3V0aWxzL3ByZS1wb3N0LWNvbnRlbnQudXRpbHMnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vcXVlc3Rpb25uYWlyZS12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVByZVF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ByZS1xdWVzdGlvbm5haXJlLWNvbnRlbnQnO1xuaW1wb3J0IHtcbiAgQVhNUG9zdFF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50LFxuICB0eXBlIFF1ZXN0aW9uV2l0aEFuc3dlcixcbn0gZnJvbSAnLi9jb21wb25lbnRzL3Bvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbnR5cGUgRmxvd1N0ZXAgPSAncHJlJyB8ICdxdWVzdGlvbnMnIHwgJ3JldmlldycgfCAnc3VtbWFyeSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCAgIC0tLS1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXBvcHVwJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiX19tYWluLWNvbnRhaW5lciBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWZsZXgtMSBheC1taW4taC0wIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudC1hcmVhIGF4LWZsZXgtMSBheC1taW4taC0wIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncHJlJykge1xuICAgICAgICAgIDxheG0tcHJlLXF1ZXN0aW9ubmFpcmUtY29udGVudFxuICAgICAgICAgICAgW2NvbnRlbnRdPVwicHJlUG9zdENvbmZpZ1ZhbHVlKCk/LnByZUNvbnRlbnRcIlxuICAgICAgICAgID48L2F4bS1wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50PlxuICAgICAgICB9IEBlbHNlIGlmIChmbG93U3RlcCgpID09PSAnc3VtbWFyeScpIHtcbiAgICAgICAgICA8YXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50XG4gICAgICAgICAgICBtb2RlPVwic3VtbWFyeVwiXG4gICAgICAgICAgICBbc3VtbWFyeUNvbnRlbnRdPVwicHJlUG9zdENvbmZpZ1ZhbHVlKCk/LnBvc3RTdW1tYXJ5Q29udGVudFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJWYWx1ZXNdPVwic3VibWl0UmVzdWx0KClcIlxuICAgICAgICAgID48L2F4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncmV2aWV3Jykge1xuICAgICAgICAgICAgPGF4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudFxuICAgICAgICAgICAgICBtb2RlPVwicmV2aWV3XCJcbiAgICAgICAgICAgICAgW3F1ZXN0aW9uc1dpdGhBbnN3ZXJzXT1cInJldmlld1NuYXBzaG90KClcIlxuICAgICAgICAgICAgICBbcmV2aWV3Q29udGV4dF09XCJyZXZpZXdDb250ZXh0KClcIlxuICAgICAgICAgICAgPjwvYXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIl9fcXVlc3Rpb25zIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLWgtZnVsbFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtaW52aXNpYmxlXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnXCJcbiAgICAgICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCJmbG93U3RlcCgpID09PSAncmV2aWV3JyA/ICdmaXhlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnID8gJy05OTk5cHgnIDogbnVsbFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc2l6ZS0wXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1vdmVyZmxvdy1oaWRkZW5dPVwiZmxvd1N0ZXAoKSA9PT0gJ3JldmlldydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlciBheC1wLTQgYXgtYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtNCBheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAodG90YWxRdWVzdGlvbnNDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWxpc3QtY2hlY2tcIj48L2k+IHt7IHRvdGFsUXVlc3Rpb25zQ291bnQoKSB9fSB7eyB0b3RhbFF1ZXN0aW9uc0NvdW50KCkgPT09IDEgPyAnUXVlc3Rpb24nIDogJ1F1ZXN0aW9ucycgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3dUaW1lcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheHAtc3RvcHdhdGNoXG4gICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2NvdW50LWRvd24nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGltZUxpbWl0XT1cInRpbWVyVGltZUxpbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwidGltZXJUaW1lTGltaXQoKSAmJiB0aW1lclRpbWVMaW1pdCgpISA+PSAzNjAwID8gJ2hoOm1tOnNzJyA6ICdtbTpzcydcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvU3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dDb250cm9sc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRpbWVyRWxhcHNlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmlld2VyVmlld01vZGVsKCkhLnVwZGF0ZVRpbWVyRWxhcHNlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXhwLXN0b3B3YXRjaD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnQgYXgtZmxleC0xIGF4LW1pbi1oLTBcIj5cbiAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlclxuICAgICAgICAgICAgICAgICN2aWV3ZXJcbiAgICAgICAgICAgICAgICBbc3RydWN0dXJlXT1cInN0cnVjdHVyZVZhbHVlKClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiY29uZmlnVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgW2luaXRpYWxBbnN3ZXJzXT1cImVmZmVjdGl2ZUluaXRpYWxBbnN3ZXJzKClcIlxuICAgICAgICAgICAgICA+PC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGZsb3dTdGVwKCkgPT09ICdwcmUnIHx8IGZsb3dTdGVwKCkgPT09ICdxdWVzdGlvbnMnIHx8IGZsb3dTdGVwKCkgPT09ICdyZXZpZXcnIHx8IGZsb3dTdGVwKCkgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgICA8YXgtZm9vdGVyIGNsYXNzPVwiYXgtZmxleC1zaHJpbmstMCBheC1ib3JkZXItdCBheC1ib3JkZXItbmV1dHJhbC0yMDAgYXgtcHgtNCBheC1weS0zXCI+XG4gICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgIEBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3F1ZXN0aW9ucycpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtZm9udC1tb25vIGF4LXRhYnVsYXItbnVtcyBheC10ZXh0LW5ldXRyYWwtNjAwXCI+e3sgYW5zd2VyZWRRdWVzdGlvbnNDb3VudCgpIH19IC8ge3sgdG90YWxRdWVzdGlvbnNDb3VudCgpIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIEBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3ByZScpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cuc3RhcnQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJmbG93U3RlcC5zZXQoJ3F1ZXN0aW9ucycpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChmbG93U3RlcCgpID09PSAncXVlc3Rpb25zJykge1xuICAgICAgICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uQnV0dG9ucygpKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBbZGlzYWJsZWRdPVwiIWNhbk5hdmlnYXRlUHJldmlvdXMoKVwiIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLnByZXZpb3VzLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlUHJldmlvdXNDbGljaygpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmICghaXNMYXN0U3RlcCgpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhY2FuTmF2aWdhdGVOZXh0KClcIiBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5uZXh0LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlTmV4dENsaWNrKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpc0xhc3RTdGVwKCkgJiYgc2hvd1Jldmlld0J1dHRvbigpKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cucmV2aWV3JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgW2Rpc2FibGVkXT1cIiFhcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKClcIiAob25DbGljayk9XCJoYW5kbGVSZXZpZXdDbGljaygpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpc0xhc3RTdGVwKCkgJiYgIXNob3dSZXZpZXdCdXR0b24oKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMuc3VibWl0LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgW2Rpc2FibGVkXT1cImlzU3VibWl0dGluZygpIHx8ICFhcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKClcIiAob25DbGljayk9XCJoYW5kbGVTdWJtaXRDbGljaygpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZsb3dTdGVwKCkgPT09ICdyZXZpZXcnKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cIm91dGxpbmVcIiBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cuZWRpdCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImZsb3dTdGVwLnNldCgncXVlc3Rpb25zJylcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5zdWJtaXQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nKClcIiAob25DbGljayk9XCJoYW5kbGVSZXZpZXdTdWJtaXQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3N1bW1hcnknKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5mbG93LmRvbmUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVEb25lKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgPC9heC1mb290ZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhQU3RvcHdhdGNoQ29tcG9uZW50LFxuICAgIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQsXG4gICAgQVhNUHJlUXVlc3Rpb25uYWlyZUNvbnRlbnRDb21wb25lbnQsXG4gICAgQVhNUG9zdFF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlVmlld2VyUG9wdXBDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBJbnB1dHMgICAtLS0tXG5cbiAgc3RydWN0dXJlID0gaW5wdXQucmVxdWlyZWQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZT4oKTtcbiAgcHJlUG9zdENvbmZpZyA9IGlucHV0PFByZVBvc3RDb25maWcgfCBudWxsPihudWxsKTtcbiAgY29uZmlnID0gaW5wdXQ8UXVlc3Rpb25uYWlyZVZpZXdlckNvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaW5pdGlhbEFuc3dlcnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG4gIHN1Ym1pdEhhbmRsZXIgPSBpbnB1dDxcbiAgICAoKGFuc3dlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFByb21pc2U8U3VtbWFyeVBsYWNlaG9sZGVyVmFsdWVzIHwgbnVsbCB8IHZvaWQ+KSB8IHVuZGVmaW5lZFxuICA+KCk7XG5cbiAgLyoqIFNhZmUgYWNjZXNzb3JzOiBwb3B1cCBmcmFtZXdvcmsgbWF5IG92ZXJ3cml0ZSBpbnB1dHMgd2l0aCBwbGFpbiB2YWx1ZXMuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmVQb3N0Q29uZmlnVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNhZmVJbnB1dFZhbHVlKHRoaXMucHJlUG9zdENvbmZpZykpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RydWN0dXJlVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNhZmVJbnB1dFZhbHVlKHRoaXMuc3RydWN0dXJlKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWdWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2FmZUlucHV0VmFsdWUodGhpcy5jb25maWcpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxBbnN3ZXJzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNhZmVJbnB1dFZhbHVlKHRoaXMuaW5pdGlhbEFuc3dlcnMpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Ym1pdEhhbmRsZXJWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5zYWZlSW5wdXRWYWx1ZSh0aGlzLnN1Ym1pdEhhbmRsZXIpO1xuICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGhhbmRsZXI7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFN1Ym1pdEhhbmRsZXIoKTtcbiAgfSk7XG5cbiAgLyoqIFVzZSBhbnN3ZXJzIGZyb20gcmV2aWV3IGNvbnRleHQgd2hlbiByZXR1cm5pbmcgZnJvbSByZXZpZXc7IG90aGVyd2lzZSB1c2UgaW5pdGlhbCBpbnB1dC4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVmZmVjdGl2ZUluaXRpYWxBbnN3ZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IHRoaXMucmV2aWV3Q29udGV4dCgpO1xuICAgIGlmICghY3R4KSByZXR1cm4gdGhpcy5pbml0aWFsQW5zd2Vyc1ZhbHVlKCk7XG4gICAgcmV0dXJuIChjdHggYXMgeyBhbnN3ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PiB9KS5hbnN3ZXJzID8/IGN0eDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBzYWZlSW5wdXRWYWx1ZTxUPihpbnB1dE9yVmFsdWU6IFQgfCAoKCkgPT4gVCkpOiBUIHtcbiAgICByZXR1cm4gdHlwZW9mIGlucHV0T3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IChpbnB1dE9yVmFsdWUgYXMgKCkgPT4gVCkoKSA6IChpbnB1dE9yVmFsdWUgYXMgVCk7XG4gIH1cblxuICAvKiogRmFsbGJhY2sgd2hlbiBzdWJtaXRIYW5kbGVyIGlzIG5vdCBwYXNzZWQgKGUuZy4gcG9wdXAgZnJhbWV3b3JrIGRvZXMgbm90IHBhc3MgZnVuY3Rpb25zKS4gKi9cbiAgcHJpdmF0ZSBnZXREZWZhdWx0U3VibWl0SGFuZGxlcigpOiAoYW5zd2VyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUHJvbWlzZTxTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXMgfCBudWxsPiB7XG4gICAgY29uc3Qgc3RydWN0dXJlID0gdGhpcy5zdHJ1Y3R1cmVWYWx1ZSgpO1xuICAgIGNvbnN0IHByZVBvc3QgPSB0aGlzLnByZVBvc3RDb25maWdWYWx1ZSgpO1xuICAgIGNvbnN0IHRvdGFsUXVlc3Rpb25zID0gc3RydWN0dXJlPy5zZWN0aW9ucz8ucmVkdWNlKChzOiBudW1iZXIsIHNlYzogYW55KSA9PiBzICsgKHNlYy5pdGVtcz8ubGVuZ3RoID8/IDApLCAwKSA/PyAwO1xuICAgIGNvbnN0IHBhc3NpbmdTY29yZSA9IHByZVBvc3Q/LnBhc3NpbmdTY29yZTtcbiAgICByZXR1cm4gYXN5bmMgKGFuc3dlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICAgIGNvbnN0IGFuc3dlcmVkQ291bnQgPSBPYmplY3Qua2V5cyhhbnN3ZXJzKS5maWx0ZXIoKGspID0+IHtcbiAgICAgICAgY29uc3QgdiA9IGFuc3dlcnNba107XG4gICAgICAgIHJldHVybiB2ICE9IG51bGwgJiYgdiAhPT0gJycgJiYgIShBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKTtcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IHByb2dyZXNzUGVyY2VudGFnZSA9IHRvdGFsUXVlc3Rpb25zID4gMCA/IE1hdGgucm91bmQoKGFuc3dlcmVkQ291bnQgLyB0b3RhbFF1ZXN0aW9ucykgKiAxMDApIDogMDtcbiAgICAgIGNvbnN0IHBhc3NGYWlsID0gcGFzc2luZ1Njb3JlICE9IG51bGwgPyAocHJvZ3Jlc3NQZXJjZW50YWdlID49IHBhc3NpbmdTY29yZSA/ICdQYXNzJyA6ICdGYWlsJykgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyBzY29yZTogcHJvZ3Jlc3NQZXJjZW50YWdlLCBwYXNzRmFpbCwgdG90YWxRdWVzdGlvbnMsIGFuc3dlcmVkQ291bnQgfTtcbiAgICB9O1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBTdGF0ZSAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmxvd1N0ZXAgPSBzaWduYWw8Rmxvd1N0ZXA+KCdxdWVzdGlvbnMnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJldmlld1NuYXBzaG90ID0gc2lnbmFsPFF1ZXN0aW9uV2l0aEFuc3dlcltdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXZpZXdDb250ZXh0ID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Ym1pdFJlc3VsdCA9IHNpZ25hbDxTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXMgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhc3RTdWJtaXR0ZWRBbnN3ZXJzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhc3RTdWJtaXR0ZWRRdWVzdGlvbnMgPSBzaWduYWw8QXJyYXk8eyBxdWVzdGlvbklkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGFuc3dlcjogYW55IH0+PihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1N1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuTmF2aWdhdGVQcmV2aW91cyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5OYXZpZ2F0ZU5leHQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd05hdmlnYXRpb25CdXR0b25zID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTGFzdFN0ZXAgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXJlQWxsUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBWaWV3IFJlZmVyZW5jZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdlciA9IHZpZXdDaGlsZDxBWE1RdWVzdGlvbm5haXJlVmlld2VyQ29tcG9uZW50Pigndmlld2VyJyk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld2VyVmlld01vZGVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXIoKT8udmlld21vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvdGFsUXVlc3Rpb25zQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlclZpZXdNb2RlbCgpPy50b3RhbFF1ZXN0aW9uc0NvdW50KCkgPz8gMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93VGltZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlclZpZXdNb2RlbCgpPy5zaG93VGltZXIoKSA/PyBmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lclRpbWVMaW1pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyVmlld01vZGVsKCk/LnRpbWVyVGltZUxpbWl0KCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZXJFbGFwc2VkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8udGltZXJFbGFwc2VkKCkgPz8gMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8uYW5zd2VyZWRRdWVzdGlvbnNDb3VudCgpID8/IDApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93UmV2aWV3QnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5pc0xhc3RTdGVwKCkgJiYgKHRoaXMucHJlUG9zdENvbmZpZ1ZhbHVlKCk/LnBvc3RSZXZpZXdFbmFibGVkID8/IGZhbHNlKSAmJiB0aGlzLmZsb3dTdGVwKCkgPT09ICdxdWVzdGlvbnMnXG4gICk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY2ZnID0gdGhpcy5wcmVQb3N0Q29uZmlnVmFsdWUoKTtcbiAgICAgIHRoaXMuZmxvd1N0ZXAuc2V0KGNmZz8ucHJlRW5hYmxlZCA9PT0gdHJ1ZSA/ICdwcmUnIDogJ3F1ZXN0aW9ucycpO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2ID0gdGhpcy52aWV3ZXIoKTtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIGNvbnN0IHZtID0gdi52aWV3bW9kZWw7XG4gICAgICAgIHRoaXMuY2FuTmF2aWdhdGVQcmV2aW91cy5zZXQodm0uY2FuTmF2aWdhdGVQcmV2aW91cygpKTtcbiAgICAgICAgdGhpcy5jYW5OYXZpZ2F0ZU5leHQuc2V0KHZtLmNhbk5hdmlnYXRlTmV4dCgpKTtcbiAgICAgICAgY29uc3Qgdmlld01vZGUgPSB2LnZpZXdNb2RlO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uQnV0dG9ucy5zZXQodmlld01vZGUgPT09ICdwYWdlLXBlci1ncm91cCcgfHwgdmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicgfHwgdmlld01vZGUgPT09ICdzaWRlLW1lbnUnKTtcbiAgICAgICAgdGhpcy5pc0xhc3RTdGVwLnNldCh2LmlzTGFzdFN0ZXApO1xuICAgICAgICB0aGlzLmFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQuc2V0KHYuYXJlQWxsUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXZpZXdDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3ZXIgPSB0aGlzLnZpZXdlcigpO1xuICAgIGNvbnN0IGl0ZW1zID0gdmlld2VyPy5nZXRRdWVzdGlvbnNXaXRoQW5zd2VycygpID8/IFtdO1xuICAgIGNvbnN0IGNvbnRleHQgPSB2aWV3ZXI/LmdldFJldmlld0NvbnRleHQoKSA/PyBudWxsO1xuICAgIHRoaXMucmV2aWV3U25hcHNob3Quc2V0KGl0ZW1zLm1hcCgocSkgPT4gKHsgcXVlc3Rpb25JZDogcS5xdWVzdGlvbklkLCB0aXRsZTogcS50aXRsZSwgYW5zd2VyOiBxLmFuc3dlciwgcXVlc3Rpb246IHEucXVlc3Rpb24gfSkpKTtcbiAgICB0aGlzLnJldmlld0NvbnRleHQuc2V0KGNvbnRleHQpO1xuICAgIHRoaXMuZmxvd1N0ZXAuc2V0KCdyZXZpZXcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSZXZpZXdTdWJtaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgdmlld2VyID0gdGhpcy52aWV3ZXIoKTtcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5zdWJtaXRIYW5kbGVyVmFsdWUoKTtcbiAgICBpZiAoIXZpZXdlciB8fCAhaGFuZGxlcikgcmV0dXJuO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmlld2VyLnN1Ym1pdCgpO1xuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzICYmIHJlc3VsdC5hbnN3ZXJzKSB7XG4gICAgICAgIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCBoYW5kbGVyKHJlc3VsdC5hbnN3ZXJzKTtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25zID0gdmlld2VyLmdldFF1ZXN0aW9uc1dpdGhBbnN3ZXJzKCk7XG4gICAgICAgIHRoaXMuc3VibWl0UmVzdWx0LnNldChzdW1tYXJ5ID8/IG51bGwpO1xuICAgICAgICB0aGlzLmxhc3RTdWJtaXR0ZWRBbnN3ZXJzLnNldChyZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgIHRoaXMubGFzdFN1Ym1pdHRlZFF1ZXN0aW9ucy5zZXQocXVlc3Rpb25zKTtcbiAgICAgICAgaWYgKCh0aGlzLnByZVBvc3RDb25maWdWYWx1ZSgpPy5wb3N0U3VtbWFyeUVuYWJsZWQgPz8gZmFsc2UpICYmIHN1bW1hcnkpIHtcbiAgICAgICAgICB0aGlzLmZsb3dTdGVwLnNldCgnc3VtbWFyeScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2xvc2UoeyBhbnN3ZXJzOiByZXN1bHQuYW5zd2VycywgcXVlc3Rpb25zLCBzdWJtaXR0ZWQ6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUHJldmlvdXNDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnZpZXdlcigpPy5uYXZpZ2F0ZVByZXZpb3VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlTmV4dENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudmlld2VyKCk/Lm5hdmlnYXRlTmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVN1Ym1pdENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZXdlciA9IHRoaXMudmlld2VyKCk7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc3VibWl0SGFuZGxlclZhbHVlKCk7XG4gICAgaWYgKCF2aWV3ZXIgfHwgIWhhbmRsZXIpIHJldHVybjtcbiAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZpZXdlci5zdWJtaXQoKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuYW5zd2Vycykge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgaGFuZGxlcihyZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IHZpZXdlci5nZXRRdWVzdGlvbnNXaXRoQW5zd2VycygpO1xuICAgICAgICB0aGlzLnN1Ym1pdFJlc3VsdC5zZXQoc3VtbWFyeSA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5sYXN0U3VibWl0dGVkQW5zd2Vycy5zZXQocmVzdWx0LmFuc3dlcnMpO1xuICAgICAgICB0aGlzLmxhc3RTdWJtaXR0ZWRRdWVzdGlvbnMuc2V0KHF1ZXN0aW9ucyk7XG4gICAgICAgIGlmICh0aGlzLnByZVBvc3RDb25maWdWYWx1ZSgpPy5wb3N0U3VtbWFyeUVuYWJsZWQgJiYgc3VtbWFyeSkge1xuICAgICAgICAgIHRoaXMuZmxvd1N0ZXAuc2V0KCdzdW1tYXJ5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSh7IGFuc3dlcnM6IHJlc3VsdC5hbnN3ZXJzLCBxdWVzdGlvbnMsIHN1Ym1pdHRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEb25lKCk6IHZvaWQge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0aGlzLmxhc3RTdWJtaXR0ZWRBbnN3ZXJzKCk7XG4gICAgY29uc3QgcXVlc3Rpb25zID0gdGhpcy5sYXN0U3VibWl0dGVkUXVlc3Rpb25zKCk7XG4gICAgdGhpcy5jbG9zZSh7IGFuc3dlcnMsIHF1ZXN0aW9ucywgc3VibWl0dGVkOiB0cnVlIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { AXPopupService } from '@acorex/components/popup';
4
4
 
5
5
  //#region ---- Imports ----
@@ -16,15 +16,30 @@ class AXMQuestionnaireViewerService {
16
16
  * Open questionnaire viewer in a dialog
17
17
  */
18
18
  async open(config) {
19
- const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs');
19
+ const { AXMQuestionnaireViewerPopupComponent } = await import('./acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs');
20
+ const structure = config.structure;
21
+ const totalQuestions = structure?.sections?.reduce((s, sec) => s + (sec.items?.length ?? 0), 0) ?? 0;
22
+ const passingScore = config.prePostConfig?.passingScore;
23
+ const submitHandler = config.submitHandler ??
24
+ (async (answers) => {
25
+ const answeredCount = Object.keys(answers).filter((k) => {
26
+ const v = answers[k];
27
+ return v != null && v !== '' && !(Array.isArray(v) && v.length === 0);
28
+ }).length;
29
+ const progressPercentage = totalQuestions > 0 ? Math.round((answeredCount / totalQuestions) * 100) : 0;
30
+ const passFail = passingScore != null ? (progressPercentage >= passingScore ? 'Pass' : 'Fail') : undefined;
31
+ return { score: progressPercentage, passFail, totalQuestions, answeredCount };
32
+ });
20
33
  const result = await this.popupService.open(AXMQuestionnaireViewerPopupComponent, {
21
34
  title: config.title,
22
35
  size: config.size || 'lg',
23
36
  maximizable: true,
24
37
  data: {
25
- structure: signal(config.structure),
26
- config: signal(config.config),
27
- initialAnswers: signal(config.initialAnswers || {}),
38
+ structure: config.structure,
39
+ prePostConfig: config.prePostConfig ?? null,
40
+ config: config.config,
41
+ initialAnswers: config.initialAnswers || {},
42
+ submitHandler,
28
43
  },
29
44
  });
30
45
  return result.data || null;
@@ -40,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
40
55
  }] });
41
56
 
42
57
  export { AXMQuestionnaireViewerService as A };
43
- //# sourceMappingURL=acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map
58
+ //# sourceMappingURL=acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map