@openmrs/ngx-formentry 5.0.1-pre.351 → 5.0.1-pre.360

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 (240) hide show
  1. package/components/afe-ng-select.component.d.ts +1 -1
  2. package/components/appointments-overview/appointments-overview.component.d.ts +1 -1
  3. package/components/check-box/checkbox.component.d.ts +1 -1
  4. package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +1 -1
  5. package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +1 -1
  6. package/components/date-time-picker/date-picker/date-picker.component.d.ts +1 -1
  7. package/components/date-time-picker/date-time-picker.component.d.ts +1 -1
  8. package/components/date-time-picker/time-picker/time-picker.component.d.ts +1 -1
  9. package/components/file-upload/file-upload.component.d.ts +1 -1
  10. package/components/input/input.directive.d.ts +1 -1
  11. package/components/input/label.component.d.ts +1 -1
  12. package/components/input/text-area.directive.d.ts +1 -1
  13. package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +1 -1
  14. package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +1 -1
  15. package/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +1 -1
  16. package/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +1 -1
  17. package/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +1 -1
  18. package/components/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +1 -1
  19. package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +1 -1
  20. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +1 -1
  21. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +1 -1
  22. package/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +1 -1
  23. package/components/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +1 -1
  24. package/components/ngx-pick-datetime/lib/date-time/timer.component.d.ts +1 -1
  25. package/components/ngx-remote-select/ngx-remote-select.component.d.ts +1 -1
  26. package/components/ngx-tabset/components/ngx-tab-set.component.d.ts +1 -1
  27. package/components/ngx-tabset/components/tab.component.d.ts +1 -1
  28. package/components/ngx-tabset/directives/hover-class.directive.d.ts +1 -1
  29. package/components/number-input/number-input.component.d.ts +1 -1
  30. package/components/radio-button/radio.component.d.ts +1 -1
  31. package/components/select/select.component.d.ts +1 -1
  32. package/components/workspace-launcher/workspace-launcher.component.d.ts +1 -1
  33. package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-array.mjs +4 -2
  34. package/{esm2020 → esm2022}/components/afe-ng-select.component.mjs +12 -12
  35. package/{esm2020 → esm2022}/components/appointments-overview/appointments-overview.component.mjs +4 -4
  36. package/{esm2020 → esm2022}/components/check-box/checkbox.component.mjs +10 -10
  37. package/{esm2020 → esm2022}/components/check-box/checkbox.module.mjs +5 -5
  38. package/{esm2020 → esm2022}/components/custom-component-wrapper/custom-component-wrapper..module.mjs +5 -5
  39. package/{esm2020 → esm2022}/components/custom-component-wrapper/custom-component-wrapper.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/components/custom-control-wrapper/custom-control-wrapper..module.mjs +5 -5
  41. package/esm2022/components/custom-control-wrapper/custom-control-wrapper.component.mjs +68 -0
  42. package/{esm2020 → esm2022}/components/date-time-picker/date-picker/date-picker.component.mjs +4 -4
  43. package/esm2022/components/date-time-picker/date-time-picker.component.mjs +115 -0
  44. package/{esm2020 → esm2022}/components/date-time-picker/date-time-picker.module.mjs +13 -13
  45. package/{esm2020 → esm2022}/components/date-time-picker/picker-modal/modal.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/components/date-time-picker/pipes/moment.pipe.mjs +4 -4
  47. package/{esm2020 → esm2022}/components/date-time-picker/time-picker/time-picker.component.mjs +4 -4
  48. package/{esm2020 → esm2022}/components/file-upload/file-upload.component.mjs +10 -10
  49. package/{esm2020 → esm2022}/components/file-upload/file-upload.module.mjs +13 -13
  50. package/{esm2020 → esm2022}/components/file-upload/secure.pipe.mjs +4 -4
  51. package/{esm2020 → esm2022}/components/input/input.directive.mjs +4 -4
  52. package/{esm2020 → esm2022}/components/input/input.module.mjs +5 -5
  53. package/esm2022/components/input/label.component.mjs +263 -0
  54. package/{esm2020 → esm2022}/components/input/text-area.directive.mjs +4 -4
  55. package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +76 -0
  56. package/{esm2020 → esm2022}/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs +13 -13
  57. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs +4 -4
  58. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs +11 -11
  59. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +4 -4
  64. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs +4 -4
  65. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +7 -7
  66. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs +4 -4
  67. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs +4 -4
  68. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs +4 -4
  69. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs +4 -4
  70. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs +4 -4
  71. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs +33 -33
  72. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs +4 -4
  73. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +4 -4
  74. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +4 -4
  75. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +243 -0
  76. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +5 -5
  77. package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs +4 -4
  78. package/esm2022/components/ngx-remote-select/ngx-remote-select.component.mjs +132 -0
  79. package/{esm2020 → esm2022}/components/ngx-remote-select/ngx-remote-select.module.mjs +5 -5
  80. package/{esm2020 → esm2022}/components/ngx-tabset/components/ngx-tab-set.component.mjs +4 -4
  81. package/{esm2020 → esm2022}/components/ngx-tabset/components/tab.component.mjs +4 -4
  82. package/{esm2020 → esm2022}/components/ngx-tabset/directives/hover-class.directive.mjs +4 -4
  83. package/{esm2020 → esm2022}/components/ngx-tabset/modules/ngx-tabset.module.mjs +5 -5
  84. package/esm2022/components/number-input/number-input.component.mjs +248 -0
  85. package/{esm2020 → esm2022}/components/number-input/number-input.module.mjs +5 -5
  86. package/{esm2020 → esm2022}/components/number-input/number.directive.mjs +4 -4
  87. package/esm2022/components/radio-button/radio.component.mjs +96 -0
  88. package/{esm2020 → esm2022}/components/radio-button/radio.module.mjs +5 -5
  89. package/{esm2020 → esm2022}/components/select/optgroup.directive.mjs +4 -4
  90. package/{esm2020 → esm2022}/components/select/option.directive.mjs +4 -4
  91. package/esm2022/components/select/select.component.mjs +182 -0
  92. package/{esm2020 → esm2022}/components/select/select.module.mjs +5 -5
  93. package/{esm2020 → esm2022}/components/workspace-launcher/workspace-launcher.component.mjs +4 -4
  94. package/{esm2020 → esm2022}/components/workspace-launcher/workspace-launcher.module.mjs +5 -5
  95. package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/hider-helpers.mjs +2 -1
  96. package/{esm2020 → esm2022}/form-entry/data-sources/data-sources.mjs +4 -4
  97. package/{esm2020 → esm2022}/form-entry/directives/collapse.directive.mjs +4 -4
  98. package/{esm2020 → esm2022}/form-entry/directives/historical-value.directive.mjs +4 -4
  99. package/{esm2020 → esm2022}/form-entry/error-renderer/error-renderer.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/form-entry/expression-runner/expression-runner.mjs +4 -4
  101. package/{esm2020 → esm2022}/form-entry/form-entry.module.mjs +75 -75
  102. package/{esm2020 → esm2022}/form-entry/form-factory/control-relations.factory.mjs +4 -4
  103. package/{esm2020 → esm2022}/form-entry/form-factory/form-control.service.mjs +4 -4
  104. package/{esm2020 → esm2022}/form-entry/form-factory/form.factory.mjs +4 -4
  105. package/{esm2020 → esm2022}/form-entry/form-factory/hiders-disablers.factory.mjs +4 -4
  106. package/{esm2020 → esm2022}/form-entry/form-factory/question.factory.mjs +4 -4
  107. package/{esm2020 → esm2022}/form-entry/form-factory/show-messages.factory.mjs +4 -4
  108. package/{esm2020 → esm2022}/form-entry/form-factory/validation.factory.mjs +4 -4
  109. package/{esm2020 → esm2022}/form-entry/form-renderer/form-renderer.component.mjs +4 -4
  110. package/{esm2020 → esm2022}/form-entry/helpers/historical-expression-helper-service.mjs +4 -4
  111. package/{esm2020 → esm2022}/form-entry/helpers/historical-field-helper-service.mjs +4 -4
  112. package/{esm2020 → esm2022}/form-entry/helpers/js-expression-helper.mjs +4 -4
  113. package/{esm2020 → esm2022}/form-entry/pipes/time-ago.pipe.mjs +4 -4
  114. package/{esm2020 → esm2022}/form-entry/services/debug-mode.service.mjs +4 -4
  115. package/esm2022/form-entry/services/form-errors.service.mjs +21 -0
  116. package/{esm2020 → esm2022}/form-entry/services/form-schema-compiler.service.mjs +4 -4
  117. package/{esm2020 → esm2022}/form-entry/services/historical-encounter-data.service.mjs +4 -4
  118. package/esm2022/form-entry/validators/validations.mjs +5 -0
  119. package/esm2022/form-entry/value-adapters/diagnosis.adapter.mjs +241 -0
  120. package/{esm2020 → esm2022}/form-entry/value-adapters/encounter.adapter.mjs +4 -4
  121. package/{esm2020 → esm2022}/form-entry/value-adapters/obs-adapter-helper.mjs +4 -4
  122. package/{esm2020 → esm2022}/form-entry/value-adapters/obs.adapter.mjs +4 -4
  123. package/{esm2020 → esm2022}/form-entry/value-adapters/order.adapter.mjs +4 -4
  124. package/{esm2020 → esm2022}/form-entry/value-adapters/patient-identifier.adapter.mjs +4 -4
  125. package/{esm2020 → esm2022}/form-entry/value-adapters/person-attribute.adapter.mjs +4 -4
  126. package/{esm2020 → esm2022}/shared.module.mjs +5 -5
  127. package/{fesm2020 → fesm2022}/openmrs-ngx-formentry.mjs +534 -531
  128. package/fesm2022/openmrs-ngx-formentry.mjs.map +1 -0
  129. package/form-entry/directives/collapse.directive.d.ts +1 -1
  130. package/form-entry/directives/historical-value.directive.d.ts +1 -1
  131. package/form-entry/error-renderer/error-renderer.component.d.ts +1 -1
  132. package/form-entry/form-renderer/form-renderer.component.d.ts +1 -1
  133. package/package.json +14 -20
  134. package/esm2020/components/custom-control-wrapper/custom-control-wrapper.component.mjs +0 -68
  135. package/esm2020/components/date-time-picker/date-time-picker.component.mjs +0 -115
  136. package/esm2020/components/input/label.component.mjs +0 -263
  137. package/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +0 -76
  138. package/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +0 -243
  139. package/esm2020/components/ngx-remote-select/ngx-remote-select.component.mjs +0 -132
  140. package/esm2020/components/number-input/number-input.component.mjs +0 -248
  141. package/esm2020/components/radio-button/radio.component.mjs +0 -96
  142. package/esm2020/components/select/select.component.mjs +0 -182
  143. package/esm2020/form-entry/services/form-errors.service.mjs +0 -21
  144. package/esm2020/form-entry/validators/validations.mjs +0 -5
  145. package/esm2020/form-entry/value-adapters/diagnosis.adapter.mjs +0 -241
  146. package/fesm2015/openmrs-ngx-formentry.mjs +0 -14935
  147. package/fesm2015/openmrs-ngx-formentry.mjs.map +0 -1
  148. package/fesm2020/openmrs-ngx-formentry.mjs.map +0 -1
  149. /package/{esm2020 → esm2022}/abstract-controls-extension/afe-control-type.mjs +0 -0
  150. /package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-control.mjs +0 -0
  151. /package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-group.mjs +0 -0
  152. /package/{esm2020 → esm2022}/abstract-controls-extension/control-extensions.mjs +0 -0
  153. /package/{esm2020 → esm2022}/abstract-controls-extension/index.mjs +0 -0
  154. /package/{esm2020 → esm2022}/abstract-controls-extension/value-change.listener.mjs +0 -0
  155. /package/{esm2020 → esm2022}/change-tracking/control-relation.mjs +0 -0
  156. /package/{esm2020 → esm2022}/change-tracking/control-relations.mjs +0 -0
  157. /package/{esm2020 → esm2022}/components/date-time-picker/index.mjs +0 -0
  158. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs +0 -0
  159. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs +0 -0
  160. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs +0 -0
  161. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs +0 -0
  162. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs +0 -0
  163. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs +0 -0
  164. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/utils/index.mjs +0 -0
  165. /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/utils/object.utils.mjs +0 -0
  166. /package/{esm2020 → esm2022}/form-entry/control-alerts/alert-helpers.mjs +0 -0
  167. /package/{esm2020 → esm2022}/form-entry/control-alerts/can-generate-alert.mjs +0 -0
  168. /package/{esm2020 → esm2022}/form-entry/control-calculators/can-calculate.mjs +0 -0
  169. /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/can-disable.mjs +0 -0
  170. /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/can-hide.mjs +0 -0
  171. /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/disabler-helper.mjs +0 -0
  172. /package/{esm2020 → esm2022}/form-entry/data-sources/dummy-data-source.mjs +0 -0
  173. /package/{esm2020 → esm2022}/form-entry/directives/collapse-animations.mjs +0 -0
  174. /package/{esm2020 → esm2022}/form-entry/form-factory/form-node.mjs +0 -0
  175. /package/{esm2020 → esm2022}/form-entry/form-factory/form.mjs +0 -0
  176. /package/{esm2020 → esm2022}/form-entry/form-factory/index.mjs +0 -0
  177. /package/{esm2020 → esm2022}/form-entry/helpers/risk-dataset-table.mjs +0 -0
  178. /package/{esm2020 → esm2022}/form-entry/question-models/checkbox.model.mjs +0 -0
  179. /package/{esm2020 → esm2022}/form-entry/question-models/conditional-validation.model.mjs +0 -0
  180. /package/{esm2020 → esm2022}/form-entry/question-models/custom-control-question.model.mjs +0 -0
  181. /package/{esm2020 → esm2022}/form-entry/question-models/date-question.mjs +0 -0
  182. /package/{esm2020 → esm2022}/form-entry/question-models/date-validation.model.mjs +0 -0
  183. /package/{esm2020 → esm2022}/form-entry/question-models/diagnosis-question.mjs +0 -0
  184. /package/{esm2020 → esm2022}/form-entry/question-models/file-upload-question.mjs +0 -0
  185. /package/{esm2020 → esm2022}/form-entry/question-models/group-question.mjs +0 -0
  186. /package/{esm2020 → esm2022}/form-entry/question-models/index.mjs +0 -0
  187. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/base-options.mjs +0 -0
  188. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/checkbox-options.mjs +0 -0
  189. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/data-source.mjs +0 -0
  190. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/date-question-options.mjs +0 -0
  191. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/diagnosis-question-options.mjs +0 -0
  192. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/file-upload-question-options.mjs +0 -0
  193. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/group-question-options.mjs +0 -0
  194. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/multi-select-options.mjs +0 -0
  195. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/nested-questions.mjs +0 -0
  196. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/radio-button-options.mjs +0 -0
  197. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/repeating-question-options.mjs +0 -0
  198. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/select-option.mjs +0 -0
  199. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/select-question-options.mjs +0 -0
  200. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/test-order-question-options.mjs +0 -0
  201. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/text-area-question-options.mjs +0 -0
  202. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/text-question-options.mjs +0 -0
  203. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/ui-select-question-options.mjs +0 -0
  204. /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/workspace-launcher-options.mjs +0 -0
  205. /package/{esm2020 → esm2022}/form-entry/question-models/js-expression-validation.model.mjs +0 -0
  206. /package/{esm2020 → esm2022}/form-entry/question-models/max-length-validation.model.mjs +0 -0
  207. /package/{esm2020 → esm2022}/form-entry/question-models/max-validation.model.mjs +0 -0
  208. /package/{esm2020 → esm2022}/form-entry/question-models/min-length-validation.model.mjs +0 -0
  209. /package/{esm2020 → esm2022}/form-entry/question-models/min-validation.model.mjs +0 -0
  210. /package/{esm2020 → esm2022}/form-entry/question-models/models.mjs +0 -0
  211. /package/{esm2020 → esm2022}/form-entry/question-models/multi-select-question.mjs +0 -0
  212. /package/{esm2020 → esm2022}/form-entry/question-models/pair.model.mjs +0 -0
  213. /package/{esm2020 → esm2022}/form-entry/question-models/question-base.mjs +0 -0
  214. /package/{esm2020 → esm2022}/form-entry/question-models/radio-button.model.mjs +0 -0
  215. /package/{esm2020 → esm2022}/form-entry/question-models/rendering-type.mjs +0 -0
  216. /package/{esm2020 → esm2022}/form-entry/question-models/repeating-question.mjs +0 -0
  217. /package/{esm2020 → esm2022}/form-entry/question-models/select-option.mjs +0 -0
  218. /package/{esm2020 → esm2022}/form-entry/question-models/select-question.mjs +0 -0
  219. /package/{esm2020 → esm2022}/form-entry/question-models/test-order-question.mjs +0 -0
  220. /package/{esm2020 → esm2022}/form-entry/question-models/text-area-input-question.mjs +0 -0
  221. /package/{esm2020 → esm2022}/form-entry/question-models/text-input-question.mjs +0 -0
  222. /package/{esm2020 → esm2022}/form-entry/question-models/ui-select-question.mjs +0 -0
  223. /package/{esm2020 → esm2022}/form-entry/question-models/validation.model.mjs +0 -0
  224. /package/{esm2020 → esm2022}/form-entry/question-models/workspace-launcher.model.mjs +0 -0
  225. /package/{esm2020 → esm2022}/form-entry/validators/conditional-answered.validator.mjs +0 -0
  226. /package/{esm2020 → esm2022}/form-entry/validators/conditional-required.validator.mjs +0 -0
  227. /package/{esm2020 → esm2022}/form-entry/validators/date.validator.mjs +0 -0
  228. /package/{esm2020 → esm2022}/form-entry/validators/future-date-restriction.validator.mjs +0 -0
  229. /package/{esm2020 → esm2022}/form-entry/validators/js-expression.validator.mjs +0 -0
  230. /package/{esm2020 → esm2022}/form-entry/validators/max-date.validator.mjs +0 -0
  231. /package/{esm2020 → esm2022}/form-entry/validators/max-length.validator.mjs +0 -0
  232. /package/{esm2020 → esm2022}/form-entry/validators/max.validator.mjs +0 -0
  233. /package/{esm2020 → esm2022}/form-entry/validators/min-date.validator.mjs +0 -0
  234. /package/{esm2020 → esm2022}/form-entry/validators/min-length.validator.mjs +0 -0
  235. /package/{esm2020 → esm2022}/form-entry/validators/min.validator.mjs +0 -0
  236. /package/{esm2020 → esm2022}/form-entry/validators/required.validator.mjs +0 -0
  237. /package/{esm2020 → esm2022}/form-entry/value-adapters/value.adapter.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/openmrs-ngx-formentry.mjs +0 -0
  240. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"openmrs-ngx-formentry.mjs","sources":["../../../projects/ngx-formentry/src/form-entry/services/debug-mode.service.ts","../../../projects/ngx-formentry/src/form-entry/pipes/time-ago.pipe.ts","../../../projects/ngx-formentry/src/form-entry/services/form-errors.service.ts","../../../projects/ngx-formentry/src/change-tracking/control-relation.ts","../../../projects/ngx-formentry/src/change-tracking/control-relations.ts","../../../projects/ngx-formentry/src/form-entry/control-hiders-disablers/hider-helpers.ts","../../../projects/ngx-formentry/src/form-entry/control-alerts/alert-helpers.ts","../../../projects/ngx-formentry/src/form-entry/control-hiders-disablers/disabler-helper.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form-node.ts","../../../projects/ngx-formentry/src/form-entry/question-models/validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/js-expression-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/conditional-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/control-relations.factory.ts","../../../projects/ngx-formentry/src/form-entry/expression-runner/expression-runner.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-control.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-group.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-array.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-control-type.ts","../../../projects/ngx-formentry/src/form-entry/question-models/question-base.ts","../../../projects/ngx-formentry/src/form-entry/validators/conditional-required.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/conditional-answered.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/required.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min-date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max-date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/future-date-restriction.validator.ts","../../../projects/ngx-formentry/src/form-entry/helpers/risk-dataset-table.ts","../../../projects/ngx-formentry/src/form-entry/helpers/js-expression-helper.ts","../../../projects/ngx-formentry/src/form-entry/validators/validations.ts","../../../projects/ngx-formentry/src/form-entry/validators/js-expression.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max-length.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min-length.validator.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/validation.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/hiders-disablers.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/show-messages.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form-control.service.ts","../../../projects/ngx-formentry/src/form-entry/data-sources/data-sources.ts","../../../projects/ngx-formentry/src/components/select/select.component.ts","../../../projects/ngx-formentry/src/components/select/select.component.html","../../../projects/ngx-formentry/src/components/number-input/number.directive.ts","../../../projects/ngx-formentry/src/components/number-input/number-input.component.ts","../../../projects/ngx-formentry/src/components/number-input/number-input.component.html","../../../projects/ngx-formentry/src/components/input/input.directive.ts","../../../projects/ngx-formentry/src/components/input/text-area.directive.ts","../../../projects/ngx-formentry/src/components/ngx-remote-select/ngx-remote-select.component.ts","../../../projects/ngx-formentry/src/components/ngx-remote-select/remote-select.component.html","../../../projects/ngx-formentry/src/components/file-upload/secure.pipe.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.component.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.component.html","../../../projects/ngx-formentry/src/components/check-box/checkbox.component.ts","../../../projects/ngx-formentry/src/components/check-box/checkbox.component.html","../../../projects/ngx-formentry/src/components/radio-button/radio.component.ts","../../../projects/ngx-formentry/src/components/radio-button/radio.component.html","../../../projects/ngx-formentry/src/components/workspace-launcher/workspace-launcher.component.ts","../../../projects/ngx-formentry/src/components/workspace-launcher/workspace-launcher.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-body.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-body.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer-box.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer-box.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-config.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-container.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-container.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/utils/object.utils.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/utils/index.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog.service.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.component.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.html","../../../projects/ngx-formentry/src/form-entry/question-models/custom-control-question.model.ts","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper.component.ts","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper.component.html","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper.component.ts","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper.component.html","../../../projects/ngx-formentry/src/components/ngx-tabset/components/tab.component.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/tab.component.html","../../../projects/ngx-formentry/src/components/ngx-tabset/directives/hover-class.directive.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/ngx-tab-set.component.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/ngx-tab-set.component.html","../../../projects/ngx-formentry/src/components/appointments-overview/appointments-overview.component.ts","../../../projects/ngx-formentry/src/components/appointments-overview/appointments-overview.component.html","../../../projects/ngx-formentry/src/form-entry/helpers/historical-field-helper-service.ts","../../../projects/ngx-formentry/src/form-entry/directives/historical-value.directive.ts","../../../projects/ngx-formentry/src/form-entry/form-renderer/form-renderer.component.ts","../../../projects/ngx-formentry/src/form-entry/form-renderer/form-renderer.component.html","../../../projects/ngx-formentry/src/form-entry/form-factory/form.ts","../../../projects/ngx-formentry/src/form-entry/error-renderer/error-renderer.component.ts","../../../projects/ngx-formentry/src/form-entry/error-renderer/error-renderer.component.html","../../../projects/ngx-formentry/src/form-entry/directives/collapse-animations.ts","../../../projects/ngx-formentry/src/form-entry/directives/collapse.directive.ts","../../../projects/ngx-formentry/src/components/number-input/number-input.module.ts","../../../projects/ngx-formentry/src/shared.module.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.module.ts","../../../projects/ngx-formentry/src/components/date-time-picker/picker-modal/modal.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/picker-modal/modal.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/pipes/moment.pipe.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-picker/date-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-picker/date-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/time-picker/time-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/time-picker/time-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.module.ts","../../../projects/ngx-formentry/src/form-entry/question-models/select-option.ts","../../../projects/ngx-formentry/src/components/afe-ng-select.component.ts","../../../projects/ngx-formentry/src/form-entry/services/form-schema-compiler.service.ts","../../../projects/ngx-formentry/src/form-entry/question-models/text-input-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/text-area-input-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/ui-select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/date-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/multi-select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/interfaces/nested-questions.ts","../../../projects/ngx-formentry/src/form-entry/question-models/group-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/repeating-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/checkbox.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/radio-button.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/file-upload-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/test-order-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/date-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/max-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/min-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/data-sources/dummy-data-source.ts","../../../projects/ngx-formentry/src/form-entry/services/historical-encounter-data.service.ts","../../../projects/ngx-formentry/src/form-entry/helpers/historical-expression-helper-service.ts","../../../projects/ngx-formentry/src/form-entry/question-models/diagnosis-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/max-length-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/min-length-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/pair.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/rendering-type.ts","../../../projects/ngx-formentry/src/form-entry/question-models/workspace-launcher.model.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/question.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form.factory.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/obs-adapter-helper.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/obs.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/order.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/diagnosis.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/encounter.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/person-attribute.adapter.ts","../../../projects/ngx-formentry/src/components/ngx-remote-select/ngx-remote-select.module.ts","../../../projects/ngx-formentry/src/components/check-box/checkbox.module.ts","../../../projects/ngx-formentry/src/components/radio-button/radio.module.ts","../../../projects/ngx-formentry/src/components/workspace-launcher/workspace-launcher.module.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/modules/ngx-tabset.module.ts","../../../projects/ngx-formentry/src/components/select/option.directive.ts","../../../projects/ngx-formentry/src/components/select/optgroup.directive.ts","../../../projects/ngx-formentry/src/components/select/select.module.ts","../../../projects/ngx-formentry/src/components/input/label.component.ts","../../../projects/ngx-formentry/src/components/input/input.module.ts","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper..module.ts","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper..module.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/patient-identifier.adapter.ts","../../../projects/ngx-formentry/src/form-entry/form-entry.module.ts","../../../projects/ngx-formentry/src/components/date-time-picker/index.ts","../../../projects/ngx-formentry/src/lib/index.ts","../../../projects/ngx-formentry/src/openmrs-ngx-formentry.ts"],"sourcesContent":["/*\nThis service checks if the debug mode on ng2-amrs\nhas been enabled by checking cookies.\nIf the debug mode has been enabled then\nit returns true and all fields are displayed\nfor use by testers\n*/\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DebugModeService {\n public cookieKey = 'formDebug';\n\n constructor() {}\n public debugEnabled(): boolean {\n // check if the hidefield\n return false;\n }\n}\n","import {\n Pipe,\n PipeTransform,\n NgZone,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n@Pipe({\n name: 'timeAgo',\n pure: false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n private timer: number;\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone,\n public translate: TranslateService\n ) {}\n transform(value: string) {\n this.removeTimer();\n const d = new Date(value);\n const now = new Date();\n const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));\n const timeToUpdate = Number.isNaN(seconds)\n ? 1000\n : this.getSecondsUntilUpdate(seconds) * 1000;\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck());\n }, timeToUpdate);\n }\n return null;\n });\n const minutes = Math.round(Math.abs(seconds / 60));\n const hours = Math.round(Math.abs(minutes / 60));\n const days = Math.round(Math.abs(hours / 24));\n const months = Math.round(Math.abs(days / 30.416));\n const years = Math.round(Math.abs(days / 365));\n if (Number.isNaN(seconds)) {\n return '';\n } else if (seconds <= 45) {\n return this.translate.instant('aMinuteAgo');\n } else if (seconds <= 90) {\n return this.translate.instant('minutesAgo');\n } else if (minutes <= 45) {\n return minutes + ' ' + this.translate.instant('minutesAgo');\n } else if (minutes <= 90) {\n return this.translate.instant('anHourAgo');\n } else if (hours <= 22) {\n return hours + ' ' + this.translate.instant('hoursAgo');\n } else if (hours <= 36) {\n return this.translate.instant('aDayAgo');\n } else if (days <= 25) {\n return days + ' ' + this.translate.instant('daysAgo');\n } else if (days <= 45) {\n return this.translate.instant('aMonthAgo');\n } else if (days <= 345) {\n return months + ' ' + this.translate.instant('monthsAgo');\n } else if (days <= 545) {\n return this.translate.instant('aYearAgo');\n } else {\n // (days > 545)\n return years + ' ' + this.translate.instant('yearsAgo');\n }\n }\n ngOnDestroy(): void {\n this.removeTimer();\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n private getSecondsUntilUpdate(seconds: number) {\n const min = 60;\n const hr = min * 60;\n const day = hr * 24;\n if (seconds < min) {\n // less than 1 min, update every 2 secs\n return 2;\n } else if (seconds < hr) {\n // less than an hour, update every 30 secs\n return 30;\n } else if (seconds < day) {\n // less then a day, update every 5 mins\n return 300;\n } else {\n // update every hour\n return 3600;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { AfeFormControl } from '../../public_api';\nimport { AfeFormArray, AfeFormGroup } from '../../abstract-controls-extension';\n\n@Injectable()\nexport class FormErrorsService {\n // Observable string sources\n public static control: AfeFormControl | AfeFormArray | AfeFormGroup = null;\n public static tab: number = null;\n public announceErrorFieldSource = new Subject<string>();\n public announceErrorField$: Observable<\n any\n > = this.announceErrorFieldSource.asObservable();\n public announceErrorField(error: string) {\n this.announceErrorFieldSource.next(error);\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\n// import { CanHide } from '../form-entry/control-hiders-disablers/can-hide';\n// import { CanDisable } from '../form-entry/control-hiders-disablers/can-disable';\n\nexport class ControlRelation {\n private _control: AbstractControl;\n private _relatedTo: AbstractControl;\n private _lastUpdateValue: any;\n\n constructor(control: AbstractControl, relatedTo: AbstractControl) {\n this._control = control;\n this._relatedTo = relatedTo;\n this._registerForChangesFromRelatedControl();\n }\n\n get control(): AbstractControl {\n return this._control;\n }\n\n get relatedTo(): AbstractControl {\n return this._relatedTo;\n }\n\n get lastUpdateValue(): any {\n return this._lastUpdateValue;\n }\n\n updateControlBasedOnRelation(newValue: any): boolean {\n if (newValue !== this._lastUpdateValue) {\n this._lastUpdateValue = newValue;\n\n if ((this._control as any).updateCalculatedValue) {\n (this._control as any).updateCalculatedValue();\n }\n\n this._control.updateValueAndValidity();\n if ((this._control as any).updateHiddenState) {\n (this._control as any).updateHiddenState();\n }\n\n if ((this._control as any).updateDisabledState) {\n (this._control as any).updateDisabledState();\n }\n\n if ((this._control as any).updateAlert) {\n (this._control as any).updateAlert();\n }\n return true;\n }\n return false;\n }\n\n private _registerForChangesFromRelatedControl() {\n this._relatedTo.valueChanges.subscribe((value) => {\n this.updateControlBasedOnRelation(value);\n });\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nimport { ControlRelation } from './control-relation';\n\nexport class ControlRelations {\n private _relationFor: AbstractControl;\n private _relations: ControlRelation[];\n private _otherRelations: any = [];\n\n constructor(\n relationFor: AbstractControl,\n relatedTo?: AbstractControl | AbstractControl[]\n ) {\n this._relationFor = relationFor;\n this._relations = [];\n\n if (relatedTo) {\n this.addRelatedControls(relatedTo);\n }\n }\n\n get relationsFor(): AbstractControl {\n return this._relationFor;\n }\n\n get relations(): ControlRelation[] {\n return this._relations;\n }\n\n get otherRelations() {\n return this._otherRelations;\n }\n\n addRelatedControls(relatedTo: AbstractControl | AbstractControl[]) {\n if (relatedTo instanceof AbstractControl) {\n this.relations.push(new ControlRelation(this._relationFor, relatedTo));\n }\n\n if (relatedTo instanceof Array) {\n for (let i = 0; i < relatedTo.length; i++) {\n this.relations.push(\n new ControlRelation(this._relationFor, relatedTo[i])\n );\n }\n }\n }\n}\n","import { CanHide, Hider } from './can-hide';\nexport class HiderHelper {\n public hideControl(control: CanHide) {\n control.hidden = true;\n if (control.disable) {\n control.disable();\n }\n }\n\n public showControl(control: CanHide) {\n control.hidden = false;\n }\n\n public setHiderForControl(control: CanHide, hider: Hider) {\n control.hiders.push(hider);\n }\n\n public clearHidersForControl(control: CanHide) {\n control.hiders.splice(0);\n control.hidden = false;\n }\n\n public evaluateControlHiders(control: CanHide) {\n let hiddenValue = false;\n control.hiders.forEach((hider) => {\n hider.reEvaluateHidingExpression();\n if (hider.toHide === true) {\n hiddenValue = true;\n }\n });\n\n control.hidden = hiddenValue;\n if (control.hidden && control.disable) {\n control.disable();\n // control.setValue(null);\n }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanHide) {\n if (control.updateHiddenState) {\n control.valueChanges.subscribe((val) => {\n control.updateHiddenState();\n });\n }\n }\n}\n","import { CanGenerateAlert, Alert } from './can-generate-alert';\nexport class AlertHelper {\n public hideAlert(control: Alert) {\n control.shown = false;\n }\n\n public showAlert(control: Alert) {\n control.shown = true;\n }\n\n public setAlertsForControl(control: CanGenerateAlert, alert: Alert) {\n control.alerts.push(alert);\n }\n\n public clearAlertsForControl(control: CanGenerateAlert) {\n control.alerts.splice(0);\n control.alert = '';\n }\n\n public evaluateControlAlerts(control: CanGenerateAlert) {\n let messageValue = '';\n control.alerts.forEach((message) => {\n message.reEvaluateAlertExpression();\n if (message.shown === true) {\n messageValue = message.alertMessage;\n } else {\n messageValue = '';\n }\n });\n\n control.alert = messageValue;\n // if (control.message && control.disable) {\n // control.disable();\n // // control.setValue(null);\n // }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanGenerateAlert) {\n if (control.updateAlert) {\n control.valueChanges.subscribe((val) => {\n control.updateAlert();\n });\n }\n }\n}\n","import { CanDisable, Disabler } from './can-disable';\nexport class DisablerHelper {\n public setDisablerForControl(control: CanDisable, disabler: Disabler) {\n control.disablers.push(disabler);\n }\n\n public clearDisablersForControl(control: CanDisable) {\n control.disablers.splice(0);\n control.disable();\n }\n\n public evaluateControlDisablers(control: CanDisable) {\n let toDisable = false;\n control.disablers.forEach((hider) => {\n hider.reEvaluateDisablingExpression();\n if (hider.toDisable === true) {\n toDisable = true;\n }\n });\n\n if (toDisable) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanDisable) {\n if (control.updateDisabledState) {\n control.valueChanges.subscribe((val) => {\n control.updateDisabledState();\n });\n }\n }\n}\n","import { FormFactory } from './form.factory';\nimport { Form } from './form';\n\n// import { AfeControlType, AfeFormArray, AfeFormGroup, AfeFormControl } from '../../abstract-controls-extension';\nimport { QuestionBase, RepeatingQuestion } from '../question-models/models';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { TranslateService } from '@ngx-translate/core';\nexport interface ChildNodeCreatedListener {\n addChildNodeCreatedListener(func: any);\n\n fireChildNodeCreatedListener(node: GroupNode);\n}\n\nexport type CreateArrayChildNodeFunction = (\n question: RepeatingQuestion,\n node: ArrayNode,\n factory?: FormFactory,\n position?: number\n) => GroupNode;\n\nexport interface RemoveArrayChildNodeFunction {\n (index: number, node: ArrayNode);\n}\n\nexport abstract class NodeBase {\n public abstract children?: any;\n public nodeIndex?: Number;\n private _control: AfeFormControl | AfeFormArray | AfeFormGroup;\n private _questionModel: QuestionBase;\n private _form: Form;\n private _path: string;\n\n public initialValue: any;\n\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n this._control = control;\n this._questionModel = question;\n this._form = form;\n this._path = parentPath ? parentPath + '.' + question.key : question.key;\n }\n\n public get question(): QuestionBase {\n return this._questionModel;\n }\n\n public get control(): AfeFormControl | AfeFormArray | AfeFormGroup {\n return this._control;\n }\n\n public get form(): Form {\n return this._form;\n }\n\n public get path(): string {\n return this._path;\n }\n removeAt(index: number) {}\n\n createChildNode() {}\n removeChildNode() {}\n}\n\nexport class LeafNode extends NodeBase {\n get children() {\n return null;\n }\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n }\n}\n\nexport class GroupNode extends NodeBase {\n private _children: any;\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n this._children = {};\n }\n\n public get children(): any {\n return this._children;\n }\n\n public setChild(key: string, node: NodeBase) {\n this.children[key] = node;\n }\n}\n\nexport class ArrayNode extends NodeBase implements ChildNodeCreatedListener {\n private childNodeCreatedEvents: any[] = [];\n private _children: GroupNode[];\n public createChildFunc: CreateArrayChildNodeFunction;\n public removeChildFunc: RemoveArrayChildNodeFunction;\n\n constructor(\n question: QuestionBase,\n public translate: TranslateService,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n private formFactory?: FormFactory,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n this._children = [];\n this.childNodeCreatedEvents = [];\n }\n\n public get children(): GroupNode[] {\n return this._children;\n }\n\n public createChildNode(): GroupNode {\n if (this.children.length >= this.question.extras.questionOptions.max) {\n confirm(\n this.translate\n .instant('maxEntries')\n .replace('{max}', this.question.extras.questionOptions.max)\n );\n return;\n }\n if (this.createChildFunc) {\n const g: GroupNode = this.createChildFunc(\n this.question as RepeatingQuestion,\n this,\n this.formFactory\n );\n this.fireChildNodeCreatedListener(g);\n return g;\n }\n return null;\n }\n\n public removeAt(index: number) {\n if (this.children.length <= this.question.extras.questionOptions.min) {\n const clearPrompt = confirm(this.translate.instant('clearEntry'));\n if (clearPrompt && this.removeChildFunc && this.createChildNode) {\n this.removeChildFunc(index, this);\n\n const g: GroupNode = this.createChildFunc(\n this.question as RepeatingQuestion,\n this,\n this.formFactory,\n index\n );\n this.fireChildNodeCreatedListener(g);\n return g;\n }\n } else {\n const removePrompt = confirm(this.translate.instant('deleteEntry'));\n if (removePrompt) {\n if (this.removeChildFunc) {\n this.removeChildFunc(index, this);\n }\n }\n }\n }\n\n addChildNodeCreatedListener(func: any) {\n this.childNodeCreatedEvents.push(func);\n }\n\n fireChildNodeCreatedListener(node: GroupNode) {\n for (let i = 0; i < this.childNodeCreatedEvents.length; i++) {\n const func: any = this.childNodeCreatedEvents[i];\n func(node);\n }\n }\n}\n","export class ValidationModel {\n type: string;\n\n message: string;\n\n constructor(validations: any) {\n this.type = validations.type;\n this.message = validations.message || null;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class JsExpressionValidationModel extends ValidationModel {\n failsWhenExpression: string;\n\n constructor(validations: any) {\n super(validations);\n this.failsWhenExpression = validations.failsWhenExpression;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class ConditionalValidationModel extends ValidationModel {\n referenceQuestionId: string;\n referenceQuestionAnswers: any;\n\n constructor(validations: any) {\n super(validations);\n this.referenceQuestionId = validations.referenceQuestionId;\n this.referenceQuestionAnswers = validations.referenceQuestionAnswers;\n }\n}\n","import { Injectable } from '@angular/core';\n\n// import { ControlRelation } from '../../change-tracking/control-relation';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { NodeBase, GroupNode, LeafNode, ArrayNode } from './form-node';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { AfeFormArray } from '../../abstract-controls-extension/afe-form-array';\nimport { Form } from './form';\n\n@Injectable()\nexport class ControlRelationsFactory {\n constructor() {}\n\n buildRelations(rootNode: GroupNode) {\n const controlsStore: any = this.mapControlIds(rootNode, {});\n\n for (const key in controlsStore) {\n if (controlsStore.hasOwnProperty(key)) {\n const nodeBase: NodeBase = controlsStore[key];\n\n this.setRelations(controlsStore, nodeBase);\n }\n }\n }\n\n buildArrayNodeRelations(node: GroupNode) {\n const form: Form = node.form;\n\n if (!form) {\n return;\n }\n const rootNode: GroupNode = form.rootNode;\n\n // build relations for controls in the same array\n this.buildRelations(node);\n\n // build relations for control outside the array\n const rootControlsStore: any = this.mapControlIds(rootNode, {});\n const arrayControlStore: any = this.mapControlIds(node, {});\n\n for (const key in rootControlsStore) {\n if (rootControlsStore.hasOwnProperty(key)) {\n const child: NodeBase = rootControlsStore[key];\n\n if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n this.setRelations(arrayControlStore, child);\n }\n }\n }\n }\n\n // define relations for controls outside the group to controls in this group\n this.createRelationsToArrayControls(node);\n\n // fire relations\n for (const id in arrayControlStore) {\n if (arrayControlStore.hasOwnProperty(id)) {\n const child: NodeBase = arrayControlStore[id];\n const control: AfeFormControl | AfeFormArray = child.control as\n | AfeFormControl\n | AfeFormArray;\n control.updateHiddenState();\n control.updateAlert();\n }\n }\n }\n\n createRelationsToArrayControls(node: GroupNode) {\n const form: Form = node.form;\n\n const rootNode: GroupNode = form.rootNode;\n\n // build relations for control outside the array\n const rootControlsStore: any = this.mapControlIds(rootNode, {});\n const arrayControlStore: any = this.mapControlIds(node, {});\n\n // loop through form controls\n for (const key in rootControlsStore) {\n if (rootControlsStore.hasOwnProperty(key)) {\n const rChild: NodeBase = rootControlsStore[key];\n\n const parentNodePath = node.path.substring(\n 0,\n node.path.lastIndexOf('.')\n );\n\n if (rChild.path.indexOf(parentNodePath + '.') === -1) {\n // loop through controls in the array group\n for (const id in arrayControlStore) {\n if (arrayControlStore.hasOwnProperty(id)) {\n const aChild: NodeBase = arrayControlStore[id];\n const aChildId = aChild.question.key;\n if (this.hasRelation(aChildId, rChild.question)) {\n const nodes: Array<NodeBase> = node.form.searchNodeByPath(\n rootNode,\n parentNodePath,\n []\n );\n if (nodes.length > 0) {\n const an = nodes[0] as ArrayNode;\n const rootControl = rChild.control as\n | AfeFormControl\n | AfeFormArray;\n\n if (\n rootControl.controlRelations.otherRelations.indexOf(an) ===\n -1\n ) {\n rootControl.controlRelations.otherRelations.push(an);\n }\n\n (aChild.control as\n | AfeFormControl\n | AfeFormArray).addValueChangeListener((value) => {\n if ((rootControl as any).updateCalculatedValue) {\n (rootControl as any).updateCalculatedValue();\n }\n\n rootControl.updateValueAndValidity();\n if ((rootControl as any).updateHiddenState) {\n (rootControl as any).updateHiddenState();\n }\n\n if ((rootControl as any).updateAlert) {\n (rootControl as any).updateAlert();\n }\n\n if ((rootControl as any).updateDisabledState) {\n (rootControl as any).updateDisabledState();\n }\n });\n }\n }\n }\n }\n }\n }\n }\n }\n\n getRelationsForControl(\n id,\n node: GroupNode\n ): Array<AfeFormControl | AfeFormArray> {\n const relations: Array<AfeFormControl | AfeFormArray> = new Array<\n AfeFormControl | AfeFormArray\n >();\n\n const nodeBaseArray: Array<NodeBase> = node.form.searchNodeByQuestionId(id);\n\n if (nodeBaseArray.length > 0) {\n const nodeBase: NodeBase = nodeBaseArray[0];\n\n const controlList: any = this.mapControlIds(node, {});\n\n for (const key in controlList) {\n if (controlList.hasOwnProperty(key)) {\n if (\n this.hasRelation(controlList[key].question.key, nodeBase.question)\n ) {\n relations.push(controlList[key].control);\n }\n }\n }\n }\n return relations;\n }\n\n mapControlIds(node: GroupNode, controlsStore: any) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n this.mapControlIds(child, controlsStore);\n } else if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n controlsStore[questionBase.key] = child;\n }\n } else if (child instanceof ArrayNode) {\n const questionBase: QuestionBase = (child as ArrayNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n controlsStore[questionBase.key] = child;\n }\n }\n }\n }\n\n return controlsStore;\n }\n\n setRelations(controlsStore: any, nodeBase: NodeBase) {\n const questionBase: QuestionBase = nodeBase.question;\n\n const id = questionBase.key;\n\n for (const key in controlsStore) {\n if (controlsStore.hasOwnProperty(key) && key !== id) {\n const node: NodeBase = controlsStore[key];\n const question: QuestionBase = node.question;\n\n if (this.hasRelation(id, question, nodeBase)) {\n this.addRelationToControl(\n node.control as AfeFormControl | AfeFormArray,\n nodeBase.control as AfeFormControl | AfeFormArray\n );\n }\n\n // add conditional required and conditional answered relations\n if (typeof question.required === 'object') {\n const required: any = question.required;\n\n if (required.type === 'conditionalRequired') {\n if (required.referenceQuestionId === id) {\n this.addRelationToControl(\n node.control as AfeFormControl | AfeFormArray,\n nodeBase.control as AfeFormControl | AfeFormArray\n );\n }\n }\n }\n }\n }\n }\n\n hasRelation(id: string, questionBase: QuestionBase, nodeBase?: NodeBase) {\n let hasRelation = false;\n\n if (questionBase.validators && questionBase.validators.length > 0) {\n questionBase.validators.forEach((element) => {\n if (element instanceof JsExpressionValidationModel) {\n const model: JsExpressionValidationModel = element as JsExpressionValidationModel;\n\n const failsWhenExpression: string = model.failsWhenExpression;\n if (failsWhenExpression && failsWhenExpression.indexOf(id) !== -1) {\n hasRelation = true;\n }\n } else if (\n element instanceof ConditionalValidationModel &&\n element.type === 'conditionalAnswered' &&\n element.referenceQuestionId === id\n ) {\n hasRelation = true;\n }\n });\n }\n\n // add hiders and disablers relations\n if (!hasRelation) {\n if (typeof questionBase.hide === 'string') {\n const hide: string = questionBase.hide as string;\n\n if (hide.length > 0 && hide.indexOf(id) !== -1) {\n hasRelation = true;\n }\n } else if (typeof questionBase.hide === 'object') {\n const hideObj: any = questionBase.hide;\n\n if (hideObj.field === id) {\n hasRelation = true;\n }\n }\n\n if (questionBase.alert && typeof questionBase.alert === 'object') {\n hasRelation = true;\n }\n\n if (typeof questionBase.disable === 'string') {\n const disable: string = questionBase.disable as string;\n\n if (disable.length > 0 && disable.indexOf(id) !== -1) {\n hasRelation = true;\n }\n }\n }\n\n // add calculate expressions relations\n if (\n !hasRelation &&\n questionBase.calculateExpression &&\n questionBase.calculateExpression.length > 0 &&\n questionBase.calculateExpression.indexOf(id) !== -1\n ) {\n hasRelation = true;\n }\n\n return hasRelation;\n }\n\n addRelationToControl(\n control: AfeFormControl | AfeFormArray,\n related: AfeFormControl | AfeFormArray\n ) {\n // let relations = control.controlRelations.relations;\n //\n // let hasRelation = false;\n //\n // relations.forEach(element => {\n //\n // let controlRelation: ControlRelation = element as ControlRelation;\n //\n // let relation: AfeFormControl | AfeFormArray = controlRelation.control as AfeFormControl | AfeFormArray;\n //\n // if ( control.uuid !== undefined && control.uuid === relation.uuid ) {\n // hasRelation = true;\n // }\n // });\n\n // if ( !hasRelation ) {\n control.controlRelations.addRelatedControls(related);\n // }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension/control-extensions';\nimport { ArrayNode } from '../form-factory/form-node';\nimport { ControlRelationsFactory } from '../form-factory/control-relations.factory';\nimport { Form } from '../form-factory/form';\nimport moment from 'moment';\n@Injectable()\nexport class ExpressionRunner {\n getRunnable(\n expression: string,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n helper: any,\n dataDependencies: any,\n form?: Form\n ): Runnable {\n const runner = this;\n const runnable: Runnable = {\n run: () => {\n let scope: any = {};\n if (control.uuid) {\n scope[control.uuid] = control.value;\n }\n window['moment'] = moment;\n // scope.moment = moment;\n scope['myValue'] = control.value;\n scope['FORM'] = {};\n runner.setControlQuestion(control, form, scope);\n runner.getControlRelationValueString(control, scope);\n runner.getHelperMethods(helper, scope);\n runner.getDataDependencies(dataDependencies, scope);\n if (form) {\n // console.error('Form defined', form);\n runner.getDataDependencies(\n form.dataSourcesContainer.dataSources,\n scope\n );\n }\n\n let paramList = '';\n let argList = '';\n for (let o in scope) {\n paramList = paramList === '' ? paramList + o : paramList + ',' + o;\n argList =\n argList === ''\n ? argList + \"scope['\" + o + \"']\"\n : argList + \",scope['\" + o + \"']\";\n }\n\n // prevent more than one return statements\n if (expression.indexOf('return') === -1) {\n expression = 'return ' + expression;\n }\n\n try {\n const afeDynamicFunc = new Function(paramList, expression);\n scope[Symbol.iterator] = function* () {\n var k;\n for (k in this) {\n yield this[k];\n }\n };\n if (Object.keys(scope).indexOf('undefined') >= 0) {\n console.warn('Missing reference found', expression, scope);\n return false;\n }\n return afeDynamicFunc.call(this, ...scope);\n } catch (error) {\n // if (window['error_count']) {\n // window['error_count'] = window['error_count'] + 1;\n // } else {\n // window['error_count'] = 1;\n // }\n // console.error(window['error_count'] + ' Error running expression:' + expression + '. ',\n // e, control, 'Effective Expression', (funcDeclarationCode + funcCallCode));\n // console.error('Error running expression:' + expression + '. ',\n // e, control, 'Effective Expression', (funcDeclarationCode + funcCallCode));\n\n // Uncomment the line above during debugging\n // console.error(`Error running expression: ${expression} scope: ${scope} error: ${error}`);\n\n return false;\n }\n /* eslint-enable */\n }\n };\n return runnable;\n }\n\n private getControlRelationValueString(\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n scope: any\n ) {\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n if (relation.relatedTo) {\n const related = relation.relatedTo as any;\n const relatedAsControl = relation.relatedTo as AbstractControl;\n if (relatedAsControl && Array.isArray(relatedAsControl.value)) {\n scope[related.uuid] = relation.relatedTo.value;\n } else {\n scope[related.uuid] =\n relation.relatedTo.value && relation.relatedTo.value.value\n ? relation.relatedTo.value.value\n : relation.relatedTo.value;\n }\n }\n });\n }\n\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.otherRelations &&\n control.controlRelations.otherRelations.length > 0\n ) {\n control.controlRelations.otherRelations.forEach((node) => {\n if (node instanceof ArrayNode) {\n const arrayNode: ArrayNode = node as ArrayNode;\n const uuid = control.uuid;\n\n const controlRelationsFactory: ControlRelationsFactory = new ControlRelationsFactory();\n let relationsForControl: Array<AfeFormControl | AfeFormArray> = [];\n // get all related controls\n arrayNode.children.forEach((child) => {\n relationsForControl = relationsForControl.concat(\n controlRelationsFactory.getRelationsForControl(uuid, child)\n );\n });\n\n this.setControlArrayValues(\n control as AfeFormControl | AfeFormArray,\n relationsForControl,\n scope\n );\n }\n });\n }\n }\n\n private setControlQuestion(\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form: Form,\n scope: any\n ) {\n if (\n form &&\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const related = relation.relatedTo as any;\n const question = form.searchNodeByQuestionId(related.uuid)[0]?.question\n ?.extras;\n scope['FORM'][related.uuid] = question;\n });\n }\n }\n\n private setControlArrayValues(\n control: AfeFormControl | AfeFormArray,\n relationsForControl: Array<AfeFormControl | AfeFormArray>,\n scope: any\n ) {\n const keys: Array<string> = this._getFormControlKeys(relationsForControl);\n\n keys.forEach((key) => {\n const values: any = this._getValuesForKey(key, relationsForControl);\n scope[key] = values;\n });\n }\n\n private _getFormControlKeys(\n array: Array<AfeFormControl | AfeFormArray>\n ): Array<string> {\n const keys: Array<string> = [];\n array.forEach((control) => {\n if (keys.indexOf(control.uuid) === -1) {\n keys.push(control.uuid);\n }\n });\n\n return keys;\n }\n\n private _getValuesForKey(\n key: string,\n array: Array<AfeFormControl | AfeFormArray>\n ): any {\n const values: any = [];\n\n array.forEach((control) => {\n if (control.uuid === key) {\n values.push(control.value);\n }\n });\n\n return values;\n }\n\n private getHelperMethods(obj: any, scope?: any) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n scope[key] = obj[key];\n }\n }\n }\n\n private getDataDependencies(obj: any, scope?: any) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n scope[key] = obj[key];\n }\n }\n }\n}\n\nexport interface Runnable {\n run();\n}\n","import {\n UntypedFormControl,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControlOptions\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\nimport { ValueChangeListener } from './value-change.listener';\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\nimport { CanCalculate } from '../form-entry/control-calculators/can-calculate';\nimport { ExpressionRunner } from '../form-entry/expression-runner/expression-runner';\n\nclass AfeFormControl\n extends UntypedFormControl\n implements\n CanHide,\n CanDisable,\n CanCalculate,\n CanGenerateAlert,\n ValueChangeListener {\n private _controlRelations: ControlRelations;\n private _valueChangeListener: any;\n private _previousValue;\n public uuid: string;\n public pathFromRoot: string;\n\n hidden = false;\n hiders: Hider[];\n alert: string;\n alerts: Alert[];\n calculator: Function;\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n constructor(\n formState?: any,\n validator?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(formState, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.disablers = [];\n this.alerts = [];\n\n this.valueChanges.subscribe((value) => {\n if (this._previousValue !== value) {\n this.fireValueChangeListener(value);\n this._previousValue = value;\n }\n });\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue('');\n }\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n setCalculatorFn(newCalculator: Function) {\n this.calculator = newCalculator;\n }\n\n updateCalculatedValue() {\n if (this.calculator) {\n const _val = this.calculator.call(ExpressionRunner, {});\n this.setValue(_val);\n }\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n\n addValueChangeListener(func: any) {\n this._valueChangeListener = func;\n }\n\n fireValueChangeListener(value: any) {\n if (\n this._valueChangeListener &&\n typeof this._valueChangeListener === 'function'\n ) {\n this._valueChangeListener(value);\n }\n this.alerts.length > 0 && this.updateAlert();\n }\n\n setValue(value: any) {\n super.setValue(value);\n }\n}\nexport { AfeFormControl };\n","import {\n UntypedFormGroup,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControl\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\n\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\n\nexport class AfeFormGroup\n extends UntypedFormGroup\n implements CanHide, CanDisable, CanGenerateAlert {\n private _controlRelations: ControlRelations;\n\n public uuid: string;\n public pathFromRoot: string;\n\n hidden: false;\n hiders: Hider[];\n alert: string;\n alerts: Alert[];\n\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n\n constructor(\n controls: { [key: string]: AbstractControl },\n validator?: ValidatorFn,\n asyncValidator?: AsyncValidatorFn\n ) {\n super(controls, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.disablers = [];\n this.alerts = [];\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue({});\n }\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n setValue(value: any) {\n super.setValue(value);\n if (this.alerts.length > 0) {\n this.updateAlert();\n }\n }\n}\n","import {\n UntypedFormArray,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControl\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\nimport { ValueChangeListener } from './value-change.listener';\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\n\nexport class AfeFormArray\n extends UntypedFormArray\n implements CanHide, CanDisable, CanGenerateAlert, ValueChangeListener {\n private _controlRelations: ControlRelations;\n private _valueChangeListener: any;\n private _previousValue;\n private _uuid: string;\n public pathFromRoot: string;\n\n hidden: false;\n hiders: Hider[];\n\n alert: string;\n alerts: Alert[];\n\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n\n constructor(\n controls: AbstractControl[],\n validator?: ValidatorFn,\n asyncValidator?: AsyncValidatorFn\n ) {\n super(controls, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.alerts = [];\n this.disablers = [];\n\n this.valueChanges.subscribe((value) => {\n if (this._previousValue !== value) {\n this.fireValueChangeListener(value);\n this._previousValue = value;\n }\n });\n }\n\n get uuid(): string {\n return this._uuid;\n }\n set uuid(val: string) {\n this._uuid = val;\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue([]);\n }\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n\n addValueChangeListener(func: any) {\n this._valueChangeListener = func;\n }\n\n fireValueChangeListener(value: any) {\n if (this.alerts.length > 0) {\n this.updateAlert();\n }\n if (\n this._valueChangeListener &&\n typeof this._valueChangeListener === 'function'\n ) {\n this._valueChangeListener(value);\n }\n }\n\n setValue(value: any) {\n super.setValue(value);\n }\n}\n","export enum AfeControlType {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup,\n None\n}\n","import { BaseOptions } from './interfaces/base-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { ValidationModel } from './validation.model';\n\nexport class QuestionBase implements BaseOptions {\n type: string;\n order?: number;\n questionOptions?: any;\n questions?: any;\n placeholder?: any;\n hidden?: any;\n showTime?: any;\n showWeek?: any;\n historicalDisplay?: any;\n rows?: any;\n showWeeksAdder?: any;\n datePickerFormat: string;\n key: string;\n alert?: any;\n\n label?: string;\n prefix?: string;\n renderingType: string;\n\n orientation?: string;\n defaultValue?: any;\n originalValue?: any;\n enableHistoricalValue?: boolean;\n showHistoricalValueDate?: boolean;\n historicalDataValue?: any;\n extras?: any;\n dataSource?: string;\n dataSourceOptions?: any;\n\n controlType?: AfeControlType;\n validators?: Array<ValidationModel>;\n required?: boolean;\n hide?: string | boolean;\n resetValueOnDisable?: boolean;\n disable?: string | boolean;\n readOnly?: string | boolean;\n calculateExpression?: string;\n componentConfigs: Array<any>;\n options?: any;\n questionIndex?: Number;\n\n allowUnselect?: boolean;\n\n constructor(options: BaseOptions) {\n this.defaultValue = options.defaultValue;\n this.originalValue = options.originalValue;\n this.extras = options.extras;\n this.renderingType = options.type;\n this.key = options.key || '';\n this.label = options.label || '';\n this.validators = options.validators || [];\n this.required = options.required;\n this.hide = options.hide;\n this.disable = options.disable;\n this.readOnly = options.readOnly;\n this.alert = options.alert;\n this.historicalDataValue = options.historicalDataValue;\n this.calculateExpression = options.calculateExpression;\n this.allowUnselect = options.allowUnselect;\n }\n\n setHistoricalValue(v: boolean) {\n this.enableHistoricalValue = v;\n }\n showHistoricalEncounterDate(v?: boolean) {\n this.showHistoricalValueDate = v === undefined ? true : v;\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\n\nexport class ConditionalRequiredValidator {\n constructor() {}\n\n validate(model: ConditionalValidationModel) {\n // convert helper functions to string\n return (control: AfeFormControl): { [key: string]: any } => {\n const value = control.value;\n let relationValue = null;\n const referenceQuestionId: string = model.referenceQuestionId;\n const referenceQuestionAnswers: any = model.referenceQuestionAnswers;\n let isRequired: boolean;\n\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const relatedAsControl = relation.relatedTo as any;\n if (relatedAsControl.uuid === referenceQuestionId) {\n if (relatedAsControl && Array.isArray(relatedAsControl.value)) {\n relationValue = relation.relatedTo.value;\n } else {\n relationValue =\n relation.relatedTo.value && relation.relatedTo.value.value\n ? relation.relatedTo.value.value\n : relation.relatedTo.value;\n }\n }\n });\n }\n\n if (\n typeof referenceQuestionAnswers === 'object' &&\n referenceQuestionAnswers.indexOf(relationValue) !== -1\n ) {\n isRequired = true;\n }\n\n if (isRequired && !value) {\n return { conditional_required: { message: model.message } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\n\nexport class ConditionalAnsweredValidator {\n constructor() {}\n\n validate(model: ConditionalValidationModel) {\n return (control: AfeFormControl): { [key: string]: any } => {\n const value = control.value;\n let relationValue = null;\n const referenceQuestionId: string = model.referenceQuestionId;\n const referenceQuestionAnswers: any = model.referenceQuestionAnswers;\n let successCondition: any = true;\n\n if (value) {\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const relatedAsControl = relation.relatedTo as any;\n if (relatedAsControl.uuid === referenceQuestionId) {\n if (Array.isArray(relatedAsControl.value)) {\n relationValue = relatedAsControl.value;\n } else {\n relationValue =\n relatedAsControl.value &&\n typeof relatedAsControl.value === 'object' &&\n relatedAsControl.value.value\n ? relatedAsControl.value.value\n : relatedAsControl.value;\n }\n }\n\n if (!relationValue) {\n successCondition = false;\n } else if (\n typeof referenceQuestionAnswers === 'object' &&\n referenceQuestionAnswers.indexOf(relationValue) === -1\n ) {\n successCondition = false;\n }\n });\n }\n }\n\n if (!successCondition) {\n return { conditional_answered: { message: model.message } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class RequiredValidator {\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value: any = control.value;\n const isEmpty: boolean =\n value == null || (typeof value === 'string' && value.length === 0);\n\n return isEmpty ? { required: true } : null;\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class DateValidator {\n constructor() {}\n\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value = control.value;\n\n if (value && value.length !== 0) {\n // YYYY-MM-DD or DD-MM-YYYY\n const test: boolean = !/Invalid|NaN/.test(new Date(value).toString());\n\n return test ? null : { date: true };\n } else {\n return null;\n }\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MinValidator {\n validate(min: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n // Case 1: control.value is a number\n // all the numbers should be passed for validation\n // Case 2: control.value is not a number:\n // if its empty string or null or undefined it will return false else it will pass through for validation\n if (typeof control.value === 'number' || control.value) {\n const v: number = control.value;\n return v >= min\n ? null\n : { min: { requiredValue: min, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MaxValidator {\n validate(max: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n // Case 1: control.value is a number\n // all the numbers should be passed for validation\n // Case 2: control.value is not a number:\n // if its empty string or null or undefined it will return false else it will pass through for validation\n if (typeof control.value === 'number' || control.value) {\n const v: number = control.value;\n return v <= max\n ? null\n : { max: { requiredValue: max, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class MinDateValidator {\n validate(min: Date) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n if (!new DateValidator().validate(control.value)) {\n const newDate: Date = new Date(control.value);\n\n return newDate.getTime() < min.getTime()\n ? { mindate: { requiredDate: min, actualDate: newDate } }\n : null;\n } else {\n return { mindate: { requiredDate: min } };\n }\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class MaxDateValidator {\n validate(max: Date) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n if (!new DateValidator().validate(control.value)) {\n const newDate: Date = new Date(control.value);\n\n return newDate.getTime() > max.getTime()\n ? { maxdate: { requiredDate: max, actualDate: newDate } }\n : null;\n } else {\n return { maxdate: { requiredDate: max } };\n }\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class FutureDateRestrictionValidator {\n constructor() {}\n\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value = control.value;\n const now: Date = new Date();\n\n if (value && value.length !== 0) {\n if (!new DateValidator().validate(value)) {\n const d: Date = new Date(value);\n\n return d.getTime() > now.getTime()\n ? { futureDateRestriction: true }\n : null;\n }\n }\n\n return null;\n }\n}\n","// South East Asia Non Laboratory CVD Risk Array of Arrays\n\n// Vertically we have the BMI value eg for the first array [26(bmi < 20), 28(bmi 20 - 24), 30(bmi 25 - 29), 32(bmi 30 - 35), 34(bmi >= 35)]\n\nexport const southEastAsiaCvdRiskTables = [\n // Men\n [\n // Non smoker\n [\n // Age 70 - 74\n [\n [26, 28, 30, 32, 34], // SBP ≥180\n [21, 23, 25, 26, 28], // SBP 160-179\n [17, 19, 20, 21, 23], // SBP 140-159\n [14, 15, 16, 17, 18], // SBP 120-139\n [11, 12, 13, 14, 15] // sbp < 120\n ],\n // Age 65 - 69\n [\n [20, 22, 24, 26, 28], // sbp ≥180\n [16, 17, 19, 21, 22], // sbp 160-179\n [12, 14, 15, 16, 18], // sbp 140-159\n [10, 11, 12, 13, 14], // sbp 120-139\n [8, 8, 9, 10, 11] // < 120\n ],\n // Age 60 - 64\n [\n [15, 17, 19, 21, 23], // sbp ≥180\n [12, 13, 14, 16, 18], // sbp 160-179\n [9, 10, 11, 12, 14], // sbp 140-159\n [7, 8, 8, 9, 10], // sbp 120-139\n [5, 6, 6, 7, 8] // sbp < 120\n ],\n // Age 55 - 59\n [\n [12, 13, 15, 16, 18], // sbp ≥180\n [9, 10, 11, 12, 14], // sbp 160-179\n [7, 7, 8, 9, 10], // sbp 140-159\n [5, 5, 6, 7, 8], // sbp 120-139\n [4, 4, 4, 5, 6] // sbp < 120\n ],\n // Age 50 - 54\n [\n [9, 10, 11, 13, 15], // sbp ≥180\n [7, 7, 8, 9, 11], // sbp 160-179\n [5, 5, 6, 7, 8], // sbp 140-159\n [3, 4, 4, 5, 6], // sbp 120-139\n [2, 3, 3, 4, 4] // sbp < 120\n ],\n // Age 45 - 49\n [\n [7, 8, 9, 10, 12], // ≥180\n [5, 6, 6, 7, 8], // 160-179\n [3, 4, 4, 5, 6], // 140-159\n [2, 3, 3, 4, 4], // 120-139\n [2, 2, 2, 2, 3] // < 120\n ],\n // Age 40 - 44\n [\n [5, 6, 7, 8, 10], // ≥180\n [4, 4, 5, 6, 7], // 160-179\n [2, 3, 3, 4, 4], // 140-159\n [2, 2, 2, 3, 3], // 120-139\n [1, 1, 2, 2, 2]\n ]\n ],\n\n // Smoker\n [\n // Age 70 - 74\n [\n [34, 36, 39, 41, 44], // ≥180\n [28, 30, 32, 34, 36], // 160-179\n [23, 24, 26, 28, 30], // 140-159\n [18, 20, 21, 23, 24], // 120-139\n [15, 16, 17, 18, 20] // < 120\n ],\n // Age 65 - 69\n [\n [28, 30, 33, 36, 39], // ≥180\n [22, 24, 26, 29, 31], // 160-179\n [18, 19, 21, 23, 25], // 140-159\n [14, 15, 16, 18, 20], // 120-139\n [11, 12, 13, 14, 16] // < 120\n ],\n // Age 60 - 64\n [\n [23, 25, 28, 31, 34], // ≥180\n [18, 18, 20, 22, 24], // 160-179\n [14, 15, 17, 19, 21], // 140-159\n [10, 12, 13, 14, 16], // 120-139\n [8, 9, 10, 11, 12] // < 120\n ],\n // Age 55 - 59\n [\n [19, 21, 24, 27, 30], // ≥180\n [14, 16, 18, 20, 23], // 160-179\n [11, 12, 13, 15, 17], // 140-159\n [8, 9, 10, 11, 13], // 120-139\n [6, 7, 7, 8, 10]\n ],\n // Age 50 - 54\n [\n [15, 18, 20, 23, 27], // ≥180\n [11, 13, 15, 17, 20], // 160-179\n [8, 9, 11, 12, 14], // 140-159\n [6, 7, 8, 9, 11], // 120-139\n [4, 5, 6, 7, 8]\n ],\n // Age 45 - 49\n [\n [13, 15, 17, 20, 23], // ≥180\n [9, 10, 12, 14, 17], // 160-179\n [6, 7, 9, 10, 12], // 140-159\n [4, 5, 6, 7, 8], // 120-139\n [3, 4, 4, 5, 6]\n ],\n // Age 40 - 44\n [\n [10, 12, 14, 17, 20], // ≥180\n [7, 8, 10, 12, 14], // 160-179\n [5, 6, 7, 8, 10], // 140-159\n [3, 4, 5, 6, 7], // 120-139\n [2, 3, 3, 4, 5]\n ]\n ]\n ],\n\n // Women\n [\n // Non smoker\n [\n // Age 70 -74\n [\n [21, 22, 22, 23, 24], // ≥180\n [17, 18, 19, 19, 20], // 160-179\n [15, 15, 16, 16, 17], // 140-159\n [12, 12, 13, 13, 14], // 120-139\n [10, 10, 11, 11, 11] // < 120\n ],\n // Age 65 - 69\n [\n [16, 17, 18, 18, 19], // ≥180\n [13, 14, 14, 15, 15], // 160-179\n [11, 11, 11, 12, 12], // 140-159\n [9, 9, 9, 10, 10], // 120-139\n [7, 7, 7, 8, 8]\n ],\n // Age 60 - 64\n [\n [13, 13, 14, 14, 15], // ≥180\n [10, 10, 11, 11, 12], // 160-179\n [8, 8, 8, 9, 9], // 140-159\n [6, 6, 7, 7, 7], // 120-139\n [5, 5, 5, 5, 6]\n ],\n // Age 55 - 59\n [\n [10, 10, 11, 11, 12], // ≥180\n [8, 8, 8, 9, 9], // 160-179\n [6, 6, 6, 7, 7], // 140-159\n [4, 5, 5, 5, 5], // 120-139\n [3, 3, 4, 4, 4]\n ],\n // Age 50 - 54\n [\n [8, 8, 8, 9, 9], // ≥180\n [6, 6, 6, 7, 7], // 160-179\n [4, 4, 5, 5, 5], // 140-159\n [3, 3, 3, 4, 4], // 120-139\n [2, 2, 3, 3, 3]\n ],\n // Age 45 - 49\n [\n [6, 6, 7, 7, 7], // ≥180\n [4, 5, 5, 5, 5], // 160-179\n [3, 3, 3, 4, 4], // 140-159\n [2, 2, 2, 3, 3], // 120-139\n [2, 2, 2, 2, 2]\n ],\n // Age 40 - 44\n [\n [5, 5, 5, 5, 6], // ≥180\n [3, 3, 4, 4, 4], // 160-179\n [2, 2, 3, 3, 3], // 140-159\n [2, 2, 2, 2, 2], // 120-139\n [1, 1, 1, 1, 1]\n ]\n ],\n\n // Smoker\n [\n // Age 70 - 74\n [\n [30, 31, 32, 33, 34], // ≥180\n [25, 26, 27, 28, 29], // 160-179\n [21, 22, 22, 23, 24], // 140-159\n [17, 18, 19, 19, 20], // 120-139\n [14, 15, 15, 16, 17]\n ],\n // Age 65 - 69\n [\n [25, 26, 27, 29, 30], // ≥180\n [21, 22, 22, 23, 24], // 160-179\n [17, 18, 18, 19, 20], // 140-159\n [14, 14, 15, 15, 16], // 120-139\n [11, 11, 12, 12, 13]\n ],\n // Age 60 - 64\n [\n [21, 22, 23, 25, 26], // ≥180\n [17, 18, 19, 20, 21], // 160-179\n [13, 14, 15, 16, 16], // 140-159\n [11, 11, 12, 12, 13], // 120-139\n [8, 9, 9, 10, 10]\n ],\n // Age 55 - 59\n [\n [18, 19, 20, 21, 22], // ≥180\n [14, 15, 15, 16, 17], // 160-179\n [11, 11, 12, 13, 13], // 140-159\n [8, 9, 9, 10, 10], // 120-139\n [6, 7, 7, 7, 8]\n ],\n // Age 50 - 54\n [\n [15, 16, 17, 18, 19], // ≥180\n [11, 12, 13, 14, 14], // 160-179\n [9, 9, 10, 10, 11], // 140-159\n [6, 7, 7, 8, 8], // 120-139\n [5, 5, 5, 6, 6]\n ],\n // Age 45 - 49\n [\n [13, 14, 14, 15, 16], // ≥180\n [9, 10, 11, 11, 12], // 160-179\n [7, 7, 8, 8, 9], // 140-159\n [5, 5, 6, 6, 6], // 120-139\n [4, 4, 4, 4, 5]\n ],\n // Age 40 - 44\n [\n [11, 11, 12, 13, 14], // ≥180\n [8, 8, 9, 9, 10], // 160-179\n [5, 6, 6, 7, 7], // 140-159\n [4, 4, 4, 5, 5], // 120-139\n [3, 3, 3, 3, 4]\n ]\n ]\n ]\n];\n","import * as _ from 'lodash';\nimport { Injectable } from '@angular/core';\nimport { southEastAsiaCvdRiskTables } from './risk-dataset-table';\n\n@Injectable()\nexport class JsExpressionHelper {\n calcBMI(height, weight) {\n let r;\n if (height && weight) {\n r = (weight / (((height / 100) * height) / 100)).toFixed(1);\n }\n return height && weight ? parseFloat(r) : null;\n }\n\n calcBSA(height: number, weight: number) {\n let result;\n if (height && weight) {\n result = Math.sqrt((height * weight) / 3600).toFixed(2);\n }\n return height && weight ? parseFloat(result) : null;\n }\n\n calcBMIForAgeZscore(bmiForAgeRef, height, weight) {\n let bmi;\n const maxAgeInDays = 1856;\n if (height && weight) {\n bmi = (weight / (((height / 100) * height) / 100)).toFixed(1);\n }\n const refSectionObject = _.first(bmiForAgeRef);\n let formattedSDValue;\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (bmi < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= bmi) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return bmi && refSectionObject ? formattedSDValue : null;\n }\n calcWeightForHeightZscore(weightForHeightRef, height, weight) {\n let refSection;\n let formattedSDValue;\n if (height && weight) {\n height = parseFloat(height).toFixed(1);\n }\n const standardHeightMin = 45;\n const standardMaxHeight = 110;\n if (height < standardHeightMin || height > standardMaxHeight) {\n formattedSDValue = -4;\n } else {\n refSection = _.filter(weightForHeightRef, (refObject) => {\n return parseFloat(refObject['Length']).toFixed(1) === height;\n });\n }\n\n const refSectionObject = _.first(refSection);\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (weight < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= weight) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return height && weight ? formattedSDValue : null;\n }\n\n calcHeightForAgeZscore(heightForAgeRef, height, weight) {\n const refSectionObject = _.first(heightForAgeRef);\n let formattedSDValue;\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (height < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= height) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return height && weight && refSectionObject ? formattedSDValue : null;\n }\n\n calcSouthEastAsiaNonLabCVDRisk(\n sex: 'M' | 'F',\n smoker?: boolean,\n age?: number,\n sbp?: number,\n bmi?: number\n ) {\n const hasValidValues =\n typeof sex === 'string' &&\n typeof smoker === 'boolean' &&\n typeof age === 'number' &&\n typeof sbp === 'number' &&\n typeof bmi === 'number';\n\n if (!hasValidValues) {\n return null;\n }\n // Bin functions\n const getAgeBin = (age) =>\n Math.floor((Math.min(Math.max(40, age), 74) - 40) / 5);\n const getSbpBin = (sbp) =>\n Math.max(0, Math.floor((Math.min(sbp, 180) - 120) / 20) + 1);\n const getBmiBin = (bmi) =>\n Math.max(0, Math.floor((Math.min(bmi, 35) - 20) / 5) + 1);\n\n // Variables\n const sexIdx = sex === 'M' ? 0 : 1;\n const smokerIdx = smoker ? 1 : 0;\n const ageIdx = 6 - getAgeBin(age);\n const bmiIdx = getBmiBin(bmi);\n const sbpIdx = 4 - getSbpBin(sbp);\n\n return southEastAsiaCvdRiskTables[sexIdx][smokerIdx][ageIdx][sbpIdx][\n bmiIdx\n ];\n }\n\n isEmpty(val) {\n if (\n val === undefined ||\n val === null ||\n val === '' ||\n val === 'null' ||\n val === 'undefined'\n ) {\n return true;\n }\n\n if (Array.isArray(val) && val.length === 0) {\n return true;\n }\n return false;\n }\n\n arrayContains(array, members) {\n if (Array.isArray(members)) {\n if (members.length === 0) {\n return true;\n }\n\n let contains = true;\n\n for (let i = 0; i < members.length; i++) {\n const val = members[i];\n if (array.indexOf(val) === -1) {\n contains = false;\n }\n }\n\n return contains;\n } else {\n return array.indexOf(members) !== -1;\n }\n }\n extractRepeatingGroupValues(key, array) {\n const values = array.map(function (item) {\n return item[key];\n });\n return values;\n }\n formatDate(value, format, offset) {\n format = format || 'yyyy-MM-dd';\n offset = offset || '+0300';\n\n if (!(value instanceof Date)) {\n value = new Date(value);\n if (value === null || value === undefined) {\n throw new Error(\n 'DateFormatException: value passed ' + 'is not a valid date'\n );\n }\n }\n\n return value; // TODO implement this\n // return $filter('date')(value, format, offset);\n }\n\n arrayContainsAny(array, members) {\n if (Array.isArray(members)) {\n if (members.length === 0) {\n return true;\n }\n let contains = false;\n\n for (let i = 0; i < members.length; i++) {\n const val = members[i];\n if (array.indexOf(val) !== -1) {\n contains = true;\n }\n }\n return contains;\n } else {\n return array.indexOf(members) !== -1;\n }\n }\n\n /**\n * Takes a target control, an encounter and concept uuid. If the target control has a value it returns it\n * otherwise it tries to find it in the encounter. Finally it returns null of it can't find either of them.\n * @param targetControl\n * @param rawEncounter\n * @param uuid\n * @returns\n */\n getObsFromControlOrEncounter(targetControl, rawEncounter, uuid): any {\n const findObs = (obs, uuid) => {\n let result;\n obs?.some(\n (o) =>\n (result =\n o?.concept?.uuid === uuid ? o : findObs(o.groupMembers || [], uuid))\n );\n return result;\n };\n const obsValue = findObs(rawEncounter?.obs, uuid)?.value;\n return !!targetControl\n ? targetControl\n : typeof obsValue === 'object'\n ? obsValue.uuid\n : !!obsValue\n ? obsValue\n : null;\n }\n\n doesNotMatchExpression(\n regexString: string,\n val: string | null | undefined\n ): boolean {\n if (!val || ['undefined', 'null', ''].includes(val.toString())) {\n return true;\n }\n const pattern = new RegExp(regexString);\n if (!pattern.test(val)) {\n return true;\n }\n return false;\n }\n\n calcGravida(parityTerm, parityAbortion) {\n let gravida = 0;\n\n if (Number.isInteger(parityTerm)) {\n gravida += parityTerm + 1;\n }\n\n if (Number.isInteger(parityAbortion)) {\n gravida += parityAbortion + 1;\n }\n\n if (Number.isInteger(parityTerm) && Number.isInteger(parityAbortion)) {\n gravida = parityTerm + parityAbortion + 1;\n }\n\n return gravida;\n }\n\n get helperFunctions() {\n const helper = this;\n return {\n arrayContainsAny: helper.arrayContainsAny,\n calcBMI: helper.calcBMI,\n calcBMIForAgeZscore: helper.calcBMIForAgeZscore,\n calcWeightForHeightZscore: helper.calcWeightForHeightZscore,\n calcHeightForAgeZscore: helper.calcHeightForAgeZscore,\n calcSouthEastAsiaNonLabCVDRisk: helper.calcSouthEastAsiaNonLabCVDRisk,\n isEmpty: helper.isEmpty,\n arrayContains: helper.arrayContains,\n extractRepeatingGroupValues: helper.extractRepeatingGroupValues,\n getObsFromControlOrEncounter: helper.getObsFromControlOrEncounter,\n doesNotMatchExpression: helper.doesNotMatchExpression,\n calcGravida: helper.calcGravida\n };\n }\n}\n","export class Validations {\n public static JSExpressionValidatorsEnabled = false;\n\n constructor() {}\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ExpressionRunner } from '../expression-runner/expression-runner';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { Validations } from './validations';\n\nexport class JsExpressionValidator {\n constructor() {}\n\n validate(model: JsExpressionValidationModel, form?: any) {\n // convert helper functions to string\n return (control: AfeFormControl): { [key: string]: any } => {\n if (!Validations.JSExpressionValidatorsEnabled) {\n return null;\n }\n\n const expression = model.failsWhenExpression;\n const helper = new JsExpressionHelper();\n const dataDependencies = {};\n\n const helperFunctions = helper.helperFunctions;\n const runnable = new ExpressionRunner().getRunnable(\n expression,\n control,\n helperFunctions,\n dataDependencies,\n form\n );\n\n if (runnable.run()) {\n return {\n js_expression: { expression: expression, message: model.message }\n };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MaxLengthValidator {\n validate(maxLength: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n const v = control.value.toString().length;\n return v <= maxLength\n ? null\n : { maxlength: { requiredLength: maxLength, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MinLengthValidator {\n validate(minLength: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n const v = control.value.toString().length;\n return v >= minLength\n ? null\n : { minlength: { requiredLength: minLength, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as _ from 'lodash';\n\nimport { ConditionalRequiredValidator } from '../validators/conditional-required.validator';\nimport { ConditionalAnsweredValidator } from '../validators/conditional-answered.validator';\nimport { RequiredValidator } from '../validators/required.validator';\nimport { DateValidator } from '../validators/date.validator';\nimport { MinValidator } from '../validators/min.validator';\nimport { MaxValidator } from '../validators/max.validator';\nimport { MinDateValidator } from '../validators/min-date.validator';\nimport { MaxDateValidator } from '../validators/max-date.validator';\nimport { FutureDateRestrictionValidator } from '../validators/future-date-restriction.validator';\nimport { JsExpressionValidator } from '../validators/js-expression.validator';\nimport { QuestionBase } from '../question-models/question-base';\nimport { ValidationModel } from '../question-models/validation.model';\nimport { DateValidationModel } from '../question-models/date-validation.model';\nimport { MaxValidationModel } from '../question-models/max-validation.model';\nimport { MinValidationModel } from '../question-models/min-validation.model';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { MaxLengthValidator } from '../validators/max-length.validator';\nimport { MaxLengthValidationModel } from '../question-models/max-length-validation.model';\nimport { MinLengthValidationModel } from '../question-models/min-length-validation.model';\nimport { MinLengthValidator } from '../validators/min-length.validator';\n\n@Injectable()\nexport class ValidationFactory {\n constructor(private translate: TranslateService) {}\n\n getValidators(question: QuestionBase, form?: any) {\n const list: Array<any> = [];\n\n if (question.validators) {\n _.forEach(question.validators, (validator: ValidationModel) => {\n switch (validator.type) {\n case 'date':\n list.push(this.dateValidator);\n const allowFutureDates: boolean = (<DateValidationModel>validator)\n .allowFutureDates;\n\n if (!allowFutureDates) {\n list.push(this.futureDateRestrictionValidator);\n }\n break;\n case 'js_expression':\n list.push(\n this.jsExpressionValidator.validate(\n <JsExpressionValidationModel>validator,\n form\n )\n );\n break;\n case 'max':\n list.push(\n this.getMaxValueValidator((<MaxValidationModel>validator).max)\n );\n break;\n case 'maxlength':\n list.push(\n this.maxLengthValidator(\n (<MaxLengthValidationModel>validator).maxlength\n )\n );\n break;\n case 'min':\n list.push(\n this.getMinValueValidator((<MinValidationModel>validator).min)\n );\n break;\n case 'minlength':\n list.push(\n this.minLengthValidator(\n (<MinLengthValidationModel>validator).minlength\n )\n );\n break;\n case 'conditionalRequired':\n list.push(\n this.conditionalRequiredValidator.validate(\n <ConditionalValidationModel>validator\n )\n );\n break;\n case 'conditionalAnswered':\n list.push(\n this.conditionalAnsweredValidator.validate(\n <ConditionalValidationModel>validator\n )\n );\n break;\n }\n });\n }\n\n if (\n question.required &&\n typeof question.required === 'string' &&\n question.required === 'true'\n ) {\n list.push(this.requiredValidator);\n } else {\n // TODO - handle custom required validator\n }\n\n return list;\n }\n\n get conditionalRequiredValidator(): ConditionalRequiredValidator {\n return new ConditionalRequiredValidator();\n }\n\n get conditionalAnsweredValidator(): ConditionalAnsweredValidator {\n return new ConditionalAnsweredValidator();\n }\n\n get requiredValidator(): any {\n return new RequiredValidator().validate;\n }\n\n get dateValidator(): any {\n return new DateValidator().validate;\n }\n\n get futureDateRestrictionValidator(): any {\n return new FutureDateRestrictionValidator().validate;\n }\n\n get maxDateValidator(): any {\n return new MaxDateValidator().validate;\n }\n\n get minDateValidator(): any {\n return new MinDateValidator().validate;\n }\n\n public minLengthValidator(minLength: number) {\n return new MinLengthValidator().validate(minLength);\n }\n\n public maxLengthValidator(maxLength: number) {\n return new MaxLengthValidator().validate(maxLength);\n }\n\n public getMinValueValidator(min: number): any {\n return new MinValidator().validate(min);\n }\n\n public getMaxValueValidator(max: number): any {\n return new MaxValidator().validate(max);\n }\n\n get jsExpressionValidator() {\n return new JsExpressionValidator();\n }\n\n public errors(errors: any, question: QuestionBase): Array<string> {\n const messages: Array<string> = [];\n\n for (const property in errors) {\n if (errors.hasOwnProperty(property)) {\n switch (property) {\n case 'required':\n messages.push(this.translate.instant('requiredField'));\n break;\n case 'date':\n messages.push(this.translate.instant('invalidDate'));\n break;\n case 'futureDateRestriction':\n messages.push(this.translate.instant('futureDateRestriction'));\n break;\n case 'minlength':\n messages.push(\n this.translate\n .instant('minLength')\n .replace('{minLength}', errors.minlength.requiredLength)\n );\n break;\n case 'maxlength':\n messages.push(\n this.translate\n .instant('maxLength')\n .replace('{maxLength}', errors.maxlength.requiredLength)\n );\n break;\n case 'maxdate':\n messages.push(\n this.translate\n .instant('maxDate')\n .replace('{maxDate}', errors.maxdate.requiredDate)\n );\n break;\n case 'mindate':\n messages.push(\n this.translate\n .instant('minDate')\n .replace('{minDate}', errors.mindate.requiredDate)\n );\n break;\n case 'max':\n messages.push(\n this.translate\n .instant('max')\n .replace('{max}', errors.max.requiredValue)\n );\n break;\n case 'min':\n messages.push(\n this.translate\n .instant('min')\n .replace('{min}', errors.min.requiredValue)\n );\n break;\n case 'js_expression':\n messages.push(errors['js_expression'].message);\n break;\n case 'conditional_required':\n messages.push(errors['conditional_required'].message);\n break;\n case 'conditional_answered':\n messages.push(errors['conditional_answered'].message);\n break;\n }\n }\n }\n\n return messages;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Disabler } from '../control-hiders-disablers/can-disable';\nimport { Hider } from '../control-hiders-disablers/can-hide';\n\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { Form } from './form';\n// Add ability to display all fields for debugging\nimport { DebugModeService } from './../services/debug-mode.service';\n\n@Injectable()\nexport class HidersDisablersFactory {\n constructor(\n private expressionRunner: ExpressionRunner,\n private expressionHelper: JsExpressionHelper,\n private _debugModeService: DebugModeService\n ) {}\n\n getJsExpressionDisabler(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Disabler {\n const runnable: Runnable = this.expressionRunner.getRunnable(\n question.disable as string,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n const disabler: Disabler = {\n toDisable: false,\n disableWhenExpression: question.disable as string,\n resetValueOnDisable: question.resetValueOnDisable,\n reEvaluateDisablingExpression: () => {\n const result = runnable.run();\n disabler.toDisable = result;\n }\n };\n return disabler;\n }\n\n getJsExpressionHider(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Hider {\n const hide: any = question.hide;\n const value: string =\n typeof hide === 'object'\n ? this.convertHideObjectToString(hide)\n : (question.hide as string);\n\n // check if debugging has been enabled\n\n const debugEnabled = this._debugModeService.debugEnabled();\n\n const runnable: Runnable = this.expressionRunner.getRunnable(\n value,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n\n const hider: Hider = {\n toHide: false,\n hideWhenExpression: value,\n reEvaluateHidingExpression: () => {\n /* if debug is enabled then hiders to be false\n else run the normal eveluator i.e runnable.run()\n */\n if (debugEnabled === true) {\n hider.toHide = false;\n } else {\n hider.toHide = runnable.run();\n }\n }\n };\n return hider;\n }\n\n convertHideObjectToString(hide: any) {\n if (hide.value instanceof Array) {\n const arrayStr: string = \"'\" + hide.value.join(\"','\") + \"'\";\n const exp = '!arrayContains([' + arrayStr + '],' + hide.field + ')';\n return exp;\n }\n\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Alert } from '../control-alerts/can-generate-alert';\n\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { Form } from './form';\n\n@Injectable()\nexport class AlertsFactory {\n constructor(\n private expressionRunner: ExpressionRunner,\n private expressionHelper: JsExpressionHelper\n ) {}\n getJsExpressionshowAlert(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Alert {\n const runnable: Runnable = this.expressionRunner.getRunnable(\n question.alert.alertWhenExpression,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n const showAlert: Alert = {\n shown: false,\n alertWhenExpression: question.alert.alertWhenExpression,\n alertMessage: question.alert.message,\n reEvaluateAlertExpression: () => {\n const result = runnable.run();\n showAlert.shown = result;\n }\n };\n return showAlert;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup,\n AfeControlType\n} from '../../abstract-controls-extension';\n\nimport { NestedQuestion } from '../question-models/interfaces/nested-questions';\n\nimport { QuestionBase } from '../question-models/question-base';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { HidersDisablersFactory } from './hiders-disablers.factory';\nimport { AlertsFactory } from './show-messages.factory';\nimport { Form } from './form';\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\n\n@Injectable()\nexport class FormControlService {\n controls = [];\n validationFactory: ValidationFactory;\n hidersDisablersFactory: HidersDisablersFactory;\n\n constructor(\n validationFactory: ValidationFactory,\n hidersDisablersFactory: HidersDisablersFactory,\n private alertsFactory: AlertsFactory\n ) {\n this.validationFactory = validationFactory;\n this.hidersDisablersFactory = hidersDisablersFactory;\n }\n\n generateControlModel(\n questionModel: QuestionBase | NestedQuestion,\n parentControl: AfeFormGroup,\n generateChildren: boolean,\n form?: Form\n ): AfeFormControl | AfeFormArray | AfeFormGroup {\n if (questionModel instanceof QuestionBase) {\n if (questionModel.controlType === AfeControlType.AfeFormArray) {\n return this.generateFormArray(questionModel, parentControl, form);\n }\n if (questionModel.controlType === AfeControlType.AfeFormGroup) {\n return this.generateFormGroupModel(\n questionModel,\n generateChildren,\n parentControl,\n form\n );\n }\n\n if (questionModel.controlType === AfeControlType.AfeFormControl) {\n return this.generateFormControl(questionModel, parentControl, form);\n }\n }\n return null;\n }\n\n generateFormGroupModel(\n question: QuestionBase,\n generateChildren: boolean,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormGroup {\n const formGroup = new AfeFormGroup({});\n this.wireHidersDisablers(question, formGroup, form);\n this.wireAlerts(question, formGroup, form);\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, formGroup);\n }\n\n const asGroup = question as QuestionGroup;\n\n if (generateChildren && asGroup && asGroup.questions.length > 0) {\n this._generateFormGroupChildrenModel(asGroup.questions, formGroup, form);\n }\n\n return formGroup;\n }\n\n _generateFormGroupChildrenModel(\n questions: QuestionBase[],\n parentControl: AfeFormGroup,\n form?: Form\n ) {\n if (questions.length > 0) {\n questions.forEach((element) => {\n const generated = this.generateControlModel(\n element,\n parentControl,\n true,\n form\n );\n if (generated !== null) {\n parentControl.addControl(element.key, generated);\n }\n });\n }\n }\n\n generateFormArray(\n question: QuestionBase,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormArray {\n const validators = this.validationFactory.getValidators(question, form);\n let formArray: AfeFormArray;\n if (validators && validators.length > 0) {\n formArray = new AfeFormArray([], validators[0]);\n } else {\n formArray = new AfeFormArray([]);\n }\n formArray.uuid = question.key;\n this.wireHidersDisablers(question, formArray, form);\n this.wireAlerts(question, formArray, form);\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, formArray);\n }\n\n return formArray;\n }\n\n generateFormControl(\n question: QuestionBase,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormControl {\n const value = question.defaultValue || '';\n const validators = this.validationFactory.getValidators(question, form);\n\n const control = new AfeFormControl(value, validators);\n control.uuid = question.key;\n this.wireHidersDisablers(question, control, form);\n this.wireAlerts(question, control, form);\n this.wireCalculator(\n question,\n control,\n form,\n form?.dataSourcesContainer?.dataSources\n );\n\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, control);\n }\n\n return control;\n }\n\n private wireAlerts(\n question: QuestionBase,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form?: Form\n ) {\n if (question.alert && question.alert !== '') {\n const alert = this.alertsFactory.getJsExpressionshowAlert(\n question,\n control,\n form\n );\n control.setAlertFn(alert);\n }\n }\n private wireHidersDisablers(\n question: QuestionBase,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form?: Form\n ) {\n if (question.hide && question.hide !== '') {\n const hider = this.hidersDisablersFactory.getJsExpressionHider(\n question,\n control,\n form\n );\n control.setHidingFn(hider);\n }\n\n if (question.disable && question.disable !== '') {\n const disable = this.hidersDisablersFactory.getJsExpressionDisabler(\n question,\n control,\n form\n );\n control.setDisablingFn(disable);\n }\n }\n\n private wireCalculator(\n question: QuestionBase,\n control: AfeFormControl,\n form: Form,\n dataSource?: any\n ) {\n if (question.calculateExpression && question.calculateExpression !== '') {\n const helper: JsExpressionHelper = new JsExpressionHelper();\n const runner: ExpressionRunner = new ExpressionRunner();\n const runnable: Runnable = runner.getRunnable(\n question.calculateExpression,\n control,\n helper.helperFunctions,\n dataSource,\n form\n );\n // this functionality strictly assumes the calculateExpression function has been defined in the JsExpressionHelper class\n control.setCalculatorFn(runnable.run);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DataSources {\n private _dataSources: any = {};\n constructor() {}\n\n get dataSources(): any {\n return this._dataSources;\n }\n\n registerDataSource(key: string, dataSource: any, unWrap = false) {\n if (unWrap) {\n for (const o in dataSource) {\n this.registerDataSource(o, dataSource[o], false);\n }\n }\n if (this.dataSources[key]) {\n console.warn('Overriding registered data source', key);\n }\n this._dataSources[key] = dataSource;\n }\n\n clearDataSource(key: string) {\n delete this._dataSources[key];\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n Output,\n HostListener,\n EventEmitter,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * `ofe-select` provides a styled `select` component.\n *\n * [See demo](../../?path=/story/select--basic)\n *\n * Example:\n *\n * ```\n * <ofe-select [(ngModel)]=\"model\">\n * <option value=\"default\" disabled selected hidden>Choose an option</option>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * <option value=\"option3\">Option 3</option>\n * </ofe-select>\n * ```\n *\n * <example-url>../../iframe.html?id=select--basic</example-url>\n */\n@Component({\n selector: 'ofe-select',\n templateUrl: 'select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectComponent,\n multi: true\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\n /**\n * Tracks the total number of selects instantiated. Used to generate unique IDs\n */\n static selectCount = 0;\n\n /**\n * `inline` or `default` select displays\n */\n @Input() display: 'inline' | 'default' = 'default';\n /**\n * Label for the select. Appears above the input.\n */\n @Input() label: string | TemplateRef<any>;\n /**\n * Optional helper text that appears under the label.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`\n */\n @Input() id = `select-${SelectComponent.selectCount++}`;\n /**\n * Number input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n /**\n * Set to true to disable component.\n */\n @Input() disabled = false;\n /**\n * Set to true for a loading select.\n */\n @Input() skeleton = false;\n /**\n * Set to `true` for an invalid select component.\n */\n @Input() invalid = false;\n\n /**\n * `light` or `dark` select theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n @Input() ariaLabel: string;\n\n @Output() valueChange = new EventEmitter();\n\n @ViewChild('select', { static: false }) select: ElementRef;\n\n @Input() set value(v) {\n this._value = v;\n if (this.select) {\n this.select.nativeElement.value = this._value;\n }\n }\n\n get value() {\n return this._value;\n }\n\n protected _value;\n\n ngAfterViewInit() {\n if (\n this.value !== undefined &&\n this.value !== null &&\n this.select &&\n this.select.nativeElement.value !== this.value\n ) {\n this.select.nativeElement.value = this.value;\n }\n }\n\n /**\n * Receives a value from the model.\n */\n writeValue(obj: any) {\n this.value = obj;\n }\n\n /**\n * Registers a listener that notifies the model when the control updates\n */\n registerOnChange(fn: any) {\n this.onChangeHandler = fn;\n }\n\n /**\n * Registers a listener that notifies the model when the control is blurred\n */\n registerOnTouched(fn: any) {\n this.onTouchedHandler = fn;\n }\n\n /**\n * Sets the disabled state through the model\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /**\n * Handles the change event from the `select`.\n * Sends events to the change handler and emits a `selected` event.\n */\n onChange(event) {\n this.value = event.target.value;\n this.onChangeHandler(event.target.value);\n this.valueChange.emit(event.target.value);\n }\n\n /**\n * Listens for the host blurring, and notifies the model\n */\n @HostListener('focusout')\n focusOut() {\n this.onTouchedHandler();\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n\n /**\n * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`\n */\n protected onChangeHandler = (_: any) => {};\n protected onTouchedHandler = () => {};\n}\n","<div class=\"cds--form-item\">\n <ng-template [ngIf]=\"skeleton\">\n <div *ngIf=\"label\" class=\"cds--label cds--skeleton\"></div>\n <div class=\"cds--select cds--skeleton\"></div>\n </ng-template>\n <div\n *ngIf=\"!skeleton\"\n class=\"cds--select\"\n [ngClass]=\"{\n 'cds--select--inline': display === 'inline',\n 'cds--select--light': theme === 'light',\n 'cds--select--invalid': invalid,\n 'cds--select--warning': warn,\n 'cds--select--disabled': disabled\n }\"\n >\n <label *ngIf=\"label\" [for]=\"id\" class=\"cds--label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(label)\"\n [ngTemplateOutlet]=\"label\"\n ></ng-template>\n </label>\n <div *ngIf=\"helperText\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"display === 'inline'; else noInline\"\n class=\"cds--select-input--inline__wrapper\"\n >\n <ng-container *ngTemplateOutlet=\"noInline\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- select element: dynamically projected based on 'display' variant -->\n<ng-template #noInline>\n <div\n class=\"cds--select-input__wrapper extend\"\n [attr.data-invalid]=\"invalid ? true : null\"\n >\n <select\n #select\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n class=\"cds--select-input\"\n [ngClass]=\"{\n 'cds--select-input--xl': size === 'xl',\n 'cds--select-input--sm': size === 'sm'\n }\"\n >\n <ng-content></ng-content>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--select__arrow\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n <div\n *ngIf=\"invalid && invalidText && !warn\"\n role=\"alert\"\n class=\"cds--form-requirement\"\n aria-live=\"polite\"\n >\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</ng-template>\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[ofeNumberScroll]'\n})\nexport class NumberInputDirective {\n constructor(private element: ElementRef) {}\n\n @HostListener('wheel', ['$event'])\n public onScroll(event: WheelEvent) {\n return false;\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n/**\n * Used to emit changes performed on number input components.\n */\nexport class NumberChangeEvent {\n /**\n * Contains the `NumberInputComponent` that has been changed.\n */\n source: NumberInputComponent;\n /**\n * The value of the `NumberInputComponent` field encompassed in the `NumberChange` class.\n */\n value: number;\n}\n\n@Component({\n selector: 'ofe-number-input',\n templateUrl: 'number-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true\n }\n ]\n})\nexport class NumberInputComponent implements ControlValueAccessor {\n /**\n * Variable used for creating unique ids for number input components.\n */\n static numberCount = 0;\n\n /**\n * `light` or `dark` number input theme.\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n /**\n * Set to `true` for a disabled number input.\n */\n @Input() disabled = false;\n /**\n * Set to `true` for a loading number component.\n */\n @Input() skeleton = false;\n /**\n * Set to `true` for an invalid number component.\n */\n @Input() invalid = false;\n /**\n * The unique id for the number component.\n */\n @Input() id = `number-${NumberInputComponent.numberCount}`;\n /**\n * Number input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n /**\n * Reflects the required attribute of the `input` element.\n */\n @Input() required: boolean;\n /**\n * Sets the value attribute on the `input` element.\n */\n @Input() set value(v: any) {\n if (v === '' || v === null) {\n this._value = null;\n return;\n }\n this._value = Number(v);\n }\n\n get value() {\n return this._value;\n }\n /**\n * Sets the min attribute on the `input` element.\n */\n @Input() min = null;\n /**\n * Sets the max attribute on the `input` element.\n */\n @Input() max = null;\n /**\n * Sets the max length attribute on the `input` element.\n */\n @Input() maxlength = null;\n /**\n * Sets the min length attribute on the `input` element.\n */\n @Input() minlength = null;\n /**\n * Sets the text inside the `label` tag.\n */\n @Input() label: string | TemplateRef<any>;\n /**\n * Sets the optional helper text.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Sets the amount the number controls increment and decrement by.\n */\n @Input() step = 1;\n /**\n * If `step` is a decimal, we may want precision to be set to go around floating point precision.\n */\n @Input() precision: number;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Emits event notifying other classes when a change in state occurs in the input.\n */\n @Output() numberChange = new EventEmitter<NumberChangeEvent>();\n /**\n * Sets the decrement label text\n */\n @Input() decrementLabel = 'Decrease';\n /**\n * Sets the increment label text\n */\n @Input() incrementLabel = 'Increase';\n\n protected _value = 0;\n\n /**\n * Creates an instance of `Number`.\n */\n constructor() {\n NumberInputComponent.numberCount++;\n }\n\n /**\n * This is the initial value set to the component\n * @param value The input value.\n */\n public writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Sets a method in order to propagate changes back to the form.\n */\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control has been touched.\n * @param fn Callback to be triggered when the number input is touched.\n */\n public registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n @HostListener('focusout')\n focusOut() {\n this.onTouched();\n }\n\n /**\n * Sets the disabled state through the model\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /**\n * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.\n */\n onTouched: () => any = () => {};\n\n /**\n * Method set in `registerOnChange` to propagate changes back to the form.\n */\n propagateChange = (_: any) => {};\n\n /**\n * Adds `step` to the current `value`.\n */\n onIncrement(): void {\n const val = this._value || 0;\n\n if (this.max === null || val + this.step <= this.max) {\n this.value = parseFloat((val + this.step).toPrecision(this.precision));\n }\n\n if (this.max && this.max > 0 && this.value > this.max) {\n this.value = this.max;\n }\n if (this.max === undefined || this.max === '') {\n this.value = val + this.step;\n }\n\n this.emitChangeEvent();\n }\n\n /**\n * Subtracts `step` to the current `value`.\n */\n onDecrement(): void {\n const val = this._value || 0;\n\n if (this.min === null || val - this.step >= this.min) {\n this.value = parseFloat((val - this.step).toPrecision(this.precision));\n }\n\n if (this.min && this.min > 0 && this.value < this.min) {\n this.value = this.min;\n }\n\n if (this.min === undefined || this.min === '') {\n this.value = val - this.step;\n }\n\n this.emitChangeEvent();\n }\n\n /**\n * Creates a class of `NumberChange` to emit the change in the `Number`.\n */\n emitChangeEvent(): void {\n const event = new NumberChangeEvent();\n event.source = this;\n event.value = this.value;\n this.numberChange.emit(event);\n this.propagateChange(this.value);\n }\n\n onNumberInputChange(event) {\n this.value = event.target.value;\n this.emitChangeEvent();\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n}\n","<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * A directive for applying styling to an input element.\n *\n * Example:\n *\n * ```html\n * <input ofeTextInput/>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n selector: '[ofeTextInput]'\n})\nexport class TextInputDirective {\n /**\n * `light` or `dark` input theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n\n /**\n * Input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n\n @HostBinding('class.cds--text-input') inputClass = true;\n\n @HostBinding('class.cds--text-input--xl') get isSizeXl() {\n return this.size === 'xl';\n }\n @HostBinding('class.cds--text-input--sm') get isSizeSm() {\n return this.size === 'sm';\n }\n\n @HostBinding('class.cds--text-input--invalid')\n @Input()\n invalid = false;\n\n @HostBinding('class.cds--text-input__field-wrapper--warning')\n @Input()\n warn = false;\n\n @HostBinding('class.cds--skeleton') @Input() skeleton = false;\n\n @HostBinding('class.cds--text-input--light') get isLightTheme() {\n return this.theme === 'light';\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * A directive for applying styling to a textarea element.\n *\n * Example:\n *\n * ```html\n * <textarea ofeTextAreaInput></textarea>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n selector: '[ofeTextAreaInput]'\n})\nexport class TextAreaDirective {\n /**\n * `light` or `dark` input theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n @HostBinding('class.cds--text-area') baseClass = true;\n @HostBinding('class.custom-text-area') customClass = true;\n @HostBinding('class.cds--text-area--invalid') @Input() invalid = false;\n @HostBinding('class.cds--skeleton') @Input() skeleton = false;\n @HostBinding('class.cds--text-area--light') get isLightTheme() {\n return this.theme === 'light';\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n forwardRef,\n Output,\n EventEmitter,\n Renderer2\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { concat, Observable, of, Subject } from 'rxjs';\nimport {\n catchError,\n distinctUntilChanged,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport { SelectOption } from '../../form-entry/question-models/interfaces/select-option';\n\nimport { DataSource } from '../../form-entry/question-models/interfaces/data-source';\nimport * as _ from 'lodash';\n@Component({\n selector: 'ofe-remote-select',\n templateUrl: 'remote-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RemoteSelectComponent),\n multi: true\n }\n ]\n})\nexport class RemoteSelectComponent implements OnInit, ControlValueAccessor {\n // @Input() dataSource: DataSource;\n remoteOptions$: Observable<SelectOption[]>;\n remoteOptionsLoading = false;\n remoteOptionInput$ = new Subject<string>();\n selectedRemoteOptions: SelectOption;\n items = [];\n value = [];\n loading = false;\n searchText = '';\n notFoundMsg = 'match no found';\n @Input() placeholder = 'Search...';\n @Input() componentID: string;\n @Input() disabled = false;\n @Input() theme = 'dark';\n @Output() done: EventEmitter<any> = new EventEmitter<any>();\n\n private _dataSource: DataSource;\n @Input()\n public get dataSource(): DataSource {\n return this._dataSource;\n }\n public set dataSource(v: DataSource) {\n this._dataSource = v;\n if (this._dataSource && this._dataSource.dataFromSourceChanged) {\n this.subscribeToDataSourceDataChanges();\n }\n }\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {\n this.loadOptions();\n }\n\n subscribeToDataSourceDataChanges() {\n this._dataSource.dataFromSourceChanged.subscribe((results) => {\n if (results.length > 0) {\n this.items = results;\n this.notFoundMsg = '';\n } else {\n this.notFoundMsg = 'Not found';\n this.items = [];\n }\n });\n }\n\n // this is the initial value set to the component\n public writeValue(value: any) {\n if (value && value !== '') {\n if (this.dataSource) {\n this.loading = true;\n this.dataSource.resolveSelectedValue(value).subscribe(\n (result: any) => {\n this.items = [result];\n this.selectedRemoteOptions = result;\n this.loading = false;\n },\n (error) => {\n this.loading = false;\n }\n );\n }\n }\n }\n // registers 'fn' that will be fired when changes are made\n // this is how we emit the changes back to the form\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n // not used, used for touch input\n public registerOnTouched() {}\n // change events from the textarea\n onChange(event) {\n this.propagateChange(event.id);\n // .....\n // update the form\n // this.propagateChange(this.data);\n }\n selected(event) {\n this.propagateChange(event);\n }\n\n compareItems = (item, selected) => {\n if (item.value && selected.value) {\n return item.value === selected.value;\n }\n return false;\n };\n\n // the method set in registerOnChange, it is just\n // a placeholder for a method that takes one parameter,\n // we use it to emit changes back to the form\n private propagateChange = (change: any) => {};\n\n trackByFn(item: SelectOption) {\n return item.value;\n }\n\n private loadOptions() {\n this.remoteOptions$ = concat(\n of([]), // default items\n this.remoteOptionInput$.pipe(\n distinctUntilChanged(),\n tap(() => {\n this.loading = true;\n }),\n switchMap((term) =>\n this.dataSource.searchOptions(term).pipe(\n catchError(() => of([])), // empty list on error\n tap(() => (this.loading = false))\n )\n )\n )\n );\n }\n}\n","<div>\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [disabled]=\"disabled\"\n [items]=\"remoteOptions$ | async\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [multiple]=\"false\"\n [hideSelected]=\"true\"\n [compareWith]=\"compareItems\"\n [trackByFn]=\"trackByFn\"\n [loading]=\"loading\"\n typeToSearchText=\"{{ 'enterMoreCharacters' | translate }}\"\n [typeahead]=\"remoteOptionInput$\"\n [(ngModel)]=\"selectedRemoteOptions\"\n [appendTo]=\"'form'\"\n (ngModelChange)=\"selected($event)\"\n >\n </ng-select>\n</div>\n","import {\n Pipe,\n PipeTransform,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subscription, Observable, BehaviorSubject } from 'rxjs';\n\nimport { DomSanitizer } from '@angular/platform-browser';\n\n// Using similarity from AsyncPipe to avoid having to pipe |secure|async in HTML.\n@Pipe({\n name: 'secure',\n pure: false\n})\nexport class SecurePipe implements PipeTransform, OnDestroy {\n private _latestValue: any = null;\n private _latestReturnedValue: any = null;\n private _subscription: Subscription = null;\n private _obj: Observable<any> = null;\n private getfile;\n private previousUrl: string;\n private _result: BehaviorSubject<any> = new BehaviorSubject(null);\n private result: Observable<any> = this._result.asObservable();\n private _internalSubscription: Subscription = null;\n\n constructor(\n private _ref: ChangeDetectorRef,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnDestroy(): void {\n if (this._subscription) {\n this._dispose();\n }\n }\n\n transform(url: string, getfile): any {\n this.getfile = getfile;\n const obj = this.internalTransform(url);\n return this.asyncTrasnform(obj);\n }\n\n private internalTransform(url: string): Observable<any> {\n if (!url) {\n return this.result;\n }\n\n if (this.previousUrl !== url) {\n this.previousUrl = url;\n this._internalSubscription = this.getfile(url).subscribe((m) => {\n const sanitized = this.sanitizer.bypassSecurityTrustUrl(m);\n this._result.next(sanitized);\n });\n }\n\n return this.result;\n }\n\n private asyncTrasnform(obj: Observable<any>): any {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n this._latestReturnedValue = this._latestValue;\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.asyncTrasnform(obj);\n }\n if (this._latestValue === this._latestReturnedValue) {\n return this._latestReturnedValue;\n }\n this._latestReturnedValue = this._latestValue;\n return this._latestValue;\n }\n\n private _subscribe(obj: Observable<any>) {\n const _this = this;\n this._obj = obj;\n\n this._subscription = obj.subscribe({\n next: function (value) {\n return _this._updateLatestValue(obj, value);\n },\n error: (e: any) => {\n throw e;\n }\n });\n }\n\n private _dispose() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n if (this._internalSubscription) {\n this._internalSubscription.unsubscribe();\n }\n\n this._internalSubscription = null;\n this._latestValue = null;\n this._latestReturnedValue = null;\n this._subscription = null;\n this._obj = null;\n }\n\n private _updateLatestValue(async: any, value: Object) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\n","import { Component, OnInit, Input, forwardRef, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DataSource } from '../../form-entry/question-models/interfaces/data-source';\n\n@Component({\n selector: 'ofe-file-upload',\n templateUrl: 'file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true\n }\n ],\n styles: [\n `\n img {\n margin-left: auto;\n margin-right: auto;\n display: block;\n }\n `\n ]\n})\nexport class FileUploadComponent implements OnInit, ControlValueAccessor {\n uploading = false;\n fileUuid = null;\n pdfUploaded = false;\n formEntryMode = true;\n pdfUrl: string;\n\n @Input()\n public get dataSource(): DataSource {\n return this._dataSource;\n }\n public set dataSource(v: DataSource) {\n this._dataSource = v;\n }\n\n private _dataSource: DataSource;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {\n if (this.fileUuid) {\n this.checkFileType();\n }\n }\n\n public onFileChange(fileList) {\n for (const file of fileList) {\n this.upload(file);\n }\n }\n\n upload(data) {\n if (this.dataSource) {\n this.uploading = true;\n this.dataSource.fileUpload(data).subscribe(\n (result) => {\n this.fileUuid = result.image;\n this.checkFileType();\n this.propagateChange(this.fileUuid);\n this.uploading = false;\n },\n (error) => {\n this.uploading = false;\n }\n );\n }\n }\n\n // this is the initial value set to the component\n public writeValue(value: any) {\n if (value !== this.fileUuid) {\n this.fileUuid = value;\n this.checkFileType();\n }\n }\n // registers 'fn' that will be fired when changes are made\n // this is how we emit the changes back to the form\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n // not used, used for touch input\n public registerOnTouched() {}\n // change events from the textarea\n onChange(event) {\n this.propagateChange(event.id);\n // .....\n // update the form\n // this.propagateChange(this.data);\n }\n\n // the method set in registerOnChange, it is just\n // a placeholder for a method that takes one parameter,\n // we use it to emit changes back to the form\n private propagateChange = (_: any) => {};\n\n public clearValue() {\n this.fileUuid = null;\n this.pdfUploaded = false;\n this.pdfUrl = null;\n this.propagateChange(this.fileUuid);\n }\n\n public getPdfUrl(fileUuid: string) {\n this.dataSource.fetchFile(fileUuid, 'pdf').subscribe((file) => {\n this.pdfUploaded = true;\n this.pdfUrl = file.changingThisBreaksApplicationSecurity;\n });\n }\n public checkFileType() {\n const re = /pdf/gi;\n if (this.fileUuid.search(re) !== -1) {\n this.getPdfUrl(this.fileUuid);\n }\n }\n}\n","<lib-ngx-file-uploader\n [srcUrl]=\"pdfUrl\"\n [formEntry]=\"formEntryMode\"\n [(ngModel)]=\"fileUuid\"\n (_onClear)=\"clearValue()\"\n (uploadData)=\"onFileChange($event)\"\n>\n</lib-ngx-file-uploader>\n<div *ngIf=\"fileUuid\">\n <img\n *ngIf=\"!pdfUploaded\"\n class=\"img-responsive\"\n [src]=\"fileUuid | secure: this.dataSource.fetchFile\"\n alt=\"\"\n />\n</div>\n","import { Component, Input, forwardRef, OnInit } from '@angular/core';\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'ofe-checkbox',\n templateUrl: './checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxControlComponent implements OnInit {\n @Input() public id: String;\n @Input() public options: Array<any>;\n @Input() public selected: Array<any>;\n public _value: Array<any> = [];\n\n public ngOnInit() {\n this.selected = this.selected || [];\n this.options = this.options.map((option) => {\n if (this.selected.indexOf(option.value) !== -1) {\n Object.assign(option, { checked: true });\n }\n option.isDisabled = this.evaluateDisabledExpression(option, option.value);\n return option;\n });\n }\n\n public writeValue(value: any) {\n this.value = value;\n }\n\n public registerOnChange(fn: (_: any) => void) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n get value(): any {\n if (this._value.length === 0) {\n return '';\n } else {\n return this._value || this._value[0];\n }\n }\n\n set value(v: any) {\n if (typeof v === 'undefined' || v === null || v === '') {\n v = [];\n } else if (typeof v === 'string') {\n v = [v];\n } else if (!Array.isArray(v)) {\n throw new TypeError('Value must be a string or an array.');\n }\n }\n\n public selectOpt(option, event) {\n let myValue = option.value;\n\n if (event.target.checked) {\n this.selected = [...this.selected, myValue];\n } else {\n this.selected = this.selected.filter((o) => o !== myValue);\n myValue = null;\n }\n\n this.options.forEach((opt) => {\n opt.isDisabled = this.evaluateDisabledExpression(opt, myValue);\n\n if (opt.isDisabled && this.selected.includes(opt.value)) {\n this.selected = this.selected.filter((val) => val !== opt.value);\n opt.checked = false;\n } else if (!opt.isDisabled) {\n opt.checked = this.selected.includes(opt.value);\n }\n });\n\n // Update the component's internal value\n this._value = [...this.selected];\n this.onChange(this._value);\n }\n\n private evaluateExpression(expression: string, myValue: string): boolean {\n const matches = expression.match(/^myValue\\s*===\\s*['\"]([^'\"]+)['\"]$/);\n if (matches && matches[1]) {\n return myValue === matches[1];\n }\n return false;\n }\n\n private evaluateDisabledExpression(option: any, myValue: string): boolean {\n if (option.disableWhenExpression) {\n return this.evaluateExpression(option.disableWhenExpression, myValue);\n }\n return false;\n }\n\n private onChange = (change: any) => {};\n private onTouched = () => {};\n}\n","<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n","import {\n Component,\n Input,\n forwardRef,\n OnInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ofe-radio-button',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonControlComponent),\n multi: true\n }\n ]\n})\nexport class RadioButtonControlComponent\n implements ControlValueAccessor, OnInit, OnChanges {\n @Input() public id: String;\n @Input() public options: Array<any>;\n @Input() public selected: any;\n @Input() public allowUnselect: boolean;\n @Input() public orientation: string;\n\n private _value: any = undefined;\n\n public ngOnInit() {\n this.options = this.options.map((opt) => ({ ...opt, checked: false }));\n this.updateSelectedOption();\n }\n\n public writeValue(value: any) {\n this.value = value;\n const newValueOpt = this.options.find((opt) => opt.value === value);\n if (newValueOpt) {\n Object.assign(newValueOpt, { checked: true });\n }\n }\n\n public registerOnChange(\n fn: (newValue?: any, emitModelEvent?: boolean) => void\n ) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n get value(): any {\n return this._value ?? '';\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n public handleClick(option) {\n if (this.allowUnselect && option.checked) {\n option.checked = false;\n // doesn't fire by itself, so we create a synthetic change event\n this.handleChange(option);\n } else if (!option.checked) {\n option.checked = true;\n }\n }\n\n public handleChange(option) {\n if (!option.checked) {\n this.value = undefined;\n } else {\n this.value = option.value;\n }\n\n this.onChange(this.value);\n }\n\n public onChange = (args) => {};\n public onTouched = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selected) {\n this.updateSelectedOption();\n }\n }\n\n private updateSelectedOption(): void {\n if (this.selected) {\n const maybeOpt = this.options.find((opt) => opt.value === this.selected);\n if (maybeOpt) {\n this.options.forEach((opt) => (opt.checked = opt === maybeOpt));\n this.value = this.selected;\n }\n }\n }\n}\n","<fieldset class=\"cds--fieldset\">\n <div\n *ngFor=\"let option of options; let i = index\"\n class=\"cds--form-item cds--radio-wrapper\"\n [ngClass]=\"{ inline: orientation === 'horizontal' }\"\n >\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"id\"\n [checked]=\"option.checked\"\n [value]=\"option.value\"\n (click)=\"handleClick(option)\"\n (change)=\"handleChange(option)\"\n />\n {{ option.label }}\n </label>\n </div>\n</fieldset>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ofe-workspace-launcher',\n templateUrl: './workspace-launcher.component.html'\n})\nexport class WorkspaceLauncherComponent {\n @Input() public id: string;\n @Input() public buttonLabel: string;\n @Input() public buttonType: string;\n @Input() public workspaceName: string;\n\n public handleClick() {\n // We check that this is defined in question.factory.ts `toWorkspaceLauncher`\n window['_openmrs_esm_patient_common_lib'].launchPatientWorkspace(\n this.workspaceName\n );\n }\n}\n","<fieldset class=\"cds--fieldset\">\n <div class=\"cds--form-item\">\n <button\n type=\"button\"\n class=\"cds--btn\"\n [ngClass]=\"'cds--btn--' + buttonType\"\n [id]=\"id\"\n (click)=\"handleClick()\"\n >\n {{ buttonLabel }}\n </button>\n </div>\n</fieldset>\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n 'OWL_DATE_TIME_LOCALE',\n {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n /** The locale to use for all dates. */\n protected locale: any;\n\n /** A stream that emits when the locale changes. */\n protected _localeChanges = new Subject<void>();\n get localeChanges(): Observable<void> {\n return this._localeChanges;\n }\n\n /** total milliseconds in a day. */\n protected readonly millisecondsInDay = 86400000;\n\n /** total milliseconds in a minute. */\n protected readonly milliseondsInMinute = 60000;\n\n /**\n * Get the year of the given date\n */\n abstract getYear(date: T): number;\n\n /**\n * Get the month of the given date\n * 0 -- January\n * 11 -- December\n * */\n abstract getMonth(date: T): number;\n\n /**\n * Get the day of the week of the given date\n * 0 -- Sunday\n * 6 -- Saturday\n * */\n abstract getDay(date: T): number;\n\n /**\n * Get the day num of the given date\n */\n abstract getDate(date: T): number;\n\n /**\n * Get the hours of the given date\n */\n abstract getHours(date: T): number;\n\n /**\n * Get the minutes of the given date\n */\n abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n abstract getSeconds(date: T): number;\n\n /**\n * Get the milliseconds timestamp of the given date\n */\n abstract getTime(date: T): number;\n\n /**\n * Gets the number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: T): number;\n\n /**\n * Get the number of calendar days between the given dates.\n * If dateLeft is before dateRight, it would return positive value\n * If dateLeft is after dateRight, it would return negative value\n */\n abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n /**\n * Gets the name for the year of the given date.\n */\n abstract getYearName(date: T): string;\n\n /**\n * Get a list of month names\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Get a list of week names\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n */\n abstract getDateNames(): string[];\n\n /**\n * Return a Date object as a string, using the ISO standard\n */\n abstract toIso8601(date: T): string;\n\n /**\n * Check if the give dates are equal\n */\n abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Check if the give dates are the same day\n */\n abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Checks whether the given date is valid.\n */\n abstract isValid(date: T): boolean;\n\n /**\n * Gets date instance that is not valid.\n */\n abstract invalid(): T;\n\n /**\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Add the specified number of years to the given date\n */\n abstract addCalendarYears(date: T, amount: number): T;\n\n /**\n * Add the specified number of months to the given date\n */\n abstract addCalendarMonths(date: T, amount: number): T;\n\n /**\n * Add the specified number of days to the given date\n */\n abstract addCalendarDays(date: T, amount: number): T;\n\n /**\n * Set the hours to the given date.\n */\n abstract setHours(date: T, amount: number): T;\n\n /**\n * Set the minutes to the given date.\n */\n abstract setMinutes(date: T, amount: number): T;\n\n /**\n * Set the seconds to the given date.\n */\n abstract setSeconds(date: T, amount: number): T;\n\n /**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\n abstract createDate(year: number, month: number, date: number): T;\n abstract createDate(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): T;\n\n /**\n * Clone the given date\n */\n abstract clone(date: T): T;\n\n /**\n * Get a new moment\n * */\n abstract now(): T;\n\n /**\n * Formats a date as a string according to the given format.\n */\n abstract format(date: T, displayFormat: any): string;\n\n /**\n * Parse a user-provided value to a Date Object\n */\n abstract parse(value: any, parseFormat: any): T | null;\n\n /**\n * Compare two given dates\n * 1 if the first date is after the second,\n * -1 if the first date is before the second\n * 0 if dates are equal.\n * */\n compare(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const dateFirst = this.clone(first);\n const dateSecond = this.clone(second);\n\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n }\n }\n\n /**\n * Check if two given dates are in the same year\n * 1 if the first date's year is after the second,\n * -1 if the first date's year is before the second\n * 0 if two given dates are in the same year\n * */\n compareYear(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const yearLeft = this.getYear(first);\n const yearRight = this.getYear(second);\n\n const diff = yearLeft - yearRight;\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n */\n deserialize(value: any): T | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Clamp the given date between min and max dates.\n */\n clampDate(date: T, min?: T | null, max?: T | null): T {\n if (min && this.compare(date, min) < 0) {\n return min;\n }\n if (max && this.compare(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OwlDateTimeIntl {\n constructor(public translate: TranslateService) {}\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the up second button (used by screen readers). */\n upSecondLabel = 'Add a second';\n\n /** A label for the down second button (used by screen readers). */\n downSecondLabel = 'Minus a second';\n\n /** A label for the up minute button (used by screen readers). */\n upMinuteLabel = 'Add a minute';\n\n /** A label for the down minute button (used by screen readers). */\n downMinuteLabel = 'Minus a minute';\n\n /** A label for the up hour button (used by screen readers). */\n upHourLabel = 'Add a hour';\n\n /** A label for the down hour button (used by screen readers). */\n downHourLabel = 'Minus a hour';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel = 'Previous 21 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel = 'Next 21 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel = 'Choose month and year';\n\n /** A label for the cancel button */\n cancelBtnLabel = this.translate.instant('cancel');\n\n /** A label for the set button */\n setBtnLabel = this.translate.instant('set');\n\n /** A label for the range 'from' in picker info */\n rangeFromLabel = this.translate.instant('from');\n\n /** A label for the range 'to' in picker info */\n rangeToLabel = this.translate.instant('to');\n\n /** A label for the hour12 button (AM) */\n hour12AMLabel = 'AM';\n\n /** A label for the hour12 button (PM) */\n hour12PMLabel = 'PM';\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\n parseInput: any;\n fullPickerInput: any;\n datePickerInput: any;\n timePickerInput: any;\n monthYearLabel: any;\n dateA11yLabel: any;\n monthYearA11yLabel: any;\n}\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>(\n 'OWL_DATE_TIME_FORMATS'\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from './date-time.class';\n\nexport class CalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public out = false,\n public cellClass: string = ''\n ) {}\n}\n\n@Component({\n /* eslint-disable-next-line @angular-eslint/component-selector */\n selector: '[ofe-owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n styleUrls: ['./calendar-body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent {\n @HostBinding('class.owl-dt-calendar-body') owlDTCalendarBodyClass = true;\n\n /**\n * The cell number of the active cell in the table.\n */\n @Input()\n activeCell = 0;\n\n /**\n * The cells to display in the table.\n * */\n @Input()\n rows: CalendarCell[][];\n\n /**\n * The number of columns in the table.\n * */\n @Input()\n numCols = 7;\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n @Input()\n cellRatio = 1;\n\n /**\n * The value in the table that corresponds to today.\n * */\n @Input()\n todayValue: number;\n\n /**\n * The value in the table that is currently selected.\n * */\n @Input()\n selectedValues: number[];\n\n /**\n * Current picker select mode\n */\n @Input()\n selectMode: SelectMode;\n\n /**\n * Emit when a calendar cell is selected\n * */\n @Output()\n public readonly cellSelected = new EventEmitter<CalendarCell>();\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n constructor(private elmRef: ElementRef, private ngZone: NgZone) {}\n\n public selectCell(cell: CalendarCell): void {\n this.cellSelected.emit(cell);\n }\n\n public isActiveCell(rowIndex: number, colIndex: number): boolean {\n const cellNumber = rowIndex * this.numCols + colIndex;\n return cellNumber === this.activeCell;\n }\n\n /**\n * Check if the cell is selected\n */\n public isSelected(value: number): boolean {\n if (!this.selectedValues || this.selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === this.selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\n }\n\n /**\n * Check if the cell in the range\n * */\n public isInRange(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n if (fromValue !== null && toValue !== null) {\n return value >= fromValue && value <= toValue;\n } else {\n return value === fromValue || value === toValue;\n }\n }\n }\n\n /**\n * Check if the cell is the range from\n * */\n public isRangeFrom(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n return fromValue !== null && value === fromValue;\n }\n }\n\n /**\n * Check if the cell is the range to\n * */\n public isRangeTo(value: number): boolean {\n if (this.isInRangeMode) {\n const toValue = this.selectedValues[1];\n return toValue !== null && value === toValue;\n }\n }\n\n /**\n * Focus to a active cell\n * */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n}\n","<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <td\n *ngFor=\"let item of row; let colIndex = index\"\n class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [style.width.%]=\"100 / numCols\"\n [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n (click)=\"selectCell(item)\"\n >\n <span\n class=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue,\n 'owl-dt-calendar-cell-selected': isSelected(item.value)\n }\"\n >\n {{ item.displayValue }}\n </span>\n </td>\n</tr>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\n\nexport const YEARS_PER_ROW = 3;\nexport const YEAR_ROWS = 7;\n\n@Component({\n selector: 'ofe-owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n styleUrls: ['./calendar-multi-year-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMultiYearViewComponent<T> implements AfterContentInit {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n @HostBinding('class.owl-dt-calendar-multi-year-view')\n get owlDTCalendarMultiYearView() {\n return true;\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedYears();\n }\n }\n\n private _selecteds: T[] = [];\n\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (\n oldMoment &&\n this._pickerMoment &&\n !this.isSameYearList(oldMoment, this._pickerMoment)\n ) {\n this.generateYearList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n private _todayYear: number;\n get todayYear(): number {\n return this._todayYear;\n }\n\n private _years: CalendarCell[][];\n get years() {\n return this._years;\n }\n\n private _selectedYears: number[];\n get selectedYears(): number[] {\n return this._selectedYears;\n }\n\n private initiated = false;\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return (\n this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)\n );\n }\n }\n\n get tableHeader(): string {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} ~ ${\n this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue\n }`;\n }\n }\n\n get prevButtonLabel(): string {\n return this.pickerIntl.prevMultiYearLabel;\n }\n\n get nextButtonLabel(): string {\n return this.pickerIntl.nextMultiYearLabel;\n }\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output() readonly monthChange = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output() readonly yearSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output() readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<\n T\n >();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output() readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n public ngAfterContentInit(): void {\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n this.generateYearList();\n this.initiated = true;\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectYear(cell.value);\n }\n\n private selectYear(year: number): void {\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n 1\n );\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const selected = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.monthChange.emit(selected);\n }\n\n /**\n * Generate the previous year list\n * */\n public prevYearList(event: any): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n -1 * YEAR_ROWS * YEARS_PER_ROW\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n /**\n * Generate the next year list\n * */\n public nextYearList(event: any): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n YEAR_ROWS * YEARS_PER_ROW\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS);\n\n for (let i = 0; i < YEAR_ROWS; i++) {\n const row = [];\n\n for (let j = 0; j < YEARS_PER_ROW; j++) {\n const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n }\n\n /** Whether the previous period button is enabled. */\n public previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return (\n !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate)\n );\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return (\n !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate)\n );\n }\n\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 year\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -1 * YEARS_PER_ROW\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n YEARS_PER_ROW\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the first year of the year page\n case HOME:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the last year of the year page\n case END:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n YEARS_PER_ROW * YEAR_ROWS -\n (this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)) -\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year page (or 10 year pages)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey\n ? -10 * (YEARS_PER_ROW * YEAR_ROWS)\n : -1 * (YEARS_PER_ROW * YEAR_ROWS)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year page (or 10 year pages)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey\n ? 10 * (YEARS_PER_ROW * YEAR_ROWS)\n : YEARS_PER_ROW * YEAR_ROWS\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit();\n break;\n\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Creates an CalendarCell for the given year.\n */\n private createYearCell(year: number): CalendarCell {\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = 'owl-dt-year-' + year;\n return new CalendarCell(\n year,\n year.toString(),\n ariaLabel,\n this.isYearEnabled(year),\n false,\n cellClass\n );\n }\n\n private setSelectedYears(): void {\n this._selectedYears = [];\n\n if (this.isInSingleMode && this.selected) {\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this._selectedYears = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n return this.dateTimeAdapter.getYear(selected);\n } else {\n return null;\n }\n });\n }\n }\n\n /** Whether the given year is enabled. */\n private isYearEnabled(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (\n year === undefined ||\n year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n ) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (\n let date = firstOfYear;\n this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isSameYearList(date1: T, date2: T): boolean {\n return (\n Math.floor(\n this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)\n ) ===\n Math.floor(\n this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS)\n )\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"prevYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{ tableHeader }}</th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"years\"\n [numCols]=\"3\"\n [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"nextYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n selector: 'ofe-owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n styleUrls: ['./calendar-year-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n this.setSelectedMonths();\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = [];\n for (let i = 0; i < values.length; i++) {\n const value = this.dateTimeAdapter.deserialize(values[i]);\n this._selecteds.push(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n private readonly monthNames: string[];\n\n private _months: CalendarCell[][];\n get months() {\n return this._months;\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\n\n /**\n * An array to hold all selectedDates' month value\n * the value is the month number in current year\n * */\n public selectedMonths: number[] = [];\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output()\n readonly monthChange = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output()\n readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n }\n\n public ngOnInit() {\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateMonthList();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateMonthList();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectMonth(cell.value);\n }\n\n /**\n * Handle a new month selected\n */\n private selectMonth(month: number): void {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.monthChange.emit(result);\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 month\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? -10 : -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? 10 : 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n this.keyboardEnter.emit();\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar month list\n * */\n private generateMonthList(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.setSelectedMonths();\n this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW;\n const monthCell = this.createMonthCell(month);\n row.push(monthCell);\n }\n\n this._months.push(row);\n }\n\n return;\n }\n\n /**\n * Creates an CalendarCell for the given month.\n */\n private createMonthCell(month: number): CalendarCell {\n const startDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n const ariaLabel = this.dateTimeAdapter.format(\n startDateOfMonth,\n this.dateTimeFormats.monthYearA11yLabel\n );\n const cellClass = 'owl-dt-month-' + month;\n return new CalendarCell(\n month,\n this.monthNames[month],\n ariaLabel,\n this.isMonthEnabled(month),\n false,\n cellClass\n );\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: T | null): number {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(date, this._pickerMoment);\n\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n if (result < 0) {\n return -1;\n } else if (result > 0) {\n return 12;\n } else {\n return this.dateTimeAdapter.getMonth(date);\n }\n } else {\n return null;\n }\n }\n\n /**\n * Set the selectedMonths value\n * In single mode, it has only one value which represent the month the selected date in\n * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n * */\n private setSelectedMonths(): void {\n this.selectedMonths = [];\n if (this.isInSingleMode && this.selected) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selecteds[0]);\n this.selectedMonths[1] = this.getMonthInCurrentYear(this.selecteds[1]);\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T) {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n aria-hidden=\"true\"\n colspan=\"3\"\n ></th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"months\"\n [numCols]=\"3\"\n [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayMonth\"\n [selectedValues]=\"selectedMonths\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'ofe-owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths = false;\n\n /**\n * Define the first day of a week\n * Sunday: 0 ~ Saturday: 6\n * */\n private _firstDayOfWeek = 0;\n @Input()\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(val: number) {\n val = coerceNumberProperty(val);\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n\n if (this.initiated) {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedDates();\n }\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedDates();\n }\n\n private _pickerMoment: T;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this._pickerMoment),\n this.dateTimeAdapter.getMonth(this._pickerMoment),\n 1\n );\n\n if (!this.isSameMonth(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n private _weekdays: Array<{ long: string; short: string; narrow: string }>;\n get weekdays() {\n return this._weekdays;\n }\n\n private _days: CalendarCell[][];\n get days() {\n return this._days;\n }\n\n get activeCell(): number {\n if (this.pickerMoment) {\n return (\n this.dateTimeAdapter.getDate(this.pickerMoment) +\n this.firstRowOffset -\n 1\n );\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private firstDateOfMonth: T;\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n private dateNames: string[];\n\n /**\n * The date of the month that today falls on.\n * */\n public todayDate: number | null;\n\n /**\n * An array to hold all selectedDates' value\n * the value is the day number in current month\n * */\n public selectedDates: number[] = [];\n\n // the index of cell that contains the first date of the month\n public firstRowOffset: number;\n\n /**\n * Callback to invoke when a new date is selected\n * */\n @Output()\n readonly selectedChange = new EventEmitter<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n * */\n @Output()\n readonly userSelection = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {}\n\n public ngOnInit() {\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateCalendar();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n // Cases in which the date would not be selected\n // 1, the calendar cell is NOT enabled (is NOT valid)\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n return;\n }\n\n this.selectDate(cell.value);\n }\n\n /**\n * Handle a new date selected\n */\n private selectDate(date: number): void {\n const daysDiff = date - 1;\n const selected = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n\n this.selectedChange.emit(selected);\n this.userSelection.emit();\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 day\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last day of current month\n case END:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) -\n this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 month (or 1 year)\n case PAGE_UP:\n moment = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month (or 1 year)\n case PAGE_DOWN:\n moment = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // select the pickerMoment\n case ENTER:\n if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n }\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar weekdays array\n * */\n private generateWeekDays(): void {\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n const firstDayOfWeek = this.firstDayOfWeek;\n\n const weekdays = longWeekdays.map((long, i) => {\n return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n });\n\n this._weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this.dateNames = this.dateTimeAdapter.getDateNames();\n\n return;\n }\n\n /**\n * Generate the calendar days array\n * */\n private generateCalendar(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.todayDate = null;\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n this.firstDateOfMonth\n );\n const firstDayOfWeek = this.firstDayOfWeek;\n\n // the amount of days from the first date of the month\n // if it is < 0, it means the date is in previous month\n let daysDiff =\n 0 -\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n DAYS_PER_WEEK);\n\n // the index of cell that contains the first date of the month\n this.firstRowOffset = Math.abs(daysDiff);\n\n this._days = [];\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n const week = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n const dateCell = this.createDateCell(date, daysDiff);\n\n // check if the date is today\n if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n }\n\n this.setSelectedDates();\n }\n\n /**\n * Creates CalendarCell for days.\n */\n private createDateCell(date: T, daysDiff: number): CalendarCell {\n // total days of the month\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n this.pickerMoment\n );\n const dateNum = this.dateTimeAdapter.getDate(date);\n // const dateName = this.dateNames[dateNum - 1];\n const dateName = dateNum.toString();\n const ariaLabel = this.dateTimeAdapter.format(\n date,\n this.dateTimeFormats.dateA11yLabel\n );\n\n // check if the date if selectable\n const enabled = this.isDateEnabled(date);\n\n // check if date is not in current month\n const dayValue = daysDiff + 1;\n const out = dayValue < 1 || dayValue > daysInMonth;\n const cellClass = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n return new CalendarCell(\n dayValue,\n dateName,\n ariaLabel,\n enabled,\n out,\n cellClass\n );\n }\n\n /**\n * Check if the date is valid\n */\n private isDateEnabled(date: T): boolean {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Check if the give dates are none-null and in the same month\n */\n public isSameMonth(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.isValid(dateLeft) &&\n this.dateTimeAdapter.isValid(dateRight) &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) ===\n this.dateTimeAdapter.getMonth(dateRight)\n );\n }\n\n /**\n * Set the selectedDates value.\n * In single mode, it has only one value which represent the selected date\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\n * */\n private setSelectedDates(): void {\n this.selectedDates = [];\n\n if (!this.firstDateOfMonth) {\n return;\n }\n\n if (this.isInSingleMode && this.selected) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n this.selected,\n this.firstDateOfMonth\n );\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n selected,\n this.firstDateOfMonth\n );\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n>\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n <th\n *ngFor=\"let weekday of weekdays\"\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\"\n >\n <span>{{ weekday.short }}</span>\n </th>\n </tr>\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n aria-hidden=\"true\"\n colspan=\"7\"\n ></th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"days\"\n [todayValue]=\"todayDate\"\n [selectedValues]=\"selectedDates\"\n [selectMode]=\"selectMode\"\n [activeCell]=\"activeCell\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n","import {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { SelectMode } from './date-time.class';\n\n@Component({\n selector: 'ofe-owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T>\n implements AfterContentInit, AfterViewChecked, OnDestroy {\n @HostBinding('class.owl-dt-calendar') get owlDTCalendarClass() {\n return true;\n }\n\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._minDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._maxDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n }\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView\n ? this.dateTimeAdapter.format(\n this.pickerMoment,\n this.dateTimeFormats.monthYearLabel\n )\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView\n ? this.pickerIntl.switchToMultiYearViewLabel\n : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n get currentView(): 'month' | 'year' | 'multi-years' {\n return this._currentView;\n }\n\n set currentView(view: 'month' | 'year' | 'multi-years') {\n this._currentView = view;\n this.moveFocusOnNextTick = true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== 'multi-years';\n }\n\n get isMonthView() {\n return this._currentView === 'month';\n }\n\n constructor(\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n /**\n * Date filter for the month and year view\n * */\n @Input()\n dateFilter: Function;\n\n /**\n * Set the first day of week\n */\n @Input()\n firstDayOfWeek = 0;\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n selectMode: SelectMode;\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: T[] = [];\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths: boolean;\n\n /** Emits when the currently picker moment changes. */\n @Output()\n pickerMomentChange = new EventEmitter<T>();\n\n /** Emits when the currently selected date changes. */\n @Output()\n selectedChange = new EventEmitter<T>();\n\n /** Emits when any date is selected. */\n @Output()\n userSelection = new EventEmitter<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly yearSelected = new EventEmitter<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n private _currentView: 'month' | 'year' | 'multi-years';\n\n private intlChangesSub = Subscription.EMPTY;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n\n /**\n * Date filter for the month and year view\n */\n public dateFilterForViews = (date: T) => {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngAfterContentInit(): void {\n this._currentView = this.startView;\n }\n\n public ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n public ngOnDestroy(): void {\n this.intlChangesSub.unsubscribe();\n }\n\n /**\n * Toggle between month view and year view\n */\n public toggleViews(): void {\n this.currentView = this._currentView === 'month' ? 'multi-years' : 'month';\n }\n\n /**\n * Handles user clicks on the previous button.\n * */\n public previousClicked(): void {\n this.pickerMoment = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n /**\n * Handles user clicks on the next button.\n * */\n public nextClicked(): void {\n this.pickerMoment = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n public dateSelected(date: T): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.selectedChange.emit(date);\n\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n this.isInRangeMode) {\n this.selectedChange.emit(date);\n }*/\n }\n\n /**\n * Change the pickerMoment value and switch to a specific view\n */\n public goToDateInView(date: T, view: 'month' | 'year' | 'multi-years'): void {\n this.handlePickerMomentChange(date);\n this.currentView = view;\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(\n date,\n this.minDate,\n this.maxDate\n );\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n }\n\n /**\n * Focus to the host element\n * */\n public focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n\n public selectYearInMultiYearView(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n public selectMonthInYearView(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n */\n private isSameView(date1: T, date2: T): boolean {\n if (this._currentView === 'month') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) ===\n this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === 'year') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2)\n );\n } else {\n return false;\n }\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"0\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n [disabled]=\"!prevButtonEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n (click)=\"previousClicked()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n <div class=\"owl-dt-calendar-control-content\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n type=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ periodButtonText }}\n\n <span\n class=\"owl-dt-control-button-arrow\"\n [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\"\n >\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width=\"50%\"\n height=\"50%\"\n viewBox=\"0 0 292.362 292.362\"\n style=\"enable-background: new 0 0 292.362 292.362\"\n xml:space=\"preserve\"\n >\n <g>\n <path\n d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\"\n />\n </g>\n </svg>\n <!-- </editor-fold> -->\n </span>\n </span>\n </button>\n </div>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"0\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n [disabled]=\"!nextButtonEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n (click)=\"nextClicked()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n</div>\n<div\n class=\"owl-dt-calendar-main\"\n cdkMonitorSubtreeFocus\n [ngSwitch]=\"currentView\"\n tabindex=\"-1\"\n>\n <ofe-owl-date-time-month-view\n *ngSwitchCase=\"'month'\"\n [pickerMoment]=\"pickerMoment\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n [hideOtherMonths]=\"hideOtherMonths\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"\n ></ofe-owl-date-time-month-view>\n\n <ofe-owl-date-time-year-view\n *ngSwitchCase=\"'year'\"\n [pickerMoment]=\"pickerMoment\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (monthSelected)=\"selectMonthInYearView($event)\"\n (monthChange)=\"goToDateInView($event, 'month')\"\n ></ofe-owl-date-time-year-view>\n\n <ofe-owl-date-time-multi-year-view\n *ngSwitchCase=\"'multi-years'\"\n [pickerMoment]=\"pickerMoment\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (yearSelected)=\"selectYearInMultiYearView($event)\"\n (monthChange)=\"goToDateInView($event, 'year')\"\n ></ofe-owl-date-time-multi-year-view>\n</div>\n","/**\n * date-time-picker.animations\n */\nimport {\n animate,\n animateChild,\n AnimationTriggerMetadata,\n group,\n query,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const owlDateTimePickerAnimations: {\n readonly transformPicker: AnimationTriggerMetadata;\n readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n transformPicker: trigger('transformPicker', [\n state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\n state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\n transition(\n 'void => enter',\n group([\n query('@fadeInPicker', animateChild(), { optional: true }),\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n ),\n transition('enter => void', animate('100ms linear', style({ opacity: 0 })))\n ]),\n\n fadeInPicker: trigger('fadeInPicker', [\n state('enter', style({ opacity: 1 })),\n state('void', style({ opacity: 0 })),\n transition(\n 'void => enter',\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n )\n ])\n};\n","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'numberFixedLen'\n})\nexport class NumberFixedLenPipe implements PipeTransform {\n transform(num: number, len: number): any {\n const number = Math.floor(num);\n const length = Math.floor(len);\n\n if (num === null || isNaN(number) || isNaN(length)) {\n return num;\n }\n\n let numString = number.toString();\n\n while (numString.length < length) {\n numString = '0' + numString;\n }\n\n return numString;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'ofe-owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n @HostBinding('class.owl-dt-timer-box')\n get owlDTTimerBoxClass() {\n return true;\n }\n\n @Input() showDivider = false;\n\n @Input() upBtnAriaLabel: string;\n\n @Input() upBtnDisabled: boolean;\n\n @Input() downBtnAriaLabel: string;\n\n @Input() downBtnDisabled: boolean;\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n * */\n @Input() boxValue: number;\n\n @Input() value: number;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() step = 1;\n\n @Input() inputLabel: string;\n\n @Output() valueChange = new EventEmitter<number>();\n\n @Output() inputChange = new EventEmitter<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n get displayValue(): number {\n return this.boxValue || this.value;\n }\n\n constructor() {}\n\n public ngOnInit() {\n this.inputStreamSub = this.inputStream\n .pipe(debounceTime(500), distinctUntilChanged())\n .subscribe((val: string) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value + this.step);\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value - this.step);\n }\n\n public handleInputChange(val: string): void {\n this.inputStream.next(val);\n }\n\n private updateValue(value: number): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput(value: number): void {\n if (value > this.max || value < this.min) {\n return;\n }\n this.inputChange.emit(value);\n }\n}\n","<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"upBtnDisabled\"\n [attr.aria-label]=\"upBtnAriaLabel\"\n (click)=\"upBtnClicked()\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n class=\"owl-dt-timer-input\"\n maxlength=\"2\"\n [value]=\"displayValue | numberFixedLen: 2\"\n (input)=\"handleInputChange(valueInput.value)\"\n #valueInput\n />\n <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"downBtnDisabled\"\n [attr.aria-label]=\"downBtnAriaLabel\"\n (click)=\"downBtnClicked()\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n Optional,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'ofe-owl-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlTimerComponent<T> {\n @HostBinding('attr.tabindex')\n get owlDTTimeTabIndex() {\n return -1;\n }\n\n @HostBinding('class.owl-dt-timer')\n get owlDTTimerClass() {\n return true;\n }\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | null;\n\n @Input()\n get minDateTime(): T | null {\n return this._minDateTime;\n }\n\n set minDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDateTime = this.getValidDate(value);\n }\n\n /** The maximum selectable date time. */\n private _maxDateTime: T | null;\n\n @Input()\n get maxDateTime(): T | null {\n return this._maxDateTime;\n }\n\n set maxDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDateTime = this.getValidDate(value);\n }\n\n private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n /**\n * Whether to show the second's timer\n */\n @Input()\n showSecondsTimer: boolean;\n\n /**\n * Whether the timer is in hour12 format\n */\n @Input()\n hour12Timer: boolean;\n\n /**\n * Hours to change per step\n */\n @Input()\n stepHour = 1;\n\n /**\n * Minutes to change per step\n */\n @Input()\n stepMinute = 1;\n\n /**\n * Seconds to change per step\n */\n @Input()\n stepSecond = 1;\n\n get hourValue(): number {\n return this.dateTimeAdapter.getHours(this.pickerMoment);\n }\n\n /**\n * The value would be displayed in hourBox.\n * We need this because the value displayed in hourBox it not\n * the same as the hourValue when the timer is in hour12Timer mode.\n * */\n get hourBoxValue(): number {\n let hours = this.hourValue;\n\n if (!this.hour12Timer) {\n return hours;\n } else {\n if (hours === 0) {\n hours = 12;\n this.isPM = false;\n } else if (hours > 0 && hours < 12) {\n this.isPM = false;\n } else if (hours === 12) {\n this.isPM = true;\n } else if (hours > 12 && hours < 24) {\n hours = hours - 12;\n this.isPM = true;\n }\n\n return hours;\n }\n }\n\n get minuteValue(): number {\n return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n }\n\n get secondValue(): number {\n return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n }\n\n get upHourButtonLabel(): string {\n return this.pickerIntl.upHourLabel;\n }\n\n get downHourButtonLabel(): string {\n return this.pickerIntl.downHourLabel;\n }\n\n get upMinuteButtonLabel(): string {\n return this.pickerIntl.upMinuteLabel;\n }\n\n get downMinuteButtonLabel(): string {\n return this.pickerIntl.downMinuteLabel;\n }\n\n get upSecondButtonLabel(): string {\n return this.pickerIntl.upSecondLabel;\n }\n\n get downSecondButtonLabel(): string {\n return this.pickerIntl.downSecondLabel;\n }\n\n get hour12ButtonLabel(): string {\n return this.isPM\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel;\n }\n\n @Output()\n selectedChange = new EventEmitter<T>();\n\n constructor(\n private ngZone: NgZone,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n /**\n * Focus to the host element\n * */\n public focus() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.focus();\n });\n });\n }\n\n /**\n * Set the hour value via typing into timer box input\n * We need this to handle the hour value when the timer is in hour12 mode\n * */\n public setHourValueViaInput(hours: number): void {\n if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (this.hour12Timer && !this.isPM && hours === 12) {\n hours = 0;\n }\n\n this.setHourValue(hours);\n }\n\n public setHourValue(hours: number): void {\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMinuteValue(minutes: number): void {\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setSecondValue(seconds: number): void {\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMeridiem(event: any): void {\n this.isPM = !this.isPM;\n\n let hours = this.hourValue;\n if (this.isPM) {\n hours = hours + 12;\n } else {\n hours = hours - 12;\n }\n\n if (hours >= 0 && hours <= 23) {\n this.setHourValue(hours);\n }\n\n this.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareHours(this.stepHour, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareHours(-this.stepHour, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareMinutes(this.stepMinute, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareMinutes(-this.stepMinute, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareSeconds(this.stepSecond, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareSeconds(-this.stepSecond, this.minDateTime) > -1\n );\n }\n\n /**\n * PickerMoment's hour value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareHours(amount: number, comparedDate: T): number {\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's minute value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareMinutes(amount: number, comparedDate: T): number {\n const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's second value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareSeconds(amount: number, comparedDate: T): number {\n const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<ofe-owl-date-time-timer-box\n [upBtnAriaLabel]=\"upHourButtonLabel\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [boxValue]=\"hourBoxValue\"\n [value]=\"hourValue\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"stepHour\"\n [inputLabel]=\"'Hour'\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"\n></ofe-owl-date-time-timer-box>\n<ofe-owl-date-time-timer-box\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [value]=\"minuteValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepMinute\"\n [inputLabel]=\"'Minute'\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"\n></ofe-owl-date-time-timer-box>\n<ofe-owl-date-time-timer-box\n *ngIf=\"showSecondsTimer\"\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [value]=\"secondValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepSecond\"\n [inputLabel]=\"'Second'\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"\n></ofe-owl-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\" class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { owlDateTimePickerAnimations } from './date-time-picker.animations';\nimport { OwlTimerComponent } from './timer.component';\n\n@Component({\n exportAs: 'owlDateTimeContainer',\n selector: 'ofe-owl-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n styleUrls: ['./date-time-picker-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n owlDateTimePickerAnimations.transformPicker,\n owlDateTimePickerAnimations.fadeInPicker\n ]\n})\nexport class OwlDateTimeContainerComponent<T>\n implements AfterContentInit, AfterViewInit {\n @ViewChild(OwlCalendarComponent, { static: false })\n calendar: OwlCalendarComponent<T>;\n\n @ViewChild(OwlTimerComponent, { static: false })\n timer: OwlTimerComponent<T>;\n\n @HostBinding('class.owl-dt-container') get owlDTContainerClass() {\n return true;\n }\n\n @HostBinding('class.owl-dt-popup-container') get owlDTPopupContainerClass() {\n return this.picker.pickerMode === 'popup';\n }\n\n @HostBinding('class.owl-dt-dialog-container')\n get owlDTDialogContainerClass() {\n return this.picker.pickerMode === 'dialog';\n }\n\n @HostBinding('class.owl-dt-inline-container')\n get owlDTInlineContainerClass() {\n return this.picker.pickerMode === 'inline';\n }\n\n @HostBinding('class.owl-dt-container-disabled')\n get owlDTContainerDisabledClass() {\n return this.picker.disabled;\n }\n\n @HostBinding('attr.id') get owlDTContainerId() {\n return this.picker.id;\n }\n\n @HostBinding('@transformPicker') get owlDTContainerAnimation() {\n return this.picker.pickerMode === 'inline' ? '' : 'enter';\n }\n\n @HostListener('@transformPicker.done', ['$event'])\n public handleContainerAnimationDone(event: AnimationEvent): void {\n const toState = event.toState;\n if (toState === 'enter') {\n this.pickerOpened$.next(true);\n }\n }\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n /**\n * Stream emits when try to hide picker\n * */\n private hidePicker$ = new Subject<any>();\n\n get hidePickerStream(): Observable<any> {\n return this.hidePicker$.asObservable();\n }\n\n /**\n * Stream emits when try to confirm the selected value\n * */\n private confirmSelected$ = new Subject<any>();\n\n get confirmSelectedStream(): Observable<any> {\n return this.confirmSelected$.asObservable();\n }\n\n private pickerOpened$ = new Subject<any>();\n\n get pickerOpenedStream(): Observable<any> {\n return this.pickerOpened$.asObservable();\n }\n\n /**\n * The current picker moment. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n private _clamPickerMoment: T;\n\n get pickerMoment() {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\n value,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return this.picker.pickerType;\n }\n\n get cancelLabel(): string {\n return this.pickerIntl.cancelBtnLabel;\n }\n\n get setLabel(): string {\n return this.pickerIntl.setBtnLabel;\n }\n\n /**\n * The range 'from' label\n * */\n get fromLabel(): string {\n return this.pickerIntl.rangeFromLabel;\n }\n\n /**\n * The range 'to' label\n * */\n get toLabel(): string {\n return this.pickerIntl.rangeToLabel;\n }\n\n /**\n * The range 'from' formatted value\n * */\n get fromFormattedValue(): string {\n const value = this.picker.selecteds[0];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * The range 'to' formatted value\n * */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * Cases in which the control buttons show in the picker\n * 1) picker mode is 'dialog'\n * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n * */\n get showControlButtons(): boolean {\n return (\n this.picker.pickerMode === 'dialog' ||\n (this.picker.pickerType !== 'calendar' &&\n this.picker.pickerMode !== 'inline')\n );\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public ngAfterViewInit(): void {\n this.focusPicker();\n }\n\n public dateSelected(date: T): void {\n let result;\n\n if (this.picker.isInSingleMode) {\n result = this.dateSelectedInSingleMode(date);\n if (result) {\n this.pickerMoment = result;\n this.picker.select(result);\n } else {\n // we close the picker when result is null and pickerType is calendar.\n if (this.pickerType === 'calendar') {\n this.hidePicker$.next(null);\n }\n }\n return;\n }\n\n if (this.picker.isInRangeMode) {\n result = this.dateSelectedInRangeMode(date);\n if (result) {\n this.pickerMoment = result[this.activeSelectedIndex];\n this.picker.select(result);\n }\n }\n }\n\n public timeSelected(time: T): void {\n this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n return;\n }\n\n if (this.picker.isInSingleMode) {\n this.picker.select(this.pickerMoment);\n return;\n }\n\n if (this.picker.isInRangeMode) {\n const selecteds = [...this.picker.selecteds];\n\n // check if the 'from' is after 'to' or 'to'is before 'from'\n // In this case, we set both the 'from' and 'to' the same value\n if (\n (this.activeSelectedIndex === 0 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) ===\n 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n ) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Handle click on cancel button\n */\n public onCancelClicked(event: any): void {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on set button\n */\n public onSetClicked(event: any): void {\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n this.confirmSelected$.next(event);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleClickOnInfoGroup(event: any, index: number): void {\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleKeydownOnInfoGroup(event: any, next: any, index: number): void {\n switch (event.keyCode) {\n case DOWN_ARROW:\n case RIGHT_ARROW:\n case UP_ARROW:\n case LEFT_ARROW:\n next.focus();\n this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case SPACE:\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n return;\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (\n this.picker.selectMode === 'range' &&\n this.activeSelectedIndex !== index\n ) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerMoment = this.dateTimeAdapter.clone(selected);\n }\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n }\n\n /**\n * Select calendar date in single mode,\n * it returns null when date is not selected.\n */\n private dateSelectedInSingleMode(date: T): T | null {\n if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n return null;\n }\n\n return this.updateAndCheckCalendarDate(date);\n }\n\n /**\n * Select dates in range Mode\n */\n private dateSelectedInRangeMode(date: T): T[] | null {\n let from = this.picker.selecteds[0];\n let to = this.picker.selecteds[1];\n\n const result = this.updateAndCheckCalendarDate(date);\n\n if (!result) {\n return null;\n }\n\n // if the given calendar day is after or equal to 'from',\n // set ths given date as 'to'\n // otherwise, set it as 'from' and set 'to' to null\n if (this.picker.selectMode === 'range') {\n if (\n this.picker.selecteds &&\n this.picker.selecteds.length &&\n !to &&\n from &&\n this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n ) {\n to = result;\n this.activeSelectedIndex = 1;\n } else {\n from = result;\n to = null;\n this.activeSelectedIndex = 0;\n }\n } else if (this.picker.selectMode === 'rangeFrom') {\n from = result;\n\n // if the from value is after the to value, set the to value as null\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n to = null;\n }\n } else if (this.picker.selectMode === 'rangeTo') {\n to = result;\n\n // if the from value is after the to value, set the from value as null\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n from = null;\n }\n }\n\n return [from, to];\n }\n\n /**\n * Update the given calendar date's time and check if it is valid\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n * we need to update the given calendar date's time before selecting it.\n * if it is valid, return the updated dateTime\n * if it is not valid, return null\n */\n private updateAndCheckCalendarDate(date: T): T {\n let result;\n\n // if the picker is 'both', update the calendar date's time value\n if (this.picker.pickerType === 'both') {\n result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(date),\n this.dateTimeAdapter.getMonth(date),\n this.dateTimeAdapter.getDate(date),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n result = this.dateTimeAdapter.clampDate(\n result,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n } else {\n result = this.dateTimeAdapter.clone(date);\n }\n\n // check the updated dateTime\n return this.picker.dateTimeChecker(result) ? result : null;\n }\n\n /**\n * Focus to the picker\n * */\n private focusPicker(): void {\n if (this.picker.pickerMode === 'inline') {\n return;\n }\n\n if (this.calendar) {\n this.calendar.focusActiveCell();\n } else if (this.timer) {\n this.timer.focus();\n }\n }\n}\n","<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n [@fadeInPicker]=\"picker.pickerMode === 'inline' ? '' : 'enter'\"\n class=\"owl-dt-container-inner\"\n>\n <ofe-owl-date-time-calendar\n *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></ofe-owl-date-time-calendar>\n <ofe-owl-date-time-timer\n *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n ></ofe-owl-date-time-timer>\n <div\n *ngIf=\"picker.isInRangeMode\"\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 0 }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 1 }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"showControlButtons\"\n class=\"owl-dt-container-buttons owl-dt-container-row\"\n >\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n</div>\n","/**\n * date-time.class\n */\nimport {\n Component,\n EventEmitter,\n Inject,\n Injectable,\n Input,\n Optional\n} from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\n@Injectable()\nexport abstract class OwlDateTime<T> {\n @Input()\n get showSecondsTimer(): boolean {\n return this._showSecondsTimer;\n }\n\n set showSecondsTimer(val: boolean) {\n this._showSecondsTimer = coerceBooleanProperty(val);\n }\n @Input()\n get hour12Timer(): boolean {\n return this._hour12Timer;\n }\n\n set hour12Timer(val: boolean) {\n this._hour12Timer = coerceBooleanProperty(val);\n }\n @Input()\n get stepHour(): number {\n return this._stepHour;\n }\n\n set stepHour(val: number) {\n this._stepHour = coerceNumberProperty(val, 1);\n }\n @Input()\n get stepMinute(): number {\n return this._stepMinute;\n }\n\n set stepMinute(val: number) {\n this._stepMinute = coerceNumberProperty(val, 1);\n }\n @Input()\n get stepSecond(): number {\n return this._stepSecond;\n }\n\n set stepSecond(val: number) {\n this._stepSecond = coerceNumberProperty(val, 1);\n }\n @Input()\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(value: number) {\n value = coerceNumberProperty(value, 0);\n if (value > 6 || value < 0) {\n this._firstDayOfWeek = 0;\n } else {\n this._firstDayOfWeek = value;\n }\n }\n @Input()\n get hideOtherMonths(): boolean {\n return this._hideOtherMonths;\n }\n\n set hideOtherMonths(val: boolean) {\n this._hideOtherMonths = coerceBooleanProperty(val);\n }\n get id(): string {\n return this._id;\n }\n\n abstract get selected(): T | null;\n\n abstract get selecteds(): T[] | null;\n\n abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n abstract get maxDateTime(): T | null;\n\n abstract get minDateTime(): T | null;\n\n abstract get selectMode(): SelectMode;\n\n abstract get startAt(): T | null;\n\n abstract get opened(): boolean;\n\n abstract get pickerMode(): PickerMode;\n\n abstract get pickerType(): PickerType;\n\n abstract get isInSingleMode(): boolean;\n\n abstract get isInRangeMode(): boolean;\n\n get formatString(): string {\n return this.pickerType === 'both'\n ? this.dateTimeFormats.fullPickerInput\n : this.pickerType === 'calendar'\n ? this.dateTimeFormats.datePickerInput\n : this.dateTimeFormats.timePickerInput;\n }\n\n get disabled(): boolean {\n return false;\n }\n\n constructor(\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this._id = `owl-dt-picker-${nextUniqueId++}`;\n }\n /**\n * Whether to show the second's timer\n */\n private _showSecondsTimer = false;\n\n /**\n * Whether the timer is in hour12 format\n */\n private _hour12Timer = false;\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Hours to change per step\n */\n private _stepHour = 1;\n\n /**\n * Minutes to change per step\n */\n private _stepMinute = 1;\n\n /**\n * Seconds to change per step\n */\n private _stepSecond = 1;\n\n /**\n * Set the first day of week\n */\n private _firstDayOfWeek = 0;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n private _hideOtherMonths = false;\n\n private _id: string;\n\n abstract yearSelected: EventEmitter<T>;\n\n abstract monthSelected: EventEmitter<T>;\n\n abstract select(date: T | T[]): void;\n\n abstract selectYear(normalizedYear: T): void;\n\n abstract selectMonth(normalizedMonth: T): void;\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T) => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n (!this.maxDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n protected getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","/**\n * dialog-config.class\n */\nimport { ViewContainerRef } from '@angular/core';\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\nexport class OwlDialogConfig {\n /**\n * ID of the element that describes the dialog.\n */\n public ariaDescribedBy?: string | null = null;\n\n /**\n * Whether to focus the dialog when the dialog is opened\n */\n public autoFocus? = true;\n\n /** Whether the dialog has a backdrop. */\n public hasBackdrop? = true;\n\n /**\n * Custom style for the backdrop\n * */\n public backdropStyle?: any;\n\n /** Data being injected into the child component. */\n public data?: any = null;\n\n /** Whether the user can use escape or clicking outside to close a modal. */\n public disableClose? = false;\n\n /**\n * ID for the modal. If omitted, a unique one will be generated.\n */\n public id?: string;\n\n /**\n * The ARIA role of the dialog element.\n */\n public role?: 'dialog' | 'alertdialog' = 'dialog';\n\n /**\n * Custom class for the pane\n * */\n public paneClass?: string | string[] = '';\n\n /**\n * Mouse Event\n * */\n public event?: MouseEvent = null;\n\n /**\n * Custom class for the backdrop\n * */\n public backdropClass?: string | string[] = '';\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * */\n public closeOnNavigation = true;\n\n /** Width of the dialog. */\n public width = '';\n\n /** Height of the dialog. */\n public height = '';\n\n /**\n * The min-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minWidth?: number | string;\n\n /**\n * The min-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minHeight?: number | string;\n\n /**\n * The max-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxWidth?: number | string = '85vw';\n\n /**\n * The max-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxHeight?: number | string;\n\n /** Position overrides. */\n public position?: DialogPosition;\n\n /**\n * The scroll strategy when the dialog is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n public scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();\n\n public viewContainerRef?: ViewContainerRef;\n\n constructor() {\n this.id = `owl-dialog-${uniqueId++}`;\n }\n}\n","/**\n * dialog-ref.class\n */\nimport { AnimationEvent } from '@angular/animations';\nimport { Location } from '@angular/common';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { DialogPosition } from './dialog-config.class';\nimport {\n Observable,\n Subject,\n Subscription,\n SubscriptionLike as ISubscription\n} from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nexport class OwlDialogRef<T> {\n private result: any;\n\n private _beforeClose$ = new Subject<any>();\n\n private _afterOpen$ = new Subject<any>();\n\n private _afterClosed$ = new Subject<any>();\n\n /** Subscription to changes in the user's location. */\n private locationChanged: ISubscription = Subscription.EMPTY;\n\n /**\n * The instance of component opened into modal\n * */\n public componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n public disableClose = this.container.config.disableClose;\n\n constructor(\n private overlayRef: OverlayRef,\n private container: OwlDialogContainerComponent,\n public readonly id: string,\n location?: Location\n ) {\n this.container.animationStateChanged\n .pipe(\n filter(\n (event: AnimationEvent) =>\n event.phaseName === 'done' && event.toState === 'enter'\n ),\n take(1)\n )\n .subscribe(() => {\n this._afterOpen$.next(true);\n this._afterOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter(\n (event: AnimationEvent) =>\n event.phaseName === 'done' && event.toState === 'exit'\n ),\n take(1)\n )\n .subscribe(() => {\n this.overlayRef.dispose();\n this.locationChanged.unsubscribe();\n this._afterClosed$.next(this.result);\n this._afterClosed$.complete();\n this.componentInstance = null;\n });\n\n this.overlayRef\n .keydownEvents()\n .pipe(filter((event) => event.keyCode === ESCAPE && !this.disableClose))\n .subscribe(() => this.close());\n\n if (location) {\n this.locationChanged = location.subscribe(() => {\n if (this.container.config.closeOnNavigation) {\n this.close();\n }\n });\n }\n }\n\n public close(dialogResult?: any) {\n this.result = dialogResult;\n\n this.container.animationStateChanged\n .pipe(\n filter((event: AnimationEvent) => event.phaseName === 'start'),\n take(1)\n )\n .subscribe(() => {\n this._beforeClose$.next(dialogResult);\n this._beforeClose$.complete();\n this.overlayRef.detachBackdrop();\n });\n\n this.container.startExitAnimation();\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n public backdropClick(): Observable<any> {\n return this.overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n public keydownEvents(): Observable<KeyboardEvent> {\n return this.overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n public updatePosition(position?: DialogPosition): this {\n const strategy = this.getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left\n ? strategy.left(position.left)\n : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top\n ? strategy.top(position.top)\n : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this.overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = 'auto', height: string = 'auto'): this {\n this.getPositionStrategy().width(width).height(height);\n this.overlayRef.updatePosition();\n return this;\n }\n\n public isAnimating(): boolean {\n return this.container.isAnimating;\n }\n\n public afterOpen(): Observable<any> {\n return this._afterOpen$.asObservable();\n }\n\n public beforeClose(): Observable<any> {\n return this._beforeClose$.asObservable();\n }\n\n public afterClosed(): Observable<any> {\n return this._afterClosed$.asObservable();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private getPositionStrategy(): GlobalPositionStrategy {\n return this.overlayRef.getConfig()\n .positionStrategy as GlobalPositionStrategy;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {\n animate,\n animateChild,\n AnimationEvent,\n keyframes,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport { OwlDialogConfig } from './dialog-config.class';\n\nconst zoomFadeIn = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\n};\nconst zoomFadeInFrom = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n transformOrigin: '{{ ox }} {{ oy }}'\n};\n\n@Component({\n selector: 'ofe-owl-dialog-container',\n templateUrl: './dialog-container.component.html',\n animations: [\n trigger('slideModal', [\n transition(\n 'void => enter',\n [\n style(zoomFadeInFrom),\n animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n animate(\n '150ms',\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(1.05)', offset: 0.3 }),\n style({ transform: 'scale(.95)', offset: 0.8 }),\n style({ transform: 'scale(1)', offset: 1.0 })\n ])\n ),\n animateChild()\n ],\n {\n params: {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 1\n }\n }\n ),\n transition(\n 'enter => exit',\n [animateChild(), animate(200, style(zoomFadeIn))],\n { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } }\n )\n ])\n ]\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet {\n @HostBinding('attr.tabindex') get owlDialogContainerTabIndex() {\n return -1;\n }\n\n @HostBinding('class.owl-dialog-container')\n get owlDialogContainerClass() {\n return true;\n }\n\n @HostBinding('attr.id')\n get owlDialogContainerId() {\n return this._config.id;\n }\n\n @HostBinding('attr.role')\n get owlDialogContainerRole() {\n return this._config.role || null;\n }\n\n @HostBinding('attr.aria-labelledby')\n get owlDialogContainerAriaLabelledby() {\n return this.ariaLabelledBy;\n }\n\n @HostBinding('attr.aria-describedby')\n get owlDialogContainerAriaDescribedby() {\n return this._config.ariaDescribedBy || null;\n }\n\n @HostBinding('@slideModal')\n get owlDialogContainerAnimation() {\n return { value: this.state, params: this.params };\n }\n\n @HostListener('@slideModal.start', ['$event'])\n public onAnimationStart(event: AnimationEvent): void {\n this.isAnimating = true;\n this.animationStateChanged.emit(event);\n }\n\n @HostListener('@slideModal.done', ['$event'])\n public onAnimationDone(event: AnimationEvent): void {\n if (event.toState === 'enter') {\n this.trapFocus();\n } else if (event.toState === 'exit') {\n this.restoreFocus();\n }\n\n this.animationStateChanged.emit(event);\n this.isAnimating = false;\n }\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private focusTrap: FocusTrap;\n\n /** ID of the element that should be considered as the dialog's label. */\n public ariaLabelledBy: string | null = null;\n\n /** Emits when an animation state changes. */\n public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n public isAnimating = false;\n\n private _config: OwlDialogConfig;\n get config(): OwlDialogConfig {\n return this._config;\n }\n\n private state: 'void' | 'enter' | 'exit' = 'enter';\n\n // for animation purpose\n private params: any = {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 0\n };\n\n // A variable to hold the focused element before the dialog was open.\n // This would help us to refocus back to element when the dialog was closed.\n private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private focusTrapFactory: FocusTrapFactory,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n */\n public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throw Error(\n 'Attempting to attach dialog content after content is already attached'\n );\n }\n\n this.savePreviouslyFocusedElement();\n return this.portalOutlet.attachComponentPortal(portal);\n }\n\n public attachTemplatePortal<C>(\n portal: TemplatePortal<C>\n ): EmbeddedViewRef<C> {\n throw new Error('Method not implemented.');\n }\n\n public setConfig(config: OwlDialogConfig): void {\n this._config = config;\n\n if (config.event) {\n this.calculateZoomOrigin(event);\n }\n }\n\n public startExitAnimation() {\n this.state = 'exit';\n this.changeDetector.markForCheck();\n }\n\n /**\n * Calculate origin used in the `zoomFadeInFrom()`\n * for animation purpose\n */\n private calculateZoomOrigin(event: any): void {\n if (!event) {\n return;\n }\n\n const clientX = event.clientX;\n const clientY = event.clientY;\n\n const wh = window.innerWidth / 2;\n const hh = window.innerHeight / 2;\n const x = clientX - wh;\n const y = clientY - hh;\n const ox = clientX / window.innerWidth;\n const oy = clientY / window.innerHeight;\n\n this.params.x = `${x}px`;\n this.params.y = `${y}px`;\n this.params.ox = `${ox * 100}%`;\n this.params.oy = `${oy * 100}%`;\n this.params.scale = 0;\n\n return;\n }\n\n /**\n * Save the focused element before dialog was open\n */\n private savePreviouslyFocusedElement(): void {\n if (this.document) {\n this.elementFocusedBeforeDialogWasOpened = this.document\n .activeElement as HTMLElement;\n\n Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n }\n }\n\n private trapFocus(): void {\n if (!this.focusTrap) {\n this.focusTrap = this.focusTrapFactory.create(\n this.elementRef.nativeElement\n );\n }\n\n if (this._config.autoFocus) {\n this.focusTrap.focusInitialElementWhenReady();\n }\n }\n\n private restoreFocus(): void {\n const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","/**\n * object.utils\n */\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n for (const source of sources) {\n if (source != null) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n\n return dest;\n}\n","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport {\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef\n} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n PortalInjector\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => ScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/** I\n * njection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n 'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n private ariaHiddenElements = new Map<Element, string | null>();\n\n private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterAllClosedAtThisLevel = new Subject<void>();\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): OwlDialogRef<any>[] {\n return this.parentDialog\n ? this.parentDialog.openDialogs\n : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.afterOpen\n : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed(): any {\n const parent = this.parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n }\n\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n\n afterAllClosed: Observable<{}> = defer(() =>\n this._openDialogsAtThisLevel.length\n ? this._afterAllClosed\n : this._afterAllClosed.pipe(startWith(undefined))\n );\n\n private scrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n @Optional() private location: Location,\n @Inject(OWL_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional()\n @Inject(OWL_DIALOG_DEFAULT_OPTIONS)\n private defaultOptions: OwlDialogConfig,\n @Optional()\n @SkipSelf()\n private parentDialog: OwlDialogService,\n private overlayContainer: OverlayContainer\n ) {\n this.scrollStrategy = scrollStrategy;\n if (!parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n public open<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: OwlDialogConfig\n ): OwlDialogRef<any> {\n config = applyConfigDefaults(config, this.defaultOptions);\n\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\n `Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`\n );\n }\n\n const overlayRef = this.createOverlay(config);\n const dialogContainer = this.attachDialogContainer(overlayRef, config);\n const dialogRef = this.attachDialogContent<T>(\n componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config\n );\n\n if (!this.openDialogs.length) {\n this.hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this.removeOpenDialog(dialogRef));\n this.afterOpen.next(dialogRef);\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n let i = this.openDialogs.length;\n\n while (i--) {\n this.openDialogs[i].close();\n }\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n public getDialogById(id: string): OwlDialogRef<any> | undefined {\n return this.openDialogs.find((dialog) => dialog.id === id);\n }\n\n private attachDialogContent<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: OwlDialogContainerComponent,\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ) {\n const dialogRef = new OwlDialogRef<T>(\n overlayRef,\n dialogContainer,\n config.id,\n this.location\n );\n\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(() => {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n } else {\n const injector = this.createInjector<T>(\n config,\n dialogRef,\n dialogContainer\n );\n const contentRef = dialogContainer.attachComponentPortal(\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\n );\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n private createInjector<T>(\n config: OwlDialogConfig,\n dialogRef: OwlDialogRef<T>,\n dialogContainer: OwlDialogContainerComponent\n ) {\n const userInjector =\n config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(OwlDialogRef, dialogRef);\n injectionTokens.set(OwlDialogContainerComponent, dialogContainer);\n injectionTokens.set(OWL_DIALOG_DATA, config.data);\n\n return new PortalInjector(userInjector || this.injector, injectionTokens);\n }\n\n private createOverlay(config: OwlDialogConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ): OwlDialogContainerComponent {\n const containerPortal = new ComponentPortal(\n OwlDialogContainerComponent,\n config.viewContainerRef\n );\n const containerRef: ComponentRef<OwlDialogContainerComponent> = overlayRef.attach(\n containerPortal\n );\n containerRef.instance.setConfig(config);\n\n return containerRef.instance;\n }\n\n private getOverlayConfig(dialogConfig: OwlDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),\n panelClass: dialogConfig.paneClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n private removeOpenDialog(dialogRef: OwlDialogRef<any>): void {\n const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this.ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this.ariaHiddenElements.clear();\n this._afterAllClosed.next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this.overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n const sibling = siblings[i];\n\n if (\n sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')\n ) {\n this.ariaHiddenElements.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(\n config?: OwlDialogConfig,\n defaultOptions?: OwlDialogConfig\n): OwlDialogConfig {\n return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewContainerRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => BlockScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DTPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n selector: 'ofe-owl-date-time',\n exportAs: 'owlDateTime',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlDateTimeComponent<T>\n extends OwlDateTime<T>\n implements OnDestroy {\n /** Custom class for the picker backdrop. */\n @Input()\n public backdropClass: string | string[] = [];\n\n /** Custom class for the picker overlay pane. */\n @Input()\n public panelClass: string | string[] = [];\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n\n @Input()\n get startAt(): T | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this._dtInput) {\n if (this._dtInput.selectMode === 'single') {\n return this._dtInput.value || null;\n } else if (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[0] || null;\n } else if (this._dtInput.selectMode === 'rangeTo') {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n if (this._dtInput) {\n this._dtInput.formatNativeInputValue();\n }\n }\n }\n\n /**\n * Whether the picker open as a dialog\n */\n _pickerMode: PickerMode = 'popup';\n @Input()\n get pickerMode() {\n return this._pickerMode;\n }\n\n set pickerMode(mode: PickerMode) {\n if (mode === 'popup') {\n this._pickerMode = mode;\n } else {\n this._pickerMode = 'dialog';\n }\n }\n\n /** Whether the date time picker should be disabled. */\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._dtInput\n ? this._dtInput.disabled\n : !!this._disabled;\n }\n\n set disabled(value: boolean) {\n value = coerceBooleanProperty(value);\n if (value !== this._disabled) {\n this._disabled = value;\n this.disabledChange.next(value);\n }\n }\n\n /** Whether the calendar is open. */\n private _opened = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(val: boolean) {\n val ? this.open() : this.close();\n }\n\n /**\n * The scroll strategy when the picker is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n @Input()\n public scrollStrategy: ScrollStrategy;\n\n /**\n * Callback when the picker is closed\n * */\n @Output()\n afterPickerClosed = new EventEmitter<any>();\n\n /**\n * Callback when the picker is open\n * */\n @Output()\n afterPickerOpen = new EventEmitter<any>();\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n /**\n * Emit when the selected value has been confirmed\n * */\n public confirmSelectedChange = new EventEmitter<T[] | T>();\n\n /**\n * Emits when the date time picker is disabled.\n * */\n public disabledChange = new EventEmitter<boolean>();\n\n private pickerContainerPortal: ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >;\n private pickerContainer: OwlDateTimeContainerComponent<T>;\n private popupRef: OverlayRef;\n private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n private dtInputSub = Subscription.EMPTY;\n private hidePickerStreamSub = Subscription.EMPTY;\n private confirmSelectedStreamSub = Subscription.EMPTY;\n private pickerOpenedStreamSub = Subscription.EMPTY;\n\n /** The element that was focused before the date time picker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n private _dtInput: OwlDateTimeInputDirective<T>;\n get dtInput() {\n return this._dtInput;\n }\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n /** The minimum selectable date. */\n get minDateTime(): T | null {\n return this._dtInput && this._dtInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDateTime(): T | null {\n return this._dtInput && this._dtInput.max;\n }\n\n get dateTimeFilter(): (date: T | null) => boolean {\n return this._dtInput && this._dtInput.dateTimeFilter;\n }\n\n get selectMode(): SelectMode {\n return this._dtInput.selectMode;\n }\n\n get isInSingleMode(): boolean {\n return this._dtInput.isInSingleMode;\n }\n\n get isInRangeMode(): boolean {\n return this._dtInput.isInRangeMode;\n }\n\n private defaultScrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private dialogService: OwlDialogService,\n private ngZone: NgZone,\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Inject(OWL_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n this.defaultScrollStrategy = defaultScrollStrategy;\n }\n\n public ngOnDestroy(): void {\n this.close();\n this.dtInputSub.unsubscribe();\n this.disabledChange.complete();\n\n if (this.popupRef) {\n this.popupRef.dispose();\n }\n }\n\n public registerInput(input: OwlDateTimeInputDirective<T>): void {\n if (this._dtInput) {\n throw Error(\n 'A Owl DateTimePicker can only be associated with a single input.'\n );\n }\n\n this._dtInput = input;\n this.dtInputSub = this._dtInput.valueChange.subscribe(\n (value: T[] | T | null) => {\n if (Array.isArray(value)) {\n this.selecteds = value;\n } else {\n this.selected = value;\n }\n }\n );\n }\n\n public open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n\n if (!this._dtInput) {\n throw Error(\n 'Attempted to open an DateTimePicker with no associated input.'\n );\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n // reset the picker selected value\n if (this.isInSingleMode) {\n this.selected = this._dtInput.value;\n } else if (this.isInRangeMode) {\n this.selecteds = this._dtInput.values;\n }\n\n // when the picker is open , we make sure the picker's current selected time value\n // is the same as the _startAt time value.\n if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n this.selected = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.selected),\n this.dateTimeAdapter.getMonth(this.selected),\n this.dateTimeAdapter.getDate(this.selected),\n this.dateTimeAdapter.getHours(this._startAt),\n this.dateTimeAdapter.getMinutes(this._startAt),\n this.dateTimeAdapter.getSeconds(this._startAt)\n );\n }\n\n this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n this.pickerContainer.picker = this;\n\n // Listen to picker container's hidePickerStream\n this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n () => {\n this.close();\n }\n );\n\n // Listen to picker container's confirmSelectedStream\n this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n (event: any) => {\n this.confirmSelect(event);\n }\n );\n }\n\n /**\n * Selects the given date\n */\n public select(date: T[] | T): void {\n if (Array.isArray(date)) {\n this.selecteds = [...date];\n } else {\n this.selected = date;\n }\n\n /**\n * Cases in which automatically confirm the select when date or dates are selected:\n * 1) picker mode is NOT 'dialog'\n * 2) picker type is 'calendar' and selectMode is 'single'.\n * 3) picker type is 'calendar' and selectMode is 'range' and\n * the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n * */\n if (\n this.pickerMode !== 'dialog' &&\n this.pickerType === 'calendar' &&\n ((this.selectMode === 'single' && this.selected) ||\n (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n (this.selectMode === 'range' && this.selecteds[0] && this.selecteds[1]))\n ) {\n this.confirmSelect();\n }\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Hide the picker\n */\n public close(): void {\n if (!this._opened) {\n return;\n }\n\n if (this.popupRef && this.popupRef.hasAttached()) {\n this.popupRef.detach();\n }\n\n if (this.pickerContainerPortal && this.pickerContainerPortal.isAttached) {\n this.pickerContainerPortal.detach();\n }\n\n if (this.hidePickerStreamSub) {\n this.hidePickerStreamSub.unsubscribe();\n this.hidePickerStreamSub = null;\n }\n\n if (this.confirmSelectedStreamSub) {\n this.confirmSelectedStreamSub.unsubscribe();\n this.confirmSelectedStreamSub = null;\n }\n\n if (this.pickerOpenedStreamSub) {\n this.pickerOpenedStreamSub.unsubscribe();\n this.pickerOpenedStreamSub = null;\n }\n\n if (this.dialogRef) {\n this.dialogRef.close();\n this.dialogRef = null;\n }\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n this.afterPickerClosed.emit(null);\n this.focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.focusedElementBeforeOpen &&\n typeof this.focusedElementBeforeOpen.focus === 'function'\n ) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this.focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /**\n * Confirm the selected value\n */\n public confirmSelect(event?: any): void {\n if (this.isInSingleMode) {\n const selected =\n this.selected || this.startAt || this.dateTimeAdapter.now();\n this.confirmSelectedChange.emit(selected);\n } else if (this.isInRangeMode) {\n this.confirmSelectedChange.emit(this.selecteds);\n }\n\n this.close();\n return;\n }\n\n /**\n * Open the picker as a dialog\n */\n private openAsDialog(): void {\n this.dialogRef = this.dialogService.open(OwlDateTimeContainerComponent, {\n autoFocus: false,\n backdropClass: [\n 'cdk-overlay-dark-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass)],\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n closeOnNavigation: true,\n width: '',\n height: ''\n });\n this.pickerContainer = this.dialogRef.componentInstance;\n\n this.dialogRef.afterOpen().subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n this.dialogRef.afterClosed().subscribe(() => this.close());\n }\n\n /**\n * Open the picker as popup\n */\n private openAsPopup(): void {\n if (!this.pickerContainerPortal) {\n this.pickerContainerPortal = new ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >(OwlDateTimeContainerComponent, this.viewContainerRef);\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef.hasAttached()) {\n const componentRef: ComponentRef<OwlDateTimeContainerComponent<\n T\n >> = this.popupRef.attach(this.pickerContainerPortal);\n this.pickerContainer = componentRef.instance;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.popupRef.updatePosition();\n });\n\n // emit open stream\n this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n }\n }\n\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: [\n 'cdk-overlay-transparent-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n panelClass: ['owl-dt-popup', ...coerceArray(this.panelClass)]\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n merge(\n this.popupRef.backdropClick(),\n this.popupRef.detachments(),\n this.popupRef\n .keydownEvents()\n .pipe(\n filter(\n (event) =>\n event.keyCode === ESCAPE ||\n (this._dtInput && event.altKey && event.keyCode === UP_ARROW)\n )\n )\n ).subscribe(() => this.close());\n }\n\n /**\n * Create the popup PositionStrategy.\n * */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this._dtInput.elementRef)\n .withTransformOriginOn('.owl-dt-container')\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -176\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -352\n }\n ]);\n }\n}\n","","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges\n} from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[ofeOwlDateTimeTrigger]'\n})\nexport class OwlDateTimeTriggerDirective<T>\n implements OnChanges, AfterContentInit, OnDestroy {\n @Input('ofeOwlDateTimeTrigger') dtPicker: OwlDateTimeComponent<T>;\n\n @HostBinding('class.owl-dt-trigger-disabled')\n get owlDTTriggerDisabledClass(): boolean {\n return this.disabled;\n }\n\n @HostListener('click', ['$event'])\n handleClickOnHost($event: Event): void {\n if (this.dtPicker) {\n this.dtPicker.open();\n $event.stopPropagation();\n }\n }\n\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined\n ? this.dtPicker.disabled\n : !!this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n private stateChanges = Subscription.EMPTY;\n\n constructor(protected changeDetector: ChangeDetectorRef) {}\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.datepicker) {\n this.watchStateChanges();\n }\n }\n\n public ngAfterContentInit() {\n this.watchStateChanges();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.unsubscribe();\n }\n\n private watchStateChanges(): void {\n this.stateChanges.unsubscribe();\n\n const inputDisabled$ =\n this.dtPicker && this.dtPicker.dtInput\n ? this.dtPicker.dtInput.disabledChange\n : observableOf(false);\n\n const pickerDisabled$ = this.dtPicker\n ? this.dtPicker.disabledChange\n : observableOf(false);\n\n this.stateChanges = merge(pickerDisabled$, inputDisabled$).subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\n@Directive({\n selector: 'input[owlDateTime]',\n exportAs: 'owlDateTimeInput',\n providers: [OWL_DATETIME_VALUE_ACCESSOR, OWL_DATETIME_VALIDATORS]\n})\nexport class OwlDateTimeInputDirective<T>\n implements\n OnInit,\n AfterContentInit,\n OnDestroy,\n ControlValueAccessor,\n Validator {\n @HostBinding('attr.aria-haspopup')\n get owlDateTimeInputAriaHaspopup() {\n return true;\n }\n\n @HostBinding('attr.max') get maxIso8601() {\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n }\n\n @HostBinding('attr.min') get minIso8601() {\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n }\n\n @HostBinding('attr.aria-owns') get owlDateTimeInputAriaOwns() {\n return (this.dtPicker.opened && this.dtPicker.id) || null;\n }\n\n @HostBinding('disabled') get owlDateTimeInputDisabled() {\n return this.disabled;\n }\n\n @HostListener('blur', ['$event'])\n public handleBlurOnHost($event: Event): void {\n this.onModelTouched();\n }\n\n @HostListener('change', ['$event'])\n public handleChangeOnHost($event: Event): void {\n let v;\n if (this.isInSingleMode) {\n v = this.value;\n } else if (this.isInRangeMode) {\n v = this.values;\n }\n\n this.dateTimeChange.emit({\n source: this,\n value: v,\n input: this.elmRef.nativeElement\n });\n }\n\n @HostListener('input', ['$event'])\n public handleInputOnHost($event: any): void {\n const value = $event.target.value;\n if (this._selectMode === 'single') {\n this.changeInputInSingleMode(value);\n } else if (this._selectMode === 'range') {\n this.changeInputInRangeMode(value);\n } else {\n this.changeInputInRangeFromToMode(value);\n }\n }\n\n @HostListener('keydown', ['$event'])\n public handleKeydownOnHost($event: KeyboardEvent): void {\n if ($event.altKey && $event.keyCode === DOWN_ARROW) {\n this.dtPicker.open();\n $event.preventDefault();\n }\n }\n\n /**\n * The date time picker that this input is associated with.\n * */\n @Input()\n set owlDateTime(value: OwlDateTimeComponent<T>) {\n this.registerDateTimePicker(value);\n }\n\n /**\n * A function to filter date time\n */\n @Input()\n set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n this.validatorOnChange();\n }\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n get disabled() {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elmRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n @Input()\n get min(): T | null {\n return this._min;\n }\n\n set min(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n @Input()\n get max(): T | null {\n return this._max;\n }\n\n set max(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n value = this.getValidDate(value);\n const oldDate = this._value;\n this._value = value;\n\n // set the input property 'value'\n if ((this.value, this.dtPicker)) {\n this.formatNativeInputValue();\n }\n\n // check if the input value changed\n if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\n this.valueChange.emit(value);\n }\n }\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n this._values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.lastValueValid =\n (!this._values[0] || this.dateTimeAdapter.isValid(this._values[0])) &&\n (!this._values[1] || this.dateTimeAdapter.isValid(this._values[1]));\n } else {\n this._values = [];\n this.lastValueValid = true;\n }\n\n // set the input property 'value'\n this.formatNativeInputValue();\n\n this.valueChange.emit(this._values);\n }\n\n get elementRef(): ElementRef {\n return this.elmRef;\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n\n /** Whether the date time picker's input is disabled. */\n @Input()\n private _disabled: boolean;\n\n /** The minimum valid date. */\n private _min: T | null;\n\n /** The maximum valid date. */\n private _max: T | null;\n\n /**\n * The picker's select mode\n */\n private _selectMode: SelectMode = 'single';\n\n /**\n * The character to separate the 'from' and 'to' in input value\n */\n @Input()\n rangeSeparator = '~';\n\n private _value: T | null;\n\n private _values: T[] = [];\n\n /**\n * Callback to invoke when `change` event is fired on this `<input>`\n * */\n @Output()\n dateTimeChange = new EventEmitter<any>();\n\n /**\n * Callback to invoke when an `input` event is fired on this `<input>`.\n * */\n @Output()\n dateTimeInput = new EventEmitter<any>();\n\n /** The date-time-picker that this input is associated with. */\n public dtPicker: OwlDateTimeComponent<T>;\n\n private dtPickerSub: Subscription = Subscription.EMPTY;\n private localeSub: Subscription = Subscription.EMPTY;\n\n private lastValueValid = true;\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.lastValueValid\n ? null\n : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n };\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.min ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n ? null\n : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.min ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n ? null\n : {\n owlDateTimeMin: {\n min: this.min,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.max ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n ? null\n : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.max ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n ? null\n : {\n owlDateTimeMax: {\n max: this.max,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this._dateTimeFilter ||\n !controlValue ||\n this._dateTimeFilter(controlValue)\n ? null\n : { owlDateTimeFilter: true };\n };\n\n /**\n * The form control validator for the range.\n * Check whether the 'before' value is before the 'to' value\n * */\n private rangeValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n ? null\n : { owlDateTimeRange: true };\n };\n\n /** The combined form control validator for this input. */\n private validator: ValidatorFn | null = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator,\n this.rangeValidator\n ]);\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n public valueChange = new EventEmitter<T[] | T | null>();\n\n /** Emits when the disabled state has changed */\n public disabledChange = new EventEmitter<boolean>();\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n private validatorOnChange: Function = () => {};\n\n constructor(\n private elmRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n public ngOnInit(): void {\n if (!this.dtPicker) {\n throw Error(\n `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n );\n }\n this.formatNativeInputValue();\n }\n\n public ngAfterContentInit(): void {\n this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n (selecteds: T[] | T) => {\n if (Array.isArray(selecteds)) {\n this.values = selecteds;\n } else {\n this.value = selecteds;\n }\n\n this.onModelChange(selecteds);\n this.onModelTouched();\n this.dateTimeChange.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n this.dateTimeInput.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n }\n );\n }\n\n public ngOnDestroy(): void {\n this.dtPickerSub.unsubscribe();\n this.localeSub.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n } else {\n this.values = value;\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(c: AbstractControl): { [key: string]: any } {\n return this.validator ? this.validator(c) : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /**\n * Set the native input property 'value'\n */\n public formatNativeInputValue(): void {\n if (this.isInSingleMode) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n this._value\n ? this.dateTimeAdapter.format(this._value, this.dtPicker.formatString)\n : ''\n );\n } else if (this.isInRangeMode) {\n if (this._values && this.values.length > 0) {\n const from = this._values[0];\n const to = this._values[1];\n\n const fromFormatted = from\n ? this.dateTimeAdapter.format(from, this.dtPicker.formatString)\n : '';\n const toFormatted = to\n ? this.dateTimeAdapter.format(to, this.dtPicker.formatString)\n : '';\n\n if (!fromFormatted && !toFormatted) {\n this.renderer.setProperty(this.elmRef.nativeElement, 'value', null);\n } else {\n if (this._selectMode === 'range') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted + ' ' + this.rangeSeparator + ' ' + toFormatted\n );\n } else if (this._selectMode === 'rangeFrom') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted\n );\n } else if (this._selectMode === 'rangeTo') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n toFormatted\n );\n }\n }\n } else {\n this.renderer.setProperty(this.elmRef.nativeElement, 'value', '');\n }\n }\n\n return;\n }\n\n /**\n * Register the relationship between this input and its picker component\n */\n private registerDateTimePicker(picker: OwlDateTimeComponent<T>) {\n if (picker) {\n this.dtPicker = picker;\n this.dtPicker.registerInput(this);\n }\n }\n\n /**\n * Convert a given obj to a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Convert a time string to a date-time string\n * When pickerType is 'timer', the value in the picker's input is a time string.\n * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n * Therefore we need this fn to convert a time string to a date-time string.\n */\n private convertTimeStringToDateTimeString(\n timeString: string,\n dateTime: T\n ): string | null {\n if (timeString) {\n const v = dateTime || this.dateTimeAdapter.now();\n const dateString = this.dateTimeAdapter.format(\n v,\n this.dateTimeFormats.datePickerInput\n );\n return dateString + ' ' + timeString;\n } else {\n return null;\n }\n }\n\n /**\n * Handle input change in single mode\n */\n private changeInputInSingleMode(inputValue: string): void {\n let value = inputValue;\n if (this.dtPicker.pickerType === 'timer') {\n value = this.convertTimeStringToDateTimeString(value, this.value);\n }\n\n let result = this.dateTimeAdapter.parse(\n value,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n // result equals to null means there is input event, but the input value is invalid\n if (!this.isSameValue(result, this._value) || result === null) {\n this._value = result;\n this.valueChange.emit(result);\n this.onModelChange(result);\n this.dateTimeInput.emit({\n source: this,\n value: result,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Handle input change in rangeFrom or rangeTo mode\n */\n private changeInputInRangeFromToMode(inputValue: string): void {\n const originalValue =\n this._selectMode === 'rangeFrom' ? this._values[0] : this._values[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n inputValue = this.convertTimeStringToDateTimeString(\n inputValue,\n originalValue\n );\n }\n\n let result = this.dateTimeAdapter.parse(\n inputValue,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n (this._selectMode === 'rangeFrom' &&\n this.isSameValue(result, this._values[0]) &&\n result) ||\n (this._selectMode === 'rangeTo' &&\n this.isSameValue(result, this._values[1]) &&\n result)\n ) {\n return;\n }\n\n this._values =\n this._selectMode === 'rangeFrom'\n ? [result, this._values[1]]\n : [this._values[0], result];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n\n /**\n * Handle input change in range mode\n */\n private changeInputInRangeMode(inputValue: string): void {\n const selecteds = inputValue.split(this.rangeSeparator);\n let fromString = selecteds[0];\n let toString = selecteds[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n fromString = this.convertTimeStringToDateTimeString(\n fromString,\n this.values[0]\n );\n toString = this.convertTimeStringToDateTimeString(\n toString,\n this.values[1]\n );\n }\n\n let from = this.dateTimeAdapter.parse(\n fromString,\n this.dateTimeFormats.parseInput\n );\n let to = this.dateTimeAdapter.parse(\n toString,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n (!from || this.dateTimeAdapter.isValid(from)) &&\n (!to || this.dateTimeAdapter.isValid(to));\n from = this.getValidDate(from);\n to = this.getValidDate(to);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n !this.isSameValue(from, this._values[0]) ||\n !this.isSameValue(to, this._values[1]) ||\n (from === null && to === null)\n ) {\n this._values = [from, to];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Check if the two value is the same\n */\n private isSameValue(first: T | null, second: T | null): boolean {\n if (first && second) {\n return this.dateTimeAdapter.compare(first, second) === 0;\n }\n\n return first === second;\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-ngx-date-time-picker',\n templateUrl: './ngx-datetime-picker.html',\n styleUrls: ['./ngx-datetime-picker.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxDatetimeComponent),\n multi: true\n }\n ]\n})\nexport class NgxDatetimeComponent implements ControlValueAccessor {\n value = '';\n isDisabled = false;\n @Input() id = '';\n @Input() theme = 'dark';\n @Input() datePickerFormat = '';\n @Input() showWeeks = false;\n @Input() weeks: number[];\n onChange = (_: any) => {};\n onTouch = () => {};\n onInput($event: any) {\n this.onTouch();\n this.onChange(moment($event.value).format());\n }\n\n writeValue(value: any): void {\n if (value && value !== '') {\n this.value = moment(value).format();\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n onWeeksSelected(numberOfWeeks: number) {\n const currentDate: string = new Date().toString();\n this.onInput({ value: moment(currentDate).add(numberOfWeeks, 'weeks') });\n }\n}\n","<div class=\"date-time-picker-container\">\n <div\n data-date-picker\n data-date-picker-type=\"single\"\n class=\"cds--date-picker cds--date-picker--single cds--date-picker--light\"\n [ngClass]=\"{\n 'cds--date-picker--light': theme === 'light'\n}\"\n >\n <div class=\"cds--date-picker-container fill\">\n <div class=\"cds--date-picker-input__wrapper\">\n <input\n [disabled]=\"isDisabled\"\n (dateTimeChange)=\"onInput($event)\"\n type=\"text\"\n class=\"cds--date-picker__input fill\"\n [id]=\"id\"\n [value]=\"value\"\n [owlDateTime]=\"dt1\"\n [ofeOwlDateTimeTrigger]=\"dt1\"\n placeholder=\"mm/dd/yyyy\"\n data-date-picker-input\n />\n <svg\n [ofeOwlDateTimeTrigger]=\"dt1\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-date-picker-icon=\"true\"\n class=\"cds--date-picker__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M13,2h-2V1h-1v1H6V1H5v1H3C2.4,2,2,2.4,2,3v10c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V3C14,2.4,13.6,2,13,2z M13,13H3V6h10V13z M13,5H3V3h2v1h1V3h4v1h1V3h2V5z\"\n ></path>\n </svg>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"showWeeks\"\n class=\"cds--select some-class week-select-wrapper\"\n [ngClass]=\"{'cds--select--light': theme === 'light'}\"\n >\n <div class=\"cds--select-input__wrapper\">\n <select\n (change)=\"onWeeksSelected($event.target.value)\"\n id=\"select-1\"\n class=\"cds--select-input\"\n >\n <option\n class=\"cds--select-option\"\n value=\"placeholder-item\"\n disabled=\"\"\n hidden=\"\"\n selected=\"\"\n >\n {{ 'selectWeeks' | translate }}\n </option>\n <option\n class=\"cds--select-option\"\n [value]=\"week\"\n *ngFor=\"let week of weeks\"\n >\n {{week}} {{ 'weeks' | translate }}\n </option>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n class=\"cds--select__arrow\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n </div>\n </div>\n</div>\n<ofe-owl-date-time\n [pickerType]=\"datePickerFormat ? datePickerFormat : 'calendar'\"\n [disabled]=\"isDisabled\"\n #dt1\n></ofe-owl-date-time>\n","import { QuestionBase } from './question-base';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { BaseOptions } from './interfaces/base-options';\n\nexport class CustomControlQuestion extends QuestionBase {\n placeholder: string;\n constructor(options: BaseOptions) {\n super(options);\n this.placeholder = options.placeholder || '';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CustomControlQuestion } from '../../form-entry/question-models/custom-control-question.model';\n\n@Component({\n selector: 'ofe-custom-control-wrapper',\n templateUrl: 'custom-control-wrapper.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CustomControlWrapperComponent)\n }\n ]\n})\nexport class CustomControlWrapperComponent\n implements ControlValueAccessor, OnInit {\n customControlConfig = { tag: '', url: '', module: '' };\n\n @Input()\n question: CustomControlQuestion;\n\n value: any;\n\n config = {};\n\n touched = false;\n\n disabled = false;\n\n registerOnValidatorChange?(fn: () => void): void {\n throw new Error('Method not implemented.');\n }\n\n ngOnInit(): void {\n this.customControlConfig = this.question?.extras?.customControlConfig;\n }\n\n onChange = (value) => {};\n\n onTouched = () => {};\n\n onValueChange(event) {\n this.markAsTouched();\n if (!this.disabled) {\n this.value = event?.detail?.data;\n this.onChange(this.value);\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n registerOnChange(onChange: any) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n}\n","<div>\n <ng-template #error>{{ 'componentLoadingFailed' | translate }}</ng-template>\n <ng-template #loading>{{ 'loadingComponent' | translate }}</ng-template>\n <ax-lazy-element\n *axLazyElementDynamic=\"\n customControlConfig.tag;\n url: customControlConfig.url;\n module: true;\n errorTemplate: error;\n loadingTemplate: loading\n \"\n [question]=\"question\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n (on-change)=\"onValueChange($event)\"\n [config]=\"config\"\n >\n </ax-lazy-element>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ofe-custom-component-wrapper',\n templateUrl: 'custom-component-wrapper.component.html'\n})\nexport class CustomComponentWrapperComponent {\n @Input()\n componentConfigs: Array<{ tag: ''; url?: ''; module?: ''; detail?: any }>;\n\n @Input()\n dark = true;\n}\n","<div>\n <ng-template #error>{{ 'componentLoadingFailed' | translate }}</ng-template>\n <ng-template #loading>{{ 'loadingComponent' | translate }}</ng-template>\n <div *ngFor=\"let componentConfig of componentConfigs\">\n <ax-lazy-element\n *axLazyElementDynamic=\"\n componentConfig.tag;\n url: componentConfig.url;\n module: true;\n errorTemplate: error;\n loadingTemplate: loading\n \"\n [config]=\"componentConfig\"\n [dark]=\"dark\"\n >\n </ax-lazy-element>\n </div>\n</div>\n","import { Component, Input, ContentChild, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'ofe-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['./tab.component.css']\n})\nexport class TabComponent {\n @Input() public tabTitle: string;\n @Input() public tabSubTitle: string;\n @Input() public active = false;\n @Input() public disabled = false;\n @Input() public bypassDOM = false;\n @Input() public customPaneClass = '';\n @ContentChild(TemplateRef) template: TemplateRef<any>;\n}\n","<div *ngIf=\"active\" class=\"pane\" [ngClass]=\"customPaneClass\">\n <h4>{{ tabTitle }}</h4>\n <div *ngIf=\"bypassDOM\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <div *ngIf=\"!bypassDOM\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Directive, HostListener, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[ofeHoverClass]'\n})\nexport class HoverClassDirective {\n constructor(public elementRef: ElementRef) {}\n\n @Input() hoverClass: string;\n\n @HostListener('mouseenter') onMouseEnter() {\n this.elementRef.nativeElement.classList.add(this.hoverClass);\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.elementRef.nativeElement.classList.remove(this.hoverClass);\n }\n}\n","import {\n Component,\n ContentChildren,\n AfterContentInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport type { QueryList, TemplateRef } from '@angular/core';\n\nimport { TabComponent } from './tab.component';\n\n@Component({\n selector: 'ofe-tab-set',\n styleUrls: ['ngx-tab-set.component.scss'],\n templateUrl: 'ngx-tab-set.component.html'\n})\nexport class TabSetComponent implements AfterContentInit, OnChanges {\n @ContentChildren(TabComponent) public tabs: QueryList<TabComponent>;\n\n @Input() public disableStyle = false;\n @Input() public customNavClass: String = '';\n @Input() public customTabsClass: String = '';\n @Input() public selectedIndex: Number = 0;\n @Input() formSubmissionTemplate: TemplateRef<unknown>;\n\n @Output() public tabSelect = new EventEmitter();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedIndex && !changes.selectedIndex.firstChange) {\n this.selectTab(this.tabs.toArray()[changes.selectedIndex.currentValue]);\n }\n }\n\n // contentChildren are set\n public ngAfterContentInit() {\n // get all active tabs\n const activeTabs = this.tabs.filter((tab: TabComponent) => tab.active);\n\n // if there is no active tab set, activate the first\n setTimeout(() => {\n if (activeTabs.length === 0) {\n this.selectTab(this.tabs.first);\n }\n });\n }\n\n public onHover($event) {}\n\n public selectTab(tabToSelect: TabComponent): void {\n if (tabToSelect.disabled === true || tabToSelect.active === true) {\n return;\n }\n\n // deactivate all tabs\n this.tabs.toArray().forEach((tab: TabComponent) => (tab.active = false));\n\n // activate the tab the user has clicked on.\n tabToSelect.active = true;\n this.tabSelect.emit(this.tabs.toArray().indexOf(tabToSelect));\n }\n public getStatusClasses(active, disabled) {\n if (active) {\n return 'active';\n }\n if (!disabled && !active) {\n return 'enabled';\n }\n if (disabled) {\n return 'disabled';\n }\n }\n}\n","<div class=\"tab-container\">\n <section>\n <div class=\"tab\">\n <button\n ofeHoverClass=\"hover\"\n class=\"tablinks completed\"\n *ngFor=\"let tab of tabs\"\n (click)=\"selectTab(tab)\"\n [class]=\"getStatusClasses(tab.active, tab.disabled)\"\n >\n <span>{{ tab.tabTitle }}</span>\n </button>\n <ng-container *ngTemplateOutlet=\"formSubmissionTemplate\"></ng-container>\n </div>\n </section>\n <section id=\"tab\" class=\"tab-content\">\n <ng-content></ng-content>\n </section>\n</div>\n","import { Component, OnChanges, Input } from '@angular/core';\n\nimport { LeafNode } from '../../form-entry/form-factory/form-node';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-appointments-overview',\n templateUrl: './appointments-overview.component.html',\n styleUrls: ['./appointments-overview.component.css']\n})\nexport class AppointmentsOverviewComponent implements OnChanges {\n @Input() node: LeafNode;\n showAppointments = false;\n loadingAppointments = false;\n errorLoadingAppointments = false;\n appointmentsLoaded = false;\n appointments: Array<any> = [];\n today = '';\n constructor() {}\n\n ngOnChanges() {\n this.node.control.valueChanges.subscribe((appointmentDate) => {\n this.resetProperties();\n const node = this.node;\n if (\n node.question.extras.questionOptions.concept &&\n (node.question.extras.questionOptions.concept ===\n 'a8a666ba-1350-11df-a1f1-0026b9348838' ||\n node.question.extras.questionOptions.concept ===\n 'a89d2398-1350-11df-a1f1-0026b9348838')\n ) {\n if (!this.showAppointments) {\n this.loadingAppointments = true;\n this.showAppointments = true;\n let dataSource;\n if (node.form && node.form.dataSourcesContainer.dataSources) {\n dataSource =\n node.form.dataSourcesContainer.dataSources\n .monthlyScheduleResourceService;\n }\n const locationUuid =\n node.form.dataSourcesContainer.dataSources?.userLocation?.uuid;\n if (dataSource && locationUuid) {\n const startDate = moment(appointmentDate)\n .startOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD');\n const endDate = moment(appointmentDate)\n .endOf('week')\n .subtract(1, 'day')\n .format('YYYY-MM-DD');\n this.today = moment(appointmentDate).format('DD-MM-YYYY');\n // create 5 week days\n const scheduledAppointments: Array<{\n date: string;\n count: number;\n }> = [];\n const programTypes = [\n '781d85b0-1359-11df-a1f1-0026b9348838',\n '781d897a-1359-11df-a1f1-0026b9348838',\n '96047aaf-7ab3-45e9-be6a-b61810fe617d',\n 'c19aec66-1a40-4588-9b03-b6be55a8dd1d',\n 'f7793d42-11ac-4cfd-9b35-e0a21a7a7c31',\n '334c9e98-173f-4454-a8ce-f80b20b7fdf0',\n '96ba279b-b23b-4e78-aba9-dcbd46a96b7b',\n '781d8880-1359-11df-a1f1-0026b9348838'\n ];\n const programTypeParams = programTypes.join();\n for (let i = 1; i <= 5; i++) {\n scheduledAppointments.push({\n date: moment(appointmentDate)\n .startOf('week')\n .add(i, 'day')\n .format('DD-MM-YYYY'),\n count: 0\n });\n }\n dataSource\n .getMonthlySchedule({\n startDate: startDate,\n endDate: endDate,\n limit: 5,\n locationUuids: locationUuid,\n programType: programTypeParams\n })\n .subscribe(\n ({ results }) => {\n this.appointmentsLoaded = true;\n this.loadingAppointments = false;\n scheduledAppointments.map((appointment, index) => {\n appointment.count =\n results[index] !== undefined\n ? results[index].count.scheduled\n : 0;\n });\n this.appointments = scheduledAppointments;\n },\n (error) => {\n this.loadingAppointments = false;\n this.errorLoadingAppointments = true;\n this.showAppointments = false;\n console.error(error);\n }\n );\n } else {\n this.showAppointments = false;\n this.errorLoadingAppointments = true;\n }\n }\n }\n });\n }\n\n resetProperties() {\n this.loadingAppointments = false;\n this.appointmentsLoaded = false;\n this.errorLoadingAppointments = false;\n this.showAppointments = false;\n this.appointments = [];\n this.today = '';\n }\n}\n","<div *ngIf=\"showAppointments\" class=\"container\">\n <div *ngIf=\"loadingAppointments\">\n <span *ngIf=\"!appointmentsLoaded && errorLoadingAppointments\"\n >Error checking appointments</span\n >\n <div\n *ngIf=\"loadingAppointments\"\n class=\"cds--inline-loading\"\n aria-live=\"assertive\"\n >\n <div class=\"cds--inline-loading__animation\">\n <div\n aria-atomic=\"true\"\n aria-labelledby=\"loading-id-2\"\n aria-live=\"assertive\"\n class=\"cds--loading cds--loading--small\"\n >\n <label id=\"loading-id-2\" class=\"cds--visually-hidden\"\n >Active loading indicator</label\n ><svg class=\"cds--loading__svg\" viewBox=\"0 0 100 100\">\n <title>Active loading indicator</title>\n <circle\n class=\"cds--loading__background\"\n cx=\"50%\"\n cy=\"50%\"\n r=\"44\"\n ></circle>\n <circle\n class=\"cds--loading__stroke\"\n cx=\"50%\"\n cy=\"50%\"\n r=\"44\"\n ></circle>\n </svg>\n </div>\n </div>\n <div class=\"cds--inline-loading__text\">Loading...</div>\n </div>\n </div>\n\n <div\n class=\"cds--data-table-content\"\n *ngIf=\"appointmentsLoaded && !errorLoadingAppointments\"\n >\n <table class=\"cds--data-table cds--data-table--no-border\">\n <thead>\n <tr>\n <th\n *ngFor=\"let appointment of appointments\"\n scope=\"col\"\n [ngClass]=\"{ active: appointment.date === today }\"\n >\n {{ appointment.date }}\n </th>\n </tr>\n </thead>\n <tbody aria-live=\"polite\">\n <tr>\n <td\n *ngFor=\"let appointment of appointments\"\n [ngClass]=\"{ active: appointment.date === today }\"\n >\n {{ appointment.count }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n","import * as _ from 'lodash';\nimport { QuestionBase } from '../question-models/question-base';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class HistoricalFieldHelperService {\n public getDisplayTextFromOptions(\n question: QuestionBase,\n valueProperty: string,\n displayProperty: string\n ): string {\n let displayText = '';\n const historicalValue = question.historicalDataValue;\n if (_.isArray(historicalValue.value)) {\n let valueConverted = 0;\n _.each(historicalValue.value, (val) => {\n _.each(question.options, (option) => {\n if (option[valueProperty] === val) {\n if (valueConverted === 0) {\n displayText = displayText + option[displayProperty];\n } else {\n displayText = displayText + ', ' + option[displayProperty];\n }\n valueConverted++;\n }\n });\n });\n } else {\n _.each(question.options, (option) => {\n if (option[valueProperty] === historicalValue.value) {\n displayText = option[displayProperty];\n }\n });\n }\n return displayText;\n }\n}\n","import {\n Directive,\n HostListener,\n Input,\n Output,\n EventEmitter\n} from '@angular/core';\n\nimport { HistoricalFieldHelperService } from '../helpers/historical-field-helper-service';\nimport * as _ from 'lodash';\nimport { NodeBase } from '../form-factory/form-node';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `[node]`\n})\nexport class HistoricalValueDirective {\n @Input() _node: NodeBase;\n @Output() _nodeChange = new EventEmitter<Object>();\n\n historicalDisplay: string;\n\n constructor(private historicalFieldHelper: HistoricalFieldHelperService) {}\n\n @HostListener('click', ['$event'])\n setValue(e) {\n if (e.target.name === 'historyValue') {\n if (\n this._node &&\n (!this.compareStrings(this._node.question.renderingType, 'page') ||\n !this.compareStrings(this._node.question.renderingType, 'section'))\n ) {\n this._node.control.setValue(\n this._node.question.historicalDataValue.value\n );\n\n this._node.question[\n 'historicalValue'\n ] = this._node.question.historicalDataValue;\n e.stopPropagation();\n this._nodeChange.emit(this._node);\n }\n }\n }\n\n @Input()\n set node(node: NodeBase) {\n if (node) {\n this._node = node;\n if (\n this._node.question.enableHistoricalValue &&\n !_.isUndefined(this._node.question.historicalDataValue)\n ) {\n const display: any = { text: '', _date: '' };\n if (\n this._node.question.renderingType === 'select' ||\n this._node.question.renderingType === 'multi-select' ||\n this._node.question.renderingType === 'single-select' ||\n this._node.question.renderingType === 'radio'\n ) {\n display.text = this.historicalFieldHelper.getDisplayTextFromOptions(\n this._node.question,\n 'value',\n 'label'\n );\n display._date = this._node.question.historicalDataValue.valueDate;\n\n this._node.question['historicalDisplay'] = display;\n } else if (!_.isUndefined(this._node.question.historicalDataValue)) {\n display.text = this._node.question.historicalDataValue.value;\n display._date = this._node.question.historicalDataValue.valueDate;\n\n this._node.question['historicalDisplay'] = display;\n }\n }\n }\n }\n\n private compareStrings(a: string, b: string): boolean {\n return a === b;\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Inject,\n OnChanges,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as _ from 'lodash';\n\nimport { DataSources } from '../data-sources/data-sources';\nimport { NodeBase, LeafNode, GroupNode } from '../form-factory/form-node';\nimport { AfeFormGroup } from '../../abstract-controls-extension/afe-form-group';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { DataSource } from '../question-models/interfaces/data-source';\nimport { FormErrorsService } from '../services/form-errors.service';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { ValidationErrors } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'ofe-form-renderer',\n templateUrl: 'form-renderer.component.html',\n styleUrls: ['../../style/app.css', './form-renderer.component.scss']\n})\nexport class FormRendererComponent implements OnInit, OnChanges {\n @Input() public formSubmissionTemplate: TemplateRef<unknown>;\n @Input() public parentComponent: FormRendererComponent;\n @Input() public node: NodeBase;\n @Input() public parentGroup: AfeFormGroup;\n @Input() public theme = 'light';\n @Input() public labelMap: Object;\n @Input() public controlId: String = '';\n public childComponents: FormRendererComponent[] = [];\n public showTime: boolean;\n public showWeeks: boolean;\n public activeTab: number;\n public dataSource: DataSource;\n public isCollapsed = false;\n public auto: any;\n public followFocus = true;\n public cacheActive = false;\n public isNavigation = true;\n public type = 'default';\n inlineDatePicker: Date = new Date();\n private TAB_SELECTION_DELAY_MS = 100;\n constructor(\n private validationFactory: ValidationFactory,\n private dataSources: DataSources,\n private formErrorsService: FormErrorsService,\n public translate: TranslateService,\n @Inject(DOCUMENT) private document: Document\n ) {\n this.activeTab = 0;\n }\n\n public ngOnInit() {\n this.setUpRemoteSelect();\n this.setUpFileUpload();\n this.loadLabels();\n if (this.node && this.node.form) {\n const tab = this.node.form.valueProcessingInfo.lastFormTab;\n if (tab && tab !== this.activeTab) {\n this.activeTab = tab;\n }\n }\n if (this.node && this.node.question.renderingType === 'form') {\n this.formErrorsService.announceErrorField$.subscribe((error) => {\n this.scrollToControl(error);\n });\n }\n\n if (this.node && this.node.question.renderingType === 'section') {\n this.isCollapsed = !(this.node.question as QuestionGroup).isExpanded;\n }\n\n if (this.parentComponent) {\n this.parentComponent.addChildComponent(this);\n }\n\n if (\n this.node &&\n this.node.question.renderingType === 'repeating' &&\n this?.node?.question?.extras?.questionOptions?.min >= 0\n ) {\n for (\n let index = this.node.children.length;\n index < this.node.question.extras.questionOptions.min;\n index++\n ) {\n this.node.createChildNode();\n }\n }\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.labelMap) {\n this.loadLabels();\n }\n }\n\n public addChildComponent(child: FormRendererComponent) {\n this.childComponents.push(child);\n }\n\n public setUpRemoteSelect() {\n if (\n this.node &&\n this.node.question.extras &&\n this.node.question.renderingType === 'remote-select'\n ) {\n this.dataSource = this.dataSources.dataSources[\n this.node.question.dataSource\n ];\n\n if (this.dataSource && this.node.question.dataSourceOptions) {\n this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;\n }\n }\n }\n\n public setUpFileUpload() {\n if (\n this.node &&\n this.node.question.extras &&\n this.node.question.renderingType === 'file'\n ) {\n this.dataSource = this.dataSources.dataSources[\n this.node.question.dataSource\n ];\n }\n }\n\n public loadLabels() {\n if (\n !this.node.question.label &&\n this.labelMap[this.node.question.extras?.questionOptions?.concept]\n ) {\n this.node.question.label = this.labelMap[\n this.node.question.extras.questionOptions.concept\n ];\n }\n if (this.node.question.options) {\n this.node.question.options.forEach((option) => {\n if (!option.label && this.labelMap[option.value]) {\n option.label = this.labelMap[option.value];\n }\n });\n }\n }\n\n checkSection(node: NodeBase) {\n if (node.question.renderingType === 'section') {\n let groupChildrenHidden = false;\n const allSectionControlsHidden = Object.keys(node.children).every((k) => {\n const innerNode = node.children[k];\n if (innerNode instanceof GroupNode) {\n groupChildrenHidden = Object.keys(innerNode.children).every(\n (i) => innerNode.children[i].control.hidden\n );\n }\n return node.children[k].control.hidden || groupChildrenHidden;\n });\n return !allSectionControlsHidden;\n }\n return true;\n }\n\n public clickTab(tabNumber: number) {\n this.activeTab = tabNumber;\n }\n\n public loadPreviousTab() {\n if (!this.isCurrentTabFirst()) {\n this.clickTab(this.activeTab - 1);\n document.body.scrollTop = 0;\n }\n }\n\n public isCurrentTabFirst() {\n return this.activeTab === 0;\n }\n\n public isCurrentTabLast() {\n return this.activeTab === this.node.question['questions'].length - 1;\n }\n\n public loadNextTab() {\n if (!this.isCurrentTabLast()) {\n this.clickTab(this.activeTab + 1);\n document.body.scrollTop = 0;\n }\n }\n public tabSelected($event) {\n this.activeTab = $event;\n this.setPreviousTab();\n\n setTimeout(() => {\n const sectionHeader = this.document.querySelector('div.pane > h4');\n if (sectionHeader) {\n sectionHeader.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, this.TAB_SELECTION_DELAY_MS);\n }\n public setPreviousTab() {\n if (this.node && this.node.form) {\n this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;\n }\n }\n public hasErrors() {\n return (\n this.node.control.touched &&\n !this.node.control.valid &&\n this.node.control.disablers.length === 0\n );\n }\n\n public errors() {\n return this.getErrors(this.node);\n }\n\n public scrollToControl(error: string) {\n const tab: number = +error.split(',')[0];\n const elSelector = error.split(',')[1] + 'id';\n\n // the tab components\n const tabComponent: FormRendererComponent = this.childComponents[tab];\n\n this.clickTab(tab);\n\n setTimeout(() => {\n // expand all sections\n tabComponent.childComponents.forEach((section) => {\n section.isCollapsed = false;\n\n setTimeout(() => {\n const element: any = this.document.getElementById(elSelector);\n if (element !== null && element.focus) {\n element.focus();\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n });\n }, 200);\n }\n\n public onDateChanged(node: LeafNode) {\n this.node = node;\n }\n\n public upload(event) {\n // TO DO Add upload functionality\n }\n\n public toggleInformation(infoId) {\n const e = document.getElementById(infoId);\n\n if (e.style.display === 'block') {\n e.style.display = 'none';\n } else {\n e.style.display = 'block';\n }\n }\n private getErrors(node: NodeBase) {\n const errors: ValidationErrors = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n showErrors() {\n return !this.node.form.valid && this.node.form.showErrors;\n }\n\n get errorNodes() {\n const invalidControls = this.node.form.markInvalidControls(\n this.node.form.rootNode,\n []\n );\n return invalidControls;\n }\n\n getControlError(node: LeafNode) {\n const errors: any = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n announceErrorField(errorNode: LeafNode) {\n const nodes: Array<NodeBase> = this.node.form.searchNodeByQuestionId(\n errorNode.path.substring(0, errorNode.path.indexOf('.'))\n );\n\n _.forEach(nodes, (node: NodeBase) => {\n if (node.question.renderingType === 'page') {\n const pageIndex: number = this.getPageIndex(node);\n this.formErrorsService.announceErrorField(\n pageIndex + ',' + errorNode.question.key\n );\n }\n });\n }\n\n getPageIndex(node: NodeBase) {\n const questionGroup: QuestionGroup = this.node.form.rootNode\n .question as QuestionGroup;\n return questionGroup.questions.indexOf(node.question);\n }\n}\n","<!--CONTAINERS-->\n<div *ngIf=\"node.question.renderingType === 'form'\">\n <ofe-tab-set\n (tabSelect)=\"tabSelected($event)\"\n [selectedIndex]=\"activeTab\"\n [formSubmissionTemplate]=\"formSubmissionTemplate\"\n >\n <ofe-tab\n [tabTitle]=\"question.label | translate\"\n *ngFor=\"let question of node.question.questions; let i = index\"\n >\n <ofe-form-renderer\n [node]=\"node.children[question.key] | translate\"\n [parentComponent]=\"this\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n >\n </ofe-form-renderer>\n </ofe-tab>\n <div *ngIf=\"showErrors()\" class=\"container\">\n <div\n data-notification\n *ngFor=\"let errorNode of errorNodes\"\n class=\"cds--inline-notification cds--inline-notification--error cds--inline-notification--low-contrast pointer\"\n role=\"alert\"\n (click)=\"announceErrorField(errorNode)\"\n >\n <div class=\"cds--inline-notification__details\">\n <div class=\"cds--inline-notification__text-wrapper\">\n <p class=\"cds--inline-notification__title\">\n {{ errorNode.question.label | translate }}\n </p>\n <p class=\"cds--inline-notification__subtitle\">\n {{ getControlError(errorNode | translate) }}\n </p>\n </div>\n </div>\n <button\n tabindex=\"0\"\n class=\"cds--inline-notification__action-button cds--btn cds--btn--sm cds--btn--ghost\"\n type=\"button\"\n >\n {{ 'fix' | translate }}\n </button>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--inline-notification__icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M10,1c-5,0-9,4-9,9s4,9,9,9s9-4,9-9S15,1,10,1z M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n ></path>\n <path\n d=\"M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n </div>\n </ofe-tab-set>\n</div>\n<div *ngIf=\"node.question.renderingType === 'page'\">\n <!--Page Components-->\n <ofe-custom-component-wrapper\n [dark]=\"theme === 'light'\"\n [componentConfigs]=\"node.question.componentConfigs\"\n >\n </ofe-custom-component-wrapper>\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n</div>\n<div *ngIf=\"node.question.renderingType === 'section' && checkSection(node)\">\n <div class=\"cds--layout\">\n <ul class=\"cds--accordion cds--accordion--end\">\n <li\n class=\"cds--accordion__item accordion-content-override\"\n [ngClass]=\"{ 'cds--accordion__item--active': !isCollapsed }\"\n >\n <button\n type=\"button\"\n aria-controls=\"accordion-item-:r27:\"\n aria-expanded=\"false\"\n (click)=\"isCollapsed = !isCollapsed\"\n class=\"cds--accordion__heading\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n class=\"cds--accordion__arrow\"\n >\n <path d=\"M11 8L6 13 5.3 12.3 9.6 8 5.3 3.7 6 3z\"></path>\n </svg>\n <div class=\"cds--accordion__title\">\n {{ node.question.label | translate }}\n </div>\n </button>\n <div id=\"accordion-item-:r27:\" class=\"cds--accordion__content\">\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n </li>\n </ul>\n </div>\n</div>\n\n<!--CONTROLS-->\n\n<div\n *ngIf=\"node.question.controlType === 0\"\n [formGroup]=\"parentGroup\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <ofe-custom-component-wrapper\n [dark]=\"!(theme === 'light')\"\n [componentConfigs]=\"node.question.componentConfigs\"\n >\n </ofe-custom-component-wrapper>\n <div class=\"cds--form-item\">\n <!--LEAF CONTROL-->\n <div class=\"question-area\">\n <a\n class=\"form-tooltip pull-right\"\n (click)=\"toggleInformation(node.question.extras.id)\"\n data-placement=\"right\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n <i class=\"glyphicon glyphicon-question-sign\" aria-hidden=\"true\"></i>\n </a>\n\n <label\n *ngIf=\"node.question.label\"\n [style.color]=\"hasErrors() ? 'red' : ''\"\n class=\"cds--label\"\n [attr.for]=\"node.question.key | translate\"\n >\n {{ node.question.required ? '*' : '' }}\n {{ node.question.prefix ? node.question.prefix + ' ' : '' }}\n {{ node.question.label | translate }}\n </label>\n\n <div\n *ngIf=\"\n node.question.extras.questionOptions.customControl;\n else nativeControls\n \"\n >\n <ofe-custom-control-wrapper\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [question]=\"node.question\"\n >\n </ofe-custom-control-wrapper>\n </div>\n\n <ng-template #nativeControls>\n <div class=\"afe-control\" [ngSwitch]=\"node.question.renderingType\">\n <ofe-select\n [theme]=\"theme\"\n *ngSwitchCase=\"'select'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n <option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </option>\n </ofe-select>\n\n <div *ngSwitchCase=\"'file'\">\n <ofe-file-upload\n [dataSource]=\"dataSource\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n (fileChanged)=\"upload($event)\"\n >\n </ofe-file-upload>\n </div>\n\n <textarea\n [theme]=\"theme\"\n ofeTextAreaInput\n [ngClass]=\"{\n 'cds--text-area--light': theme === 'light',\n 'cds--text-area--invalid': !node.control.valid\n }\"\n [placeholder]=\"node.question.placeholder | translate\"\n [rows]=\"node.question.rows\"\n class=\"cds--text-area\"\n *ngSwitchCase=\"'textarea'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [readOnly]=\"node.question.extras.readOnly\"\n >\n </textarea>\n\n <ofe-remote-select\n [theme]=\"theme\"\n *ngSwitchCase=\"'remote-select'\"\n [placeholder]=\"node.question.placeholder | translate\"\n tabindex=\"0\"\n [dataSource]=\"dataSource\"\n [componentID]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n ></ofe-remote-select>\n\n <ofe-ngx-date-time-picker\n [weeks]=\"node.question.extras.questionOptions.weeksList\"\n [showWeeks]=\"node.question.showWeeksAdder\"\n [theme]=\"theme\"\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n *ngSwitchCase=\"'date'\"\n [datePickerFormat]=\"node.question.datePickerFormat\"\n >\n </ofe-ngx-date-time-picker>\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [id]=\"node.question.key + 'id'\"\n *ngSwitchCase=\"'multi-select'\"\n [multiple]=\"true\"\n [appendTo]=\"'#' + node.question.key + 'id'\"\n placeholder=\"\"\n clearAllText=\"Clear\"\n [formControlName]=\"node.question.key\"\n >\n <ng-option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </ng-option>\n </ng-select>\n\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [id]=\"node.question.key + 'id'\"\n *ngSwitchCase=\"'single-select'\"\n placeholder=\"\"\n clearAllText=\"Clear\"\n [formControlName]=\"node.question.key\"\n >\n <ng-option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </ng-option>\n </ng-select>\n\n <ofe-number-input\n [theme]=\"theme\"\n *ngSwitchCase=\"'number'\"\n [id]=\"node.question.key + 'id'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n [maxlength]=\"node.question.extras.questionOptions.maxLength\"\n [minlength]=\"node.question.extras.questionOptions.minLength\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder | translate\"\n >\n </ofe-number-input>\n\n <div *ngSwitchCase=\"'workspace-launcher'\">\n <ofe-workspace-launcher\n [id]=\"node.question.key + 'id'\"\n [buttonLabel]=\"node.question.extras.questionOptions.buttonLabel\"\n [buttonType]=\"node.question.extras.questionOptions.buttonType\"\n [workspaceName]=\"\n node.question.extras.questionOptions.workspaceName\n \"\n ></ofe-workspace-launcher>\n </div>\n\n <input\n [theme]=\"theme\"\n class=\"cds--text-input\"\n ofeTextInput\n *ngSwitchDefault\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder | translate\"\n [type]=\"node.question.renderingType\"\n [id]=\"node.question.key + 'id'\"\n [readOnly]=\"node.question.extras.readOnly\"\n />\n\n <div *ngSwitchCase=\"'radio'\">\n <ofe-radio-button\n [id]=\"node.question.key + 'id' + controlId\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [allowUnselect]=\"node.question.allowUnselect\"\n [selected]=\"node.control.value\"\n [orientation]=\"node.question.orientation\"\n ></ofe-radio-button>\n </div>\n\n <div *ngSwitchCase=\"'checkbox'\">\n <ofe-checkbox\n [id]=\"node.question.key + 'id' + controlId\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [selected]=\"node.control.value\"\n ></ofe-checkbox>\n </div>\n\n <div\n *ngIf=\"\n node.question.enableHistoricalValue &&\n node.question.historicalDisplay\n \"\n style=\"margin-top: 2px\"\n >\n <div class=\"container-fluid\">\n <div class=\"use-value\">\n <div class=\"col-xs-9\">\n <span class=\"text-warning\"\n >{{ 'previousValue' | translate }}:\n </span>\n <strong>{{ node.question.historicalDisplay?.text }}</strong>\n <span *ngIf=\"node.question.showHistoricalValueDate\">\n <span> | </span>\n <strong class=\"text-primary\"\n >{{ node.question.historicalDisplay?._date | date }}\n </strong>\n <span\n class=\"text-primary\"\n *ngIf=\"\n node.question.historicalDisplay &&\n node.question.historicalDisplay._date\n \"\n >\n ({{\n node.question.historicalDisplay._date | timeAgo\n }})</span\n >\n </span>\n </div>\n <button\n type=\"button\"\n [name]=\"'historyValue'\"\n class=\"cds--btn cds--btn--primary cds--btn--sm col-xs-3\"\n >\n {{ 'useValue' | translate }}\n </button>\n </div>\n </div>\n </div>\n <ofe-appointments-overview [node]=\"node\"></ofe-appointments-overview>\n <div *ngIf=\"hasErrors()\">\n <div *ngFor=\"let e of errors()\">\n <span class=\"text-danger\">{{ e }}</span>\n </div>\n </div>\n </div>\n </ng-template>\n\n <div\n class=\"question-info col-md-12 col-lg-12 col-sm-12\"\n id=\"{{ node.question.extras.id }}\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n {{ node.question.extras.questionInfo | translate }}\n </div>\n </div>\n </div>\n</div>\n\n<!-- MESSAGES -->\n<label\n *ngIf=\"node.control && node.control.alert && node.control.alert !== ''\"\n class=\"cds--label text-warn\"\n style=\"display: flex; align-items: center; margin: 0.125rem 0\"\n>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <path\n fill=\"none\"\n d=\"M16,26a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,16,26Zm-1.125-5h2.25V12h-2.25Z\"\n data-icon-path=\"inner-path\"\n ></path>\n <path\n d=\"M16.002,6.1714h-.004L4.6487,27.9966,4.6506,28H27.3494l.0019-.0034ZM14.875,12h2.25v9h-2.25ZM16,26a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,16,26Z\"\n ></path>\n <path\n d=\"M29,30H3a1,1,0,0,1-.8872-1.4614l13-25a1,1,0,0,1,1.7744,0l13,25A1,1,0,0,1,29,30ZM4.6507,28H27.3493l.002-.0033L16.002,6.1714h-.004L4.6487,27.9967Z\"\n ></path>\n <title>Warning alt filled</title>\n </svg>\n {{ node.control.alert | translate }}\n</label>\n\n<div\n *ngIf=\"node.question.controlType === 1\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--ARRAY CONTROL-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div class=\"well\" style=\"padding: 2px\" *ngSwitchCase=\"'repeating'\">\n <h4 style=\"margin: 2px; font-weight: bold\">\n {{ node.question.label | translate }}\n </h4>\n <div>\n <label\n class=\"cds--label\"\n *ngIf=\"node.question.extras.questionOptions.min\"\n style=\"margin-right: 2px\"\n >min: {{ node.question.extras.questionOptions.min }}</label\n >\n <label\n class=\"cds--label\"\n *ngIf=\"node.question.extras.questionOptions.max\"\n >max: {{ node.question.extras.questionOptions.max }}</label\n >\n </div>\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 2px;\n \"\n />\n <div [ngSwitch]=\"node.question.extras.type\">\n <div *ngSwitchCase=\"'testOrder'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n <div>{{ child.orderNumber }}</div>\n <div class=\"cds--layout\">\n <button\n type=\"button \"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n </div>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'diagnosis'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n <button\n type=\"button \"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'obsGroup'\" style=\"margin-bottom: 20px\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n [controlId]=\"i\"\n ></ofe-form-renderer>\n <button\n type=\"button\"\n style=\"width: 100px\"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n <div *ngSwitchCase=\"'diagnosisGroup'\" style=\"margin-bottom: 20px\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n [controlId]=\"i\"\n ></ofe-form-renderer>\n <button\n type=\"button\"\n style=\"width: 100px\"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n class=\"cds--btn cds--btn--primary cds--btn--sm\"\n (click)=\"node.createChildNode()\"\n [ngClass]=\"{\n disabled:\n node.children.length >= node.question.extras.questionOptions.max\n }\"\n >\n {{ 'add' | translate }}\n </button>\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 2\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--GROUP-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div *ngSwitchCase=\"'group'\">\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n <div\n *ngSwitchCase=\"'field-set'\"\n style=\"border: 1px solid #eeeeee; padding: 2px; margin: 2px\"\n >\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n </div>\n</div>\n","import * as _ from 'lodash';\n\nimport { FormFactory } from './form.factory';\nimport { QuestionFactory } from './question.factory';\nimport { DataSources } from '../data-sources/data-sources';\nimport { NodeBase, GroupNode, LeafNode, ArrayNode } from './form-node';\nimport { QuestionBase } from '../question-models/question-base';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { AfeFormArray } from '../../abstract-controls-extension/afe-form-array';\nimport { Diagnosis } from '../value-adapters/diagnosis.adapter';\n\nexport class Form {\n public rootNode: GroupNode;\n public valueProcessingInfo: any = {};\n public existingOrders: any = {};\n public existingDiagnoses: Array<Diagnosis> = [];\n private _dataSourcesContainer: DataSources;\n private _showErrors = false;\n constructor(\n public schema: any,\n public formFactory: FormFactory,\n public questionFactory: QuestionFactory\n ) {\n this._dataSourcesContainer = new DataSources();\n }\n\n get dataSourcesContainer(): DataSources {\n return this._dataSourcesContainer;\n }\n\n searchNodeByPath(node: GroupNode, path, found: Array<NodeBase>) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n\n this.searchNodeByPath(child, path, found);\n } else if (child instanceof LeafNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n } else if (child instanceof ArrayNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n\n const aChild: ArrayNode = child as ArrayNode;\n\n aChild.children.forEach((aChildNode) => {\n this.searchNodeByPath(aChildNode, path, found);\n });\n }\n }\n }\n\n return found;\n }\n\n searchNodeByQuestionId(\n questionId: string,\n questionType?: string\n ): Array<NodeBase> {\n const found = [];\n if (questionType) {\n this.searchNodeByQuestionType(this.rootNode, questionType, found);\n } else {\n this.findNodesByQuestionId(this.rootNode, questionId, found);\n }\n return found;\n }\n\n searchNodeByQuestionType(\n rootNode: any,\n questionType: string,\n found: Array<NodeBase>\n ) {\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this.searchNodeByQuestionType(\n nodeAsGroup.children[o],\n questionType,\n found\n );\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this.searchNodeByQuestionType(node, questionType, found);\n });\n }\n\n if (rootNode instanceof LeafNode) {\n const questionBase: QuestionBase = rootNode.question;\n\n if (\n questionBase.extras &&\n questionBase.extras.type &&\n questionBase.extras.type === questionType\n ) {\n found.push(rootNode);\n }\n }\n }\n\n private findNodesByQuestionId(\n rootNode: NodeBase,\n questionId: string,\n results: Array<NodeBase>\n ) {\n if (rootNode.question.key === questionId) {\n results.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this.findNodesByQuestionId(\n nodeAsGroup.children[o],\n questionId,\n results\n );\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this.findNodesByQuestionId(node, questionId, results);\n });\n }\n }\n\n get valid() {\n return this.rootNode.control.valid;\n }\n\n set showErrors(show: boolean) {\n this._showErrors = show;\n }\n\n get showErrors() {\n return this._showErrors;\n }\n\n markInvalidControls(node: GroupNode, invalidControlNodes?: any) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n this.markInvalidControls(child, invalidControlNodes);\n } else if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n const c: AfeFormControl | AfeFormArray = child.control as\n | AfeFormControl\n | AfeFormArray;\n\n if (!c.valid && !c.disabled) {\n if (invalidControlNodes) {\n invalidControlNodes.push(child);\n }\n\n c.markAsTouched();\n }\n }\n } else if (child instanceof ArrayNode) {\n const arrayNode: ArrayNode = child as ArrayNode;\n\n if (\n arrayNode &&\n arrayNode.children &&\n arrayNode.children.length > 0\n ) {\n _.forEach(arrayNode.children, (groupNode: any) => {\n this.markInvalidControls(groupNode, invalidControlNodes);\n });\n }\n }\n }\n }\n\n return invalidControlNodes;\n }\n\n updateHiddenDisabledStateForAllControls() {\n this._updateHiddenDisabledStateForAllControls(this.rootNode);\n }\n\n updateAlertsForAllControls() {\n this._updateAlertsForAllControls(this.rootNode);\n }\n\n private _updateAlertsForAllControls(rootNode: NodeBase) {\n if (rootNode.control) {\n if ((rootNode.control as any).updateAlert) {\n (rootNode.control as any).updateAlert();\n }\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this._updateAlertsForAllControls(nodeAsGroup.children[o]);\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this._updateAlertsForAllControls(node);\n });\n }\n }\n private _updateHiddenDisabledStateForAllControls(rootNode: NodeBase) {\n if (rootNode.control) {\n if ((rootNode.control as any).updateDisabledState) {\n (rootNode.control as any).updateDisabledState();\n }\n\n if ((rootNode.control as any).updateHiddenState) {\n (rootNode.control as any).updateHiddenState();\n }\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this._updateHiddenDisabledStateForAllControls(nodeAsGroup.children[o]);\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this._updateHiddenDisabledStateForAllControls(node);\n });\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport * as _ from 'lodash';\n\nimport { Form } from '../form-factory/form';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { NodeBase, LeafNode } from '../form-factory/form-node';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { FormErrorsService } from '../services/form-errors.service';\n\n@Component({\n selector: 'ofe-error-renderer',\n templateUrl: 'error-renderer.component.html',\n styleUrls: ['./error-renderer.component.css']\n})\nexport class ErrorRendererComponent {\n @Input() form: Form;\n\n constructor(\n private validationFactory: ValidationFactory,\n private formErrorsService: FormErrorsService\n ) {}\n\n showErrors() {\n return !this.form.valid && this.form.showErrors;\n }\n\n get errorNodes() {\n const invalidControls = this.form.markInvalidControls(\n this.form.rootNode,\n []\n );\n return invalidControls;\n }\n\n getControlError(node: LeafNode) {\n const errors: any = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n announceErrorField(errorNode: LeafNode) {\n const nodes: Array<NodeBase> = this.form.searchNodeByQuestionId(\n errorNode.path.substring(0, errorNode.path.indexOf('.'))\n );\n\n _.forEach(nodes, (node: NodeBase) => {\n if (node.question.renderingType === 'page') {\n const pageIndex: number = this.getPageIndex(node);\n this.formErrorsService.announceErrorField(\n pageIndex + ',' + errorNode.question.key\n );\n }\n });\n }\n\n getPageIndex(node: NodeBase) {\n const questionGroup: QuestionGroup = this.form.rootNode\n .question as QuestionGroup;\n return questionGroup.questions.indexOf(node.question);\n }\n}\n","<div *ngIf=\"showErrors()\" class=\"container\">\n <div\n data-notification\n *ngFor=\"let errorNode of errorNodes\"\n class=\"cds--inline-notification cds--inline-notification--error cds--inline-notification--low-contrast pointer\"\n role=\"alert\"\n (click)=\"announceErrorField(errorNode)\"\n >\n <div class=\"cds--inline-notification__details\">\n <div class=\"cds--inline-notification__text-wrapper\">\n <p class=\"cds--inline-notification__title\">\n {{ errorNode.question.label }}\n </p>\n <p class=\"cds--inline-notification__subtitle\">\n {{ getControlError(errorNode) }}\n </p>\n </div>\n </div>\n <button\n tabindex=\"0\"\n class=\"cds--inline-notification__action-button cds--btn cds--btn--sm cds--btn--ghost\"\n type=\"button\"\n >\n {{ 'fix' | translate }}\n </button>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--inline-notification__icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M10,1c-5,0-9,4-9,9s4,9,9,9s9-4,9-9S15,1,10,1z M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n ></path>\n <path\n d=\"M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n</div>\n","import { animate, style, AnimationMetadata } from '@angular/animations';\n\nexport const COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\n\nexport const expandAnimation: AnimationMetadata[] = [\n style({ height: 0, visibility: 'hidden' }),\n animate(\n COLLAPSE_ANIMATION_TIMING,\n style({ height: '*', visibility: 'visible' })\n )\n];\n\nexport const collapseAnimation: AnimationMetadata[] = [\n style({ height: '*', visibility: 'visible' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: 0, visibility: 'hidden' }))\n];\n","import {\n AnimationBuilder,\n AnimationFactory,\n AnimationPlayer\n} from '@angular/animations';\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n Renderer2\n} from '@angular/core';\n\nimport { collapseAnimation, expandAnimation } from './collapse-animations';\n\n@Directive({\n selector: '[ofeCollapse]',\n exportAs: 'bs-collapse'\n})\nexport class CollapseDirective implements AfterViewChecked {\n // @HostBinding('class.collapse')\n /** This event fires as soon as content collapses */\n @Output() collapsed: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when collapsing is started */\n @Output() collapses: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n @Output() expanded: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when expansion is started */\n @Output() expands: EventEmitter<CollapseDirective> = new EventEmitter();\n // shown\n @HostBinding('class.in')\n @HostBinding('class.show')\n @HostBinding('attr.aria-expanded')\n isExpanded = true;\n collapseNewValue = true;\n // hidden\n @HostBinding('attr.aria-hidden') isCollapsed = false;\n // stale state\n @HostBinding('class.collapse') isCollapse = true;\n // animation state\n @HostBinding('class.collapsing') isCollapsing = false;\n\n @Input()\n set display(value: string) {\n if (!this.isAnimated) {\n this._renderer.setStyle(this._el.nativeElement, 'display', value);\n\n return;\n }\n\n this._display = value;\n\n if (value === 'none') {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n /** turn on/off animation */\n @Input() isAnimated = false;\n /** A flag indicating visibility of content (shown or hidden) */\n @Input()\n set collapse(value: boolean) {\n this.collapseNewValue = value;\n if (!this._player || this._isAnimationDone) {\n this.isExpanded = value;\n this.toggle();\n }\n }\n\n get collapse(): boolean {\n return this.isExpanded;\n }\n\n private _display = 'block';\n private _isAnimationDone?: boolean;\n private _player?: AnimationPlayer;\n private _stylesLoaded = false;\n\n private _COLLAPSE_ACTION_NAME = 'collapse';\n private _EXPAND_ACTION_NAME = 'expand';\n\n private readonly _factoryCollapseAnimation: AnimationFactory;\n private readonly _factoryExpandAnimation: AnimationFactory;\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n _builder: AnimationBuilder\n ) {\n this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n this._factoryExpandAnimation = _builder.build(expandAnimation);\n }\n\n ngAfterViewChecked(): void {\n this._stylesLoaded = true;\n\n if (!this._player || !this._isAnimationDone) {\n return;\n }\n\n this._player.reset();\n this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n }\n\n /** allows to manually toggle content visibility */\n toggle(): void {\n if (this.isExpanded) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /** allows to manually hide content */\n hide(): void {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n\n this.collapses.emit(this);\n\n this._isAnimationDone = false;\n\n this.animationRun(\n this.isAnimated,\n this._COLLAPSE_ACTION_NAME\n )(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.show();\n\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n /** allows to manually show collapsed content */\n show(): void {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n\n this.expands.emit(this);\n\n this._isAnimationDone = false;\n this.animationRun(\n this.isAnimated,\n this._EXPAND_ACTION_NAME\n )(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.hide();\n\n return;\n }\n this.expanded.emit(this);\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n });\n }\n\n animationRun(isAnimated: boolean, action: string) {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback: () => void) => callback();\n }\n\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n this._renderer.addClass(this._el.nativeElement, 'collapse');\n\n const factoryAnimation =\n action === this._EXPAND_ACTION_NAME\n ? this._factoryExpandAnimation\n : this._factoryCollapseAnimation;\n\n if (this._player) {\n this._player.destroy();\n }\n\n this._player = factoryAnimation.create(this._el.nativeElement);\n this._player.play();\n\n return (callback: () => void) => this._player?.onDone(callback);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { NumberInputComponent } from './number-input.component';\nimport { NumberInputDirective } from './number.directive';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n exports: [NumberInputComponent],\n declarations: [NumberInputComponent, NumberInputDirective],\n providers: []\n})\nexport class NumberInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SecurePipe } from './components/file-upload/secure.pipe';\nimport { DataSources } from './form-entry/data-sources/data-sources';\nimport { TranslateModule } from '@ngx-translate/core';\n@NgModule({\n declarations: [SecurePipe],\n imports: [CommonModule],\n exports: [SecurePipe, TranslateModule],\n providers: [DataSources]\n})\nexport class SharedModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../../shared.module';\nimport { FileUploadComponent } from './file-upload.component';\nimport { WebcamModule } from 'ngx-webcam';\nimport { NgxFileUploaderModule } from '@openmrs/ngx-file-uploader';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n WebcamModule,\n NgxFileUploaderModule\n ],\n exports: [FileUploadComponent],\n declarations: [FileUploadComponent],\n providers: []\n})\nexport class RemoteFileUploadModule {}\n","/**\n * modal.component\n */\n\nimport {\n Component,\n Output,\n EventEmitter,\n ChangeDetectionStrategy\n} from '@angular/core';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./modal.component.css');\n// const myDpTpl: string = require('./modal.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-picker-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: []\n})\nexport class ModalComponent {\n @Output() overlayClick = new EventEmitter<boolean>();\n\n constructor() {}\n\n closeModal() {\n this.overlayClick.emit(false);\n }\n}\n","<section class=\"x-modal\">\n <section class=\"modal-overlay\" (click)=\"closeModal()\"></section>\n <section class=\"modal-main\" id=\"section-modal-main\">\n <ng-content></ng-content>\n </section>\n</section>\n","/**\n * moment.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { Moment } from 'moment/moment';\n\n@Pipe({ name: 'moment' })\nexport class MomentPipe implements PipeTransform {\n transform(moment: Moment, format?: string): string {\n return format ? moment.format(format) : moment.format('MMM DD, YYYY');\n }\n}\n","/**\n * date-picker.component\n */\n\nimport { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport _ from 'lodash';\nimport moment, { Moment } from 'moment';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./date-picker.component.css');\n// const myDpTpl: string = require('./date-picker.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css']\n})\nexport class DatePickerComponent implements OnInit {\n public dayNames: Array<string>;\n\n @Input() public initDate: any;\n @Input() public locale = 'en';\n @Input() public viewFormat = 'll';\n @Input() public returnObject = 'js';\n @Output() public datePickerCancel = new EventEmitter<boolean>();\n @Output() public dateSelect = new EventEmitter<any>();\n\n public calendarDate: Moment;\n public selectedDate: Moment;\n public currentMonth: any;\n public today: Moment;\n public currentYear: number;\n public onDisplayMonths = false;\n public onDisplayYears = false;\n public displayYearsIndex = 0;\n public displayYearRange: Array<number>;\n public fullYearRange: Array<any>;\n public monthsShort: Array<string> = moment.monthsShort();\n public calendarDays: Array<Moment>;\n\n constructor() {}\n\n public ngOnInit(): void {\n this.initValue();\n // default to current year range\n _.each(this.fullYearRange, (v, i) => {\n this.currentYear = this.calendarDate.clone().startOf('year').year();\n if (v.indexOf(this.currentYear) !== -1) {\n this.displayYearsIndex = i;\n }\n });\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex];\n this.generateCalendar();\n }\n\n public prev(): void {\n if (this.onDisplayYears) {\n this.displayYearsIndex--;\n if (this.displayYearsIndex < 0) {\n this.displayYearsIndex = 0;\n }\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex];\n } else {\n this.calendarDate = this.calendarDate.clone().subtract(1, 'M');\n }\n this.generateCalendar();\n }\n\n public showMonthSelection(): void {\n this.onDisplayMonths = true;\n this.onDisplayYears = false;\n }\n\n public showYearSelection(): void {\n this.onDisplayYears = true;\n this.onDisplayMonths = false;\n }\n\n public next(): void {\n if (this.onDisplayYears) {\n this.displayYearsIndex++;\n if (this.displayYearsIndex >= this.fullYearRange.length) {\n this.displayYearsIndex = this.fullYearRange.length - 1;\n }\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex++];\n } else {\n this.calendarDate = this.calendarDate.clone().add(1, 'M');\n }\n this.generateCalendar();\n }\n\n public selectDay(day: Moment): void {\n const daysDifference = day.diff(\n this.calendarDate.clone().startOf('date'),\n 'days'\n );\n day = this.calendarDate.clone().add(daysDifference, 'd');\n const selectedDay = this.parseToReturnObjectType(day);\n this.dateSelect.emit(selectedDay);\n this.cancelDatePicker();\n return;\n }\n\n public selectMonth(month: string) {\n this.calendarDate = this.calendarDate.clone().month(month);\n this.onDisplayMonths = false;\n this.generateCalendar();\n }\n\n public selectYear(year: number) {\n this.calendarDate = this.calendarDate.clone().year(year);\n this.onDisplayYears = false;\n this.generateCalendar();\n }\n\n public selectToday(): void {\n const today = this.parseToReturnObjectType(moment());\n this.dateSelect.emit(today);\n this.cancelDatePicker();\n return;\n }\n\n public clearPickDate(): void {\n this.dateSelect.emit(null);\n this.cancelDatePicker();\n return;\n }\n\n public cancelDatePicker(): void {\n this.datePickerCancel.emit(false);\n return;\n }\n\n protected generateYears(): void {\n const currentYear = moment().year();\n const startYr = this.calendarDate.clone().subtract(100, 'y').year();\n // const endYr = this.calendarDate.clone().add(10, 'y').year();\n const years = [];\n for (let year = startYr; year <= currentYear; year++) {\n years.push(year);\n }\n\n this.fullYearRange = _.chunk(years, 14);\n }\n\n protected initValue() {\n // set moment locale (default is en)\n moment.locale(this.locale);\n // set today value\n this.today = moment().startOf('date');\n this.currentMonth = this.monthsShort[moment().month()];\n this.currentYear = moment().year();\n\n // set week days name array\n this.dayNames = moment.weekdaysShort(true);\n\n // check if the input initDate has value\n if (this.initDate) {\n this.calendarDate =\n this.returnObject === 'string'\n ? moment(this.initDate, this.viewFormat)\n : moment(this.initDate);\n this.selectedDate = this.calendarDate.clone().startOf('date');\n } else {\n this.calendarDate = moment();\n }\n this.generateYears();\n }\n\n protected generateCalendar(): void {\n this.calendarDays = [];\n const start =\n 0 -\n ((this.calendarDate.clone().startOf('month').day() +\n (7 - moment.localeData().firstDayOfWeek())) %\n 7);\n const end = 41 + start; // iterator ending point\n\n for (let i = start; i <= end; i += 1) {\n const day = this.calendarDate.clone().startOf('month').add(i, 'days');\n this.calendarDays.push(day);\n }\n }\n\n protected parseToReturnObjectType(day: Moment): any {\n switch (this.returnObject) {\n case 'js':\n return day.toDate();\n\n case 'string':\n return day.format(this.viewFormat);\n\n case 'moment':\n return day;\n\n case 'json':\n return day.toJSON();\n\n case 'array':\n return day.toArray();\n\n case 'iso':\n return day.toISOString();\n\n case 'object':\n return day.toObject();\n\n default:\n return day;\n }\n }\n}\n","<ofe-picker-modal (overlayClick)=\"cancelDatePicker()\">\n <div class=\"picker-wrap\">\n <div class=\"picker-box\">\n <div class=\"picker-header\">\n <div class=\"picker-header-nav\">\n <span class=\"nav-prev\" (click)=\"prev()\"></span>\n </div>\n <div class=\"picker-header-content\">\n <div class=\"content\">\n <span (click)=\"showMonthSelection()\" class=\"month\">{{\n calendarDate | moment: 'MMMM'\n }}</span>\n <span class=\"seperator\">|</span>\n <span (click)=\"showYearSelection()\" class=\"year\">{{\n calendarDate | moment: 'YYYY'\n }}</span>\n </div>\n </div>\n <div class=\"picker-header-nav\">\n <span class=\"nav-next\" (click)=\"next()\"></span>\n </div>\n </div>\n <div class=\"picker-calendar\">\n <div\n class=\"picker-calendar-row\"\n *ngIf=\"!onDisplayMonths && !onDisplayYears\"\n >\n <span class=\"picker-weekday\" *ngFor=\"let day of dayNames\">{{\n day\n }}</span>\n </div>\n <div\n class=\"picker-calendar-row\"\n *ngIf=\"!onDisplayMonths && !onDisplayYears\"\n >\n <span\n class=\"picker-day\"\n (click)=\"selectDay(day)\"\n [ngClass]=\"{\n 'out-focus': day.month() !== calendarDate.month(),\n today: day.isSame(today),\n selected: day.isSame(selectedDate)\n }\"\n *ngFor=\"let day of calendarDays\"\n >\n {{ day | moment: 'D' }}\n </span>\n </div>\n <div class=\"picker-calendar-row\" *ngIf=\"onDisplayMonths\">\n <span\n class=\"picker-month\"\n *ngFor=\"let month of monthsShort\"\n (click)=\"selectMonth(month)\"\n [ngClass]=\"{\n selected: month === currentMonth\n }\"\n >\n {{ month }}\n </span>\n </div>\n <div class=\"picker-calendar-row\" *ngIf=\"onDisplayYears\">\n <span\n class=\"picker-year\"\n *ngFor=\"let year of displayYearRange\"\n (click)=\"selectYear(year)\"\n [ngClass]=\"{\n selected: year === currentYear\n }\"\n >\n {{ year }}\n </span>\n </div>\n </div>\n <div class=\"picker-footer\">\n <div class=\"picker-action action-today\" (click)=\"selectToday()\">\n <span class=\"text\">Today</span>\n </div>\n <div class=\"picker-action action-clear\" (click)=\"clearPickDate()\">\n <span class=\"text\">Clear</span>\n </div>\n <div class=\"picker-action action-close\" (click)=\"cancelDatePicker()\">\n <span class=\"text\">Close</span>\n </div>\n </div>\n </div>\n </div>\n</ofe-picker-modal>\n","/**\n * time-picker.component\n */\n\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport moment, { Moment } from 'moment';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./time-picker.component.css');\n// const myDpTpl: string = require('./time-picker.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.css']\n})\nexport class TimePickerComponent implements OnInit {\n @Input() initTime: any;\n @Input() showSecond = true;\n @Input() viewFormat = 'hh:mm A';\n @Input() use12Hour = false;\n @Input() returnObject = 'js';\n @Output() timeSelect = new EventEmitter<any>();\n @Output() timePickerCancel = new EventEmitter<boolean>();\n hourFormat = 'HH';\n public time: Moment;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.use12Hour) {\n this.hourFormat = 'hh';\n }\n this.time = this.initTime\n ? moment(this.initTime, this.viewFormat)\n : moment();\n\n // check if the input initDate has value\n if (this.initTime) {\n this.time =\n this.returnObject === 'string'\n ? moment(this.initTime, this.viewFormat)\n : moment(this.initTime);\n } else {\n this.time = moment();\n }\n }\n\n increaseHour(): void {\n this.time = this.time.clone().add(1, 'h');\n }\n\n decreaseHour(): void {\n this.time = this.time.clone().subtract(1, 'h');\n }\n\n increaseMinute() {\n this.time = this.time.clone().add(1, 'm');\n }\n\n decreaseMinute() {\n this.time = this.time.clone().subtract(1, 'm');\n }\n\n increaseSecond(): void {\n this.time = this.time.clone().add(1, 's');\n }\n\n decreaseSecond(): void {\n this.time = this.time.clone().subtract(1, 's');\n }\n\n selectTime(): void {\n const selectTime = this.parseToReturnObjectType(this.time);\n this.timeSelect.emit(selectTime);\n this.cancelTimePicker();\n return;\n }\n\n selectNow(): void {\n const selectTime = this.parseToReturnObjectType(moment());\n this.timeSelect.emit(selectTime);\n this.cancelTimePicker();\n return;\n }\n\n clearTime(): void {\n this.timeSelect.emit(null);\n this.cancelTimePicker();\n return;\n }\n\n cancelTimePicker(): void {\n this.timePickerCancel.emit(false);\n return;\n }\n\n protected parseToReturnObjectType(time: Moment): any {\n switch (this.returnObject) {\n case 'js':\n return time.toDate();\n\n case 'string':\n return time.format(this.viewFormat);\n\n case 'moment':\n return time;\n\n case 'json':\n return time.toJSON();\n\n case 'array':\n return time.toArray();\n\n case 'iso':\n return time.toISOString();\n\n case 'object':\n return time.toObject();\n\n default:\n return time;\n }\n }\n}\n","<ofe-picker-modal (overlayClick)=\"cancelTimePicker()\">\n <div class=\"picker-wrap\">\n <div class=\"picker-box\">\n <div class=\"picker-header\">Time Picker</div>\n <div class=\"picker-table\">\n <ul class=\"picker-table-time\">\n <li class=\"picker-table-number hour\">\n <span class=\"arrow up\" (click)=\"increaseHour()\"></span>\n {{ time | moment: hourFormat }}\n <span class=\"arrow down\" (click)=\"decreaseHour()\"></span>\n </li>\n <li class=\"picker-table-separator\">:</li>\n <li class=\"picker-table-number minute\">\n <span class=\"arrow up\" (click)=\"increaseMinute()\"></span>\n {{ time | moment: 'mm' }}\n <span class=\"arrow down\" (click)=\"decreaseMinute()\"></span>\n </li>\n <li *ngIf=\"showSecond\" class=\"picker-table-separator\">:</li>\n <li *ngIf=\"showSecond\" class=\"picker-table-number second\">\n <span class=\"arrow up\" (click)=\"increaseSecond()\"></span>\n {{ time | moment: 'ss' }}\n <span class=\"arrow down\" (click)=\"decreaseSecond()\"></span>\n </li>\n <li *ngIf=\"use12Hour\" class=\"picker-table-meridiem meridiem\">\n {{ time | moment: 'A' }}\n </li>\n </ul>\n </div>\n <div class=\"picker-footer\">\n <div class=\"picker-action action-now\" (click)=\"selectNow()\">\n <span class=\"text\">Now</span>\n </div>\n <div class=\"picker-action action-confirm\" (click)=\"selectTime()\">\n <span class=\"text\">Confirm</span>\n </div>\n <div class=\"picker-action action-clear\" (click)=\"clearTime()\">\n <span class=\"text\">Clear</span>\n </div>\n <div class=\"picker-action action-close\" (click)=\"cancelTimePicker()\">\n <span class=\"text\">Close</span>\n </div>\n </div>\n </div>\n </div>\n</ofe-picker-modal>\n","import {\n Component,\n Input,\n forwardRef,\n EventEmitter,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateTimePickerComponent),\n multi: true\n }\n ]\n})\nexport class DateTimePickerComponent implements ControlValueAccessor {\n @Input() modelValue: any;\n @Input() showDate = true;\n @Input() showTime = false;\n @Input() showWeeks = false;\n @Input() weeks: number[] = [2, 4, 6, 8, 12, 16, 24];\n @Output() dateChange = new EventEmitter<any>();\n public showDatePicker = false;\n public showTimePicker = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor() {}\n\n weeksSelected(count) {\n const now = new Date();\n const nextDate = now.setDate(now.getDate() + count * 7);\n this.value = moment(nextDate).format();\n }\n setDate(date: any): void {\n if (date && date !== '') {\n this.value = moment(date).format();\n } else {\n this.value = date;\n }\n }\n\n setTime(time: any): void {\n if (time && time !== '') {\n this.value = moment(time).format();\n } else {\n this.value = time;\n }\n return;\n }\n\n toggleDatePicker(status: boolean): void {\n this.showDatePicker = status;\n /*setTimeout(function() {\n let _body = document.getElementById('content-wrapper').getBoundingClientRect(),\n elem = document.getElementById('section-modal-main');\n if (elem) {\n let elemBox = elem.getBoundingClientRect();\n if (elemBox.bottom > _body.bottom) {\n elem.style.bottom = '36px';\n }\n }\n }, 0);*/\n return;\n }\n\n toggleTimePicker(status: boolean): void {\n this.showTimePicker = status;\n return;\n }\n get value() {\n return this.modelValue;\n }\n\n set value(val) {\n this.modelValue = val;\n this.dateChange.emit(val);\n this.onChange(val);\n this.onTouched();\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n writeValue(value) {\n if (value instanceof Date) {\n this.value = moment(value).format();\n } else {\n this.value = value;\n }\n }\n}\n","<div class=\"row\">\n <div *ngIf=\"!showTime\" class=\"col-xs-12 col-md-12\">\n <input\n *ngIf=\"!showWeeks\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div *ngIf=\"showWeeks\" class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-default dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'weeks' | translate }} <span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu up\">\n <li (click)=\"weeksSelected(count)\" *ngFor=\"let count of weeks\">\n <span> {{ count }} {{ 'weeks' | translate }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"col-xs-8 col-md-8\">\n <input\n *ngIf=\"!showWeeks\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div *ngIf=\"showWeeks\" class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-default dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'weeks' | translate }} <span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu up\">\n <li (click)=\"weeksSelected(count)\" *ngFor=\"let count of weeks\">\n <span> {{ count }} {{ 'weeks' | translate }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"col-xs-4 col-md-4\">\n <input\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'shortTime'\"\n (focus)=\"toggleTimePicker(true)\"\n readonly\n placeholder=\"Select Time\"\n />\n </div>\n</div>\n<ofe-date-picker\n *ngIf=\"showDatePicker\"\n [initDate]=\"value\"\n (dateSelect)=\"setDate($event)\"\n (datePickerCancel)=\"toggleDatePicker($event)\"\n></ofe-date-picker>\n\n<ofe-time-picker\n *ngIf=\"showTimePicker\"\n [initTime]=\"value\"\n [use12Hour]=\"true\"\n (timeSelect)=\"setTime($event)\"\n (timePickerCancel)=\"toggleTimePicker($event)\"\n></ofe-time-picker>\n","/**\n * date-time-picker.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { ModalComponent } from './picker-modal/modal.component';\nimport { MomentPipe } from './pipes/moment.pipe';\nimport { DateTimePickerComponent } from './date-time-picker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, TranslateModule],\n declarations: [\n DatePickerComponent,\n TimePickerComponent,\n ModalComponent,\n MomentPipe,\n DateTimePickerComponent\n ],\n exports: [\n DatePickerComponent,\n TimePickerComponent,\n ModalComponent,\n MomentPipe,\n DateTimePickerComponent\n ],\n providers: []\n})\nexport class DateTimePickerModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'ofe-owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T>\n extends OwlDateTime<T>\n implements OnInit, ControlValueAccessor {\n @HostBinding('class.owl-dt-inline') get owlDTInlineClass() {\n return true;\n }\n\n @ViewChild(OwlDateTimeContainerComponent, { static: true })\n container: OwlDateTimeContainerComponent<T>;\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n }\n }\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n get startAt(): T | null {\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[0] || null;\n } else if (this.selectMode === 'rangeTo') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n\n @Input()\n get owlDateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n set dateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n\n get minDateTime(): T | null {\n return this._min || null;\n }\n\n @Input() min: Date;\n set minDateTime(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n\n get maxDateTime(): T | null {\n return this._max || null;\n }\n\n @Input() max: Date;\n set maxDateTime(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n private _value: T | null;\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n this._value = value;\n this.selected = value;\n }\n\n private _values: T[] = [];\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n v = this.getValidDate(v);\n return v ? this.dateTimeAdapter.clone(v) : null;\n });\n this._values = [...values];\n this.selecteds = [...values];\n } else {\n this._values = [];\n this.selecteds = [];\n }\n }\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n get opened(): boolean {\n return true;\n }\n\n get pickerMode(): PickerMode {\n return 'inline';\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n\n constructor(\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n }\n\n public ngOnInit() {\n this.container.picker = this;\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n this.container.pickerMoment = value;\n } else {\n this.values = value;\n this.container.pickerMoment = this._values[\n this.container.activeSelectedIndex\n ];\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public select(date: T[] | T): void {\n if (this.disabled) {\n return;\n }\n\n if (Array.isArray(date)) {\n this.values = [...date];\n } else {\n this.value = date;\n }\n this.onModelChange(date);\n this.onModelTouched();\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n}\n","<ofe-owl-date-time-container></ofe-owl-date-time-container>\n","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport {\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService\n} from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, OverlayModule, PortalModule],\n exports: [],\n declarations: [OwlDialogContainerComponent],\n providers: [OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService]\n})\nexport class OwlDialogModule {}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport {\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OwlDateTimeComponent\n} from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n OwlDialogModule,\n A11yModule,\n TranslateModule\n ],\n exports: [\n OwlCalendarComponent,\n OwlTimerComponent,\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeInlineComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent\n ],\n declarations: [\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeContainerComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlCalendarComponent,\n OwlCalendarBodyComponent,\n NumberFixedLenPipe,\n OwlDateTimeInlineComponent\n ],\n providers: [OwlDateTimeIntl, OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER]\n})\nexport class OwlDateTimeModule {}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n DateTimeAdapter,\n OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n useUtcForDisplay: boolean;\n\n constructor(\n @Optional()\n @Inject(OWL_DATE_TIME_LOCALE)\n private owlDateTimeLocale: string,\n platform: Platform\n ) {\n super();\n super.setLocale(owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n }\n\n public getYear(date: Date): number {\n return date.getFullYear();\n }\n\n public getMonth(date: Date): number {\n return date.getMonth();\n }\n\n public getDay(date: Date): number {\n return date.getDay();\n }\n\n public getDate(date: Date): number {\n return date.getDate();\n }\n\n public getHours(date: Date): number {\n return date.getHours();\n }\n\n public getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n public getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n public getTime(date: Date): number {\n return date.getTime();\n }\n\n public getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = this.createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + 1,\n 0\n );\n\n return this.getDate(lastDateOfMonth);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n month: style,\n timeZone: 'utc'\n });\n return range(12, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, i, 1))\n )\n );\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public toIso8601(date: Date): string {\n return date.toISOString();\n }\n\n public isEqual(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft.getTime() === dateRight.getTime();\n } else {\n return false;\n }\n }\n\n public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.clone(dateLeft);\n const dateRightStartOfDay = this.clone(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n } else {\n return false;\n }\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public invalid(): Date {\n return new Date(NaN);\n }\n\n public isDateInstance(obj: any): boolean {\n return obj instanceof Date;\n }\n\n public addCalendarYears(date: Date, amount: number): Date {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public addCalendarMonths(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result;\n }\n\n public addCalendarDays(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result;\n }\n\n public setHours(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setHours(amount);\n return result;\n }\n\n public setMinutes(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setMinutes(amount);\n return result;\n }\n\n public setSeconds(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setSeconds(amount);\n return result;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(\n `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n );\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(\n `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n );\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(\n `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n );\n }\n\n const result = this.createDateWithOverflow(\n year,\n month,\n date,\n hours,\n minutes,\n seconds\n );\n\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n if (result.getMonth() !== month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n public clone(date: Date): Date {\n return this.createDate(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date),\n this.getHours(date),\n this.getMinutes(date),\n this.getSeconds(date)\n );\n }\n\n public now(): Date {\n return new Date();\n }\n\n public format(date: Date, displayFormat: any): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n if (\n this._clampDate &&\n (date.getFullYear() < 1 || date.getFullYear() > 9999)\n ) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n\n return this.stripDirectionalityCharacters(date.toDateString());\n }\n\n public parse(value: any, parseFormat: any): Date | null {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n public deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n const date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n /**\n * Creates a date but allows the month and date to overflow.\n */\n private createDateWithOverflow(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n const result = new Date(year, month, date, hours, minutes, seconds);\n\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n parseInput: null,\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS }\n ]\n})\nexport class OwlNativeDateTimeModule {}\n","/**\n * date-time-picker.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxDatetimeComponent } from './ngx-datetime-picker.component';\nimport { OwlDateTimeModule } from '../ngx-pick-datetime/lib/date-time/date-time.module';\nimport { OwlNativeDateTimeModule } from '../ngx-pick-datetime/lib/date-time/adapter/native-date-time.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n TranslateModule\n ],\n declarations: [NgxDatetimeComponent],\n exports: [NgxDatetimeComponent],\n providers: []\n})\nexport class NgxDateTimePickerModule {}\n","import { SelectOption } from './interfaces/select-option';\nexport class Option {\n label: string;\n value: any;\n constructor(options: SelectOption) {\n this.label = options.label;\n this.value = options.value;\n }\n}\n","import { Component, Input, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { Option } from '../form-entry/question-models/select-option';\n\nimport { DataSource } from '../form-entry/question-models/interfaces/data-source';\n\n@Component({\n selector: 'ofe-ng-select',\n template: `<ng-select\n (searchInputText)=\"getChangingText($event)\"\n (ngModelChange)=\"onValueChange($event)\"\n [options]=\"question_options\"\n [multiple]=\"multiple\"\n >\n </ng-select> `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfeNgSelectComponent),\n multi: true\n }\n ]\n})\nexport class AfeNgSelectComponent implements ControlValueAccessor, OnInit {\n subject: BehaviorSubject<Option[]>;\n subjectOption: BehaviorSubject<Option>;\n @Input() dataSource: DataSource;\n @Input() multiple: boolean;\n @Input() extras: any;\n question_options: any = [];\n selected_question_option: any;\n errors: any = [];\n propagateChange = (_: any) => {};\n\n getChangingText(event) {\n this.getData(event).subscribe((options) => {\n this.question_options = options;\n });\n }\n\n writeValue(obj: any): void {}\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n ngOnInit() {\n if (this.extras) {\n if (this.extras.originalValue) {\n this.resolveSelectedOption(this.extras.originalValue).subscribe(\n (option) => {\n this.selected_question_option = option;\n }\n );\n }\n }\n }\n\n getData(searchText: string): Observable<Option[]> {\n this.subject = new BehaviorSubject<Option[]>([]);\n\n const OptionsObservable = this.dataSource.searchOptions(searchText);\n\n OptionsObservable.subscribe(\n (options) => {\n const mappedOptions: Option[] = new Array<Option>();\n\n for (let i = 0; i < options.length; i++) {\n mappedOptions.push(new Option(options[i]));\n }\n this.subject.next(mappedOptions);\n },\n (error) => {\n this.subject.error(error);\n }\n );\n\n return this.subject.asObservable();\n }\n\n onValueChange(event) {}\n resolveSelectedOption(value: any): Observable<Option> {\n this.subjectOption = new BehaviorSubject<Option>(null);\n const OptionObservable = this.dataSource.resolveSelectedValue(value);\n\n OptionObservable.subscribe(\n (option) => {\n this.subjectOption.next(option);\n },\n (error) => {\n this.subjectOption.error(error);\n }\n );\n\n return this.subjectOption.asObservable();\n }\n\n resetOptions() {\n this.subject.next(new Array<Option>());\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class FormSchemaCompiler {\n constructor() {}\n\n public compileFormSchema(\n formSchema: Object,\n referencedComponents: Array<any>\n ): Object {\n // get all referenced forms\n const refForms: Object = this.getReferencedForms(\n formSchema,\n referencedComponents\n );\n if (_.isEmpty(refForms)) {\n return formSchema;\n }\n\n // get all placeholders from the form schema\n const placeHolders = this.getAllPlaceholderObjects(formSchema);\n if (_.isEmpty(placeHolders)) {\n return formSchema;\n }\n\n // replace all placeholders\n this.replaceAllPlaceholdersWithActualObjects(refForms, placeHolders);\n return formSchema;\n }\n\n private findSchemaByName(\n schemaArray: Array<any>,\n nameOfSchema: string\n ): Object {\n if (_.isEmpty(schemaArray) || _.isEmpty(nameOfSchema)) {\n return;\n }\n let foundSchema: any = {};\n _.each(schemaArray, (schema: any) => {\n if (schema.name === nameOfSchema) {\n foundSchema = schema;\n }\n });\n return foundSchema;\n }\n\n private getPageInSchemaByLabel(schema: any, pageLabel: string): Object {\n if (_.isEmpty(schema) || _.isEmpty(pageLabel)) {\n return;\n }\n let foundPage: Object = {};\n _.each(schema.pages, (page) => {\n if (page.label === pageLabel) {\n foundPage = page;\n }\n });\n return foundPage;\n }\n\n private getSectionInSchemaByPageLabelBySectionLabel(\n schema: Object,\n pageLabel: string,\n sectionLabel: string\n ): Object {\n if (_.isEmpty(schema) || _.isEmpty(pageLabel) || _.isEmpty(sectionLabel)) {\n return;\n }\n const foundPage: any = this.getPageInSchemaByLabel(schema, pageLabel);\n if (_.isEmpty(foundPage)) {\n return;\n }\n let foundSection: Object = {};\n _.each(foundPage.sections, (section) => {\n if (section.label === sectionLabel) {\n foundSection = section;\n }\n });\n return foundSection;\n }\n\n private getQuestionByIdInSchema(schema: any, questionId: string): Array<any> {\n if (_.isEmpty(schema) || _.isEmpty(questionId)) {\n return;\n }\n if (Array.isArray(schema)) {\n let question: Array<any>;\n for (let i = 0; i < schema.length; i++) {\n if (!_.isEmpty(schema[i])) {\n question = this.getQuestionByIdInSchema(schema[i], questionId);\n }\n if (!_.isEmpty(question)) {\n break;\n }\n }\n return question;\n } else if (typeof schema === 'object') {\n if (this.isQuestionObjectWithId(schema, questionId)) {\n return schema;\n } else if (this.isSchemaSubObjectExpandable(schema)) {\n const toExpand = schema.pages || schema.sections || schema.questions;\n return this.getQuestionByIdInSchema(toExpand, questionId);\n } else {\n return;\n }\n } else {\n return;\n }\n }\n\n private getQuestionsArrayByQuestionIdInSchema(\n schema: any,\n questionId: string\n ): Array<any> {\n if (_.isEmpty(schema) || _.isEmpty(questionId)) {\n return;\n }\n return this.getQuestionsArrayByQuestionId(schema, schema, questionId);\n }\n\n private getQuestionsArrayByQuestionId(\n parent: any,\n object: any,\n questionId: string\n ): Array<any> {\n if (Array.isArray(object)) {\n let returnedValue: Array<any>;\n for (let i = 0; i < object.length; i++) {\n if (!_.isEmpty(object[i])) {\n returnedValue = this.getQuestionsArrayByQuestionId(\n object,\n object[i],\n questionId\n );\n }\n if (!_.isEmpty(returnedValue)) {\n break;\n }\n }\n\n return returnedValue;\n } else if (typeof object === 'object') {\n if (this.isQuestionObjectWithId(object, questionId)) {\n return parent;\n } else if (this.isSchemaSubObjectExpandable(object)) {\n const toExpand = object.pages || object.sections || object.questions;\n return this.getQuestionsArrayByQuestionId(\n toExpand,\n toExpand,\n questionId\n );\n } else {\n return;\n }\n } else {\n return;\n }\n }\n\n // object is page or section or question\n private isSchemaSubObjectExpandable(object: Object): Boolean {\n if (typeof object === 'object') {\n const objectKeys = Object.keys(object);\n if (\n _.includes(objectKeys, 'pages') ||\n _.includes(objectKeys, 'sections') ||\n _.includes(objectKeys, 'questions')\n ) {\n return true;\n }\n }\n return false;\n }\n\n private isQuestionObjectWithId(object: Object, id: any): Boolean {\n return object['id'] === id;\n }\n\n private getAllPlaceholderObjects(schema: Object): Array<any> {\n const referencedObjects: Array<any> = [];\n this.extractPlaceholderObjects(schema, referencedObjects);\n return referencedObjects;\n }\n\n private extractPlaceholderObjects(\n subSchema: any,\n objectsArray: Array<Object>\n ): void {\n if (_.isEmpty(subSchema)) {\n return;\n }\n if (Array.isArray(subSchema)) {\n for (let i = 0; i < subSchema.length; i++) {\n if (!_.isEmpty(subSchema[i])) {\n this.extractPlaceholderObjects(subSchema[i], objectsArray);\n }\n }\n } else if (typeof subSchema === 'object') {\n if (!_.isEmpty(subSchema.reference)) {\n objectsArray.push(subSchema);\n } else if (this.isSchemaSubObjectExpandable(subSchema)) {\n const toExpand =\n subSchema.pages || subSchema.sections || subSchema.questions;\n this.extractPlaceholderObjects(toExpand, objectsArray);\n }\n }\n }\n\n private fillPlaceholderObject(\n placeHolderObject: Object,\n referenceObject: Object\n ): Object {\n for (const member in referenceObject) {\n if (_.isEmpty(placeHolderObject[member])) {\n placeHolderObject[member] = referenceObject[member];\n }\n }\n return placeHolderObject;\n }\n\n private replaceAllPlaceholdersWithActualObjects(\n keyValReferencedForms: Object,\n placeHoldersArray: Array<any>\n ): Array<any> {\n _.each(placeHoldersArray, (placeHolder) => {\n const referencedObject: Object = this.getReferencedObject(\n placeHolder.reference,\n keyValReferencedForms\n );\n\n if (_.isEmpty(referencedObject)) {\n console.error(\n 'Form compile: Error finding referenced object',\n placeHolder.reference\n );\n } else {\n placeHolder = this.fillPlaceholderObject(placeHolder, referencedObject);\n placeHolder = this.removeExcludedQuestionsFromPlaceholder(placeHolder);\n delete placeHolder['reference'];\n }\n });\n return placeHoldersArray;\n }\n\n private removeObjectFromArray(array: Array<any>, object: Object): void {\n const indexOfObject = array.indexOf(object);\n if (indexOfObject === -1) {\n return;\n }\n\n array.splice(indexOfObject, 1);\n }\n\n private removeExcludedQuestionsFromPlaceholder(placeHolder: any): Object {\n if (Array.isArray(placeHolder.reference.excludeQuestions)) {\n _.each(placeHolder.reference.excludeQuestions, (excludedQuestionId) => {\n const questionsArray: Array<any> = this.getQuestionsArrayByQuestionIdInSchema(\n placeHolder,\n excludedQuestionId\n );\n\n if (!Array.isArray(questionsArray)) {\n return;\n }\n const question = this.getQuestionByIdInSchema(\n questionsArray,\n excludedQuestionId\n );\n\n this.removeObjectFromArray(questionsArray, question);\n });\n }\n return placeHolder;\n }\n\n private getReferencedObject(\n referenceData: any,\n keyValReferencedForms: Object\n ): Object {\n if (_.isEmpty(referenceData.form)) {\n console.error(\n 'Form compile: reference missing form attribute',\n referenceData\n );\n return;\n }\n if (_.isEmpty(keyValReferencedForms[referenceData.form])) {\n console.error(\n 'Form compile: referenced form alias not found',\n referenceData\n );\n return;\n }\n if (!_.isEmpty(referenceData.questionId)) {\n return this.getQuestionByIdInSchema(\n keyValReferencedForms[referenceData.form],\n referenceData.questionId\n );\n }\n\n if (!_.isEmpty(referenceData.page) && !_.isEmpty(referenceData.section)) {\n return this.getSectionInSchemaByPageLabelBySectionLabel(\n keyValReferencedForms[referenceData.form],\n referenceData.page,\n referenceData.section\n );\n }\n if (!_.isEmpty(referenceData.page)) {\n return this.getPageInSchemaByLabel(\n keyValReferencedForms[referenceData.form],\n referenceData.page\n );\n }\n console.error(\n 'Form compile: Unsupported reference type',\n referenceData.reference\n );\n }\n\n private getReferencedForms(\n formSchema: any,\n formSchemasLookupArray: Array<any>\n ): Object {\n const referencedForms: Array<any> = formSchema.referencedForms;\n\n if (_.isEmpty(referencedForms)) {\n return;\n }\n\n const keyValReferencedForms: Object = {};\n\n _.each(referencedForms, (reference: any) => {\n keyValReferencedForms[reference.alias] = this.findSchemaByName(\n formSchemasLookupArray,\n reference.formName\n );\n });\n return keyValReferencedForms;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { TextQuestionOptions } from './interfaces/text-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TextInputQuestion extends QuestionBase {\n placeholder: string;\n constructor(options: TextQuestionOptions) {\n super(options);\n this.placeholder = options.placeholder || '';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { TextInputQuestion } from './text-input-question';\nimport { TextAreaQuestionOptions } from './interfaces/text-area-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TextAreaInputQuestion extends TextInputQuestion {\n isExpanded: boolean;\n rows: number;\n\n constructor(options: TextAreaQuestionOptions) {\n super(options);\n this.placeholder = options.placeholder || '';\n this.isExpanded = options.isExpanded || false;\n this.rows = options.rows || 18;\n this.renderingType = 'textarea';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { SelectQuestionOptions } from './interfaces/select-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class SelectQuestion extends QuestionBase {\n options: { label: string; value: string }[];\n dataSource?: any;\n\n constructor(options: SelectQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n this.dataSource = options.dataSource || '';\n }\n}\n","import { QuestionBase } from './question-base';\nimport { UiSelectQuestionOptions } from './interfaces/ui-select-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class UiSelectQuestion extends QuestionBase {\n options: { key: string; value: string }[];\n searchFunction: Function;\n resolveFunction: Function;\n constructor(options: UiSelectQuestionOptions) {\n super(options);\n this.renderingType = 'ui-select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { DateQuestionOptions } from './interfaces/date-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class DateQuestion extends QuestionBase {\n showTime = true;\n showWeeksAdder = false;\n constructor(options: DateQuestionOptions) {\n super(options);\n this.renderingType = 'date';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { SelectQuestion } from './select-question';\nimport { MultiSelectQuestionOptions } from './interfaces/multi-select-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class MultiSelectQuestion extends SelectQuestion {\n options: { label: string; value: string }[];\n\n constructor(options: MultiSelectQuestionOptions) {\n super(options);\n this.renderingType = 'multi-select' || 'single-select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from '../question-base';\nimport { BaseOptions } from './base-options';\n\nexport abstract class NestedQuestion extends QuestionBase {\n abstract questions: QuestionBase[];\n constructor(options: BaseOptions) {\n super(options);\n }\n}\n","import { QuestionBase } from './question-base';\nimport { GroupQuestionOptions } from './interfaces/group-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { NestedQuestion } from './interfaces/nested-questions';\n\nexport class QuestionGroup extends NestedQuestion {\n questions: QuestionBase[];\n isExpanded = true;\n\n constructor(options: GroupQuestionOptions) {\n super(options);\n this.renderingType = 'group';\n this.questions = options.questions || [];\n this.controlType = AfeControlType.AfeFormGroup;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { RepeatingQuestionOptions } from './interfaces/repeating-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { NestedQuestion } from './interfaces/nested-questions';\n\nexport class RepeatingQuestion extends NestedQuestion {\n questions: QuestionBase[];\n\n constructor(options: RepeatingQuestionOptions) {\n super(options);\n this.renderingType = 'repeating';\n this.questions = options.questions || [];\n this.controlType = AfeControlType.AfeFormArray;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { CheckboxOptions } from './interfaces/checkbox-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class CheckBoxQuestion extends QuestionBase {\n options: { key: string; value: string }[];\n\n constructor(options: CheckboxOptions) {\n super(options);\n this.renderingType = 'checkbox';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { RadioButtonOptions } from './interfaces/radio-button-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class RadioButtonQuestion extends QuestionBase {\n options: RadioButtonOptions['options'];\n allowUnselect: boolean;\n\n constructor(options: RadioButtonOptions) {\n super(options);\n this.renderingType = 'radio';\n this.allowUnselect = options.allowUnselect === true;\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { FileUploadQuestionOptions } from './interfaces/file-upload-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class FileUploadQuestion extends QuestionBase {\n showTime = true;\n showWeeksAdder = false;\n dataSource?: any;\n constructor(options: FileUploadQuestionOptions) {\n super(options);\n this.renderingType = 'file';\n this.dataSource = options.dataSource;\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { TestOrderQuestionOptions } from './interfaces/test-order-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TestOrderQuestion extends QuestionBase {\n orderType: string;\n selectableOrders: { concept: string; label: string }[];\n orderSettingUuid: string;\n rendering: string;\n options: any[];\n constructor(options: TestOrderQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.orderType = options.orderType;\n this.selectableOrders = options.selectableOrders;\n this.options = options.options;\n this.orderSettingUuid = options.orderSettingUuid;\n this.rendering = options.orderSettingUuid;\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class DateValidationModel extends ValidationModel {\n allowFutureDates = false;\n\n constructor(validations: any) {\n super(validations);\n\n this.allowFutureDates =\n validations.allowFutureDates === 'true' ? true : false;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MaxValidationModel extends ValidationModel {\n max: number;\n\n constructor(validations: any) {\n super(validations);\n const max: any = validations.max;\n this.max = Number(max);\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MinValidationModel extends ValidationModel {\n min: number;\n\n constructor(validations: any) {\n super(validations);\n const min: any = validations.min;\n this.min = Number(min);\n }\n}\n","import { Option } from '../question-models/select-option';\nimport { DataSource } from '../question-models/interfaces/data-source';\nimport { Observable, BehaviorSubject, of } from 'rxjs';\n\nexport class DummyDataSource implements DataSource {\n options: Observable<Option[]>;\n option: Observable<Option>;\n returnErrorOnNext = false;\n\n constructor() {}\n\n resolveSelectedValue(value): Observable<Option> {\n let selectOptions = this.sampleData();\n\n selectOptions = selectOptions.map(function (obj) {\n const option = new Option({\n label: obj.label,\n value: obj.concept\n });\n return option;\n });\n\n selectOptions = selectOptions.filter((option) => option.value === value);\n\n const test: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n if (!this.returnErrorOnNext) {\n test.next(selectOptions[0]);\n } else {\n test.error(new Error('Error loading Options'));\n }\n\n return test.asObservable();\n }\n fileUpload(url) {\n return of({ image: '' });\n }\n fetchFile(url) {\n return of({ image: '' });\n }\n searchOptions(searchText): Observable<Option[]> {\n let selectOptions = this.sampleData();\n\n selectOptions = selectOptions.map(function (obj) {\n const option = new Option({\n label: obj.label,\n value: obj.concept\n });\n return option;\n });\n\n selectOptions = selectOptions.filter(\n (option) => option.label.indexOf(searchText) !== -1\n );\n\n const test: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n if (!this.returnErrorOnNext) {\n test.next(selectOptions);\n } else {\n test.error(new Error('Error loading Options'));\n }\n\n return test.asObservable();\n }\n\n sampleData(): any {\n return [\n {\n concept: 'a899e0ac-1350-11df-a1f1-0026b9348838',\n label: 'None'\n },\n {\n concept: 'a8ad1276-1350-11df-a1f1-0026b9348838',\n label: 'Breathlessness'\n },\n {\n concept: 'a892e4b4-1350-11df-a1f1-0026b9348838',\n label: 'Chest pain'\n },\n {\n concept: 'a8afc8b8-1350-11df-a1f1-0026b9348838',\n label: 'Cough = 2 weeks'\n },\n {\n concept: 'd7adae14-c386-49cc-8f7c-765d8ceec566',\n label: 'Fever for = 2 weeks'\n },\n {\n concept: '3f57aafc-7162-41da-a51b-6a804cb6f5e8',\n label: 'New exposure to household contact with TB'\n },\n {\n concept: 'a89807f0-1350-11df-a1f1-0026b9348838',\n label: 'Noticeable Weight loss'\n },\n {\n concept: 'e1862fef-68ed-4df4-90dd-a00152f719aa',\n label: 'Night sweats = 2 weeks'\n },\n {\n concept: 'a8ad462e-1350-11df-a1f1-0026b9348838',\n label: 'Abdomen'\n },\n {\n concept: 'f218c60e-4b54-475a-a4fa-facab9216da8',\n label: 'Groin'\n },\n {\n concept: 'a8a774b0-1350-11df-a1f1-0026b9348838',\n label: 'Joints'\n },\n {\n concept: '4639388c-ee31-4dcf-abb4-ad71253493bb',\n label: 'Neck Kw'\n }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport _ from 'lodash';\nimport moment from 'moment';\n@Injectable()\nexport class HistoricalEncounterDataService {\n dataSources: any = {};\n constructor() {}\n\n registerEncounters(name: string, encounters: any) {\n const encStore: any = {\n data: [],\n getValue: (key: string, index = 0): any => {\n const pathArray = key.split('.');\n if (pathArray.length > 0) {\n return this.getFirstValue(pathArray, encStore.data[index]);\n }\n return encStore.data[index][key];\n },\n getAllObjects: () => {\n return encStore.data;\n },\n getSingleObject: (index = 0) => {\n return encStore.data[index];\n }\n };\n\n if (_.isArray(encounters)) {\n const group: Array<any> = [];\n _.each(encounters, (encounter) => {\n group.push(this._transformEncounter(encounter));\n });\n\n // Sort them in reverse chronological order\n encStore.data = _.sortBy(group, 'encounterDatetime').reverse();\n } else {\n // Assume a single openmrs rest encounter object.\n encStore.data.push(this._transformEncounter(encounters));\n }\n\n this.putObject(name, encStore);\n }\n\n putObject(name, object): void {\n this.dataSources[name] = object;\n }\n\n getObject(name: string): any {\n return this.dataSources[name] || null;\n }\n\n getFirstValue(path: Array<string>, object: any): any {\n const answers = [];\n\n this.getAllValues(path, object, answers);\n\n if (answers.length > 0) {\n return {\n value: answers[0],\n valueDate: moment(object.encounterDatetime).format(\n 'YYYY-MM-DDTHH:mm:ss'\n )\n };\n }\n }\n\n getAllValues(path, object, answers) {\n if (_.isNil(object)) {\n return;\n }\n\n if (path.length <= 1) {\n if (!_.isNil(object[path[0]])) {\n answers.push(object[path[0]]);\n }\n return;\n }\n\n const newpath = path.splice(1);\n const key = path[0];\n\n if (_.isArray(object[key]) && object[key].length > 0) {\n _.each(object[key], (childObject) => {\n this.getAllValues(newpath.slice(0), childObject, answers);\n });\n } else {\n this.getAllValues(newpath.slice(0), object[key], answers);\n }\n }\n\n private _transformEncounter(encounter: any) {\n if (_.isNil(encounter)) {\n return;\n }\n // Transform encounter Level details to key value pairs.\n const prevEncounter: any = {\n encounterDatetime: encounter.encounterDatetime\n };\n\n if (encounter.location && encounter.location.uuid) {\n prevEncounter.location = encounter.location.uuid;\n }\n\n if (encounter.patient && encounter.patient.uuid) {\n prevEncounter.patient = encounter.patient.uuid;\n }\n\n if (encounter.form && encounter.form.uuid) {\n prevEncounter.form = encounter.form.uuid;\n }\n\n if (encounter.encounterType && encounter.encounterType.uuid) {\n prevEncounter.encounterType = encounter.encounterType.uuid;\n }\n\n if (encounter.provider) {\n const provider = encounter.provider;\n prevEncounter.provider = provider.uuid;\n }\n\n // Deal with obs.\n if (encounter.obs) {\n const processedObs: any = this._transformObs(encounter.obs);\n\n // add in individual processed obs to prevEncounter\n _.extend(prevEncounter, processedObs);\n }\n\n return prevEncounter;\n }\n\n private _transformObs(obs: any): any {\n if (!obs) {\n return null;\n }\n\n const obsRep: any = {};\n if (_.isArray(obs)) {\n _.each(obs, (singleObs) => {\n this._augumentObs(obsRep, this._transformObs(singleObs));\n });\n return obsRep;\n } else if (obs.groupMembers) {\n const group: any = {};\n _.each(obs.groupMembers, (member) => {\n this._augumentObs(group, this._transformObs(member));\n });\n\n // Handle already existing data\n if (obsRep[obs.concept.uuid] && _.isArray(obsRep[obs.concept.uuid])) {\n obsRep[obs.concept.uuid].push(group);\n } else {\n obsRep[obs.concept.uuid] = [group];\n }\n return obsRep;\n } else {\n if (obs.value instanceof Object) {\n obsRep[obs.concept.uuid] = obs.value.uuid;\n } else {\n obsRep[obs.concept.uuid] = obs.value;\n }\n return obsRep;\n }\n }\n\n private _augumentObs(existing: any, toAdd: any): any {\n for (const key in toAdd) {\n if (_.has(existing, key)) {\n // check if not an array yet\n if (!_.isArray(existing[key])) {\n const temp = existing[key];\n existing[key] = [temp];\n }\n\n // Check whether the incoming is array (for group members)\n if (_.isArray(toAdd[key])) {\n Array.prototype.push.apply(existing[key], toAdd[key]);\n } else {\n existing[key].push(toAdd[key]);\n }\n } else {\n existing[key] = toAdd[key];\n }\n }\n return existing;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { HistoricalEncounterDataService } from '../services/historical-encounter-data.service';\nimport { JsExpressionHelper } from './js-expression-helper';\nimport {\n Runnable,\n ExpressionRunner\n} from '../expression-runner/expression-runner';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\n@Injectable()\nexport class HistoricalHelperService {\n constructor() {}\n\n public evaluate(\n expr: string,\n dataSources: Record<string, unknown>,\n additionalScopeValues: Record<string, unknown> | null\n ) {\n const HD = new HistoricalEncounterDataService();\n HD.registerEncounters('prevEnc', dataSources['rawPrevEnc']);\n if (dataSources.hasOwnProperty('rawPrevObs')) {\n HD.registerEncounters('prevObs', dataSources['rawPrevObs']);\n }\n\n const deps = { HD };\n\n if (additionalScopeValues) {\n for (const o in additionalScopeValues) {\n const value = additionalScopeValues[o];\n if (typeof value !== 'undefined' && value !== null) {\n deps[o] = value;\n }\n }\n }\n\n const helper = new JsExpressionHelper();\n const control: AfeFormControl = new AfeFormControl();\n const runner: ExpressionRunner = new ExpressionRunner();\n const runnable: Runnable = runner.getRunnable(\n expr,\n control,\n helper.helperFunctions,\n deps\n );\n\n return runnable.run();\n }\n\n public evaluatePrecondition(\n expr: string,\n dataSources: any,\n historicalValue: any\n ): any {\n const additionalScope = {\n histValue: historicalValue\n };\n\n return this.evaluate(expr, dataSources, additionalScope);\n }\n}\n","import { QuestionBase } from './question-base';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { DiagnosisQuestionOptions } from './interfaces/diagnosis-question-options';\n\nexport class DiagnosisQuestion extends QuestionBase {\n rendering: string;\n options: any[];\n dataSource?: any;\n\n constructor(options: DiagnosisQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.options = options.options;\n this.controlType = AfeControlType.AfeFormControl;\n this.dataSource = options.dataSource || '';\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MaxLengthValidationModel extends ValidationModel {\n maxlength: number;\n\n constructor(validations: any) {\n super(validations);\n const maxlength: any = validations.maxlength;\n this.maxlength = +maxlength;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MinLengthValidationModel extends ValidationModel {\n minlength: number;\n\n constructor(validations: any) {\n super(validations);\n const minlength: any = validations.minlength;\n this.minlength = +minlength;\n }\n}\n","export class Pair {\n key: string;\n\n value: any;\n\n constructor(key: string, value: any) {\n this.key = key;\n this.value = value;\n }\n}\n","export enum RenderingType {\n Form,\n Page,\n Section,\n Select,\n DropDown\n}\n","import { QuestionBase } from './question-base';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { WorkspaceLauncherOptions } from './interfaces/workspace-launcher-options';\n\nexport class WorkspaceLauncherQuestion extends QuestionBase {\n buttonLabel: string;\n buttonType: string;\n workspaceName: string;\n\n constructor(options: WorkspaceLauncherOptions) {\n super(options);\n this.renderingType = 'workspace-launcher';\n this.label = options.label || '';\n this.buttonLabel = options.buttonLabel || '';\n this.buttonType = options.buttonType || 'primary';\n this.workspaceName = options.workspaceName || 'order-basket';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport { TextInputQuestion } from '../question-models/text-input-question';\nimport { TextAreaInputQuestion } from '../question-models/text-area-input-question';\nimport { SelectQuestion } from '../question-models/select-question';\nimport { UiSelectQuestion } from '../question-models/ui-select-question';\nimport { DateQuestion } from '../question-models/date-question';\nimport { MultiSelectQuestion } from '../question-models/multi-select-question';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { RepeatingQuestion } from '../question-models/repeating-question';\nimport { QuestionBase } from '../question-models/question-base';\nimport { FileUploadQuestion } from '../question-models/file-upload-question';\nimport { TestOrderQuestion } from '../question-models/test-order-question';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { ValidationModel } from '../question-models/validation.model';\nimport { DateValidationModel } from '../question-models/date-validation.model';\nimport { MaxValidationModel } from '../question-models/max-validation.model';\nimport { MinValidationModel } from '../question-models/min-validation.model';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { DummyDataSource } from '../data-sources/dummy-data-source';\nimport { HistoricalHelperService } from '../helpers/historical-expression-helper-service';\nimport { Form } from './form';\nimport { CheckBoxQuestion } from '../question-models/models';\nimport { RadioButtonQuestion } from '../question-models/models';\nimport { Injectable } from '@angular/core';\nimport { CustomControlQuestion } from '../question-models/custom-control-question.model';\nimport { DiagnosisQuestion } from '../question-models/diagnosis-question';\nimport { MaxLengthValidationModel } from '../question-models/max-length-validation.model';\nimport { MinLengthValidationModel } from '../question-models/min-length-validation.model';\nimport { WorkspaceLauncherQuestion } from '../question-models';\n\n@Injectable()\nexport class QuestionFactory {\n dataSources: any = {};\n historicalHelperService: HistoricalHelperService = new HistoricalHelperService();\n quetionIndex = 0;\n checkedForEsmPatientCommonLib = false;\n constructor() {}\n\n createQuestionModel(formSchema: any, form?: Form): QuestionBase {\n if (form) {\n const dataSources = form.dataSourcesContainer.dataSources;\n this.dataSources = dataSources;\n }\n return this.toFormQuestionModel(formSchema);\n }\n\n toSelectQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.options = schemaQuestion.questionOptions.answers.map((obj) => ({\n label: obj.label,\n value: obj.concept\n }));\n\n question.options.splice(0, 0, {\n label: '',\n value: ''\n });\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toNumericQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'number';\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toNumberQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'number';\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n question.extras = schemaQuestion;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n question.validators = this.addValidators(schemaQuestion);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toDateQuestion(schemaQuestion: any): DateQuestion {\n if (schemaQuestion.type === 'encounterDatetime') {\n return this.toEncounterDatetimeQuestion(schemaQuestion);\n }\n const question = new DateQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.renderingType = 'date';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.showTime = schemaQuestion.questionOptions.showTime as boolean;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.showWeeksAdder = schemaQuestion.questionOptions.weeksList\n ? true\n : false;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toEncounterDatetimeQuestion(schemaQuestion: any): DateQuestion {\n const question = new DateQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'date';\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.showWeeksAdder = schemaQuestion.questionOptions.weeksList\n ? true\n : false;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.showTime = true;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.datePickerFormat = schemaQuestion.datePickerFormat ?? 'calendar';\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toCheckBoxQuestion(schemaQuestion: any): CheckBoxQuestion {\n const question = new CheckBoxQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.extras = schemaQuestion;\n question.orientation = schemaQuestion.questionOptions.orientation;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => {\n return {\n label: obj.label,\n value: obj.concept,\n disableWhenExpression: obj.disableWhenExpression\n };\n });\n question.options.splice(0, 0);\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toRadioButtonQuestion(schemaQuestion: any): RadioButtonQuestion {\n const question = new RadioButtonQuestion({\n options: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.key = schemaQuestion.id;\n question.prefix = schemaQuestion.prefix;\n question.extras = schemaQuestion;\n question.allowUnselect = schemaQuestion.questionOptions.allowUnselect;\n question.orientation = schemaQuestion.questionOptions.orientation;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => {\n return {\n label: obj.label,\n value: obj.concept\n };\n });\n question.options.splice(0, 0);\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toMultiCheckboxQuestion(schemaQuestion: any): MultiSelectQuestion {\n const question = new MultiSelectQuestion({\n renderType: '',\n options: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => ({\n label: obj.label,\n value: obj.concept\n }));\n question.validators = this.addValidators(schemaQuestion);\n question.dataSource = new DummyDataSource();\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTextAreaQuestion(schemaQuestion: any): TextAreaInputQuestion {\n const question = new TextAreaInputQuestion({\n isExpanded: false,\n rows: 18,\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.isExpanded = schemaQuestion.isExpanded;\n question.rows = schemaQuestion.questionOptions.rows;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTextQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'text';\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toFileUploadQuestion(schemaQuestion: any): FileUploadQuestion {\n const question = new FileUploadQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'file';\n question.dataSource = 'file';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toDrugQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'drug';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toProblemQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'problem';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toConceptAnswerSelect(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource =\n schemaQuestion.questionOptions.dataSource || 'conceptAnswers';\n question.dataSourceOptions = {\n concept: schemaQuestion.questionOptions.concept\n };\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toRepeatingQuestion(schemaQuestion: any): RepeatingQuestion {\n const question = new RepeatingQuestion({\n questions: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.questions = this.getChildrenQuestionModels(\n schemaQuestion.questions\n );\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n if (schemaQuestion.type === 'testOrder') {\n const testOrder = this.toTestOrderQuestion(schemaQuestion);\n const orders = [];\n orders.push(testOrder);\n question.questions = orders;\n } else if (schemaQuestion.type === 'diagnosis') {\n const diagnosisQuestion = this.toDiagnosisQuestion(schemaQuestion);\n question.questions = [diagnosisQuestion];\n }\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toGroupQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.questions = this.getChildrenQuestionModels(\n schemaQuestion.questions\n );\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toPageQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.label;\n question.renderingType = 'page';\n question.controlType = AfeControlType.None;\n question.questions = [];\n schemaQuestion.sections.forEach((element) => {\n question.questions.push(this.toSectionQuestion(element));\n });\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toFormQuestionModel(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.key = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'form';\n question.controlType = AfeControlType.AfeFormGroup;\n question.extras = schemaQuestion;\n question.questions = [];\n schemaQuestion.pages.forEach((element) => {\n question.questions.push(this.toPageQuestion(element));\n });\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toSectionQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.label;\n question.renderingType = 'section';\n question.controlType = AfeControlType.None;\n question.isExpanded = schemaQuestion.isExpanded === 'true' ? true : false;\n question.questions = this.getSchemaQuestions(schemaQuestion.questions);\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toPersonAttributeQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'personAttribute';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toEncounterProviderQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'provider';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toFieldSetQuestion(schemaQuestion: any): QuestionGroup {\n const question = this.toGroupQuestion(schemaQuestion);\n question.renderingType = 'field-set';\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toEncounterLocationQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = schemaQuestion.type;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'location';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTestOrderQuestion(schemaQuestion: any): TestOrderQuestion {\n const question = new TestOrderQuestion({\n type: '',\n key: '',\n orderType: '',\n selectableOrders: [],\n orderSettingUuid: '',\n label: '',\n rendering: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.options = schemaQuestion.questionOptions.selectableOrders.map(\n function (obj) {\n return {\n label: obj.label,\n value: obj.concept\n };\n }\n );\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n return question;\n }\n\n toDiagnosisQuestion(schemaQuestion: any): DiagnosisQuestion {\n const question = new DiagnosisQuestion({\n type: '',\n key: schemaQuestion.id,\n label: schemaQuestion.label,\n rendering: '',\n rank: schemaQuestion.questionOptions.rank\n });\n question.questionIndex = this.quetionIndex;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource =\n schemaQuestion.questionOptions.dataSource || 'diagnoses';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toWorkspaceLauncher(schemaQuestion: any): WorkspaceLauncherQuestion {\n if (!this.checkedForEsmPatientCommonLib) {\n this.checkedForEsmPatientCommonLib = true;\n if (!window['_openmrs_esm_patient_common_lib']) {\n console.error(\n \"@openmrs/esm-patient-common-lib is not accessible. The 'workspace-launcher' question type can only be used in the context of the O3 patient chart, where the workspace is.\"\n );\n } else if (\n typeof window['_openmrs_esm_patient_common_lib']\n .launchPatientWorkspace !== 'function'\n ) {\n console.error(\n '@openmrs/esm-patient-common-lib is accessible, but the `launchPatientWorkspace` function is missing. It is likely that the version of @openmrs/esm-patient-common-lib that is being used is not compatible with this version of ngx-formentry.'\n );\n }\n }\n const question = new WorkspaceLauncherQuestion({\n type: '',\n key: schemaQuestion.id,\n label: schemaQuestion.label,\n buttonLabel: schemaQuestion.questionOptions.buttonLabel,\n buttonType: schemaQuestion.questionOptions.buttonType,\n workspaceName: schemaQuestion.questionOptions.workspaceName\n });\n question.questionIndex = this.quetionIndex;\n question.extras = schemaQuestion;\n question.extras.questionOptions.buttonType = question.buttonType;\n question.extras.questionOptions.workspaceName = question.workspaceName;\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n getSchemaQuestions(schema: any): any {\n const listQuestions = new Array();\n this.getQuestions(schema, listQuestions);\n return listQuestions;\n }\n\n getQuestions(schema: any, foundArray: any): any {\n if (!Array.isArray(foundArray)) {\n foundArray = [];\n }\n if (Array.isArray(schema)) {\n for (const property in schema) {\n if (schema.hasOwnProperty(property)) {\n this.getQuestions(schema[property], foundArray);\n }\n }\n }\n\n if (schema && !Array.isArray(schema) && typeof schema === 'object') {\n if (schema.questionOptions) {\n if (\n schema.questionOptions.rendering === 'group' ||\n schema.questionOptions.rendering === 'repeating'\n ) {\n // schema.questions = this.getGroupMembers(schema.questions);\n foundArray.push(\n this.toModel(schema, schema.questionOptions.rendering)\n );\n } else if (schema.questionOptions.rendering === 'field-set') {\n } else {\n foundArray.push(\n this.toModel(schema, schema.questionOptions.rendering)\n );\n }\n } else {\n for (const o in schema) {\n if (schema.hasOwnProperty(o)) {\n this.getQuestions(schema[o], foundArray);\n }\n }\n }\n }\n }\n\n getChildrenQuestionModels(schema: any): any {\n const children = [];\n this.getQuestions(schema, children);\n return children;\n }\n\n toModel(schema: any, renderType: string): any {\n this.quetionIndex++;\n if (renderType === 'ui-select-extended') {\n renderType = schema.type;\n }\n if (!schema.id) {\n schema['id'] = this.generateId(10);\n }\n\n if (\n schema.questionOptions &&\n (schema.questionOptions.showDate === true ||\n schema.questionOptions.showDate === 'true')\n ) {\n schema = this.convertOldVersionComplexObsQuestionToNewVersion(schema);\n renderType = 'field-set';\n }\n\n switch (renderType) {\n case 'diagnosis':\n return this.toDiagnosisQuestion(schema);\n case 'select':\n return this.toSelectQuestion(schema);\n case 'single-select':\n return this.toSelectQuestion(schema);\n case 'multi-select':\n return this.toSelectQuestion(schema);\n case 'numeric':\n return this.toNumericQuestion(schema);\n case 'number':\n return this.toNumberQuestion(schema);\n case 'encounterDatetime':\n return this.toEncounterDatetimeQuestion(schema);\n case 'date':\n return this.toDateQuestion(schema);\n case 'multiCheckbox':\n return this.toMultiCheckboxQuestion(schema);\n case 'drug':\n return this.toDrugQuestion(schema);\n case 'problem':\n return this.toProblemQuestion(schema);\n case 'group':\n return this.toGroupQuestion(schema);\n case 'field-set':\n return this.toFieldSetQuestion(schema);\n case 'repeating':\n return this.toRepeatingQuestion(schema);\n case 'personAttribute':\n return this.toPersonAttributeQuestion(schema);\n case 'text':\n return this.toTextQuestion(schema);\n case 'textarea':\n return this.toTextAreaQuestion(schema);\n case 'select-concept-answers':\n return this.toConceptAnswerSelect(schema);\n case 'encounterLocation':\n return this.toEncounterLocationQuestion(schema);\n case 'encounterDatetime':\n return this.toEncounterDatetimeQuestion(schema);\n case 'encounterProvider':\n return this.toEncounterProviderQuestion(schema);\n case 'radio':\n return this.toRadioButtonQuestion(schema);\n case 'checkbox':\n return this.toCheckBoxQuestion(schema);\n case 'encounterProvider':\n return this.toEncounterProviderQuestion(schema);\n case 'file':\n return this.toFileUploadQuestion(schema);\n case 'workspace-launcher':\n return this.toWorkspaceLauncher(schema);\n default:\n console.warn('New Schema Question Type found.........' + renderType);\n return this.toTextQuestion(schema);\n }\n }\n\n convertOldVersionComplexObsQuestionToNewVersion(schemaQuestion: any) {\n const converted: any = {};\n converted.type = 'complex-obs';\n converted.label = schemaQuestion.label;\n converted.prefix = schemaQuestion.prefix;\n converted.id = 'complex_' + schemaQuestion.id;\n converted.questionOptions = {};\n converted.questionOptions.concept = schemaQuestion.questionOptions.concept;\n converted.questionOptions.rendering = 'field-set';\n converted.questions = [];\n converted.validators = [];\n\n const mainField: any = JSON.parse(JSON.stringify(schemaQuestion));\n mainField.type = 'complex-obs-child';\n delete mainField.questionOptions.showDate;\n delete mainField.questionOptions.shownDateOptions;\n mainField.questionOptions.obsField = 'value';\n\n const dateField: any = {};\n dateField.type = 'complex-obs-child';\n dateField.label = 'Date of ' + mainField.label;\n dateField.id = 'date_' + mainField.id;\n dateField.questionOptions = {};\n dateField.questionOptions.concept = schemaQuestion.questionOptions.concept;\n dateField.questionOptions.rendering = 'date';\n dateField.questionOptions.obsField = 'obsDatetime';\n const dateOptions: any = (Object as any).assign(\n {},\n schemaQuestion.questionOptions.shownDateOptions\n );\n dateField.validators = dateOptions.validators;\n dateField.hide = dateOptions.hide;\n\n converted.questions.push(mainField);\n converted.questions.push(dateField);\n\n return converted;\n }\n\n copyProperties(mappings: any, source: any, destination: QuestionBase) {\n for (const property in source) {\n if (\n mappings.hasOwnProperty(property) &&\n destination.hasOwnProperty(mappings[property])\n ) {\n destination[mappings[property]] = source[property];\n }\n }\n }\n\n addValidators(schemaQuestion: any): Array<ValidationModel> {\n const validators: Array<ValidationModel> = [];\n\n if (schemaQuestion.validators) {\n // TODO - add more validator types\n _.forEach(schemaQuestion.validators, (validator: any) => {\n switch (validator.type) {\n case 'date':\n validators.push(new DateValidationModel(validator));\n break;\n case 'js_expression':\n validators.push(new JsExpressionValidationModel(validator));\n break;\n case 'conditionalAnswered':\n validators.push(new ConditionalValidationModel(validator));\n break;\n default:\n validators.push(new ValidationModel(validator));\n break;\n }\n });\n }\n\n const questionOptions = schemaQuestion.questionOptions;\n const renderingType = questionOptions ? questionOptions.rendering : '';\n switch (renderingType) {\n case 'number':\n if (questionOptions.max && questionOptions.min) {\n validators.push(\n new MaxValidationModel({\n type: 'max',\n max: questionOptions.max\n })\n );\n validators.push(\n new MinValidationModel({\n type: 'min',\n min: questionOptions.min\n })\n );\n }\n if (questionOptions.maxLength) {\n validators.push(\n new MaxLengthValidationModel({\n type: 'maxlength',\n maxlength: questionOptions.maxLength\n })\n );\n }\n if (questionOptions.minLength) {\n validators.push(\n new MinLengthValidationModel({\n type: 'minlength',\n minlength: questionOptions.minLength\n })\n );\n }\n\n break;\n default:\n break;\n }\n\n // add conditional required validators\n if (typeof schemaQuestion.required === 'object') {\n const required: any = schemaQuestion.required;\n\n if (required.type === 'conditionalRequired') {\n validators.push(\n new ConditionalValidationModel({\n referenceQuestionId: required.referenceQuestionId,\n referenceQuestionAnswers: required.referenceQuestionAnswers,\n type: required.type,\n message: required.message\n })\n );\n }\n }\n\n return validators;\n }\n\n addHistoricalExpressions(schemaQuestion: any, question: QuestionBase): any {\n if (\n schemaQuestion.historicalExpression &&\n schemaQuestion.historicalExpression.length > 0\n ) {\n question.setHistoricalValue(true);\n if (schemaQuestion.showHistoricalEncounterDate !== undefined) {\n question.showHistoricalEncounterDate(\n schemaQuestion.showHistoricalEncounterDate === 'true'\n );\n } else {\n question.showHistoricalEncounterDate();\n }\n const origValue = this.historicalHelperService.evaluate(\n schemaQuestion.historicalExpression,\n this.dataSources,\n undefined\n );\n question.historicalDataValue = origValue;\n // console.info('historical value', origValue);\n // console.info('historical data question :::', question);\n // console.info('schema data question :::', schemaQuestion);\n\n if (schemaQuestion.historicalPrepopulateCondition && origValue) {\n const toPopulate = this.historicalHelperService.evaluatePrecondition(\n schemaQuestion.historicalPrepopulateCondition,\n this.dataSources,\n origValue\n );\n\n if (toPopulate) {\n question.defaultValue = origValue.value;\n }\n return; // don't try to evaluate the other option\n }\n\n if (schemaQuestion.historicalPrepopulate && origValue) {\n // sample schema options for this branch\n // \"historicalPrepopulate\":true,\n // \"allowedHistoricalValueAgeInDays\": 40000,\n const valDate = moment(origValue.valueDate);\n const differenceInDays = moment().diff(valDate, 'days');\n if (Number.isInteger(schemaQuestion.allowedHistoricalValueAgeInDays)) {\n if (\n differenceInDays <= schemaQuestion.allowedHistoricalValueAgeInDays\n ) {\n question.defaultValue = origValue.value;\n }\n } else {\n question.defaultValue = origValue.value;\n }\n }\n }\n }\n\n addCalculatorProperty(schemaQuestion: any, question: QuestionBase): any {\n if (\n schemaQuestion.questionOptions &&\n typeof schemaQuestion.questionOptions.calculate === 'object'\n ) {\n question.calculateExpression =\n schemaQuestion.questionOptions.calculate.calculateExpression;\n }\n }\n\n addAlertProperty(schemaQuestion: any, question: QuestionBase): any {\n if (schemaQuestion.alert) {\n question.alert = schemaQuestion.alert;\n }\n // if (typeof schemaQuestion.message === 'object') {\n // if (schemaQuestion.message.alertWhenExpression) {\n // question.message = schemaQuestion.message.alertWhenExpression;\n // }\n // }\n }\n\n addDisableOrHideProperty(schemaQuestion: any, question: QuestionBase): any {\n if (!!schemaQuestion.disable) {\n question.disable = schemaQuestion.disable;\n }\n\n if (typeof schemaQuestion.disable === 'object') {\n question.disable = schemaQuestion.disable.disableWhenExpression;\n }\n\n if (schemaQuestion.disable) {\n //if resetValueOnDisable doesn't exist on the config or no value is provided the default value will be passed (true)\n question.resetValueOnDisable =\n !schemaQuestion.hasOwnProperty('resetValueOnDisable') ||\n this.isEmpty(schemaQuestion.resetValueOnDisable)\n ? true\n : schemaQuestion.resetValueOnDisable;\n }\n\n if (!!schemaQuestion.hide) {\n question.hide = schemaQuestion.hide;\n }\n if (typeof schemaQuestion.hide === 'object') {\n if (schemaQuestion.hide.hideWhenExpression) {\n question.hide = schemaQuestion.hide.hideWhenExpression;\n }\n }\n }\n\n private generateId(x) {\n let s = '_';\n while (s.length < x && x > 0) {\n const r = Math.random();\n s +=\n r < 0.1\n ? Math.floor(r * 100)\n : String.fromCharCode(Math.floor(r * 26) + (r > 0.5 ? 97 : 65));\n }\n return '_' + s;\n }\n\n isEmpty(value): boolean {\n if (value === '' || value === null || value === undefined) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n// import { AbstractControl } from '@angular/forms';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { LeafNode, GroupNode, ArrayNode, NodeBase } from './form-node';\nimport {\n QuestionBase,\n NestedQuestion,\n RepeatingQuestion,\n QuestionGroup\n} from '../question-models/models';\nimport { FormControlService } from './form-control.service';\nimport { QuestionFactory } from './question.factory';\nimport {\n AfeFormGroup,\n AfeControlType,\n AfeFormArray\n} from '../../abstract-controls-extension';\nimport { ControlRelationsFactory } from './control-relations.factory';\nimport { Validations } from '../validators/validations';\n\nimport { Form } from './form';\n\n@Injectable()\nexport class FormFactory {\n private nodeIndex = 0;\n public hd: any = {\n getValue: () => {\n return 20;\n }\n };\n\n constructor(\n public controlService: FormControlService,\n public questionFactroy: QuestionFactory,\n public controlRelationsFactory: ControlRelationsFactory,\n public translate: TranslateService\n ) {}\n\n createForm(schema: any, dataSource?: any): Form {\n const form: Form = new Form(schema, this, this.questionFactroy);\n if (dataSource) {\n for (const key in dataSource) {\n if (dataSource.hasOwnProperty(key)) {\n form.dataSourcesContainer.registerDataSource(\n key,\n dataSource[key],\n false\n );\n }\n }\n }\n const question = this.questionFactroy.createQuestionModel(schema, form);\n form.rootNode = this.createNode(question, null, null, form) as GroupNode;\n\n this.buildRelations(form.rootNode);\n form.updateHiddenDisabledStateForAllControls();\n form.updateAlertsForAllControls();\n return form;\n }\n\n buildRelations(rootNode: GroupNode) {\n Validations.JSExpressionValidatorsEnabled = false;\n this.controlRelationsFactory.buildRelations(rootNode);\n\n // enable js expression validations\n Validations.JSExpressionValidatorsEnabled = true;\n }\n\n createNode(\n question: QuestionBase | NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): NodeBase {\n let node: NodeBase = null;\n if (question instanceof NestedQuestion) {\n if (question instanceof RepeatingQuestion) {\n node = this.createArrayNode(question, parentNode, parentControl, form);\n } else {\n node = this.createGroupNode(question, parentNode, parentControl, form);\n }\n } else {\n node = this.createLeafNode(question, parentNode, parentControl, form);\n }\n node.nodeIndex = this.nodeIndex;\n this.nodeIndex++;\n return node;\n }\n\n createLeafNode(\n question: QuestionBase,\n parentNode: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): LeafNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n );\n return new LeafNode(\n question,\n controlModel,\n null,\n form,\n parentNode ? parentNode.path : undefined\n );\n }\n\n createGroupNode(\n question: NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): GroupNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n ) as AfeFormGroup;\n const groupNode = new GroupNode(\n question,\n controlModel,\n null,\n form,\n parentNode ? parentNode.path : undefined\n );\n this.createNodeChildren(\n question,\n groupNode,\n controlModel || parentControl,\n form\n );\n return groupNode;\n }\n\n createArrayNode(\n question: NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): ArrayNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n ) as AfeFormGroup;\n const arrayNode = new ArrayNode(\n question,\n this.translate,\n controlModel,\n parentControl,\n this,\n form,\n parentNode ? parentNode.path : undefined\n );\n arrayNode.createChildFunc = this.createArrayNodeChild;\n arrayNode.removeChildFunc = this.removeArrayNodeChild;\n\n arrayNode.addChildNodeCreatedListener((node: GroupNode) => {\n Validations.JSExpressionValidatorsEnabled = false;\n this.controlRelationsFactory.buildArrayNodeRelations(node);\n Validations.JSExpressionValidatorsEnabled = true;\n });\n return arrayNode;\n }\n\n createNodeChildren(\n question: NestedQuestion,\n node: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): any {\n question.questions.forEach((element) => {\n const child = this.createNode(element, node, parentControl, form);\n node.setChild(element.key, child);\n });\n return node.children;\n }\n\n createArrayNodeChild(\n question: RepeatingQuestion,\n node: ArrayNode,\n factory?: FormFactory,\n position?: number\n ): GroupNode {\n if (factory === null || factory === undefined) {\n factory = this;\n }\n const groupQuestion: QuestionGroup = new QuestionGroup({\n key: node.path + '.' + node.children.length + '',\n type: 'group',\n extras: question.extras,\n label: '',\n questions: question.questions\n });\n\n if (question.controlType === AfeControlType.None) {\n groupQuestion.controlType = question.controlType;\n }\n\n const group = factory.createGroupNode(groupQuestion, null, null, node.form);\n\n if (position >= 0) {\n node.children.splice(position, 0, group);\n } else {\n node.children.push(group);\n }\n\n if (node.control instanceof AfeFormArray) {\n const nodeControl = node.control as AfeFormArray;\n nodeControl.setControl(nodeControl.controls.length, group.control);\n }\n\n return group;\n }\n\n removeArrayNodeChild(index: number, node: ArrayNode) {\n const nodeToRemove = node.children[index];\n\n node.children.splice(index, 1);\n if (node.control !== null || node.control !== undefined) {\n if (node.control instanceof AfeFormArray) {\n const control = node.control as AfeFormArray;\n const controlIndexToRemove = control.controls.indexOf(\n nodeToRemove.control\n );\n if (controlIndexToRemove >= 0) {\n control.removeAt(controlIndexToRemove);\n }\n }\n }\n }\n}\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport {\n NodeBase,\n ArrayNode,\n GroupNode,\n LeafNode\n} from '../form-factory/form-node';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ObsAdapterHelper {\n formFieldNamespace = 'O3';\n obsIndex = 0;\n constructor() {}\n\n findObsAnswerToQuestion(node: NodeBase, obsArray: Array<any>): Array<any> {\n // Find and Order the obs based on form_namespace_and_path\n const found = [];\n\n if (!this.isObsNode(node)) {\n return found;\n }\n\n if (\n node instanceof LeafNode ||\n (node instanceof GroupNode && node.question.extras.type === 'complex-obs')\n ) {\n _.each(obsArray, (item) => {\n let questionId = this.getQuestionIdFromFormFieldPath(\n item.formFieldPath\n );\n if (\n (questionId && questionId === node?.question?.extras?.id) ||\n (!questionId &&\n item.concept &&\n item.concept.uuid === node.question.extras.questionOptions.concept)\n ) {\n found.push(item);\n }\n });\n\n return found;\n }\n\n // At this point the node is either a group or a repeating node\n\n const childQuestionsUuids = this.getChildQuestionsConceptUuids(node);\n if (childQuestionsUuids.length > 0) {\n _.each(obsArray, (obs) => {\n if (\n obs.concept &&\n obs.concept.uuid === node.question.extras.questionOptions.concept &&\n Array.isArray(obs.groupMembers) &&\n this.isSubsetOf(\n childQuestionsUuids,\n this.getGroupMembersConceptUuids(obs)\n )\n ) {\n found.push(obs);\n }\n });\n }\n\n return found;\n }\n\n getChildQuestionsConceptUuids(node: NodeBase): Array<string> {\n const found = [];\n\n if (node.question.extras && node.question.extras.questions) {\n _.each(node.question.extras.questions, (question) => {\n if (question.questionOptions && question.questionOptions.concept) {\n found.push(question.questionOptions.concept);\n }\n });\n }\n\n return found;\n }\n\n getGroupMembersConceptUuids(obsWithGroupMembers): Array<string> {\n const found = [];\n\n if (Array.isArray(obsWithGroupMembers.groupMembers)) {\n _.each(obsWithGroupMembers.groupMembers, (member) => {\n found.push(member.concept.uuid);\n });\n }\n\n return found;\n }\n\n isObsNode(node: NodeBase): boolean {\n return (\n node.question.extras &&\n (node.question.extras.type === 'obs' ||\n node.question.extras.type === 'obsGroup' ||\n node.question.extras.type === 'complex-obs' ||\n node.question.extras.type === 'complex-obs-child')\n );\n }\n\n isSubsetOf(supersetArray: Array<any>, subsetArray: Array<any>): boolean {\n if (subsetArray.length === 0 && supersetArray.length === 0) {\n return true;\n }\n return subsetArray.every((element): boolean => {\n return supersetArray.indexOf(element) >= 0;\n });\n }\n\n setSimpleObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const obsToUse = obs[0];\n\n // set initial value\n node.initialValue = obsToUse;\n\n if (!this.isEmpty(obsToUse.value) && obsToUse.value.uuid) {\n // answer to the obs is a concept, use uuid value\n this.setNodeFormControlValue(node, obsToUse.value.uuid);\n } else if (!this.isEmpty(obsToUse.value)) {\n this.setNodeFormControlValue(node, obsToUse.value);\n }\n }\n }\n\n setMultiselectObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n obs = obs.sort(this.comparePath);\n node.initialValue = obs;\n\n const obsUuids = [];\n for (const m of obs) {\n obsUuids.push(m.value.uuid);\n }\n\n this.setNodeFormControlValue(node, obsUuids);\n }\n }\n\n setComplexObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n let valueField: LeafNode; // essential memmber\n let dateField: LeafNode; // other member to be manipulated by user\n\n const nodeAsGroup = node as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = nodeAsGroup.children[o];\n }\n\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = nodeAsGroup.children[o];\n }\n }\n\n // set the obs value here\n this.setNodeValue(valueField, obs);\n node.initialValue = valueField.initialValue;\n\n // set the date value here\n dateField.initialValue = valueField.initialValue;\n this.setNodeFormControlValue(\n dateField,\n valueField.initialValue.obsDatetime\n );\n }\n }\n\n setGroupObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const groupNode = node as GroupNode;\n groupNode.initialValue = obs[0];\n\n for (const o in groupNode.children) {\n this.setNodeValue(groupNode.children[o], obs[0].groupMembers);\n }\n }\n }\n\n setRepeatingGroupObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const arrayNode = node as ArrayNode;\n obs = obs.sort(this.comparePath);\n arrayNode.initialValue = obs;\n for (let i = 0; i < obs.length; i++) {\n const createdNode = arrayNode.createChildNode();\n this.setGroupObsNodeValue(createdNode, [obs[i]]);\n }\n }\n }\n\n comparePath(first, second) {\n if (!first || !second) {\n return -1;\n }\n\n let firstNumber;\n if (first.formFieldPath?.includes('~')) {\n firstNumber = first.formFieldPath.split('~', 2)[1];\n } else {\n firstNumber = first.formFieldPath;\n }\n\n let secondNumber;\n if (second.formFieldPath?.includes('~')) {\n secondNumber = second.formFieldPath.split('~', 2)[1];\n } else {\n secondNumber = second.formFieldPath;\n }\n return Number(firstNumber) - Number(secondNumber);\n }\n\n setNodeValue(node: NodeBase, obs: Array<any>) {\n switch (this.getObsNodeType(node)) {\n case 'unknown':\n if (node instanceof GroupNode) {\n const groupNode = node as GroupNode;\n\n for (const o in groupNode.children) {\n this.setNodeValue(groupNode.children[o], obs);\n }\n break;\n }\n if (node instanceof ArrayNode) {\n const arrayNode = node as ArrayNode;\n for (let i = 0; i < arrayNode.children.length; i++) {\n this.setNodeValue(arrayNode.children[i], obs);\n }\n break;\n }\n break;\n case 'simple':\n // search asnwering obs at this point\n const answeringObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setSimpleObsNodeValue(node, answeringObs);\n break;\n\n case 'multiselect':\n // search asnwering obs at this point\n const multiselectObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setMultiselectObsNodeValue(node, multiselectObs);\n break;\n\n case 'complex':\n // search asnwering obs at this point\n const complexObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setComplexObsNodeValue(node, complexObs);\n break;\n\n case 'group':\n const groupObs = this.findObsAnswerToQuestion(node, obs);\n\n if (groupObs.length > 0) {\n this.setGroupObsNodeValue(node, groupObs);\n }\n\n break;\n case 'repeatingGroup':\n const repeatingGroupObs = this.findObsAnswerToQuestion(node, obs);\n\n if (repeatingGroupObs.length > 0) {\n this.setRepeatingGroupObsNodeValue(node, repeatingGroupObs);\n }\n\n break;\n default:\n console.error('Unknown obs node', node);\n break;\n }\n }\n\n setNodeFormControlValue(node: NodeBase, value) {\n node.control.setValue(value);\n // TODO: Determine if we need this call\n // node.control.updateValueAndValidity();\n\n // TODO: Remove this hack and put it in appropriate place\n if (\n node.question.enableHistoricalValue &&\n node.initialValue !== undefined\n ) {\n node.question.setHistoricalValue(false);\n }\n }\n\n getObsNodeType(node: NodeBase): string {\n if (this.isObsNode(node)) {\n if (\n node instanceof LeafNode &&\n (node.question.extras.questionOptions.rendering === 'multiCheckbox' ||\n node.question.extras.questionOptions.rendering === 'checkbox' ||\n node.question.extras.questionOptions.rendering === 'multi-select')\n ) {\n return 'multiselect';\n }\n\n if (node instanceof LeafNode) {\n return 'simple';\n }\n\n if (\n node instanceof GroupNode &&\n node.question.extras.type === 'complex-obs'\n ) {\n return 'complex';\n }\n\n if (\n node instanceof ArrayNode &&\n node.question.extras.type === 'obsGroup' &&\n node.question.extras.questionOptions.rendering === 'repeating'\n ) {\n return 'repeatingGroup';\n }\n\n if (\n node instanceof GroupNode &&\n node.question.extras.type === 'obsGroup'\n ) {\n return 'group';\n }\n\n return 'unknownObs';\n }\n return 'unknown';\n }\n\n // PAYLOAD GENERATION FUNCTIONS\n addFieldNameSpaceandPath(node, obs) {\n obs.formFieldNamespace = this.formFieldNamespace;\n obs.formFieldPath = `${node?.question?.extras?.id}~${this.obsIndex}`;\n this.obsIndex++;\n return obs;\n }\n\n getQuestionIdFromFormFieldPath(formFieldPath: string) {\n if (formFieldPath?.includes('~')) {\n return formFieldPath.split('~', 1)[0];\n }\n }\n\n getSimpleObsPayload(node: NodeBase): any {\n // check for empty values first\n if (this.isEmpty(node.control.value)) {\n if (node.initialValue) {\n // Handle case for existing voided obs\n return {\n uuid: node.initialValue.uuid,\n voided: true\n };\n }\n return null;\n }\n\n // check for exisiting, unchanged values\n if (node.initialValue && !this.simpleNodeValueChanged(node)) {\n return null;\n }\n\n // all numbers, text, concepts answers are handled in the same way\n // no need for further formatting in this case\n const obs: any = {\n concept: node.question.extras.questionOptions.concept,\n value: node.control.value\n };\n\n // handle date fields\n if (node.question.extras.questionOptions.rendering === 'date') {\n obs.value = this.toOpenMrsDateTimeString(node.control.value);\n }\n\n if (node.initialValue) {\n // for existing cases, delete concept property, and add uuid\n delete obs.concept;\n obs.uuid = node.initialValue.uuid;\n }\n\n return this.addFieldNameSpaceandPath(node, obs);\n }\n\n getComplexObsPayload(node: NodeBase) {\n let valueField: LeafNode; // essential memmber\n let dateField: LeafNode; // other member to be manipulated by user\n\n const nodeAsGroup = node as GroupNode;\n for (const o in nodeAsGroup.children) {\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = nodeAsGroup.children[o];\n }\n\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = nodeAsGroup.children[o];\n }\n }\n\n const valuePayload = this.getObsNodePayload(valueField);\n // set obs datetime for the generated payload\n if (valuePayload.length > 0) {\n valuePayload[0].obsDatetime = this.toOpenMrsDateTimeString(\n dateField.control.value\n );\n return valuePayload[0];\n } else if (valuePayload.length === 0 && node.initialValue) {\n // determine if date changed\n if (\n !this.areDatesEqual(\n node.initialValue.obsDatetime,\n dateField.control.value\n )\n ) {\n const payload: any = {\n uuid: node.initialValue.uuid\n };\n payload.obsDatetime = this.toOpenMrsDateTimeString(\n dateField.control.value\n );\n\n return payload;\n }\n }\n return null;\n }\n\n getMultiselectObsPayload(node: NodeBase): Array<any> {\n const payload: Array<any> = [];\n\n const existingUuids = [];\n\n // add voided obs i.e. deleted options\n if (Array.isArray(node.initialValue)) {\n _.each(node.initialValue, (item) => {\n existingUuids.push(item.value.uuid);\n if (Array.isArray(node.control.value)) {\n if (node.control.value.indexOf(item.value.uuid) < 0) {\n payload.push({\n uuid: item.uuid,\n voided: true\n });\n }\n } else {\n // every value was deleted\n payload.push({\n uuid: item.uuid,\n voided: true\n });\n }\n });\n }\n\n // add new obs i.e they didn't exisit originally\n if (Array.isArray(node.control.value)) {\n _.each(node.control.value, (item) => {\n if (existingUuids.indexOf(item) < 0) {\n payload.push(\n this.addFieldNameSpaceandPath(node, {\n concept: node.question.extras.questionOptions.concept,\n value: item\n })\n );\n }\n });\n }\n return payload;\n }\n\n getGroupPayload(node: NodeBase) {\n const nodeAsGroup: GroupNode = node as GroupNode;\n\n let childrenPayload = [];\n _.each(nodeAsGroup.children, (child) => {\n const payload = this.getObsNodePayload(child);\n if (payload.length > 0) {\n childrenPayload = childrenPayload.concat(payload);\n }\n });\n\n if (childrenPayload.length === 0) {\n return null;\n }\n\n const groupPayload: any = {\n groupMembers: childrenPayload\n };\n\n if (nodeAsGroup.initialValue) {\n groupPayload.uuid = nodeAsGroup.initialValue.uuid;\n } else {\n groupPayload.concept =\n nodeAsGroup.question.extras.questionOptions.concept;\n }\n this.addFieldNameSpaceandPath(node, groupPayload);\n return groupPayload;\n }\n\n getRepeatingGroupPayload(node: NodeBase) {\n const nodeAsArray: ArrayNode = node as ArrayNode;\n\n let childrenPayload = [];\n\n const groupsUuidsAfterEditting = [];\n _.each(nodeAsArray.children, (child) => {\n const payload = this.getObsNodePayload(child);\n if (payload.length > 0) {\n childrenPayload = childrenPayload.concat(payload);\n }\n if (child.initialValue && child.initialValue.uuid) {\n groupsUuidsAfterEditting.push(child.initialValue.uuid);\n }\n });\n\n // void deleted groups\n\n if (nodeAsArray.initialValue && Array.isArray(nodeAsArray.initialValue)) {\n _.each(nodeAsArray.initialValue, (obs) => {\n if (groupsUuidsAfterEditting.indexOf(obs.uuid) < 0) {\n const voidedGroup = {\n uuid: obs.uuid,\n voided: true\n };\n childrenPayload.push(voidedGroup);\n }\n });\n }\n\n if (childrenPayload.length <= 0) {\n return null;\n }\n return childrenPayload;\n }\n\n getObsNodePayload(node: NodeBase): Array<any> {\n let payload = [];\n switch (this.getObsNodeType(node)) {\n case 'unknown':\n if (node instanceof GroupNode) {\n const groupNode = node as GroupNode;\n\n for (const o in groupNode.children) {\n const groupNodePayoad = this.getObsNodePayload(\n groupNode.children[o]\n );\n if (Array.isArray(groupNodePayoad) && groupNodePayoad.length > 0) {\n payload = payload.concat(groupNodePayoad);\n }\n }\n break;\n }\n if (node instanceof ArrayNode) {\n const arrayNode = node as ArrayNode;\n for (let i = 0; i < arrayNode.children.length; i++) {\n const arrayNodePayload = this.getObsNodePayload(\n arrayNode.children[i]\n );\n if (\n Array.isArray(arrayNodePayload) &&\n arrayNodePayload.length > 0\n ) {\n payload = payload.concat(arrayNodePayload);\n }\n }\n break;\n }\n break;\n case 'simple':\n const simpleObs = this.getSimpleObsPayload(node);\n if (simpleObs !== null) {\n payload.push(simpleObs);\n }\n break;\n\n case 'multiselect':\n const multiselectObs = this.getMultiselectObsPayload(node);\n\n if (Array.isArray(multiselectObs) && multiselectObs.length > 0) {\n payload = payload.concat(multiselectObs);\n }\n break;\n\n case 'complex':\n const complexObs = this.getComplexObsPayload(node);\n if (complexObs !== null) {\n payload.push(complexObs);\n }\n break;\n\n case 'group':\n const groupedObs = this.getGroupPayload(node);\n if (groupedObs && groupedObs !== null) {\n payload.push(groupedObs);\n }\n break;\n case 'repeatingGroup':\n const repeatingGroupedObs = this.getRepeatingGroupPayload(node);\n if (\n Array.isArray(repeatingGroupedObs) &&\n repeatingGroupedObs.length > 0\n ) {\n payload = payload.concat(repeatingGroupedObs);\n }\n break;\n default:\n break;\n }\n return payload;\n }\n\n simpleNodeValueChanged(node: NodeBase): boolean {\n if (node.initialValue) {\n if (node.initialValue.value && node.initialValue.value.uuid) {\n // question whose answer is a concept\n return node.control.value !== node.initialValue.value.uuid;\n }\n\n if (node.question.extras.questionOptions.rendering === 'date') {\n return !this.areDatesEqual(node.control.value, node.initialValue.value);\n }\n return node.control.value !== node.initialValue.value;\n }\n return false;\n }\n\n areDatesEqual(date1, date2) {\n return moment(date1).isSame(date2);\n }\n\n isEmpty(value): boolean {\n if (\n value === '' ||\n value === null ||\n value === undefined\n // || value === [] ||\n // value === {}\n ) {\n return true;\n }\n return false;\n }\n\n toOpenMrsDateTimeString(datetime: string): string {\n if (this.isEmpty(datetime)) {\n return undefined;\n } else {\n // transform value to moment value to avoid error\n const formattedVal = moment(datetime).format();\n const val = formattedVal.substring(0, 19).replace('T', ' ');\n return this.isEmpty(val) ? undefined : val;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'rxjs';\n\nimport * as _ from 'lodash';\n\nimport { LeafNode, GroupNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\nimport { ObsAdapterHelper } from './obs-adapter-helper';\n\n@Injectable()\nexport class ObsValueAdapter implements ValueAdapter {\n constructor(private helper: ObsAdapterHelper) {}\n\n generateFormPayload(form: Form) {\n return this.helper.getObsNodePayload(form.rootNode);\n // TODO: Get rid of the section below when the helper is stable.\n // // Traverse to get all nodes\n // let pages = this.traverse(form.rootNode);\n // // Extract actual question nodes\n // let questionNodes = this.getQuestionNodes(pages);\n // // Get obs Payload\n // return this.getObsPayload(questionNodes);\n }\n\n populateForm(form: Form, payload) {\n this.helper.setNodeValue(form.rootNode, payload);\n\n // TODO: Get rid of the section below when the helper is stable.\n // // Traverse to get all nodes\n // let pages = this.traverse(form.rootNode);\n // // Extract actual question nodes\n // let questionNodes = this.getQuestionNodes(pages);\n // // Extract set obs\n // this.setValues(questionNodes, payload);\n }\n\n // TODO: Get rid of all the functions below as they will not be needed\n // once the helper is stable\n\n setValues(nodes, payload?, forcegroup?) {\n if (nodes) {\n for (const node of nodes) {\n if (node instanceof LeafNode) {\n this.setObsValue(node, payload);\n if (\n node.question.enableHistoricalValue &&\n node.initialValue !== undefined\n ) {\n node.question.setHistoricalValue(false);\n }\n } else if (\n (node.question &&\n node.question.extras &&\n node.question.renderingType === 'group') ||\n forcegroup\n ) {\n const groupObs = _.find(payload, (o: any) => {\n return (\n o.concept.uuid === node.question.extras.questionOptions.concept &&\n o.groupMembers\n );\n });\n if (groupObs) {\n if (node.node) {\n node.node['initialValue'] = groupObs;\n }\n\n this.setValues(node.groupMembers, groupObs.groupMembers);\n }\n if (forcegroup && node.payload) {\n this.setValues(node.groupMembers, node.payload.groupMembers);\n }\n } else if (\n node instanceof GroupNode &&\n node.question.extras.type === 'complex-obs'\n ) {\n this.setComplexObsValue(node, payload);\n } else if (\n node.question &&\n node.question.extras &&\n node.question.renderingType === 'repeating' &&\n !forcegroup\n ) {\n this.setRepeatingGroupValues(node, payload);\n node.node.control.updateValueAndValidity();\n } else {\n throw new Error('not implemented');\n }\n }\n }\n }\n\n setObsValue(node, payload) {\n if (\n (node.question &&\n node.question.extras &&\n (node.question.extras.type === 'obs' ||\n (node.question.extras.type === 'complex-obs-child' &&\n node.question.extras.questionOptions.obsField === 'value')) &&\n node.question.extras.questionOptions.rendering !== 'multiCheckbox') ||\n node.question.extras.questionOptions.rendering !== 'checkbox' ||\n node.question.extras.questionOptions.rendering !== 'multi-select'\n ) {\n const obs = _.find(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n if (obs) {\n if (obs.value instanceof Object) {\n node.control.setValue(obs.value.uuid);\n node.control.updateValueAndValidity();\n } else {\n node.control.setValue(obs.value);\n node.control.updateValueAndValidity();\n }\n node['initialValue'] = { obsUuid: obs.uuid, value: obs.value };\n }\n } else {\n const multiObs = _.filter(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n if (multiObs && multiObs.length > 0) {\n node.control.setValue(this.getMultiselectValues(multiObs));\n node.control.updateValueAndValidity();\n node['initialValue'] = multiObs;\n }\n }\n }\n\n setComplexObsValue(node, payload) {\n let valueField: any;\n let dateField: any;\n\n for (const o in node.children) {\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = node.children[o];\n }\n\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = node.children[o];\n }\n }\n // set the usual obs value\n this.setObsValue(valueField, payload);\n\n // set the obs date\n const obs = _.find(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n\n if (obs) {\n dateField['initialValue'] = { obsUuid: obs.uuid, value: obs.obsDatetime };\n (dateField as LeafNode).control.setValue(obs.obsDatetime);\n (dateField as LeafNode).control.updateValueAndValidity();\n }\n }\n\n getMultiselectValues(multiObs) {\n const values = [];\n for (const m of multiObs) {\n values.push(m.value.uuid);\n }\n return values;\n }\n\n setRepeatingGroupValues(node, payload) {\n const groupRepeatingObs = _.filter(payload, (o: any) => {\n const found =\n o.concept.uuid === node.question.extras.questionOptions.concept;\n let intersect = false;\n if (found && o.groupMembers) {\n const obs = o.groupMembers.map((a) => {\n return a.concept.uuid;\n });\n\n const schemaQuestions = node.question.questions.map((a) => {\n return a.extras.questionOptions.concept;\n });\n\n intersect = _.intersection(obs, schemaQuestions).length > 0;\n }\n return found && intersect;\n });\n if (groupRepeatingObs.length > 0) {\n node.node['initialValue'] = groupRepeatingObs;\n for (let i = 0; i < groupRepeatingObs.length; i++) {\n node.node.createChildNode();\n }\n }\n const groups = [];\n let index = 0;\n for (const child of node.node.children) {\n const children = Object.keys(child.children).map(function (key) {\n return child.children[key];\n });\n const groupPayload = groupRepeatingObs[index];\n groups.push({\n question: node.question,\n groupMembers: children,\n payload: groupPayload\n });\n index++;\n }\n this.setValues(groups, groupRepeatingObs, true);\n }\n\n getQuestionNodes(pages) {\n const merged = [];\n const arrays = [];\n for (const page of pages) {\n for (const section of page.page) {\n arrays.push(section.section);\n }\n }\n return merged.concat.apply([], arrays);\n }\n\n repeatingGroup(nodes) {\n const toReturn = [];\n for (const node of nodes) {\n toReturn.push({\n question: node.question,\n groupMembers: this.traverse(node)\n });\n }\n return toReturn;\n }\n\n processGroup(obs, obsPayload) {\n if (\n obs.question &&\n obs.question.extras &&\n obs.question.extras.questionOptions.rendering === 'group'\n ) {\n const members = _.filter(\n this.getObsPayload(obs.groupMembers),\n (o: any) => {\n return o.value !== '';\n }\n );\n\n const mappedMembers = members.map((a) => {\n return a.voided;\n });\n if (members.length > 0 && mappedMembers.every(Boolean)) {\n obsPayload.push({\n uuid: obs.node.initialValue.uuid,\n voided: true\n });\n } else if (members.length > 0) {\n if (obs.node.initialValue) {\n obsPayload.push({\n uuid: obs.node.initialValue.uuid,\n groupMembers: members\n });\n } else {\n obsPayload.push({\n concept: obs.question.extras.questionOptions.concept,\n groupMembers: members\n });\n }\n }\n }\n }\n\n mapInitialGroup(group) {\n let current = {};\n for (const member of group.groupMembers) {\n let value: any = '';\n if (member.value instanceof Object) {\n value = member.value.uuid;\n } else if (member.value) {\n value = member.value;\n } else if (member.groupMembers && member.groupMembers.length > 0) {\n current = this.mapInitialGroup(group);\n }\n current[member.concept.uuid + ':' + value] = value;\n }\n return current;\n }\n\n mapModelGroup(node, value) {\n const current = {};\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n const groupQuestion: any = _.find(node.question.questions, {\n key: key\n });\n const modelValue = value[key];\n if (modelValue instanceof Object) {\n } else if (modelValue !== '') {\n current[\n groupQuestion.extras.questionOptions.concept + ':' + modelValue\n ] = modelValue;\n }\n }\n }\n return current;\n }\n\n processRepeatingGroups(node, obsPayload) {\n const initialValues = [];\n if (node.node.initialValue) {\n for (const group of node.node.initialValue) {\n initialValues.push({\n uuid: group.uuid,\n value: this.mapInitialGroup(group)\n });\n }\n }\n const repeatingModel = [];\n for (const value of node.node.control.value) {\n repeatingModel.push({ value: this.mapModelGroup(node, value) });\n }\n const deleted = this.leftOuterJoinArrays(initialValues, repeatingModel);\n const newObs = this.leftOuterJoinArrays(repeatingModel, initialValues);\n const groupConcept = node.question.extras.questionOptions.concept;\n let newObsPayload = [];\n if (deleted.length > 0) {\n const deletedObs = this.createGroupDeletedObs(deleted);\n for (const d of deletedObs) {\n obsPayload.push(d);\n }\n if (newObs.length > 0) {\n newObsPayload = this.createGroupNewObs(newObs, groupConcept);\n }\n } else {\n newObsPayload = this.createGroupNewObs(newObs, groupConcept);\n }\n\n if (newObsPayload.length > 0) {\n for (const p of newObsPayload) {\n obsPayload.push(p);\n }\n }\n }\n\n leftOuterJoinArrays(first, second) {\n const unique = first.filter(function (obj) {\n return !second.some(function (obj2) {\n return _.isEqual(obj.value, obj2.value);\n });\n });\n return unique;\n }\n\n createGroupNewObs(payload, groupConcept) {\n const newPayload = [];\n for (const obs of payload) {\n const groupPayload = [];\n for (let key in obs.value) {\n let concept = key.split(':')[0];\n let value = key.split(':')[1];\n groupPayload.push({ concept: concept, value: value });\n }\n newPayload.push({ concept: groupConcept, groupMembers: groupPayload });\n }\n return newPayload;\n }\n\n createGroupDeletedObs(payload) {\n const deletedObs = [];\n for (const d of payload) {\n deletedObs.push({ uuid: d.uuid, voided: true });\n }\n return deletedObs;\n }\n\n getExactTime(datetime: string) {\n return datetime.substring(0, 19).replace('T', ' ');\n }\n\n processObs(obs, obsPayload) {\n if (obs.control && obs.question.extras) {\n const obsValue = {\n concept: obs.question.extras.questionOptions.concept,\n value:\n obs.question.extras.questionOptions.rendering === 'date' &&\n !this.isEmpty(obs.control.value)\n ? this.getExactTime(obs.control.value)\n : obs.control.value\n };\n\n if (\n obs.question.extras.questionOptions.rendering === 'multiCheckbox' ||\n obs.question.extras.questionOptions.rendering === 'checkbox' ||\n obs.question.extras.questionOptions.rendering === 'multi-select'\n ) {\n const multis = this.processMultiSelect(\n obs.question.extras.questionOptions.concept,\n obs.control.value\n );\n if (obs.initialValue) {\n const mappedInitial = obs.initialValue.map((a) => {\n return {\n uuid: a.uuid,\n value: { concept: a.concept.uuid, value: a.value.uuid }\n };\n });\n const mappedCurrent = multis.map((a) => {\n return { value: a };\n });\n const deletedObs = this.leftOuterJoinArrays(\n mappedInitial,\n mappedCurrent\n );\n const newObs = this.leftOuterJoinArrays(mappedCurrent, mappedInitial);\n this.processDeletedMultiSelectObs(deletedObs, obsPayload);\n this.processNewMultiSelectObs(newObs, obsPayload);\n } else {\n this.processNewMultiSelectObs(multis, obsPayload);\n }\n } else {\n if (obs.initialValue && obs.initialValue.value && obsValue) {\n this.updateOrVoidObs(obsValue, obs.initialValue, obsPayload);\n } else if (obsValue.value !== '' && obsValue.value !== null) {\n obsPayload.push(obsValue);\n }\n }\n }\n }\n\n processComplexObs(node, obsPayload) {\n let valueField: any;\n let dateField: any;\n\n for (const o in node.children) {\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = node.children[o];\n }\n\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = node.children[o];\n }\n }\n\n if (valueField) {\n // process obs as usual\n this.processObs(valueField, obsPayload);\n\n // obtain the last inserted obs and set the obsDatetime\n const createdPayload =\n obsPayload.length > 0 ? obsPayload[obsPayload.length - 1] : undefined;\n if (\n createdPayload &&\n ((createdPayload.concept &&\n createdPayload.concept ===\n node.question.extras.questionOptions.concept) ||\n (valueField.initialValue &&\n createdPayload.uuid === valueField.initialValue.obsUuid))\n ) {\n if (\n dateField.initialValue &&\n dateField.control.value !== dateField.initialValue.value\n ) {\n createdPayload.obsDatetime = dateField.control.value;\n }\n }\n }\n }\n\n processDeletedMultiSelectObs(values, obsPayload) {\n for (const value of values) {\n obsPayload.push({ uuid: value.uuid, voided: true });\n }\n }\n\n processNewMultiSelectObs(values, obsPayload) {\n for (const multi of values) {\n if (multi.value instanceof Object) {\n obsPayload.push(multi.value);\n } else {\n obsPayload.push(multi);\n }\n }\n }\n\n updateOrVoidObs(obsValue, initialValue, obsPayload) {\n if (this.isEmpty(obsValue.value) && initialValue.value) {\n obsPayload.push({ uuid: initialValue.obsUuid, voided: true });\n } else if (!this.isEmpty(obsValue.value) && initialValue.value) {\n obsPayload.push({ uuid: initialValue.obsUuid, value: obsValue.value });\n }\n }\n\n isEmpty(value): boolean {\n if (\n value === '' ||\n value === null ||\n value === undefined\n // || value === [] ||\n // value === {}\n ) {\n return true;\n }\n return false;\n }\n\n traverse(o, type?) {\n const questions = [];\n if (o.children) {\n if (o.children instanceof Array) {\n const returned = this.repeatingGroup(o.children);\n return returned;\n }\n if (o.children instanceof Object) {\n for (const key in o.children) {\n if (o.children.hasOwnProperty(key)) {\n switch (o.children[key].question.renderingType) {\n case 'page':\n const page = this.traverse(o.children[key]);\n questions.push({\n page: page,\n label: o.children[key].question.label\n });\n break;\n case 'section':\n const section = this.traverse(o.children[key]);\n questions.push({\n section: section,\n node: o.children[key],\n label: o.children[key].question.label\n });\n break;\n case 'group':\n const qs = this.traverse(o.children[key]);\n questions.push({\n node: o.children[key],\n question: o.children[key].question,\n groupMembers: qs\n });\n break;\n case 'repeating':\n const rep = this.repeatingGroup(o.children[key].children);\n questions.push({\n node: o.children[key],\n question: o.children[key].question,\n groupMembers: rep\n });\n break;\n default:\n questions.push(o.children[key]);\n break;\n }\n }\n }\n }\n }\n return questions;\n }\n\n processMultiSelect(concept, values) {\n const multiSelectObs = [];\n if (values && values !== null) {\n for (const value of values) {\n const obs = {\n concept: concept,\n value: value\n };\n multiSelectObs.push(obs);\n }\n }\n return multiSelectObs;\n }\n\n isObs(node) {\n return (\n node.question.extras.type === 'obs' ||\n node.question.extras.type === 'obsGroup' ||\n node.question.extras.type === 'complex-obs'\n );\n }\n\n getObsPayload(nodes) {\n const obsPayload = [];\n for (const node of nodes) {\n if (this.isObs(node)) {\n if (\n (node.groupMembers,\n node.question.extras.questionOptions.rendering === 'group')\n ) {\n this.processGroup(node, obsPayload);\n } else if (\n (node.groupMembers,\n node.question.extras.questionOptions.rendering === 'repeating')\n ) {\n this.processRepeatingGroups(node, obsPayload);\n } else if (\n node instanceof GroupNode &&\n (node as GroupNode).question.extras.type === 'complex-obs'\n ) {\n this.processComplexObs(node, obsPayload);\n } else {\n this.processObs(node, obsPayload);\n }\n }\n }\n return obsPayload;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\nimport * as _ from 'lodash';\n@Injectable()\nexport class OrderValueAdapter implements ValueAdapter {\n formOrderNodes = [];\n private provider = '';\n\n generateFormPayload(form: Form) {\n this.formOrderNodes = [];\n this._setOrderProvider(form);\n this._findTestOrderQuestionNodes(form.rootNode);\n return this._createOrdersPayload(this.formOrderNodes, form);\n }\n\n populateForm(form: Form, payload) {\n form.existingOrders = payload;\n this.formOrderNodes = [];\n this._findTestOrderQuestionNodes(form.rootNode);\n const existingOrders = this._getExistingOrders(form);\n this._setOrderValues(this.formOrderNodes, existingOrders);\n }\n\n private _setOrderProvider(form: Form) {\n if (form.valueProcessingInfo.providerUuid) {\n this.provider = form.valueProcessingInfo.providerUuid;\n }\n }\n\n private _createOrdersPayload(orderNodes, form: Form) {\n const payload = [];\n const selectedOrders = [];\n let deletedOrders = [];\n const existingOrders = this._getExistingOrders(form);\n for (const orderNode of orderNodes) {\n const orderNodeValues = orderNode.control.value;\n const orders = [];\n if (existingOrders) {\n existingOrders.map(function (obj) {\n orders[obj.concept] = obj.concept;\n });\n }\n\n for (const order in orderNodeValues) {\n if (orderNodeValues.hasOwnProperty(order)) {\n const orderValue = orderNodeValues[order][orderNode.question.key];\n\n const payloadOrder = this._createPayloadOrder(\n orderValue,\n orderNode.question.extras\n );\n\n if (\n orders[orderValue] !== orderValue &&\n payloadOrder.concept !== ''\n ) {\n payload.push(payloadOrder);\n }\n selectedOrders[orderValue] = orderValue;\n if (payloadOrder.orderNumber === '') {\n delete payloadOrder.orderNumber;\n }\n if (payloadOrder.uuid === '') {\n delete payloadOrder.uuid;\n }\n }\n }\n }\n\n deletedOrders = this._getDeletedOrders(selectedOrders, existingOrders);\n return this._addDeletedOrdersToPayload(deletedOrders, payload);\n }\n\n private _getExistingOrders(form: Form) {\n if (form.existingOrders && form.existingOrders.orders) {\n let existingOrders = form.existingOrders.orders.map((o) => {\n return {\n concept: o.concept.uuid,\n orderNumber: o.orderNumber,\n orderUuid: o.uuid,\n voided: o.voided,\n dateVoided: o.auditInfo.dateVoided\n };\n });\n\n return (existingOrders = _.filter(existingOrders, (order: any) => {\n if (order.voided === true || order.dateVoided) {\n return false;\n } else {\n return true;\n }\n }));\n } else {\n return;\n }\n }\n\n private _setOrderValues(node, existingOrders) {\n this._findTestOrderQuestionNodes(node);\n\n const orderNodes = this.formOrderNodes;\n for (const orderNode of orderNodes) {\n this._setOrderNodeValues(orderNode, existingOrders);\n }\n }\n\n private _addDeletedOrdersToPayload(deletedOrders, payload): any {\n for (const order in deletedOrders) {\n if (deletedOrders.hasOwnProperty(order)) {\n payload.push({ uuid: deletedOrders[order], voided: true });\n }\n }\n return payload;\n }\n\n private _createPayloadOrder(orderConcept, quesitonExtras): any {\n const order = {\n concept: '',\n type: '',\n orderer: '',\n careSetting: ''\n };\n order.concept = orderConcept;\n order.type = quesitonExtras.questionOptions.orderType;\n order.orderer = this.provider;\n order.careSetting = quesitonExtras.questionOptions.orderSettingUuid;\n\n // delete orderer if provider not provided\n if (order.orderer === '') {\n delete order.orderer;\n }\n\n return order;\n }\n\n private _getDeletedOrders(selectedOrders, existingOrders): any {\n const deleteOrders = [];\n if (selectedOrders) {\n for (const order in existingOrders) {\n if (existingOrders.hasOwnProperty(order)) {\n const existingOrderConcept = existingOrders[order].concept;\n const selectedOrder = selectedOrders[existingOrderConcept];\n if (selectedOrder !== existingOrderConcept) {\n deleteOrders.push(existingOrders[order].orderUuid);\n }\n }\n }\n }\n\n return deleteOrders;\n }\n\n private _setOrderNodeValues(node, orders) {\n let index = 0;\n node['initialValue'] = orders;\n for (const order of orders) {\n node.createChildNode();\n const value = {};\n value[node.question.key] = order.concept;\n const childNode = node.children[index];\n childNode.control.setValue(value);\n childNode['initialValue'] = value;\n childNode['orderNumber'] = order.orderNumber;\n\n index++;\n }\n }\n\n private _findTestOrderQuestionNodes(formNode) {\n if (formNode.children) {\n if (formNode.children instanceof Object) {\n for (const key in formNode.children) {\n if (formNode.children.hasOwnProperty(key)) {\n switch (formNode.children[key].question.renderingType) {\n case 'page':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n break;\n case 'section':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n break;\n case 'group':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n\n break;\n case 'repeating':\n if (formNode.children) {\n for (const node in formNode.children) {\n const question = formNode.children[node].question;\n if (\n question.extras &&\n question.extras.type === 'testOrder'\n ) {\n this.formOrderNodes.push(formNode.children[node]);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n }\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport * as _ from 'lodash';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\nimport { ArrayNode, GroupNode, LeafNode } from '../form-factory/form-node';\n\n@Injectable()\nexport class DiagnosisValueAdapter implements ValueAdapter {\n formDiagnosisNodes = [];\n\n generateFormPayload(form: Form) {\n this.formDiagnosisNodes = [];\n this._findDiagnosisQuestionNodes(form.rootNode);\n return this._createDiagnosesPayload(\n this.formDiagnosisNodes,\n form.existingDiagnoses\n );\n }\n\n populateForm(form: Form, diagnoses: Array<Diagnosis>) {\n form.existingDiagnoses = diagnoses?.filter((d) => {\n return !d.voided;\n });\n this.formDiagnosisNodes = [];\n this._findDiagnosisQuestionNodes(form.rootNode);\n this._setDiagnosesValues(\n this.formDiagnosisNodes,\n form.existingDiagnoses,\n 1\n );\n this._setDiagnosesValues(\n this.formDiagnosisNodes,\n form.existingDiagnoses,\n 2\n );\n this.setDiagnosisGroupValue(\n this.formDiagnosisNodes,\n form.existingDiagnoses\n );\n }\n\n private _createDiagnosesPayload(diagnosisNodes, existingDiagnoses) {\n const payload: Array<DiagnosisPayload> = [];\n let deletedDiagnoses: Array<DiagnosisPayload> = [];\n\n // Add new diagnosis to payload\n diagnosisNodes?.forEach((node) => {\n if (node instanceof ArrayNode) {\n node.control.value\n .filter((v) => v[node.question.key])\n .forEach((value) => {\n // Create Payload\n const payloadDiagnosis = this._createPayloadDiagnosis(\n value[node.question.key],\n node.question.extras\n );\n\n const isNewDiagnosis = existingDiagnoses.every(\n (d) =>\n d.diagnosis.coded.uuid !== value[node.question.key] ||\n d.certainty !== 'CONFIRMED' ||\n d.rank !== node.question.extras.questionOptions.rank\n );\n\n if (isNewDiagnosis) {\n payload.push(payloadDiagnosis);\n }\n });\n }\n\n if (node instanceof ArrayNode) {\n const groupNodeArray = node.children;\n groupNodeArray.forEach((groupNode) => {\n if (this.hasDiagnosisNodeChanged(groupNode)) {\n const diagnosisPayload: Partial<DiagnosisPayload> = {};\n Object.values(groupNode.children).forEach((childNode: LeafNode) => {\n const {\n diagnosisType\n } = childNode.question.extras.questionOptions;\n switch (diagnosisType) {\n case 'rank':\n diagnosisPayload.rank =\n parseInt(childNode.control.value, 10) ?? 1;\n break;\n case 'certainty':\n diagnosisPayload.certainty = childNode.control.value;\n break;\n case 'diagnosis':\n diagnosisPayload.diagnosis = {\n coded: childNode.control.value\n };\n break;\n default:\n break;\n }\n });\n if (_.isEmpty(diagnosisPayload)) {\n return null;\n }\n if (groupNode.question.defaultValue?.uuid) {\n diagnosisPayload.uuid = groupNode.question.defaultValue.uuid;\n }\n diagnosisPayload.voided = false;\n payload.push(diagnosisPayload as DiagnosisPayload);\n }\n });\n }\n });\n this._updatedOldDiagnoses(payload, existingDiagnoses);\n deletedDiagnoses = this._getDeletedDiagnoses(diagnosisNodes, existingDiagnoses);\n return payload.concat(deletedDiagnoses);\n }\n\n private _createPayloadDiagnosis(codedUuid, questionExtras): DiagnosisPayload {\n const diagnosis: DiagnosisPayload = {\n diagnosis: {\n coded: codedUuid\n },\n certainty: 'CONFIRMED',\n rank: questionExtras.questionOptions.rank,\n voided: false\n };\n\n return diagnosis;\n }\n\n private _getDeletedDiagnoses(\n diagnosisNodes: Array<DiagnosisPayload>,\n existingDiagnoses: Array<Diagnosis>\n ): Array<any> {\n return existingDiagnoses\n .filter((existingDiagnosis) => {\n return !diagnosisNodes?.some((node) => {\n if (node instanceof ArrayNode) {\n return node.control.value.some((value) => {\n return (\n value[node.question.key] ===\n existingDiagnosis.diagnosis.coded.uuid &&\n existingDiagnosis.rank ===\n node.question.extras.questionOptions.rank &&\n existingDiagnosis.certainty === 'CONFIRMED'\n );\n });\n }\n return false;\n });\n })\n .map((existingDiagnosis) => ({\n uuid: existingDiagnosis.uuid,\n voided: true\n }));\n }\n\n private _updatedOldDiagnoses(\n payloadDiagnoses: Array<DiagnosisPayload>,\n existingDiagnoses: Array<Diagnosis>\n ) {\n payloadDiagnoses.forEach((p) => {\n existingDiagnoses?.forEach((e) => {\n let isSame = !e.voided && p.diagnosis.coded === e.diagnosis.coded.uuid;\n p.uuid = isSame ? e.uuid : null;\n });\n });\n }\n\n private _setDiagnosesValues(\n formDiagnosisNodes,\n existingDiagnoses: Array<Diagnosis>,\n rank: number\n ) {\n formDiagnosisNodes\n ?.filter((node) => node.question.extras.questionOptions.rank == rank)\n .forEach((node) => {\n node['initialValue'] = existingDiagnoses;\n existingDiagnoses\n .filter((d) => d.rank == rank)\n .forEach((diagnosis, index) => {\n node.createChildNode();\n const value = {};\n value[node.question.key] = diagnosis.diagnosis.coded.uuid;\n const childNode = node.children[index];\n childNode.control.setValue(value);\n childNode['initialValue'] = value;\n });\n });\n }\n\n private setDiagnosisGroupValue(\n formDiagnosisNodes,\n existingDiagnoses: Array<Diagnosis>\n ) {\n for (const diagnosis of existingDiagnoses) {\n for (const diagnosisNode of formDiagnosisNodes) {\n if (diagnosisNode.question.extras.type !== 'diagnosisGroup') break;\n const groupNode = diagnosisNode.createChildNode() as GroupNode;\n\n groupNode.question.defaultValue = { uuid: diagnosis.uuid };\n for (const child of Object.values(groupNode.children) as LeafNode[]) {\n const diagnosisType =\n child.question.extras.questionOptions.diagnosisType;\n switch (diagnosisType) {\n case 'diagnosis':\n child.initialValue = diagnosis.diagnosis.coded?.uuid;\n child.control.setValue(diagnosis.diagnosis.coded?.uuid);\n break;\n case 'rank':\n child.initialValue = diagnosis.rank;\n child.control.setValue(diagnosis.rank);\n break;\n case 'certainty':\n child.initialValue = diagnosis.certainty;\n child.control.setValue(diagnosis.certainty);\n break;\n }\n }\n }\n }\n }\n\n private _findDiagnosisQuestionNodes(formNode) {\n if (formNode.children) {\n if (formNode.children instanceof Object) {\n for (const key in formNode.children) {\n if (formNode.children.hasOwnProperty(key)) {\n switch (formNode.children[key].question.renderingType) {\n case 'page':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'section':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'group':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'repeating':\n if (formNode.children) {\n const { children } = formNode;\n // Condition for diagnosisGroup nodes\n for (const node in formNode.children) {\n const questionExtras =\n formNode.children[node].question.extras;\n if (questionExtras.type === 'diagnosisGroup') {\n const arrayNode = formNode.children[node] as ArrayNode;\n this.formDiagnosisNodes.push(arrayNode);\n break;\n }\n }\n // Condition for diagnosis nodes\n Object.values(children).forEach((child: LeafNode) => {\n const { question, nodeIndex } = child;\n if (\n question.extras?.type === 'diagnosis' &&\n !this.formDiagnosisNodes.some(\n (x) => x.nodeIndex === nodeIndex\n )\n ) {\n this.formDiagnosisNodes.push(child);\n }\n });\n }\n\n break;\n default:\n break;\n }\n }\n }\n }\n }\n }\n\n private _convert(diagnosis: Diagnosis): DiagnosisPayload {\n return {\n uuid: diagnosis.uuid,\n encounter: diagnosis.encounter,\n patient: diagnosis.patient,\n diagnosis: {\n coded: diagnosis.diagnosis.coded.uuid,\n nonCoded: diagnosis.diagnosis.nonCoded\n },\n certainty: diagnosis.certainty,\n rank: diagnosis.rank,\n voided: diagnosis.voided\n };\n }\n\n hasDiagnosisNodeChanged(nodeAsGroup: GroupNode): boolean {\n const childrenNodes = Object.values(nodeAsGroup.children) as Array<\n LeafNode\n >;\n\n for (let childNode of childrenNodes) {\n if (\n childNode.control.value !== nodeAsGroup.initialValue?.primaryDiagnosisId\n ) {\n return true;\n }\n }\n\n return false;\n }\n}\n\nexport interface Diagnosis {\n uuid?: string;\n display?: string;\n encounter?: string;\n patient?: string;\n diagnosis: {\n coded?: {\n uuid: string;\n display?: string;\n };\n nonCoded?: string;\n };\n certainty: 'CONFIRMED' | 'PROVISIONAL';\n rank: number;\n voided?: boolean;\n}\n\nexport interface DiagnosisPayload {\n uuid?: string;\n encounter?: string;\n patient?: string;\n diagnosis: {\n coded?: string;\n nonCoded?: string;\n };\n certainty: 'CONFIRMED' | 'PROVISIONAL';\n rank: number;\n voided?: boolean;\n}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\n\nimport { ValueAdapter } from './value.adapter';\nimport { ObsValueAdapter } from './obs.adapter';\nimport { OrderValueAdapter } from './order.adapter';\nimport { DiagnosisValueAdapter } from './diagnosis.adapter';\n\nimport moment from 'moment';\n\n@Injectable()\nexport class EncounterAdapter implements ValueAdapter {\n constructor(\n public ordersAdapter: OrderValueAdapter,\n public diagnosesAdapter: DiagnosisValueAdapter,\n public obsAdapter: ObsValueAdapter\n ) {}\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n if (Array.isArray(payload.orders)) {\n this.ordersAdapter.populateForm(form, payload);\n }\n if (Array.isArray(payload.diagnoses)) {\n this.diagnosesAdapter.populateForm(form, payload.diagnoses);\n }\n if (Array.isArray(payload.obs)) {\n this.obsAdapter.populateForm(form, payload.obs);\n }\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (payload === undefined || payload === null) {\n throw new Error('Expected payload');\n }\n\n const nodes = this.getEncounterNodes(rootNode);\n\n nodes.forEach((node) => {\n switch (node.question.extras.type) {\n case 'encounterDatetime':\n if (payload['encounterDatetime']) {\n node.control.setValue(\n moment(payload['encounterDatetime']).toDate()\n );\n node.initialValue = moment(payload['encounterDatetime']).toDate();\n }\n break;\n case 'encounterProvider':\n if (\n Array.isArray(payload['encounterProviders']) &&\n payload['encounterProviders'].length > 0\n ) {\n const firstProvider: any =\n payload['encounterProviders'][0].provider;\n if (firstProvider && firstProvider.uuid) {\n // Very weird work around for an issue with setting the value\n node.control.setValue(firstProvider.uuid);\n setTimeout(() => {\n node.control.setValue(firstProvider.uuid);\n });\n node.initialValue = firstProvider.uuid;\n }\n }\n break;\n case 'encounterLocation':\n if (payload['location'] && payload['location'].uuid) {\n node.control.setValue(payload['location'].uuid);\n node.initialValue = payload['location'].uuid;\n }\n break;\n default:\n break;\n }\n });\n }\n\n generateFormPayload(form: Form) {\n const payload = this.generateNodePayload(form.rootNode);\n this.setNonFilledPayloadMembers(form, payload);\n\n payload['obs'] = this.obsAdapter.generateFormPayload(form) || [];\n\n payload['orders'] = this.ordersAdapter.generateFormPayload(form) || [];\n\n payload['diagnoses'] =\n this.diagnosesAdapter.generateFormPayload(form) || [];\n\n return payload;\n }\n\n generateNodePayload(rootNode: NodeBase) {\n const nodes = this.getEncounterNodes(rootNode);\n const payload = {};\n\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== ''\n ) {\n switch (node.question.extras.type) {\n case 'encounterDatetime':\n const dateValue = moment(node.control.value).utcOffset(\n rootNode.form.valueProcessingInfo.utcOffset || '+0300'\n );\n payload['encounterDatetime'] = dateValue.format();\n break;\n case 'encounterProvider':\n if (node.control.value && node.control.value !== '') {\n const providers = [];\n providers.push({\n provider: node.control.value,\n encounterRole: 'a0b03050-c99b-11e0-9572-0800200c9a66' // unknown provider role in the encounter as default\n });\n payload['encounterProviders'] = providers;\n }\n break;\n case 'encounterLocation':\n payload['location'] = node.control.value;\n break;\n default:\n break;\n }\n }\n });\n\n return payload;\n }\n\n getEncounterNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this._getEncounterNodes(rootNode, results);\n return results;\n }\n\n setNonFilledPayloadMembers(form: Form, payload) {\n if (form.valueProcessingInfo.patientUuid) {\n this.setPayloadPatientUuid(payload, form.valueProcessingInfo.patientUuid);\n }\n\n if (form.valueProcessingInfo.visitUuid) {\n this.setPayloadVisitUuid(payload, form.valueProcessingInfo.visitUuid);\n }\n\n if (form.valueProcessingInfo.encounterTypeUuid) {\n this.setPayloadEncounterTypeUuid(\n payload,\n form.valueProcessingInfo.encounterTypeUuid\n );\n }\n\n if (!payload.encounterDatetime) {\n this.setPayloadEncounterDate(\n payload,\n form.valueProcessingInfo.encounterDatetime ?? new Date().toISOString(),\n form.valueProcessingInfo.utcOffset\n );\n }\n\n if (form.valueProcessingInfo.formUuid) {\n this.setPayloadFormUuid(payload, form.valueProcessingInfo.formUuid);\n }\n\n if (form.valueProcessingInfo.encounterUuid) {\n this.setPayloadEncounterUuid(\n payload,\n form.valueProcessingInfo.encounterUuid\n );\n }\n }\n\n setPayloadPatientUuid(payload, patientUuid: string) {\n payload['patient'] = patientUuid;\n }\n\n setPayloadVisitUuid(payload, visitUuid: string) {\n payload['visit'] = visitUuid;\n }\n\n setPayloadEncounterTypeUuid(payload, encounterTypeUuid: string) {\n payload['encounterType'] = encounterTypeUuid;\n }\n\n setPayloadEncounterDate(\n payload,\n encounterDatetime: string,\n utcOffset: string\n ) {\n const dateValue = moment(encounterDatetime).utcOffset(utcOffset || '+0300');\n payload['encounterDatetime'] = dateValue.format();\n }\n\n setPayloadFormUuid(payload, formUuid: string) {\n payload['form'] = formUuid;\n }\n\n setPayloadEncounterUuid(payload, encounterUuid: string) {\n payload['uuid'] = encounterUuid;\n }\n\n private _getEncounterNodes(rootNode: NodeBase, array: Array<NodeBase>) {\n if (this._isEncounterNode(rootNode)) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this._getEncounterNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this._getEncounterNodes(child, array);\n });\n }\n }\n\n private _isEncounterNode(node: NodeBase): boolean {\n if (\n node.question.extras &&\n (node.question.extras.type === 'encounterDatetime' ||\n node.question.extras.type === 'encounterProvider' ||\n node.question.extras.type === 'encounterLocation')\n ) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\n\n@Injectable()\nexport class PersonAttribuAdapter implements ValueAdapter {\n constructor() {}\n\n generateFormPayload(form: Form) {\n return this.generateNodePayload(form.rootNode);\n }\n\n generateNodePayload(rootNode: NodeBase) {\n const nodes = this.getPersonAttributeNodes(rootNode);\n const payload = [];\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== '' &&\n node.initialValue !== node.control.value\n ) {\n if (node.question.extras.questionOptions.isSimpleValue === true) {\n payload.push({\n attributeType: node.question.extras.questionOptions.attributeType,\n value: node.control.value\n });\n } else {\n payload.push({\n attributeType: node.question.extras.questionOptions.attributeType,\n hydratedObject: node.control.value\n });\n }\n }\n });\n return payload;\n }\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (!Array.isArray(payload)) {\n throw new Error('Expected an array of attributes');\n }\n\n const nodes = this.getPersonAttributeNodes(rootNode);\n\n nodes.forEach((node) => {\n payload.forEach((element) => {\n if (\n element.attributeType.uuid ===\n node.question.extras.questionOptions.attributeType\n ) {\n if (element.value.uuid) {\n node.control.setValue(element.value.uuid);\n node.initialValue = element.value.uuid;\n } else {\n node.control.setValue(element.value);\n node.initialValue = element.value;\n }\n }\n });\n });\n }\n\n getPersonAttributeNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this._getPersonAttributesNodes(rootNode, results);\n return results;\n }\n\n private _getPersonAttributesNodes(\n rootNode: NodeBase,\n array: Array<NodeBase>\n ) {\n if (\n rootNode.question.extras &&\n rootNode.question.extras.type === 'personAttribute'\n ) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this._getPersonAttributesNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this._getPersonAttributesNodes(child, array);\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RemoteSelectComponent } from './ngx-remote-select.component';\n\n@NgModule({\n imports: [CommonModule, NgSelectModule, FormsModule, TranslateModule],\n exports: [RemoteSelectComponent],\n declarations: [RemoteSelectComponent],\n providers: []\n})\nexport class NgxRemoteSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxControlComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxControlComponent],\n exports: [CheckboxControlComponent],\n imports: [CommonModule, FormsModule]\n})\nexport class CheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { RadioButtonControlComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioButtonControlComponent],\n exports: [RadioButtonControlComponent],\n imports: [CommonModule, FormsModule]\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { WorkspaceLauncherComponent } from './workspace-launcher.component';\n\n@NgModule({\n declarations: [WorkspaceLauncherComponent],\n exports: [WorkspaceLauncherComponent],\n imports: [CommonModule, FormsModule]\n})\nexport class WorkspaceLauncherModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { TabSetComponent } from '../components/ngx-tab-set.component';\nimport { TabComponent } from '../components/tab.component';\nimport { HoverClassDirective } from '../directives/hover-class.directive';\n\n@NgModule({\n declarations: [TabComponent, TabSetComponent, HoverClassDirective],\n exports: [TabComponent, TabSetComponent],\n imports: [CommonModule]\n})\nexport class NgxTabSetModule {\n /**\n * Use in AppModule: new instance of NgxTabset.\n */\n public static forRoot(): ModuleWithProviders<NgxTabSetModule> {\n return {\n ngModule: NgxTabSetModule,\n providers: []\n };\n }\n\n /**\n * Use in features modules with lazy loading: new instance of NgxTabset.\n */\n public static forChild(): ModuleWithProviders<NgxTabSetModule> {\n return {\n ngModule: NgxTabSetModule,\n providers: []\n };\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[ofeOption]'\n})\nexport class OptionDirective {\n @HostBinding('class') inputClass = 'cds--select-option';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[ofeOptgroup]'\n})\nexport class OptGroupDirective {\n @HostBinding('class') inputClass = 'cds--select-optgroup';\n}\n","// modules\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n// imports\nimport { SelectComponent } from './select.component';\nimport { OptionDirective } from './option.directive';\nimport { OptGroupDirective } from './optgroup.directive';\n\n@NgModule({\n declarations: [SelectComponent, OptionDirective, OptGroupDirective],\n exports: [SelectComponent, OptionDirective, OptGroupDirective],\n imports: [CommonModule, FormsModule]\n})\nexport class SelectModule {}\n","import {\n Component,\n Input,\n AfterViewInit,\n ElementRef,\n HostBinding,\n TemplateRef,\n ViewChild,\n ContentChild,\n AfterContentInit\n} from '@angular/core';\n\nimport { TextAreaDirective } from './text-area.directive';\n\n/**\n * [See demo](../../?path=/story/input--label)\n *\n * ```html\n * <ofe-label labelState=\"success\">\n * <label label>Field with success</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n *\n * <ofe-label labelState=\"warning\">\n * <label label>Field with warning</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n *\n * <ofe-label labelState=\"error\">\n * <label label>Field with error</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n * ```\n *\n * <example-url>../../iframe.html?id=input--label</example-url>\n */\n@Component({\n selector: 'ofe-label',\n template: `\n <label\n [for]=\"labelInputID\"\n [attr.aria-label]=\"ariaLabel\"\n class=\"cds--label\"\n [ngClass]=\"{\n 'cds--skeleton': skeleton\n }\"\n >\n <ng-content></ng-content>\n </label>\n <div\n [class]=\"wrapperClass\"\n [ngClass]=\"{\n 'cds--text-input__field-wrapper--warning': warn\n }\"\n [attr.data-invalid]=\"invalid ? true : null\"\n #wrapper\n >\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform;\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n <ng-content select=\"input,textarea,div\"></ng-content>\n </div>\n <div\n *ngIf=\"!skeleton && helperText && !invalid && !warn\"\n class=\"cds--form__helper-text\"\n >\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n `\n})\nexport class LabelComponent implements AfterContentInit, AfterViewInit {\n /**\n * Used to build the id of the input item associated with the `Label`.\n */\n static labelCounter = 0;\n /**\n * The class of the wrapper\n */\n wrapperClass = 'cds--text-input__field-wrapper';\n /**\n * The id of the input item associated with the `Label`. This value is also used to associate the `Label` with\n * its input counterpart through the 'for' attribute.\n */\n @Input() labelInputID = 'ofe-label-' + LabelComponent.labelCounter;\n\n /**\n * State of the `Label` will determine the styles applied.\n */\n @Input() labelState: 'success' | 'warning' | 'error' | '' = '';\n /**\n * Set to `true` for a loading label.\n */\n @Input() skeleton = false;\n /**\n * Optional helper text that appears under the label.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Set to `true` for an invalid label component.\n */\n @Input() invalid = false;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Set the arialabel for label\n */\n @Input() ariaLabel: string;\n\n // @ts-ignore\n @ViewChild('wrapper', { static: false }) wrapper: ElementRef<HTMLDivElement>;\n\n // @ts-ignore\n @ContentChild(TextAreaDirective, { static: false })\n textArea: TextAreaDirective;\n\n @HostBinding('class.cds--form-item') labelClass = true;\n\n /**\n * Creates an instance of LabelComponent.\n */\n constructor() {\n LabelComponent.labelCounter++;\n }\n\n /**\n * Update wrapper class if a textarea is hosted.\n */\n ngAfterContentInit() {\n if (this.textArea) {\n this.wrapperClass = 'cds--text-area__wrapper';\n }\n }\n\n /**\n * Sets the id on the input item associated with the `Label`.\n */\n ngAfterViewInit() {\n if (this.wrapper) {\n const inputElement = this.wrapper.nativeElement.querySelector(\n 'input,textarea,div'\n );\n if (inputElement) {\n inputElement.setAttribute('id', this.labelInputID);\n }\n }\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n}\n","// modules\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n// imports\nimport { LabelComponent } from './label.component';\nimport { TextInputDirective } from './input.directive';\nimport { TextAreaDirective } from './text-area.directive';\n\n@NgModule({\n declarations: [LabelComponent, TextInputDirective, TextAreaDirective],\n exports: [LabelComponent, TextInputDirective, TextAreaDirective],\n imports: [CommonModule, FormsModule]\n})\nexport class InputModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { CustomControlWrapperComponent } from './custom-control-wrapper.component';\nimport { LazyElementsModule } from '@angular-extensions/elements';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [CommonModule, FormsModule, LazyElementsModule, TranslateModule],\n exports: [CustomControlWrapperComponent],\n declarations: [CustomControlWrapperComponent],\n providers: []\n})\nexport class CustomControlWrapperModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CustomComponentWrapperComponent } from './custom-component-wrapper.component';\nimport { LazyElementsModule } from '@angular-extensions/elements';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [CommonModule, LazyElementsModule, TranslateModule],\n exports: [CustomComponentWrapperComponent],\n declarations: [CustomComponentWrapperComponent],\n providers: []\n})\nexport class CustomComponentWrapperModule {}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory';\n\n@Injectable()\nexport class PatientIdentifierAdapter {\n generateFormPayload(form: Form, locationUuid: string) {\n return this.generateNodePayload(form.rootNode, locationUuid);\n }\n\n generateNodePayload(rootNode: NodeBase, locationUuid: string) {\n const nodes = this.getPatientIdentifierNodes(rootNode);\n const payload = [];\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== ''\n ) {\n payload.push({\n identifierType: node.question.extras.questionOptions.identifierType,\n identifier: node.control.value,\n location: locationUuid,\n preferred: false\n });\n }\n });\n return payload;\n }\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (!Array.isArray(payload)) {\n throw new Error('Expected an array of patient identfiers');\n }\n\n const nodes = this.getPatientIdentifierNodes(rootNode);\n\n nodes.forEach((node) => {\n payload.forEach((element) => {\n if (\n element.identifierType.uuid ===\n node.question.extras.questionOptions.identifierType\n ) {\n if (element.identifier) {\n node.control.setValue(element.identifier);\n node.initialValue = element.identifier;\n }\n }\n });\n });\n }\n\n getPatientIdentifierNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this.getPatientIdentifierTypeNodes(rootNode, results);\n return results;\n }\n\n private getPatientIdentifierTypeNodes(\n rootNode: NodeBase,\n array: Array<NodeBase>\n ) {\n if (\n rootNode.question.extras &&\n rootNode.question.extras.type === 'patientIdentifier'\n ) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this.getPatientIdentifierTypeNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this.getPatientIdentifierTypeNodes(child, array);\n });\n }\n }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n// import { NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { DebugModeService } from '../form-entry/services/debug-mode.service';\nimport { TimeAgoPipe } from './pipes/time-ago.pipe';\n\nimport { FormErrorsService } from './services/form-errors.service';\nimport { FormControlService } from './form-factory/form-control.service';\nimport { ValidationFactory } from './form-factory/validation.factory';\nimport { FormRendererComponent } from './form-renderer/form-renderer.component';\nimport { ErrorRendererComponent } from './error-renderer/error-renderer.component';\nimport { HistoricalValueDirective } from './directives/historical-value.directive';\nimport { CollapseDirective } from './directives/collapse.directive';\nimport { HistoricalFieldHelperService } from './helpers/historical-field-helper-service';\nimport { NumberInputModule } from '../components/number-input/number-input.module';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { RemoteFileUploadModule } from '../components/file-upload/file-upload.module';\nimport { DateTimePickerModule } from '../components/date-time-picker/date-time-picker.module';\nimport { NgxDateTimePickerModule } from '../components/ngx-datetime-picker/ngx-datetime-picker.module';\nimport { AfeNgSelectComponent } from '../components/afe-ng-select.component';\nimport { HidersDisablersFactory } from './form-factory/hiders-disablers.factory';\nimport { AlertsFactory } from './form-factory/show-messages.factory';\nimport { ExpressionRunner } from './expression-runner/expression-runner';\nimport { JsExpressionHelper } from './helpers/js-expression-helper';\nimport { FormSchemaCompiler } from './services/form-schema-compiler.service';\nimport { FormFactory } from './form-factory/form.factory';\nimport { QuestionFactory } from './form-factory/question.factory';\nimport { ControlRelationsFactory } from './form-factory/control-relations.factory';\nimport { EncounterAdapter } from './value-adapters/encounter.adapter';\nimport { PersonAttribuAdapter } from './value-adapters/person-attribute.adapter';\nimport { OrderValueAdapter } from './value-adapters/order.adapter';\nimport { DiagnosisValueAdapter } from './value-adapters/diagnosis.adapter';\nimport { ObsAdapterHelper } from './value-adapters/obs-adapter-helper';\nimport { ObsValueAdapter } from './value-adapters/obs.adapter';\nimport { NgxRemoteSelectModule } from '../components/ngx-remote-select/ngx-remote-select.module';\nimport { AppointmentsOverviewComponent } from '../components/appointments-overview/appointments-overview.component';\nimport { CheckboxModule } from '../components/check-box/checkbox.module';\nimport { RadioModule } from '../components/radio-button/radio.module';\nimport { WorkspaceLauncherModule } from '../components/workspace-launcher/workspace-launcher.module';\nimport { SharedModule } from '../shared.module';\nimport { NgxTabSetModule } from '../components/ngx-tabset/modules/ngx-tabset.module';\nimport { SelectModule as SelectModuleCarbon } from '../components/select/select.module';\nimport { InputModule } from '../components/input/input.module';\nimport { CustomControlWrapperModule } from '../components/custom-control-wrapper/custom-control-wrapper..module';\nimport { CustomComponentWrapperModule } from '../components/custom-component-wrapper/custom-component-wrapper..module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PatientIdentifierAdapter } from './value-adapters/patient-identifier.adapter';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModuleCarbon,\n NgSelectModule,\n NumberInputModule,\n InputModule,\n DateTimePickerModule,\n NgxRemoteSelectModule,\n // NoopAnimationsModule,\n RemoteFileUploadModule,\n CheckboxModule,\n RadioModule,\n WorkspaceLauncherModule,\n NgxDateTimePickerModule,\n SharedModule,\n CustomControlWrapperModule,\n CustomComponentWrapperModule,\n NgxTabSetModule.forRoot(),\n TranslateModule\n ],\n declarations: [\n FormRendererComponent,\n AfeNgSelectComponent,\n AppointmentsOverviewComponent,\n HistoricalValueDirective,\n ErrorRendererComponent,\n TimeAgoPipe,\n CollapseDirective\n ],\n providers: [\n UntypedFormBuilder,\n FormControlService,\n FormErrorsService,\n ValidationFactory,\n HidersDisablersFactory,\n AlertsFactory,\n ExpressionRunner,\n JsExpressionHelper,\n HistoricalFieldHelperService,\n FormSchemaCompiler,\n FormFactory,\n QuestionFactory,\n ValidationFactory,\n ControlRelationsFactory,\n ObsAdapterHelper,\n ObsValueAdapter,\n EncounterAdapter,\n PersonAttribuAdapter,\n OrderValueAdapter,\n DiagnosisValueAdapter,\n DebugModeService,\n PatientIdentifierAdapter\n ],\n exports: [\n FormRendererComponent,\n AfeNgSelectComponent,\n ErrorRendererComponent,\n DateTimePickerModule,\n NgxDateTimePickerModule,\n TranslateModule\n ]\n})\nexport class FormEntryModule {}\n","/**\n * index\n */\n\nexport * from './picker-modal/modal.component';\nexport * from './pipes/moment.pipe';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './date-time-picker.module';\n","/*\n * Public API Surface of ngx-formentry\n */\nexport { FormEntryModule } from '../form-entry/form-entry.module';\nexport { AfeFormControl } from '../abstract-controls-extension/afe-form-control';\nexport { AfeFormGroup } from '../abstract-controls-extension/afe-form-group';\nexport { AfeFormArray } from '../abstract-controls-extension/afe-form-array';\nexport { AfeControlType } from '../abstract-controls-extension/afe-control-type';\nexport { ControlRelationsFactory } from '../form-entry/form-factory/control-relations.factory';\nexport { FormControlService } from '../form-entry/form-factory/form-control.service';\nexport { FormFactory } from '../form-entry/form-factory/form.factory';\nexport { Form } from '../form-entry/form-factory/form';\nexport { QuestionFactory } from '../form-entry/form-factory/question.factory';\nexport { ValidationFactory } from '../form-entry/form-factory/validation.factory';\nexport { FormSchemaCompiler } from '../form-entry/services/form-schema-compiler.service';\nexport { HistoricalEncounterDataService } from '../form-entry/services/historical-encounter-data.service';\nexport { FormErrorsService } from '../form-entry/services/form-errors.service';\nexport { EncounterAdapter } from '../form-entry/value-adapters/encounter.adapter';\nexport { PersonAttribuAdapter } from '../form-entry/value-adapters/person-attribute.adapter';\nexport { OrderValueAdapter } from '../form-entry/value-adapters/order.adapter';\nexport { ObsValueAdapter } from '../form-entry/value-adapters/obs.adapter';\nexport { ObsAdapterHelper } from '../form-entry/value-adapters/obs-adapter-helper';\nexport { ValueAdapter } from '../form-entry/value-adapters/value.adapter';\nexport { DataSources } from '../form-entry/data-sources/data-sources';\nexport { CheckBoxQuestion } from '../form-entry/question-models/checkbox.model';\nexport { ConditionalValidationModel } from '../form-entry/question-models/conditional-validation.model';\nexport { DateQuestion } from '../form-entry/question-models/date-question';\nexport { DateValidationModel } from '../form-entry/question-models/date-validation.model';\nexport { FileUploadQuestion } from '../form-entry/question-models/file-upload-question';\nexport { QuestionGroup } from '../form-entry/question-models/group-question';\nexport { JsExpressionValidationModel } from '../form-entry/question-models/js-expression-validation.model';\nexport { MaxValidationModel } from '../form-entry/question-models/max-validation.model';\nexport { MinValidationModel } from '../form-entry/question-models/min-validation.model';\nexport { MultiSelectQuestion } from '../form-entry/question-models/multi-select-question';\nexport { Pair } from '../form-entry/question-models/pair.model';\nexport { QuestionBase } from '../form-entry/question-models/question-base';\nexport { RenderingType } from '../form-entry/question-models/rendering-type';\nexport { RepeatingQuestion } from '../form-entry/question-models/repeating-question';\nexport { Option } from '../form-entry/question-models/select-option';\nexport { SelectQuestion } from '../form-entry/question-models/select-question';\nexport { TestOrderQuestion } from '../form-entry/question-models/test-order-question';\nexport { TextAreaInputQuestion } from '../form-entry/question-models/text-area-input-question';\nexport { TextInputQuestion } from '../form-entry/question-models/text-input-question';\nexport { UiSelectQuestion } from '../form-entry/question-models/ui-select-question';\nexport { ValidationModel } from '../form-entry/question-models/validation.model';\nexport { BaseOptions } from '../form-entry/question-models/interfaces/base-options';\nexport { RepeatingQuestionOptions } from '../form-entry/question-models/interfaces/repeating-question-options';\nexport { GroupQuestionOptions } from '../form-entry/question-models/interfaces/group-question-options';\nexport { NestedQuestion } from '../form-entry/question-models/interfaces/nested-questions';\nexport { DateTimePickerModule } from '../components/date-time-picker/date-time-picker.module';\nexport { NgxDateTimePickerModule } from '../components/ngx-datetime-picker/ngx-datetime-picker.module';\nexport { JsExpressionHelper } from '../form-entry/helpers/js-expression-helper';\nexport { FormRendererComponent } from '../form-entry/form-renderer/form-renderer.component';\nexport { AfeNgSelectComponent } from '../components/afe-ng-select.component';\nexport { NgxDatetimeComponent } from '../components/ngx-datetime-picker/ngx-datetime-picker.component';\nexport { DateTimePickerComponent } from '../components/date-time-picker/date-time-picker.component';\nexport { ModalComponent } from '../components/date-time-picker';\nexport { ErrorRendererComponent } from '../form-entry/error-renderer/error-renderer.component';\nexport { DatePickerComponent } from '../components/date-time-picker';\nexport { TimePickerComponent } from '../components/date-time-picker';\nexport { MomentPipe } from '../components/date-time-picker';\nexport { PatientIdentifierAdapter } from '../form-entry/value-adapters/patient-identifier.adapter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.ExpressionRunner","i2.JsExpressionHelper","i3.DebugModeService","i1.ValidationFactory","i2.HidersDisablersFactory","i3.AlertsFactory","i2.NumberInputDirective","i2","i3","i4.SecurePipe","i1.OwlDateTimeIntl","i2.DateTimeAdapter","i3.OwlCalendarBodyComponent","i2.OwlCalendarBodyComponent","i4","i5.OwlMultiYearViewComponent","i6.OwlYearViewComponent","i7.OwlMonthViewComponent","i2.NumberFixedLenPipe","i4.OwlTimerBoxComponent","i5.OwlTimerComponent","i6.OwlCalendarComponent","i2.OwlDialogService","i3.DateTimeAdapter","observableOf","OWL_DATETIME_VALUE_ACCESSOR","i3.OwlDateTimeTriggerDirective","i4.OwlDateTimeInputDirective","i5.OwlDateTimeComponent","i6","i2.HoverClassDirective","i1.HistoricalFieldHelperService","i5","i7.SelectComponent","i9.NumberInputComponent","i10.TextInputDirective","i11.TextAreaDirective","i12.RemoteSelectComponent","i13.FileUploadComponent","i14.CheckboxControlComponent","i15.RadioButtonControlComponent","i16.WorkspaceLauncherComponent","i17.NgxDatetimeComponent","i18.CustomControlWrapperComponent","i19.CustomComponentWrapperComponent","i20.TabComponent","i21.TabSetComponent","i22.AppointmentsOverviewComponent","i23.HistoricalValueDirective","i24.TimeAgoPipe","i2.FormErrorsService","_","i2.ModalComponent","i3.MomentPipe","i2.DatePickerComponent","i3.TimePickerComponent","i2.OwlDateTimeContainerComponent","i1.FormControlService","i2.QuestionFactory","i3.ControlRelationsFactory","i1.ObsAdapterHelper","i1.OrderValueAdapter","i2.DiagnosisValueAdapter","i3.ObsValueAdapter","SelectModuleCarbon","i1.NgxTabSetModule"],"mappings":"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AA;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACrB,aAAA;;AAED,YAAA;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACrB,aAAA;;AAED,YAAA;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAClB,aAAA;;AAED,YAAA;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpB,CAAC,CAAC,EA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"}