@mj-biz-apps/forms-ng 0.0.0 → 0.2.0

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 (446) hide show
  1. package/dist/lib/builder/builder-models.d.ts +27 -0
  2. package/dist/lib/builder/builder-models.d.ts.map +1 -0
  3. package/dist/lib/builder/builder-models.js +15 -0
  4. package/dist/lib/builder/builder-models.js.map +1 -0
  5. package/dist/lib/builder/builder-state.service.d.ts +48 -0
  6. package/dist/lib/builder/builder-state.service.d.ts.map +1 -0
  7. package/dist/lib/builder/builder-state.service.js +231 -0
  8. package/dist/lib/builder/builder-state.service.js.map +1 -0
  9. package/dist/lib/builder/builder-styles.d.ts +12 -0
  10. package/dist/lib/builder/builder-styles.d.ts.map +1 -0
  11. package/dist/lib/builder/builder-styles.js +74 -0
  12. package/dist/lib/builder/builder-styles.js.map +1 -0
  13. package/dist/lib/builder/conditional-rule-editor.component.d.ts +53 -0
  14. package/dist/lib/builder/conditional-rule-editor.component.d.ts.map +1 -0
  15. package/dist/lib/builder/conditional-rule-editor.component.js +282 -0
  16. package/dist/lib/builder/conditional-rule-editor.component.js.map +1 -0
  17. package/dist/lib/builder/design-panel.component.d.ts +71 -0
  18. package/dist/lib/builder/design-panel.component.d.ts.map +1 -0
  19. package/dist/lib/builder/design-panel.component.js +530 -0
  20. package/dist/lib/builder/design-panel.component.js.map +1 -0
  21. package/dist/lib/builder/design-panel.styles.d.ts +10 -0
  22. package/dist/lib/builder/design-panel.styles.d.ts.map +1 -0
  23. package/dist/lib/builder/design-panel.styles.js +78 -0
  24. package/dist/lib/builder/design-panel.styles.js.map +1 -0
  25. package/dist/lib/builder/design-state.service.d.ts +51 -0
  26. package/dist/lib/builder/design-state.service.d.ts.map +1 -0
  27. package/dist/lib/builder/design-state.service.js +108 -0
  28. package/dist/lib/builder/design-state.service.js.map +1 -0
  29. package/dist/lib/builder/distribution-links.d.ts +29 -0
  30. package/dist/lib/builder/distribution-links.d.ts.map +1 -0
  31. package/dist/lib/builder/distribution-links.js +53 -0
  32. package/dist/lib/builder/distribution-links.js.map +1 -0
  33. package/dist/lib/builder/distribution-manager.component.d.ts +53 -0
  34. package/dist/lib/builder/distribution-manager.component.d.ts.map +1 -0
  35. package/dist/lib/builder/distribution-manager.component.js +330 -0
  36. package/dist/lib/builder/distribution-manager.component.js.map +1 -0
  37. package/dist/lib/builder/distribution.service.d.ts +62 -0
  38. package/dist/lib/builder/distribution.service.d.ts.map +1 -0
  39. package/dist/lib/builder/distribution.service.js +140 -0
  40. package/dist/lib/builder/distribution.service.js.map +1 -0
  41. package/dist/lib/builder/entity-names.d.ts +20 -0
  42. package/dist/lib/builder/entity-names.d.ts.map +1 -0
  43. package/dist/lib/builder/entity-names.js +20 -0
  44. package/dist/lib/builder/entity-names.js.map +1 -0
  45. package/dist/lib/builder/form-builder.component.d.ts +92 -0
  46. package/dist/lib/builder/form-builder.component.d.ts.map +1 -0
  47. package/dist/lib/builder/form-builder.component.js +627 -0
  48. package/dist/lib/builder/form-builder.component.js.map +1 -0
  49. package/dist/lib/builder/form-builder.styles.d.ts +3 -0
  50. package/dist/lib/builder/form-builder.styles.d.ts.map +1 -0
  51. package/dist/lib/builder/form-builder.styles.js +94 -0
  52. package/dist/lib/builder/form-builder.styles.js.map +1 -0
  53. package/dist/lib/builder/form-preview-modal.component.d.ts +25 -0
  54. package/dist/lib/builder/form-preview-modal.component.d.ts.map +1 -0
  55. package/dist/lib/builder/form-preview-modal.component.js +90 -0
  56. package/dist/lib/builder/form-preview-modal.component.js.map +1 -0
  57. package/dist/lib/builder/index.d.ts +31 -0
  58. package/dist/lib/builder/index.d.ts.map +1 -0
  59. package/dist/lib/builder/index.js +32 -0
  60. package/dist/lib/builder/index.js.map +1 -0
  61. package/dist/lib/builder/json-fields.d.ts +14 -0
  62. package/dist/lib/builder/json-fields.d.ts.map +1 -0
  63. package/dist/lib/builder/json-fields.js +100 -0
  64. package/dist/lib/builder/json-fields.js.map +1 -0
  65. package/dist/lib/builder/publish.service.d.ts +34 -0
  66. package/dist/lib/builder/publish.service.d.ts.map +1 -0
  67. package/dist/lib/builder/publish.service.js +110 -0
  68. package/dist/lib/builder/publish.service.js.map +1 -0
  69. package/dist/lib/builder/qr-code.d.ts +26 -0
  70. package/dist/lib/builder/qr-code.d.ts.map +1 -0
  71. package/dist/lib/builder/qr-code.js +361 -0
  72. package/dist/lib/builder/qr-code.js.map +1 -0
  73. package/dist/lib/builder/question-editor.component.d.ts +41 -0
  74. package/dist/lib/builder/question-editor.component.d.ts.map +1 -0
  75. package/dist/lib/builder/question-editor.component.js +228 -0
  76. package/dist/lib/builder/question-editor.component.js.map +1 -0
  77. package/dist/lib/builder/question-type-catalog.d.ts +29 -0
  78. package/dist/lib/builder/question-type-catalog.d.ts.map +1 -0
  79. package/dist/lib/builder/question-type-catalog.js +43 -0
  80. package/dist/lib/builder/question-type-catalog.js.map +1 -0
  81. package/dist/lib/builder/reorder.d.ts +10 -0
  82. package/dist/lib/builder/reorder.d.ts.map +1 -0
  83. package/dist/lib/builder/reorder.js +18 -0
  84. package/dist/lib/builder/reorder.js.map +1 -0
  85. package/dist/lib/builder/snapshot-builder.d.ts +16 -0
  86. package/dist/lib/builder/snapshot-builder.d.ts.map +1 -0
  87. package/dist/lib/builder/snapshot-builder.js +93 -0
  88. package/dist/lib/builder/snapshot-builder.js.map +1 -0
  89. package/dist/lib/builder/style-tokens.d.ts +54 -0
  90. package/dist/lib/builder/style-tokens.d.ts.map +1 -0
  91. package/dist/lib/builder/style-tokens.js +71 -0
  92. package/dist/lib/builder/style-tokens.js.map +1 -0
  93. package/dist/lib/builder/validation-rule-editor.component.d.ts +27 -0
  94. package/dist/lib/builder/validation-rule-editor.component.d.ts.map +1 -0
  95. package/dist/lib/builder/validation-rule-editor.component.js +179 -0
  96. package/dist/lib/builder/validation-rule-editor.component.js.map +1 -0
  97. package/dist/lib/dashboard/components/distribution-chart.component.d.ts +14 -0
  98. package/dist/lib/dashboard/components/distribution-chart.component.d.ts.map +1 -0
  99. package/dist/lib/dashboard/components/distribution-chart.component.js +85 -0
  100. package/dist/lib/dashboard/components/distribution-chart.component.js.map +1 -0
  101. package/dist/lib/dashboard/components/funnel-chart.component.d.ts +14 -0
  102. package/dist/lib/dashboard/components/funnel-chart.component.d.ts.map +1 -0
  103. package/dist/lib/dashboard/components/funnel-chart.component.js +101 -0
  104. package/dist/lib/dashboard/components/funnel-chart.component.js.map +1 -0
  105. package/dist/lib/dashboard/components/question-breakdown.component.d.ts +16 -0
  106. package/dist/lib/dashboard/components/question-breakdown.component.d.ts.map +1 -0
  107. package/dist/lib/dashboard/components/question-breakdown.component.js +213 -0
  108. package/dist/lib/dashboard/components/question-breakdown.component.js.map +1 -0
  109. package/dist/lib/dashboard/components/response-detail.component.d.ts +11 -0
  110. package/dist/lib/dashboard/components/response-detail.component.d.ts.map +1 -0
  111. package/dist/lib/dashboard/components/response-detail.component.js +113 -0
  112. package/dist/lib/dashboard/components/response-detail.component.js.map +1 -0
  113. package/dist/lib/dashboard/components/response-list.component.d.ts +27 -0
  114. package/dist/lib/dashboard/components/response-list.component.d.ts.map +1 -0
  115. package/dist/lib/dashboard/components/response-list.component.js +196 -0
  116. package/dist/lib/dashboard/components/response-list.component.js.map +1 -0
  117. package/dist/lib/dashboard/components/summary-stats.component.d.ts +12 -0
  118. package/dist/lib/dashboard/components/summary-stats.component.d.ts.map +1 -0
  119. package/dist/lib/dashboard/components/summary-stats.component.js +112 -0
  120. package/dist/lib/dashboard/components/summary-stats.component.js.map +1 -0
  121. package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts +64 -0
  122. package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts.map +1 -0
  123. package/dist/lib/dashboard/forms-reporting-dashboard.component.js +397 -0
  124. package/dist/lib/dashboard/forms-reporting-dashboard.component.js.map +1 -0
  125. package/dist/lib/dashboard/index.d.ts +19 -0
  126. package/dist/lib/dashboard/index.d.ts.map +1 -0
  127. package/dist/lib/dashboard/index.js +19 -0
  128. package/dist/lib/dashboard/index.js.map +1 -0
  129. package/dist/lib/dashboard/models/reporting.model.d.ts +125 -0
  130. package/dist/lib/dashboard/models/reporting.model.d.ts.map +1 -0
  131. package/dist/lib/dashboard/models/reporting.model.js +2 -0
  132. package/dist/lib/dashboard/models/reporting.model.js.map +1 -0
  133. package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts +21 -0
  134. package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts.map +1 -0
  135. package/dist/lib/dashboard/services/forms-reporting-export.service.js +83 -0
  136. package/dist/lib/dashboard/services/forms-reporting-export.service.js.map +1 -0
  137. package/dist/lib/dashboard/services/forms-reporting-mock.d.ts +18 -0
  138. package/dist/lib/dashboard/services/forms-reporting-mock.d.ts.map +1 -0
  139. package/dist/lib/dashboard/services/forms-reporting-mock.js +147 -0
  140. package/dist/lib/dashboard/services/forms-reporting-mock.js.map +1 -0
  141. package/dist/lib/dashboard/services/forms-reporting.service.d.ts +45 -0
  142. package/dist/lib/dashboard/services/forms-reporting.service.d.ts.map +1 -0
  143. package/dist/lib/dashboard/services/forms-reporting.service.js +230 -0
  144. package/dist/lib/dashboard/services/forms-reporting.service.js.map +1 -0
  145. package/dist/lib/dashboard/services/reporting-aggregations.d.ts +40 -0
  146. package/dist/lib/dashboard/services/reporting-aggregations.d.ts.map +1 -0
  147. package/dist/lib/dashboard/services/reporting-aggregations.js +379 -0
  148. package/dist/lib/dashboard/services/reporting-aggregations.js.map +1 -0
  149. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts +10 -0
  150. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -0
  151. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +104 -0
  152. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -0
  153. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts +10 -0
  154. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts.map +1 -0
  155. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js +83 -0
  156. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js.map +1 -0
  157. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts +10 -0
  158. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts.map +1 -0
  159. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +96 -0
  160. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -0
  161. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts +10 -0
  162. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -0
  163. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +83 -0
  164. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -0
  165. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts +10 -0
  166. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts.map +1 -0
  167. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +96 -0
  168. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -0
  169. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts +10 -0
  170. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -0
  171. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +172 -0
  172. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -0
  173. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts +10 -0
  174. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts.map +1 -0
  175. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +90 -0
  176. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -0
  177. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts +10 -0
  178. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -0
  179. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +274 -0
  180. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -0
  181. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts +10 -0
  182. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -0
  183. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +91 -0
  184. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -0
  185. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts +10 -0
  186. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts.map +1 -0
  187. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +100 -0
  188. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -0
  189. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts +10 -0
  190. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts.map +1 -0
  191. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js +174 -0
  192. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js.map +1 -0
  193. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts +10 -0
  194. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts.map +1 -0
  195. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js +118 -0
  196. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js.map +1 -0
  197. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts +10 -0
  198. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts.map +1 -0
  199. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js +93 -0
  200. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js.map +1 -0
  201. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts +10 -0
  202. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts.map +1 -0
  203. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js +96 -0
  204. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js.map +1 -0
  205. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts +10 -0
  206. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts.map +1 -0
  207. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js +132 -0
  208. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js.map +1 -0
  209. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts +10 -0
  210. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts.map +1 -0
  211. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js +77 -0
  212. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js.map +1 -0
  213. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts +10 -0
  214. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts.map +1 -0
  215. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js +108 -0
  216. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js.map +1 -0
  217. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts +10 -0
  218. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts.map +1 -0
  219. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js +99 -0
  220. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js.map +1 -0
  221. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts +10 -0
  222. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts.map +1 -0
  223. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js +100 -0
  224. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js.map +1 -0
  225. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts +10 -0
  226. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts.map +1 -0
  227. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js +96 -0
  228. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js.map +1 -0
  229. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts +10 -0
  230. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts.map +1 -0
  231. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js +274 -0
  232. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js.map +1 -0
  233. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts +10 -0
  234. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts.map +1 -0
  235. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js +67 -0
  236. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js.map +1 -0
  237. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts +10 -0
  238. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts.map +1 -0
  239. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js +90 -0
  240. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js.map +1 -0
  241. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts +10 -0
  242. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts.map +1 -0
  243. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js +124 -0
  244. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js.map +1 -0
  245. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts +10 -0
  246. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts.map +1 -0
  247. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js +86 -0
  248. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js.map +1 -0
  249. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts +10 -0
  250. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts.map +1 -0
  251. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js +67 -0
  252. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js.map +1 -0
  253. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts +10 -0
  254. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts.map +1 -0
  255. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js +86 -0
  256. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js.map +1 -0
  257. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts +10 -0
  258. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts.map +1 -0
  259. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js +61 -0
  260. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js.map +1 -0
  261. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts +10 -0
  262. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts.map +1 -0
  263. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js +63 -0
  264. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js.map +1 -0
  265. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts +10 -0
  266. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts.map +1 -0
  267. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js +69 -0
  268. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js.map +1 -0
  269. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts +10 -0
  270. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts.map +1 -0
  271. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js +63 -0
  272. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js.map +1 -0
  273. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts +10 -0
  274. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts.map +1 -0
  275. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js +98 -0
  276. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js.map +1 -0
  277. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts +10 -0
  278. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts.map +1 -0
  279. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js +80 -0
  280. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js.map +1 -0
  281. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts +10 -0
  282. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts.map +1 -0
  283. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js +59 -0
  284. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js.map +1 -0
  285. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts +10 -0
  286. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts.map +1 -0
  287. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js +84 -0
  288. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js.map +1 -0
  289. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts +10 -0
  290. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts.map +1 -0
  291. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js +146 -0
  292. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js.map +1 -0
  293. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts +10 -0
  294. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts.map +1 -0
  295. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js +61 -0
  296. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js.map +1 -0
  297. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts +10 -0
  298. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts.map +1 -0
  299. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js +59 -0
  300. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js.map +1 -0
  301. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts +10 -0
  302. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts.map +1 -0
  303. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js +132 -0
  304. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js.map +1 -0
  305. package/dist/lib/generated/class-registrations-manifest.d.ts +6 -0
  306. package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
  307. package/dist/lib/generated/class-registrations-manifest.js +6 -0
  308. package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
  309. package/dist/lib/generated/generated-forms.module.d.ts +61 -0
  310. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
  311. package/dist/lib/generated/generated-forms.module.js +207 -0
  312. package/dist/lib/generated/generated-forms.module.js.map +1 -0
  313. package/dist/lib/home/forms-home-dashboard.component.d.ts +61 -0
  314. package/dist/lib/home/forms-home-dashboard.component.d.ts.map +1 -0
  315. package/dist/lib/home/forms-home-dashboard.component.js +379 -0
  316. package/dist/lib/home/forms-home-dashboard.component.js.map +1 -0
  317. package/dist/lib/home/forms-home.service.d.ts +24 -0
  318. package/dist/lib/home/forms-home.service.d.ts.map +1 -0
  319. package/dist/lib/home/forms-home.service.js +92 -0
  320. package/dist/lib/home/forms-home.service.js.map +1 -0
  321. package/dist/lib/home/home-aggregations.d.ts +23 -0
  322. package/dist/lib/home/home-aggregations.d.ts.map +1 -0
  323. package/dist/lib/home/home-aggregations.js +64 -0
  324. package/dist/lib/home/home-aggregations.js.map +1 -0
  325. package/dist/lib/home/home-models.d.ts +60 -0
  326. package/dist/lib/home/home-models.d.ts.map +1 -0
  327. package/dist/lib/home/home-models.js +34 -0
  328. package/dist/lib/home/home-models.js.map +1 -0
  329. package/dist/lib/home/index.d.ts +13 -0
  330. package/dist/lib/home/index.d.ts.map +1 -0
  331. package/dist/lib/home/index.js +13 -0
  332. package/dist/lib/home/index.js.map +1 -0
  333. package/dist/lib/widget/api/form-upload.service.d.ts +41 -0
  334. package/dist/lib/widget/api/form-upload.service.d.ts.map +1 -0
  335. package/dist/lib/widget/api/form-upload.service.js +124 -0
  336. package/dist/lib/widget/api/form-upload.service.js.map +1 -0
  337. package/dist/lib/widget/api/forms-api.config.d.ts +55 -0
  338. package/dist/lib/widget/api/forms-api.config.d.ts.map +1 -0
  339. package/dist/lib/widget/api/forms-api.config.js +40 -0
  340. package/dist/lib/widget/api/forms-api.config.js.map +1 -0
  341. package/dist/lib/widget/api/forms-api.graphql.service.d.ts +20 -0
  342. package/dist/lib/widget/api/forms-api.graphql.service.d.ts.map +1 -0
  343. package/dist/lib/widget/api/forms-api.graphql.service.js +96 -0
  344. package/dist/lib/widget/api/forms-api.graphql.service.js.map +1 -0
  345. package/dist/lib/widget/api/forms-api.interface.d.ts +45 -0
  346. package/dist/lib/widget/api/forms-api.interface.d.ts.map +1 -0
  347. package/dist/lib/widget/api/forms-api.interface.js +8 -0
  348. package/dist/lib/widget/api/forms-api.interface.js.map +1 -0
  349. package/dist/lib/widget/api/forms-api.mock.service.d.ts +12 -0
  350. package/dist/lib/widget/api/forms-api.mock.service.d.ts.map +1 -0
  351. package/dist/lib/widget/api/forms-api.mock.service.js +41 -0
  352. package/dist/lib/widget/api/forms-api.mock.service.js.map +1 -0
  353. package/dist/lib/widget/api/mock-form.data.d.ts +8 -0
  354. package/dist/lib/widget/api/mock-form.data.d.ts.map +1 -0
  355. package/dist/lib/widget/api/mock-form.data.js +192 -0
  356. package/dist/lib/widget/api/mock-form.data.js.map +1 -0
  357. package/dist/lib/widget/api/submission-mapping.d.ts +60 -0
  358. package/dist/lib/widget/api/submission-mapping.d.ts.map +1 -0
  359. package/dist/lib/widget/api/submission-mapping.js +47 -0
  360. package/dist/lib/widget/api/submission-mapping.js.map +1 -0
  361. package/dist/lib/widget/components/form-one-question.component.d.ts +43 -0
  362. package/dist/lib/widget/components/form-one-question.component.d.ts.map +1 -0
  363. package/dist/lib/widget/components/form-one-question.component.js +194 -0
  364. package/dist/lib/widget/components/form-one-question.component.js.map +1 -0
  365. package/dist/lib/widget/components/form-progress.component.d.ts +9 -0
  366. package/dist/lib/widget/components/form-progress.component.d.ts.map +1 -0
  367. package/dist/lib/widget/components/form-progress.component.js +47 -0
  368. package/dist/lib/widget/components/form-progress.component.js.map +1 -0
  369. package/dist/lib/widget/components/form-scroll.component.d.ts +23 -0
  370. package/dist/lib/widget/components/form-scroll.component.d.ts.map +1 -0
  371. package/dist/lib/widget/components/form-scroll.component.js +132 -0
  372. package/dist/lib/widget/components/form-scroll.component.js.map +1 -0
  373. package/dist/lib/widget/components/questions/form-question.component.d.ts +68 -0
  374. package/dist/lib/widget/components/questions/form-question.component.d.ts.map +1 -0
  375. package/dist/lib/widget/components/questions/form-question.component.js +541 -0
  376. package/dist/lib/widget/components/questions/form-question.component.js.map +1 -0
  377. package/dist/lib/widget/components/questions/input-mode.d.ts +13 -0
  378. package/dist/lib/widget/components/questions/input-mode.d.ts.map +1 -0
  379. package/dist/lib/widget/components/questions/input-mode.js +42 -0
  380. package/dist/lib/widget/components/questions/input-mode.js.map +1 -0
  381. package/dist/lib/widget/components/turnstile-challenge.component.d.ts +52 -0
  382. package/dist/lib/widget/components/turnstile-challenge.component.d.ts.map +1 -0
  383. package/dist/lib/widget/components/turnstile-challenge.component.js +123 -0
  384. package/dist/lib/widget/components/turnstile-challenge.component.js.map +1 -0
  385. package/dist/lib/widget/core/answer-value.d.ts +17 -0
  386. package/dist/lib/widget/core/answer-value.d.ts.map +1 -0
  387. package/dist/lib/widget/core/answer-value.js +41 -0
  388. package/dist/lib/widget/core/answer-value.js.map +1 -0
  389. package/dist/lib/widget/core/autosave-controller.d.ts +65 -0
  390. package/dist/lib/widget/core/autosave-controller.d.ts.map +1 -0
  391. package/dist/lib/widget/core/autosave-controller.js +134 -0
  392. package/dist/lib/widget/core/autosave-controller.js.map +1 -0
  393. package/dist/lib/widget/core/client-id.d.ts +17 -0
  394. package/dist/lib/widget/core/client-id.d.ts.map +1 -0
  395. package/dist/lib/widget/core/client-id.js +52 -0
  396. package/dist/lib/widget/core/client-id.js.map +1 -0
  397. package/dist/lib/widget/core/form-runtime.d.ts +34 -0
  398. package/dist/lib/widget/core/form-runtime.d.ts.map +1 -0
  399. package/dist/lib/widget/core/form-runtime.js +123 -0
  400. package/dist/lib/widget/core/form-runtime.js.map +1 -0
  401. package/dist/lib/widget/core/one-question-stepper.d.ts +20 -0
  402. package/dist/lib/widget/core/one-question-stepper.d.ts.map +1 -0
  403. package/dist/lib/widget/core/one-question-stepper.js +23 -0
  404. package/dist/lib/widget/core/one-question-stepper.js.map +1 -0
  405. package/dist/lib/widget/core/submit-phase.d.ts +31 -0
  406. package/dist/lib/widget/core/submit-phase.d.ts.map +1 -0
  407. package/dist/lib/widget/core/submit-phase.js +21 -0
  408. package/dist/lib/widget/core/submit-phase.js.map +1 -0
  409. package/dist/lib/widget/core/theming.d.ts +17 -0
  410. package/dist/lib/widget/core/theming.d.ts.map +1 -0
  411. package/dist/lib/widget/core/theming.js +36 -0
  412. package/dist/lib/widget/core/theming.js.map +1 -0
  413. package/dist/lib/widget/core/turnstile-gate.d.ts +42 -0
  414. package/dist/lib/widget/core/turnstile-gate.d.ts.map +1 -0
  415. package/dist/lib/widget/core/turnstile-gate.js +61 -0
  416. package/dist/lib/widget/core/turnstile-gate.js.map +1 -0
  417. package/dist/lib/widget/core/turnstile-loader.d.ts +34 -0
  418. package/dist/lib/widget/core/turnstile-loader.d.ts.map +1 -0
  419. package/dist/lib/widget/core/turnstile-loader.js +68 -0
  420. package/dist/lib/widget/core/turnstile-loader.js.map +1 -0
  421. package/dist/lib/widget/core/validation.d.ts +19 -0
  422. package/dist/lib/widget/core/validation.d.ts.map +1 -0
  423. package/dist/lib/widget/core/validation.js +105 -0
  424. package/dist/lib/widget/core/validation.js.map +1 -0
  425. package/dist/lib/widget/index.d.ts +27 -0
  426. package/dist/lib/widget/index.d.ts.map +1 -0
  427. package/dist/lib/widget/index.js +30 -0
  428. package/dist/lib/widget/index.js.map +1 -0
  429. package/dist/lib/widget/mj-form.component.d.ts +114 -0
  430. package/dist/lib/widget/mj-form.component.d.ts.map +1 -0
  431. package/dist/lib/widget/mj-form.component.js +428 -0
  432. package/dist/lib/widget/mj-form.component.js.map +1 -0
  433. package/dist/lib/widget/register-element.d.ts +8 -0
  434. package/dist/lib/widget/register-element.d.ts.map +1 -0
  435. package/dist/lib/widget/register-element.js +98 -0
  436. package/dist/lib/widget/register-element.js.map +1 -0
  437. package/dist/public-api.d.ts +23 -0
  438. package/dist/public-api.d.ts.map +1 -0
  439. package/dist/public-api.js +33 -0
  440. package/dist/public-api.js.map +1 -0
  441. package/dist/widget-entry.d.ts +2 -0
  442. package/dist/widget-entry.d.ts.map +1 -0
  443. package/dist/widget-entry.js +20 -0
  444. package/dist/widget-entry.js.map +1 -0
  445. package/package.json +53 -5
  446. package/README.md +0 -3
@@ -0,0 +1,194 @@
1
+ /**
2
+ * OneQuestion (Typeform-style) render mode: one question at a time with Back/Next
3
+ * stepping, a progress bar, and a final submit. The visible-question list is derived
4
+ * live from the runtime, so conditional show/hide changes the path as the respondent
5
+ * answers. Enter advances; focus moves to each new question for keyboard + SR users.
6
+ */
7
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, ElementRef, } from '@angular/core';
8
+ import { clampCursor } from '../core/one-question-stepper';
9
+ import { FormProgressComponent } from './form-progress.component';
10
+ import { FormQuestionComponent } from './questions/form-question.component';
11
+ import * as i0 from "@angular/core";
12
+ function FormOneQuestionComponent_Conditional_5_Conditional_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "span");
14
+ i0.ɵɵtext(1, "Submitting\u2026");
15
+ i0.ɵɵelementEnd();
16
+ } }
17
+ function FormOneQuestionComponent_Conditional_5_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "span");
19
+ i0.ɵɵtext(1, "Submit");
20
+ i0.ɵɵelementEnd();
21
+ } }
22
+ function FormOneQuestionComponent_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵconditionalCreate(0, FormOneQuestionComponent_Conditional_5_Conditional_6_Conditional_0_Template, 2, 0, "span")(1, FormOneQuestionComponent_Conditional_5_Conditional_6_Conditional_1_Template, 2, 0, "span");
24
+ } if (rf & 2) {
25
+ const ctx_r1 = i0.ɵɵnextContext(2);
26
+ i0.ɵɵconditional(ctx_r1.submitting() ? 0 : 1);
27
+ } }
28
+ function FormOneQuestionComponent_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵelementStart(0, "span");
30
+ i0.ɵɵtext(1, "Next");
31
+ i0.ɵɵelementEnd();
32
+ } }
33
+ function FormOneQuestionComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
34
+ const _r1 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "div", 6);
36
+ i0.ɵɵlistener("keydown", function FormOneQuestionComponent_Conditional_5_Template_div_keydown_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeydown($event)); });
37
+ i0.ɵɵelementStart(1, "mjf-form-question", 7);
38
+ i0.ɵɵlistener("valueChange", function FormOneQuestionComponent_Conditional_5_Template_mjf_form_question_valueChange_1_listener($event) { const q_r3 = i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onValueChange(q_r3, $event)); });
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(2, "div", 8)(3, "button", 9);
41
+ i0.ɵɵlistener("click", function FormOneQuestionComponent_Conditional_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onBack()); });
42
+ i0.ɵɵtext(4, "Back");
43
+ i0.ɵɵelementEnd();
44
+ i0.ɵɵelementStart(5, "button", 10);
45
+ i0.ɵɵlistener("click", function FormOneQuestionComponent_Conditional_5_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onNext()); });
46
+ i0.ɵɵconditionalCreate(6, FormOneQuestionComponent_Conditional_5_Conditional_6_Template, 2, 1)(7, FormOneQuestionComponent_Conditional_5_Conditional_7_Template, 2, 0, "span");
47
+ i0.ɵɵelementEnd()()();
48
+ } if (rf & 2) {
49
+ const q_r3 = ctx;
50
+ const ctx_r1 = i0.ɵɵnextContext();
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵproperty("question", q_r3)("value", ctx_r1.runtime().valueFor(q_r3.id))("errorMessage", ctx_r1.runtime().visibleErrorFor(q_r3))("distributionSlug", ctx_r1.distributionSlug());
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵproperty("disabled", ctx_r1.isFirst() || ctx_r1.submitting());
55
+ i0.ɵɵadvance(2);
56
+ i0.ɵɵproperty("disabled", ctx_r1.primaryDisabled());
57
+ i0.ɵɵadvance();
58
+ i0.ɵɵconditional(ctx_r1.isLast() ? 6 : 7);
59
+ } }
60
+ function FormOneQuestionComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "p", 5);
62
+ i0.ɵɵtext(1, "This form has no questions to display.");
63
+ i0.ɵɵelementEnd();
64
+ } }
65
+ export class FormOneQuestionComponent {
66
+ runtime = input.required(...(ngDevMode ? [{ debugName: "runtime" }] : []));
67
+ submitting = input(false, ...(ngDevMode ? [{ debugName: "submitting" }] : []));
68
+ /** When true, the final-step submit control is disabled (e.g. captcha not yet solved). */
69
+ submitDisabled = input(false, ...(ngDevMode ? [{ debugName: "submitDisabled" }] : []));
70
+ /** Distribution slug, forwarded to FileUpload questions for scoped uploads. */
71
+ distributionSlug = input('', ...(ngDevMode ? [{ debugName: "distributionSlug" }] : []));
72
+ submit = output();
73
+ /** Fires when the respondent advances a step — a natural autosave checkpoint. */
74
+ progressChange = output();
75
+ hostRef = inject(ElementRef);
76
+ /**
77
+ * Raw cursor. Always written through {@link setIndex} so it stays inside the valid
78
+ * range; the re-clamp {@link effect} below also corrects it whenever conditional logic
79
+ * resizes the visible-question path, so the stored value never drifts out of bounds.
80
+ */
81
+ index = signal(0, ...(ngDevMode ? [{ debugName: "index" }] : []));
82
+ /** The ordered, currently-visible answerable questions (recomputed reactively). */
83
+ steps = computed(() => this.runtime().visibleAnswerableQuestions(), ...(ngDevMode ? [{ debugName: "steps" }] : []));
84
+ total = computed(() => this.steps().length, ...(ngDevMode ? [{ debugName: "total" }] : []));
85
+ current = computed(() => this.steps()[this.index()] ?? null, ...(ngDevMode ? [{ debugName: "current" }] : []));
86
+ isFirst = computed(() => this.index() === 0, ...(ngDevMode ? [{ debugName: "isFirst" }] : []));
87
+ isLast = computed(() => this.index() >= this.total() - 1, ...(ngDevMode ? [{ debugName: "isLast" }] : []));
88
+ progress = computed(() => {
89
+ const t = this.total();
90
+ return t === 0 ? 1 : (this.index() + 1) / t;
91
+ }, ...(ngDevMode ? [{ debugName: "progress" }] : []));
92
+ stepLabel = computed(() => `${this.index() + 1} of ${this.total()}`, ...(ngDevMode ? [{ debugName: "stepLabel" }] : []));
93
+ /** Disable the primary control while submitting, or on the final (submit) step when blocked. */
94
+ primaryDisabled = computed(() => this.submitting() || (this.isLast() && this.submitDisabled()), ...(ngDevMode ? [{ debugName: "primaryDisabled" }] : []));
95
+ constructor() {
96
+ // When conditional logic resizes the path, re-clamp the stored cursor so it never
97
+ // drifts above the new last index. Without this, hiding questions below the cursor
98
+ // (then revealing them again) would let the cursor "jump ahead", skipping steps.
99
+ // We track `total()` and read/write the cursor untracked, so the effect re-runs only
100
+ // when the path size changes — never as a self-feeding loop on the cursor write.
101
+ effect(() => {
102
+ const total = this.total();
103
+ untracked(() => {
104
+ const clamped = clampCursor(this.index(), total);
105
+ if (clamped !== this.index()) {
106
+ this.index.set(clamped);
107
+ }
108
+ });
109
+ });
110
+ // Move focus to the current question only when the question itself changes — not on
111
+ // every answer edit — so typing or selecting an answer never yanks focus mid-input.
112
+ let lastFocusedId = null;
113
+ effect(() => {
114
+ const c = this.current();
115
+ if (c && c.id !== lastFocusedId) {
116
+ lastFocusedId = c.id;
117
+ queueMicrotask(() => this.focusCurrent());
118
+ }
119
+ });
120
+ }
121
+ onValueChange(question, value) {
122
+ this.runtime().setValue(question.id, value);
123
+ this.runtime().markTouched(question.id);
124
+ }
125
+ onNext() {
126
+ const q = this.current();
127
+ if (!q) {
128
+ return;
129
+ }
130
+ this.runtime().markTouched(q.id);
131
+ if (this.runtime().errorFor(q)) {
132
+ this.focusCurrent();
133
+ return;
134
+ }
135
+ if (this.isLast()) {
136
+ this.submit.emit();
137
+ }
138
+ else {
139
+ this.setIndex(this.index() + 1);
140
+ // Advancing a step is a natural, non-chatty autosave checkpoint.
141
+ this.progressChange.emit();
142
+ }
143
+ }
144
+ onBack() {
145
+ if (!this.isFirst()) {
146
+ this.setIndex(this.index() - 1);
147
+ }
148
+ }
149
+ /** Move the cursor to `next`, clamped to the currently-valid range. */
150
+ setIndex(next) {
151
+ this.index.set(clampCursor(next, this.total()));
152
+ }
153
+ /** Enter on the question advances (except in a multiline textarea). */
154
+ onKeydown(event) {
155
+ const target = event.target;
156
+ if (event.key === 'Enter' && target?.tagName !== 'TEXTAREA') {
157
+ event.preventDefault();
158
+ this.onNext();
159
+ }
160
+ }
161
+ focusCurrent() {
162
+ const q = this.current();
163
+ if (!q) {
164
+ return;
165
+ }
166
+ const host = this.hostRef.nativeElement;
167
+ const field = host.querySelector(`#mjf-q-${q.id}`);
168
+ (field ?? host.querySelector('.mjf-oneq__card'))?.focus();
169
+ }
170
+ static ɵfac = function FormOneQuestionComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormOneQuestionComponent)(); };
171
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormOneQuestionComponent, selectors: [["mjf-form-one-question"]], inputs: { runtime: [1, "runtime"], submitting: [1, "submitting"], submitDisabled: [1, "submitDisabled"], distributionSlug: [1, "distributionSlug"] }, outputs: { submit: "submit", progressChange: "progressChange" }, decls: 7, vars: 3, consts: [[1, "mjf-oneq"], [1, "mjf-oneq__progress"], [3, "value"], ["aria-live", "polite", 1, "mjf-oneq__step"], ["tabindex", "-1", 1, "mjf-oneq__card"], [1, "mjf-oneq__empty"], ["tabindex", "-1", 1, "mjf-oneq__card", 3, "keydown"], [3, "valueChange", "question", "value", "errorMessage", "distributionSlug"], [1, "mjf-oneq__nav"], ["type", "button", 1, "mjf-oneq__btn", "mjf-oneq__btn--ghost", 3, "click", "disabled"], ["type", "button", 1, "mjf-oneq__btn", "mjf-oneq__btn--primary", 3, "click", "disabled"]], template: function FormOneQuestionComponent_Template(rf, ctx) { if (rf & 1) {
172
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
173
+ i0.ɵɵelement(2, "mjf-form-progress", 2);
174
+ i0.ɵɵelementStart(3, "span", 3);
175
+ i0.ɵɵtext(4);
176
+ i0.ɵɵelementEnd()();
177
+ i0.ɵɵconditionalCreate(5, FormOneQuestionComponent_Conditional_5_Template, 8, 7, "div", 4)(6, FormOneQuestionComponent_Conditional_6_Template, 2, 0, "p", 5);
178
+ i0.ɵɵelementEnd();
179
+ } if (rf & 2) {
180
+ let tmp_2_0;
181
+ i0.ɵɵadvance(2);
182
+ i0.ɵɵproperty("value", ctx.progress());
183
+ i0.ɵɵadvance(2);
184
+ i0.ɵɵtextInterpolate(ctx.stepLabel());
185
+ i0.ɵɵadvance();
186
+ i0.ɵɵconditional((tmp_2_0 = ctx.current()) ? 5 : 6, tmp_2_0);
187
+ } }, dependencies: [FormProgressComponent, FormQuestionComponent], styles: [".mjf-oneq[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n min-height: 60vh;\n}\n\n.mjf-oneq__progress[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n\n.mjf-oneq__progress[_ngcontent-%COMP%] mjf-form-progress[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.mjf-oneq__step[_ngcontent-%COMP%] {\n font-family: var(--mjf-font-body);\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.mjf-oneq__card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 2rem 1.5rem;\n background: var(--mjf-card-bg);\n border: 1px solid var(--mjf-card-border);\n border-radius: var(--mjf-card-radius);\n box-shadow: var(--mjf-card-shadow);\n}\n\n.mjf-oneq__card[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n.mjf-oneq__nav[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 1rem;\n}\n\n.mjf-oneq__btn[_ngcontent-%COMP%] {\n min-height: 3rem;\n padding: 0.75rem 1.75rem;\n font-family: var(--mjf-font-body);\n font-size: 1.0625rem;\n font-weight: 600;\n border-radius: var(--mjf-btn-radius);\n cursor: pointer;\n transition: background 0.15s ease, opacity 0.15s ease;\n}\n\n.mjf-oneq__btn[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n.mjf-oneq__btn--primary[_ngcontent-%COMP%] {\n color: var(--mjf-on-accent);\n background: var(--mjf-accent);\n border: none;\n}\n\n.mjf-oneq__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mjf-accent-strong);\n}\n\n.mjf-oneq__btn--ghost[_ngcontent-%COMP%] {\n color: var(--mjf-page-ink);\n background: transparent;\n border: 1px solid var(--mjf-card-border);\n}\n\n.mjf-oneq__btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjf-oneq__empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n@media (min-width: 640px) {\n .mjf-oneq__card[_ngcontent-%COMP%] {\n padding: 3rem;\n }\n}"], changeDetection: 0 });
188
+ }
189
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormOneQuestionComponent, [{
190
+ type: Component,
191
+ args: [{ selector: 'mjf-form-one-question', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormProgressComponent, FormQuestionComponent], template: "<div class=\"mjf-oneq\">\n <div class=\"mjf-oneq__progress\">\n <mjf-form-progress [value]=\"progress()\" />\n <span class=\"mjf-oneq__step\" aria-live=\"polite\">{{ stepLabel() }}</span>\n </div>\n\n @if (current(); as q) {\n <div class=\"mjf-oneq__card\" tabindex=\"-1\" (keydown)=\"onKeydown($event)\">\n <mjf-form-question\n [question]=\"q\"\n [value]=\"runtime().valueFor(q.id)\"\n [errorMessage]=\"runtime().visibleErrorFor(q)\"\n [distributionSlug]=\"distributionSlug()\"\n (valueChange)=\"onValueChange(q, $event)\"\n />\n\n <div class=\"mjf-oneq__nav\">\n <button\n type=\"button\"\n class=\"mjf-oneq__btn mjf-oneq__btn--ghost\"\n [disabled]=\"isFirst() || submitting()\"\n (click)=\"onBack()\"\n >Back</button>\n\n <button\n type=\"button\"\n class=\"mjf-oneq__btn mjf-oneq__btn--primary\"\n [disabled]=\"primaryDisabled()\"\n (click)=\"onNext()\"\n >\n @if (isLast()) {\n @if (submitting()) { <span>Submitting\u2026</span> } @else { <span>Submit</span> }\n } @else {\n <span>Next</span>\n }\n </button>\n </div>\n </div>\n } @else {\n <p class=\"mjf-oneq__empty\">This form has no questions to display.</p>\n }\n</div>\n", styles: [".mjf-oneq {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n min-height: 60vh;\n}\n\n.mjf-oneq__progress {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n\n.mjf-oneq__progress mjf-form-progress {\n flex: 1;\n}\n\n.mjf-oneq__step {\n font-family: var(--mjf-font-body);\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.mjf-oneq__card {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 2rem 1.5rem;\n background: var(--mjf-card-bg);\n border: 1px solid var(--mjf-card-border);\n border-radius: var(--mjf-card-radius);\n box-shadow: var(--mjf-card-shadow);\n}\n\n.mjf-oneq__card:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n.mjf-oneq__nav {\n display: flex;\n justify-content: space-between;\n gap: 1rem;\n}\n\n.mjf-oneq__btn {\n min-height: 3rem;\n padding: 0.75rem 1.75rem;\n font-family: var(--mjf-font-body);\n font-size: 1.0625rem;\n font-weight: 600;\n border-radius: var(--mjf-btn-radius);\n cursor: pointer;\n transition: background 0.15s ease, opacity 0.15s ease;\n}\n\n.mjf-oneq__btn:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n.mjf-oneq__btn--primary {\n color: var(--mjf-on-accent);\n background: var(--mjf-accent);\n border: none;\n}\n\n.mjf-oneq__btn--primary:hover:not(:disabled) {\n background: var(--mjf-accent-strong);\n}\n\n.mjf-oneq__btn--ghost {\n color: var(--mjf-page-ink);\n background: transparent;\n border: 1px solid var(--mjf-card-border);\n}\n\n.mjf-oneq__btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjf-oneq__empty {\n color: var(--mj-text-muted);\n}\n\n@media (min-width: 640px) {\n .mjf-oneq__card {\n padding: 3rem;\n }\n}\n"] }]
192
+ }], () => [], { runtime: [{ type: i0.Input, args: [{ isSignal: true, alias: "runtime", required: true }] }], submitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitting", required: false }] }], submitDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitDisabled", required: false }] }], distributionSlug: [{ type: i0.Input, args: [{ isSignal: true, alias: "distributionSlug", required: false }] }], submit: [{ type: i0.Output, args: ["submit"] }], progressChange: [{ type: i0.Output, args: ["progressChange"] }] }); })();
193
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormOneQuestionComponent, { className: "FormOneQuestionComponent", filePath: "lib/widget/components/form-one-question.component.ts", lineNumber: 34 }); })();
194
+ //# sourceMappingURL=form-one-question.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-one-question.component.js","sourceRoot":"","sources":["../../../../src/lib/widget/components/form-one-question.component.ts","../../../../src/lib/widget/components/form-one-question.component.html"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;;;ICQ3C,4BAAM;IAAA,gCAAW;IAAA,iBAAO;;;IAAW,4BAAM;IAAA,sBAAM;IAAA,iBAAO;;;IAA3B,AAAhD,oHAAoB,8FAAmC;;;IAAvD,6CAA6E;;;IAE7E,4BAAM;IAAA,oBAAI;IAAA,iBAAO;;;;IA1BzB,8BAAwE;IAA9B,mMAAW,wBAAiB,KAAC;IACrE,4CAME;IADA,sOAAe,kCAAwB,KAAC;IAL1C,iBAME;IAGA,AADF,8BAA2B,gBAMxB;IADC,4LAAS,eAAQ,KAAC;IACnB,oBAAI;IAAA,iBAAS;IAEd,kCAKC;IADC,4LAAS,eAAQ,KAAC;IAIhB,AAFF,8FAAgB,gFAEP;IAKf,AADE,AADE,iBAAS,EACL,EACF;;;;IA5BF,cAAc;IAGd,AADA,AADA,AADA,+BAAc,6CACoB,wDACW,+CACN;IAQrC,eAAsC;IAAtC,kEAAsC;IAOtC,eAA8B;IAA9B,mDAA8B;IAG9B,cAIC;IAJD,yCAIC;;;IAKP,4BAA2B;IAAA,sDAAsC;IAAA,iBAAI;;ADNzE,MAAM,OAAO,wBAAwB;IACnB,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAe,CAAC;IACxC,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC,CAAC;IACnD,0FAA0F;IAC1E,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC,CAAC;IACvD,+EAA+E;IAC/D,gBAAgB,GAAG,KAAK,CAAS,EAAE,4DAAC,CAAC;IACrC,MAAM,GAAG,MAAM,EAAQ,CAAC;IACxC,iFAAiF;IACjE,cAAc,GAAG,MAAM,EAAQ,CAAC;IAE/B,OAAO,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;IAEvE;;;;OAIG;IACgB,KAAK,GAAG,MAAM,CAAC,CAAC,iDAAC,CAAC;IAErC,mFAAmF;IAChE,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,0BAA0B,EAAE,iDAAC,CAAC;IACpE,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,iDAAC,CAAC;IAC5C,OAAO,GAAG,QAAQ,CACnC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,mDACzC,CAAC;IACiB,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,mDAAC,CAAC;IAC7C,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,kDAAC,CAAC;IAC1D,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,oDAAC,CAAC;IACgB,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,qDAAC,CAAC;IAExF,gGAAgG;IAC7E,eAAe,GAAG,QAAQ,CAC3C,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,2DACpE,CAAC;IAEF;QACE,kFAAkF;QAClF,mFAAmF;QACnF,iFAAiF;QACjF,qFAAqF;QACrF,iFAAiF;QACjF,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,SAAS,CAAC,GAAG,EAAE;gBACb,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,oFAAoF;QACpF,oFAAoF;QACpF,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;gBAChC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,aAAa,CAAC,QAA+B,EAAE,KAAkB;QACzE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAES,MAAM;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,iEAAiE;YACjE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAES,MAAM;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,uEAAuE;IAC/D,QAAQ,CAAC,IAAY;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,uEAAuE;IAC7D,SAAS,CAAC,KAAoB;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B,CAAC;QAClD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;YAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAc,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAc,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;kHAvHU,wBAAwB;6DAAxB,wBAAwB;YChCnC,AADF,8BAAsB,aACY;YAC9B,uCAA0C;YAC1C,+BAAgD;YAAA,YAAiB;YACnE,AADmE,iBAAO,EACpE;YAkCJ,AAhCF,0FAAuB,kEAgCd;YAGX,iBAAM;;;YAvCiB,eAAoB;YAApB,sCAAoB;YACS,eAAiB;YAAjB,qCAAiB;YAGnE,cAkCC;YAlCD,4DAkCC;4BDXS,qBAAqB,EAAE,qBAAqB;;iFAI3C,wBAAwB;cARpC,SAAS;2BACE,uBAAuB,cACrB,IAAI,mBACC,uBAAuB,CAAC,MAAM,WACtC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;;kFAI5C,wBAAwB"}
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class FormProgressComponent {
3
+ /** Completion fraction 0–1. */
4
+ readonly value: import("@angular/core").InputSignal<number>;
5
+ protected readonly percent: import("@angular/core").Signal<number>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormProgressComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormProgressComponent, "mjf-form-progress", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
9
+ //# sourceMappingURL=form-progress.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-progress.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/widget/components/form-progress.component.ts"],"names":[],"mappings":";AAOA,qBA6Ca,qBAAqB;IAChC,+BAA+B;IAC/B,SAAgB,KAAK,8CAA4B;IACjD,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAA4E;yCAH3F,qBAAqB;2CAArB,qBAAqB;CAIjC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Thin, token-themed progress bar. Reports completion as both a visual fill and an
3
+ * accessible `progressbar` with `aria-valuenow`, satisfying the §2 "clear progress
4
+ * signal" + WCAG requirements.
5
+ */
6
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
7
+ import * as i0 from "@angular/core";
8
+ export class FormProgressComponent {
9
+ /** Completion fraction 0–1. */
10
+ value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
11
+ percent = computed(() => Math.round(Math.min(1, Math.max(0, this.value())) * 100), ...(ngDevMode ? [{ debugName: "percent" }] : []));
12
+ static ɵfac = function FormProgressComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormProgressComponent)(); };
13
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormProgressComponent, selectors: [["mjf-form-progress"]], inputs: { value: [1, "value"] }, decls: 5, vars: 6, consts: [["role", "progressbar", "aria-label", "Form completion", 1, "mjf-progress"], [1, "mjf-progress__track"], [1, "mjf-progress__fill"], [1, "mjf-visually-hidden"]], template: function FormProgressComponent_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵdomElementStart(0, "div", 0)(1, "div", 1);
15
+ i0.ɵɵdomElement(2, "div", 2);
16
+ i0.ɵɵdomElementEnd();
17
+ i0.ɵɵdomElementStart(3, "span", 3);
18
+ i0.ɵɵtext(4);
19
+ i0.ɵɵdomElementEnd()();
20
+ } if (rf & 2) {
21
+ i0.ɵɵattribute("aria-valuemin", 0)("aria-valuemax", 100)("aria-valuenow", ctx.percent());
22
+ i0.ɵɵadvance(2);
23
+ i0.ɵɵstyleProp("width", ctx.percent(), "%");
24
+ i0.ɵɵadvance(2);
25
+ i0.ɵɵtextInterpolate1("", ctx.percent(), "% complete");
26
+ } }, styles: [".mjf-progress__track[_ngcontent-%COMP%] {\n height: 0.5rem;\n width: 100%;\n background: var(--mjf-progress-track);\n border-radius: var(--mjf-pill-radius);\n overflow: hidden;\n }\n .mjf-progress__fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mjf-progress-fill);\n border-radius: var(--mjf-pill-radius);\n transition: width 0.25s ease;\n }\n .mjf-visually-hidden[_ngcontent-%COMP%] {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n }"], changeDetection: 0 });
27
+ }
28
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormProgressComponent, [{
29
+ type: Component,
30
+ args: [{ selector: 'mjf-form-progress', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
31
+ <div
32
+ class="mjf-progress"
33
+ role="progressbar"
34
+ aria-label="Form completion"
35
+ [attr.aria-valuemin]="0"
36
+ [attr.aria-valuemax]="100"
37
+ [attr.aria-valuenow]="percent()"
38
+ >
39
+ <div class="mjf-progress__track">
40
+ <div class="mjf-progress__fill" [style.width.%]="percent()"></div>
41
+ </div>
42
+ <span class="mjf-visually-hidden">{{ percent() }}% complete</span>
43
+ </div>
44
+ `, styles: ["\n .mjf-progress__track {\n height: 0.5rem;\n width: 100%;\n background: var(--mjf-progress-track);\n border-radius: var(--mjf-pill-radius);\n overflow: hidden;\n }\n .mjf-progress__fill {\n height: 100%;\n background: var(--mjf-progress-fill);\n border-radius: var(--mjf-pill-radius);\n transition: width 0.25s ease;\n }\n .mjf-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n }\n "] }]
45
+ }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] }); })();
46
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormProgressComponent, { className: "FormProgressComponent", filePath: "lib/widget/components/form-progress.component.ts", lineNumber: 53 }); })();
47
+ //# sourceMappingURL=form-progress.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-progress.component.js","sourceRoot":"","sources":["../../../../src/lib/widget/components/form-progress.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AA+CpF,MAAM,OAAO,qBAAqB;IAChC,+BAA+B;IACf,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU,CAAC;IAC9B,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,mDAAC,CAAC;+GAH3F,qBAAqB;6DAArB,qBAAqB;YAhC5B,AARF,iCAOC,aACkC;YAC/B,4BAAkE;YACpE,oBAAM;YACN,kCAAkC;YAAA,YAAyB;YAC7D,AAD6D,oBAAO,EAC9D;;;YAH8B,eAA2B;YAA3B,2CAA2B;YAE3B,eAAyB;YAAzB,sDAAyB;;;iFA6BpD,qBAAqB;cA7CjC,SAAS;2BACE,mBAAmB,cACjB,IAAI,mBACC,uBAAuB,CAAC,MAAM,YACrC;;;;;;;;;;;;;;GAcT;;kFA2BU,qBAAqB"}
@@ -0,0 +1,23 @@
1
+ import type { AnswerValue, PublishedFormPage, PublishedFormQuestion } from '@mj-biz-apps/forms-entities';
2
+ import { FormRuntime } from '../core/form-runtime';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FormScrollComponent {
5
+ readonly runtime: import("@angular/core").InputSignal<FormRuntime>;
6
+ readonly submitting: import("@angular/core").InputSignal<boolean>;
7
+ /** When true, the submit control is disabled (e.g. captcha not yet solved). */
8
+ readonly submitDisabled: import("@angular/core").InputSignal<boolean>;
9
+ /** Distribution slug, forwarded to FileUpload questions for scoped uploads. */
10
+ readonly distributionSlug: import("@angular/core").InputSignal<string>;
11
+ readonly submit: import("@angular/core").OutputEmitterRef<void>;
12
+ /** Fires when the respondent has made progress worth autosaving (debounced upstream). */
13
+ readonly progressChange: import("@angular/core").OutputEmitterRef<void>;
14
+ protected readonly pages: import("@angular/core").Signal<PublishedFormPage[]>;
15
+ protected readonly progress: import("@angular/core").Signal<number>;
16
+ protected questionsFor(page: PublishedFormPage): PublishedFormQuestion[];
17
+ protected onValueChange(question: PublishedFormQuestion, value: AnswerValue): void;
18
+ protected onSubmit(): void;
19
+ private focusFirstInvalid;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormScrollComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormScrollComponent, "mjf-form-scroll", never, { "runtime": { "alias": "runtime"; "required": true; "isSignal": true; }; "submitting": { "alias": "submitting"; "required": false; "isSignal": true; }; "submitDisabled": { "alias": "submitDisabled"; "required": false; "isSignal": true; }; "distributionSlug": { "alias": "distributionSlug"; "required": false; "isSignal": true; }; }, { "submit": "submit"; "progressChange": "progressChange"; }, never, never, true, never>;
22
+ }
23
+ //# sourceMappingURL=form-scroll.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-scroll.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/widget/components/form-scroll.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;;AAInD,qBAQa,mBAAmB;IAC9B,SAAgB,OAAO,mDAAiC;IACxD,SAAgB,UAAU,+CAAyB;IACnD,+EAA+E;IAC/E,SAAgB,cAAc,+CAAyB;IACvD,+EAA+E;IAC/E,SAAgB,gBAAgB,8CAAqB;IACrD,SAAgB,MAAM,iDAAkB;IACxC,yFAAyF;IACzF,SAAgB,cAAc,iDAAkB;IAEhD,SAAS,CAAC,QAAQ,CAAC,KAAK,sDAAiD;IACzE,SAAS,CAAC,QAAQ,CAAC,QAAQ,yCAA6C;IAExE,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,EAAE;IAIxE,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAMlF,SAAS,CAAC,QAAQ,IAAI,IAAI;IAU1B,OAAO,CAAC,iBAAiB;yCAlCd,mBAAmB;2CAAnB,mBAAmB;CA0C/B"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Scroll (classic) render mode: every visible page and question stacked in one
3
+ * scrollable surface, with a sticky progress bar and a single submit. Reads the
4
+ * shared {@link FormRuntime}; emits `submit` when the respondent is done.
5
+ */
6
+ import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';
7
+ import { FormProgressComponent } from './form-progress.component';
8
+ import { FormQuestionComponent } from './questions/form-question.component';
9
+ import * as i0 from "@angular/core";
10
+ const _forTrack0 = ($index, $item) => $item.id;
11
+ function FormScrollComponent_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "h2", 7);
13
+ i0.ɵɵtext(1);
14
+ i0.ɵɵelementEnd();
15
+ } if (rf & 2) {
16
+ const page_r1 = i0.ɵɵnextContext().$implicit;
17
+ i0.ɵɵadvance();
18
+ i0.ɵɵtextInterpolate(page_r1.title);
19
+ } }
20
+ function FormScrollComponent_For_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "p", 8);
22
+ i0.ɵɵtext(1);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const page_r1 = i0.ɵɵnextContext().$implicit;
26
+ i0.ɵɵadvance();
27
+ i0.ɵɵtextInterpolate(page_r1.description);
28
+ } }
29
+ function FormScrollComponent_For_5_For_5_Template(rf, ctx) { if (rf & 1) {
30
+ const _r2 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "mjf-form-question", 11);
32
+ i0.ɵɵlistener("valueChange", function FormScrollComponent_For_5_For_5_Template_mjf_form_question_valueChange_0_listener($event) { const q_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.onValueChange(q_r3, $event)); });
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const q_r3 = ctx.$implicit;
36
+ const ctx_r3 = i0.ɵɵnextContext(2);
37
+ i0.ɵɵproperty("question", q_r3)("value", ctx_r3.runtime().valueFor(q_r3.id))("errorMessage", ctx_r3.runtime().visibleErrorFor(q_r3))("distributionSlug", ctx_r3.distributionSlug());
38
+ } }
39
+ function FormScrollComponent_For_5_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "section", 4);
41
+ i0.ɵɵconditionalCreate(1, FormScrollComponent_For_5_Conditional_1_Template, 2, 1, "h2", 7);
42
+ i0.ɵɵconditionalCreate(2, FormScrollComponent_For_5_Conditional_2_Template, 2, 1, "p", 8);
43
+ i0.ɵɵelementStart(3, "div", 9);
44
+ i0.ɵɵrepeaterCreate(4, FormScrollComponent_For_5_For_5_Template, 1, 4, "mjf-form-question", 10, _forTrack0);
45
+ i0.ɵɵelementEnd()();
46
+ } if (rf & 2) {
47
+ const page_r1 = ctx.$implicit;
48
+ const ctx_r3 = i0.ɵɵnextContext();
49
+ i0.ɵɵattribute("aria-label", page_r1.title || "Section");
50
+ i0.ɵɵadvance();
51
+ i0.ɵɵconditional(page_r1.title ? 1 : -1);
52
+ i0.ɵɵadvance();
53
+ i0.ɵɵconditional(page_r1.description ? 2 : -1);
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵrepeater(ctx_r3.questionsFor(page_r1));
56
+ } }
57
+ function FormScrollComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "span");
59
+ i0.ɵɵtext(1, "Submitting\u2026");
60
+ i0.ɵɵelementEnd();
61
+ } }
62
+ function FormScrollComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "span");
64
+ i0.ɵɵtext(1, "Submit");
65
+ i0.ɵɵelementEnd();
66
+ } }
67
+ export class FormScrollComponent {
68
+ runtime = input.required(...(ngDevMode ? [{ debugName: "runtime" }] : []));
69
+ submitting = input(false, ...(ngDevMode ? [{ debugName: "submitting" }] : []));
70
+ /** When true, the submit control is disabled (e.g. captcha not yet solved). */
71
+ submitDisabled = input(false, ...(ngDevMode ? [{ debugName: "submitDisabled" }] : []));
72
+ /** Distribution slug, forwarded to FileUpload questions for scoped uploads. */
73
+ distributionSlug = input('', ...(ngDevMode ? [{ debugName: "distributionSlug" }] : []));
74
+ submit = output();
75
+ /** Fires when the respondent has made progress worth autosaving (debounced upstream). */
76
+ progressChange = output();
77
+ pages = computed(() => this.runtime().visiblePages(), ...(ngDevMode ? [{ debugName: "pages" }] : []));
78
+ progress = computed(() => this.runtime().progress(), ...(ngDevMode ? [{ debugName: "progress" }] : []));
79
+ questionsFor(page) {
80
+ return this.runtime().visibleQuestions(page);
81
+ }
82
+ onValueChange(question, value) {
83
+ this.runtime().setValue(question.id, value);
84
+ this.runtime().markTouched(question.id);
85
+ this.progressChange.emit();
86
+ }
87
+ onSubmit() {
88
+ const all = this.runtime().visibleAnswerableQuestions();
89
+ this.runtime().touchAll(all);
90
+ if (this.runtime().areValid(all)) {
91
+ this.submit.emit();
92
+ }
93
+ else {
94
+ this.focusFirstInvalid();
95
+ }
96
+ }
97
+ focusFirstInvalid() {
98
+ const first = this.runtime()
99
+ .visibleAnswerableQuestions()
100
+ .find((q) => this.runtime().errorFor(q));
101
+ if (first) {
102
+ document.getElementById(`mjf-q-${first.id}`)?.focus();
103
+ }
104
+ }
105
+ static ɵfac = function FormScrollComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormScrollComponent)(); };
106
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormScrollComponent, selectors: [["mjf-form-scroll"]], inputs: { runtime: [1, "runtime"], submitting: [1, "submitting"], submitDisabled: [1, "submitDisabled"], distributionSlug: [1, "distributionSlug"] }, outputs: { submit: "submit", progressChange: "progressChange" }, decls: 10, vars: 3, consts: [[1, "mjf-scroll"], [1, "mjf-scroll__progress"], [3, "value"], ["novalidate", "", 1, "mjf-scroll__body", 3, "ngSubmit"], [1, "mjf-page"], [1, "mjf-scroll__actions"], ["type", "submit", 1, "mjf-submit", 3, "disabled"], [1, "mjf-page__title"], [1, "mjf-page__desc"], [1, "mjf-page__questions"], [3, "question", "value", "errorMessage", "distributionSlug"], [3, "valueChange", "question", "value", "errorMessage", "distributionSlug"]], template: function FormScrollComponent_Template(rf, ctx) { if (rf & 1) {
107
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
108
+ i0.ɵɵelement(2, "mjf-form-progress", 2);
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(3, "form", 3);
111
+ i0.ɵɵlistener("ngSubmit", function FormScrollComponent_Template_form_ngSubmit_3_listener() { return ctx.onSubmit(); });
112
+ i0.ɵɵrepeaterCreate(4, FormScrollComponent_For_5_Template, 6, 3, "section", 4, _forTrack0);
113
+ i0.ɵɵelementStart(6, "div", 5)(7, "button", 6);
114
+ i0.ɵɵconditionalCreate(8, FormScrollComponent_Conditional_8_Template, 2, 0, "span")(9, FormScrollComponent_Conditional_9_Template, 2, 0, "span");
115
+ i0.ɵɵelementEnd()()()();
116
+ } if (rf & 2) {
117
+ i0.ɵɵadvance(2);
118
+ i0.ɵɵproperty("value", ctx.progress());
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵrepeater(ctx.pages());
121
+ i0.ɵɵadvance(3);
122
+ i0.ɵɵproperty("disabled", ctx.submitting() || ctx.submitDisabled());
123
+ i0.ɵɵadvance();
124
+ i0.ɵɵconditional(ctx.submitting() ? 8 : 9);
125
+ } }, dependencies: [FormProgressComponent, FormQuestionComponent], styles: [".mjf-scroll[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.mjf-scroll__progress[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n padding: 0.75rem 0;\n background: var(--mjf-page-bg);\n}\n\n.mjf-scroll__body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n}\n\n.mjf-page[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.25rem;\n padding: 1.5rem;\n background: var(--mjf-card-bg);\n border: 1px solid var(--mjf-card-border);\n border-radius: var(--mjf-card-radius);\n box-shadow: var(--mjf-card-shadow);\n}\n\n.mjf-page__title[_ngcontent-%COMP%] {\n margin: 0;\n font-family: var(--mjf-font-display);\n font-size: 1.375rem;\n color: var(--mjf-page-ink);\n}\n\n.mjf-page__desc[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n}\n\n.mjf-page__questions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.75rem;\n}\n\n.mjf-scroll__actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n}\n\n.mjf-submit[_ngcontent-%COMP%] {\n min-height: 3rem;\n padding: 0.75rem 2rem;\n font-family: var(--mjf-font-body);\n font-size: 1.0625rem;\n font-weight: 600;\n color: var(--mjf-on-accent);\n background: var(--mjf-accent);\n border: none;\n border-radius: var(--mjf-btn-radius);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.mjf-submit[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mjf-accent-strong);\n}\n\n.mjf-submit[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: progress;\n}\n\n.mjf-submit[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n@media (min-width: 640px) {\n .mjf-page[_ngcontent-%COMP%] {\n padding: 2rem;\n }\n}"], changeDetection: 0 });
126
+ }
127
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormScrollComponent, [{
128
+ type: Component,
129
+ args: [{ selector: 'mjf-form-scroll', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormProgressComponent, FormQuestionComponent], template: "<div class=\"mjf-scroll\">\n <div class=\"mjf-scroll__progress\">\n <mjf-form-progress [value]=\"progress()\" />\n </div>\n\n <form class=\"mjf-scroll__body\" (ngSubmit)=\"onSubmit()\" novalidate>\n @for (page of pages(); track page.id) {\n <section class=\"mjf-page\" [attr.aria-label]=\"page.title || 'Section'\">\n @if (page.title) {\n <h2 class=\"mjf-page__title\">{{ page.title }}</h2>\n }\n @if (page.description) {\n <p class=\"mjf-page__desc\">{{ page.description }}</p>\n }\n <div class=\"mjf-page__questions\">\n @for (q of questionsFor(page); track q.id) {\n <mjf-form-question\n [question]=\"q\"\n [value]=\"runtime().valueFor(q.id)\"\n [errorMessage]=\"runtime().visibleErrorFor(q)\"\n [distributionSlug]=\"distributionSlug()\"\n (valueChange)=\"onValueChange(q, $event)\"\n />\n }\n </div>\n </section>\n }\n\n <div class=\"mjf-scroll__actions\">\n <button type=\"submit\" class=\"mjf-submit\" [disabled]=\"submitting() || submitDisabled()\">\n @if (submitting()) {\n <span>Submitting\u2026</span>\n } @else {\n <span>Submit</span>\n }\n </button>\n </div>\n </form>\n</div>\n", styles: [".mjf-scroll {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.mjf-scroll__progress {\n position: sticky;\n top: 0;\n z-index: 2;\n padding: 0.75rem 0;\n background: var(--mjf-page-bg);\n}\n\n.mjf-scroll__body {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n}\n\n.mjf-page {\n display: flex;\n flex-direction: column;\n gap: 1.25rem;\n padding: 1.5rem;\n background: var(--mjf-card-bg);\n border: 1px solid var(--mjf-card-border);\n border-radius: var(--mjf-card-radius);\n box-shadow: var(--mjf-card-shadow);\n}\n\n.mjf-page__title {\n margin: 0;\n font-family: var(--mjf-font-display);\n font-size: 1.375rem;\n color: var(--mjf-page-ink);\n}\n\n.mjf-page__desc {\n margin: 0;\n color: var(--mj-text-muted);\n}\n\n.mjf-page__questions {\n display: flex;\n flex-direction: column;\n gap: 1.75rem;\n}\n\n.mjf-scroll__actions {\n display: flex;\n justify-content: flex-end;\n}\n\n.mjf-submit {\n min-height: 3rem;\n padding: 0.75rem 2rem;\n font-family: var(--mjf-font-body);\n font-size: 1.0625rem;\n font-weight: 600;\n color: var(--mjf-on-accent);\n background: var(--mjf-accent);\n border: none;\n border-radius: var(--mjf-btn-radius);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.mjf-submit:hover:not(:disabled) {\n background: var(--mjf-accent-strong);\n}\n\n.mjf-submit:disabled {\n opacity: 0.6;\n cursor: progress;\n}\n\n.mjf-submit:focus-visible {\n outline: none;\n box-shadow: var(--mjf-focus-ring);\n}\n\n@media (min-width: 640px) {\n .mjf-page {\n padding: 2rem;\n }\n}\n"] }]
130
+ }], null, { runtime: [{ type: i0.Input, args: [{ isSignal: true, alias: "runtime", required: true }] }], submitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitting", required: false }] }], submitDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitDisabled", required: false }] }], distributionSlug: [{ type: i0.Input, args: [{ isSignal: true, alias: "distributionSlug", required: false }] }], submit: [{ type: i0.Output, args: ["submit"] }], progressChange: [{ type: i0.Output, args: ["progressChange"] }] }); })();
131
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormScrollComponent, { className: "FormScrollComponent", filePath: "lib/widget/components/form-scroll.component.ts", lineNumber: 21 }); })();
132
+ //# sourceMappingURL=form-scroll.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-scroll.component.js","sourceRoot":"","sources":["../../../../src/lib/widget/components/form-scroll.component.ts","../../../../src/lib/widget/components/form-scroll.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { AnswerValue, PublishedFormQuestion } from '@mj-biz-apps/forms-entities';
2
+ import * as i0 from "@angular/core";
3
+ /** UI state of a FileUpload control. */
4
+ type UploadStatus = 'idle' | 'uploading' | 'done' | 'error';
5
+ export declare class FormQuestionComponent {
6
+ /** The published question to render. */
7
+ readonly question: import("@angular/core").InputSignal<PublishedFormQuestion>;
8
+ /** Current value (controlled). */
9
+ readonly value: import("@angular/core").InputSignal<AnswerValue>;
10
+ /** Validation message to show, or `null` when valid / untouched. */
11
+ readonly errorMessage: import("@angular/core").InputSignal<string | null>;
12
+ /** Distribution slug — needed to scope a FileUpload's upload to the current form. */
13
+ readonly distributionSlug: import("@angular/core").InputSignal<string>;
14
+ /** Emits whenever the respondent changes the answer. */
15
+ readonly valueChange: import("@angular/core").OutputEmitterRef<AnswerValue>;
16
+ private readonly uploader;
17
+ /** FileUpload UI state (upload lifecycle for the current file). */
18
+ protected readonly uploadStatus: import("@angular/core").WritableSignal<UploadStatus>;
19
+ /** Progress 0–1 while uploading, or `null` for an indeterminate phase. */
20
+ protected readonly uploadProgress: import("@angular/core").WritableSignal<number | null>;
21
+ /** Display name of the selected/uploaded file (the stored answer is the fileId). */
22
+ protected readonly uploadFileName: import("@angular/core").WritableSignal<string>;
23
+ /** Inline, respondent-facing upload error, or `null`. */
24
+ protected readonly uploadError: import("@angular/core").WritableSignal<string | null>;
25
+ /** Whole-number progress percent for the aria-valuenow / label. */
26
+ protected readonly uploadPercent: import("@angular/core").Signal<number | null>;
27
+ protected readonly inputId: import("@angular/core").Signal<string>;
28
+ protected readonly errorId: import("@angular/core").Signal<string>;
29
+ protected readonly helpId: import("@angular/core").Signal<string>;
30
+ protected readonly describedBy: import("@angular/core").Signal<string | null>;
31
+ protected readonly inputType: import("@angular/core").Signal<string>;
32
+ protected readonly inputMode: import("@angular/core").Signal<string>;
33
+ protected readonly autocomplete: import("@angular/core").Signal<string>;
34
+ protected readonly textValue: import("@angular/core").Signal<string>;
35
+ protected readonly selectedValues: import("@angular/core").Signal<string[]>;
36
+ /** Rating scale max (default 5); NPS is fixed 0–10 handled in template. */
37
+ protected readonly ratingMax: import("@angular/core").Signal<number>;
38
+ protected readonly ratingScale: import("@angular/core").Signal<number[]>;
39
+ protected readonly npsScale: number[];
40
+ protected readonly placeholder: import("@angular/core").Signal<string>;
41
+ protected readonly textRows: import("@angular/core").Signal<number>;
42
+ protected readonly fileAccept: import("@angular/core").Signal<string>;
43
+ protected readonly numericValue: import("@angular/core").Signal<number | null>;
44
+ protected readonly booleanValue: import("@angular/core").Signal<boolean | null>;
45
+ protected onText(raw: string): void;
46
+ protected onNumber(raw: string): void;
47
+ protected onSingleChoice(value: string): void;
48
+ protected onMultiToggle(value: string): void;
49
+ protected isSelected(value: string): boolean;
50
+ protected onRating(score: number): void;
51
+ protected onYesNo(value: boolean): void;
52
+ /** Last selected file, retained so the respondent can retry a failed upload. */
53
+ private lastFile;
54
+ protected onFile(input: HTMLInputElement): Promise<void>;
55
+ /** Re-run the upload for the previously-selected file after a failure. */
56
+ protected retryUpload(): Promise<void>;
57
+ /**
58
+ * Upload one file to the anonymous `/forms/upload` endpoint and store the returned
59
+ * `fileId` as the answer. The answer is cleared while the upload is in flight so a
60
+ * required FileUpload cannot be satisfied by a not-yet-stored file.
61
+ */
62
+ private uploadFile;
63
+ private resetUploadState;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormQuestionComponent, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormQuestionComponent, "mjf-form-question", never, { "question": { "alias": "question"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "distributionSlug": { "alias": "distributionSlug"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=form-question.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-question.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/widget/components/questions/form-question.component.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;;AAKtF,wCAAwC;AACxC,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,qBAOa,qBAAqB;IAChC,wCAAwC;IACxC,SAAgB,QAAQ,6DAA2C;IACnE,kCAAkC;IAClC,SAAgB,KAAK,mDAAiC;IACtD,oEAAoE;IACpE,SAAgB,YAAY,qDAA8B;IAC1D,qFAAqF;IACrF,SAAgB,gBAAgB,8CAAqB;IACrD,wDAAwD;IACxD,SAAgB,WAAW,wDAAyB;IAEpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,mEAAmE;IACnE,SAAS,CAAC,QAAQ,CAAC,YAAY,uDAAgC;IAC/D,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,CAAC,cAAc,wDAA+B;IAChE,oFAAoF;IACpF,SAAS,CAAC,QAAQ,CAAC,cAAc,iDAAsB;IACvD,yDAAyD;IACzD,SAAS,CAAC,QAAQ,CAAC,WAAW,wDAA+B;IAC7D,mEAAmE;IACnE,SAAS,CAAC,QAAQ,CAAC,aAAa,gDAG7B;IAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAAiD;IAC3E,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAA6C;IACvE,SAAS,CAAC,QAAQ,CAAC,MAAM,yCAA4C;IACrE,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAS3B;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAAsD;IAClF,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAAsD;IAClF,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAAyD;IAExF,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAGzB;IAEH,SAAS,CAAC,QAAQ,CAAC,cAAc,2CAM9B;IAEH,2EAA2E;IAC3E,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAGzB;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,2CAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,QAAQ,WAA2C;IAEtE,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAG3B;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,yCAGxB;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAG1B;IAEH,SAAS,CAAC,QAAQ,CAAC,YAAY,gDAG5B;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,iDAG5B;IAEH,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAInC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASrC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW5C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI5C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIvC,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAqB;cAErB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D,0EAA0E;cAC1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5C;;;;OAIG;YACW,UAAU;IAyBxB,OAAO,CAAC,gBAAgB;yCAxLb,qBAAqB;2CAArB,qBAAqB;CA8LjC"}